From: Andrew M. <fit...@us...> - 2006-08-31 04:26:00
|
Update of /cvsroot/radmind/radmind-assistant/rte In directory sc8-pr-cvs9.sourceforge.net:/tmp/cvs-serv7382 Modified Files: RXPrefs.h RXPrefs.m Log Message: Filter saving methods. Index: RXPrefs.m =================================================================== RCS file: /cvsroot/radmind/radmind-assistant/rte/RXPrefs.m,v retrieving revision 1.10 retrieving revision 1.11 diff -C2 -d -r1.10 -r1.11 *** RXPrefs.m 29 Aug 2006 01:28:54 -0000 1.10 --- RXPrefs.m 31 Aug 2006 04:25:57 -0000 1.11 *************** *** 31,34 **** --- 31,37 ---- #include <Security/AuthorizationDB.h> + #include <sys/types.h> + #include <sys/stat.h> + #include "sessionrights.h" *************** *** 60,72 **** } - - ( void )observeValueForKeyPath: ( NSString * )keyPath - ofObject: ( id )object change: ( NSDictionary * )change - context: ( void * )context - { - NSLog( @"keyPath: %@", keyPath ); - NSLog( @"object: %@", object ); - NSLog( @"%@", [ object valueForKeyPath: keyPath ] ); - } - - ( void )toolbarSetup { --- 63,66 ---- *************** *** 83,87 **** - ( void )awakeFromNib ! { [ self toolbarSetup ]; [ self showGeneralPreferences: nil ]; --- 77,81 ---- - ( void )awakeFromNib ! { [ self toolbarSetup ]; [ self showGeneralPreferences: nil ]; *************** *** 95,103 **** } - [ filterController addObserver: self - forKeyPath: @"arrangedObjects.filterName" - options: 0 - context: NULL ]; - [ prefPanel center ]; } --- 89,92 ---- *************** *** 217,220 **** --- 206,217 ---- } + - ( IBAction )saveSelection: ( id )sender + { + NSArray *objects = [ filterController selectedObjects ]; + id object = [ objects objectAtIndex: 0 ]; + + [ self saveFilter: object overwrite: YES ]; + } + - ( void )showAdvancedPreferences: ( id )sender { *************** *** 261,264 **** --- 258,266 ---- } + - ( id )transcriptFilterController + { + return( filterController ); + } + /* advanced preferences */ - ( IBAction )toggleSessionRights: ( id )sender *************** *** 309,311 **** --- 311,425 ---- } + #pragma mark RTEEditableTableView delegate methods + + - ( BOOL )handleChangedText: ( NSString * )text + forTable: ( NSTableView * )table + column: ( int )column + { + id editedObject; + int row = [ table editedRow ]; + + if ( text == nil || [ text length ] == 0 ) { + return( NO ); + } + + if ( row < 0 && row >= [[ filterController arrangedObjects ] count ] ) { + return( NO ); + } + + editedObject = [[ filterController arrangedObjects ] objectAtIndex: row ]; + if ( [ editedObject objectForKey: @"filterName" ] == nil ) { + return( NO ); + } + + [ self saveFilter: editedObject overwrite: NO ]; + + return( YES ); + } + + - ( void )tableView: ( NSTableView * )tableview willDisplayCell: ( id )cell + forTableColumn: ( NSTableColumn * )column row: ( int )row + { + id object, tmp; + + if ( row < 0 || row >= [[ filterController arrangedObjects ] count ] ) { + return; + } + + object = [[ filterController arrangedObjects ] objectAtIndex: row ]; + tmp = [ object objectForKey: @"immutable" ]; + + if ( tmp && [ tmp isKindOfClass: [ NSNumber class ]] && + [ tmp boolValue ] == YES ) { + [ cell setEditable: NO ]; + } + } + + #pragma mark Filter methods + + - ( BOOL )saveFilter: ( id )filter overwrite: ( BOOL )overwrite + { + NSString *savedPath; + id tmp; + BOOL exists = NO; + unsigned int i = 1; + + if ( floor( NSAppKitVersionNumber ) <= NSAppKitVersionNumber10_3 ) { + /* 10.3 doesn't have NSApplicationSupportDirectory defined */ + tmp = [ NSArray arrayWithObject: + [ @"~/Library/Application Support" stringByExpandingTildeInPath ]]; + } else { + tmp = NSSearchPathForDirectoriesInDomains( + NSApplicationSupportDirectory, NSUserDomainMask, YES ); + } + + savedPath = [[ tmp objectAtIndex: 0 ] stringByAppendingPathComponent: + @"Radmind Transcript Editor" ]; + if ( mkdir( [ savedPath UTF8String ], 0777 ) != 0 ) { + if ( errno != EEXIST ) { + /* XXX NSError subclass here */ + NSLog( @"mkdir %@: %s", savedPath, strerror( errno )); + return( NO ); + } + } + savedPath = [ savedPath stringByAppendingPathComponent: @"Filters" ]; + if ( mkdir( [ savedPath UTF8String ], 0777 ) != 0 ) { + if ( errno != EEXIST ) { + /* XXX NSError subclass here */ + NSLog( @"mkdir %@: %s", savedPath, strerror( errno )); + return( NO ); + } + } + + do { + savedPath = [[ tmp objectAtIndex: 0 ] stringByAppendingPathComponent: + @"Radmind Transcript Editor" ]; + savedPath = [ savedPath stringByAppendingPathComponent: @"Filters" ]; + savedPath = [ savedPath stringByAppendingPathComponent: + [ filter objectForKey: @"filterName" ]]; + if ( exists ) { + savedPath = [ savedPath stringByAppendingString: + [ NSString stringWithFormat: @" %u", i++ ]]; + } + exists = [[ NSFileManager defaultManager ] fileExistsAtPath: + [ savedPath stringByAppendingPathExtension: + @"transcriptFilter" ]]; + } while ( !overwrite && exists ); + + savedPath = [ savedPath stringByAppendingPathExtension: + @"transcriptFilter" ]; + + tmp = [[ savedPath lastPathComponent ] stringByDeletingPathExtension ]; + [ filter setObject: tmp forKey: @"filterName" ]; + if ( ![ filter writeToFile: savedPath atomically: YES ] ) { + /* XXX improved error handling, import NSError subclass */ + NSLog( @"Couldn't save %@", savedPath ); + return( NO ); + } + + [ filterController rearrangeObjects ]; + + return( YES ); + } + @end Index: RXPrefs.h =================================================================== RCS file: /cvsroot/radmind/radmind-assistant/rte/RXPrefs.h,v retrieving revision 1.10 retrieving revision 1.11 diff -C2 -d -r1.10 -r1.11 *** RXPrefs.h 29 Aug 2006 01:28:54 -0000 1.10 --- RXPrefs.h 31 Aug 2006 04:25:57 -0000 1.11 *************** *** 50,59 **** --- 50,64 ---- - ( void )displayPreferencesPane; + - ( id )transcriptFilterController; - ( void )showGeneralPreferences: ( id )sender; - ( void )showAdvancedPreferences: ( id )sender; + - ( IBAction )saveSelection: ( id )sender; + /* advanced preferences actions */ - ( IBAction )toggleSessionRights: ( id )sender; - ( IBAction )setAuthorizationTimeout: ( id )sender; + - ( BOOL )saveFilter: ( id )filter overwrite: ( BOOL )overwrite; + @end |