Added basic preferences framework.
parent
0f34406ca5
commit
54f5918487
|
@ -11,6 +11,12 @@
|
|||
8D11072B0486CEB800E47090 /* InfoPlist.strings in Resources */ = {isa = PBXBuildFile; fileRef = 089C165CFE840E0CC02AAC07 /* InfoPlist.strings */; };
|
||||
8D11072D0486CEB800E47090 /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 29B97316FDCFA39411CA2CEA /* main.m */; settings = {ATTRIBUTES = (); }; };
|
||||
8D11072F0486CEB800E47090 /* Cocoa.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1058C7A1FEA54F0111CA2CBB /* Cocoa.framework */; };
|
||||
8E07AAF10AAC910500A4B32F /* SS_PreferencePaneProtocol.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = 8E07AAEE0AAC910500A4B32F /* SS_PreferencePaneProtocol.h */; };
|
||||
8E07AAF20AAC910500A4B32F /* SS_PrefsController.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = 8E07AAEF0AAC910500A4B32F /* SS_PrefsController.h */; };
|
||||
8E07AAF30AAC910500A4B32F /* SS_PrefsController.m in Sources */ = {isa = PBXBuildFile; fileRef = 8E07AAF00AAC910500A4B32F /* SS_PrefsController.m */; };
|
||||
8E07AB780AAC930B00A4B32F /* PreferencesController.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = 8E07AB760AAC930B00A4B32F /* PreferencesController.h */; };
|
||||
8E07AB790AAC930B00A4B32F /* PreferencesController.m in Sources */ = {isa = PBXBuildFile; fileRef = 8E07AB770AAC930B00A4B32F /* PreferencesController.m */; };
|
||||
8E07AEEA0AACA08100A4B32F /* General.preferencePane in Resources */ = {isa = PBXBuildFile; fileRef = 8E07AEE90AACA08100A4B32F /* General.preferencePane */; };
|
||||
8E0AD92B0A338CFF00215AEF /* Shorten.framework in CopyFiles */ = {isa = PBXBuildFile; fileRef = 8EA9172F0A336CC30087CDE2 /* Shorten.framework */; };
|
||||
8E1296DA0A2BA9CE00443124 /* PlaylistHeaderView.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = 8E1296D80A2BA9CE00443124 /* PlaylistHeaderView.h */; };
|
||||
8E1296DB0A2BA9CE00443124 /* PlaylistHeaderView.m in Sources */ = {isa = PBXBuildFile; fileRef = 8E1296D90A2BA9CE00443124 /* PlaylistHeaderView.m */; };
|
||||
|
@ -171,15 +177,9 @@
|
|||
8EFFCD720AA093AF00C458A5 /* UKFNSubscribeFileWatcher.h in CopyFiles */,
|
||||
8EFFCD750AA093AF00C458A5 /* UKKQueue.h in CopyFiles */,
|
||||
8EFFCD770AA093AF00C458A5 /* UKMainThreadProxy.h in CopyFiles */,
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
8EB44F4B0A2BB82B00AA711F /* CopyFiles */ = {
|
||||
isa = PBXCopyFilesBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
dstPath = "";
|
||||
dstSubfolderSpec = 7;
|
||||
files = (
|
||||
8E07AAF10AAC910500A4B32F /* SS_PreferencePaneProtocol.h in CopyFiles */,
|
||||
8E07AAF20AAC910500A4B32F /* SS_PrefsController.h in CopyFiles */,
|
||||
8E07AB780AAC930B00A4B32F /* PreferencesController.h in CopyFiles */,
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
|
@ -196,6 +196,12 @@
|
|||
32CA4F630368D1EE00C91783 /* Cog_Prefix.pch */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Cog_Prefix.pch; sourceTree = "<group>"; };
|
||||
8D1107310486CEB800E47090 /* Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist; path = Info.plist; sourceTree = "<group>"; };
|
||||
8D1107320486CEB800E47090 /* Cog.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = Cog.app; sourceTree = BUILT_PRODUCTS_DIR; };
|
||||
8E07AAEE0AAC910500A4B32F /* SS_PreferencePaneProtocol.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = SS_PreferencePaneProtocol.h; path = Preferences/SS_PreferencePaneProtocol.h; sourceTree = "<group>"; };
|
||||
8E07AAEF0AAC910500A4B32F /* SS_PrefsController.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = SS_PrefsController.h; path = Preferences/SS_PrefsController.h; sourceTree = "<group>"; };
|
||||
8E07AAF00AAC910500A4B32F /* SS_PrefsController.m */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.objc; name = SS_PrefsController.m; path = Preferences/SS_PrefsController.m; sourceTree = "<group>"; };
|
||||
8E07AB760AAC930B00A4B32F /* PreferencesController.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = PreferencesController.h; path = Preferences/PreferencesController.h; sourceTree = "<group>"; };
|
||||
8E07AB770AAC930B00A4B32F /* PreferencesController.m */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.objc; name = PreferencesController.m; path = Preferences/PreferencesController.m; sourceTree = "<group>"; };
|
||||
8E07AEE90AACA08100A4B32F /* General.preferencePane */ = {isa = PBXFileReference; lastKnownFileType = folder; name = General.preferencePane; path = Preferences/General/build/Release/General.preferencePane; sourceTree = "<group>"; };
|
||||
8E1296D80A2BA9CE00443124 /* PlaylistHeaderView.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = PlaylistHeaderView.h; sourceTree = "<group>"; };
|
||||
8E1296D90A2BA9CE00443124 /* PlaylistHeaderView.m */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.objc; path = PlaylistHeaderView.m; sourceTree = "<group>"; };
|
||||
8E1849C40A43DB5C0084C69D /* MAD.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = MAD.framework; path = Libraries/MAD/build/Release/MAD.framework; sourceTree = "<group>"; };
|
||||
|
@ -385,6 +391,7 @@
|
|||
080E96DDFE201D6D7F000001 /* Classes */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
8E07AAEA0AAC90DC00A4B32F /* Preferences */,
|
||||
8EFFCD410AA093AF00C458A5 /* FileDrawer */,
|
||||
8E75752309F31D5A0080F1EE /* Feedback */,
|
||||
8E75755D09F31D5A0080F1EE /* Updates */,
|
||||
|
@ -453,11 +460,12 @@
|
|||
29B97317FDCFA39411CA2CEA /* Resources */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
8EB44FF90A2BB8B300AA711F /* Cog Help */,
|
||||
8E7575D909F31E930080F1EE /* Localizable.strings */,
|
||||
8E07AD280AAC9BE600A4B32F /* Preference Panes */,
|
||||
8E75758E09F31D800080F1EE /* Icons */,
|
||||
8EB44FF90A2BB8B300AA711F /* Cog Help */,
|
||||
8D1107310486CEB800E47090 /* Info.plist */,
|
||||
089C165CFE840E0CC02AAC07 /* InfoPlist.strings */,
|
||||
8E7575D909F31E930080F1EE /* Localizable.strings */,
|
||||
29B97318FDCFA39411CA2CEA /* MainMenu.nib */,
|
||||
8E7575C309F31DCA0080F1EE /* Changelog */,
|
||||
8E7575C409F31DCA0080F1EE /* Cog.scriptSuite */,
|
||||
|
@ -481,6 +489,26 @@
|
|||
name = Frameworks;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
8E07AAEA0AAC90DC00A4B32F /* Preferences */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
8E07AAEE0AAC910500A4B32F /* SS_PreferencePaneProtocol.h */,
|
||||
8E07AAEF0AAC910500A4B32F /* SS_PrefsController.h */,
|
||||
8E07AAF00AAC910500A4B32F /* SS_PrefsController.m */,
|
||||
8E07AB760AAC930B00A4B32F /* PreferencesController.h */,
|
||||
8E07AB770AAC930B00A4B32F /* PreferencesController.m */,
|
||||
);
|
||||
name = Preferences;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
8E07AD280AAC9BE600A4B32F /* Preference Panes */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
8E07AEE90AACA08100A4B32F /* General.preferencePane */,
|
||||
);
|
||||
name = "Preference Panes";
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
8E75751A09F31D5A0080F1EE /* Custom */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
|
@ -660,6 +688,7 @@
|
|||
8EFFCD410AA093AF00C458A5 /* FileDrawer */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
8EFFCD540AA093AF00C458A5 /* UKKQueue */,
|
||||
8EFFCD440AA093AF00C458A5 /* FileIconCell.h */,
|
||||
8EFFCD450AA093AF00C458A5 /* FileIconCell.m */,
|
||||
8EFFCD4E0AA093AF00C458A5 /* ImageTextCell.h */,
|
||||
|
@ -678,7 +707,6 @@
|
|||
8EFFCD470AA093AF00C458A5 /* FileNode.m */,
|
||||
8EFFCD520AA093AF00C458A5 /* PathNode.h */,
|
||||
8EFFCD530AA093AF00C458A5 /* PathNode.m */,
|
||||
8EFFCD540AA093AF00C458A5 /* UKKQueue */,
|
||||
);
|
||||
path = FileDrawer;
|
||||
sourceTree = "<group>";
|
||||
|
@ -710,7 +738,6 @@
|
|||
8D11072C0486CEB800E47090 /* Sources */,
|
||||
8D11072E0486CEB800E47090 /* Frameworks */,
|
||||
8E757AEC09F3265E0080F1EE /* CopyFiles */,
|
||||
8EB44F4B0A2BB82B00AA711F /* CopyFiles */,
|
||||
);
|
||||
buildRules = (
|
||||
);
|
||||
|
@ -742,6 +769,7 @@
|
|||
isa = PBXResourcesBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
8E07AEEA0AACA08100A4B32F /* General.preferencePane in Resources */,
|
||||
8D11072A0486CEB800E47090 /* MainMenu.nib in Resources */,
|
||||
8D11072B0486CEB800E47090 /* InfoPlist.strings in Resources */,
|
||||
8E75758709F31D5A0080F1EE /* SOUNDTODO in Resources */,
|
||||
|
@ -840,6 +868,8 @@
|
|||
8EFFCD730AA093AF00C458A5 /* UKFNSubscribeFileWatcher.m in Sources */,
|
||||
8EFFCD760AA093AF00C458A5 /* UKKQueue.m in Sources */,
|
||||
8EFFCD780AA093AF00C458A5 /* UKMainThreadProxy.m in Sources */,
|
||||
8E07AAF30AAC910500A4B32F /* SS_PrefsController.m in Sources */,
|
||||
8E07AB790AAC930B00A4B32F /* PreferencesController.m in Sources */,
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
|
|
|
@ -125,6 +125,12 @@
|
|||
};
|
||||
SUPERCLASS = NSTableView;
|
||||
},
|
||||
{
|
||||
ACTIONS = {showPrefs = id; };
|
||||
CLASS = PreferencesController;
|
||||
LANGUAGE = ObjC;
|
||||
SUPERCLASS = NSObject;
|
||||
},
|
||||
{
|
||||
ACTIONS = {
|
||||
changeVolume = id;
|
||||
|
|
|
@ -3,7 +3,7 @@
|
|||
<plist version="1.0">
|
||||
<dict>
|
||||
<key>IBDocumentLocation</key>
|
||||
<string>71 108 639 388 0 0 1024 746 </string>
|
||||
<string>33 358 639 388 0 0 1024 746 </string>
|
||||
<key>IBEditorPositions</key>
|
||||
<dict>
|
||||
<key>1063</key>
|
||||
|
@ -29,12 +29,12 @@
|
|||
<integer>564</integer>
|
||||
</array>
|
||||
<key>IBOldestOS</key>
|
||||
<integer>3</integer>
|
||||
<integer>4</integer>
|
||||
<key>IBOpenObjects</key>
|
||||
<array>
|
||||
<integer>463</integer>
|
||||
<integer>29</integer>
|
||||
<integer>21</integer>
|
||||
<integer>463</integer>
|
||||
</array>
|
||||
<key>IBSystem Version</key>
|
||||
<string>8J135</string>
|
||||
|
|
Binary file not shown.
|
@ -41,7 +41,6 @@ NSString *MovedRowsType = @"MOVED_ROWS_TYPE";
|
|||
{
|
||||
NSDragOperation dragOp = NSDragOperationCopy;
|
||||
|
||||
NSLog(@"VALIDATING");
|
||||
if ([info draggingSource] == tv)
|
||||
dragOp = NSDragOperationMove;
|
||||
|
||||
|
|
Binary file not shown.
|
@ -0,0 +1,20 @@
|
|||
{
|
||||
IBClasses = (
|
||||
{CLASS = FileDrawerPane; LANGUAGE = ObjC; SUPERCLASS = PreferencePane; },
|
||||
{CLASS = FirstResponder; LANGUAGE = ObjC; SUPERCLASS = NSObject; },
|
||||
{CLASS = HotKeyPane; LANGUAGE = ObjC; SUPERCLASS = PreferencePane; },
|
||||
{
|
||||
CLASS = PrefPaneController;
|
||||
LANGUAGE = ObjC;
|
||||
OUTLETS = {fileDrawerPane = FileDrawerPane; hotKeyPane = HotKeyPane; };
|
||||
SUPERCLASS = NSObject;
|
||||
},
|
||||
{
|
||||
CLASS = PreferencePane;
|
||||
LANGUAGE = ObjC;
|
||||
OUTLETS = {view = NSView; };
|
||||
SUPERCLASS = NSObject;
|
||||
}
|
||||
);
|
||||
IBVersion = 1;
|
||||
}
|
|
@ -0,0 +1,24 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
||||
<plist version="1.0">
|
||||
<dict>
|
||||
<key>IBDocumentLocation</key>
|
||||
<string>69 77 356 240 0 0 1024 746 </string>
|
||||
<key>IBEditorPositions</key>
|
||||
<dict>
|
||||
<key>10</key>
|
||||
<string>-9 537 668 209 0 0 1024 746 </string>
|
||||
<key>11</key>
|
||||
<string>155 171 241 464 0 0 1024 746 </string>
|
||||
</dict>
|
||||
<key>IBFramework Version</key>
|
||||
<string>446.1</string>
|
||||
<key>IBOpenObjects</key>
|
||||
<array>
|
||||
<integer>11</integer>
|
||||
<integer>10</integer>
|
||||
</array>
|
||||
<key>IBSystem Version</key>
|
||||
<string>8J135</string>
|
||||
</dict>
|
||||
</plist>
|
Binary file not shown.
|
@ -0,0 +1,17 @@
|
|||
//
|
||||
// FileDrawerPane.h
|
||||
// Preferences
|
||||
//
|
||||
// Created by Zaphod Beeblebrox on 9/4/06.
|
||||
// Copyright 2006 __MyCompanyName__. All rights reserved.
|
||||
//
|
||||
|
||||
#import <Cocoa/Cocoa.h>
|
||||
#import "PreferencePane.h"
|
||||
|
||||
|
||||
@interface FileDrawerPane : PreferencePane {
|
||||
|
||||
}
|
||||
|
||||
@end
|
|
@ -0,0 +1,20 @@
|
|||
//
|
||||
// FileDrawerPane.m
|
||||
// Preferences
|
||||
//
|
||||
// Created by Zaphod Beeblebrox on 9/4/06.
|
||||
// Copyright 2006 __MyCompanyName__. All rights reserved.
|
||||
//
|
||||
|
||||
#import "FileDrawerPane.h"
|
||||
|
||||
|
||||
@implementation FileDrawerPane
|
||||
|
||||
- (void)awakeFromNib
|
||||
{
|
||||
[self setName:@"File Drawer"];
|
||||
[self setIcon:@"file_drawer"];
|
||||
}
|
||||
|
||||
@end
|
|
@ -0,0 +1,311 @@
|
|||
// !$*UTF8*$!
|
||||
{
|
||||
archiveVersion = 1;
|
||||
classes = {
|
||||
};
|
||||
objectVersion = 42;
|
||||
objects = {
|
||||
|
||||
/* Begin PBXBuildFile section */
|
||||
8D5B49B0048680CD000E48DA /* InfoPlist.strings in Resources */ = {isa = PBXBuildFile; fileRef = 089C167DFE841241C02AAC07 /* InfoPlist.strings */; };
|
||||
8D5B49B4048680CD000E48DA /* Cocoa.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1058C7ADFEA557BF11CA2CBB /* Cocoa.framework */; };
|
||||
8E07AA870AAC8EA200A4B32F /* FileDrawerPane.m in Sources */ = {isa = PBXBuildFile; fileRef = 8E07AA7F0AAC8EA200A4B32F /* FileDrawerPane.m */; };
|
||||
8E07AA880AAC8EA200A4B32F /* HotKeyPane.m in Sources */ = {isa = PBXBuildFile; fileRef = 8E07AA810AAC8EA200A4B32F /* HotKeyPane.m */; };
|
||||
8E07AA890AAC8EA200A4B32F /* PreferencePane.m in Sources */ = {isa = PBXBuildFile; fileRef = 8E07AA830AAC8EA200A4B32F /* PreferencePane.m */; };
|
||||
8E07AA8A0AAC8EA200A4B32F /* PrefPaneController.m in Sources */ = {isa = PBXBuildFile; fileRef = 8E07AA850AAC8EA200A4B32F /* PrefPaneController.m */; };
|
||||
8E07ABDC0AAC95BC00A4B32F /* file_drawer.png in Resources */ = {isa = PBXBuildFile; fileRef = 8E07ABDA0AAC95BC00A4B32F /* file_drawer.png */; };
|
||||
8E07ABDD0AAC95BC00A4B32F /* hot_keys.png in Resources */ = {isa = PBXBuildFile; fileRef = 8E07ABDB0AAC95BC00A4B32F /* hot_keys.png */; };
|
||||
8E07AC050AAC968C00A4B32F /* Preferences.nib in Resources */ = {isa = PBXBuildFile; fileRef = 8E07AC030AAC968C00A4B32F /* Preferences.nib */; };
|
||||
/* End PBXBuildFile section */
|
||||
|
||||
/* Begin PBXFileReference section */
|
||||
089C1672FE841209C02AAC07 /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = /System/Library/Frameworks/Foundation.framework; sourceTree = "<absolute>"; };
|
||||
089C167EFE841241C02AAC07 /* English */ = {isa = PBXFileReference; fileEncoding = 10; lastKnownFileType = text.plist.strings; name = English; path = English.lproj/InfoPlist.strings; sourceTree = "<group>"; };
|
||||
089C167FFE841241C02AAC07 /* AppKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AppKit.framework; path = /System/Library/Frameworks/AppKit.framework; sourceTree = "<absolute>"; };
|
||||
1058C7ADFEA557BF11CA2CBB /* Cocoa.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Cocoa.framework; path = /System/Library/Frameworks/Cocoa.framework; sourceTree = "<absolute>"; };
|
||||
32DBCF630370AF2F00C91783 /* General_Prefix.pch */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = General_Prefix.pch; sourceTree = "<group>"; };
|
||||
8D5B49B6048680CD000E48DA /* General.preferencePane */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = General.preferencePane; sourceTree = BUILT_PRODUCTS_DIR; };
|
||||
8D5B49B7048680CD000E48DA /* Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xml; path = Info.plist; sourceTree = "<group>"; };
|
||||
8E07AA7E0AAC8EA200A4B32F /* FileDrawerPane.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = FileDrawerPane.h; sourceTree = "<group>"; };
|
||||
8E07AA7F0AAC8EA200A4B32F /* FileDrawerPane.m */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.objc; path = FileDrawerPane.m; sourceTree = "<group>"; };
|
||||
8E07AA800AAC8EA200A4B32F /* HotKeyPane.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = HotKeyPane.h; sourceTree = "<group>"; };
|
||||
8E07AA810AAC8EA200A4B32F /* HotKeyPane.m */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.objc; path = HotKeyPane.m; sourceTree = "<group>"; };
|
||||
8E07AA820AAC8EA200A4B32F /* PreferencePane.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = PreferencePane.h; sourceTree = "<group>"; };
|
||||
8E07AA830AAC8EA200A4B32F /* PreferencePane.m */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.objc; path = PreferencePane.m; sourceTree = "<group>"; };
|
||||
8E07AA840AAC8EA200A4B32F /* PrefPaneController.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = PrefPaneController.h; sourceTree = "<group>"; };
|
||||
8E07AA850AAC8EA200A4B32F /* PrefPaneController.m */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.objc; path = PrefPaneController.m; sourceTree = "<group>"; };
|
||||
8E07AA860AAC8EA200A4B32F /* SS_PreferencePaneProtocol.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = SS_PreferencePaneProtocol.h; sourceTree = "<group>"; };
|
||||
8E07ABDA0AAC95BC00A4B32F /* file_drawer.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = file_drawer.png; path = Icons/file_drawer.png; sourceTree = "<group>"; };
|
||||
8E07ABDB0AAC95BC00A4B32F /* hot_keys.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = hot_keys.png; path = Icons/hot_keys.png; sourceTree = "<group>"; };
|
||||
8E07AC040AAC968C00A4B32F /* English */ = {isa = PBXFileReference; lastKnownFileType = wrapper.nib; name = English; path = English.lproj/Preferences.nib; sourceTree = "<group>"; };
|
||||
D2F7E65807B2D6F200F64583 /* CoreData.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreData.framework; path = /System/Library/Frameworks/CoreData.framework; sourceTree = "<absolute>"; };
|
||||
/* End PBXFileReference section */
|
||||
|
||||
/* Begin PBXFrameworksBuildPhase section */
|
||||
8D5B49B3048680CD000E48DA /* Frameworks */ = {
|
||||
isa = PBXFrameworksBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
8D5B49B4048680CD000E48DA /* Cocoa.framework in Frameworks */,
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
/* End PBXFrameworksBuildPhase section */
|
||||
|
||||
/* Begin PBXGroup section */
|
||||
089C166AFE841209C02AAC07 /* General */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
08FB77AFFE84173DC02AAC07 /* Classes */,
|
||||
32C88E010371C26100C91783 /* Other Sources */,
|
||||
089C167CFE841241C02AAC07 /* Resources */,
|
||||
089C1671FE841209C02AAC07 /* Frameworks and Libraries */,
|
||||
19C28FB8FE9D52D311CA2CBB /* Products */,
|
||||
);
|
||||
name = General;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
089C1671FE841209C02AAC07 /* Frameworks and Libraries */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
1058C7ACFEA557BF11CA2CBB /* Linked Frameworks */,
|
||||
1058C7AEFEA557BF11CA2CBB /* Other Frameworks */,
|
||||
);
|
||||
name = "Frameworks and Libraries";
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
089C167CFE841241C02AAC07 /* Resources */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
8E07ABD90AAC95AF00A4B32F /* Icons */,
|
||||
8D5B49B7048680CD000E48DA /* Info.plist */,
|
||||
089C167DFE841241C02AAC07 /* InfoPlist.strings */,
|
||||
8E07AC030AAC968C00A4B32F /* Preferences.nib */,
|
||||
);
|
||||
name = Resources;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
08FB77AFFE84173DC02AAC07 /* Classes */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
8E07AA860AAC8EA200A4B32F /* SS_PreferencePaneProtocol.h */,
|
||||
8E07AA840AAC8EA200A4B32F /* PrefPaneController.h */,
|
||||
8E07AA850AAC8EA200A4B32F /* PrefPaneController.m */,
|
||||
8E07AA820AAC8EA200A4B32F /* PreferencePane.h */,
|
||||
8E07AA830AAC8EA200A4B32F /* PreferencePane.m */,
|
||||
8E07AA7E0AAC8EA200A4B32F /* FileDrawerPane.h */,
|
||||
8E07AA7F0AAC8EA200A4B32F /* FileDrawerPane.m */,
|
||||
8E07AA800AAC8EA200A4B32F /* HotKeyPane.h */,
|
||||
8E07AA810AAC8EA200A4B32F /* HotKeyPane.m */,
|
||||
);
|
||||
name = Classes;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
1058C7ACFEA557BF11CA2CBB /* Linked Frameworks */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
1058C7ADFEA557BF11CA2CBB /* Cocoa.framework */,
|
||||
);
|
||||
name = "Linked Frameworks";
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
1058C7AEFEA557BF11CA2CBB /* Other Frameworks */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
089C167FFE841241C02AAC07 /* AppKit.framework */,
|
||||
D2F7E65807B2D6F200F64583 /* CoreData.framework */,
|
||||
089C1672FE841209C02AAC07 /* Foundation.framework */,
|
||||
);
|
||||
name = "Other Frameworks";
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
19C28FB8FE9D52D311CA2CBB /* Products */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
8D5B49B6048680CD000E48DA /* General.preferencePane */,
|
||||
);
|
||||
name = Products;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
32C88E010371C26100C91783 /* Other Sources */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
32DBCF630370AF2F00C91783 /* General_Prefix.pch */,
|
||||
);
|
||||
name = "Other Sources";
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
8E07ABD90AAC95AF00A4B32F /* Icons */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
8E07ABDA0AAC95BC00A4B32F /* file_drawer.png */,
|
||||
8E07ABDB0AAC95BC00A4B32F /* hot_keys.png */,
|
||||
);
|
||||
name = Icons;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
/* End PBXGroup section */
|
||||
|
||||
/* Begin PBXNativeTarget section */
|
||||
8D5B49AC048680CD000E48DA /* General */ = {
|
||||
isa = PBXNativeTarget;
|
||||
buildConfigurationList = 1DEB913A08733D840010E9CD /* Build configuration list for PBXNativeTarget "General" */;
|
||||
buildPhases = (
|
||||
8D5B49AF048680CD000E48DA /* Resources */,
|
||||
8D5B49B1048680CD000E48DA /* Sources */,
|
||||
8D5B49B3048680CD000E48DA /* Frameworks */,
|
||||
);
|
||||
buildRules = (
|
||||
);
|
||||
dependencies = (
|
||||
);
|
||||
name = General;
|
||||
productInstallPath = "$(HOME)/Library/Bundles";
|
||||
productName = General;
|
||||
productReference = 8D5B49B6048680CD000E48DA /* General.preferencePane */;
|
||||
productType = "com.apple.product-type.bundle";
|
||||
};
|
||||
/* End PBXNativeTarget section */
|
||||
|
||||
/* Begin PBXProject section */
|
||||
089C1669FE841209C02AAC07 /* Project object */ = {
|
||||
isa = PBXProject;
|
||||
buildConfigurationList = 1DEB913E08733D840010E9CD /* Build configuration list for PBXProject "General" */;
|
||||
hasScannedForEncodings = 1;
|
||||
mainGroup = 089C166AFE841209C02AAC07 /* General */;
|
||||
projectDirPath = "";
|
||||
targets = (
|
||||
8D5B49AC048680CD000E48DA /* General */,
|
||||
);
|
||||
};
|
||||
/* End PBXProject section */
|
||||
|
||||
/* Begin PBXResourcesBuildPhase section */
|
||||
8D5B49AF048680CD000E48DA /* Resources */ = {
|
||||
isa = PBXResourcesBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
8D5B49B0048680CD000E48DA /* InfoPlist.strings in Resources */,
|
||||
8E07ABDC0AAC95BC00A4B32F /* file_drawer.png in Resources */,
|
||||
8E07ABDD0AAC95BC00A4B32F /* hot_keys.png in Resources */,
|
||||
8E07AC050AAC968C00A4B32F /* Preferences.nib in Resources */,
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
/* End PBXResourcesBuildPhase section */
|
||||
|
||||
/* Begin PBXSourcesBuildPhase section */
|
||||
8D5B49B1048680CD000E48DA /* Sources */ = {
|
||||
isa = PBXSourcesBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
8E07AA870AAC8EA200A4B32F /* FileDrawerPane.m in Sources */,
|
||||
8E07AA880AAC8EA200A4B32F /* HotKeyPane.m in Sources */,
|
||||
8E07AA890AAC8EA200A4B32F /* PreferencePane.m in Sources */,
|
||||
8E07AA8A0AAC8EA200A4B32F /* PrefPaneController.m in Sources */,
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
/* End PBXSourcesBuildPhase section */
|
||||
|
||||
/* Begin PBXVariantGroup section */
|
||||
089C167DFE841241C02AAC07 /* InfoPlist.strings */ = {
|
||||
isa = PBXVariantGroup;
|
||||
children = (
|
||||
089C167EFE841241C02AAC07 /* English */,
|
||||
);
|
||||
name = InfoPlist.strings;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
8E07AC030AAC968C00A4B32F /* Preferences.nib */ = {
|
||||
isa = PBXVariantGroup;
|
||||
children = (
|
||||
8E07AC040AAC968C00A4B32F /* English */,
|
||||
);
|
||||
name = Preferences.nib;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
/* End PBXVariantGroup section */
|
||||
|
||||
/* Begin XCBuildConfiguration section */
|
||||
1DEB913B08733D840010E9CD /* Debug */ = {
|
||||
isa = XCBuildConfiguration;
|
||||
buildSettings = {
|
||||
COPY_PHASE_STRIP = NO;
|
||||
GCC_DYNAMIC_NO_PIC = NO;
|
||||
GCC_ENABLE_FIX_AND_CONTINUE = YES;
|
||||
GCC_MODEL_TUNING = G5;
|
||||
GCC_OPTIMIZATION_LEVEL = 0;
|
||||
GCC_PRECOMPILE_PREFIX_HEADER = YES;
|
||||
GCC_PREFIX_HEADER = General_Prefix.pch;
|
||||
INFOPLIST_FILE = Info.plist;
|
||||
INSTALL_PATH = "$(HOME)/Library/Bundles";
|
||||
PRODUCT_NAME = General;
|
||||
WRAPPER_EXTENSION = preferencePane;
|
||||
ZERO_LINK = YES;
|
||||
};
|
||||
name = Debug;
|
||||
};
|
||||
1DEB913C08733D840010E9CD /* Release */ = {
|
||||
isa = XCBuildConfiguration;
|
||||
buildSettings = {
|
||||
ARCHS = (
|
||||
ppc,
|
||||
i386,
|
||||
);
|
||||
GCC_GENERATE_DEBUGGING_SYMBOLS = NO;
|
||||
GCC_MODEL_TUNING = G5;
|
||||
GCC_PRECOMPILE_PREFIX_HEADER = YES;
|
||||
GCC_PREFIX_HEADER = General_Prefix.pch;
|
||||
INFOPLIST_FILE = Info.plist;
|
||||
INSTALL_PATH = "$(HOME)/Library/Bundles";
|
||||
PRODUCT_NAME = General;
|
||||
WRAPPER_EXTENSION = preferencePane;
|
||||
};
|
||||
name = Release;
|
||||
};
|
||||
1DEB913F08733D840010E9CD /* Debug */ = {
|
||||
isa = XCBuildConfiguration;
|
||||
buildSettings = {
|
||||
GCC_WARN_ABOUT_RETURN_TYPE = YES;
|
||||
GCC_WARN_UNUSED_VARIABLE = YES;
|
||||
PREBINDING = NO;
|
||||
SDKROOT = /Developer/SDKs/MacOSX10.4u.sdk;
|
||||
};
|
||||
name = Debug;
|
||||
};
|
||||
1DEB914008733D840010E9CD /* Release */ = {
|
||||
isa = XCBuildConfiguration;
|
||||
buildSettings = {
|
||||
GCC_WARN_ABOUT_RETURN_TYPE = YES;
|
||||
GCC_WARN_UNUSED_VARIABLE = YES;
|
||||
PREBINDING = NO;
|
||||
SDKROOT = /Developer/SDKs/MacOSX10.4u.sdk;
|
||||
};
|
||||
name = Release;
|
||||
};
|
||||
/* End XCBuildConfiguration section */
|
||||
|
||||
/* Begin XCConfigurationList section */
|
||||
1DEB913A08733D840010E9CD /* Build configuration list for PBXNativeTarget "General" */ = {
|
||||
isa = XCConfigurationList;
|
||||
buildConfigurations = (
|
||||
1DEB913B08733D840010E9CD /* Debug */,
|
||||
1DEB913C08733D840010E9CD /* Release */,
|
||||
);
|
||||
defaultConfigurationIsVisible = 0;
|
||||
defaultConfigurationName = Release;
|
||||
};
|
||||
1DEB913E08733D840010E9CD /* Build configuration list for PBXProject "General" */ = {
|
||||
isa = XCConfigurationList;
|
||||
buildConfigurations = (
|
||||
1DEB913F08733D840010E9CD /* Debug */,
|
||||
1DEB914008733D840010E9CD /* Release */,
|
||||
);
|
||||
defaultConfigurationIsVisible = 0;
|
||||
defaultConfigurationName = Release;
|
||||
};
|
||||
/* End XCConfigurationList section */
|
||||
};
|
||||
rootObject = 089C1669FE841209C02AAC07 /* Project object */;
|
||||
}
|
|
@ -0,0 +1,7 @@
|
|||
//
|
||||
// Prefix header for all source files of the 'General' target in the 'General' project.
|
||||
//
|
||||
|
||||
#ifdef __OBJC__
|
||||
#import <Cocoa/Cocoa.h>
|
||||
#endif
|
|
@ -0,0 +1,17 @@
|
|||
//
|
||||
// HotKeyPane.h
|
||||
// Preferences
|
||||
//
|
||||
// Created by Zaphod Beeblebrox on 9/4/06.
|
||||
// Copyright 2006 __MyCompanyName__. All rights reserved.
|
||||
//
|
||||
|
||||
#import <Cocoa/Cocoa.h>
|
||||
#import "PreferencePane.h"
|
||||
|
||||
|
||||
@interface HotKeyPane : PreferencePane {
|
||||
|
||||
}
|
||||
|
||||
@end
|
|
@ -0,0 +1,20 @@
|
|||
//
|
||||
// HotKeyPane.m
|
||||
// Preferences
|
||||
//
|
||||
// Created by Zaphod Beeblebrox on 9/4/06.
|
||||
// Copyright 2006 __MyCompanyName__. All rights reserved.
|
||||
//
|
||||
|
||||
#import "HotKeyPane.h"
|
||||
|
||||
|
||||
@implementation HotKeyPane
|
||||
|
||||
- (void)awakeFromNib
|
||||
{
|
||||
[self setName:@"Hot Keys"];
|
||||
[self setIcon:@"hot_keys"];
|
||||
}
|
||||
|
||||
@end
|
Binary file not shown.
After Width: | Height: | Size: 1.9 KiB |
Binary file not shown.
After Width: | Height: | Size: 1.3 KiB |
|
@ -0,0 +1,26 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
||||
<plist version="1.0">
|
||||
<dict>
|
||||
<key>CFBundleDevelopmentRegion</key>
|
||||
<string>English</string>
|
||||
<key>CFBundleExecutable</key>
|
||||
<string>${EXECUTABLE_NAME}</string>
|
||||
<key>CFBundleName</key>
|
||||
<string>${PRODUCT_NAME}</string>
|
||||
<key>CFBundleIconFile</key>
|
||||
<string></string>
|
||||
<key>CFBundleIdentifier</key>
|
||||
<string>com.vspader.cogpreferences</string>
|
||||
<key>CFBundleInfoDictionaryVersion</key>
|
||||
<string>6.0</string>
|
||||
<key>CFBundlePackageType</key>
|
||||
<string>BNDL</string>
|
||||
<key>CFBundleSignature</key>
|
||||
<string>????</string>
|
||||
<key>CFBundleVersion</key>
|
||||
<string>1.0</string>
|
||||
<key>NSPrincipalClass</key>
|
||||
<string>PrefPaneController</string>
|
||||
</dict>
|
||||
</plist>
|
|
@ -0,0 +1,23 @@
|
|||
//
|
||||
// PreferencesController.h
|
||||
// Preferences
|
||||
//
|
||||
// Created by Zaphod Beeblebrox on 9/4/06.
|
||||
// Copyright 2006 __MyCompanyName__. All rights reserved.
|
||||
//
|
||||
|
||||
#import <Cocoa/Cocoa.h>
|
||||
#import "SS_PreferencePaneProtocol.h"
|
||||
|
||||
#import "HotKeyPane.h"
|
||||
#import "FileDrawerPane.h"
|
||||
|
||||
@interface PrefPaneController : NSObject <SS_PreferencePaneProtocol> {
|
||||
IBOutlet HotKeyPane *hotKeyPane;
|
||||
IBOutlet FileDrawerPane *fileDrawerPane;
|
||||
}
|
||||
|
||||
- (FileDrawerPane *)fileDrawerPane;
|
||||
- (HotKeyPane *)hotKeyPane;
|
||||
|
||||
@end
|
|
@ -0,0 +1,34 @@
|
|||
//
|
||||
// PreferencesController.m
|
||||
// Preferences
|
||||
//
|
||||
// Created by Zaphod Beeblebrox on 9/4/06.
|
||||
// Copyright 2006 __MyCompanyName__. All rights reserved.
|
||||
//
|
||||
|
||||
#import "PrefPaneController.h"
|
||||
#import "SS_PreferencePaneProtocol.h"
|
||||
|
||||
@implementation PrefPaneController
|
||||
|
||||
+ (NSArray *)preferencePanes
|
||||
{
|
||||
BOOL loaded;
|
||||
|
||||
PrefPaneController *prefPaneController = [[PrefPaneController alloc] init];
|
||||
loaded = [NSBundle loadNibNamed:@"Preferences" owner:prefPaneController];
|
||||
|
||||
return [NSArray arrayWithObjects: [prefPaneController hotKeyPane], [prefPaneController fileDrawerPane], nil];
|
||||
}
|
||||
|
||||
- (HotKeyPane *)hotKeyPane
|
||||
{
|
||||
return hotKeyPane;
|
||||
}
|
||||
|
||||
- (FileDrawerPane *)fileDrawerPane
|
||||
{
|
||||
return fileDrawerPane;
|
||||
}
|
||||
|
||||
@end
|
|
@ -0,0 +1,31 @@
|
|||
//
|
||||
// PreferencePane.h
|
||||
// Preferences
|
||||
//
|
||||
// Created by Zaphod Beeblebrox on 9/4/06.
|
||||
// Copyright 2006 __MyCompanyName__. All rights reserved.
|
||||
//
|
||||
|
||||
#import <Cocoa/Cocoa.h>
|
||||
#import "SS_PreferencePaneProtocol.h"
|
||||
|
||||
@interface PreferencePane : NSObject <SS_PreferencePaneProtocol> {
|
||||
IBOutlet NSView *view;
|
||||
|
||||
NSString *name;
|
||||
NSImage *icon;
|
||||
}
|
||||
|
||||
- (NSView *)paneView;
|
||||
- (NSString *)paneName;
|
||||
- (NSImage *)paneIcon;
|
||||
- (NSString *)paneToolTip;
|
||||
|
||||
- (BOOL)allowsHorizontalResizing;
|
||||
- (BOOL)allowsVerticalResizing;
|
||||
|
||||
- (void)setName:(NSString *)s;
|
||||
- (void)setIcon:(NSString *)i;
|
||||
- (void)setToolTip:(NSString *)t;
|
||||
|
||||
@end
|
|
@ -0,0 +1,57 @@
|
|||
//
|
||||
// PreferencePane.m
|
||||
// Preferences
|
||||
//
|
||||
// Created by Zaphod Beeblebrox on 9/4/06.
|
||||
// Copyright 2006 __MyCompanyName__. All rights reserved.
|
||||
//
|
||||
|
||||
#import "PreferencePane.h"
|
||||
|
||||
|
||||
@implementation PreferencePane
|
||||
|
||||
- (NSView *)paneView
|
||||
{
|
||||
return view;
|
||||
}
|
||||
|
||||
- (NSString *)paneName
|
||||
{
|
||||
return name;
|
||||
}
|
||||
|
||||
- (NSImage *)paneIcon
|
||||
{
|
||||
return icon;
|
||||
}
|
||||
|
||||
- (NSString *)paneToolTip
|
||||
{
|
||||
return nil;
|
||||
}
|
||||
|
||||
- (BOOL)allowsHorizontalResizing
|
||||
{
|
||||
return NO;
|
||||
}
|
||||
|
||||
- (BOOL)allowsVerticalResizing
|
||||
{
|
||||
return NO;
|
||||
}
|
||||
|
||||
- (void)setName:(NSString *)s
|
||||
{
|
||||
[s retain];
|
||||
[name release];
|
||||
name = s;
|
||||
}
|
||||
|
||||
- (void)setIcon:(NSString *)i
|
||||
{
|
||||
[icon release];
|
||||
icon = [[NSImage alloc] initWithContentsOfFile:[[NSBundle bundleForClass:[self class]] pathForImageResource:i]];
|
||||
}
|
||||
|
||||
@end
|
|
@ -0,0 +1,50 @@
|
|||
#import <Cocoa/Cocoa.h>
|
||||
|
||||
@protocol SS_PreferencePaneProtocol
|
||||
|
||||
|
||||
// preferencePanes is called whenever the calling application wants to instantiate preference panes.
|
||||
// This method returns an array of preference pane instances. This array is autoreleased,
|
||||
// so the calling application needs to retain whatever it wants to keep.
|
||||
// If no instances were generated, this returns nil.
|
||||
|
||||
+ (NSArray *)preferencePanes;
|
||||
|
||||
|
||||
// paneView returns a preference pane's view. This must not be nil.
|
||||
|
||||
- (NSView *)paneView;
|
||||
|
||||
|
||||
// paneName returns the name associated with a preference pane's view.
|
||||
// This is used as the label of the pane's toolbar item in the Preferences window,
|
||||
// and as the title of the Preferences window when the pane is selected.
|
||||
// This must not be nil or an empty string.
|
||||
|
||||
- (NSString *)paneName;
|
||||
|
||||
|
||||
// paneIcon returns a preference pane's icon as an NSImage.
|
||||
// The icon will be scaled to the default size for a toolbar icon (if necessary),
|
||||
// and shown in the toolbar in the Preferences window.
|
||||
|
||||
- (NSImage *)paneIcon;
|
||||
|
||||
|
||||
// paneToolTip returns the ToolTip to be used for a preference pane's icon in the
|
||||
// Preferences window's toolbar. You can return nil or an empty string to disable
|
||||
// the ToolTip for this preference pane.
|
||||
|
||||
- (NSString *)paneToolTip;
|
||||
|
||||
|
||||
// allowsHorizontalResizing and allowsVerticalResizing determine whether the Preferences window
|
||||
// will be resizable in the respective directions when the receiver is the visible preference
|
||||
// pane. The initial size of the receiver's view will be used as the minimum size of the
|
||||
// Preferences window.
|
||||
|
||||
- (BOOL)allowsHorizontalResizing;
|
||||
- (BOOL)allowsVerticalResizing;
|
||||
|
||||
|
||||
@end
|
|
@ -0,0 +1,18 @@
|
|||
//
|
||||
// PreferencesController.h
|
||||
// Cog
|
||||
//
|
||||
// Created by Zaphod Beeblebrox on 9/4/06.
|
||||
// Copyright 2006 __MyCompanyName__. All rights reserved.
|
||||
//
|
||||
|
||||
#import <Cocoa/Cocoa.h>
|
||||
#import "SS_PrefsController.h"
|
||||
|
||||
@interface PreferencesController : NSObject {
|
||||
SS_PrefsController *prefs;
|
||||
}
|
||||
|
||||
- (IBAction)showPrefs:(id)sender;
|
||||
|
||||
@end
|
|
@ -0,0 +1,40 @@
|
|||
//
|
||||
// PreferencesController.m
|
||||
// Cog
|
||||
//
|
||||
// Created by Zaphod Beeblebrox on 9/4/06.
|
||||
// Copyright 2006 __MyCompanyName__. All rights reserved.
|
||||
//
|
||||
|
||||
#import "PreferencesController.h"
|
||||
|
||||
|
||||
@implementation PreferencesController
|
||||
|
||||
- (IBAction)showPrefs:(id)sender
|
||||
{
|
||||
if (!prefs) {
|
||||
// Determine path to the sample preference panes
|
||||
NSString *pathToPanes = [[NSBundle mainBundle] resourcePath];
|
||||
NSLog(@"Loading preferences...%@", pathToPanes);
|
||||
|
||||
prefs = [[SS_PrefsController alloc] initWithPanesSearchPath:pathToPanes bundleExtension:@"preferencePane"];
|
||||
[prefs setDebug:YES];
|
||||
|
||||
// Set which panes are included, and their order.
|
||||
// [prefs setPanesOrder:[NSArray arrayWithObjects:@"General", @"Updating", @"A Non-Existent Preference Pane", nil]];
|
||||
}
|
||||
|
||||
// Show the preferences window.
|
||||
[prefs showPreferencesWindow];
|
||||
}
|
||||
|
||||
|
||||
- (void)dealloc
|
||||
{
|
||||
[prefs release];
|
||||
|
||||
[super dealloc];
|
||||
}
|
||||
|
||||
@end
|
|
@ -0,0 +1,50 @@
|
|||
#import <Cocoa/Cocoa.h>
|
||||
|
||||
@protocol SS_PreferencePaneProtocol
|
||||
|
||||
|
||||
// preferencePanes is called whenever the calling application wants to instantiate preference panes.
|
||||
// This method returns an array of preference pane instances. This array is autoreleased,
|
||||
// so the calling application needs to retain whatever it wants to keep.
|
||||
// If no instances were generated, this returns nil.
|
||||
|
||||
+ (NSArray *)preferencePanes;
|
||||
|
||||
|
||||
// paneView returns a preference pane's view. This must not be nil.
|
||||
|
||||
- (NSView *)paneView;
|
||||
|
||||
|
||||
// paneName returns the name associated with a preference pane's view.
|
||||
// This is used as the label of the pane's toolbar item in the Preferences window,
|
||||
// and as the title of the Preferences window when the pane is selected.
|
||||
// This must not be nil or an empty string.
|
||||
|
||||
- (NSString *)paneName;
|
||||
|
||||
|
||||
// paneIcon returns a preference pane's icon as an NSImage.
|
||||
// The icon will be scaled to the default size for a toolbar icon (if necessary),
|
||||
// and shown in the toolbar in the Preferences window.
|
||||
|
||||
- (NSImage *)paneIcon;
|
||||
|
||||
|
||||
// paneToolTip returns the ToolTip to be used for a preference pane's icon in the
|
||||
// Preferences window's toolbar. You can return nil or an empty string to disable
|
||||
// the ToolTip for this preference pane.
|
||||
|
||||
- (NSString *)paneToolTip;
|
||||
|
||||
|
||||
// allowsHorizontalResizing and allowsVerticalResizing determine whether the Preferences window
|
||||
// will be resizable in the respective directions when the receiver is the visible preference
|
||||
// pane. The initial size of the receiver's view will be used as the minimum size of the
|
||||
// Preferences window.
|
||||
|
||||
- (BOOL)allowsHorizontalResizing;
|
||||
- (BOOL)allowsVerticalResizing;
|
||||
|
||||
|
||||
@end
|
|
@ -0,0 +1,76 @@
|
|||
/* SS_PrefsController */
|
||||
|
||||
#import <Cocoa/Cocoa.h>
|
||||
|
||||
@interface SS_PrefsController : NSObject
|
||||
{
|
||||
NSWindow *prefsWindow;
|
||||
NSMutableDictionary *preferencePanes;
|
||||
NSMutableArray *panesOrder;
|
||||
|
||||
NSString *bundleExtension;
|
||||
NSString *searchPath;
|
||||
|
||||
NSToolbar *prefsToolbar;
|
||||
NSMutableDictionary *prefsToolbarItems;
|
||||
|
||||
NSToolbarDisplayMode toolbarDisplayMode;
|
||||
#if MAC_OS_X_VERSION_MAX_ALLOWED >= MAC_OS_X_VERSION_10_2
|
||||
NSToolbarSizeMode toolbarSizeMode;
|
||||
#endif
|
||||
BOOL usesTexturedWindow;
|
||||
BOOL alwaysShowsToolbar;
|
||||
BOOL alwaysOpensCentered;
|
||||
|
||||
BOOL debug;
|
||||
}
|
||||
|
||||
// Convenience constructors
|
||||
+ (id)preferencesWithPanesSearchPath:(NSString*)path bundleExtension:(NSString *)ext;
|
||||
+ (id)preferencesWithBundleExtension:(NSString *)ext;
|
||||
+ (id)preferencesWithPanesSearchPath:(NSString*)path;
|
||||
+ (id)preferences;
|
||||
|
||||
// Designated initializer
|
||||
- (id)initWithPanesSearchPath:(NSString*)path bundleExtension:(NSString *)ext;
|
||||
|
||||
- (id)initWithBundleExtension:(NSString *)ext;
|
||||
- (id)initWithPanesSearchPath:(NSString*)path;
|
||||
|
||||
- (void)showPreferencesWindow;
|
||||
- (void)createPreferencesWindowAndDisplay:(BOOL)shouldDisplay;
|
||||
- (void)createPreferencesWindow;
|
||||
- (void)destroyPreferencesWindow;
|
||||
- (BOOL)loadPrefsPaneNamed:(NSString *)name display:(BOOL)disp;
|
||||
- (BOOL)loadPreferencePaneNamed:(NSString *)name;
|
||||
- (void)activatePane:(NSString*)path;
|
||||
- (void)debugLog:(NSString*)msg;
|
||||
|
||||
float ToolbarHeightForWindow(NSWindow *window);
|
||||
- (void)createPrefsToolbar;
|
||||
- (void)prefsToolbarItemClicked:(NSToolbarItem*)item;
|
||||
|
||||
// Accessors
|
||||
- (NSWindow *)preferencesWindow;
|
||||
- (NSString *)bundleExtension;
|
||||
- (NSString *)searchPath;
|
||||
|
||||
- (NSArray *)loadedPanes;
|
||||
- (NSArray *)panesOrder;
|
||||
- (void)setPanesOrder:(NSArray *)newPanesOrder;
|
||||
- (BOOL)debug;
|
||||
- (void)setDebug:(BOOL)newDebug;
|
||||
- (BOOL)usesTexturedWindow;
|
||||
- (void)setUsesTexturedWindow:(BOOL)newUsesTexturedWindow;
|
||||
- (BOOL)alwaysShowsToolbar;
|
||||
- (void)setAlwaysShowsToolbar:(BOOL)newAlwaysShowsToolbar;
|
||||
- (BOOL)alwaysOpensCentered;
|
||||
- (void)setAlwaysOpensCentered:(BOOL)newAlwaysOpensCentered;
|
||||
- (NSToolbarDisplayMode)toolbarDisplayMode;
|
||||
- (void)setToolbarDisplayMode:(NSToolbarDisplayMode)displayMode;
|
||||
#if MAC_OS_X_VERSION_MAX_ALLOWED >= MAC_OS_X_VERSION_10_2
|
||||
- (NSToolbarSizeMode)toolbarSizeMode;
|
||||
- (void)setToolbarSizeMode:(NSToolbarSizeMode)sizeMode;
|
||||
#endif
|
||||
|
||||
@end
|
|
@ -0,0 +1,579 @@
|
|||
#import "SS_PrefsController.h"
|
||||
#import "SS_PreferencePaneProtocol.h"
|
||||
|
||||
@implementation SS_PrefsController
|
||||
|
||||
#define Last_Pane_Defaults_Key [[[NSBundle mainBundle] bundleIdentifier] stringByAppendingString:@"_Preferences_Last_Pane_Defaults_Key"]
|
||||
|
||||
// ************************************************
|
||||
// version/init/dealloc/constructors
|
||||
// ************************************************
|
||||
|
||||
|
||||
+ (int)version
|
||||
{
|
||||
return 1; // 28th June 2003
|
||||
}
|
||||
|
||||
|
||||
+ (id)preferencesWithPanesSearchPath:(NSString*)path bundleExtension:(NSString *)ext
|
||||
{
|
||||
return [[[SS_PrefsController alloc] initWithPanesSearchPath:path bundleExtension:ext] autorelease];
|
||||
}
|
||||
|
||||
|
||||
+ (id)preferencesWithBundleExtension:(NSString *)ext
|
||||
{
|
||||
return [[[SS_PrefsController alloc] initWithBundleExtension:ext] autorelease];
|
||||
}
|
||||
|
||||
|
||||
+ (id)preferencesWithPanesSearchPath:(NSString*)path
|
||||
{
|
||||
return [[[SS_PrefsController alloc] initWithPanesSearchPath:path] autorelease];
|
||||
}
|
||||
|
||||
|
||||
+ (id)preferences
|
||||
{
|
||||
return [[[SS_PrefsController alloc] init] autorelease];
|
||||
}
|
||||
|
||||
|
||||
- (id)init
|
||||
{
|
||||
return [self initWithPanesSearchPath:nil bundleExtension:nil];
|
||||
}
|
||||
|
||||
|
||||
- (id)initWithPanesSearchPath:(NSString*)path
|
||||
{
|
||||
return [self initWithPanesSearchPath:path bundleExtension:nil];
|
||||
}
|
||||
|
||||
|
||||
- (id)initWithBundleExtension:(NSString *)ext
|
||||
{
|
||||
return [self initWithPanesSearchPath:nil bundleExtension:ext];
|
||||
}
|
||||
|
||||
|
||||
// Designated initializer
|
||||
- (id)initWithPanesSearchPath:(NSString*)path bundleExtension:(NSString *)ext
|
||||
{
|
||||
if (self = [super init]) {
|
||||
[self setDebug:NO];
|
||||
preferencePanes = [[NSMutableDictionary alloc] init];
|
||||
panesOrder = [[NSMutableArray alloc] init];
|
||||
|
||||
[self setToolbarDisplayMode:NSToolbarDisplayModeIconAndLabel];
|
||||
#if MAC_OS_X_VERSION_MAX_ALLOWED >= MAC_OS_X_VERSION_10_2
|
||||
[self setToolbarSizeMode:NSToolbarSizeModeDefault];
|
||||
#endif
|
||||
[self setUsesTexturedWindow:NO];
|
||||
[self setAlwaysShowsToolbar:NO];
|
||||
[self setAlwaysOpensCentered:YES];
|
||||
|
||||
if (!ext || [ext isEqualToString:@""]) {
|
||||
bundleExtension = [[NSString alloc] initWithString:@"preferencePane"];
|
||||
} else {
|
||||
bundleExtension = [ext retain];
|
||||
}
|
||||
|
||||
if (!path || [path isEqualToString:@""]) {
|
||||
searchPath = [[NSString alloc] initWithString:[[NSBundle mainBundle] resourcePath]];
|
||||
} else {
|
||||
searchPath = [path retain];
|
||||
}
|
||||
|
||||
// Read PreferencePanes
|
||||
if (searchPath) {
|
||||
NSEnumerator* enumerator = [[NSBundle pathsForResourcesOfType:bundleExtension inDirectory:searchPath] objectEnumerator];
|
||||
NSString* panePath;
|
||||
while ((panePath = [enumerator nextObject])) {
|
||||
[self activatePane:panePath];
|
||||
}
|
||||
}
|
||||
return self;
|
||||
}
|
||||
return nil;
|
||||
}
|
||||
|
||||
|
||||
- (void)dealloc
|
||||
{
|
||||
if (prefsWindow) {
|
||||
[prefsWindow release];
|
||||
}
|
||||
if (prefsToolbar) {
|
||||
[prefsToolbar release];
|
||||
}
|
||||
if (prefsToolbarItems) {
|
||||
[prefsToolbarItems release];
|
||||
}
|
||||
if (preferencePanes) {
|
||||
[preferencePanes release];
|
||||
}
|
||||
if (panesOrder) {
|
||||
[panesOrder release];
|
||||
}
|
||||
if (bundleExtension) {
|
||||
[bundleExtension release];
|
||||
}
|
||||
if (searchPath) {
|
||||
[searchPath release];
|
||||
}
|
||||
[super dealloc];
|
||||
}
|
||||
|
||||
|
||||
// ************************************************
|
||||
// Preferences methods
|
||||
// ************************************************
|
||||
|
||||
|
||||
- (void)showPreferencesWindow
|
||||
{
|
||||
[self createPreferencesWindowAndDisplay:YES];
|
||||
}
|
||||
|
||||
|
||||
- (void)createPreferencesWindow
|
||||
{
|
||||
[self createPreferencesWindowAndDisplay:YES];
|
||||
}
|
||||
|
||||
|
||||
- (void)createPreferencesWindowAndDisplay:(BOOL)shouldDisplay
|
||||
{
|
||||
if (prefsWindow) {
|
||||
if (alwaysOpensCentered && ![prefsWindow isVisible]) {
|
||||
[prefsWindow center];
|
||||
}
|
||||
[prefsWindow makeKeyAndOrderFront:nil];
|
||||
return;
|
||||
}
|
||||
|
||||
// Create prefs window
|
||||
unsigned int styleMask = (NSClosableWindowMask | NSResizableWindowMask);
|
||||
if (usesTexturedWindow) {
|
||||
styleMask = (styleMask | NSTexturedBackgroundWindowMask);
|
||||
}
|
||||
prefsWindow = [[NSWindow alloc] initWithContentRect:NSMakeRect(0, 0, 350, 200)
|
||||
styleMask:styleMask
|
||||
backing:NSBackingStoreBuffered
|
||||
defer:NO];
|
||||
|
||||
[prefsWindow setReleasedWhenClosed:NO];
|
||||
[prefsWindow setTitle:@"Preferences"]; // initial default title
|
||||
|
||||
[prefsWindow center];
|
||||
[self createPrefsToolbar];
|
||||
|
||||
// Register defaults
|
||||
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
|
||||
if (panesOrder && ([panesOrder count] > 0)) {
|
||||
NSMutableDictionary *defaultValues = [NSMutableDictionary dictionary];
|
||||
[defaultValues setObject:[panesOrder objectAtIndex:0] forKey:Last_Pane_Defaults_Key];
|
||||
[defaults registerDefaults:defaultValues];
|
||||
}
|
||||
|
||||
// Load last view
|
||||
NSString *lastViewName = [defaults objectForKey:Last_Pane_Defaults_Key];
|
||||
|
||||
if ([panesOrder containsObject:lastViewName] && [self loadPrefsPaneNamed:lastViewName display:NO]) {
|
||||
if (shouldDisplay) {
|
||||
[prefsWindow makeKeyAndOrderFront:nil];
|
||||
}
|
||||
return;
|
||||
}
|
||||
|
||||
[self debugLog:[NSString stringWithFormat:@"Could not load last-used preference pane \"%@\". Trying to load another pane instead.", lastViewName]];
|
||||
|
||||
// Try to load each prefpane in turn if loading the last-viewed one fails.
|
||||
NSEnumerator* panes = [panesOrder objectEnumerator];
|
||||
NSString *pane;
|
||||
while (pane = [panes nextObject]) {
|
||||
if (![pane isEqualToString:lastViewName]) {
|
||||
if ([self loadPrefsPaneNamed:pane display:NO]) {
|
||||
if (shouldDisplay) {
|
||||
[prefsWindow makeKeyAndOrderFront:nil];
|
||||
}
|
||||
return;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
[self debugLog:[NSString stringWithFormat:@"Could not load any valid preference panes. The preference pane bundle extension was \"%@\" and the search path was: %@", bundleExtension, searchPath]];
|
||||
|
||||
// Show alert dialog.
|
||||
NSString *appName = [[NSBundle mainBundle] objectForInfoDictionaryKey:@"CFBundleName"];
|
||||
NSRunAlertPanel(@"Preferences",
|
||||
[NSString stringWithFormat:@"Preferences are not available for %@.", appName],
|
||||
@"OK",
|
||||
nil,
|
||||
nil);
|
||||
[prefsWindow release];
|
||||
prefsWindow = nil;
|
||||
}
|
||||
|
||||
|
||||
- (void)destroyPreferencesWindow
|
||||
{
|
||||
if (prefsWindow) {
|
||||
[prefsWindow release];
|
||||
}
|
||||
prefsWindow = nil;
|
||||
}
|
||||
|
||||
|
||||
- (void)activatePane:(NSString*)path {
|
||||
NSBundle* paneBundle = [NSBundle bundleWithPath:path];
|
||||
|
||||
if (paneBundle) {
|
||||
NSDictionary* paneDict = [paneBundle infoDictionary];
|
||||
NSString* paneName = [paneDict objectForKey:@"NSPrincipalClass"];
|
||||
if (paneName) {
|
||||
Class paneClass = NSClassFromString(paneName);
|
||||
if (!paneClass) {
|
||||
paneClass = [paneBundle principalClass];
|
||||
|
||||
if ([paneClass conformsToProtocol:@protocol(SS_PreferencePaneProtocol)] && [paneClass isKindOfClass:[NSObject class]]) {
|
||||
NSArray *panes = [paneClass preferencePanes];
|
||||
|
||||
NSEnumerator *enumerator = [panes objectEnumerator];
|
||||
id <SS_PreferencePaneProtocol> aPane;
|
||||
|
||||
while (aPane = [enumerator nextObject]) {
|
||||
[panesOrder addObject:[aPane paneName]];
|
||||
[preferencePanes setObject:aPane forKey:[aPane paneName]];
|
||||
}
|
||||
} else {
|
||||
[self debugLog:[NSString stringWithFormat:@"Did not load bundle: %@ because its Principal Class is either not an NSObject subclass, or does not conform to the PreferencePane Protocol.", paneBundle]];
|
||||
}
|
||||
} else {
|
||||
[self debugLog:[NSString stringWithFormat:@"Did not load bundle: %@ because its Principal Class was already used in another Preference pane.", paneBundle]];
|
||||
}
|
||||
} else {
|
||||
[self debugLog:[NSString stringWithFormat:@"Could not obtain name of Principal Class for bundle: %@", paneBundle]];
|
||||
}
|
||||
} else {
|
||||
[self debugLog:[NSString stringWithFormat:@"Could not initialize bundle: %@", paneBundle]];
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
- (BOOL)loadPreferencePaneNamed:(NSString *)name
|
||||
{
|
||||
return [self loadPrefsPaneNamed:(NSString *)name display:YES];
|
||||
}
|
||||
|
||||
|
||||
- (NSArray *)loadedPanes
|
||||
{
|
||||
if (preferencePanes) {
|
||||
return [preferencePanes allKeys];
|
||||
}
|
||||
return nil;
|
||||
}
|
||||
|
||||
|
||||
- (BOOL)loadPrefsPaneNamed:(NSString *)name display:(BOOL)disp
|
||||
{
|
||||
if (!prefsWindow) {
|
||||
NSBeep();
|
||||
[self debugLog:[NSString stringWithFormat:@"Could not load \"%@\" preference pane because the Preferences window seems to no longer exist.", name]];
|
||||
return NO;
|
||||
}
|
||||
|
||||
id tempPane = nil;
|
||||
tempPane = [preferencePanes objectForKey:name];
|
||||
if (!tempPane) {
|
||||
[self debugLog:[NSString stringWithFormat:@"Could not load preference pane \"%@\", because that pane does not exist.", name]];
|
||||
return NO;
|
||||
}
|
||||
|
||||
NSView *prefsView = nil;
|
||||
prefsView = [tempPane paneView];
|
||||
if (!prefsView) {
|
||||
[self debugLog:[NSString stringWithFormat:@"Could not load \"%@\" preference pane because its view could not be loaded from the bundle.", name]];
|
||||
return NO;
|
||||
}
|
||||
|
||||
// Get rid of old view before resizing, for display purposes.
|
||||
if (disp) {
|
||||
NSView *tempView = [[NSView alloc] initWithFrame:[[prefsWindow contentView] frame]];
|
||||
[prefsWindow setContentView:tempView];
|
||||
[tempView release];
|
||||
}
|
||||
|
||||
// Preserve upper left point of window during resize.
|
||||
NSRect newFrame = [prefsWindow frame];
|
||||
newFrame.size.height = [prefsView frame].size.height + ([prefsWindow frame].size.height - [[prefsWindow contentView] frame].size.height);
|
||||
newFrame.size.width = [prefsView frame].size.width;
|
||||
newFrame.origin.y += ([[prefsWindow contentView] frame].size.height - [prefsView frame].size.height);
|
||||
|
||||
id <SS_PreferencePaneProtocol> pane = [preferencePanes objectForKey:name];
|
||||
[prefsWindow setShowsResizeIndicator:([pane allowsHorizontalResizing] || [pane allowsHorizontalResizing])];
|
||||
|
||||
[prefsWindow setFrame:newFrame display:disp animate:disp];
|
||||
|
||||
[prefsWindow setContentView:prefsView];
|
||||
|
||||
// Set appropriate resizing on window.
|
||||
NSSize theSize = [prefsWindow frame].size;
|
||||
theSize.height -= ToolbarHeightForWindow(prefsWindow);
|
||||
[prefsWindow setMinSize:theSize];
|
||||
|
||||
BOOL canResize = NO;
|
||||
if ([pane allowsHorizontalResizing]) {
|
||||
theSize.width = FLT_MAX;
|
||||
canResize = YES;
|
||||
}
|
||||
if ([pane allowsVerticalResizing]) {
|
||||
theSize.height = FLT_MAX;
|
||||
canResize = YES;
|
||||
}
|
||||
[prefsWindow setMaxSize:theSize];
|
||||
[prefsWindow setShowsResizeIndicator:canResize];
|
||||
|
||||
if ((prefsToolbarItems && ([prefsToolbarItems count] > 1)) || alwaysShowsToolbar) {
|
||||
[prefsWindow setTitle:[@"Preferences: " stringByAppendingString:name]];
|
||||
}
|
||||
|
||||
// Update defaults
|
||||
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
|
||||
[defaults setObject:name forKey:Last_Pane_Defaults_Key];
|
||||
|
||||
return YES;
|
||||
}
|
||||
|
||||
|
||||
- (void)debugLog:(NSString*)msg
|
||||
{
|
||||
if (debug) {
|
||||
NSLog(@"[--- PREFERENCES DEBUG MESSAGE ---]\r%@\r\r", msg);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
// ************************************************
|
||||
// Prefs Toolbar methods
|
||||
// ************************************************
|
||||
|
||||
|
||||
float ToolbarHeightForWindow(NSWindow *window)
|
||||
{
|
||||
NSToolbar *toolbar;
|
||||
float toolbarHeight = 0.0;
|
||||
NSRect windowFrame;
|
||||
|
||||
toolbar = [window toolbar];
|
||||
|
||||
if(toolbar && [toolbar isVisible])
|
||||
{
|
||||
windowFrame = [NSWindow contentRectForFrameRect:[window frame]
|
||||
styleMask:[window styleMask]];
|
||||
toolbarHeight = NSHeight(windowFrame)
|
||||
- NSHeight([[window contentView] frame]);
|
||||
}
|
||||
|
||||
return toolbarHeight;
|
||||
}
|
||||
|
||||
|
||||
- (void)createPrefsToolbar
|
||||
{
|
||||
// Create toolbar items
|
||||
prefsToolbarItems = [[NSMutableDictionary alloc] init];
|
||||
NSEnumerator *itemEnumerator = [panesOrder objectEnumerator];
|
||||
NSString *name;
|
||||
NSImage *itemImage;
|
||||
|
||||
while (name = [itemEnumerator nextObject]) {
|
||||
if ([preferencePanes objectForKey:name] != nil) {
|
||||
NSToolbarItem *item = [[NSToolbarItem alloc] initWithItemIdentifier:name];
|
||||
[item setPaletteLabel:name]; // item's label in the "Customize Toolbar" sheet (not relevant here, but we set it anyway)
|
||||
[item setLabel:name]; // item's label in the toolbar
|
||||
NSString *tempTip = [[preferencePanes objectForKey:name] paneToolTip];
|
||||
if (!tempTip || [tempTip isEqualToString:@""]) {
|
||||
[item setToolTip:nil];
|
||||
} else {
|
||||
[item setToolTip:tempTip];
|
||||
}
|
||||
itemImage = [[preferencePanes objectForKey:name] paneIcon];
|
||||
[item setImage:itemImage];
|
||||
|
||||
[item setTarget:self];
|
||||
[item setAction:@selector(prefsToolbarItemClicked:)]; // action called when item is clicked
|
||||
[prefsToolbarItems setObject:item forKey:name]; // add to items
|
||||
[item release];
|
||||
} else {
|
||||
[self debugLog:[NSString stringWithFormat:@"Could not create toolbar item for preference pane \"%@\", because that pane does not exist.", name]];
|
||||
}
|
||||
}
|
||||
|
||||
NSString *bundleIdentifier = [[NSBundle mainBundle] bundleIdentifier];
|
||||
prefsToolbar = [[NSToolbar alloc] initWithIdentifier:[bundleIdentifier stringByAppendingString:@"_Preferences_Toolbar_Identifier"]];
|
||||
[prefsToolbar setDelegate:self];
|
||||
[prefsToolbar setAllowsUserCustomization:NO];
|
||||
[prefsToolbar setAutosavesConfiguration:NO];
|
||||
[prefsToolbar setDisplayMode:toolbarDisplayMode];
|
||||
#if MAC_OS_X_VERSION_MAX_ALLOWED >= MAC_OS_X_VERSION_10_2
|
||||
[prefsToolbar setSizeMode:toolbarSizeMode];
|
||||
#endif
|
||||
if ((prefsToolbarItems && ([prefsToolbarItems count] > 1)) || alwaysShowsToolbar) {
|
||||
[prefsWindow setToolbar:prefsToolbar];
|
||||
} else if (!alwaysShowsToolbar && prefsToolbarItems && ([prefsToolbarItems count] == 1)) {
|
||||
[self debugLog:@"Not showing toolbar in Preferences window because there is only one preference pane loaded. You can override this behaviour using -[setAlwaysShowsToolbar:YES]."];
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
- (NSToolbarDisplayMode)toolbarDisplayMode
|
||||
{
|
||||
return toolbarDisplayMode;
|
||||
}
|
||||
|
||||
|
||||
- (void)setToolbarDisplayMode:(NSToolbarDisplayMode)displayMode
|
||||
{
|
||||
toolbarDisplayMode = displayMode;
|
||||
}
|
||||
|
||||
|
||||
#if MAC_OS_X_VERSION_MAX_ALLOWED >= MAC_OS_X_VERSION_10_2
|
||||
- (NSToolbarSizeMode)toolbarSizeMode
|
||||
{
|
||||
return toolbarSizeMode;
|
||||
}
|
||||
|
||||
|
||||
- (void)setToolbarSizeMode:(NSToolbarSizeMode)sizeMode
|
||||
{
|
||||
toolbarSizeMode = sizeMode;
|
||||
}
|
||||
#endif
|
||||
|
||||
|
||||
- (void)prefsToolbarItemClicked:(NSToolbarItem*)item
|
||||
{
|
||||
if (![[item itemIdentifier] isEqualToString:[prefsWindow title]]) {
|
||||
[self loadPrefsPaneNamed:[item itemIdentifier] display:YES];
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
- (NSArray *)toolbarAllowedItemIdentifiers:(NSToolbar*)toolbar
|
||||
{
|
||||
return panesOrder;
|
||||
}
|
||||
|
||||
|
||||
- (NSArray *)toolbarDefaultItemIdentifiers:(NSToolbar*)toolbar
|
||||
{
|
||||
return panesOrder;
|
||||
}
|
||||
|
||||
|
||||
- (NSToolbarItem *)toolbar:(NSToolbar *)toolbar itemForItemIdentifier:(NSString *)itemIdentifier willBeInsertedIntoToolbar:(BOOL)flag
|
||||
{
|
||||
return [prefsToolbarItems objectForKey:itemIdentifier];
|
||||
}
|
||||
|
||||
|
||||
// ************************************************
|
||||
// Accessors
|
||||
// ************************************************
|
||||
|
||||
|
||||
- (NSWindow *)preferencesWindow
|
||||
{
|
||||
return prefsWindow;
|
||||
}
|
||||
|
||||
|
||||
- (NSString *)bundleExtension
|
||||
{
|
||||
return bundleExtension;
|
||||
}
|
||||
|
||||
|
||||
- (NSString *)searchPath
|
||||
{
|
||||
return searchPath;
|
||||
}
|
||||
|
||||
|
||||
- (NSArray *)panesOrder
|
||||
{
|
||||
return panesOrder;
|
||||
}
|
||||
|
||||
|
||||
- (void)setPanesOrder:(NSArray *)newPanesOrder
|
||||
{
|
||||
[panesOrder removeAllObjects];
|
||||
|
||||
NSEnumerator *enumerator = [newPanesOrder objectEnumerator];
|
||||
NSString *name;
|
||||
|
||||
while (name = [enumerator nextObject]) {
|
||||
if ([preferencePanes objectForKey:name] != nil) {
|
||||
[panesOrder addObject:name];
|
||||
} else {
|
||||
[self debugLog:[NSString stringWithFormat:@"Did not add preference pane \"%@\" to the toolbar ordering array, because that pane does not exist.", name]];
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
- (BOOL)debug
|
||||
{
|
||||
return debug;
|
||||
}
|
||||
|
||||
|
||||
- (void)setDebug:(BOOL)newDebug
|
||||
{
|
||||
debug = newDebug;
|
||||
}
|
||||
|
||||
|
||||
- (BOOL)usesTexturedWindow
|
||||
{
|
||||
return usesTexturedWindow;
|
||||
}
|
||||
|
||||
|
||||
- (void)setUsesTexturedWindow:(BOOL)newUsesTexturedWindow
|
||||
{
|
||||
usesTexturedWindow = newUsesTexturedWindow;
|
||||
}
|
||||
|
||||
|
||||
- (BOOL)alwaysShowsToolbar
|
||||
{
|
||||
return alwaysShowsToolbar;
|
||||
}
|
||||
|
||||
|
||||
- (void)setAlwaysShowsToolbar:(BOOL)newAlwaysShowsToolbar
|
||||
{
|
||||
alwaysShowsToolbar = newAlwaysShowsToolbar;
|
||||
}
|
||||
|
||||
|
||||
- (BOOL)alwaysOpensCentered
|
||||
{
|
||||
return alwaysOpensCentered;
|
||||
}
|
||||
|
||||
|
||||
- (void)setAlwaysOpensCentered:(BOOL)newAlwaysOpensCentered
|
||||
{
|
||||
alwaysOpensCentered = newAlwaysOpensCentered;
|
||||
}
|
||||
|
||||
|
||||
@end
|
Loading…
Reference in New Issue