git.y1.nz

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.