SameBoy | Accurate GB/GBC emulator |
| download: https://git.y1.nz/archives/sameboy.tar.gz | |
| README | Files | Log | Refs | LICENSE |
Cocoa/GBPreferencePopUpButton.m
1 #import "GBPreferencePopUpButton.h"
2 #import "NSObject+DefaultsObserver.h"
3
4 @implementation GBPreferenceMenuItem
5 @end
6
7 @implementation GBPreferencePopUpButton
8
9 - (BOOL)sendAction:(SEL)action to:(id)target
10 {
11 GBPreferenceMenuItem *item = (GBPreferenceMenuItem *)self.selectedItem;
12 if ([item isKindOfClass:[GBPreferenceMenuItem class]]) {
13 [[NSUserDefaults standardUserDefaults] setObject:item.preferenceValue forKey:_preferenceName];
14 }
15 else {
16 [[NSUserDefaults standardUserDefaults] setInteger:item.tag forKey:_preferenceName];
17 }
18 return [super sendAction:action to:target];
19 }
20
21 - (void)updateValue
22 {
23 if (!_preferenceName) return;
24 NSString *stringValue = [[NSUserDefaults standardUserDefaults] objectForKey:_preferenceName];
25 if ([stringValue isKindOfClass:[NSString class]]) {
26 for (GBPreferenceMenuItem *item in self.menu.itemArray) {
27 if ([item isKindOfClass:[GBPreferenceMenuItem class]] &&
28 [item.preferenceValue isEqualToString:stringValue]) {
29 [self selectItem:item];
30 return;
31 }
32 }
33 }
34 else {
35 [self selectItemWithTag:[[NSUserDefaults standardUserDefaults] integerForKey:_preferenceName]];
36 }
37 }
38
39 - (void)setPreferenceName:(NSString *)preferenceName
40 {
41 _preferenceName = preferenceName;
42 [self observeStandardDefaultsKey:_preferenceName selector:@selector(updateValue)];
43 }
44
45 - (void)viewDidMoveToWindow
46 {
47 [super viewDidMoveToWindow];
48 [self updateValue];
49 }
50
51 @end
This webpage is intended to be an accessible preview of this repository. To get a fuller picture, clone it and use the git CLI.