diff --git a/Cocoa/GBApp.h b/Cocoa/GBApp.h index 0ad7ac3..de45e28 100644 --- a/Cocoa/GBApp.h +++ b/Cocoa/GBApp.h @@ -22,5 +22,6 @@ @property (strong) IBOutlet NSButton *updateProgressButton; @property (strong) IBOutlet NSWindow *updateProgressWindow; @property (strong) IBOutlet NSProgressIndicator *updateProgressSpinner; +- (void)updateThemesDefault:(bool)overwrite; @end diff --git a/Cocoa/GBApp.m b/Cocoa/GBApp.m index ea5cdd4..9a7b045 100644 --- a/Cocoa/GBApp.m +++ b/Cocoa/GBApp.m @@ -235,6 +235,27 @@ static uint32_t color_to_int(NSColor *color) if ([[NSProcessInfo processInfo].arguments containsObject:@"--update-launch"]) { [NSApp activateIgnoringOtherApps:true]; } + + if (![[[NSUserDefaults standardUserDefaults] stringForKey:@"GBThemesVersion"] isEqualToString:@(GB_VERSION)]) { + [[NSUserDefaults standardUserDefaults] setObject:@(GB_VERSION) forKey:@"GBThemesVersion"]; + [self updateThemesDefault:false]; + } +} + +- (void)updateThemesDefault:(bool)overwrite +{ + NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults]; + NSMutableDictionary *currentThemes = [defaults dictionaryForKey:@"GBThemes"].mutableCopy; + [defaults removeObjectForKey:@"GBThemes"]; + NSMutableDictionary *defaultThemes = [defaults dictionaryForKey:@"GBThemes"].mutableCopy; + if (overwrite) { + [currentThemes addEntriesFromDictionary:defaultThemes]; + [defaults setObject:currentThemes forKey:@"GBThemes"]; + } + else { + [defaultThemes addEntriesFromDictionary:currentThemes]; + [defaults setObject:defaultThemes forKey:@"GBThemes"]; + } } - (IBAction)toggleDeveloperMode:(id)sender diff --git a/Cocoa/GBPaletteEditorController.h b/Cocoa/GBPaletteEditorController.h index fd362ec..e14e53b 100644 --- a/Cocoa/GBPaletteEditorController.h +++ b/Cocoa/GBPaletteEditorController.h @@ -14,5 +14,7 @@ @property (weak) IBOutlet NSSlider *hueStrengthSlider; @property (weak) IBOutlet NSTableView *themesList; @property (weak) IBOutlet NSMenu *menu; +@property (weak) IBOutlet NSSegmentedControl *segmentControl; +@property IBOutlet NSMenu *segmentMenu; + (const GB_palette_t *)userPalette; @end diff --git a/Cocoa/GBPaletteEditorController.m b/Cocoa/GBPaletteEditorController.m index 0ebda7a..3d7d37a 100644 --- a/Cocoa/GBPaletteEditorController.m +++ b/Cocoa/GBPaletteEditorController.m @@ -1,5 +1,6 @@ #import "GBPaletteEditorController.h" #import "GBHueSliderCell.h" +#import "GBApp.h" #import #define MAGIC 'SBPL' @@ -199,11 +200,17 @@ static double blend(double from, double to, double position) if (theme && themes[theme]) { unsigned index = [[themes.allKeys sortedArrayUsingSelector:@selector(localizedCaseInsensitiveCompare:)] indexOfObject:theme]; [_themesList selectRowIndexes:[NSIndexSet indexSetWithIndex:index] byExtendingSelection:false]; + [_themesList scrollRowToVisible:index]; } else { [_themesList selectRowIndexes:[NSIndexSet indexSetWithIndex:0] byExtendingSelection:false]; + [_themesList scrollRowToVisible:0]; } [self tableViewSelectionDidChange:nil]; + if (@available(macOS 10.10, *)) { + _themesList.enclosingScrollView.contentView.automaticallyAdjustsContentInsets = false; + _themesList.enclosingScrollView.contentView.contentInsets = NSEdgeInsetsMake(0, 0, 10, 0); + } } - (IBAction)addTheme:(id)sender @@ -365,6 +372,29 @@ static double blend(double from, double to, double position) } } +- (IBAction)segmentAction:(NSSegmentedControl *)sender +{ + switch (sender.selectedSegment) { + case 0: [self addTheme:sender]; return; + case 1: [self deleteTheme:sender]; return; + case 3: { + NSSize menuSize = _segmentMenu.size; + NSSize buttonSize = _segmentControl.bounds.size; + [_segmentMenu popUpMenuPositioningItem:_segmentMenu.itemArray.lastObject + atLocation:NSMakePoint(buttonSize.width, + 0) + inView:sender]; + return; + } + } +} + +- (IBAction)restoreDefaultPalettes:(id)sender +{ + [(GBApp *)NSApp updateThemesDefault:true]; + [self awakeFromNib]; +} + - (IBAction)done:(NSButton *)sender { [sender.window.sheetParent endSheet:sender.window]; diff --git a/Cocoa/Preferences.xib b/Cocoa/Preferences.xib index 9979ba2..f47f512 100644 --- a/Cocoa/Preferences.xib +++ b/Cocoa/Preferences.xib @@ -1055,7 +1055,7 @@ - + @@ -1176,14 +1176,14 @@ - + - + - + @@ -1327,50 +1327,6 @@ - - - - @@ -1391,6 +1347,22 @@ + + + + + + + + + + + + + + + + @@ -1408,6 +1380,8 @@ + + @@ -1473,7 +1447,7 @@ - + @@ -1548,6 +1522,30 @@ Test + + + + + + + + + + + + + + + + + + + + + + + +