Changeset 3978

Show
Ignore:
Timestamp:
03/27/06 22:59:24 (3 years ago)
Author:
morris
Message:

Clean up defaults writing methods

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • WiredAdditions/trunk/NSDate-WIAdditions.m

    r3416 r3978  
    190190        } 
    191191         
    192         // --- get final format 
    193192        format = [NSSWF:@"%@, %@", date, time]; 
    194193        string = [self descriptionWithCalendarFormat:format 
     
    251250        } 
    252251         
    253         // --- get final format 
    254252        string = [self descriptionWithCalendarFormat:time 
    255253                                                                                timeZone:NULL 
  • WiredAdditions/trunk/WIOutlineView.h

    r3970 r3978  
    3333@interface WIOutlineView : NSOutlineView { 
    3434        _WITableViewManager                     *_tableViewManager; 
     35 
     36        NSString                                        *_WI_autosaveName; 
     37        BOOL                                            _WI_autosaveTableColumns; 
    3538} 
    3639 
  • WiredAdditions/trunk/WIOutlineView.m

    r3970 r3978  
    170170 
    171171 
     172- (void)setAutosaveName:(NSString *)name { 
     173        [name retain]; 
     174        [_WI_autosaveName release]; 
     175         
     176        _WI_autosaveName = name; 
     177} 
     178 
     179 
     180 
     181- (NSString *)autosaveName { 
     182        return _WI_autosaveName; 
     183} 
     184 
     185 
     186 
    172187- (void)setAutosaveTableColumns:(BOOL)value { 
    173188        [_tableViewManager setAutosaveTableColumns:value]; 
    174  
    175         [super setAutosaveTableColumns:value]; 
     189         
     190        _WI_autosaveTableColumns = value; 
     191
     192 
     193 
     194 
     195- (BOOL)autosaveTableColumns { 
     196        return _WI_autosaveTableColumns; 
    176197} 
    177198 
  • WiredAdditions/trunk/WISplitView.m

    r3438 r3978  
    2727 */ 
    2828 
     29#import <WiredAdditions/NSSplitView-WIAdditions.h> 
    2930#import <WiredAdditions/WISplitView.h> 
    3031 
     
    5556 
    5657- (void)_saveSplitViewPosition { 
    57         NSMutableArray  *frames; 
    58         NSString                *key; 
    59         int                             i, subviewCount; 
    60          
    6158        if([[self autosaveName] length] > 0) { 
    62                 frames = [NSMutableArray array]; 
    63                 subviewCount = [[self subviews] count]; 
    64                  
    65                 for(i = 0; i < subviewCount; i++) 
    66                         [frames addObject:NSStringFromRect([[[self subviews] objectAtIndex:i] frame])]; 
     59                [[NSUserDefaults standardUserDefaults] setObject:[self propertiesDictionary] 
     60                                                                                                  forKey:[NSSWF:@"WISplitView %@ Properties", [self autosaveName]]]; 
    6761 
    68                         key = [NSSWF:@"%@ %@ Views", NSStringFromClass([self class]), [self autosaveName]]; 
    69                         [[NSUserDefaults standardUserDefaults] setObject:frames forKey:key]; 
     62                [[NSUserDefaults standardUserDefaults] synchronize]; 
    7063        } 
    7164} 
     
    7467 
    7568- (void)_loadSplitViewPosition { 
    76         NSArray         *frames; 
    77         NSString        *key; 
    78         int                     i, frameCount, subviewCount; 
     69        NSDictionary    *dictionary; 
    7970         
    80         key = [NSSWF:@"%@ %@ Views", NSStringFromClass([self class]), [self autosaveName]]; 
    81         frames = [[NSUserDefaults standardUserDefaults] arrayForKey:key]; 
    82          
    83         if(frames) { 
    84                 frameCount = [frames count]; 
    85                 subviewCount = [[self subviews] count]; 
     71        if([[self autosaveName] length] > 0) { 
     72                dictionary = [[NSUserDefaults standardUserDefaults] dictionaryForKey: 
     73                        [NSSWF:@"WISplitView %@ Properties", [self autosaveName]]]; 
    8674                 
    87                 for(i = 0; i < subviewCount && i < frameCount; i++) 
    88                         [[[self subviews] objectAtIndex:i] setFrame:NSRectFromString([frames objectAtIndex:i])]; 
     75                [self setPropertiesFromDictionary:dictionary]; 
    8976        } 
    9077} 
     
    168155 
    169156 
    170 - (NSString *)autosaveName;
     157- (NSString *)autosaveName
    171158        return _autosaveName; 
    172159} 
  • WiredAdditions/trunk/WITableView.h

    r3970 r3978  
    3333@interface WITableView : NSTableView { 
    3434        _WITableViewManager                     *_tableViewManager; 
     35 
     36        NSString                                        *_WI_autosaveName; 
     37        BOOL                                            _WI_autosaveTableColumns; 
    3538} 
    3639 
  • WiredAdditions/trunk/WITableView.m

    r3970 r3978  
    170170 
    171171 
     172- (void)setAutosaveName:(NSString *)name { 
     173        [name retain]; 
     174        [_WI_autosaveName release]; 
     175         
     176        _WI_autosaveName = name; 
     177} 
     178 
     179 
     180 
     181- (NSString *)autosaveName { 
     182        return _WI_autosaveName; 
     183} 
     184 
     185 
     186 
    172187- (void)setAutosaveTableColumns:(BOOL)value { 
    173188        [_tableViewManager setAutosaveTableColumns:value]; 
    174189         
    175         [super setAutosaveTableColumns:value]; 
     190        _WI_autosaveTableColumns = value; 
     191
     192 
     193 
     194 
     195- (BOOL)autosaveTableColumns { 
     196        return _WI_autosaveTableColumns; 
    176197} 
    177198 
  • WiredAdditions/trunk/WITableViewManager.m

    r3970 r3978  
    4747- (void)_setTableColumnIdentifiers:(NSArray *)identifiers; 
    4848- (NSArray *)_tableColumnIdentifiers; 
     49- (void)_setTableColumnWidths:(NSDictionary *)widths; 
     50- (NSDictionary *)_tableColumnWidths; 
    4951- (NSTableColumn *)_tableColumnWithIdentifier:(NSString *)identifier; 
    5052- (BOOL)_includeTableColumnWithIdentifier:(NSString *)identifier; 
     
    186188                 
    187189                if([_tableView autosaveTableColumns]) 
    188                         [self performSelectorOnce:@selector(_saveTableColumns) afterDelay:1.0]; 
     190                        [self performSelectorOnce:@selector(_saveTableColumns) afterDelay:0.1]; 
    189191        } 
    190192         
     
    249251         
    250252        return NULL; 
     253} 
     254 
     255 
     256 
     257- (void)_setTableColumnWidths:(NSDictionary *)widths { 
     258        NSEnumerator    *enumerator; 
     259        NSString                *identifier; 
     260 
     261        if(!widths) 
     262                return; 
     263 
     264        enumerator = [widths keyEnumerator]; 
     265                 
     266        while((identifier = [enumerator nextObject])) 
     267                [[self _tableColumnWithIdentifier:identifier] setWidth:[widths doubleForKey:identifier]]; 
     268} 
     269 
     270 
     271 
     272- (NSDictionary *)_tableColumnWidths { 
     273        NSMutableDictionary             *widths; 
     274        NSEnumerator                    *enumerator; 
     275        NSTableColumn                   *tableColumn; 
     276         
     277        widths = [NSMutableDictionary dictionary]; 
     278        enumerator = [_allTableColumns objectEnumerator]; 
     279         
     280        while((tableColumn = [enumerator nextObject])) 
     281                [widths setDouble:[tableColumn width] forKey:[tableColumn identifier]]; 
     282         
     283        return widths; 
    251284} 
    252285 
     
    332365 
    333366- (void)_saveTableColumns { 
    334         NSString                *key; 
    335          
    336         key = [NSSWF:@"%@ %@ Columns", NSStringFromClass([_tableView class]), [_tableView autosaveName]]; 
    337         [[NSUserDefaults standardUserDefaults] setObject:[self _tableColumnIdentifiers] forKey:key]; 
     367        [[NSUserDefaults standardUserDefaults] setObject:[self _tableColumnIdentifiers] 
     368                                                                                          forKey:[NSSWF:@"WITableViewManager %@ Columns", [_tableView autosaveName]]]; 
     369 
     370        [[NSUserDefaults standardUserDefaults] setObject:[self _tableColumnWidths] 
     371                                                                                          forKey:[NSSWF:@"WITableViewManager %@ Widths", [_tableView autosaveName]]]; 
     372 
     373        [[NSUserDefaults standardUserDefaults] synchronize]; 
    338374} 
    339375 
     
    376412                [headerView release]; 
    377413        } 
     414         
     415        [[NSNotificationCenter defaultCenter] 
     416                addObserver:self 
     417                   selector:@selector(tableViewColumnDidMove:) 
     418                           name:NSTableViewColumnDidMoveNotification 
     419                         object:_tableView]; 
     420         
     421        [[NSNotificationCenter defaultCenter] 
     422                addObserver:self 
     423                   selector:@selector(tableViewColumnDidResize:) 
     424                           name:NSTableViewColumnDidResizeNotification 
     425                         object:_tableView]; 
    378426 
    379427        return self; 
     
    389437 
    390438        [super dealloc]; 
     439} 
     440 
     441 
     442 
     443#pragma mark - 
     444 
     445- (void)tableViewColumnDidMove:(NSNotification *)notification { 
     446        if([_tableView autosaveTableColumns]) 
     447                [self performSelectorOnce:@selector(_saveTableColumns) afterDelay:0.1]; 
     448} 
     449 
     450 
     451 
     452- (void)tableViewColumnDidResize:(NSNotification *)notification { 
     453        if([_tableView autosaveTableColumns]) 
     454                [self performSelectorOnce:@selector(_saveTableColumns) afterDelay:0.1]; 
    391455} 
    392456 
     
    617681                 
    618682                if([_tableView autosaveTableColumns]) 
    619                         [self performSelectorOnce:@selector(_saveTableColumns) afterDelay:1.0]; 
     683                        [self performSelectorOnce:@selector(_saveTableColumns) afterDelay:0.1]; 
    620684        } 
    621685} 
     
    634698 
    635699                if([_tableView autosaveTableColumns]) 
    636                         [self performSelectorOnce:@selector(_saveTableColumns) afterDelay:1.0]; 
     700                        [self performSelectorOnce:@selector(_saveTableColumns) afterDelay:0.1]; 
    637701        } 
    638702} 
     
    647711 
    648712- (void)setAutosaveTableColumns:(BOOL)value { 
    649         NSString                *key, *identifier; 
     713        NSString                *identifier; 
    650714        NSArray                 *columns; 
     715        NSDictionary    *widths; 
    651716        NSNumber                *sortOrder; 
    652717         
    653718        if(value) { 
    654                 key = [NSSWF:@"%@ %@ Columns", NSStringFromClass([_tableView class]), [_tableView autosaveName]]; 
    655                 columns = [[NSUserDefaults standardUserDefaults] arrayForKey:key]; 
     719                columns = [[NSUserDefaults standardUserDefaults] arrayForKey: 
     720                       [NSSWF:@"WITableViewManager %@ Columns", [_tableView autosaveName]]]; 
    656721                 
    657722                [self _setTableColumnIdentifiers:columns]; 
    658723 
    659                 key = [NSSWF:@"%@ %@ Selected Column", NSStringFromClass([_tableView class]), [_tableView autosaveName]]; 
    660                 identifier = [[NSUserDefaults standardUserDefaults] objectForKey:key]; 
    661                  
    662                 key = [NSSWF:@"%@ %@ Sort Order", NSStringFromClass([_tableView class]), [_tableView autosaveName]]; 
    663                 sortOrder = [[NSUserDefaults standardUserDefaults] objectForKey:key]; 
     724                widths = [[NSUserDefaults standardUserDefaults] dictionaryForKey: 
     725                        [NSSWF:@"WITableViewManager %@ Widths", [_tableView autosaveName]]]; 
     726                 
     727                [self _setTableColumnWidths:widths]; 
     728 
     729                identifier = [[NSUserDefaults standardUserDefaults] objectForKey: 
     730                        [NSSWF:@"WITableViewManager %@ Selected Column", [_tableView autosaveName]]]; 
     731                 
     732                sortOrder = [[NSUserDefaults standardUserDefaults] objectForKey: 
     733                        [NSSWF:@"WITableViewManager %@ Sort Order", [_tableView autosaveName]]]; 
    664734                 
    665735                [self _setHighlightedTableColumnIdentifier:identifier sortOrder:sortOrder]; 
     
    670740 
    671741- (void)setHighlightedTableColumn:(NSTableColumn *)tableColumn { 
    672         NSString        *key; 
    673742        NSImage         *image; 
    674743         
     
    683752         
    684753        if([_tableView autosaveTableColumns]) { 
    685                 key = [NSSWF:@"%@ %@ Selected Column", NSStringFromClass([_tableView class]), [_tableView autosaveName]]; 
    686                 [[NSUserDefaults standardUserDefaults] setObject:[tableColumn identifier] forKey:key]; 
    687                  
    688                 key = [NSSWF:@"%@ %@ Sort Order", NSStringFromClass([_tableView class]), [_tableView autosaveName]]; 
    689                 [[NSUserDefaults standardUserDefaults] setObject:[NSNumber numberWithInt:_sortOrder] forKey:key]; 
     754                [[NSUserDefaults standardUserDefaults] setObject:[tableColumn identifier] 
     755                                                                                                  forKey:[NSSWF:@"WITableViewManager %@ Selected Column", [_tableView autosaveName]]]; 
     756                 
     757                [[NSUserDefaults standardUserDefaults] setObject:[NSNumber numberWithInt:_sortOrder] 
     758                                                                                                  forKey:[NSSWF:@"WITableViewManager %@ Sort Order", [_tableView autosaveName]]]; 
     759 
     760                [[NSUserDefaults standardUserDefaults] synchronize]; 
    690761        } 
    691762         
     
    699770 
    700771- (void)setPropertiesFromDictionary:(NSDictionary *)dictionary { 
    701         NSEnumerator    *enumerator; 
    702         id                              columns, widths, identifier, sortOrder; 
     772        id              columns, widths, identifier, sortOrder; 
    703773         
    704774        if([self allowsUserCustomization]) 
     
    711781        widths = [dictionary objectForKey:@"_WITableView_widths"]; 
    712782         
    713         if(widths) { 
    714                 enumerator = [widths keyEnumerator]; 
    715                  
    716                 while((identifier = [enumerator nextObject])) 
    717                         [[self _tableColumnWithIdentifier:identifier] setWidth:[widths doubleForKey:identifier]]; 
    718         } 
     783        [self _setTableColumnWidths:widths]; 
    719784 
    720785        identifier = [dictionary objectForKey:@"_WITableView_highlightTableColumn_identifier"]; 
     
    726791 
    727792 
    728  
    729793- (NSDictionary *)propertiesDictionary { 
    730         NSMutableDictionary             *dictionary, *widths; 
    731         NSEnumerator                    *enumerator; 
     794        NSMutableDictionary             *dictionary; 
    732795        NSTableColumn                   *tableColumn; 
    733796         
     
    735798         
    736799        [dictionary setObject:[self _tableColumnIdentifiers] forKey:@"_WITableView_columns"]; 
     800        [dictionary setObject:[self _tableColumnWidths] forKey:@"_WITableView_widths"]; 
    737801        [dictionary setInt:_sortOrder forKey:@"_WITableView_sortOrder"]; 
    738802 
     
    741805        if(tableColumn) 
    742806                [dictionary setObject:[tableColumn identifier] forKey:@"_WITableView_highlightTableColumn_identifier"]; 
    743          
    744         widths = [NSMutableDictionary dictionary]; 
    745          
    746         enumerator = [_allTableColumns objectEnumerator]; 
    747          
    748         while((tableColumn = [enumerator nextObject])) 
    749                 [widths setDouble:[tableColumn width] forKey:[tableColumn identifier]]; 
    750          
    751         [dictionary setObject:widths forKey:@"_WITableView_widths"]; 
    752807                 
    753808        return dictionary; 
  • WiredAdditions/trunk/WIWindowController.m

    r3971 r3978  
    7676 
    7777- (void)_WI_windowDidMove:(NSNotification *)notification { 
    78         NSString        *key; 
    79          
    8078        if([_WI_windowFrameAutosaveName length] > 0) { 
    8179                if([self window] == [_WIWindowController_windows lastObject]) { 
    82                         key = [NSSWF:@"%@ %@ Frame", NSStringFromClass([self class]), _WI_windowFrameAutosaveName]; 
    83                          
    84                         [_WIWindowController_frames setObject:NSStringFromRect([[self window] frame]) forKey:key]; 
     80                        [_WIWindowController_frames setObject:NSStringFromRect([[self window] frame]) 
     81                                                                                   forKey:[NSSWF:@"WIWindowController %@ Frame", _WI_windowFrameAutosaveName]]; 
    8582                } 
    8683        } 
     
    104101         
    105102        if([_WI_windowFrameAutosaveName length] > 0) { 
    106                 key = [NSSWF:@"%@ %@ Frame", NSStringFromClass([self class]), _WI_windowFrameAutosaveName]; 
     103                key = [NSSWF:@"WIWindowController %@ Frame", _WI_windowFrameAutosaveName]; 
    107104                frame = [[NSUserDefaults standardUserDefaults] objectForKey:key]; 
    108105                size = [[self window] frame].size; 
     
    134131         
    135132                        [[self window] setFrame:rect display:NO]; 
     133                         
    136134                        [_WIWindowController_windows addObject:[self window]]; 
    137135                        [_WIWindowController_frames setObject:NSStringFromRect(rect) forKey:key]; 
     
    147145         
    148146        if([_WI_windowFrameAutosaveName length] > 0) { 
    149                 key = [NSSWF:@"%@ %@ Frame", NSStringFromClass([self class]), _WI_windowFrameAutosaveName]; 
    150147                rect = [[self window] frame]; 
    151148                 
     
    155152                } 
    156153                 
     154                key = [NSSWF:@"WIWindowController %@ Frame", _WI_windowFrameAutosaveName]; 
    157155                value = NSStringFromRect(rect); 
     156 
    158157                [[NSUserDefaults standardUserDefaults] setObject:value forKey:key]; 
     158                [[NSUserDefaults standardUserDefaults] synchronize]; 
     159 
    159160                [_WIWindowController_frames setObject:value forKey:key]; 
    160161        } 
  • WiredAdditions/trunk/WiredAdditions.xcodeproj/project.pbxproj

    r3973 r3978  
    427427                A5E4B33007A9752E00BD6812 /* NSImage-Baadge.tiff */ = {isa = PBXFileReference; lastKnownFileType = image.tiff; path = "NSImage-Baadge.tiff"; sourceTree = "<group>"; }; 
    428428                A5E4B33107A9752E00BD6812 /* NSImage-Baaadge.tiff */ = {isa = PBXFileReference; lastKnownFileType = image.tiff; path = "NSImage-Baaadge.tiff"; sourceTree = "<group>"; }; 
    429                 A5E4B39E07A9797200BD6812 /* WIAutoreleasePool Test.app */ = {isa = PBXFileReference; includeInIndex = 0; lastKnownFileType = wrapper.application; path = "WIAutoreleasePool Test.app"; sourceTree = BUILT_PRODUCTS_DIR; }; 
     429                A5E4B39E07A9797200BD6812 /* WIAutoreleasePool Test.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = "WIAutoreleasePool Test.app"; sourceTree = BUILT_PRODUCTS_DIR; }; 
    430430                A5E4B3E407A97A4900BD6812 /* Info.plist */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = text.xml; name = Info.plist; path = Tests/WIAutoreleasePool/Info.plist; sourceTree = "<group>"; }; 
    431431                A5E4B3EA07A97A5500BD6812 /* main.m */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.objc; name = main.m; path = Tests/WIAutoreleasePool/main.m; sourceTree = "<group>"; };