forked from farktronix/freegoban
-
Notifications
You must be signed in to change notification settings - Fork 2
/
Copy pathGobanPreferenceController.m
98 lines (81 loc) · 2.98 KB
/
GobanPreferenceController.m
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
/*$Id: GobanPreferenceController.m,v 1.4 2001/10/04 16:12:48 phink Exp $*/
// This is Goban, a Go program for Mac OS X. Contact [email protected],
// or see http://www.sente.ch/software/goban for more information.
//
// Copyright (c) 1997-2001, Sen:te (Sente SA). All rights reserved.
//
// This program is free software; you can redistribute it and/or
// modify it under the terms of the GNU General Public License
// as published by the Free Software Foundation - version 2.
//
// This program is distributed in the hope that it will be
// useful, but WITHOUT ANY WARRANTY; without even the implied
// warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
// PURPOSE. See the GNU General Public License in file COPYING
// for more details.
//
// You should have received a copy of the GNU General Public
// License along with this program; if not, write to the Free
// Software Foundation, Inc., 59 Temple Place - Suite 330,
// Boston, MA 02111, USA.
#import "GobanPreferenceController.h"
#import "GobanPreferences.h"
#import "GobanPlayer.h"
#import "GobanPlayerDefaults.h"
#import <SenFoundation/SenFoundation.h>
@implementation GobanPreferenceController
+ sharedInstance
{
static id sharedInstance = nil;
if (sharedInstance == nil) {
sharedInstance = [[self alloc] init];
}
return sharedInstance;
}
- (void) refresh
{
NSEnumerator *panelEnumerator = [allPanels objectEnumerator];
id each;
while (each = [panelEnumerator nextObject]) {
[each refresh];
}
}
- (id) init
{
[super initWithWindowNibName:@"GobanPreferenceController"];
allPanels = [[NSMutableArray alloc] init];
return self;
}
- (void) awakeFromNib
{
NSString *listPath = [[NSBundle bundleForClass:[self class]] pathForResource:@"Preferences" ofType:@"plist"];
NSDictionary *listDictionary = [NSDictionary dictionaryWithContentsOfFile:listPath];
NSEnumerator *panelEnumerator = [[listDictionary objectForKey:@"PreferencePanels"] objectEnumerator];
id each;
int index = 0;
while (each = [panelEnumerator nextObject]) {
NSTabViewItem *item = [[[NSTabViewItem alloc] initWithIdentifier:[each objectForKey:@"identifier"]] autorelease];
GobanPreferences *panel = [NSClassFromString([each objectForKey:@"class"]) preferences];
[allPanels addObject:panel];
[item setView:[panel view]];
[tabView insertTabViewItem:item atIndex:index++];
}
[tabView selectTabViewItemAtIndex:0];
[self setWindowFrameAutosaveName:@"GobanPreferences"];
}
- (void) windowDidLoad
{
[super windowDidLoad];
[self refresh];
}
- (IBAction) showWindow:(id)sender
{
[self refresh];
[super showWindow:sender];
}
- (void) close
{
[allPanels makeObjectsPerformSelector:@selector(close)];
[super close];
}
@end