Actually make it impossible to remove the default configuration. Various other small...
authorJoe Wreschnig <joe.wreschnig@gmail.com>
Thu, 28 Feb 2013 00:32:26 +0000 (01:32 +0100)
committerJoe Wreschnig <joe.wreschnig@gmail.com>
Thu, 28 Feb 2013 00:32:26 +0000 (01:32 +0100)
Config.h
Config.m
ConfigsController.h
ConfigsController.m

index d85ec939c2982f4cbcf587057205dcf0799c8eff..12ee2198054fff0c32cac3d49ed895d6c8af726a 100644 (file)
--- a/Config.h
+++ b/Config.h
@@ -13,7 +13,6 @@
 
 @interface Config : NSObject
 
-@property (assign) BOOL protect;
 @property (copy) NSString *name;
 @property (readonly) NSMutableDictionary *entries;
 
index 727b8b01a5c730824519b3deda548cb77a949918..fcc18283a8230b959fd6bfe1c60c7d34e7b5f963 100644 (file)
--- a/Config.m
+++ b/Config.m
@@ -11,7 +11,8 @@
     NSMutableDictionary *entries;
 }
 
-@synthesize protect, name, entries;
+@synthesize name;
+@synthesize entries;
 
 - (id)init {
     if ((self = [super init])) {
index 7a83830fddcb3f165f9715936f7cfdd667ed0080..5d2b4d108a0cfebe6c5d5433c0fe60b7cb3f08dc 100644 (file)
@@ -7,32 +7,30 @@
 //
 
 #import <Cocoa/Cocoa.h>
+
 @class Config;
 @class TargetController;
 
 @interface ConfigsController : NSObject {
-       NSMutableArray* configs;
-       IBOutlet NSButton* removeButton;
-       IBOutlet NSTableView* tableView;
-       IBOutlet TargetController* targetController;
-       Config* currentConfig;
-       Config* neutralConfig; /* last config to be manually selected */
+       IBOutlet NSButton *removeButton;
+       IBOutlet NSTableView *tableView;
+       IBOutlet TargetController *targetController;
 }
 
--(IBAction) addPressed: (id)sender;
--(IBAction) removePressed: (id)sender;
--(void) activateConfig: (Config*)config forApplication: (ProcessSerialNumber*) psn;
+- (IBAction)addPressed:(id)sender;
+- (IBAction)removePressed:(id)sender;
+- (void)activateConfig:(Config *)config forApplication:(ProcessSerialNumber *)psn;
 
--(NSDictionary*) dumpAll;
--(void) loadAllFrom: (NSDictionary*) dict;
+- (NSDictionary *)dumpAll;
+- (void)loadAllFrom:(NSDictionary*) dict;
 
-@property(strong, readonly) Config* currentConfig;
-@property(strong, readonly) Config* currentNeutralConfig;
-@property(readonly) NSArray* configs;
+@property (readonly) Config *currentConfig;
+@property (readonly) Config *currentNeutralConfig;
+@property (readonly) NSArray *configs;
 
--(void) save;
--(void) load;
+- (void)save;
+- (void)load;
 
--(void) applicationSwitchedTo: (NSString*) name withPsn: (ProcessSerialNumber) psn;    
+- (void)applicationSwitchedTo:(NSString *)name withPsn:(ProcessSerialNumber)psn;
 
 @end
index 58614b2f56610c37b43923c2dd343d6f6c40a6c4..10adcee4215190686ba70176ea791a76a9cff023 100644 (file)
@@ -5,30 +5,32 @@
 //  Created by Sam McCall on 4/05/09.
 //
 
-@implementation ConfigsController
+@implementation ConfigsController {
+    NSMutableArray *configs;
+       Config *neutralConfig;
+}
 
+@synthesize currentConfig;
 @synthesize configs;
 
--(id) init {
-       if(self = [super init]) {
+- (id)init {
+       if ((self = [super init])) {
                configs = [[NSMutableArray alloc] init];
                currentConfig = [[Config alloc] init];
                [currentConfig setName: @"(default)"];
-               [currentConfig setProtect: YES];
-               [configs addObject: currentConfig];             
+               [configs addObject:currentConfig];
        }
        return self;
 }
 
+// TODO: Neutral config stuff is a mess.
+
 -(void) restoreNeutralConfig {
        if(!neutralConfig)
                return;
        [self activateConfig: neutralConfig forApplication: NULL];
 }
 
-// TODO: Not an appropriate way to track 'neutral configs', it should just
-// always be the first config and be unremovable.
-
 -(void) activateConfig: (Config*)config forApplication: (ProcessSerialNumber*) psn {
        if(currentConfig == config)
                return;
                [targetController reset];
        }
        currentConfig = config;
-       [removeButton setEnabled: ![config protect]];
+       [removeButton setEnabled:configs[0] != config];
        [targetController load];
        [(ApplicationController *)[[NSApplication sharedApplication] delegate] configChanged];
     [tableView selectRowIndexes:[NSIndexSet indexSetWithIndex:[configs indexOfObject:config]] byExtendingSelection:NO];
 }
 
--(IBAction) addPressed: (id)sender {
-       ConfignewConfig = [[Config alloc] init];
-       [newConfig setName: @"untitled"];
-       [configs addObject: newConfig];
+- (IBAction)addPressed:(id)sender {
+       Config *newConfig = [[Config alloc] init];
+    newConfig.name = @"untitled";
+       [configs addObject:newConfig];
        [(ApplicationController *)[[NSApplication sharedApplication] delegate] configsChanged];
        [tableView reloadData];
     [tableView selectRowIndexes:[NSIndexSet indexSetWithIndex:configs.count - 1] byExtendingSelection:NO];
-       [tableView editColumn: 0 row:([configs count]-1) withEvent:nil select:YES];
+       [tableView editColumn:0 row:[configs count] - 1 withEvent:nil select:YES];
 }
--(IBAction) removePressed: (id)sender {
-       // save changes first
-       [tableView reloadData];
-       Config* current_config = configs[[tableView selectedRow]];
-       if([current_config protect])
-               return;
-       [configs removeObjectAtIndex: [tableView selectedRow]];
+
+- (IBAction)removePressed:(id)sender {
+    if (tableView.selectedRow == 0)
+        return;
+
+       Config *current_config = configs[tableView.selectedRow];
+       [configs removeObjectAtIndex:tableView.selectedRow];
        
        // remove all "switch to configuration" actions
     for (Config *config in configs) {
                NSMutableDictionary *entries = config.entries;
                for (id key in entries) {
                        Target *target = entries[key];
-                       if([target isKindOfClass:[TargetConfig class]] && [(TargetConfig *)target config] == current_config)
+                       if ([target isKindOfClass:[TargetConfig class]]
+                && [(TargetConfig *)target config] == current_config)
                                [entries removeObjectForKey: key];
                }
        }
-       [(ApplicationController *)[[NSApplication sharedApplication] delegate] configsChanged];
-       
+       [(ApplicationController *)[[NSApplication sharedApplication] delegate] configsChanged]; 
        [tableView reloadData];
 }
 
--(void)tableViewSelectionDidChange:(NSNotification*) notify {
-    if (tableView.selectedRow < configs.count)
-        [self activateConfig: (Config*)configs[[tableView selectedRow]] forApplication: NULL];
+-(void)tableViewSelectionDidChange:(NSNotification *)notify {
+    if (tableView.selectedRow >= 0)
+        [self activateConfig:configs[tableView.selectedRow] forApplication: NULL];
 }
        
--(id) tableView: (NSTableView*)view objectValueForTableColumn: (NSTableColumn*) column row: (int) index {
-    NSParameterAssert(index >= 0 && index < [configs count]);
+- (id)tableView:(NSTableView *)view objectValueForTableColumn:(NSTableColumn *)column row:(int)index {
        return [configs[index] name];
 }
 
--(void) tableView: (NSTableView*) view setObjectValue:obj forTableColumn:(NSTableColumn*) col row: (int)index {
-    NSParameterAssert(index >= 0 && index < [configs count]);
+- (void)tableView:(NSTableView *)view setObjectValue:obj forTableColumn:(NSTableColumn *)col row:(int)index {
        /* ugly hack so stringification doesn't fail */
        NSString* newName = [(NSString*)obj stringByReplacingOccurrencesOfString: @"~" withString: @""];
-       [(Config*)configs[index] setName: newName];
+       [(Config *)configs[index] setName:newName];
        [targetController refreshConfigsPreservingSelection:YES];
        [tableView reloadData];
        [(ApplicationController *)[[NSApplication sharedApplication] delegate] configsChanged];
 }
 
--(int)numberOfRowsInTableView: (NSTableView*)table {
+- (int)numberOfRowsInTableView:(NSTableView*)table {
        return [configs count];
 }
 
--(BOOL)tableView: (NSTableView*)view shouldEditTableColumn: (NSTableColumn*) column row: (int) index {
-       return ![configs[index] protect];
+- (BOOL)tableView:(NSTableView *)view shouldEditTableColumn:(NSTableColumn *)column row:(int)index {
+       return index > 0;
 }      
 
--(Config*) currentConfig {
+- (Config *)currentConfig {
        return currentConfig;
 }
 
--(Config*) currentNeutralConfig {
-       if(neutralConfig)
+- (Config *)currentNeutralConfig {
+       if (neutralConfig)
                return neutralConfig;
        return currentConfig;
 }
                [cfg setName: ary[i][@"name"]];         
                [newConfigs addObject: cfg];
        }
-       [configs[0] setProtect: YES];
        for(int i=0; i<[ary count]; i++) {
                NSDictionary* dict = ary[i][@"entries"];
                for(id key in dict) {