discuss-gnustep
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: NSTableView persistence PATCH - file


From: Marko Mikulicic
Subject: Re: NSTableView persistence PATCH - file
Date: Tue, 21 Aug 2001 00:39:00 -0400
User-agent: Mozilla/5.0 (X11; U; Linux i686; en-US; rv:0.9.3) Gecko/20010801

Oops!


diff -r -C 2 gui.orig/Headers/gnustep/gui/NSTableView.h 
gui/Headers/gnustep/gui/NSTableView.h
*** gui.orig/Headers/gnustep/gui/NSTableView.h  Mon Aug 13 11:08:49 2001
--- gui/Headers/gnustep/gui/NSTableView.h       Mon Aug 20 21:22:38 2001
***************
*** 94,97 ****
--- 94,100 ----
       tile at the end */
    BOOL   _tilingDisabled;
+ 
+   NSString *_autosaveName;
+   BOOL _autosaveTableColumns;
  }
  
diff -r -C 2 gui.orig/Source/NSTableView.m gui/Source/NSTableView.m
*** gui.orig/Source/NSTableView.m       Mon Aug 13 11:06:53 2001
--- gui/Source/NSTableView.m    Tue Aug 21 00:35:19 2001
***************
*** 43,46 ****
--- 43,48 ----
  static NSNotificationCenter *nc = nil;
  
+ static NSString *NSTableViewColumnsKey = @"NSTableViewColumns";
+ 
  /* The selection arrays are stored so that the selected columns/rows
     are always in ascending order.  The following function is used
***************
*** 232,235 ****
--- 234,238 ----
  - (BOOL) _editPreviousEditableCellBeforeRow: (int)row
                                     column: (int)column;
+ - (void) _autosaveTableColumns;
  @end
  
***************
*** 274,277 ****
--- 277,288 ----
    _cornerView = [GSTableCornerView new];
    [self tile];
+ 
+   // persistence
+   [nc addObserver: self 
+       selector: @selector(_autosaveTableColumns)
+       name: NSTableViewColumnDidResizeNotification
+       object: self];
+   NSLog(@"added persistence observer");
+ 
    return self;
  }
***************
*** 287,290 ****
--- 298,302 ----
    TEST_RELEASE (_headerView);
    TEST_RELEASE (_cornerView);
+   TEST_RELEASE (_autosaveName);
    if (_numberOfColumns > 0)
      {
***************
*** 481,484 ****
--- 493,498 ----
      object: self
      userInfo: dict];
+ 
+   [self _autosaveTableColumns];
  }
  
***************
*** 1880,1883 ****
--- 1894,1898 ----
    if (rowIndex >= _numberOfRows)
      {
+     NSLog(@"RowIndex = %d, numrows = %d",rowIndex,_numberOfRows);
        [NSException 
        raise: NSInternalInconsistencyException 
***************
*** 2708,2729 ****
  - (NSString *) autosaveName
  {
!   // TODO
!   return nil;
  }
  
  - (BOOL) autosaveTableColumns
  {
!   // TODO
!   return NO;
  }
  
  - (void) setAutosaveName: (NSString *)name
  {
!   // TODO
  }
  
  - (void) setAutosaveTableColumns: (BOOL)flag
  {
!   // TODO
  }
  
--- 2723,2800 ----
  - (NSString *) autosaveName
  {
!   return _autosaveName;
  }
  
  - (BOOL) autosaveTableColumns
  {
!   return _autosaveTableColumns;
  }
  
  - (void) setAutosaveName: (NSString *)name
  {
!   _autosaveName = RETAIN(name);
  }
  
  - (void) setAutosaveTableColumns: (BOOL)flag
  {
!   if(flag == YES && flag != _autosaveTableColumns && _autosaveName != nil) {  
// read
!     NSUserDefaults    *defaults;
!     NSDictionary      *columnsConfig;
!     NSDictionary        *config;
! 
!     defaults  = [NSUserDefaults standardUserDefaults];
!     columnsConfig = [defaults objectForKey: NSTableViewColumnsKey];
!     if(columnsConfig != nil) {
!       config = [columnsConfig objectForKey: _autosaveName];
!       if(config != nil) {
!       NSEnumerator *en = [[config allKeys] objectEnumerator];
!       NSString *colKey;
!       NSArray *colDesc; 
!       NSTableColumn *col;
! 
!       while((colKey = [en nextObject])) {
!         if((col = [self tableColumnWithIdentifier: colKey])) {
!           colDesc = [config objectForKey: colKey];
!           [col setWidth: [[colDesc objectAtIndex: 0] intValue]];
!           [self moveColumn: [self columnWithIdentifier: colKey]
!                 toColumn: [[colDesc objectAtIndex: 1] intValue]];
!         }
!       }
!       }
!     }
!   }
!   _autosaveTableColumns = flag;
! }
! 
! - (void) _autosaveTableColumns
! {
!   if(_autosaveTableColumns && _autosaveName != nil) {
!     NSUserDefaults      *defaults;
!     NSMutableDictionary *columnsConfig;
!     NSMutableDictionary *config;
!     NSTableColumn       *column;
!     id                  en;
! 
!     defaults  = [NSUserDefaults standardUserDefaults];
! 
!     columnsConfig = [[defaults objectForKey: NSTableViewColumnsKey] 
mutableCopy];
!     if(columnsConfig == nil) 
!       columnsConfig = [NSMutableDictionary new];
! 
!     config = [[columnsConfig objectForKey: _autosaveName] mutableCopy];
!     if(config == nil)
!       config = [NSMutableDictionary new];
!     
!     en = [[self tableColumns] objectEnumerator];
!     while((column = [en nextObject])) 
!       [config setObject: [NSArray arrayWithObjects:  [NSNumber numberWithInt: 
[column width]],
!                                 [NSNumber numberWithInt: [self 
columnWithIdentifier: [column identifier]]],nil]
!             forKey: [column identifier]];      
! 
!     [columnsConfig setObject: config forKey: _autosaveName];
!     [defaults setObject: columnsConfig forKey: NSTableViewColumnsKey];
!     [defaults synchronize];
!     NSLog(@"columns saved");
!   } 
  }
  

reply via email to

[Prev in Thread] Current Thread [Next in Thread]