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