Chameleon Applications

Chameleon Applications Commit Details

Date:2010-01-24 09:15:08 (14 years 2 months ago)
Author:Rekursor
Commit:48
Parents: 47
Message:Full bootOptions parser engine done. All parsing is done and injected in the interface automatically.
Changes:
M/trunk/ChameleonPrefPane/ChameleonPrefPane.xcodeproj/project.pbxproj
M/trunk/ChameleonPrefPane/Sources/BootSetupController.mm
M/trunk/ChameleonPrefPane/Sources/AdvancedSetupController.mm
M/trunk/ChameleonPrefPane/Sources/ChameleonPrefPane.mm
M/trunk/ChameleonPrefPane/CHANGES
M/trunk/ChameleonPrefPane/Sources/PreferencesControllerBase.h
M/trunk/ChameleonPrefPane/English.lproj/Chameleon.xib
M/trunk/ChameleonPrefPane/Sources/PreferencesControllerBase.mm
M/trunk/ChameleonPrefPane/Sources/string_util.h
M/trunk/ChameleonPrefPane/Sources/PeripheralsController.mm
M/trunk/ChameleonPrefPane/Sources/BootFlagsController.mm

File differences

trunk/ChameleonPrefPane/Sources/ChameleonPrefPane.mm
101101
102102
103103
104
105
106
107
104
108105
109106
110107
......
115112
116113
117114
118
119
120
121
115
116
122117
123118
124119
......
156151
157152
158153
159
160
161
162
154
163155
164156
165157
......
263255
264256
265257
266
258
259
260
261
267262
268263
269264
[mPartitionsDict retain];
// Initialize bootConfig desc dict
[[BootSetupController instance] addOptionsDesc];
[[BootFlagsController instance] addOptionsDesc];
[[PeripheralsController instance] addOptionsDesc];
[[AdvancedSetupController instance] addOptionsDesc];
[PreferencesControllerBase doForEachGroup: AddOptionsDesc withOption: nil];
if (oldGlobalPreferences!=nil)
{
else
{ // Create a preference plist file with Defaults values
oldGlobalPreferences = [[NSMutableDictionary alloc] init];
[[BootSetupController instance]loadOptionsFromPreferencesFile: oldGlobalPreferences];
[[BootSetupController instance]loadOptionsFromPreferencesFile: oldGlobalPreferences];
[[BootSetupController instance]loadOptionsFromPreferencesFile: oldGlobalPreferences];
[[BootSetupController instance]loadOptionsFromPreferencesFile: oldGlobalPreferences];
[PreferencesControllerBase doForEachGroup: LoadPreferencesOptions withOption: oldGlobalPreferences];
// Initialize defaults
[oldGlobalPreferences setObject: [[NSNumber alloc] initWithInt: CurrentPreferencesFileVersion]
forKey: keyPreferencesFileVersion];
[mStatusText setEnabled:[self isUnlocked]];
// Refresh other panels
[[BootSetupController instance] refreshLockStates];
[[BootFlagsController instance] refreshLockStates];
[[PeripheralsController instance] refreshLockStates];
[[AdvancedSetupController instance] refreshLockStates];
[PreferencesControllerBase doForEachGroup: RefreshLockStates withOption: nil];
}
val = [mOptionsDict valueForKey: keySwapHD02];
[[BootSetupController instance]->mSwapHD02 setIntValue: [val intValue] ];
[[BootSetupController instance] doSwapHD: [val boolValue] save: false src:0 dst:2];
// Load all boot Options into the interface components
[PreferencesControllerBase loadOptionsFromBootFile];
[self selectDefaultPartition];
}
trunk/ChameleonPrefPane/Sources/PreferencesControllerBase.h
77
88
99
10
1011
1112
1213
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
1431
1532
1633
......
3350
3451
3552
36
37
53
3854
3955
4056
......
4763
4864
4965
66
67
68
69
70
71
5072
5173
5274
75
76
77
78
79
80
5381
5482
5583
56
57
58
84
5985
6086
6187
#import <Cocoa/Cocoa.h>
#import <ChameleonPrefPane.h>
#import "string_util.h"
#import "BootPropertyList.h"
#import <ShellProcess.h>
// ENHANCE ME: remove this globals and integrate them in ChameleonPrefPan or at least
//--------------------------------------------------------------------------
const char * const kKernelFlags = "Kernel Flags";
//--------------------------------------------------------------------------
typedef enum GroupAction
{
SetDefaultValues,
RefreshLockStates,
LoadPreferencesOptions,
LoadBootConfigOptions,
AddOptionsDesc,
SaveBootConfigOptions
};
// ENHANCE ME: remove this globals and integrate them in ChameleonPrefPane or at least
// add function accessor entry points
extern PartitionExtractor * partExtractor;
extern BootPropertyList * prop;
// Set refresh all group states {enabled | disabled} depending on the authorizations state
- (void) refreshLockStates;
// load the corresponding Options from the interface
// load the corresponding pref filer options from the interface
- (void) loadOptionsFromPreferencesFile: (NSMutableDictionary*) dict;
@end
// from the id to desc map in prop, set all default values for dict
+ (void) setDefaultValues: (NSMutableDictionary*) dict;
// Register the Group panel for further automatic iteration matters
+ (void) registerPreferencesGroup:(id) myGroup;
// Iterate and execute action for each register group
+ (void) doForEachGroup: (GroupAction) action withOption:(id) option;
// Set refresh state {enabled | disabled} depending on the authorizations state
- (void) refreshLockState: (id) item;
// Unitary Method for Load One option of any type
+ (void) loadOptionsFromBootFile;
// Method for loading all registred options components in the interface
+ (void) loadOptionFromBootFile:(id) optionID;
- (void) loadPreferences;
- (bool) savePreferences;
- (bool) handleSender: (id) sender withButton: (NSButton*) button forKey: (const char *) key;
- (bool) handleSender: (id) sender withButton: (NSButton*) button andField:(NSTextField*) field
forKey: (const char *) key;
- (bool) handleSender: (id) sender;
-(NSMutableDictionary*) preferencesFile;
-(NSMutableDictionary*) preferencesParts;
trunk/ChameleonPrefPane/Sources/string_util.h
55
66
77
8
9
10
11
812
913
1014
......
3135
3236
3337
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
* Created by Rekursor on 1/22/10.
*
*/
#ifndef __CHSTR_UTIL_H
#define __CHSTR_UTIL_H
#include <string>
#include <list>
/**
* trim the space (or any substring) chars on the right of a string
{
return trim_left( trim_right( source , substr) , substr );
}
// const char* str input versions
inline std::string trim_right(const char* src , const std::string& substr = " ")
{
std::string str = src ? src : "";
return str.erase( str.find_last_not_of(substr) + 1);
}
/**
* trim the space chars (or any substring) on the left of a string
*/
inline std::string trim_left( const char* src, const std::string& substr = " ")
{
std::string str = src ? src : "";
return str.erase(0 , str.find_first_not_of(substr) );
}
/**
* trim the space chars (or any substring) on the left and the right of a string
*/
inline std::string trim(const char* src, const std::string& substr = " ")
{
return trim_left( trim_right( src , substr) , substr );
}
/**
* String Tokenizer
* In: src string and separator
* Out: a list of string tokens
*/
std::list<std::string> tokenize(const std::string& src, const std::string& sep=" ");
#endif
trunk/ChameleonPrefPane/Sources/PeripheralsController.mm
1111
1212
1313
14
1415
1516
1617
......
3233
3334
3435
36
3537
3638
3739
......
4850
4951
5052
53
5154
5255
5356
5457
5558
59
5660
5761
58
62
5963
6064
65
6166
6267
63
68
6469
6570
6671
@implementation PeripheralsController
//--------------------------------------------------------------------------
- (id) init
{
self = [super init];
prop->addOptionDesc(mEthernetBuiltIn, nil, OptionYesNo, "EthernetBuiltIn", "No");
}
//--------------------------------------------------------------------------
- (void) refreshLockStates
{
[self refreshLockState: mLegacyLogo ];
[self refreshLockState: mEthernetBuiltIn ];
}
//--------------------------------------------------------------------------
-(void) loadOptionsFromPreferencesFile: (NSMutableDictionary*) dict
{
}
//--------------------------------------------------------------------------
-(IBAction) onCheckButtonChange: (NSButton*) sender
{
[self handleSender: sender];
}
//--------------------------------------------------------------------------
-(IBAction) onTextFiedChange: (NSTextField*) sender
{
[self handleSender: sender];
}
+ (PeripheralsController *)instance { return(gInstance);}
trunk/ChameleonPrefPane/Sources/BootFlagsController.mm
1515
1616
1717
18
1819
1920
2021
2122
2223
2324
25
2426
2527
2628
......
3638
3739
3840
41
3942
4043
4144
......
5255
5356
5457
58
5559
5660
5761
5862
5963
64
6065
6166
62
67
6368
6469
70
6571
6672
67
73
6874
6975
7076
@implementation BootFlagsController
//--------------------------------------------------------------------------
- (id) init
{
self = [super init];
return (gInstance = self);
}
//--------------------------------------------------------------------------
-(void) addOptionsDesc
{
prop->addOptionDesc(mVerbose, nil, OptionUnix, "-v", "");
prop->addOptionDesc(mRescanSingleDrive, nil, OptionYesNo, "Rescan SingleDrive", "No");
}
//--------------------------------------------------------------------------
- (void) refreshLockStates
{
[self refreshLockState: mVerbose];
[self refreshLockState: mRescanSingleDrive];
}
//--------------------------------------------------------------------------
-(void) loadOptionsFromPreferencesFile: (NSMutableDictionary*) dict
{
}
//--------------------------------------------------------------------------
-(IBAction) onCheckButtonChange: (NSButton*) sender
{
[self handleSender: sender];
}
//--------------------------------------------------------------------------
-(IBAction) onTextFiedChange: (NSTextField*) sender
{
[self handleSender: sender];
}
+ (BootFlagsController *)instance { return(gInstance);}
trunk/ChameleonPrefPane/Sources/BootSetupController.mm
2525
2626
2727
28
29
30
28
29
30
3131
3232
3333
......
6262
6363
6464
65
66
67
68
69
70
71
72
73
74
6575
6676
6777
6878
69
79
7080
7181
82
7283
7384
7485
......
223234
224235
225236
237
238
226239
227240
228241
//--------------------------------------------------------------------------
- (void) addOptionsDesc
{
prop->addOptionDesc(mDefaultPartition, nil, OptionString, "Default Partition", "");
prop->addOptionDesc(mHidePartition , mHidePartitionText, OptionString, "HidePartition", "");
prop->addOptionDesc(mRenamePartition , mRenamePartitionText, OptionString, "RenamePartition", "");
prop->addOptionDesc(mDefaultPartition, mDefaultPartitionText, OptionString, "Default Partition", "");
prop->addOptionDesc(mHidePartition , mHidePartitionText, OptionString, "Hide Partition", "");
prop->addOptionDesc(mRenamePartition , mRenamePartitionText, OptionString, "Rename Partition", "");
}
//--------------------------------------------------------------------------
}
//--------------------------------------------------------------------------
-(void) loadOptionsFromBootFile
{
//// Get the Partitions options
//[self loadOptionFromBootFile: mDefaultPartition];
//[self loadOptionFromBootFile: mHidePartition];
//[self loadOptionFromBootFile: mRenamePartition];
}
//--------------------------------------------------------------------------
//--------------------------------------------------------------------------
- (void) loadFrozenParts
{
std::vector<PartitionInfo>& partList = partExtractor->editPartList(); //rw
// iterate for all entries to add
char keyPartN[32] = "";
char keyPartN[32] = "";
char buffer[256]="";
int k=0;
partList.clear();
for (int i=0; i< [[self preferencesParts] count]; i++)
{
{
[self onInjectPartsToFreeze: mInjectFrozenParts];
}
// Factorize this code by using the options descriptor map:
else if ( [self handleSender:sender withButton: mDefaultPartition andField: mDefaultPartitionText
forKey: kDefaultPartition] )
{
trunk/ChameleonPrefPane/Sources/AdvancedSetupController.mm
1111
1212
1313
14
1415
1516
1617
......
2021
2122
2223
23
24
25
26
27
28
29
30
24
25
26
27
28
29
30
31
3132
3233
3334
......
3738
3839
3940
41
4042
4143
4244
......
6668
6769
6870
71
6972
7073
7174
7275
7376
77
7478
7579
76
80
7781
7882
83
7984
8085
81
86
8287
8388
8489
@implementation AdvancedSetupController
//--------------------------------------------------------------------------
- (id) init
{
self = [super init];
//--------------------------------------------------------------------------
- (void) addOptionsDesc
{
prop->addOptionDesc(mKernel, mKernelText, OptionKernel1, "", "mach_kernel"); // empty field for 1 field only "i.e: mach_kernel" syntax
prop->addOptionDesc(mDeviceRd, mDeviceRdText, OptionKernel, "rd", "disk0s1");
prop->addOptionDesc(mArch, mArchText, OptionKernel, "arch", "X86_64");
prop->addOptionDesc(mCPU, mCPUText, OptionKernel, "cpus", "4");
prop->addOptionDesc(mBusRatio, mBusRatioText, OptionKernel, "busratio", "20");
prop->addOptionDesc(mDebug, mDebugText, OptionString, "debug", "0x144");
prop->addOptionDesc(mIO, mIOText, OptionString, "io", "0xffffffff");
prop->addOptionDesc(mDisableKextsBlacklisting, nil, OptionString, "blacklist", "1");
prop->addOptionDesc(mKernel, mKernelText, OptionKernel1, "Kernel", "mach_kernel"); // empty field for 1 field only "i.e: mach_kernel" syntax
prop->addOptionDesc(mDeviceRd, mDeviceRdText, OptionKernel, "rd", "");
prop->addOptionDesc(mArch, mArchText, OptionKernel, "arch", "");
prop->addOptionDesc(mCPU, mCPUText, OptionKernel, "cpus", "");
prop->addOptionDesc(mBusRatio, mBusRatioText, OptionKernel, "busratio", "");
prop->addOptionDesc(mDebug, mDebugText, OptionString, "debug", "");
prop->addOptionDesc(mIO, mIOText, OptionString, "io", "");
prop->addOptionDesc(mDisableKextsBlacklisting, nil, OptionString, "blacklist", "");
prop->addOptionDesc(mDSDTFile, mDSDTFileText, OptionString, "DSDT", "");
prop->addOptionDesc(mDSDTDrop, nil, OptionYesNo, "DropSSDT", "No");
prop->addOptionDesc(mSMBIOSFile,mSMBIOSFileText, OptionString, "SMBIOS", "");
prop->addOptionDesc(mWakeImage, mWakeImageText, OptionString, "WakeImage", "");
}
//--------------------------------------------------------------------------
- (void) refreshLockStates
{
[self refreshLockState: mKernel ];
[self refreshLockState: mWakeImageText ];
}
//--------------------------------------------------------------------------
-(void) loadOptionsFromPreferencesFile: (NSMutableDictionary*) dict
{
}
//--------------------------------------------------------------------------
-(IBAction) onCheckButtonChange: (NSButton*) sender
{
[self handleSender: sender];
}
//--------------------------------------------------------------------------
-(IBAction) onTextFiedChange: (NSTextField*) sender
{
[self handleSender: sender];
}
+ (AdvancedSetupController *)instance { return(gInstance);}
trunk/ChameleonPrefPane/Sources/PreferencesControllerBase.mm
66
77
88
9
910
11
12
13
1014
1115
16
17
18
19
20
21
22
23
24
25
1226
1327
1428
1529
30
1631
1732
1833
1934
35
36
37
2038
2139
2240
......
2442
2543
2644
27
2845
2946
3047
......
4865
4966
5067
68
5169
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
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
52190
53191
54192
......
80218
81219
82220
83
221
84222
85
86
87223
88
89
90
91
92
224
225
226
227
228
229
230
93231
94
95
96
97
98
99
100
101
102
103
104
232
233
234
235
236
237
238
239
240
241
242
243
105244
106
107
108
109
110
111
245
112246
113247
114248
//
#import "PreferencesControllerBase.h"
#import "KernOptionsParser.h"
#include <string>
#include <list>
#include <map>
#include <ctype.h>
//--------------------------------------------------------------------------
static std::list<id> groupList;
// for unix-like options types
static std::map<void*, std::string> IdToUCmdList;
static KernOptionsParser kernelFlags;
//--------------------------------------------------------------------------
@implementation PreferencesControllerBase
-(ChameleonPrefPane*) chameleon { return [ChameleonPrefPane instance]; }
//--------------------------------------------------------------------------
- (id) init
{
self = [super init];
[PreferencesControllerBase registerPreferencesGroup: self];
return self;
}
// from the id to desc map in prop, set all default values for dict
+ (void) setDefaultValues: (NSMutableDictionary*) dict
{
for(const BootOptionDesc* bod = prop->firstOption();bod; bod=prop->nextOption())
{
switch (bod->Type)
}
}
}
//--------------------------------------------------------------------------
+ (void) registerPreferencesGroup:(id) myGroup
{
groupList.push_back(myGroup);
}
//--------------------------------------------------------------------------
+ (void) doForEachGroup: (GroupAction) action withOption:(id) option
{
std::list<id>::iterator it;
for (it=groupList.begin(); it!=groupList.end(); it++)
{
switch (action) {
case SetDefaultValues:
[*it setDefaultValues: option];
break;
case RefreshLockStates:
[*it refreshLockStates ];
break;
case LoadPreferencesOptions:
[*it loadOptionsFromPreferencesFile: option];
break;
case LoadBootConfigOptions:
[*it loadOptionsFromBootFile];
break;
case AddOptionsDesc:
[*it addOptionsDesc];
break;
case SaveBootConfigOptions:
break;
default:
break;
}
}
}
//--------------------------------------------------------------------------
+ (void) loadOptionsFromBootFile
{
// *** TODO
// parse unix like command string:
kernelFlags.parseOptions(prop->getStringForKey(kKernelFlags));
for (const BootOptionDesc* bod=prop->firstOption(); bod; bod=prop->nextOption())
{
[PreferencesControllerBase loadOptionFromBootFile:(id)bod->ID ];
}
}
//--------------------------------------------------------------------------
+ (void) loadOptionFromBootFile:(id) optionID
{
const BootOptionDesc* bod = prop->findOption(optionID);
if (!bod)
{
NSRunAlertPanel(@"Error Parsing Option",@"loadOptionFromBootFile failed",@"OK", nil, nil);
return;
}
const char * stringForKey = prop->getStringForKey(bod->Name);
std::string s = stringForKey ? trim(stringForKey) : "";
switch (bod->Type)
{
case OptionYesNo:
if (stringForKey!=NULL)
[(NSButton*)optionID setIntValue: (toupper(s[0])=='Y' ? 1 : 0 ) ];
break;
case OptionKernel1:
{
int val = (s.length()>0 ? 1 : 0 );
[(NSButton*)optionID setIntValue: val ];
[(NSTextField*) bod->contentID setStringValue:
[[NSString alloc] initWithUTF8String: s.c_str()] ];
[(NSTextField*) bod->contentID setEnabled: val ? true : false];
[(NSTextField*) bod->contentID setEditable: val ? true : false];
}
break;
case OptionString:
[(NSButton*)optionID setIntValue: (s.length()>0 ? 1 : 0 ) ];
[(NSTextField*) bod->contentID setStringValue:
[[NSString alloc] initWithUTF8String: s.c_str()] ];
break;
case OptionUnix:
case OptionKernel:
{
std::string s = kernelFlags.stringFromKey(bod->Name);
if (s.length()>0)
{
[(NSButton*)optionID setIntValue: 1 ];
if(bod->Type==OptionKernel)
{
[(NSTextField*) bod->contentID setStringValue:
[[NSString alloc] initWithUTF8String:
kernelFlags.rightMember(s).c_str()] ];
[(NSTextField*) bod->contentID setEnabled: true];
[(NSTextField*) bod->contentID setEditable: true];
}
}
else
{ // set the default for thiso option
[(NSButton*)optionID setIntValue: (bod->Default[0] ? 1 :0) ];
if(bod->Type==OptionKernel)
{
[(NSTextField*) bod->contentID setEnabled: false];
[(NSTextField*) bod->contentID setEditable: false];
}
}
}
break;
default:
break;
}
}
//--------------------------------------------------------------------------
- (void) refreshLockState: (id) item
{
[item setEnabled:[[ChameleonPrefPane instance] isUnlocked]];
}
//--------------------------------------------------------------------------
- (bool) handleSender: (id) sender withButton: (NSButton*) button forKey:(const char*) key
- (bool) handleSender: (id) sender
{
return [self handleSender: sender withButton: button andField: nil forKey: key];
}
//--------------------------------------------------------------------------
- (bool) handleSender: (id) sender withButton: (NSButton*) button andField:(NSTextField*) field forKey:(const char*) key
{
if((NSButton*)sender!=button || (NSTextField*)sender !=field) return false;
if ((NSButton*)sender==button)
const BootOptionDesc * bod = prop->findOption(sender);
if (!bod) {
NSTextField* textField = (NSTextField*) sender;
std::string content = [[textField stringValue] UTF8String ];
}
else
{
if (prop && prop->isValid())
{
std::string keyValue = prop->getStringForKey(key);
if ( !![button intValue])
{
}
else
{
}
int state = [sender intValue];
switch (bod->Type) {
case OptionKernel:
case OptionKernel1:
case OptionString:
[(NSTextField*) bod->contentID setEnabled: state ? true : false];
[(NSTextField*) bod->contentID setEditable: state ? true : false];
break;
default:
break;
}
}
else
{ // field
}
}
return true;
}
trunk/ChameleonPrefPane/CHANGES
1
2
3
4
5
6
7
18
29
310
- Added full bootOptions loading into the interface with no custom code needed,
all loading features are implemented in base class PreferencesControllerBase,
with the automatic parser engine.
- Implemented the bootOption automatic and generic parsing engine.
Now any option is parsed from bootFile automatically (incl. defaults)
thanks to the underlying engine based on a dynamically constructed
id to desc map and also to the group panel registration init process
- Fixed dmg archives would appear in dynamic partition listing
- Added FREEZE (lock) features, see README.
- Refined cosmetics for the GUI
trunk/ChameleonPrefPane/ChameleonPrefPane.xcodeproj/project.pbxproj
2626
2727
2828
29
30
31
2932
3033
3134
......
6871
6972
7073
74
75
76
7177
7278
7379
......
151157
152158
153159
154
160
161
155162
156163
157
158
159164
160165
161166
......
164169
165170
166171
172
173
167174
168175
169176
170177
171178
172179
180
181
173182
174183
175184
......
234243
235244
236245
246
237247
238248
239249
......
326336
327337
328338
339
340
329341
330342
331343
01993567110AA9FA003B056E /* BootPropertyList.h in Headers */ = {isa = PBXBuildFile; fileRef = 01993565110AA9FA003B056E /* BootPropertyList.h */; };
01993568110AA9FA003B056E /* BootPropertyList.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 01993566110AA9FA003B056E /* BootPropertyList.cpp */; };
01A40F75110550F4002A74CD /* CHANGES in Resources */ = {isa = PBXBuildFile; fileRef = 01A40F74110550F4002A74CD /* CHANGES */; };
01AF5E69110C1C6800816AA8 /* string_util.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 01AF5E68110C1C6800816AA8 /* string_util.cpp */; };
01AF5E6C110C1C9C00816AA8 /* KernOptionsParser.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 01AF5E6A110C1C9C00816AA8 /* KernOptionsParser.cpp */; };
01AF5E6D110C1C9C00816AA8 /* KernOptionsParser.h in Headers */ = {isa = PBXBuildFile; fileRef = 01AF5E6B110C1C9C00816AA8 /* KernOptionsParser.h */; };
01B0E8141108B85A00ACF21B /* ChameleonPrefPane.h in Headers */ = {isa = PBXBuildFile; fileRef = 01B0E80E1108B85A00ACF21B /* ChameleonPrefPane.h */; };
01B0E8151108B85A00ACF21B /* ChameleonPrefPane.mm in Sources */ = {isa = PBXBuildFile; fileRef = 01B0E80F1108B85A00ACF21B /* ChameleonPrefPane.mm */; };
01B0E8161108B85A00ACF21B /* ShellProcess.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 01B0E8101108B85A00ACF21B /* ShellProcess.cpp */; };
01993565110AA9FA003B056E /* BootPropertyList.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = BootPropertyList.h; path = Sources/BootPropertyList.h; sourceTree = "<group>"; };
01993566110AA9FA003B056E /* BootPropertyList.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = BootPropertyList.cpp; path = Sources/BootPropertyList.cpp; sourceTree = "<group>"; };
01A40F74110550F4002A74CD /* CHANGES */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = CHANGES; sourceTree = "<group>"; };
01AF5E68110C1C6800816AA8 /* string_util.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = string_util.cpp; path = ../../../../../../devl/OSX/voodoo/chameleonApplications/trunk/ChameleonPrefPane/Sources/string_util.cpp; sourceTree = SOURCE_ROOT; };
01AF5E6A110C1C9C00816AA8 /* KernOptionsParser.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = KernOptionsParser.cpp; path = ../../../../../../devl/OSX/voodoo/chameleonApplications/trunk/ChameleonPrefPane/Sources/KernOptionsParser.cpp; sourceTree = SOURCE_ROOT; };
01AF5E6B110C1C9C00816AA8 /* KernOptionsParser.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = KernOptionsParser.h; path = ../../../../../../devl/OSX/voodoo/chameleonApplications/trunk/ChameleonPrefPane/Sources/KernOptionsParser.h; sourceTree = SOURCE_ROOT; };
01B0E80E1108B85A00ACF21B /* ChameleonPrefPane.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = ChameleonPrefPane.h; path = Sources/ChameleonPrefPane.h; sourceTree = "<group>"; };
01B0E80F1108B85A00ACF21B /* ChameleonPrefPane.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; name = ChameleonPrefPane.mm; path = Sources/ChameleonPrefPane.mm; sourceTree = "<group>"; };
01B0E8101108B85A00ACF21B /* ShellProcess.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = ShellProcess.cpp; path = Sources/ShellProcess.cpp; sourceTree = "<group>"; };
08FB77AFFE84173DC02AAC07 /* Classes */ = {
isa = PBXGroup;
children = (
01993198110A2C61003B056E /* string_util.h */,
01B0E80E1108B85A00ACF21B /* ChameleonPrefPane.h */,
01B0E80F1108B85A00ACF21B /* ChameleonPrefPane.mm */,
019931DB110A37FA003B056E /* PreferencesControllerBase.h */,
019931DC110A37FA003B056E /* PreferencesControllerBase.mm */,
01B0E80E1108B85A00ACF21B /* ChameleonPrefPane.h */,
01B0E80F1108B85A00ACF21B /* ChameleonPrefPane.mm */,
019930DF110A0CB4003B056E /* BootSetupController.h */,
019930E0110A0CB4003B056E /* BootSetupController.mm */,
019930E6110A0D80003B056E /* BootFlagsController.h */,
019930FD110A0E6F003B056E /* PeripheralsController.mm */,
01993113110A0EB9003B056E /* AdvancedSetupController.h */,
01993114110A0EB9003B056E /* AdvancedSetupController.mm */,
01993198110A2C61003B056E /* string_util.h */,
01AF5E68110C1C6800816AA8 /* string_util.cpp */,
01B0E8111108B85A00ACF21B /* ShellProcess.h */,
01B0E8101108B85A00ACF21B /* ShellProcess.cpp */,
01B0E8131108B85A00ACF21B /* PropertyList.h */,
01B0E8121108B85A00ACF21B /* PropertyList.cpp */,
01993565110AA9FA003B056E /* BootPropertyList.h */,
01993566110AA9FA003B056E /* BootPropertyList.cpp */,
01AF5E6B110C1C9C00816AA8 /* KernOptionsParser.h */,
01AF5E6A110C1C9C00816AA8 /* KernOptionsParser.cpp */,
);
name = Classes;
sourceTree = "<group>";
01993199110A2C61003B056E /* string_util.h in Headers */,
019931DD110A37FA003B056E /* PreferencesControllerBase.h in Headers */,
01993567110AA9FA003B056E /* BootPropertyList.h in Headers */,
01AF5E6D110C1C9C00816AA8 /* KernOptionsParser.h in Headers */,
);
runOnlyForDeploymentPostprocessing = 0;
};
01993116110A0EB9003B056E /* AdvancedSetupController.mm in Sources */,
019931DE110A37FA003B056E /* PreferencesControllerBase.mm in Sources */,
01993568110AA9FA003B056E /* BootPropertyList.cpp in Sources */,
01AF5E69110C1C6800816AA8 /* string_util.cpp in Sources */,
01AF5E6C110C1C9C00816AA8 /* KernOptionsParser.cpp in Sources */,
);
runOnlyForDeploymentPostprocessing = 0;
};
trunk/ChameleonPrefPane/English.lproj/Chameleon.xib
1212
1313
1414
15
15
1616
1717
1818
......
732732
733733
734734
735
735
736736
737737
738738
......
784784
785785
786786
787
787
788788
789789
790790
......
835835
836836
837837
838
838
839839
840840
841841
......
876876
877877
878878
879
879
880880
881881
882882
......
10421042
10431043
10441044
1045
10461045
10471046
10481047
......
14611460
14621461
14631462
1464
1463
14651464
14661465
14671466
......
17671766
17681767
17691768
1770
1769
17711770
17721771
17731772
......
18561855
18571856
18581857
1859
1858
18601859
18611860
18621861
......
18951894
18961895
18971896
1898
1897
18991898
19001899
19011900
......
19561955
19571956
19581957
1959
1958
19601959
19611960
19621961
......
19951994
19961995
19971996
1998
1997
19991998
20001999
20012000
......
20122011
20132012
20142013
2015
2014
20162015
20172016
20182017
......
20292028
20302029
20312030
2032
2031
20332032
20342033
20352034
......
20462045
20472046
20482047
2049
2048
20502049
20512050
20522051
......
24132412
24142413
24152414
2415
24162416
24172417
24182418
24192419
24202420
24212421
2422
2422
24232423
24242424
24252425
24262426
24272427
24282428
2429
2429
24302430
24312431
24322432
......
24732473
24742474
24752475
2476
24762477
2477
2478
24782479
24792480
24802481
......
24832484
24842485
24852486
2486
24872487
24882488
24892489
......
25032503
25042504
25052505
2506
25072506
25082507
25092508
......
25202519
25212520
25222521
2523
25242522
25252523
25262524
......
25392537
25402538
25412539
2542
2543
25442540
25452541
25462542
......
33323328
33333329
33343330
3331
3332
3333
3334
3335
3336
3337
3338
3339
3340
3341
3342
3343
3344
3345
3346
3347
3348
3349
3350
3351
3352
3353
3354
3355
3356
3357
3358
3359
3360
3361
3362
3363
3364
3365
3366
3367
3368
3369
3370
3371
3372
3373
3374
3375
3376
3377
3378
3379
3380
3381
3382
3383
3384
3385
3386
3387
3388
3389
3390
3391
3392
3393
3394
3395
3396
3397
3398
3399
3400
3401
3402
3403
3404
3405
3406
3407
3408
3409
3410
3411
3412
3413
3414
3415
3416
3417
3418
3419
3420
3421
3422
3423
3424
3425
3426
3427
3428
3429
3430
3431
3432
3433
3434
3435
3436
3437
3438
3439
3440
3441
3442
3443
3444
3445
3446
3447
3448
3449
3450
3451
3452
3453
3454
3455
3456
3457
3458
3459
3460
3461
3462
3463
3464
3465
3466
33353467
33363468
33373469
......
37543886
37553887
37563888
3757
37583889
37593890
3891
37603892
37613893
37623894
......
37753907
37763908
37773909
3778
3779
3780
3781
3782
3783
3784
3785
3786
3787
3788
3789
3790
3791
37923910
37933911
37943912
......
47414859
47424860
47434861
4862
4863
4864
4865
4866
4867
4868
4869
4870
4871
4872
4873
4874
4875
47444876
47454877
47464878
......
49645096
49655097
49665098
4967
4968
4969
4970
49715099
49725100
49735101
......
50075135
50085136
50095137
5010
5138
50115139
5012
5140
50135141
50145142
50155143
......
55105638
55115639
55125640
5513
5514
5515
5516
55175641
55185642
55195643
......
55835707
55845708
55855709
5586
5710
55875711
55885712
55895713
</object>
<object class="NSMutableArray" key="IBDocument.EditedObjectIDs">
<bool key="EncodedWithXMLCoder">YES</bool>
<integer value="603"/>
<integer value="172"/>
</object>
<object class="NSArray" key="IBDocument.PluginDependencies">
<bool key="EncodedWithXMLCoder">YES</bool>
<object class="NSTabViewItem" id="1039429426">
<string key="NSIdentifier">2</string>
<object class="NSView" key="NSView" id="451295758">
<reference key="NSNextResponder" ref="869599070"/>
<nil key="NSNextResponder"/>
<int key="NSvFlags">256</int>
<object class="NSMutableArray" key="NSSubviews">
<bool key="EncodedWithXMLCoder">YES</bool>
<object class="NSTextFieldCell" key="NSCell" id="533800303">
<int key="NSCellFlags">611450433</int>
<int key="NSCellFlags2">272630784</int>
<string key="NSContents">hd(0,2)</string>
<string key="NSContents"/>
<reference key="NSSupport" ref="930899267"/>
<reference key="NSControlView" ref="592293744"/>
<bool key="NSDrawsBackground">YES</bool>
<object class="NSTextFieldCell" key="NSCell" id="167604257">
<int key="NSCellFlags">611450433</int>
<int key="NSCellFlags2">272630784</int>
<string key="NSContents">hd(0,2)</string>
<string key="NSContents"/>
<reference key="NSSupport" ref="930899267"/>
<reference key="NSControlView" ref="316034842"/>
<bool key="NSDrawsBackground">YES</bool>
<object class="NSTextFieldCell" key="NSCell" id="631213817">
<int key="NSCellFlags">611450433</int>
<int key="NSCellFlags2">272630784</int>
<string key="NSContents">hd(0,2)</string>
<string key="NSContents"/>
<reference key="NSSupport" ref="930899267"/>
<reference key="NSControlView" ref="386809836"/>
<bool key="NSDrawsBackground">YES</bool>
</object>
</object>
<string key="NSFrame">{{10, 33}, {640, 267}}</string>
<reference key="NSSuperview" ref="869599070"/>
</object>
<string key="NSLabel">Boot Setup</string>
<reference key="NSColor" ref="1061310622"/>
<object class="NSTextFieldCell" key="NSCell" id="766186900">
<int key="NSCellFlags">-1536033215</int>
<int key="NSCellFlags2">272630784</int>
<string key="NSContents">1920x1080x32@60</string>
<string key="NSContents"/>
<reference key="NSSupport" ref="930899267"/>
<reference key="NSControlView" ref="174976306"/>
<bool key="NSDrawsBackground">YES</bool>
<object class="NSTabViewItem" id="645910071">
<string key="NSIdentifier">Item 8</string>
<object class="NSView" key="NSView" id="241622967">
<nil key="NSNextResponder"/>
<reference key="NSNextResponder" ref="869599070"/>
<int key="NSvFlags">256</int>
<object class="NSMutableArray" key="NSSubviews">
<bool key="EncodedWithXMLCoder">YES</bool>
<object class="NSTextFieldCell" key="NSCell" id="57785620">
<int key="NSCellFlags">611450433</int>
<int key="NSCellFlags2">272630784</int>
<string key="NSContents">disk0s2</string>
<string key="NSContents"/>
<reference key="NSSupport" ref="930899267"/>
<reference key="NSControlView" ref="921716680"/>
<bool key="NSDrawsBackground">YES</bool>
<object class="NSTextFieldCell" key="NSCell" id="975853321">
<int key="NSCellFlags">611450433</int>
<int key="NSCellFlags2">272630784</int>
<string key="NSContents">mach_kernel</string>
<string key="NSContents"/>
<reference key="NSSupport" ref="930899267"/>
<reference key="NSControlView" ref="971254835"/>
<bool key="NSDrawsBackground">YES</bool>
<object class="NSTextFieldCell" key="NSCell" id="698993591">
<int key="NSCellFlags">-1536033215</int>
<int key="NSCellFlags2">272630784</int>
<string key="NSContents">x86_64</string>
<string key="NSContents"/>
<reference key="NSSupport" ref="930899267"/>
<reference key="NSControlView" ref="955621909"/>
<bool key="NSDrawsBackground">YES</bool>
<object class="NSTextFieldCell" key="NSCell" id="565272291">
<int key="NSCellFlags">-1536033215</int>
<int key="NSCellFlags2">272630784</int>
<string key="NSContents">0x144</string>
<string key="NSContents"/>
<reference key="NSSupport" ref="930899267"/>
<reference key="NSControlView" ref="515185243"/>
<bool key="NSDrawsBackground">YES</bool>
<object class="NSTextFieldCell" key="NSCell" id="194091880">
<int key="NSCellFlags">611450433</int>
<int key="NSCellFlags2">272630784</int>
<string key="NSContents">0xffffffff</string>
<string key="NSContents"/>
<reference key="NSSupport" ref="930899267"/>
<reference key="NSControlView" ref="426436104"/>
<bool key="NSDrawsBackground">YES</bool>
<object class="NSTextFieldCell" key="NSCell" id="62118797">
<int key="NSCellFlags">-1536033215</int>
<int key="NSCellFlags2">272630784</int>
<string key="NSContents">1</string>
<string key="NSContents"/>
<reference key="NSSupport" ref="930899267"/>
<reference key="NSControlView" ref="286479560"/>
<bool key="NSDrawsBackground">YES</bool>
<object class="NSTextFieldCell" key="NSCell" id="713385892">
<int key="NSCellFlags">611450433</int>
<int key="NSCellFlags2">272630784</int>
<string key="NSContents">20</string>
<string key="NSContents"/>
<reference key="NSSupport" ref="930899267"/>
<reference key="NSControlView" ref="706656551"/>
<bool key="NSDrawsBackground">YES</bool>
</object>
</object>
<string key="NSFrame">{{10, 33}, {640, 267}}</string>
<reference key="NSSuperview" ref="869599070"/>
</object>
<string key="NSLabel">Advanced</string>
<reference key="NSColor" ref="1061310622"/>
<reference key="NSTabView" ref="869599070"/>
</object>
</object>
<reference key="NSSelectedTabViewItem" ref="1039429426"/>
<reference key="NSSelectedTabViewItem" ref="645910071"/>
<reference key="NSFont" ref="930899267"/>
<int key="NSTvFlags">0</int>
<bool key="NSAllowTruncatedLabels">YES</bool>
<bool key="NSDrawsBackground">YES</bool>
<object class="NSMutableArray" key="NSSubviews">
<bool key="EncodedWithXMLCoder">YES</bool>
<reference ref="451295758"/>
<reference ref="241622967"/>
</object>
</object>
<object class="NSButton" id="474865121">
<string key="NSWindowTitle">About the Chameleon Preferences Pane</string>
<string key="NSWindowClass">NSPanel</string>
<nil key="NSViewClass"/>
<string key="NSWindowContentMaxSize">{1.79769e+308, 1.79769e+308}</string>
<object class="NSView" key="NSWindowView" id="908319067">
<reference key="NSNextResponder"/>
<nil key="NSNextResponder"/>
<int key="NSvFlags">256</int>
<object class="NSMutableArray" key="NSSubviews">
<bool key="EncodedWithXMLCoder">YES</bool>
<int key="NSvFlags">268</int>
<string key="NSFrame">{{245, 218}, {38, 17}}</string>
<reference key="NSSuperview" ref="908319067"/>
<reference key="NSWindow"/>
<bool key="NSEnabled">YES</bool>
<object class="NSTextFieldCell" key="NSCell" id="413394443">
<int key="NSCellFlags">68288064</int>
<int key="NSvFlags">268</int>
<string key="NSFrame">{{182, 218}, {52, 17}}</string>
<reference key="NSSuperview" ref="908319067"/>
<reference key="NSWindow"/>
<bool key="NSEnabled">YES</bool>
<object class="NSTextFieldCell" key="NSCell" id="807339214">
<int key="NSCellFlags">68288064</int>
<int key="NSvFlags">268</int>
<string key="NSFrame">{{46, 49}, {373, 154}}</string>
<reference key="NSSuperview" ref="908319067"/>
<reference key="NSWindow"/>
<bool key="NSEnabled">YES</bool>
<object class="NSTextFieldCell" key="NSCell" id="294587452">
<int key="NSCellFlags">-1805517311</int>
</object>
</object>
<string key="NSFrameSize">{464, 255}</string>
<reference key="NSSuperview"/>
<reference key="NSWindow"/>
</object>
<string key="NSScreenRect">{{0, 0}, {1920, 1058}}</string>
<string key="NSMaxSize">{1.79769e+308, 1.79769e+308}</string>
</object>
<int key="connectionID">698</int>
</object>
<object class="IBConnectionRecord">
<object class="IBActionConnection" key="connection">
<string key="label">onCheckButtonChange:</string>
<reference key="source" ref="523685185"/>
<reference key="destination" ref="292282216"/>
</object>
<int key="connectionID">699</int>
</object>
<object class="IBConnectionRecord">
<object class="IBActionConnection" key="connection">
<string key="label">onCheckButtonChange:</string>
<reference key="source" ref="523685185"/>
<reference key="destination" ref="366999"/>
</object>
<int key="connectionID">700</int>
</object>
<object class="IBConnectionRecord">
<object class="IBActionConnection" key="connection">
<string key="label">onCheckButtonChange:</string>
<reference key="source" ref="523685185"/>
<reference key="destination" ref="323622459"/>
</object>
<int key="connectionID">701</int>
</object>
<object class="IBConnectionRecord">
<object class="IBActionConnection" key="connection">
<string key="label">onCheckButtonChange:</string>
<reference key="source" ref="523685185"/>
<reference key="destination" ref="561126957"/>
</object>
<int key="connectionID">702</int>
</object>
<object class="IBConnectionRecord">
<object class="IBActionConnection" key="connection">
<string key="label">onCheckButtonChange:</string>
<reference key="source" ref="523685185"/>
<reference key="destination" ref="339794873"/>
</object>
<int key="connectionID">703</int>
</object>
<object class="IBConnectionRecord">
<object class="IBActionConnection" key="connection">
<string key="label">onCheckButtonChange:</string>
<reference key="source" ref="523685185"/>
<reference key="destination" ref="867800924"/>
</object>
<int key="connectionID">704</int>
</object>
<object class="IBConnectionRecord">
<object class="IBActionConnection" key="connection">
<string key="label">onCheckButtonChange:</string>
<reference key="source" ref="523685185"/>
<reference key="destination" ref="489715876"/>
</object>
<int key="connectionID">705</int>
</object>
<object class="IBConnectionRecord">
<object class="IBActionConnection" key="connection">
<string key="label">onCheckButtonChange:</string>
<reference key="source" ref="523685185"/>
<reference key="destination" ref="969759846"/>
</object>
<int key="connectionID">706</int>
</object>
<object class="IBConnectionRecord">
<object class="IBActionConnection" key="connection">
<string key="label">onCheckButtonChange:</string>
<reference key="source" ref="523685185"/>
<reference key="destination" ref="478279075"/>
</object>
<int key="connectionID">707</int>
</object>
<object class="IBConnectionRecord">
<object class="IBActionConnection" key="connection">
<string key="label">onCheckButtonChange:</string>
<reference key="source" ref="523685185"/>
<reference key="destination" ref="344346433"/>
</object>
<int key="connectionID">708</int>
</object>
<object class="IBConnectionRecord">
<object class="IBActionConnection" key="connection">
<string key="label">onCheckButtonChange:</string>
<reference key="source" ref="523685185"/>
<reference key="destination" ref="353259796"/>
</object>
<int key="connectionID">709</int>
</object>
<object class="IBConnectionRecord">
<object class="IBActionConnection" key="connection">
<string key="label">onTextFiedChange:</string>
<reference key="source" ref="523685185"/>
<reference key="destination" ref="971254835"/>
</object>
<int key="connectionID">710</int>
</object>
<object class="IBConnectionRecord">
<object class="IBActionConnection" key="connection">
<string key="label">onTextFiedChange:</string>
<reference key="source" ref="523685185"/>
<reference key="destination" ref="955621909"/>
</object>
<int key="connectionID">711</int>
</object>
<object class="IBConnectionRecord">
<object class="IBActionConnection" key="connection">
<string key="label">onTextFiedChange:</string>
<reference key="source" ref="523685185"/>
<reference key="destination" ref="515185243"/>
</object>
<int key="connectionID">712</int>
</object>
<object class="IBConnectionRecord">
<object class="IBActionConnection" key="connection">
<string key="label">onTextFiedChange:</string>
<reference key="source" ref="523685185"/>
<reference key="destination" ref="426436104"/>
</object>
<int key="connectionID">713</int>
</object>
<object class="IBConnectionRecord">
<object class="IBActionConnection" key="connection">
<string key="label">onTextFiedChange:</string>
<reference key="source" ref="523685185"/>
<reference key="destination" ref="286479560"/>
</object>
<int key="connectionID">714</int>
</object>
<object class="IBConnectionRecord">
<object class="IBActionConnection" key="connection">
<string key="label">onTextFiedChange:</string>
<reference key="source" ref="523685185"/>
<reference key="destination" ref="706656551"/>
</object>
<int key="connectionID">715</int>
</object>
</object>
<object class="IBMutableOrderedSet" key="objectRecords">
<object class="NSArray" key="orderedObjects">
<reference ref="778294972"/>
<reference ref="276176519"/>
<reference ref="18675440"/>
<reference ref="592293744"/>
<reference ref="316034842"/>
<reference ref="386809836"/>
<reference ref="592293744"/>
</object>
<reference key="parent" ref="451295758"/>
</object>
<reference key="parent" ref="778294972"/>
</object>
<object class="IBObjectRecord">
<int key="objectID">369</int>
<reference key="object" ref="592293744"/>
<object class="NSMutableArray" key="children">
<bool key="EncodedWithXMLCoder">YES</bool>
<reference ref="533800303"/>
</object>
<reference key="parent" ref="1030284511"/>
</object>
<object class="IBObjectRecord">
<int key="objectID">370</int>
<reference key="object" ref="533800303"/>
<reference key="parent" ref="592293744"/>
</object>
<object class="IBObjectRecord">
<int key="objectID">372</int>
<reference key="object" ref="793808229"/>
<object class="NSMutableArray" key="children">
<reference key="object" ref="565603593"/>
<reference key="parent" ref="1067138506"/>
</object>
<object class="IBObjectRecord">
<int key="objectID">369</int>
<reference key="object" ref="592293744"/>
<object class="NSMutableArray" key="children">
<bool key="EncodedWithXMLCoder">YES</bool>
<reference ref="533800303"/>
</object>
<reference key="parent" ref="1030284511"/>
</object>
<object class="IBObjectRecord">
<int key="objectID">370</int>
<reference key="object" ref="533800303"/>
<reference key="parent" ref="592293744"/>
</object>
</object>
</object>
<object class="NSMutableDictionary" key="flattenedProperties">
<string>589.IBPluginDependency</string>
<string>590.IBPluginDependency</string>
<string>591.IBPluginDependency</string>
<string>596.IBPluginDependency</string>
<string>597.IBPluginDependency</string>
<string>598.IBPluginDependency</string>
<string>599.IBPluginDependency</string>
<string>6.IBPluginDependency</string>
<string>6.ImportedFromIB2</string>
<string>603.IBPluginDependency</string>
</object>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<string>{{62, 335}, {668, 368}}</string>
<string>{{344, 266}, {668, 368}}</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<string>{{62, 335}, {668, 368}}</string>
<string>{{344, 266}, {668, 368}}</string>
<integer value="1"/>
<integer value="1"/>
<string>{224.664, 10}</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<object class="NSMutableDictionary">
</object>
</object>
<nil key="sourceID"/>
<int key="maxID">698</int>
<int key="maxID">715</int>
</object>
<object class="IBClassDescriber" key="IBDocument.Classes">
<object class="NSMutableArray" key="referencedPartialClassDescriptions">

Archive Download the corresponding diff file

Revision: 48