Update of /cvsroot/pgsqlformac/QueryTool In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv22407 Modified Files: ChangeLog SqlDocument.h SqlDocument.m TODO.txt Added Files: AppController.h AppController.m PreferenceController.h PreferenceController.m Log Message: Add preferences. Index: TODO.txt =================================================================== RCS file: /cvsroot/pgsqlformac/QueryTool/TODO.txt,v retrieving revision 1.6 retrieving revision 1.7 diff -C2 -d -r1.6 -r1.7 *** TODO.txt 13 Aug 2006 23:54:30 -0000 1.6 --- TODO.txt 30 Aug 2006 01:06:53 -0000 1.7 *************** *** 4,18 **** TODO - Features, Functions and Warnings (in priority order) ======================================= - - 2006-06-02 Column SQL not complete. - - 2006-06-02 Trigger SQL not complete. - 2006-06-16 Use new function to attempt to cancel a query in pgCocoaDB. Need to change to async queries. ! - 2006-06-24 Add command to clear SQL Log. ! - 2006-08-13 SQL Log does not contain enough information. - - 2006-08-13 Move Schema reading to another thread. Make it load in parallel. FIXME (Known Errors) --- 4,21 ---- TODO - Features, Functions and Warnings (in priority order) ======================================= - 2006-06-02 Trigger SQL not complete. - 2006-06-16 Use new function to attempt to cancel a query in pgCocoaDB. Need to change to async queries. ! - 2006-08-13 Move Schema reading to another thread. Make it load in parallel. ! - 2006-08-18 Message during schema load is misleading. ! ! - 2006-08-26 Add save log function. ! ! - 2006-08-26 Add buttons to log to window to clear log and control sql and info display. ! ! - 2006-08-26 Add explain query button. FIXME (Known Errors) *************** *** 21,28 **** 2006-06-22 13:20:17.480 Query Tool for Postgres[5590] Exception raised during posting of notification. Ignored. exception: *** -[NSBigMutableString characterAtIndex:]: Range or index out of bounds Completed ========= ! - 2006-08-13 Fix bug with incorrect release of explorer whil display was still using it. - 2006-08-13 Restructure ExplorerModel initWithConnection to respect display user defaults (ie setShowPGCatalog). --- 24,43 ---- 2006-06-22 13:20:17.480 Query Tool for Postgres[5590] Exception raised during posting of notification. Ignored. exception: *** -[NSBigMutableString characterAtIndex:]: Range or index out of bounds + 2006-08-26 Function return parameters not correctly determined, see below: + + CREATE or REPLACE FUNCTION pgcocoa_test_schema.create_time_stamp AS $$ + BEGIN + NEW.create_time := current_timestamp; + RETURN NEW; + END; + $$ LANGUAGE plpgsql; Completed ========= ! - 2006-08-13 SQL Log does not contain enough information. (8/24/2006) ! ! - 2006-08-24 SLQ log windows is not updating correctly. (8/24/2006) ! ! - 2006-08-13 Fix bug with incorrect release of explorer while display was still using it. - 2006-08-13 Restructure ExplorerModel initWithConnection to respect display user defaults (ie setShowPGCatalog). Index: ChangeLog =================================================================== RCS file: /cvsroot/pgsqlformac/QueryTool/ChangeLog,v retrieving revision 1.13 retrieving revision 1.14 diff -C2 -d -r1.13 -r1.14 *** ChangeLog 18 Aug 2006 17:46:01 -0000 1.13 --- ChangeLog 30 Aug 2006 01:06:53 -0000 1.14 *************** *** 1,2 **** --- 1,7 ---- + 2006-08-18 12:46 ntiffin + + * ChangeLog, MyOutlineView.m, SqlDocument.h, SqlDocument.m: Add + missing SQL formation routines. + 2006-08-13 18:54 ntiffin --- NEW FILE: AppController.m --- // // AppController.m // Query Tool for PostgresN // // Created by Neil Tiffin on 8/26/06. // Copyright 2006 Performance Champions, Inc.. All rights reserved. // #import "AppController.h" #import "PreferenceController.h" @implementation AppController -(IBAction)showPreferencePanel:(id)sender { if(!preferenceController) { preferenceController = [[PreferenceController alloc] init]; } [[preferenceController window] makeKeyAndOrderFront:self]; } -(void)dealloc { [preferenceController release]; [super dealloc]; } @end --- NEW FILE: PreferenceController.h --- // // PreferenceController.h // Query Tool for PostgresN // // Created by Neil Tiffin on 8/26/06. // Copyright 2006 Performance Champions, Inc.. All rights reserved. // #import <Cocoa/Cocoa.h> @interface PreferenceController : NSWindowController { IBOutlet NSButton *prefShowPGInfoSchema; IBOutlet NSButton *prefShowPGCatalogSchema; IBOutlet NSButton *prefShowPGToastSchema; IBOutlet NSButton *prefShowPGTempSchema; IBOutlet NSButton *prefShowPGPublicSchema; IBOutlet NSButton *prefLogAllSQL; IBOutlet NSButton *prefLogInfoMessages; IBOutlet NSTextField *prefPostgresqlHelpURL; IBOutlet NSTextField *prefPostgresqlSQLURL; } -(IBAction)defaultPreferences:(id)sender; -(IBAction)savePreferences:(id)sender; -(IBAction)cancelPreferences:(id)sender; @end --- NEW FILE: AppController.h --- // // AppController.h // Query Tool for PostgresN // // Created by Neil Tiffin on 8/26/06. // Copyright 2006 Performance Champions, Inc.. All rights reserved. // #import <Cocoa/Cocoa.h> @class PreferenceController; @interface AppController : NSObject { PreferenceController *preferenceController; } -(IBAction)showPreferencePanel:(id)sender; @end --- NEW FILE: PreferenceController.m --- // // PreferenceController.m // Query Tool for PostgresN // // Created by Neil Tiffin on 8/26/06. // Copyright 2006 Performance Champions, Inc.. All rights reserved. // #import "PreferenceController.h" @implementation PreferenceController -(id)init { self = [super initWithWindowNibName:@"Preferences"]; return self; } -(void)loadUserDefaults { NSUserDefaults * userDefaults = [NSUserDefaults standardUserDefaults]; if ([userDefaults boolForKey:@"PGSqlForMac_QueryTool_ShowInformationSchema"]) { [prefShowPGInfoSchema setState:NSOnState]; } else { [prefShowPGInfoSchema setState:NSOffState]; } if ([userDefaults boolForKey:@"PGSqlForMac_QueryTool_ShowPGCatalogSchema"]) { [prefShowPGCatalogSchema setState:NSOnState]; } else { [prefShowPGCatalogSchema setState:NSOffState]; } if ([userDefaults boolForKey:@"PGSqlForMac_QueryTool_ShowPGToastSchema"]) { [prefShowPGToastSchema setState:NSOnState]; } else { [prefShowPGToastSchema setState:NSOffState]; } if ([userDefaults boolForKey:@"PGSqlForMac_QueryTool_ShowPGTempsSchema"]) { [prefShowPGTempSchema setState:NSOnState]; } else { [prefShowPGTempSchema setState:NSOffState]; } if ([userDefaults boolForKey:@"PGSqlForMac_QueryTool_ShowPGPublicSchema"]) { [prefShowPGPublicSchema setState:NSOnState]; } else { [prefShowPGPublicSchema setState:NSOffState]; } if ([userDefaults boolForKey:@"PGSqlForMac_QueryTool_LogSQL"]) { [prefLogAllSQL setState:NSOnState]; } else { [prefLogAllSQL setState:NSOffState]; } if ([userDefaults boolForKey:@"PGSqlForMac_QueryTool_LogQueryInfo"]) { [prefLogInfoMessages setState:NSOnState]; } else { [prefLogInfoMessages setState:NSOffState]; } [prefPostgresqlHelpURL setStringValue:[userDefaults stringForKey:@"PGSqlForMac_QueryTool_ShowPostgreSQLHelp"]]; [prefPostgresqlSQLURL setStringValue:[userDefaults stringForKey:@"PGSqlForMac_QueryTool_ShowSQLCommandHelp"]]; } -(void)windowDidLoad { [self loadUserDefaults]; } -(IBAction)defaultPreferences:(id)sender { [prefShowPGInfoSchema setState:NSOnState]; [prefShowPGCatalogSchema setState:NSOnState]; [prefShowPGToastSchema setState:NSOffState]; [prefShowPGTempSchema setState:NSOffState]; [prefShowPGPublicSchema setState:NSOnState]; [prefLogAllSQL setState:NSOnState]; [prefLogInfoMessages setState:NSOnState]; [prefPostgresqlHelpURL setStringValue:@"file:///sw/share/doc/postgresql81/html/index.html"]; [prefPostgresqlSQLURL setStringValue:@"file:///sw/share/doc/postgresql81/html/sql-commands.html"]; } -(IBAction)savePreferences:(id)sender; { NSUserDefaults * userDefaults = [NSUserDefaults standardUserDefaults]; if ([prefShowPGInfoSchema state]) { [userDefaults setObject:@"yes" forKey:@"PGSqlForMac_QueryTool_ShowInformationSchema"]; } else { [userDefaults setObject:@"no" forKey:@"PGSqlForMac_QueryTool_ShowInformationSchema"]; } if ([prefShowPGCatalogSchema state]) { [userDefaults setObject:@"yes" forKey:@"PGSqlForMac_QueryTool_ShowPGCatalogSchema"]; } else { [userDefaults setObject:@"no" forKey:@"PGSqlForMac_QueryTool_ShowPGCatalogSchema"]; } if ([prefShowPGToastSchema state]) { [userDefaults setObject:@"yes" forKey:@"PGSqlForMac_QueryTool_ShowPGToastSchema"]; } else { [userDefaults setObject:@"no" forKey:@"PGSqlForMac_QueryTool_ShowPGToastSchema"]; } if ([prefShowPGTempSchema state]) { [userDefaults setObject:@"yes" forKey:@"PGSqlForMac_QueryTool_ShowPGTempsSchema"]; } else { [userDefaults setObject:@"no" forKey:@"PGSqlForMac_QueryTool_ShowPGTempsSchema"]; } if ([prefShowPGPublicSchema state]) { [userDefaults setObject:@"yes" forKey:@"PGSqlForMac_QueryTool_ShowPGPublicSchema"]; } else { [userDefaults setObject:@"no" forKey:@"PGSqlForMac_QueryTool_ShowPGPublicSchema"]; } if ([prefLogAllSQL state]) { [userDefaults setObject:@"yes" forKey:@"PGSqlForMac_QueryTool_LogSQL"]; } else { [userDefaults setObject:@"no" forKey:@"PGSqlForMac_QueryTool_LogSQL"]; } if ([prefLogInfoMessages state]) { [userDefaults setObject:@"yes" forKey:@"PGSqlForMac_QueryTool_LogQueryInfo"]; } else { [userDefaults setObject:@"no" forKey:@"PGSqlForMac_QueryTool_LogQueryInfo"]; } [userDefaults setObject:[prefPostgresqlHelpURL stringValue] forKey:@"PGSqlForMac_QueryTool_ShowPostgreSQLHelp"]; [userDefaults setObject:[prefPostgresqlSQLURL stringValue] forKey:@"PGSqlForMac_QueryTool_ShowSQLCommandHelp"]; [[NSUserDefaults standardUserDefaults] synchronize]; [[self window] close]; } -(IBAction)cancelPreferences:(id)sender; { [self loadUserDefaults]; [[self window] close]; } @end Index: SqlDocument.m =================================================================== RCS file: /cvsroot/pgsqlformac/QueryTool/SqlDocument.m,v retrieving revision 1.19 retrieving revision 1.20 diff -C2 -d -r1.19 -r1.20 *** SqlDocument.m 18 Aug 2006 17:46:01 -0000 1.19 --- SqlDocument.m 30 Aug 2006 01:06:53 -0000 1.20 *************** *** 32,36 **** [userDefaults setObject:@"no" forKey:@"PGSqlForMac_QueryTool_ShowPGTempsSchema"]; } ! if ([userDefaults stringForKey:@"PGSqlForMac_QueryTool_SchemaTableFontName"] == nil) { --- 32,49 ---- [userDefaults setObject:@"no" forKey:@"PGSqlForMac_QueryTool_ShowPGTempsSchema"]; } ! if ([userDefaults stringForKey:@"PGSqlForMac_QueryTool_ShowPGPublicSchema"] == nil) ! { ! [userDefaults setObject:@"yes" forKey:@"PGSqlForMac_QueryTool_ShowPGPublicSchema"]; ! } ! if ([userDefaults stringForKey:@"PGSqlForMac_QueryTool_LogSQL"] == nil) ! { ! [userDefaults setObject:@"yes" forKey:@"PGSqlForMac_QueryTool_LogSQL"]; ! } ! if ([userDefaults stringForKey:@"PGSqlForMac_QueryTool_LogQueryInfo"] == nil) ! { ! [userDefaults setObject:@"yes" forKey:@"PGSqlForMac_QueryTool_LogQueryInfo"]; ! } ! ! if ([userDefaults stringForKey:@"PGSqlForMac_QueryTool_SchemaTableFontName"] == nil) { *************** *** 192,195 **** --- 205,209 ---- /* read the preferences and add them to the drop downs */ NSString * aDefault; + UNUSED_PARAMETER(sender); [status setStringValue:[NSString stringWithString:@"Waiting for connection information"]]; *************** *** 234,237 **** --- 248,252 ---- { // make sure we have a connection object + UNUSED_PARAMETER(sender); if (conn != nil) { *************** *** 302,305 **** --- 317,321 ---- - (IBAction)onShowPostgreSQLHTML:(id) sender { + UNUSED_PARAMETER(sender); NSUserDefaults * userDefaults = [NSUserDefaults standardUserDefaults]; [[NSWorkspace sharedWorkspace] openURL:[NSURL URLWithString:[userDefaults stringForKey:@"PGSqlForMac_QueryTool_ShowPostgreSQLHelp"]]]; *************** *** 309,312 **** --- 325,329 ---- - (IBAction)onShowSQLHTML:(id) sender { + UNUSED_PARAMETER(sender); NSUserDefaults * userDefaults = [NSUserDefaults standardUserDefaults]; [[NSWorkspace sharedWorkspace] openURL:[NSURL URLWithString:[userDefaults stringForKey:@"PGSqlForMac_QueryTool_ShowSQLCommandHelp"]]]; *************** *** 316,319 **** --- 333,337 ---- -(IBAction) setSchemaViewFont:(id) sender { + UNUSED_PARAMETER(sender); NSFontPanel *myFontPanel =[NSFontPanel sharedFontPanel]; *************** *** 328,331 **** --- 346,350 ---- -(IBAction) setDataOutputViewFont:(id) sender { + UNUSED_PARAMETER(sender); NSFontPanel *myFontPanel =[NSFontPanel sharedFontPanel]; *************** *** 340,343 **** --- 359,363 ---- -(IBAction) setSQLLogViewFont:(id) sender { + UNUSED_PARAMETER(sender); NSFontPanel *myFontPanel =[NSFontPanel sharedFontPanel]; [sqlLogPanelTextView setUsesFontPanel:YES]; *************** *** 354,357 **** --- 374,378 ---- - (IBAction)onConnectCancel:(id)sender { + UNUSED_PARAMETER(sender); [NSApp stopModal]; [NSApp endSheet:panelConnect]; *************** *** 363,366 **** --- 384,388 ---- - (IBAction)onDisconnect:(id)sender { + UNUSED_PARAMETER(sender); if ([conn isConnected]) *************** *** 419,427 **** //NSString *sql = [arrQuery objectAtIndex:x]; //RecordSet *rs = [conn execQuery:sql]; ! RecordSet *rs = [conn execQuery:toBeRun]; if ([conn sqlLog] != nil) { //[[[textView textStorage] mutableString] appendString: string]; ! NSRange myRange = NSMakeRange([[sqlLogPanelTextView textStorage] length], 0); [[sqlLogPanelTextView textStorage] replaceCharactersInRange:myRange withString:[conn sqlLog]]; } --- 441,449 ---- //NSString *sql = [arrQuery objectAtIndex:x]; //RecordSet *rs = [conn execQuery:sql]; ! RecordSet *rs = [conn execQueryLogInfoLogSQL:toBeRun]; if ([conn sqlLog] != nil) { //[[[textView textStorage] mutableString] appendString: string]; ! NSRange myRange = NSMakeRange(0, [[sqlLogPanelTextView textStorage] length]); [[sqlLogPanelTextView textStorage] replaceCharactersInRange:myRange withString:[conn sqlLog]]; } *************** *** 498,501 **** --- 520,524 ---- - (IBAction)onSetDatabase:(id)sender { + UNUSED_PARAMETER(sender); //NSLog(@"Enter onSetDatabase"); if ([conn isConnected]) *************** *** 536,539 **** --- 559,563 ---- - (IBAction)onShowSQLLog:(id)sender { + UNUSED_PARAMETER(sender); if ([sqlLogPanel isVisible] != 0) { *************** *** 547,550 **** --- 571,575 ---- - (void)onSelectSelectTableMenuItem:(id)sender { + UNUSED_PARAMETER(sender); NSIndexSet *theRows =[schemaView selectedRowIndexes]; unsigned int currentRow =[theRows firstIndex]; *************** *** 559,562 **** --- 584,588 ---- - (void)onSelectCreateTableMenuItem:(id)sender { + UNUSED_PARAMETER(sender); NSIndexSet *theRows =[schemaView selectedRowIndexes]; unsigned int currentRow =[theRows firstIndex]; *************** *** 571,574 **** --- 597,601 ---- - (void)onSelectCreateBakTableMenuItem:(id)sender { + UNUSED_PARAMETER(sender); NSIndexSet *theRows =[schemaView selectedRowIndexes]; unsigned int currentRow =[theRows firstIndex]; *************** *** 586,589 **** --- 613,617 ---- - (void)onSelectAlterTableRenameMenuItem:(id)sender { + UNUSED_PARAMETER(sender); NSIndexSet *theRows =[schemaView selectedRowIndexes]; unsigned int currentRow =[theRows firstIndex]; *************** *** 598,601 **** --- 626,630 ---- - (void)onSelectVacuumTableMenuItem:(id)sender { + UNUSED_PARAMETER(sender); NSIndexSet *theRows =[schemaView selectedRowIndexes]; unsigned int currentRow =[theRows firstIndex]; *************** *** 610,613 **** --- 639,643 ---- - (void)onSelectTruncateTableMenuItem:(id)sender { + UNUSED_PARAMETER(sender); NSIndexSet *theRows =[schemaView selectedRowIndexes]; unsigned int currentRow =[theRows firstIndex]; *************** *** 622,625 **** --- 652,656 ---- - (void)onSelectDropTableMenuItem:(id)sender { + UNUSED_PARAMETER(sender); NSIndexSet *theRows =[schemaView selectedRowIndexes]; unsigned int currentRow =[theRows firstIndex]; *************** *** 636,639 **** --- 667,671 ---- - (void)onSelectColSelectMenuItem:(id)sender { + UNUSED_PARAMETER(sender); NSIndexSet *theRows =[schemaView selectedRowIndexes]; unsigned currentIndex = [theRows firstIndex]; *************** *** 661,664 **** --- 693,697 ---- - (void)onSelectColsMenuItem:(id)sender { + UNUSED_PARAMETER(sender); NSIndexSet *theRows =[schemaView selectedRowIndexes]; bool first = true; *************** *** 680,683 **** --- 713,717 ---- - (void)onSelectCreateIndexOnColsMenuItem:(id)sender { + UNUSED_PARAMETER(sender); NSIndexSet *theRows =[schemaView selectedRowIndexes]; unsigned currentIndex = [theRows firstIndex]; *************** *** 706,709 **** --- 740,744 ---- - (void)onSelectCreateUniqIndexOnColsMenuItem:(id)sender { + UNUSED_PARAMETER(sender); NSIndexSet *theRows =[schemaView selectedRowIndexes]; unsigned currentIndex = [theRows firstIndex]; *************** *** 735,738 **** --- 770,774 ---- - (void)onSelectAlterTabAlterColMenuItem:(id)sender { + UNUSED_PARAMETER(sender); BOOL first = true; NSIndexSet *theRows =[schemaView selectedRowIndexes]; *************** *** 761,764 **** --- 797,801 ---- - (void)onSelectAlterAddColMenuItem:(id)sender { + UNUSED_PARAMETER(sender); BOOL first = true; NSIndexSet *theRows =[schemaView selectedRowIndexes]; *************** *** 787,790 **** --- 824,828 ---- - (void)onSelectAlterRenameColMenuItem:(id)sender { + UNUSED_PARAMETER(sender); BOOL first = true; NSIndexSet *theRows =[schemaView selectedRowIndexes]; *************** *** 812,815 **** --- 850,854 ---- - (void)onSelectCreateTabColsMenuItem:(id)sender { + UNUSED_PARAMETER(sender); NSIndexSet *theRows =[schemaView selectedRowIndexes]; unsigned currentIndex = [theRows firstIndex]; *************** *** 839,842 **** --- 878,882 ---- - (void)onSelectDropColMenuItem:(id)sender { + UNUSED_PARAMETER(sender); BOOL first = true; NSIndexSet *theRows =[schemaView selectedRowIndexes]; *************** *** 865,868 **** --- 905,909 ---- - (void)onSelectCreateViewMenuItem:(id)sender { + UNUSED_PARAMETER(sender); NSIndexSet *theRows =[schemaView selectedRowIndexes]; unsigned int currentRow =[theRows firstIndex]; *************** *** 878,881 **** --- 919,923 ---- - (void)onSelectCreateViewTemplateMenuItem:(id)sender { + UNUSED_PARAMETER(sender); NSIndexSet *theRows =[schemaView selectedRowIndexes]; unsigned int currentRow =[theRows firstIndex]; *************** *** 889,897 **** - (void)onSelectDropViewMenuItem:(id)sender { NSIndexSet *theRows =[schemaView selectedRowIndexes]; unsigned int currentRow =[theRows firstIndex]; NSString *tableName = [[schemaView itemAtRow:currentRow] baseTable]; NSString *schemaName = [[schemaView itemAtRow:currentRow] baseSchema]; ! NSString *sql = [NSString stringWithFormat:@"DROP VIEW %@.%@;\n", schemaName, tableName]; [query insertText:sql]; --- 931,941 ---- - (void)onSelectDropViewMenuItem:(id)sender { + UNUSED_PARAMETER(sender); NSIndexSet *theRows =[schemaView selectedRowIndexes]; unsigned int currentRow =[theRows firstIndex]; NSString *tableName = [[schemaView itemAtRow:currentRow] baseTable]; NSString *schemaName = [[schemaView itemAtRow:currentRow] baseSchema]; ! //UNUSED_PARAMETER(sender); ! NSString *sql = [NSString stringWithFormat:@"DROP VIEW %@.%@;\n", schemaName, tableName]; [query insertText:sql]; *************** *** 901,904 **** --- 945,949 ---- - (void)onSelectCreateFunctionMenuItem:(id)sender { + UNUSED_PARAMETER(sender); NSIndexSet *theRows =[schemaView selectedRowIndexes]; unsigned int currentRow =[theRows firstIndex]; *************** *** 914,917 **** --- 959,963 ---- - (void)onSelectCreateFunctionTemplateMenuItem:(id)sender { + UNUSED_PARAMETER(sender); NSIndexSet *theRows =[schemaView selectedRowIndexes]; unsigned int currentRow =[theRows firstIndex]; *************** *** 937,940 **** --- 983,987 ---- - (void)onSelectDropFunctionMenuItem:(id)sender { + UNUSED_PARAMETER(sender); NSIndexSet *theRows =[schemaView selectedRowIndexes]; unsigned int currentRow =[theRows firstIndex]; *************** *** 951,954 **** --- 998,1002 ---- - (void)onSelectDropIndexMenuItem:(id)sender { + UNUSED_PARAMETER(sender); NSIndexSet *theRows =[schemaView selectedRowIndexes]; unsigned int currentRow =[theRows firstIndex]; *************** *** 1070,1072 **** --- 1118,1121 ---- } + @end Index: SqlDocument.h =================================================================== RCS file: /cvsroot/pgsqlformac/QueryTool/SqlDocument.h,v retrieving revision 1.12 retrieving revision 1.13 diff -C2 -d -r1.12 -r1.13 *** SqlDocument.h 18 Aug 2006 17:46:01 -0000 1.12 --- SqlDocument.h 30 Aug 2006 01:06:53 -0000 1.13 *************** *** 15,18 **** --- 15,20 ---- #import "MyResultsView.h" + @class PreferenceController; + @interface SqlDocument : NSDocument { *************** *** 48,51 **** --- 50,54 ---- ExplorerModel *explorer; // ref to schema outline view data source + // Non-Gui NSString *fileContent; NSData *fileData; *************** *** 118,120 **** --- 121,125 ---- - (void)colorRange:(NSRange)rangeToColor; + #define UNUSED_PARAMETER(x) (void)(x) + @end |