Skip to content

Commit

Permalink
compatible with predictor && fix switcher labels
Browse files Browse the repository at this point in the history
  • Loading branch information
groverlynn committed Dec 19, 2023
1 parent 79c0d97 commit facb330
Show file tree
Hide file tree
Showing 8 changed files with 533 additions and 432 deletions.
23 changes: 13 additions & 10 deletions SquirrelApplicationDelegate.m
Original file line number Diff line number Diff line change
Expand Up @@ -86,6 +86,7 @@ void notification_handler(void *context_object, RimeSessionId session_id,
if ([[app_delegate panel].optionSwitcher containsOption:@(option_name)]) {
if ([[app_delegate panel].optionSwitcher updateGroupState:@(message_value) ofOption:@(option_name)]) {
[app_delegate loadSchemaSpecificSettings:[app_delegate panel].optionSwitcher.schemaId];
[app_delegate loadSchemaSpecificLabels:[app_delegate panel].optionSwitcher.schemaId];
}
}
if ([app_delegate enableNotifications]) {
Expand Down Expand Up @@ -147,9 +148,9 @@ - (void)loadSettings {

_enableNotifications =
![[_config getString:@"show_notifications_when"] isEqualToString:@"never"];
[self.panel loadConfig:_config forDarkMode:NO];
[self.panel loadConfig:_config forAppearance:defaultAppear];
if (@available(macOS 10.14, *)) {
[self.panel loadConfig:_config forDarkMode:YES];
[self.panel loadConfig:_config forAppearance:darkAppear];
}
}

Expand All @@ -160,33 +161,35 @@ - (void)loadSchemaSpecificSettings:(NSString *)schemaId {
SquirrelConfig *schema = [[SquirrelConfig alloc] init];
if ([schema openWithSchemaId:schemaId baseConfig:self.config] &&
[schema hasSection:@"style"]) {
[self.panel loadConfig:schema forDarkMode:NO];
[self.panel loadConfig:schema forAppearance:defaultAppear];
} else {
[self.panel loadConfig:self.config forDarkMode:NO];
[self.panel loadConfig:self.config forAppearance:defaultAppear];
}
if (@available(macOS 10.14, *)) {
if ([schema openWithSchemaId:schemaId baseConfig:self.config] &&
[schema hasSection:@"style"]) {
[self.panel loadConfig:schema forDarkMode:YES];
[self.panel loadConfig:schema forAppearance:darkAppear];
} else {
[self.panel loadConfig:self.config forDarkMode:YES];
[self.panel loadConfig:self.config forAppearance:darkAppear];
}
}
[schema close];
}

- (void)loadSchemaSpecificLabels:(NSString *)schemaId {
SquirrelConfig *defaultConfig = [[SquirrelConfig alloc] init];
[defaultConfig openWithConfigId:@"default"];
if (schemaId.length == 0 || [schemaId characterAtIndex:0] == '.') {
[self.panel loadLabelConfig:defaultConfig directUpdate:YES];
[defaultConfig close];
return;
}
SquirrelConfig *defaultConfig = [[SquirrelConfig alloc] init];
[defaultConfig openWithConfigId:@"default"];
SquirrelConfig *schema = [[SquirrelConfig alloc] init];
if ([schema openWithSchemaId:schemaId baseConfig:defaultConfig] &&
[schema hasSection:@"menu"]) {
[self.panel loadLabelConfig:schema];
[self.panel loadLabelConfig:schema directUpdate:NO];
} else {
[self.panel loadLabelConfig:defaultConfig];
[self.panel loadLabelConfig:defaultConfig directUpdate:NO];
}
[schema close];
[defaultConfig close];
Expand Down
16 changes: 11 additions & 5 deletions SquirrelConfig.m
Original file line number Diff line number Diff line change
Expand Up @@ -238,9 +238,11 @@ - (NSColor *)getPattern:(NSString *)option {
}

- (NSArray<NSString *> *)getList:(NSString *)option {
NSMutableArray<NSString *> *strList = [[NSMutableArray alloc] init];
RimeConfigIterator iterator;
rime_get_api()->config_begin_list(&iterator, &_config, option.UTF8String);
if (!rime_get_api()->config_begin_list(&iterator, &_config, option.UTF8String)) {
return nil;
}
NSMutableArray<NSString *> *strList = [[NSMutableArray alloc] init];
while (rime_get_api()->config_next(&iterator)) {
[strList addObject:[self getString:@(iterator.path)]];
}
Expand All @@ -249,10 +251,12 @@ - (NSColor *)getPattern:(NSString *)option {
}

- (SquirrelOptionSwitcher *)getOptionSwitcher {
RimeConfigIterator switchIter;
if (!rime_get_api()->config_begin_list(&switchIter, &_config, "switches")) {
return nil;
}
NSMutableDictionary<NSString *, NSString*> *switcher = [[NSMutableDictionary alloc] init];
NSMutableDictionary<NSString *, NSArray<NSString *> *> *optionGroups = [[NSMutableDictionary alloc] init];
RimeConfigIterator switchIter;
rime_get_api()->config_begin_list(&switchIter, &_config, "switches");
while (rime_get_api()->config_next(&switchIter)) {
int reset = [self getInt:[@(switchIter.path) stringByAppendingString:@"/reset"]];
NSString *name = [self getString:[@(switchIter.path) stringByAppendingString:@"/name"]];
Expand Down Expand Up @@ -291,7 +295,9 @@ - (SquirrelAppOptions *)getAppOptions:(NSString *)appName {
NSString *rootKey = [@"app_options/" stringByAppendingString:appName];
SquirrelMutableAppOptions *appOptions = [[SquirrelMutableAppOptions alloc] init];
RimeConfigIterator iterator;
rime_get_api()->config_begin_map(&iterator, &_config, rootKey.UTF8String);
if (!rime_get_api()->config_begin_map(&iterator, &_config, rootKey.UTF8String)) {
return nil;
}
while (rime_get_api()->config_next(&iterator)) {
//NSLog(@"DEBUG option[%d]: %s (%s)", iterator.index, iterator.key, iterator.path);
BOOL value = [self getBool:@(iterator.path)];
Expand Down
23 changes: 18 additions & 5 deletions SquirrelInputController.h
Original file line number Diff line number Diff line change
Expand Up @@ -3,10 +3,23 @@

@interface SquirrelInputController : IMKInputController

- (BOOL)perform:(NSUInteger)action onIndex:(NSUInteger)index;
typedef enum {
kSELECT = 1, // accepts indices in both digits and selection keys
kDELETE = 2, // only accepts indices in digits, e.g. (int) 1
kCHOOSE = 3 // only accepts indices in selection keys, e.g. (char) '1' / 'A'
} rimeAction;

@end
typedef enum {
// 0 ... 9 are ordinal digits, used as (int) index
// 0x21 ... 0x7e are ASCII chars (as selection keys)
// other rime keycodes (as function keys), for paging etc.
kEscape = 0xff1b, // XK_Escape
kPageUp = 0xff55, // XK_Page_Up
kPageDown = 0xff56, // XK_Page_Down
kVoidSymbol = 0xffffff // XK_VoidSymbol
} rimeIndex;

- (void)perform:(rimeAction)action
onIndex:(rimeIndex)index;

#define kSELECT 0x1
#define kDELETE 0x2
#define kCHOOSE 0x3
@end
Loading

0 comments on commit facb330

Please sign in to comment.