1#include "GormHeadersPref.h" 2 3#include <Foundation/NSUserDefaults.h> 4 5#include <AppKit/NSButton.h> 6#include <AppKit/NSTableView.h> 7#include <AppKit/NSWindow.h> 8#include <AppKit/NSNibLoading.h> 9#include <AppKit/NSOpenPanel.h> 10#include <AppKit/NSStringDrawing.h> 11 12// data source... 13@interface HeaderDataSource : NSObject 14@end 15 16@implementation HeaderDataSource 17- (NSInteger) numberOfRowsInTableView: (NSTableView *)tv 18{ 19 NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults]; 20 NSArray *list = [defaults objectForKey: @"HeaderList"]; 21 return [list count]; 22} 23 24- (id) tableView: (NSTableView *)tv 25objectValueForTableColumn: (NSTableColumn *)tc 26 row: (NSInteger)rowIndex 27{ 28 NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults]; 29 NSArray *list = [defaults objectForKey: @"HeaderList"]; 30 id value = nil; // NSFontAttributeName 31 if([list count] > 0) 32 { 33 value = [[list objectAtIndex: rowIndex] lastPathComponent]; 34 } 35 return value; 36} 37@end 38 39 40@implementation GormHeadersPref 41- (id) init 42{ 43 _view = nil; 44 45 self = [super init]; 46 47 if ( ! [NSBundle loadNibNamed:@"GormPrefHeaders" owner:self] ) 48 { 49 NSLog(@"Can not load bundle GormPrefHeaders"); 50 return nil; 51 } 52 53 _view = [[window contentView] retain]; 54 return self; 55} 56 57- (void) dealloc 58{ 59 TEST_RELEASE(_view); 60 [super dealloc]; 61} 62 63 64-(NSView *) view 65{ 66 return _view; 67} 68 69- (void) addAction: (id)sender 70{ 71 NSArray *fileTypes = [NSArray arrayWithObjects: @"h", @"H", nil]; 72 NSOpenPanel *openPanel = [NSOpenPanel openPanel]; 73 int result; 74 75 [openPanel setAllowsMultipleSelection: YES]; 76 [openPanel setCanChooseFiles: YES]; 77 [openPanel setCanChooseDirectories: NO]; 78 result = [openPanel runModalForDirectory: nil 79 file: nil 80 types: fileTypes]; 81 if (result == NSOKButton) 82 { 83 NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults]; 84 NSMutableArray *list = [defaults objectForKey: @"HeaderList"]; 85 [list addObjectsFromArray: [openPanel filenames]]; 86 [defaults setObject: list forKey: @"HeaderList"]; 87 [table reloadData]; 88 } 89} 90 91 92- (void) removeAction: (id)sender 93{ 94 NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults]; 95 NSMutableArray *list = [defaults objectForKey: @"HeaderList"]; 96 int row = [table selectedRow]; 97 98 if(row >= 0) 99 { 100 NSString *stringValue = [list objectAtIndex: row]; 101 102 if(stringValue != nil) 103 { 104 [list removeObject: stringValue]; 105 [table reloadData]; 106 } 107 } 108} 109 110 111- (void) preloadAction: (id)sender 112{ 113 if (sender != preloadButton) 114 { 115 return; 116 } 117 else 118 { 119 NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults]; 120 [defaults setBool: ([preloadButton state] == NSOnState?YES:NO) forKey:@"PreloadHeaders"]; 121 } 122} 123 124- (BOOL) tableView: (NSTableView *)tableView 125shouldEditTableColumn: (NSTableColumn *)aTableColumn 126 row: (NSInteger)rowIndex 127{ 128 BOOL result = NO; 129 return result; 130} 131 132- (BOOL) tableView: (NSTableView *)tv 133 shouldSelectRow: (NSInteger)rowIndex 134{ 135 BOOL result = YES; 136 return result; 137} 138 139@end 140