Code clean-up.
This commit is contained in:
parent
b13da10ec0
commit
9612aa6ba0
|
@ -628,7 +628,7 @@ static inline NSString *LocalizationNotNeeded(NSString *s) {
|
||||||
|
|
||||||
@implementation McBopomofoInputMethodController (KeyHandlerDelegate)
|
@implementation McBopomofoInputMethodController (KeyHandlerDelegate)
|
||||||
|
|
||||||
- (nonnull VTCandidateController *)candidateControllerForKeyHanlder:(nonnull KeyHandler *)keyHandler
|
- (nonnull VTCandidateController *)candidateControllerForKeyHandler:(nonnull KeyHandler *)keyHandler
|
||||||
{
|
{
|
||||||
return gCurrentCandidateController;
|
return gCurrentCandidateController;
|
||||||
}
|
}
|
||||||
|
|
|
@ -23,7 +23,37 @@
|
||||||
|
|
||||||
import Cocoa
|
import Cocoa
|
||||||
|
|
||||||
/// Represents the states for the input controller.
|
/// Represents the states for the input method controller.
|
||||||
|
///
|
||||||
|
/// An input method is actually a finite state machine. It receives the inputs
|
||||||
|
/// from hardware like keyboard and mouse, changes its state, updates user
|
||||||
|
/// interface by the state, and finally produces the text output and then them
|
||||||
|
/// to the client apps. It should be a one-way data flow, and the user interface
|
||||||
|
/// and text output should follow unconditionally one single data source.
|
||||||
|
///
|
||||||
|
/// The InputState class is for representing what the input controller is doing,
|
||||||
|
/// and the place to store the variables that could be used. For example, the
|
||||||
|
/// array for the candidate list is useful only when the user is choosing a
|
||||||
|
/// candidate, and the array should not exist when the input controller is in
|
||||||
|
/// another state.
|
||||||
|
///
|
||||||
|
/// They are immutable objects. When the state changes, the controller should
|
||||||
|
/// create a new state object to replace the current state instead of modifying
|
||||||
|
/// the existing one.
|
||||||
|
///
|
||||||
|
/// McBopomofo's input controller has following possible states:
|
||||||
|
///
|
||||||
|
/// - Deactivated: The user is not using McBopomofo yet.
|
||||||
|
/// - Empty: The user has switched to McBopomofo but did not input anything yet,
|
||||||
|
/// or, he or she has committed text into the client apps and starts a new
|
||||||
|
/// input phase.
|
||||||
|
/// - Committing: The input controller is sending text to the client apps.
|
||||||
|
/// - Inputting: The user has inputted something and the input buffer is
|
||||||
|
/// visible.
|
||||||
|
/// - Marking: The user is creating a area in the input buffer and about to
|
||||||
|
/// create a new user phrase.
|
||||||
|
/// - Choosing Candidate: The candidate window is open to let the user to choose
|
||||||
|
/// one among the candidates.
|
||||||
class InputState: NSObject {
|
class InputState: NSObject {
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -128,13 +158,14 @@ class InputStateMarking: InputStateNotEmpty {
|
||||||
return String(format: NSLocalizedString("You are now selecting \"%@\". Press enter to add a new phrase.", comment: ""), text)
|
return String(format: NSLocalizedString("You are now selecting \"%@\". Press enter to add a new phrase.", comment: ""), text)
|
||||||
}
|
}
|
||||||
|
|
||||||
@objc var readings: [String] = []
|
@objc private(set) var readings: [String] = []
|
||||||
|
|
||||||
@objc init(composingBuffer: String, cursorIndex: UInt, markerIndex: UInt) {
|
@objc init(composingBuffer: String, cursorIndex: UInt, markerIndex: UInt, readings: [String]) {
|
||||||
self.markerIndex = markerIndex
|
self.markerIndex = markerIndex
|
||||||
let begin = min(cursorIndex, markerIndex)
|
let begin = min(cursorIndex, markerIndex)
|
||||||
let end = max(cursorIndex, markerIndex)
|
let end = max(cursorIndex, markerIndex)
|
||||||
markedRange = NSMakeRange(Int(begin), Int(end - begin))
|
markedRange = NSMakeRange(Int(begin), Int(end - begin))
|
||||||
|
self.readings = readings
|
||||||
super.init(composingBuffer: composingBuffer, cursorIndex: cursorIndex)
|
super.init(composingBuffer: composingBuffer, cursorIndex: cursorIndex)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -33,7 +33,7 @@ extern NSString *const kPlainBopomofoModeIdentifier;
|
||||||
@class KeyHandler;
|
@class KeyHandler;
|
||||||
|
|
||||||
@protocol KeyHandlerDelegate <NSObject>
|
@protocol KeyHandlerDelegate <NSObject>
|
||||||
- (VTCandidateController *)candidateControllerForKeyHanlder:(KeyHandler *)keyHandler;
|
- (VTCandidateController *)candidateControllerForKeyHandler:(KeyHandler *)keyHandler;
|
||||||
- (void)keyHandler:(KeyHandler *)keyHandler didSelectCandidateAtIndex:(NSInteger)index candidateController:(VTCandidateController *)controller;
|
- (void)keyHandler:(KeyHandler *)keyHandler didSelectCandidateAtIndex:(NSInteger)index candidateController:(VTCandidateController *)controller;
|
||||||
- (BOOL)keyHandler:(KeyHandler *)keyHandler didRequestWriteUserPhraseWithState:(InputStateMarking *)state;
|
- (BOOL)keyHandler:(KeyHandler *)keyHandler didRequestWriteUserPhraseWithState:(InputStateMarking *)state;
|
||||||
@end
|
@end
|
||||||
|
|
|
@ -525,8 +525,7 @@ static NSString *const kGraphVizOutputfile = @"/tmp/McBopomofo-visualization.dot
|
||||||
if ([input isShiftHold]) {
|
if ([input isShiftHold]) {
|
||||||
// Shift + left
|
// Shift + left
|
||||||
if (_builder->cursorIndex() > 0) {
|
if (_builder->cursorIndex() > 0) {
|
||||||
InputStateMarking *marking = [[InputStateMarking alloc] initWithComposingBuffer:currentState.composingBuffer cursorIndex:currentState.cursorIndex markerIndex:currentState.cursorIndex - 1];
|
InputStateMarking *marking = [[InputStateMarking alloc] initWithComposingBuffer:currentState.composingBuffer cursorIndex:currentState.cursorIndex markerIndex:currentState.cursorIndex - 1 readings: [self _currentReadings]];
|
||||||
marking.readings = [self _currentReadings];
|
|
||||||
stateCallback(marking);
|
stateCallback(marking);
|
||||||
} else {
|
} else {
|
||||||
errorCallback();
|
errorCallback();
|
||||||
|
@ -562,8 +561,7 @@ static NSString *const kGraphVizOutputfile = @"/tmp/McBopomofo-visualization.dot
|
||||||
if ([input isShiftHold]) {
|
if ([input isShiftHold]) {
|
||||||
// Shift + Right
|
// Shift + Right
|
||||||
if (_builder->cursorIndex() < _builder->length()) {
|
if (_builder->cursorIndex() < _builder->length()) {
|
||||||
InputStateMarking *marking = [[InputStateMarking alloc] initWithComposingBuffer:currentState.composingBuffer cursorIndex:currentState.cursorIndex markerIndex:currentState.cursorIndex + 1];
|
InputStateMarking *marking = [[InputStateMarking alloc] initWithComposingBuffer:currentState.composingBuffer cursorIndex:currentState.cursorIndex markerIndex:currentState.cursorIndex + 1 readings: [self _currentReadings]];
|
||||||
marking.readings = [self _currentReadings];
|
|
||||||
stateCallback(marking);
|
stateCallback(marking);
|
||||||
} else {
|
} else {
|
||||||
errorCallback();
|
errorCallback();
|
||||||
|
@ -773,8 +771,7 @@ static NSString *const kGraphVizOutputfile = @"/tmp/McBopomofo-visualization.dot
|
||||||
NSUInteger index = state.markerIndex;
|
NSUInteger index = state.markerIndex;
|
||||||
if (index > 0) {
|
if (index > 0) {
|
||||||
index -= 1;
|
index -= 1;
|
||||||
InputStateMarking *marking = [[InputStateMarking alloc] initWithComposingBuffer:state.composingBuffer cursorIndex:state.cursorIndex markerIndex:index];
|
InputStateMarking *marking = [[InputStateMarking alloc] initWithComposingBuffer:state.composingBuffer cursorIndex:state.cursorIndex markerIndex:index readings:state.readings];
|
||||||
marking.readings = state.readings;
|
|
||||||
stateCallback(marking);
|
stateCallback(marking);
|
||||||
} else {
|
} else {
|
||||||
errorCallback();
|
errorCallback();
|
||||||
|
@ -789,8 +786,7 @@ static NSString *const kGraphVizOutputfile = @"/tmp/McBopomofo-visualization.dot
|
||||||
NSUInteger index = state.markerIndex;
|
NSUInteger index = state.markerIndex;
|
||||||
if (index < state.composingBuffer.length) {
|
if (index < state.composingBuffer.length) {
|
||||||
index += 1;
|
index += 1;
|
||||||
InputStateMarking *marking = [[InputStateMarking alloc] initWithComposingBuffer:state.composingBuffer cursorIndex:state.cursorIndex markerIndex:index];
|
InputStateMarking *marking = [[InputStateMarking alloc] initWithComposingBuffer:state.composingBuffer cursorIndex:state.cursorIndex markerIndex:index readings:state.readings];
|
||||||
marking.readings = state.readings;
|
|
||||||
stateCallback(marking);
|
stateCallback(marking);
|
||||||
} else {
|
} else {
|
||||||
errorCallback();
|
errorCallback();
|
||||||
|
@ -810,7 +806,7 @@ static NSString *const kGraphVizOutputfile = @"/tmp/McBopomofo-visualization.dot
|
||||||
{
|
{
|
||||||
NSString *inputText = input.inputText;
|
NSString *inputText = input.inputText;
|
||||||
UniChar charCode = input.charCode;
|
UniChar charCode = input.charCode;
|
||||||
VTCandidateController *gCurrentCandidateController = [self.delegate candidateControllerForKeyHanlder:self];
|
VTCandidateController *gCurrentCandidateController = [self.delegate candidateControllerForKeyHandler:self];
|
||||||
|
|
||||||
BOOL cancelCandidateKey = (charCode == 27) || [input isDelete] ||
|
BOOL cancelCandidateKey = (charCode == 27) || [input isDelete] ||
|
||||||
((_inputMode == kPlainBopomofoModeIdentifier) && (charCode == 8));
|
((_inputMode == kPlainBopomofoModeIdentifier) && (charCode == 8));
|
||||||
|
|
Loading…
Reference in New Issue