Cleans-up InputMethodController.mm.
This commit is contained in:
parent
a230705bbd
commit
c9d0378cd5
|
@ -94,6 +94,7 @@ SimpleLM LTLanguageModel;
|
||||||
|
|
||||||
- (void)_performDeferredSaveUserCandidatesDictionary;
|
- (void)_performDeferredSaveUserCandidatesDictionary;
|
||||||
- (void)saveUserCandidatesDictionary;
|
- (void)saveUserCandidatesDictionary;
|
||||||
|
- (void)_showCandidateWindowUsingVerticalMode:(BOOL)useVerticalMode client:(id)client;
|
||||||
@end
|
@end
|
||||||
|
|
||||||
// sort helper
|
// sort helper
|
||||||
|
@ -195,14 +196,7 @@ public:
|
||||||
return menu;
|
return menu;
|
||||||
}
|
}
|
||||||
|
|
||||||
#pragma mark IMKStateSetting protocol methods
|
#pragma mark - IMKStateSetting protocol methods
|
||||||
|
|
||||||
- (void)showPreferences:(id)sender
|
|
||||||
{
|
|
||||||
// show the preferences panel, and also make the IME app itself the focus
|
|
||||||
[super showPreferences:sender];
|
|
||||||
[[NSApplication sharedApplication] activateIgnoringOtherApps:YES];
|
|
||||||
}
|
|
||||||
|
|
||||||
- (void)activateServer:(id)client
|
- (void)activateServer:(id)client
|
||||||
{
|
{
|
||||||
|
@ -270,6 +264,8 @@ public:
|
||||||
_currentCandidateClient = nil;
|
_currentCandidateClient = nil;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#pragma mark - IMKServerInput protocol methods
|
||||||
|
|
||||||
- (void)commitComposition:(id)client
|
- (void)commitComposition:(id)client
|
||||||
{
|
{
|
||||||
// if it's Terminal, we don't commit at the first call (the client of which will not be IPMDServerClientWrapper)
|
// if it's Terminal, we don't commit at the first call (the client of which will not be IPMDServerClientWrapper)
|
||||||
|
@ -422,42 +418,6 @@ public:
|
||||||
NSBeep();
|
NSBeep();
|
||||||
}
|
}
|
||||||
|
|
||||||
- (void)_showCandidateWindowUsingVerticalMode:(BOOL)useVerticalMode client:(id)client
|
|
||||||
{
|
|
||||||
// candidate
|
|
||||||
[LTSharedCandidates setDismissesAutomatically:YES];
|
|
||||||
|
|
||||||
// wrap NSNumber; we only allow number keys 1-9 as selection keys in this project
|
|
||||||
#define LTUIntObj(x) ([NSNumber numberWithInteger:x])
|
|
||||||
[LTSharedCandidates setSelectionKeys:[NSArray arrayWithObjects:LTUIntObj(18), LTUIntObj(19), LTUIntObj(20), LTUIntObj(21), LTUIntObj(23), LTUIntObj(22), LTUIntObj(26), LTUIntObj(28), LTUIntObj(25), nil]];
|
|
||||||
#undef LTUIntObj
|
|
||||||
|
|
||||||
// set the candidate panel style
|
|
||||||
BOOL useHorizontalCandidateList = [[NSUserDefaults standardUserDefaults] boolForKey:kUseHorizontalCandidateListPreferenceKey];
|
|
||||||
|
|
||||||
if (useVerticalMode) {
|
|
||||||
[LTSharedCandidates setPanelType:kIMKSingleColumnScrollingCandidatePanel];
|
|
||||||
}
|
|
||||||
else if (useHorizontalCandidateList) {
|
|
||||||
[LTSharedCandidates setPanelType:kIMKSingleRowSteppingCandidatePanel];
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
[LTSharedCandidates setPanelType:kIMKSingleColumnScrollingCandidatePanel];
|
|
||||||
}
|
|
||||||
|
|
||||||
// set the attributes for the candidate panel (which uses NSAttributedString)
|
|
||||||
NSInteger textSize = [[NSUserDefaults standardUserDefaults] integerForKey:kCandidateListTextSizeKey];
|
|
||||||
NSDictionary *attributes = [NSDictionary dictionaryWithObjectsAndKeys: [NSFont systemFontOfSize:textSize], NSFontAttributeName, nil];
|
|
||||||
[LTSharedCandidates setAttributes:attributes];
|
|
||||||
|
|
||||||
[LTSharedCandidates updateCandidates];
|
|
||||||
[LTSharedCandidates show:useVerticalMode ? kIMKLocateCandidatesLeftHint : kIMKLocateCandidatesBelowHint];
|
|
||||||
|
|
||||||
// update the composing text, set the client
|
|
||||||
[self updateClientComposingBuffer:client];
|
|
||||||
_currentCandidateClient = client;
|
|
||||||
}
|
|
||||||
|
|
||||||
- (BOOL)inputText:(NSString*)inputText key:(NSInteger)keyCode modifiers:(NSUInteger)flags client:(id)client
|
- (BOOL)inputText:(NSString*)inputText key:(NSInteger)keyCode modifiers:(NSUInteger)flags client:(id)client
|
||||||
{
|
{
|
||||||
NSRect textFrame = NSZeroRect;
|
NSRect textFrame = NSZeroRect;
|
||||||
|
@ -789,61 +749,6 @@ public:
|
||||||
|
|
||||||
return results;
|
return results;
|
||||||
}
|
}
|
||||||
|
|
||||||
- (NSString *)neighborTrigramString
|
|
||||||
{
|
|
||||||
// gather the "trigram" for user candidate selection learning
|
|
||||||
|
|
||||||
NSMutableArray *termArray = [NSMutableArray array];
|
|
||||||
|
|
||||||
size_t cursorIndex = [self actualCandidateCursorIndex];
|
|
||||||
vector<NodeAnchor> nodes = _builder->grid().nodesCrossingOrEndingAt(cursorIndex);
|
|
||||||
|
|
||||||
const Node* prev = 0;
|
|
||||||
const Node* current = 0;
|
|
||||||
const Node* next = 0;
|
|
||||||
|
|
||||||
size_t wni = 0;
|
|
||||||
size_t wnc = _walkedNodes.size();
|
|
||||||
size_t accuSpanningLength = 0;
|
|
||||||
for (wni = 0; wni < wnc; wni++) {
|
|
||||||
NodeAnchor& anchor = _walkedNodes[wni];
|
|
||||||
if (!anchor.node) {
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
|
|
||||||
accuSpanningLength += anchor.spanningLength;
|
|
||||||
if (accuSpanningLength >= cursorIndex) {
|
|
||||||
prev = current;
|
|
||||||
current = anchor.node;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
current = anchor.node;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (wni + 1 < wnc) {
|
|
||||||
next = _walkedNodes[wni + 1].node;
|
|
||||||
}
|
|
||||||
|
|
||||||
string term;
|
|
||||||
if (prev) {
|
|
||||||
term = prev->currentKeyValue().key;
|
|
||||||
[termArray addObject:[NSString stringWithUTF8String:term.c_str()]];
|
|
||||||
}
|
|
||||||
|
|
||||||
if (current) {
|
|
||||||
term = current->currentKeyValue().key;
|
|
||||||
[termArray addObject:[NSString stringWithUTF8String:term.c_str()]];
|
|
||||||
}
|
|
||||||
|
|
||||||
if (next) {
|
|
||||||
term = next->currentKeyValue().key;
|
|
||||||
[termArray addObject:[NSString stringWithUTF8String:term.c_str()]];
|
|
||||||
}
|
|
||||||
|
|
||||||
return [termArray componentsJoinedByString:@"-"];
|
|
||||||
}
|
|
||||||
|
|
||||||
- (void)candidateSelected:(NSAttributedString *)candidateString
|
- (void)candidateSelected:(NSAttributedString *)candidateString
|
||||||
{
|
{
|
||||||
|
@ -885,7 +790,7 @@ public:
|
||||||
_currentCandidateClient = nil;
|
_currentCandidateClient = nil;
|
||||||
}
|
}
|
||||||
|
|
||||||
#pragma mark Private methods
|
#pragma mark - Private methods
|
||||||
|
|
||||||
- (size_t)actualCandidateCursorIndex
|
- (size_t)actualCandidateCursorIndex
|
||||||
{
|
{
|
||||||
|
@ -908,6 +813,61 @@ public:
|
||||||
return cursorIndex;
|
return cursorIndex;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
- (NSString *)neighborTrigramString
|
||||||
|
{
|
||||||
|
// gather the "trigram" for user candidate selection learning
|
||||||
|
|
||||||
|
NSMutableArray *termArray = [NSMutableArray array];
|
||||||
|
|
||||||
|
size_t cursorIndex = [self actualCandidateCursorIndex];
|
||||||
|
vector<NodeAnchor> nodes = _builder->grid().nodesCrossingOrEndingAt(cursorIndex);
|
||||||
|
|
||||||
|
const Node* prev = 0;
|
||||||
|
const Node* current = 0;
|
||||||
|
const Node* next = 0;
|
||||||
|
|
||||||
|
size_t wni = 0;
|
||||||
|
size_t wnc = _walkedNodes.size();
|
||||||
|
size_t accuSpanningLength = 0;
|
||||||
|
for (wni = 0; wni < wnc; wni++) {
|
||||||
|
NodeAnchor& anchor = _walkedNodes[wni];
|
||||||
|
if (!anchor.node) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
accuSpanningLength += anchor.spanningLength;
|
||||||
|
if (accuSpanningLength >= cursorIndex) {
|
||||||
|
prev = current;
|
||||||
|
current = anchor.node;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
current = anchor.node;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (wni + 1 < wnc) {
|
||||||
|
next = _walkedNodes[wni + 1].node;
|
||||||
|
}
|
||||||
|
|
||||||
|
string term;
|
||||||
|
if (prev) {
|
||||||
|
term = prev->currentKeyValue().key;
|
||||||
|
[termArray addObject:[NSString stringWithUTF8String:term.c_str()]];
|
||||||
|
}
|
||||||
|
|
||||||
|
if (current) {
|
||||||
|
term = current->currentKeyValue().key;
|
||||||
|
[termArray addObject:[NSString stringWithUTF8String:term.c_str()]];
|
||||||
|
}
|
||||||
|
|
||||||
|
if (next) {
|
||||||
|
term = next->currentKeyValue().key;
|
||||||
|
[termArray addObject:[NSString stringWithUTF8String:term.c_str()]];
|
||||||
|
}
|
||||||
|
|
||||||
|
return [termArray componentsJoinedByString:@"-"];
|
||||||
|
}
|
||||||
|
|
||||||
- (void)_performDeferredSaveUserCandidatesDictionary
|
- (void)_performDeferredSaveUserCandidatesDictionary
|
||||||
{
|
{
|
||||||
BOOL __unused success = [TLCandidateLearningDictionary writeToFile:TLUserCandidatesDictionaryPath atomically:YES];
|
BOOL __unused success = [TLCandidateLearningDictionary writeToFile:TLUserCandidatesDictionaryPath atomically:YES];
|
||||||
|
@ -925,7 +885,50 @@ public:
|
||||||
[self performSelector:@selector(_performDeferredSaveUserCandidatesDictionary) withObject:nil afterDelay:5.0];
|
[self performSelector:@selector(_performDeferredSaveUserCandidatesDictionary) withObject:nil afterDelay:5.0];
|
||||||
}
|
}
|
||||||
|
|
||||||
#pragma Misc menu items
|
- (void)_showCandidateWindowUsingVerticalMode:(BOOL)useVerticalMode client:(id)client
|
||||||
|
{
|
||||||
|
// candidate
|
||||||
|
[LTSharedCandidates setDismissesAutomatically:YES];
|
||||||
|
|
||||||
|
// wrap NSNumber; we only allow number keys 1-9 as selection keys in this project
|
||||||
|
#define LTUIntObj(x) ([NSNumber numberWithInteger:x])
|
||||||
|
[LTSharedCandidates setSelectionKeys:[NSArray arrayWithObjects:LTUIntObj(18), LTUIntObj(19), LTUIntObj(20), LTUIntObj(21), LTUIntObj(23), LTUIntObj(22), LTUIntObj(26), LTUIntObj(28), LTUIntObj(25), nil]];
|
||||||
|
#undef LTUIntObj
|
||||||
|
|
||||||
|
// set the candidate panel style
|
||||||
|
BOOL useHorizontalCandidateList = [[NSUserDefaults standardUserDefaults] boolForKey:kUseHorizontalCandidateListPreferenceKey];
|
||||||
|
|
||||||
|
if (useVerticalMode) {
|
||||||
|
[LTSharedCandidates setPanelType:kIMKSingleColumnScrollingCandidatePanel];
|
||||||
|
}
|
||||||
|
else if (useHorizontalCandidateList) {
|
||||||
|
[LTSharedCandidates setPanelType:kIMKSingleRowSteppingCandidatePanel];
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
[LTSharedCandidates setPanelType:kIMKSingleColumnScrollingCandidatePanel];
|
||||||
|
}
|
||||||
|
|
||||||
|
// set the attributes for the candidate panel (which uses NSAttributedString)
|
||||||
|
NSInteger textSize = [[NSUserDefaults standardUserDefaults] integerForKey:kCandidateListTextSizeKey];
|
||||||
|
NSDictionary *attributes = [NSDictionary dictionaryWithObjectsAndKeys: [NSFont systemFontOfSize:textSize], NSFontAttributeName, nil];
|
||||||
|
[LTSharedCandidates setAttributes:attributes];
|
||||||
|
|
||||||
|
[LTSharedCandidates updateCandidates];
|
||||||
|
[LTSharedCandidates show:useVerticalMode ? kIMKLocateCandidatesLeftHint : kIMKLocateCandidatesBelowHint];
|
||||||
|
|
||||||
|
// update the composing text, set the client
|
||||||
|
[self updateClientComposingBuffer:client];
|
||||||
|
_currentCandidateClient = client;
|
||||||
|
}
|
||||||
|
|
||||||
|
#pragma mark - Misc menu items
|
||||||
|
|
||||||
|
- (void)showPreferences:(id)sender
|
||||||
|
{
|
||||||
|
// show the preferences panel, and also make the IME app itself the focus
|
||||||
|
[super showPreferences:sender];
|
||||||
|
[[NSApplication sharedApplication] activateIgnoringOtherApps:YES];
|
||||||
|
}
|
||||||
|
|
||||||
- (void)showAbout:(id)sender
|
- (void)showAbout:(id)sender
|
||||||
{
|
{
|
||||||
|
|
Loading…
Reference in New Issue