mirror of
https://github.com/gnustep/libs-gui.git
synced 2025-04-23 12:00:52 +00:00
Implemented autosaving table columns (position and width)
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/gui/trunk@10760 72102866-910b-0410-8b05-ffd578937521
This commit is contained in:
parent
4be92d5f27
commit
52940b9bdd
1 changed files with 105 additions and 6 deletions
|
@ -234,6 +234,8 @@ _isCellEditable (id delegate, NSArray *tableColumns,
|
|||
column: (int)column;
|
||||
- (BOOL) _editPreviousEditableCellBeforeRow: (int)row
|
||||
column: (int)column;
|
||||
- (void) _autosaveTableColumns;
|
||||
- (void) _autoloadTableColumns;
|
||||
@end
|
||||
|
||||
@implementation NSTableView
|
||||
|
@ -289,6 +291,13 @@ _isCellEditable (id delegate, NSArray *tableColumns,
|
|||
RELEASE (_selectedRows);
|
||||
TEST_RELEASE (_headerView);
|
||||
TEST_RELEASE (_cornerView);
|
||||
if (_autosaveTableColumns == YES)
|
||||
{
|
||||
[nc removeObserver: self
|
||||
name: NSTableViewColumnDidResizeNotification
|
||||
object: self];
|
||||
}
|
||||
TEST_RELEASE (_autosaveName);
|
||||
if (_numberOfColumns > 0)
|
||||
{
|
||||
NSZoneFree (NSDefaultMallocZone (), _columnOrigins);
|
||||
|
@ -482,6 +491,8 @@ _isCellEditable (id delegate, NSArray *tableColumns,
|
|||
[nc postNotificationName: NSTableViewColumnDidMoveNotification
|
||||
object: self
|
||||
userInfo: dict];
|
||||
|
||||
[self _autosaveTableColumns];
|
||||
}
|
||||
|
||||
- (NSArray *) tableColumns
|
||||
|
@ -2715,24 +2726,42 @@ byExtendingSelection: (BOOL)flag
|
|||
|
||||
- (NSString *) autosaveName
|
||||
{
|
||||
// TODO
|
||||
return nil;
|
||||
return _autosaveName;
|
||||
}
|
||||
|
||||
- (BOOL) autosaveTableColumns
|
||||
{
|
||||
// TODO
|
||||
return NO;
|
||||
return _autosaveTableColumns;
|
||||
}
|
||||
|
||||
- (void) setAutosaveName: (NSString *)name
|
||||
{
|
||||
// TODO
|
||||
ASSIGN (_autosaveName, name);
|
||||
[self _autoloadTableColumns];
|
||||
}
|
||||
|
||||
- (void) setAutosaveTableColumns: (BOOL)flag
|
||||
{
|
||||
// TODO
|
||||
if (flag == _autosaveTableColumns)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
if (flag)
|
||||
{
|
||||
[self _autoloadTableColumns];
|
||||
[nc addObserver: self
|
||||
selector: @selector(_autosaveTableColumns)
|
||||
name: NSTableViewColumnDidResizeNotification
|
||||
object: self];
|
||||
}
|
||||
else
|
||||
{
|
||||
[nc removeObserver: self
|
||||
name: NSTableViewColumnDidResizeNotification
|
||||
object: self];
|
||||
}
|
||||
_autosaveTableColumns = flag;
|
||||
}
|
||||
|
||||
/*
|
||||
|
@ -2951,4 +2980,74 @@ byExtendingSelection: (BOOL)flag
|
|||
}
|
||||
return NO;
|
||||
}
|
||||
- (void) _autosaveTableColumns
|
||||
{
|
||||
if (_autosaveTableColumns && _autosaveName != nil)
|
||||
{
|
||||
NSUserDefaults *defaults;
|
||||
NSString *tableKey;
|
||||
NSMutableDictionary *config;
|
||||
NSTableColumn *column;
|
||||
id en;
|
||||
|
||||
defaults = [NSUserDefaults standardUserDefaults];
|
||||
tableKey = [NSString stringWithFormat: @"Table Columns %@",
|
||||
_autosaveName];
|
||||
config = [NSMutableDictionary new];
|
||||
|
||||
en = [[self tableColumns] objectEnumerator];
|
||||
while ((column = [en nextObject]) != nil)
|
||||
{
|
||||
NSArray *array;
|
||||
NSNumber *width, *identNum;
|
||||
NSObject *ident;
|
||||
|
||||
width = [NSNumber numberWithInt: [column width]];
|
||||
ident = [column identifier];
|
||||
identNum = [NSNumber numberWithInt: [self columnWithIdentifier:
|
||||
ident]];
|
||||
array = [NSArray arrayWithObjects: width, identNum, nil];
|
||||
[config setObject: array forKey: ident];
|
||||
}
|
||||
[defaults setObject: config forKey: tableKey];
|
||||
[defaults synchronize];
|
||||
RELEASE (config);
|
||||
}
|
||||
}
|
||||
|
||||
- (void) _autoloadTableColumns
|
||||
{
|
||||
if (_autosaveTableColumns && _autosaveName != nil)
|
||||
{
|
||||
NSUserDefaults *defaults;
|
||||
NSDictionary *config;
|
||||
NSString *tableKey;
|
||||
|
||||
defaults = [NSUserDefaults standardUserDefaults];
|
||||
tableKey = [NSString stringWithFormat: @"Table Columns %@",
|
||||
_autosaveName];
|
||||
config = [defaults objectForKey: tableKey];
|
||||
if (config != nil)
|
||||
{
|
||||
NSEnumerator *en = [[config allKeys] objectEnumerator];
|
||||
NSString *colKey;
|
||||
NSArray *colDesc;
|
||||
NSTableColumn *col;
|
||||
|
||||
while ((colKey = [en nextObject]) != nil)
|
||||
{
|
||||
col = [self tableColumnWithIdentifier: colKey];
|
||||
|
||||
if (col != nil)
|
||||
{
|
||||
colDesc = [config objectForKey: colKey];
|
||||
[col setWidth: [[colDesc objectAtIndex: 0] intValue]];
|
||||
[self moveColumn: [self columnWithIdentifier: colKey]
|
||||
toColumn: [[colDesc objectAtIndex: 1] intValue]];
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@end /* implementation of NSTableView */
|
||||
|
|
Loading…
Reference in a new issue