Index: ChameleonPrefPane/version.plist =================================================================== --- ChameleonPrefPane/version.plist (revision 0) +++ ChameleonPrefPane/version.plist (revision 1) @@ -0,0 +1,16 @@ + + + + + BuildVersion + 1 + CFBundleShortVersionString + 1.0 + CFBundleVersion + 1.0 + ProjectName + PreferencePaneTemplate + SourceVersion + 270000 + + Index: ChameleonPrefPane/APPLE_LICENSE =================================================================== --- ChameleonPrefPane/APPLE_LICENSE (revision 0) +++ ChameleonPrefPane/APPLE_LICENSE (revision 1) @@ -0,0 +1,367 @@ +APPLE PUBLIC SOURCE LICENSE +Version 2.0 - August 6, 2003 + +Please read this License carefully before downloading this software. +By downloading or using this software, you are agreeing to be bound by +the terms of this License. If you do not or cannot agree to the terms +of this License, please do not download or use the software. + +1. General; Definitions. This License applies to any program or other +work which Apple Computer, Inc. ("Apple") makes publicly available and +which contains a notice placed by Apple identifying such program or +work as "Original Code" and stating that it is subject to the terms of +this Apple Public Source License version 2.0 ("License"). As used in +this License: + +1.1 "Applicable Patent Rights" mean: (a) in the case where Apple is +the grantor of rights, (i) claims of patents that are now or hereafter +acquired, owned by or assigned to Apple and (ii) that cover subject +matter contained in the Original Code, but only to the extent +necessary to use, reproduce and/or distribute the Original Code +without infringement; and (b) in the case where You are the grantor of +rights, (i) claims of patents that are now or hereafter acquired, +owned by or assigned to You and (ii) that cover subject matter in Your +Modifications, taken alone or in combination with Original Code. + +1.2 "Contributor" means any person or entity that creates or +contributes to the creation of Modifications. + +1.3 "Covered Code" means the Original Code, Modifications, the +combination of Original Code and any Modifications, and/or any +respective portions thereof. + +1.4 "Externally Deploy" means: (a) to sublicense, distribute or +otherwise make Covered Code available, directly or indirectly, to +anyone other than You; and/or (b) to use Covered Code, alone or as +part of a Larger Work, in any way to provide a service, including but +not limited to delivery of content, through electronic communication +with a client other than You. + +1.5 "Larger Work" means a work which combines Covered Code or portions +thereof with code not governed by the terms of this License. + +1.6 "Modifications" mean any addition to, deletion from, and/or change +to, the substance and/or structure of the Original Code, any previous +Modifications, the combination of Original Code and any previous +Modifications, and/or any respective portions thereof. When code is +released as a series of files, a Modification is: (a) any addition to +or deletion from the contents of a file containing Covered Code; +and/or (b) any new file or other representation of computer program +statements that contains any part of Covered Code. + +1.7 "Original Code" means (a) the Source Code of a program or other +work as originally made available by Apple under this License, +including the Source Code of any updates or upgrades to such programs +or works made available by Apple under this License, and that has been +expressly identified by Apple as such in the header file(s) of such +work; and (b) the object code compiled from such Source Code and +originally made available by Apple under this License. + +1.8 "Source Code" means the human readable form of a program or other +work that is suitable for making modifications to it, including all +modules it contains, plus any associated interface definition files, +scripts used to control compilation and installation of an executable +(object code). + +1.9 "You" or "Your" means an individual or a legal entity exercising +rights under this License. For legal entities, "You" or "Your" +includes any entity which controls, is controlled by, or is under +common control with, You, where "control" means (a) the power, direct +or indirect, to cause the direction or management of such entity, +whether by contract or otherwise, or (b) ownership of fifty percent +(50%) or more of the outstanding shares or beneficial ownership of +such entity. + +2. Permitted Uses; Conditions & Restrictions. Subject to the terms +and conditions of this License, Apple hereby grants You, effective on +the date You accept this License and download the Original Code, a +world-wide, royalty-free, non-exclusive license, to the extent of +Apple's Applicable Patent Rights and copyrights covering the Original +Code, to do the following: + +2.1 Unmodified Code. You may use, reproduce, display, perform, +internally distribute within Your organization, and Externally Deploy +verbatim, unmodified copies of the Original Code, for commercial or +non-commercial purposes, provided that in each instance: + +(a) You must retain and reproduce in all copies of Original Code the +copyright and other proprietary notices and disclaimers of Apple as +they appear in the Original Code, and keep intact all notices in the +Original Code that refer to this License; and + +(b) You must include a copy of this License with every copy of Source +Code of Covered Code and documentation You distribute or Externally +Deploy, and You may not offer or impose any terms on such Source Code +that alter or restrict this License or the recipients' rights +hereunder, except as permitted under Section 6. + +2.2 Modified Code. You may modify Covered Code and use, reproduce, +display, perform, internally distribute within Your organization, and +Externally Deploy Your Modifications and Covered Code, for commercial +or non-commercial purposes, provided that in each instance You also +meet all of these conditions: + +(a) You must satisfy all the conditions of Section 2.1 with respect to +the Source Code of the Covered Code; + +(b) You must duplicate, to the extent it does not already exist, the +notice in Exhibit A in each file of the Source Code of all Your +Modifications, and cause the modified files to carry prominent notices +stating that You changed the files and the date of any change; and + +(c) If You Externally Deploy Your Modifications, You must make +Source Code of all Your Externally Deployed Modifications either +available to those to whom You have Externally Deployed Your +Modifications, or publicly available. Source Code of Your Externally +Deployed Modifications must be released under the terms set forth in +this License, including the license grants set forth in Section 3 +below, for as long as you Externally Deploy the Covered Code or twelve +(12) months from the date of initial External Deployment, whichever is +longer. You should preferably distribute the Source Code of Your +Externally Deployed Modifications electronically (e.g. download from a +web site). + +2.3 Distribution of Executable Versions. In addition, if You +Externally Deploy Covered Code (Original Code and/or Modifications) in +object code, executable form only, You must include a prominent +notice, in the code itself as well as in related documentation, +stating that Source Code of the Covered Code is available under the +terms of this License with information on how and where to obtain such +Source Code. + +2.4 Third Party Rights. You expressly acknowledge and agree that +although Apple and each Contributor grants the licenses to their +respective portions of the Covered Code set forth herein, no +assurances are provided by Apple or any Contributor that the Covered +Code does not infringe the patent or other intellectual property +rights of any other entity. Apple and each Contributor disclaim any +liability to You for claims brought by any other entity based on +infringement of intellectual property rights or otherwise. As a +condition to exercising the rights and licenses granted hereunder, You +hereby assume sole responsibility to secure any other intellectual +property rights needed, if any. For example, if a third party patent +license is required to allow You to distribute the Covered Code, it is +Your responsibility to acquire that license before distributing the +Covered Code. + +3. Your Grants. In consideration of, and as a condition to, the +licenses granted to You under this License, You hereby grant to any +person or entity receiving or distributing Covered Code under this +License a non-exclusive, royalty-free, perpetual, irrevocable license, +under Your Applicable Patent Rights and other intellectual property +rights (other than patent) owned or controlled by You, to use, +reproduce, display, perform, modify, sublicense, distribute and +Externally Deploy Your Modifications of the same scope and extent as +Apple's licenses under Sections 2.1 and 2.2 above. + +4. Larger Works. You may create a Larger Work by combining Covered +Code with other code not governed by the terms of this License and +distribute the Larger Work as a single product. In each such instance, +You must make sure the requirements of this License are fulfilled for +the Covered Code or any portion thereof. + +5. Limitations on Patent License. Except as expressly stated in +Section 2, no other patent rights, express or implied, are granted by +Apple herein. Modifications and/or Larger Works may require additional +patent licenses from Apple which Apple may grant in its sole +discretion. + +6. Additional Terms. You may choose to offer, and to charge a fee for, +warranty, support, indemnity or liability obligations and/or other +rights consistent with the scope of the license granted herein +("Additional Terms") to one or more recipients of Covered Code. +However, You may do so only on Your own behalf and as Your sole +responsibility, and not on behalf of Apple or any Contributor. You +must obtain the recipient's agreement that any such Additional Terms +are offered by You alone, and You hereby agree to indemnify, defend +and hold Apple and every Contributor harmless for any liability +incurred by or claims asserted against Apple or such Contributor by +reason of any such Additional Terms. + +7. Versions of the License. Apple may publish revised and/or new +versions of this License from time to time. Each version will be given +a distinguishing version number. Once Original Code has been published +under a particular version of this License, You may continue to use it +under the terms of that version. You may also choose to use such +Original Code under the terms of any subsequent version of this +License published by Apple. No one other than Apple has the right to +modify the terms applicable to Covered Code created under this +License. + +8. NO WARRANTY OR SUPPORT. The Covered Code may contain in whole or in +part pre-release, untested, or not fully tested works. The Covered +Code may contain errors that could cause failures or loss of data, and +may be incomplete or contain inaccuracies. You expressly acknowledge +and agree that use of the Covered Code, or any portion thereof, is at +Your sole and entire risk. THE COVERED CODE IS PROVIDED "AS IS" AND +WITHOUT WARRANTY, UPGRADES OR SUPPORT OF ANY KIND AND APPLE AND +APPLE'S LICENSOR(S) (COLLECTIVELY REFERRED TO AS "APPLE" FOR THE +PURPOSES OF SECTIONS 8 AND 9) AND ALL CONTRIBUTORS EXPRESSLY DISCLAIM +ALL WARRANTIES AND/OR CONDITIONS, EXPRESS OR IMPLIED, INCLUDING, BUT +NOT LIMITED TO, THE IMPLIED WARRANTIES AND/OR CONDITIONS OF +MERCHANTABILITY, OF SATISFACTORY QUALITY, OF FITNESS FOR A PARTICULAR +PURPOSE, OF ACCURACY, OF QUIET ENJOYMENT, AND NONINFRINGEMENT OF THIRD +PARTY RIGHTS. APPLE AND EACH CONTRIBUTOR DOES NOT WARRANT AGAINST +INTERFERENCE WITH YOUR ENJOYMENT OF THE COVERED CODE, THAT THE +FUNCTIONS CONTAINED IN THE COVERED CODE WILL MEET YOUR REQUIREMENTS, +THAT THE OPERATION OF THE COVERED CODE WILL BE UNINTERRUPTED OR +ERROR-FREE, OR THAT DEFECTS IN THE COVERED CODE WILL BE CORRECTED. NO +ORAL OR WRITTEN INFORMATION OR ADVICE GIVEN BY APPLE, AN APPLE +AUTHORIZED REPRESENTATIVE OR ANY CONTRIBUTOR SHALL CREATE A WARRANTY. +You acknowledge that the Covered Code is not intended for use in the +operation of nuclear facilities, aircraft navigation, communication +systems, or air traffic control machines in which case the failure of +the Covered Code could lead to death, personal injury, or severe +physical or environmental damage. + +9. LIMITATION OF LIABILITY. TO THE EXTENT NOT PROHIBITED BY LAW, IN NO +EVENT SHALL APPLE OR ANY CONTRIBUTOR BE LIABLE FOR ANY INCIDENTAL, +SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES ARISING OUT OF OR RELATING +TO THIS LICENSE OR YOUR USE OR INABILITY TO USE THE COVERED CODE, OR +ANY PORTION THEREOF, WHETHER UNDER A THEORY OF CONTRACT, WARRANTY, +TORT (INCLUDING NEGLIGENCE), PRODUCTS LIABILITY OR OTHERWISE, EVEN IF +APPLE OR SUCH CONTRIBUTOR HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH +DAMAGES AND NOTWITHSTANDING THE FAILURE OF ESSENTIAL PURPOSE OF ANY +REMEDY. SOME JURISDICTIONS DO NOT ALLOW THE LIMITATION OF LIABILITY OF +INCIDENTAL OR CONSEQUENTIAL DAMAGES, SO THIS LIMITATION MAY NOT APPLY +TO YOU. In no event shall Apple's total liability to You for all +damages (other than as may be required by applicable law) under this +License exceed the amount of fifty dollars ($50.00). + +10. Trademarks. This License does not grant any rights to use the +trademarks or trade names "Apple", "Apple Computer", "Mac", "Mac OS", +"QuickTime", "QuickTime Streaming Server" or any other trademarks, +service marks, logos or trade names belonging to Apple (collectively +"Apple Marks") or to any trademark, service mark, logo or trade name +belonging to any Contributor. You agree not to use any Apple Marks in +or as part of the name of products derived from the Original Code or +to endorse or promote products derived from the Original Code other +than as expressly permitted by and in strict compliance at all times +with Apple's third party trademark usage guidelines which are posted +at http://www.apple.com/legal/guidelinesfor3rdparties.html. + +11. Ownership. Subject to the licenses granted under this License, +each Contributor retains all rights, title and interest in and to any +Modifications made by such Contributor. Apple retains all rights, +title and interest in and to the Original Code and any Modifications +made by or on behalf of Apple ("Apple Modifications"), and such Apple +Modifications will not be automatically subject to this License. Apple +may, at its sole discretion, choose to license such Apple +Modifications under this License, or on different terms from those +contained in this License or may choose not to license them at all. + +12. Termination. + +12.1 Termination. This License and the rights granted hereunder will +terminate: + +(a) automatically without notice from Apple if You fail to comply with +any term(s) of this License and fail to cure such breach within 30 +days of becoming aware of such breach; + +(b) immediately in the event of the circumstances described in Section +13.5(b); or + +(c) automatically without notice from Apple if You, at any time during +the term of this License, commence an action for patent infringement +against Apple; provided that Apple did not first commence +an action for patent infringement against You in that instance. + +12.2 Effect of Termination. Upon termination, You agree to immediately +stop any further use, reproduction, modification, sublicensing and +distribution of the Covered Code. All sublicenses to the Covered Code +which have been properly granted prior to termination shall survive +any termination of this License. Provisions which, by their nature, +should remain in effect beyond the termination of this License shall +survive, including but not limited to Sections 3, 5, 8, 9, 10, 11, +12.2 and 13. No party will be liable to any other for compensation, +indemnity or damages of any sort solely as a result of terminating +this License in accordance with its terms, and termination of this +License will be without prejudice to any other right or remedy of +any party. + +13. Miscellaneous. + +13.1 Government End Users. The Covered Code is a "commercial item" as +defined in FAR 2.101. Government software and technical data rights in +the Covered Code include only those rights customarily provided to the +public as defined in this License. This customary commercial license +in technical data and software is provided in accordance with FAR +12.211 (Technical Data) and 12.212 (Computer Software) and, for +Department of Defense purchases, DFAR 252.227-7015 (Technical Data -- +Commercial Items) and 227.7202-3 (Rights in Commercial Computer +Software or Computer Software Documentation). Accordingly, all U.S. +Government End Users acquire Covered Code with only those rights set +forth herein. + +13.2 Relationship of Parties. This License will not be construed as +creating an agency, partnership, joint venture or any other form of +legal association between or among You, Apple or any Contributor, and +You will not represent to the contrary, whether expressly, by +implication, appearance or otherwise. + +13.3 Independent Development. Nothing in this License will impair +Apple's right to acquire, license, develop, have others develop for +it, market and/or distribute technology or products that perform the +same or similar functions as, or otherwise compete with, +Modifications, Larger Works, technology or products that You may +develop, produce, market or distribute. + +13.4 Waiver; Construction. Failure by Apple or any Contributor to +enforce any provision of this License will not be deemed a waiver of +future enforcement of that or any other provision. Any law or +regulation which provides that the language of a contract shall be +construed against the drafter will not apply to this License. + +13.5 Severability. (a) If for any reason a court of competent +jurisdiction finds any provision of this License, or portion thereof, +to be unenforceable, that provision of the License will be enforced to +the maximum extent permissible so as to effect the economic benefits +and intent of the parties, and the remainder of this License will +continue in full force and effect. (b) Notwithstanding the foregoing, +if applicable law prohibits or restricts You from fully and/or +specifically complying with Sections 2 and/or 3 or prevents the +enforceability of either of those Sections, this License will +immediately terminate and You must immediately discontinue any use of +the Covered Code and destroy all copies of it that are in your +possession or control. + +13.6 Dispute Resolution. Any litigation or other dispute resolution +between You and Apple relating to this License shall take place in the +Northern District of California, and You and Apple hereby consent to +the personal jurisdiction of, and venue in, the state and federal +courts within that District with respect to this License. The +application of the United Nations Convention on Contracts for the +International Sale of Goods is expressly excluded. + +13.7 Entire Agreement; Governing Law. This License constitutes the +entire agreement between the parties with respect to the subject +matter hereof. This License shall be governed by the laws of the +United States and the State of California, except that body of +California law concerning conflicts of law. + +Where You are located in the province of Quebec, Canada, the following +clause applies: The parties hereby confirm that they have requested +that this License and all related documents be drafted in English. Les +parties ont exige que le present contrat et tous les documents +connexes soient rediges en anglais. + +EXHIBIT A. + +"Portions Copyright (c) 1999-2003 Apple Computer, Inc. All Rights +Reserved. + +This file contains Original Code and/or Modifications of Original Code +as defined in and that are subject to the Apple Public Source License +Version 2.0 (the 'License'). You may not use this file except in +compliance with the License. Please obtain a copy of the License at +http://www.opensource.apple.com/apsl/ and read it before using this +file. + +The Original Code and all software distributed under the License are +distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER +EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES, +INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT. +Please see the License for the specific language governing rights and +limitations under the License." Index: ChameleonPrefPane/Sources/process.cpp =================================================================== --- ChameleonPrefPane/Sources/process.cpp (revision 0) +++ ChameleonPrefPane/Sources/process.cpp (revision 1) @@ -0,0 +1,178 @@ +/* + * shell_process.cpp + * + * Created by Rekursor on 1/17/2010. + * + */ + +#include "process.h" +#include + +//---------------------------------------------------------------- +// portable open process: +FILE * ShellProcess::open(const char *cmd, const char *mode) { + _fpt=::popen(cmd,mode); + return _fpt; +} + +//---------------------------------------------------------------- +int ShellProcess::close() { + int ret = ::pclose(_fpt); + _fpt=NULL; + return ret; +} + +//---------------------------------------------------------------- +void PartitionInfo::removeSpaces(std::string &str) +{ + if (!str.size()) return; + int posl=0,posr=0; + for (posl=0; posl0 && str[posr]==' '; posr--); + str = (posl>posr) ? "" : str.substr(posl, posr-posl+1); +} +//---------------------------------------------------------------- +/** + * return the image index corresponding to a fs: + */ +int PartitionInfo::indexFromFs() const +{ + if (_fsType.find("Apple")!=std::string::npos || + _fsType.find("HFS")!=std::string::npos) + return 0; // Windows + else if (_fsType.find("Windows")!=std::string::npos || + _fsType.find("NTFS")!=std::string::npos || + _fsType.find("FAT")!=std::string::npos) + return 1; // Windows + else if (_fsType.find("Linux")!=std::string::npos) + return 2; // Unknown + return 10; //Unknown + +} +//---------------------------------------------------------------- +bool PartitionInfo::fromPartitionHdString(const char * inHdStr) +{ + if (!inHdStr || !(*inHdStr) || + strlen(inHdStr)<7 || !strstr(inHdStr,"hd(")) return false; + + // enhance me here: should not assume that we have less than 10 partitions per disk/ disks + _disk = inHdStr[3]-'0'; + _part = inHdStr[5]-'0'; + return true; +} +//---------------------------------------------------------------- +const char * PartitionExtractor::checkForRename(const char * label, const char *szHd) +{ + const int MAX_ALIAS_SIZE=31; + static char szAlias[MAX_ALIAS_SIZE+1]; + char *q=szAlias; + const char* szAliases = _renamedParts.c_str(); + + if (!szHd || !*szHd || !szAliases || !*szAliases) return label; // no renaming wanted + + const char * p = strstr(szAliases, szHd); + if(!p || !(*p)) return label; // this volume must not be renamed, or option is malformed + + p+= strlen(szHd); // skip the "hd(n,m) " field + // multiple aliases can be found separated by a semi-column + while(*p && *p != ';' && q<(szAlias+MAX_ALIAS_SIZE)) *q++=*p++; + *q='\0'; + + return szAlias; + +} +//---------------------------------------------------------------- +const std::vector& +PartitionExtractor::extractPartitions(const char* szHide, const char* szRenamed) +{ + const char * const diskTag = "/dev/disk"; + const char * const nameTag = "NAME"; + const char * const sizeTag = "SIZE"; + + PartitionInfo partInfo; + + char line[1024]=""; + char label[32]="", fsType[32]="" ; + size_t len=0; + int disk =0, part=0; + int label_pos=0, size_pos=0; + char * p=0,*q=0; + int skipwhite=0; + + _partList.clear(); + if (szHide) hidePartitions(szHide); + if (szRenamed) renamedPartitions(szRenamed); + this->open("diskutil list"); + + while(get_line(line, sizeof(line)-1)) + { + // printf("%s\n",line); + len = strlen(line); + for(skipwhite=0; line[skipwhite]==' ';skipwhite++); + + const char * sdisk = strstr(line, diskTag); + const char * sName = strstr(line, nameTag); + const char * sSize = strstr(line, sizeTag); + + if (sdisk) + { + // extract disk number + disk= sdisk[strlen(diskTag)]-'0'; + if (disk>=0 && disk =0 if a match happens + */ +int PartitionExtractor::getIndexFromHdStringSpec(const char* inHDStr) +{ + PartitionInfo info; + + if (info.fromPartitionHdString(inHDStr)) // try decode the partition disk and part infos + { + for (int i=0; i<_partList.size(); i++) + { + if (_partList[i].disk() == info.disk() && _partList[i].partition() == info.partition()) + return i; + } + } + + return -1; +} Index: ChameleonPrefPane/Sources/property_list.cpp =================================================================== --- ChameleonPrefPane/Sources/property_list.cpp (revision 0) +++ ChameleonPrefPane/Sources/property_list.cpp (revision 1) @@ -0,0 +1,332 @@ +/* + * property_list.cpp + * + * Created by Rekursor on 1/17/10. + * + */ + +#include "property_list.h" +#include + +/****************************************************************************/ +/** + * Simple parsing and splitting args function, does handle env. vars + */ +static void parseArgs(const char * args, const char* argv[], int argvlen) +{ + // Create a list of args fron the space delimited args parameters + int n=0; + if (args && *args) + { + bool skipSpaces = true; + bool prevCharwasDelim =false; + char * buf = strdup(args); + char lastPriorityDelim=' '; + + printf("Parsing <%s>\n", args); + + int k=0; + for (int i=0; i< strlen(args); i++) + { + switch (args[i]) + { + case ' ': case '\t': + if(!skipSpaces) { + buf[k++]=args[i]; + } + else { + prevCharwasDelim = true; // // keep a track of delim to further split tokens + } + break; + case '\0': + case '\'': + case '"': + if (!skipSpaces &&lastPriorityDelim!=args[i]) + { // consider the imbricated delim as a simple char + buf[k++]=args[i]; + break; + } + + if (!skipSpaces) // end of priority substr + { + skipSpaces = true; + lastPriorityDelim=' '; + buf[k]='\0'; + argv[n++]=strdup(buf); // copy the priority substr + k=0; // reset the buf index for next token + buf[0]='\0'; + } + else + { // start of priority substr + skipSpaces=false; + lastPriorityDelim=args[i]; + if(k>0) // previous string to store first + { + buf[k++]='\0'; // finish the substr + argv[n++]=strdup(buf); // copy the substr + k=0; // rest the index for next token + buf[0]='\0'; + } + //if (args[i] !='\0') buf[k++] = args[i]; // start the new priority substr + } + break; + default: // non delimiters chars + if(skipSpaces && prevCharwasDelim) + { + if(k>0) // a previous substr was before the space + { // store previous token + buf[k++]='\0'; // finish the substr + argv[n++]=strdup(buf); // copy the substr + k=0; // rest the index for next token + buf[0]='\0'; + } + } + prevCharwasDelim = false; + buf[k++]=args[i]; + break; + } + } + + if(*buf) + { + buf[k]='\0'; + argv[n++]=strdup(buf); // copy the last buffer + } + free((void*) buf); + } + argv[n]=NULL; +} + +/****************************************************************************/ + bool executePrivilegedCmd(AuthorizationRef auth, + const char* pathToTool, + const char* args, + AuthorizationFlags flags) +{ + const char * argv[16]; + + parseArgs(args, argv, sizeof(argv)/sizeof(const char*)); + + // Execute Cmd + OSStatus status = AuthorizationExecuteWithPrivileges(auth, pathToTool,flags, (char**)argv, NULL); + + + // Cleanup mem + for (int i=0; argv[i]; i++) free ((void*) argv[i]); + + return status ? false : true; +} + + +/****************************************************************************/ +/** + * Write a property list from a file + */ +bool WritePropertyListToFile( CFPropertyListRef propertyList, CFURLRef fileURL ) +{ + CFDataRef xmlData; + Boolean status; + SInt32 errorCode; + + // Convert the property list into XML data. + xmlData = CFPropertyListCreateXMLData( kCFAllocatorDefault, propertyList ); + + // Write the XML data to the file. + status = CFURLWriteDataAndPropertiesToResource ( + fileURL, // URL to use + xmlData, // data to write + NULL, + &errorCode); + CFRelease(xmlData); + + return status ? true: false; +} + +/****************************************************************************/ +/** + * Read a property list from a file + */ +static CFPropertyListRef CreatePropertyListFromFile( CFURLRef fileURL, CFStringRef * errorString ) { + CFPropertyListRef propertyList; + CFDataRef resourceData; + Boolean status; + SInt32 errorCode; + + // Read the XML file. + status = CFURLCreateDataAndPropertiesFromResource( + kCFAllocatorDefault, + fileURL, + &resourceData, // place to put file data + NULL, + NULL, + &errorCode); + if (!status) return NULL; + + // Reconstitute the dictionary using the XML data. + propertyList = CFPropertyListCreateFromXMLData( kCFAllocatorDefault, + resourceData, + kCFPropertyListMutableContainersAndLeaves, + errorString); + + + CFRelease( resourceData ); + return propertyList; +} + +/****************************************************************************/ +static void show(CFStringRef formatString, ...) { + CFStringRef resultString; + CFDataRef data; + va_list argList; + + va_start(argList, formatString); + resultString = CFStringCreateWithFormatAndArguments(NULL, NULL, formatString, argList); + va_end(argList); + + data = CFStringCreateExternalRepresentation(NULL, resultString, CFStringGetSystemEncoding(), '?'); + + if (data != NULL) { + printf ("%.*s\n\n", (int)CFDataGetLength(data), CFDataGetBytePtr(data)); + CFRelease(data); + } + + CFRelease(resultString); +} +/****************************************************************************/ +/* + * Always return a valid static const string, if the CFSTR is not valid, then we return "" + */ +static const char * CfsToCs(CFStringRef inRef) +{ + static char buffer[512]=""; + if(CFStringGetFileSystemRepresentation (inRef, buffer, sizeof(buffer))) + return buffer; + return ""; +} + +/****************************************************************************/ +/** + * Creates a PropertyList Incstance + */ +PropertyList::~PropertyList() +{ + if (_CFURLRef) CFRelease(_CFURLRef); + if (_proplistRef) CFRelease(_proplistRef); + +} + +/****************************************************************************/ +/** + * Open a properlist from a path name + */ +bool PropertyList::open(const char * path, CFStringRef * errorString, AuthorizationRef auth, AuthorizationFlags flags) +{ + bool ret = false; + + if (!path || !*path) return false; + + if (auth) + { // give write temporary write rights to the file + std::string args = " 0777 "+ _propFilePath; + if(!executePrivilegedCmd(auth, "/bin/chmod", args.c_str(), flags)) + return false; + } + + _propFilePath = path; + + CFStringRef cfPath = CFStringCreateWithCString (kCFAllocatorDefault, path, kCFStringEncodingUTF8); + CFURLRef inURL = CFURLCreateWithFileSystemPath( kCFAllocatorDefault, + cfPath, + kCFURLPOSIXPathStyle, // interpret as POSIX path + false ); // is it a directory? + CFRelease(cfPath); + if (_CFURLRef) CFRelease(_CFURLRef); + _CFURLRef = inURL; + + if (_CFURLRef) + { + _proplistRef = CreatePropertyListFromFile(inURL, errorString); + + if (_proplistRef) + ret= true; + } + if (auth) + { // give write temporary write rights to the file + std::string args = " 0644 "+ _propFilePath; + if(!executePrivilegedCmd(auth, "/bin/chmod", args.c_str(), flags)) + ret= false; + } + + return ret; +} + +/****************************************************************************/ +/** + * Save the current property list + */ +bool PropertyList::save(AuthorizationRef auth, AuthorizationFlags flags) +{ + bool ret=false; + if (auth) + { // give write temporary write rights to the file + std::string args = " 0777 "+ _propFilePath; + if(!executePrivilegedCmd(auth, "/bin/chmod", args.c_str(), flags)) + return false; + } + if (_proplistRef && _CFURLRef) + ret= WritePropertyListToFile(_proplistRef,_CFURLRef); + if (auth) + { // give write temporary write rights to the file + std::string args = " 0644 "+ _propFilePath; + if(!executePrivilegedCmd(auth, "/bin/chmod", args.c_str(), flags)) + return false; + } + return ret; +} + +/****************************************************************************/ +/** + * Extract a sring value from a property list key, + * value returned is not owned by caller, copy it necessary. + */ +const char * PropertyList::getStringForKey(const char *key) +{ + if (!_proplistRef) return 0; + CFDictionaryRef myDict = + (CFGetTypeID(_proplistRef) == CFDictionaryGetTypeID()) ? (CFDictionaryRef) _proplistRef : NULL; + CFStringRef cfKey = CFStringCreateWithCString (kCFAllocatorDefault, key, kCFStringEncodingUTF8); + CFStringRef myString; + + if (myDict && CFDictionaryGetValueIfPresent(myDict, cfKey, (const void **) &myString)) + { + // show(CFSTR("Key '%@' found , value = <%@>\n"), cfKey, !myString ? CFSTR("") : myString); + CFRelease(cfKey); + return CfsToCs(myString); + } + + if(cfKey) CFRelease(cfKey); + return NULL; +} +/****************************************************************************/ +/** + * replace a sring value from a property list key, + * value returned is not owned by caller, copy it necessary. + */ +bool PropertyList::setStringForKey(const char *key, const char * value) +{ + if (!_proplistRef) return false; + bool ret = false; + CFMutableDictionaryRef myDict = + (CFGetTypeID(_proplistRef) == CFDictionaryGetTypeID()) ? (CFMutableDictionaryRef) _proplistRef : NULL; + CFStringRef cfKey = CFStringCreateWithCString (kCFAllocatorDefault, key, kCFStringEncodingUTF8); + CFStringRef myString = CFStringCreateWithCString (kCFAllocatorDefault, value, kCFStringEncodingUTF8); + + if (myDict) { + CFDictionaryReplaceValue(myDict, cfKey, myString); + ret=true; + } + if(cfKey) CFRelease(cfKey); + if(myString) CFRelease(myString); + return ret; +} + Index: ChameleonPrefPane/Sources/ChameleonPrefPane.h =================================================================== --- ChameleonPrefPane/Sources/ChameleonPrefPane.h (revision 0) +++ ChameleonPrefPane/Sources/ChameleonPrefPane.h (revision 1) @@ -0,0 +1,57 @@ +// +// ChameleonPrefPane.h +// ChameleonPrefPane +// +// Created by Rekursor on 1/16/10. +// + +#import +#import +#import + +@interface ChameleonPrefPane : NSPreferencePane +{ +@public + // Objects corresponding to the interface mapping: + IBOutlet NSTableView * mPartitionsTable; + IBOutlet NSTableColumn * mPartitionImgColumn; + IBOutlet NSTableColumn * mFileSystemColumn; + IBOutlet NSTableColumn * mPartitionNameColumn; + IBOutlet NSTableColumn * mPartitionIDColumn; + IBOutlet NSButton * mResetButton; + IBOutlet NSButton * mSwapHD01; + IBOutlet NSButton * mSwapHD02; + IBOutlet NSTextField* mStatusText; + IBOutlet NSBox* mOptions; + + IBOutlet SFAuthorizationView *authView; + IBOutlet NSButton *touchButton; + + NSImage * mMacOSXImage; + NSImage * mWindowsImage; + NSImage * mLinuxImage; + NSImage * mUnknownImage; + NSMutableDictionary *mOptionsDict; + NSString * mOptionsPlistPath; +} + + +- (void)awakeFromNib; +- (void)initBootConfig; +- (id) getImageResource: (NSString *) str ofType: (NSString*) sType; + +//- (void) mainViewDidLoad; +- (void)tableViewSelectionDidChange:(NSNotification *)notification; +- (void) selectDefaultPartition; + +- (IBAction)onRestart: (id)sender; +- (IBAction)onSwapHD: (id)sender; + +- (BOOL)isUnlocked; +- (void) refreshLockStates; +- (void) doSwapHD: (int) val save: (bool) doSave src: (int)isrc dst: (int) idst; +- (void)tableViewSelectionDidChange:(NSNotification *)notification; + +- (void) swapDisks: (bool) bSwap src: (int) iSrc dst: (int) iDst; + +@end Index: ChameleonPrefPane/Sources/ChameleonPrefPane.mm =================================================================== --- ChameleonPrefPane/Sources/ChameleonPrefPane.mm (revision 0) +++ ChameleonPrefPane/Sources/ChameleonPrefPane.mm (revision 1) @@ -0,0 +1,370 @@ +// +// StartupPrefPanePref.m +// +// Created by Rekursor on 1/16/10. +// + +#import "ChameleonPrefPane.h" + +#include +#include +#include + +//-------------------------------------------------------------------------- +// Constants +//-------------------------------------------------------------------------- +static const char * const szBootPaths[]= { + "/", + "/Extra/", + "/Volumes/EFI/Extra/", + "/Volumes/Cham/Extra/", + "/Volumes/BootLoaders/Extra/", + "/Volumes/RX0/Extra/", + "/Library/Preferences/SystemConfiguration/", + NULL +}; + +static const char* const szPropFileName = "com.apple.Boot.plist"; +static const char* const kDefaultPartition = "Default Partition"; +static const char* const kHidePartition = "Hide Partition"; +static const char* const kRenamePartition = "Rename Partition"; +//-------------------------------------------------------------------------- +// Static file variables +//-------------------------------------------------------------------------- +static std::string sCurrentDefaultPartition; + +static PartitionExtractor * partExtractor=NULL; +static PropertyList * prop = NULL; +static int currentRowSel = -1; +//-------------------------------------------------------------------------- + +@implementation ChameleonPrefPane + +//-------------------------------------------------------------------------- +/** + * SFAuthorization delegates + */ +- (void)authorizationViewDidAuthorize:(SFAuthorizationView *)view { + [self selectDefaultPartition]; + [self refreshLockStates]; + +} + +//-------------------------------------------------------------------------- +- (void)authorizationViewDidDeauthorize:(SFAuthorizationView *)view { + [self refreshLockStates]; +} + +//-------------------------------------------------------------------------- +- (void) refreshLockStates +{ + [mPartitionsTable setEnabled:[self isUnlocked]]; + [mSwapHD01 setEnabled:[self isUnlocked]]; + [mSwapHD02 setEnabled:[self isUnlocked]]; + [mResetButton setEnabled:[self isUnlocked]]; + [mStatusText setEnabled:[self isUnlocked]]; +} + +//-------------------------------------------------------------------------- +- (BOOL)isUnlocked +{ + return [authView authorizationState] == SFAuthorizationViewUnlockedState; +} + +//-------------------------------------------------------------------------- +- (id) getImageResource: (NSString *) str ofType: (NSString*) sType +{ + NSImage * img=nil; + if(!str) return nil; + NSBundle * b = [NSBundle bundleForClass:[self class]]; + NSString* sRes = [b pathForResource: str ofType:sType ]; + img = [[NSImage alloc] initWithContentsOfFile: sRes]; + return img; +} +//-------------------------------------------------------------------------- +- (id) init +{ + self = [super init]; + + // set the image to display the current file being played + mMacOSXImage = [self getImageResource: @"MacOSX" ofType: @"tiff"]; + mWindowsImage = [self getImageResource: @"Windows" ofType: @"tiff"]; + mLinuxImage = [self getImageResource: @"Linux" ofType: @"tiff"]; + mUnknownImage = [self getImageResource: @"Unknown" ofType: @"tiff"]; + + + // Retrieve the Info.plist file info + NSBundle * b = [NSBundle bundleForClass:[self class]]; + // Careful here : we must create copies of the path and dict for later use + // other wise it would be released... + mOptionsPlistPath = [[NSString alloc] initWithString: [b pathForResource: @"Data" ofType:@"plist"]]; + NSMutableDictionary * d = [NSMutableDictionary dictionaryWithContentsOfFile: mOptionsPlistPath]; + mOptionsDict = [[NSMutableDictionary alloc] initWithCapacity:64 ]; + [mOptionsDict addEntriesFromDictionary: d]; + + if (!mOptionsDict) NSLog(@"Error reading plist: %@", mOptionsPlistPath); + return self; +} + +//-------------------------------------------------------------------------- +/** When called here, all outlets references are initialized */ +- (void)awakeFromNib +{ // called more than once, we only need one resource init + static bool ft=true; + if(ft) + { + ft=false; + [self initBootConfig]; + } +} + +//-------------------------------------------------------------------------- +- (void) initBootConfig +{ + static bool ft=true; + + // Cosmetics setup + // Setup security for changing boot options + AuthorizationItem items = {kAuthorizationRightExecute, 0, NULL, 0}; + AuthorizationRights rights = {1, &items}; + + [authView setAuthorizationRights:&rights]; + authView.delegate = self; + [authView updateStatus:nil]; + + // create the propertylist object that will handle com.apple.Boot.plist + if(!prop) prop = new PropertyList(); + + // create the process that will extract the diskutil list infos + if(!partExtractor) partExtractor = new PartitionExtractor(); + + if (!prop->isValid()) + { + std::string sPath; + AuthorizationRef auth = [self isUnlocked] ? [[authView authorization] authorizationRef] : NULL; + CFStringRef errorString=NULL; + bool cont =true; + + id sForcedPath = [mOptionsDict valueForKey: @"forceBootConfigPath"]; + const char * szForcedPath = sForcedPath!=nil ? [sForcedPath UTF8String] : NULL; + if (szForcedPath && *szForcedPath) + { + cont = !prop->open(szForcedPath, &errorString, auth); + } + else { + for(int i=0; szBootPaths[i] && cont; i++) + { + sPath = szBootPaths[i]; + sPath += szPropFileName; + cont = !prop->open(sPath.c_str(), &errorString, auth); + } + } + if (cont) + { + if(!ft) return; + ft=false; + [mStatusText setTextColor: [NSColor redColor] ]; + if (errorString) + [mStatusText setStringValue:[NSString stringWithFormat: @"Error while parsing com.apple.Boot.plist : %@", + errorString] ]; + else + [mStatusText setStringValue: @"Error while searching for com.apple.Boot.plist"]; + + } + else + { + [mStatusText setTextColor: [NSColor grayColor] ]; + NSString* ns = [ [NSString alloc] initWithUTF8String:prop->bootConfigPath() ]; + [mStatusText setStringValue: [NSString stringWithFormat: @"bootConfig: %@", ns] ]; + } + if (prop->isValid()) + { + // read options in the plist file + + partExtractor->hidePartitions(prop->getStringForKey(kHidePartition)); + partExtractor->renamedPartitions(prop->getStringForKey(kRenamePartition)); + + // partExtractor->resetSwapping(); + id val = [mOptionsDict valueForKey:@"swapHD01"]; + [mSwapHD01 setIntValue: [val intValue] ]; + [self doSwapHD: [val boolValue] save: false src:0 dst:1]; + + val = [mOptionsDict valueForKey:@"swapHD02"]; + [mSwapHD02 setIntValue: [val intValue] ]; + [self doSwapHD: [val boolValue] save: false src:0 dst:2]; + + [self selectDefaultPartition]; + } + + } +} +//-------------------------------------------------------------------------- +- (void) selectDefaultPartition +{ + if(!authView) return; + + [self refreshLockStates]; + + // try to get the current default partition if any + if(partExtractor && prop && prop->isValid()) + { + const char *sdp = prop->getStringForKey(kDefaultPartition); + sCurrentDefaultPartition = sdp ? sdp : ""; + if (sCurrentDefaultPartition.size()) + { + int index = partExtractor->getIndexFromHdStringSpec(sCurrentDefaultPartition.c_str()); + if (index>=0) + { + [mPartitionsTable selectRowIndexes: + [NSIndexSet indexSetWithIndex:index] byExtendingSelection:NO]; + currentRowSel = index; + } + } + } + +} + +//-------------------------------------------------------------------------- +- (void) swapDisks: (bool) bSwap src: (int) iSrc dst: (int) iDst; +{ + if(!partExtractor || !prop || !prop->isValid()) return; + if (bSwap) + { + partExtractor->swapHD(iSrc, iDst); + } + partExtractor->extractPartitions(); + [ self selectDefaultPartition]; + +} + +//-------------------------------------------------------------------------- +- (void) doSwapHD: (int) val save: (bool) doSave src: (int) isrc dst: (int) idst +{ + + if( val>0) //on + { + [self swapDisks: true src:isrc dst:idst ]; + } + else + { + [self swapDisks: false src:isrc dst:idst ]; + } + + if(doSave) + { + if (! [ mOptionsDict fileIsImmutable] ) + { + if (isrc==0 && idst==1) + [mOptionsDict setObject: [NSNumber numberWithBool: val ? true : false] forKey:@"swapHD01"]; + if (isrc==0 && idst==2) + [mOptionsDict setObject: [NSNumber numberWithBool: val ? true : false] forKey:@"swapHD02"]; + [mOptionsDict writeToFile:mOptionsPlistPath atomically:YES]; + } + } + + [mPartitionsTable reloadData]; + [mPartitionsTable scrollRowToVisible: 0]; + //[self tableViewSelectionDidChange: nil]; + +} +//-------------------------------------------------------------------------- +- (IBAction)onSwapHD: (id)sender +{ + partExtractor->resetSwapping(); + [self doSwapHD: !![mSwapHD01 intValue] save:true src:0 dst:1]; + [self doSwapHD: !![mSwapHD02 intValue] save:true src:0 dst:2]; +} + +//-------------------------------------------------------------------------- +- (IBAction)onRestart: (id)sender +{ + NSInteger n = NSRunAlertPanel(@"Restarting OS X", + @"Are you sure you want to restart now ?", + @"OK", @"Cancel", /*ThirdButtonHere:*/nil + /*, args for a printf-style msg go here */); + if (n==1) + { + AuthorizationRef auth = [self isUnlocked] ? [[authView authorization] authorizationRef] : NULL; + // executePrivilegedCmd(auth,"/sbin/reboot"); + // following DieBuch recommendation (thanks!): + executePrivilegedCmd(auth,"/usr/bin/osascript","-e 'tell application \"System Events\" to restart'"); + } + +} + +//-------------------------------------------------------------------------- +- (void)tableViewSelectionDidChange:(NSNotification *)notification { + + NSTableView* tv= mPartitionsTable; + if ([tv selectedRow] != currentRowSel) + { + currentRowSel = [tv selectedRow]; + if (currentRowSel>=0) + { + const std::vector& partInfo = partExtractor->partList(); + char hd[7+1]="hd(n,m)"; + hd[3]= ('0'+partInfo[currentRowSel].disk()); + hd[5]= ('0'+partInfo[currentRowSel].partition()); + AuthorizationRef auth= [self isUnlocked] ? [[authView authorization] authorizationRef] : NULL; + if(prop->setStringForKey(kDefaultPartition, hd)) + prop->save(auth); + } + } + +} + +//-------------------------------------------------------------------------- +- (NSInteger) numberOfRowsInTableView:(NSTableView *)tableView +{ + return partExtractor ? partExtractor->partList().size() : 0; +} + +//-------------------------------------------------------------------------- +- (id)tableView:(NSTableView *)tableView objectValueForTableColumn:(NSTableColumn *)tableColumn row:(NSInteger)row +{ + id ret=nil; + + const std::vector& partInfo = partExtractor->partList(); + + if (tableColumn == mPartitionImgColumn) + { + switch(partInfo[row].indexFromFs()) + { + case 0: + ret = mMacOSXImage; + break; + case 1: + ret = mWindowsImage; + break; + case 2: + ret = mLinuxImage; + break; + defualt: + ret = mUnknownImage; + break; + + } + } + if (tableColumn == mFileSystemColumn) + { + ret = [NSString stringWithFormat: @"%s", partInfo[row].fsType().c_str() ]; + } + else if (tableColumn == mPartitionNameColumn) + { + ret = [NSString stringWithFormat: @"%s", + partInfo[row].label().c_str() + ]; + } + else if (tableColumn == mPartitionIDColumn) + { + ret= [NSString stringWithFormat: @"hd(%d,%d)", + partInfo[row].disk(), + partInfo[row].partition() + ]; + } + + return ret; +} +//-------------------------------------------------------------------------- + +@end Index: ChameleonPrefPane/Sources/process.h =================================================================== --- ChameleonPrefPane/Sources/process.h (revision 0) +++ ChameleonPrefPane/Sources/process.h (revision 1) @@ -0,0 +1,127 @@ +/* + * shell_process.h + * + * Created by Rekursor on 1/17/2010. + * + */ +#include +#include +#include +#include +#include +#include +#include + +//---------------------------------------------------------------- +const int MAX_HD = 10; + +//---------------------------------------------------------------- +class ShellProcess +{ +public: + // construction / destruction + ShellProcess() {_fpt= NULL;} + ~ShellProcess() {if (_fpt) close();} + + FILE * open (const char *cmd, const char *mode="r"); + int close(); + FILE * desc() const { return _fpt;} // non null if file is open + char * get_line(char * line, size_t s) const {return _fpt ? fgets(line, s, _fpt) : NULL;} + +protected: + FILE * _fpt; +}; + +//---------------------------------------------------------------- +class PartitionInfo +{ +public: + PartitionInfo() : _disk(0), _part(0) {} + PartitionInfo(int disk, int part) { set(disk, part);} + + void disk(int disk) { _disk=disk;} + int disk() const { return _disk;} + + void partition(int part) { _part=part;} + int partition () const { return _part;} + + const std::string& label() const { return _label; } + void label(const char * l) { + if (l) _label = l; + removeSpaces(_label); + } + + const std::string& fsType() const { return _fsType;} + void fsType(const char * fs) { + if (fs) _fsType = fs; + removeSpaces(_fsType); + } + + void set(int disk, int part) { _disk =disk; _part = part;} + bool fromPartitionHdString(const char * inHdStr); + std::string toHdStr() const + { + std::string buf = "hd(n,m)"; + buf[3]= '0'+disk(); + buf[5]='0'+partition(); + return buf; + } + + int indexFromFs() const; +protected: + void removeSpaces(std::string & s); + +private: + int _disk, _part; + std::string _fsType, _label; +}; + +static inline bool isDiskIndexInf(PartitionInfo i, PartitionInfo j) +{ + return ((i.disk()*100+i.partition()) < (j.disk()*100 + j.partition()) ) ; +} + +//---------------------------------------------------------------- +class PartitionExtractor : public ShellProcess +{ +public: + PartitionExtractor() : ShellProcess() { init(); } + + const std::vector& extractPartitions( + const char* szHide=NULL, + const char* szRenamed=NULL); + int getListCount() const {return (int) _partList.size();} + + const std::vector& partList() const + { + return _partList; + } + // get the index in the internal partlist of the hd(n,m) partition specified by the input string + // return -1 if no match, >=0 if a match happens + int getIndexFromHdStringSpec(const char*); + + void hidePartitions(const char* szParts){ _hiddenParts = (szParts ? szParts : "");} + void renamedPartitions(const char* szParts){ _renamedParts = (szParts ? szParts : "");} + const char * checkForRename(const char * label, const char* szHd); + + void swapHD(int src, int dst) + { + if(src < 0 || src > MAX_HD-1 || dst < 0 || dst > MAX_HD-1) return; + _hdRedirTable[src]=dst; + _hdRedirTable[dst]=src; + } + + void resetSwapping() { init();} + +protected: + void init() { + for (int i=0; i _partList; + int _hdRedirTable[MAX_HD]; + std::string _hiddenParts; + std::string _renamedParts; + +}; Index: ChameleonPrefPane/Sources/property_list.h =================================================================== --- ChameleonPrefPane/Sources/property_list.h (revision 0) +++ ChameleonPrefPane/Sources/property_list.h (revision 1) @@ -0,0 +1,51 @@ +/* + * property_list.h + * + * Created by Rekursor on 1/17/10. + * + */ + +#include +#include +#include +#include + +/****************************************************************/ + +/** + * priviledged command run for cmds like property chmods and restard command + */ +bool executePrivilegedCmd(AuthorizationRef auth, + const char* pathToTool, + const char* args=NULL, + AuthorizationFlags flags=kAuthorizationFlagDefaults); + +/****************************************************************/ + +/** + * Simple PropertyList Abstraction + */ +class PropertyList +{ + +public: + PropertyList() : _proplistRef(0), _CFURLRef(0) { } + virtual ~PropertyList(); + + bool open(const char *propListPath, CFStringRef* errString, + AuthorizationRef auth=NULL, AuthorizationFlags flags=kAuthorizationFlagDefaults); + bool save(AuthorizationRef auth=NULL, AuthorizationFlags flags=kAuthorizationFlagDefaults); + bool isValid() const { return _proplistRef!=NULL;} + + const char * getStringForKey(const char *key); + bool setStringForKey(const char* key, const char* value); + const char * bootConfigPath() const { + return _propFilePath.c_str(); + } + +private: + CFPropertyListRef _proplistRef; + CFURLRef _CFURLRef; + std::string _propFilePath; // keep a track of the proplist filename +}; + Index: ChameleonPrefPane/Info.plist =================================================================== --- ChameleonPrefPane/Info.plist (revision 0) +++ ChameleonPrefPane/Info.plist (revision 1) @@ -0,0 +1,34 @@ + + + + + CFBundleDevelopmentRegion + English + CFBundleExecutable + ${EXECUTABLE_NAME} + CFBundleIconFile + Chameleon.icns + CFBundleIdentifier + com.chameleon.${PRODUCT_NAME:identifier} + CFBundleInfoDictionaryVersion + 6.0 + CFBundleName + ${PRODUCT_NAME} + CFBundlePackageType + BNDL + CFBundleShortVersionString + 1.0 + CFBundleSignature + ???? + CFBundleVersion + 1.0 + NSMainNibFile + Chameleon + NSPrefPaneIconFile + Chameleon.tiff + NSPrefPaneIconLabel + Chameleon + NSPrincipalClass + ChameleonPrefPane + + Index: ChameleonPrefPane/CHANGES =================================================================== --- ChameleonPrefPane/CHANGES (revision 0) +++ ChameleonPrefPane/CHANGES (revision 1) @@ -0,0 +1,12 @@ +- Added new paths for bootConfig search now looking in this order: + "/", + "/Extra/", + "/Volumes/EFI/Extra/", + "/Volumes/Cham/Extra/", + "/Volumes/BootLoaders/Extra/", + "/Library/Preferences/SystemConfiguration/", +- Change the restart by replacing the internal reboot shell cmd by an applescript + eq. to the AppleMenu/Restart command +- Fixed nib file loading and initialization problem, possibly fixes the lock pb as well? +- Added Apple_Free filter to filter these free partitions + Index: ChameleonPrefPane/ChameleonPrefPane.xcodeproj/fab.pbxuser =================================================================== --- ChameleonPrefPane/ChameleonPrefPane.xcodeproj/fab.pbxuser (revision 0) +++ ChameleonPrefPane/ChameleonPrefPane.xcodeproj/fab.pbxuser (revision 1) @@ -0,0 +1,2222 @@ +// !$*UTF8*$! +{ + 0146688B1103D07A00088464 /* property_list.h */ = { + isa = PBXFileReference; + fileEncoding = 4; + lastKnownFileType = sourcecode.c.h; + name = property_list.h; + path = /Users/fab/Devl/OSX/ChameleonPrefPane/property_list.h; + sourceTree = ""; + uiCtxt = { + sepNavIntBoundsRect = "{{0, 0}, {997, 676}}"; + sepNavSelRange = "{1070, 15}"; + sepNavVisRange = "{207, 1168}"; + }; + }; + 0146688C1103D07A00088464 /* property_list.cpp */ = { + isa = PBXFileReference; + fileEncoding = 4; + lastKnownFileType = sourcecode.cpp.cpp; + name = property_list.cpp; + path = /Users/fab/Devl/OSX/ChameleonPrefPane/property_list.cpp; + sourceTree = ""; + uiCtxt = { + sepNavIntBoundsRect = "{{0, 0}, {838, 4277}}"; + sepNavSelRange = "{8522, 0}"; + sepNavVisRange = "{7199, 2108}"; + sepNavWindowFrame = "{{600, 15}, {1053, 1019}}"; + }; + }; + 0194AA9A1102E3FC00E33BF1 /* process.cpp */ = { + isa = PBXFileReference; + fileEncoding = 4; + lastKnownFileType = sourcecode.cpp.cpp; + name = process.cpp; + path = /Users/fab/Devl/OSX/ChameleonPrefPane/process.cpp; + sourceTree = ""; + uiCtxt = { + sepNavIntBoundsRect = "{{0, 0}, {670, 2275}}"; + sepNavSelRange = "{988, 4}"; + sepNavVisRange = "{25, 2349}"; + sepNavWindowFrame = "{{15, 29}, {600, 1024}}"; + }; + }; + 0194AA9B1102E3FC00E33BF1 /* process.h */ = { + isa = PBXFileReference; + fileEncoding = 4; + lastKnownFileType = sourcecode.c.h; + name = process.h; + path = /Users/fab/Devl/OSX/ChameleonPrefPane/process.h; + sourceTree = ""; + uiCtxt = { + sepNavIntBoundsRect = "{{0, 0}, {997, 1716}}"; + sepNavSelRange = "{1775, 0}"; + sepNavVisRange = "{1255, 1047}"; + sepNavWindowFrame = "{{15, 30}, {954, 1023}}"; + }; + }; + 0196521811066319009E8F2F /* XCBuildMessageTextBookmark */ = { + isa = PBXTextBookmark; + comments = "'ChameleonPrefPane' may not respond to '-doSwapHD01:save:'"; + fRef = F506C03D013D9D7901CA16C8 /* ChameleonPrefPane.mm */; + fallbackIsa = XCBuildMessageTextBookmark; + rLen = 0; + rLoc = 152; + rType = 1; + }; + 0196521911066319009E8F2F /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = F506C03D013D9D7901CA16C8 /* ChameleonPrefPane.mm */; + name = "ChameleonPrefPane.mm: 220"; + rLen = 0; + rLoc = 7732; + rType = 0; + vrLen = 856; + vrLoc = 6065; + }; + 0196521E11066332009E8F2F /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = F506C03C013D9D7901CA16C8 /* ChameleonPrefPane.h */; + name = "ChameleonPrefPane.h: 42"; + rLen = 0; + rLoc = 1332; + rType = 0; + vrLen = 1374; + vrLoc = 0; + }; + 0196521F11066332009E8F2F /* PlistBookmark */ = { + isa = PlistBookmark; + fRef = 8D202CF70486D31800D8A456 /* Info.plist */; + fallbackIsa = PBXBookmark; + isK = 0; + kPath = ( + NSPrincipalClass, + ); + name = /Users/fab/Devl/OSX/ChameleonPrefPane/Info.plist; + rLen = 0; + rLoc = 9223372036854775807; + }; + 0196522011066332009E8F2F /* PlistBookmark */ = { + isa = PlistBookmark; + fRef = 8D202CF70486D31800D8A456 /* Info.plist */; + fallbackIsa = PBXBookmark; + isK = 0; + kPath = ( + ); + name = /Users/fab/Devl/OSX/ChameleonPrefPane/Info.plist; + rLen = 0; + rLoc = 9223372036854775807; + }; + 0196522311066332009E8F2F /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = F506C03D013D9D7901CA16C8 /* ChameleonPrefPane.mm */; + name = "ChameleonPrefPane.mm: 260"; + rLen = 0; + rLoc = 8580; + rType = 0; + vrLen = 1739; + vrLoc = 5385; + }; + 0196523F110665D7009E8F2F /* PlistBookmark */ = { + isa = PlistBookmark; + fRef = 8D202CF70486D31800D8A456 /* Info.plist */; + fallbackIsa = PBXBookmark; + isK = 0; + kPath = ( + ); + name = /Users/fab/Devl/OSX/ChameleonPrefPane/Info.plist; + rLen = 0; + rLoc = 9223372036854775807; + }; + 01965240110665D7009E8F2F /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = F506C03D013D9D7901CA16C8 /* ChameleonPrefPane.mm */; + name = "ChameleonPrefPane.mm: 237"; + rLen = 3; + rLoc = 7978; + rType = 0; + vrLen = 1434; + vrLoc = 6339; + }; + 01965241110665D7009E8F2F /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = F506C03D013D9D7901CA16C8 /* ChameleonPrefPane.mm */; + name = "ChameleonPrefPane.mm: 242"; + rLen = 0; + rLoc = 8176; + rType = 0; + vrLen = 1408; + vrLoc = 6265; + }; + 0196524C11066719009E8F2F /* XCBuildMessageTextBookmark */ = { + isa = PBXTextBookmark; + comments = "Expected `;' before 'id'"; + fRef = F506C03D013D9D7901CA16C8 /* ChameleonPrefPane.mm */; + fallbackIsa = XCBuildMessageTextBookmark; + rLen = 0; + rLoc = 152; + rType = 1; + }; + 0196524D11066719009E8F2F /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = F506C03D013D9D7901CA16C8 /* ChameleonPrefPane.mm */; + name = "ChameleonPrefPane.mm: 164"; + rLen = 0; + rLoc = 5081; + rType = 0; + vrLen = 1339; + vrLoc = 4382; + }; + 019652541106671A009E8F2F /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = F506C03D013D9D7901CA16C8 /* ChameleonPrefPane.mm */; + name = "ChameleonPrefPane.mm: 161"; + rLen = 0; + rLoc = 5081; + rType = 0; + vrLen = 1843; + vrLoc = 4297; + }; + 0196525D11066828009E8F2F /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 0194AA9A1102E3FC00E33BF1 /* process.cpp */; + name = "process.cpp: 106"; + rLen = 0; + rLoc = 3535; + rType = 0; + vrLen = 1886; + vrLoc = 3; + }; + 0196525E11066828009E8F2F /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 0194AA9B1102E3FC00E33BF1 /* process.h */; + name = "process.h: 105"; + rLen = 0; + rLoc = 2848; + rType = 0; + vrLen = 1627; + vrLoc = 1573; + }; + 0196525F11066828009E8F2F /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = F506C03D013D9D7901CA16C8 /* ChameleonPrefPane.mm */; + name = "ChameleonPrefPane.mm: 161"; + rLen = 0; + rLoc = 5081; + rType = 0; + vrLen = 1842; + vrLoc = 4297; + }; + 0196526011066828009E8F2F /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = F506C03D013D9D7901CA16C8 /* ChameleonPrefPane.mm */; + name = "ChameleonPrefPane.mm: 205"; + rLen = 0; + rLoc = 7382; + rType = 0; + vrLen = 1641; + vrLoc = 5612; + }; + 01965267110668E6009E8F2F /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = F506C03D013D9D7901CA16C8 /* ChameleonPrefPane.mm */; + name = "ChameleonPrefPane.mm: 164"; + rLen = 0; + rLoc = 5081; + rType = 0; + vrLen = 1357; + vrLoc = 4382; + }; + 01965268110668E7009E8F2F /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = F506C03D013D9D7901CA16C8 /* ChameleonPrefPane.mm */; + name = "ChameleonPrefPane.mm: 263"; + rLen = 0; + rLoc = 8580; + rType = 0; + vrLen = 1883; + vrLoc = 6741; + }; + 0196526C11066926009E8F2F /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = F506C03C013D9D7901CA16C8 /* ChameleonPrefPane.h */; + name = "ChameleonPrefPane.h: 41"; + rLen = 0; + rLoc = 1318; + rType = 0; + vrLen = 1370; + vrLoc = 0; + }; + 0196526D11066926009E8F2F /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = F506C03D013D9D7901CA16C8 /* ChameleonPrefPane.mm */; + name = "ChameleonPrefPane.mm: 257"; + rLen = 0; + rLoc = 8580; + rType = 0; + vrLen = 1810; + vrLoc = 6744; + }; + 0196526E11066926009E8F2F /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = F506C03D013D9D7901CA16C8 /* ChameleonPrefPane.mm */; + name = "ChameleonPrefPane.mm: 257"; + rLen = 0; + rLoc = 8580; + rType = 0; + vrLen = 1810; + vrLoc = 6744; + }; + 01965279110669D0009E8F2F /* XCBuildMessageTextBookmark */ = { + isa = PBXTextBookmark; + comments = "'lastval' was not declared in this scope"; + fRef = F506C03D013D9D7901CA16C8 /* ChameleonPrefPane.mm */; + fallbackIsa = XCBuildMessageTextBookmark; + rLen = 1; + rLoc = 252; + rType = 1; + }; + 0196527A110669D0009E8F2F /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = F506C03D013D9D7901CA16C8 /* ChameleonPrefPane.mm */; + name = "ChameleonPrefPane.mm: 227"; + rLen = 0; + rLoc = 7802; + rType = 0; + vrLen = 1121; + vrLoc = 6158; + }; + 0196527B110669D1009E8F2F /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = F506C03D013D9D7901CA16C8 /* ChameleonPrefPane.mm */; + name = "ChameleonPrefPane.mm: 227"; + rLen = 0; + rLoc = 7802; + rType = 0; + vrLen = 1669; + vrLoc = 6150; + }; + 0196529611066C9D009E8F2F /* PlistBookmark */ = { + isa = PlistBookmark; + fRef = 01C909E0110632C300D30F94 /* Data.plist */; + fallbackIsa = PBXBookmark; + isK = 0; + kPath = ( + ); + name = /Users/fab/Devl/OSX/ChameleonPrefPane/Data.plist; + rLen = 0; + rLoc = 9223372036854775807; + }; + 0196529711066C9D009E8F2F /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = F506C03D013D9D7901CA16C8 /* ChameleonPrefPane.mm */; + name = "ChameleonPrefPane.mm: 229"; + rLen = 0; + rLoc = 7831; + rType = 0; + vrLen = 1622; + vrLoc = 6150; + }; + 0196529811066C9D009E8F2F /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = F506C03D013D9D7901CA16C8 /* ChameleonPrefPane.mm */; + name = "ChameleonPrefPane.mm: 162"; + rLen = 16; + rLoc = 5814; + rType = 0; + vrLen = 2119; + vrLoc = 980; + }; + 0196529A11066CC0009E8F2F /* README */ = { + uiCtxt = { + sepNavIntBoundsRect = "{{0, 0}, {845, 670}}"; + sepNavSelRange = "{659, 0}"; + sepNavVisRange = "{0, 663}"; + }; + }; + 019652A211066E28009E8F2F /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 0196529A11066CC0009E8F2F /* README */; + name = "README: 19"; + rLen = 0; + rLoc = 663; + rType = 0; + vrLen = 661; + vrLoc = 0; + }; + 019652A311066E28009E8F2F /* PlistBookmark */ = { + isa = PlistBookmark; + fRef = 01C909E0110632C300D30F94 /* Data.plist */; + fallbackIsa = PBXBookmark; + isK = 0; + kPath = ( + ); + name = /Users/fab/Devl/OSX/ChameleonPrefPane/Data.plist; + rLen = 0; + rLoc = 9223372036854775807; + }; + 019652A411066E28009E8F2F /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = F506C03D013D9D7901CA16C8 /* ChameleonPrefPane.mm */; + name = "ChameleonPrefPane.mm: 162"; + rLen = 16; + rLoc = 5814; + rType = 0; + vrLen = 2011; + vrLoc = 3688; + }; + 019652A511066E28009E8F2F /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = F506C03D013D9D7901CA16C8 /* ChameleonPrefPane.mm */; + name = "ChameleonPrefPane.mm: 162"; + rLen = 16; + rLoc = 5814; + rType = 0; + vrLen = 1977; + vrLoc = 3722; + }; + 019652AE11066E4C009E8F2F /* XCBuildMessageTextBookmark */ = { + isa = PBXTextBookmark; + comments = "'kOptionForceBootConfig' was not declared in this scope"; + fRef = F506C03D013D9D7901CA16C8 /* ChameleonPrefPane.mm */; + fallbackIsa = XCBuildMessageTextBookmark; + rLen = 1; + rLoc = 147; + rType = 1; + }; + 019652AF11066E4C009E8F2F /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = F506C03D013D9D7901CA16C8 /* ChameleonPrefPane.mm */; + name = "ChameleonPrefPane.mm: 131"; + rLen = 0; + rLoc = 4895; + rType = 0; + vrLen = 1136; + vrLoc = 3500; + }; + 019652B011066E4C009E8F2F /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = F506C03D013D9D7901CA16C8 /* ChameleonPrefPane.mm */; + name = "ChameleonPrefPane.mm: 162"; + rLen = 16; + rLoc = 5814; + rType = 0; + vrLen = 1977; + vrLoc = 3722; + }; + 019652B111066E4C009E8F2F /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 01A40E9A11054844002A74CD /* ChameleonPrefPane.mm */; + rLen = 0; + rLoc = 138; + rType = 1; + }; + 019652B211066E4C009E8F2F /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = F506C03D013D9D7901CA16C8 /* ChameleonPrefPane.mm */; + name = "ChameleonPrefPane.mm: 31"; + rLen = 0; + rLoc = 815; + rType = 0; + vrLen = 2096; + vrLoc = 558; + }; + 019652B811066E8D009E8F2F /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = F506C03D013D9D7901CA16C8 /* ChameleonPrefPane.mm */; + name = "ChameleonPrefPane.mm: 31"; + rLen = 0; + rLoc = 815; + rType = 0; + vrLen = 1672; + vrLoc = 3210; + }; + 019652B911066E8D009E8F2F /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 01A40E9A11054844002A74CD /* ChameleonPrefPane.mm */; + rLen = 0; + rLoc = 137; + rType = 1; + }; + 019652BA11066E8D009E8F2F /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = F506C03D013D9D7901CA16C8 /* ChameleonPrefPane.mm */; + name = "ChameleonPrefPane.mm: 131"; + rLen = 0; + rLoc = 4865; + rType = 0; + vrLen = 1692; + vrLoc = 3180; + }; + 019652C311066F17009E8F2F /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 01A40E9A11054844002A74CD /* ChameleonPrefPane.mm */; + rLen = 0; + rLoc = 131; + rType = 1; + }; + 019652C411066F17009E8F2F /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 01A40F74110550F4002A74CD /* CHANGES */; + name = "CHANGES: 11"; + rLen = 0; + rLoc = 464; + rType = 0; + vrLen = 482; + vrLoc = 0; + }; + 019652C511066F17009E8F2F /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = F506C03D013D9D7901CA16C8 /* ChameleonPrefPane.mm */; + name = "ChameleonPrefPane.mm: 136"; + rLen = 0; + rLoc = 5081; + rType = 0; + vrLen = 1939; + vrLoc = 3625; + }; + 019652C611066F17009E8F2F /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 0196529A11066CC0009E8F2F /* README */; + name = "README: 19"; + rLen = 0; + rLoc = 663; + rType = 0; + vrLen = 661; + vrLoc = 0; + }; + 019652C711066F17009E8F2F /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 0196529A11066CC0009E8F2F /* README */; + name = "README: 14"; + rLen = 0; + rLoc = 496; + rType = 0; + vrLen = 663; + vrLoc = 0; + }; + 019652CD11066F44009E8F2F /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 0196529A11066CC0009E8F2F /* README */; + name = "README: 14"; + rLen = 0; + rLoc = 496; + rType = 0; + vrLen = 663; + vrLoc = 0; + }; + 019652CE11066F44009E8F2F /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = F506C03D013D9D7901CA16C8 /* ChameleonPrefPane.mm */; + name = "ChameleonPrefPane.mm: 136"; + rLen = 0; + rLoc = 5081; + rType = 0; + vrLen = 1910; + vrLoc = 3658; + }; + 019652CF11066F44009E8F2F /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 01A40E9A11054844002A74CD /* ChameleonPrefPane.mm */; + rLen = 0; + rLoc = 131; + rType = 1; + }; + 019652D011066F44009E8F2F /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = F506C03D013D9D7901CA16C8 /* ChameleonPrefPane.mm */; + name = "ChameleonPrefPane.mm: 131"; + rLen = 0; + rLoc = 4865; + rType = 0; + vrLen = 2004; + vrLoc = 3658; + }; + 019652DD11066FAA009E8F2F /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 01A40E9A11054844002A74CD /* ChameleonPrefPane.mm */; + rLen = 0; + rLoc = 131; + rType = 1; + }; + 019652DE11066FAA009E8F2F /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = F506C03D013D9D7901CA16C8 /* ChameleonPrefPane.mm */; + name = "ChameleonPrefPane.mm: 131"; + rLen = 0; + rLoc = 4832; + rType = 0; + vrLen = 1995; + vrLoc = 3659; + }; + 019652DF11066FAA009E8F2F /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = F506C03D013D9D7901CA16C8 /* ChameleonPrefPane.mm */; + name = "ChameleonPrefPane.mm: 146"; + rLen = 0; + rLoc = 5281; + rType = 0; + vrLen = 1995; + vrLoc = 3659; + }; + 019652E911066FF6009E8F2F /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = F506C03D013D9D7901CA16C8 /* ChameleonPrefPane.mm */; + name = "ChameleonPrefPane.mm: 132"; + rLen = 0; + rLoc = 4898; + rType = 0; + vrLen = 1922; + vrLoc = 3836; + }; + 019652EA11066FF6009E8F2F /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 01A40E9A11054844002A74CD /* ChameleonPrefPane.mm */; + rLen = 0; + rLoc = 139; + rType = 1; + }; + 019652EB11066FF6009E8F2F /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = F506C03D013D9D7901CA16C8 /* ChameleonPrefPane.mm */; + name = "ChameleonPrefPane.mm: 140"; + rLen = 0; + rLoc = 5141; + rType = 0; + vrLen = 1925; + vrLoc = 3836; + }; + 019652F211067031009E8F2F /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = F506C03D013D9D7901CA16C8 /* ChameleonPrefPane.mm */; + name = "ChameleonPrefPane.mm: 133"; + rLen = 0; + rLoc = 4980; + rType = 0; + vrLen = 1861; + vrLoc = 3900; + }; + 019652F311067031009E8F2F /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 01A40E9A11054844002A74CD /* ChameleonPrefPane.mm */; + rLen = 0; + rLoc = 137; + rType = 1; + }; + 019652F411067031009E8F2F /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = F506C03D013D9D7901CA16C8 /* ChameleonPrefPane.mm */; + name = "ChameleonPrefPane.mm: 134"; + rLen = 0; + rLoc = 5020; + rType = 0; + vrLen = 1867; + vrLoc = 3900; + }; + 019652F911067070009E8F2F /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 01A40E9A11054844002A74CD /* ChameleonPrefPane.mm */; + rLen = 0; + rLoc = 158; + rType = 1; + }; + 019652FA11067070009E8F2F /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = F506C03D013D9D7901CA16C8 /* ChameleonPrefPane.mm */; + name = "ChameleonPrefPane.mm: 159"; + rLen = 0; + rLoc = 5637; + rType = 0; + vrLen = 1844; + vrLoc = 3923; + }; + 019652FB11067070009E8F2F /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 01A412F61105AFB1002A74CD /* process.cpp */; + rLen = 0; + rLoc = 121; + rType = 1; + }; + 019652FC11067070009E8F2F /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 0194AA9A1102E3FC00E33BF1 /* process.cpp */; + name = "process.cpp: 122"; + rLen = 0; + rLoc = 4063; + rType = 0; + vrLen = 1891; + vrLoc = 2618; + }; + 0196532811067FCB009E8F2F /* Linux.tiff */ = { + isa = PBXFileReference; + lastKnownFileType = image.tiff; + name = Linux.tiff; + path = /Users/fab/devl/OSX/ChameleonPrefPane/Linux.tiff; + sourceTree = ""; + }; + 0196532B110680AA009E8F2F /* Windows.tiff */ = { + isa = PBXFileReference; + lastKnownFileType = image.tiff; + name = Windows.tiff; + path = /Users/fab/devl/OSX/ChameleonPrefPane/Windows.tiff; + sourceTree = ""; + }; + 0196532E110680F2009E8F2F /* MacOSX.tiff */ = { + isa = PBXFileReference; + lastKnownFileType = image.tiff; + name = MacOSX.tiff; + path = /Users/fab/devl/OSX/ChameleonPrefPane/MacOSX.tiff; + sourceTree = ""; + }; + 01965335110683A4009E8F2F /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 0194AA9A1102E3FC00E33BF1 /* process.cpp */; + name = "process.cpp: 124"; + rLen = 0; + rLoc = 4184; + rType = 0; + vrLen = 1891; + vrLoc = 2618; + }; + 01965336110683A4009E8F2F /* PlistBookmark */ = { + isa = PlistBookmark; + fRef = 01C909E0110632C300D30F94 /* Data.plist */; + fallbackIsa = PBXBookmark; + isK = 0; + kPath = ( + ); + name = /Users/fab/Devl/OSX/ChameleonPrefPane/Data.plist; + rLen = 0; + rLoc = 9223372036854775807; + }; + 01965337110683A4009E8F2F /* PBXBookmark */ = { + isa = PBXBookmark; + fRef = F506C040013D9D8001CA16C8 /* Chameleon.tiff */; + }; + 01965338110683A4009E8F2F /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 089C167EFE841241C02AAC07 /* English */; + name = "InfoPlist.strings: 3"; + rLen = 0; + rLoc = 101; + rType = 0; + vrLen = 105; + vrLoc = 0; + }; + 01965339110683A4009E8F2F /* PlistBookmark */ = { + isa = PlistBookmark; + fRef = 8D202CF70486D31800D8A456 /* Info.plist */; + fallbackIsa = PBXBookmark; + isK = 0; + kPath = ( + CFBundleIdentifier, + ); + name = /Users/fab/Devl/OSX/ChameleonPrefPane/Info.plist; + rLen = 0; + rLoc = 9223372036854775807; + }; + 0196533A110683A4009E8F2F /* PBXBookmark */ = { + isa = PBXBookmark; + fRef = 0196532B110680AA009E8F2F /* Windows.tiff */; + }; + 0196533B110683A4009E8F2F /* PBXBookmark */ = { + isa = PBXBookmark; + fRef = 0196532811067FCB009E8F2F /* Linux.tiff */; + }; + 0196533C110683A4009E8F2F /* PBXBookmark */ = { + isa = PBXBookmark; + fRef = 0196532E110680F2009E8F2F /* MacOSX.tiff */; + }; + 0196533D110683A4009E8F2F /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = F506C03D013D9D7901CA16C8 /* ChameleonPrefPane.mm */; + name = "ChameleonPrefPane.mm: 141"; + rLen = 0; + rLoc = 5186; + rType = 0; + vrLen = 1777; + vrLoc = 6707; + }; + 0196533E110683A4009E8F2F /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = F506C03C013D9D7901CA16C8 /* ChameleonPrefPane.h */; + name = "ChameleonPrefPane.h: 41"; + rLen = 0; + rLoc = 1318; + rType = 0; + vrLen = 1370; + vrLoc = 0; + }; + 0196533F110683A4009E8F2F /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = F506C03C013D9D7901CA16C8 /* ChameleonPrefPane.h */; + name = "ChameleonPrefPane.h: 17"; + rLen = 0; + rLoc = 427; + rType = 0; + vrLen = 1417; + vrLoc = 0; + }; + 019653601106860C009E8F2F /* XCBuildMessageTextBookmark */ = { + isa = PBXTextBookmark; + comments = "'NSImage' may not respond to '+stringWithFormat:'"; + fRef = F506C03D013D9D7901CA16C8 /* ChameleonPrefPane.mm */; + fallbackIsa = XCBuildMessageTextBookmark; + rLen = 1; + rLoc = 346; + rType = 1; + }; + 019653611106860C009E8F2F /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = F506C03D013D9D7901CA16C8 /* ChameleonPrefPane.mm */; + name = "ChameleonPrefPane.mm: 334"; + rLen = 0; + rLoc = 10646; + rType = 0; + vrLen = 991; + vrLoc = 9453; + }; + 0196536211068610009E8F2F /* PBXBookmark */ = { + isa = PBXBookmark; + fRef = F506C03C013D9D7901CA16C8 /* ChameleonPrefPane.h */; + }; + 01965373110688C6009E8F2F /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 0194AA9A1102E3FC00E33BF1 /* process.cpp */; + rLen = 4; + rLoc = 988; + rType = 0; + }; + 0196537811068906009E8F2F /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = F506C03C013D9D7901CA16C8 /* ChameleonPrefPane.h */; + name = "ChameleonPrefPane.h: 33"; + rLen = 0; + rLoc = 939; + rType = 0; + vrLen = 1533; + vrLoc = 0; + }; + 0196537911068906009E8F2F /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = F506C03D013D9D7901CA16C8 /* ChameleonPrefPane.mm */; + name = "ChameleonPrefPane.mm: 329"; + rLen = 0; + rLoc = 10574; + rType = 0; + vrLen = 1628; + vrLoc = 9008; + }; + 0196537A11068906009E8F2F /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 0194AA9B1102E3FC00E33BF1 /* process.h */; + name = "process.h: 70"; + rLen = 26; + rLoc = 1640; + rType = 0; + vrLen = 1534; + vrLoc = 768; + }; + 0196537B11068906009E8F2F /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 0194AA9A1102E3FC00E33BF1 /* process.cpp */; + name = "process.cpp: 47"; + rLen = 0; + rLoc = 1304; + rType = 0; + vrLen = 1427; + vrLoc = 0; + }; + 0196537E11068906009E8F2F /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 0194AA9A1102E3FC00E33BF1 /* process.cpp */; + name = "process.cpp: 40"; + rLen = 4; + rLoc = 988; + rType = 0; + vrLen = 2349; + vrLoc = 25; + }; + 0196538111068906009E8F2F /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = F506C03C013D9D7901CA16C8 /* ChameleonPrefPane.h */; + name = "ChameleonPrefPane.h: 33"; + rLen = 13; + rLoc = 931; + rType = 0; + vrLen = 1533; + vrLoc = 0; + }; + 019653841106894A009E8F2F /* ChameleonPrefPane.mm:331 */ = { + isa = PBXFileBreakpoint; + actions = ( + ); + breakpointStyle = 0; + continueAfterActions = 0; + countType = 0; + delayBeforeContinue = 0; + fileReference = F506C03D013D9D7901CA16C8 /* ChameleonPrefPane.mm */; + functionName = "-tableView:objectValueForTableColumn:row:"; + hitCount = 0; + ignoreCount = 0; + lineNumber = 331; + location = Chameleon; + modificationTime = 285641648.600263; + originalNumberOfMultipleMatches = 1; + state = 1; + }; + 019653881106894C009E8F2F /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 0194AA9A1102E3FC00E33BF1 /* process.cpp */; + name = "process.cpp: 47"; + rLen = 0; + rLoc = 1304; + rType = 0; + vrLen = 1427; + vrLoc = 0; + }; + 019653891106894C009E8F2F /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = F506C03D013D9D7901CA16C8 /* ChameleonPrefPane.mm */; + name = "ChameleonPrefPane.mm: 329"; + rLen = 0; + rLoc = 10574; + rType = 0; + vrLen = 1205; + vrLoc = 9453; + }; + 0196538A1106894C009E8F2F /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = F506C03D013D9D7901CA16C8 /* ChameleonPrefPane.mm */; + name = "ChameleonPrefPane.mm: 329"; + rLen = 0; + rLoc = 10574; + rType = 0; + vrLen = 1198; + vrLoc = 9460; + }; + 0196538B1106894C009E8F2F /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 0194AA9A1102E3FC00E33BF1 /* process.cpp */; + name = "process.cpp: 40"; + rLen = 4; + rLoc = 988; + rType = 0; + vrLen = 2240; + vrLoc = 25; + }; + 0196538C1106894C009E8F2F /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = F506C03C013D9D7901CA16C8 /* ChameleonPrefPane.h */; + name = "ChameleonPrefPane.h: 33"; + rLen = 13; + rLoc = 931; + rType = 0; + vrLen = 1533; + vrLoc = 0; + }; + 0196538F11068A74009E8F2F /* ChameleonPrefPane.mm:127 */ = { + isa = PBXFileBreakpoint; + actions = ( + ); + breakpointStyle = 0; + continueAfterActions = 0; + countType = 0; + delayBeforeContinue = 0; + fileReference = F506C03D013D9D7901CA16C8 /* ChameleonPrefPane.mm */; + functionName = "-initBootConfig"; + hitCount = 0; + ignoreCount = 0; + lineNumber = 127; + location = Chameleon; + modificationTime = 285641648.600634; + originalNumberOfMultipleMatches = 1; + state = 1; + }; + 0196539311068A78009E8F2F /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 01A412F61105AFB1002A74CD /* process.cpp */; + rLen = 0; + rLoc = 72; + rType = 1; + }; + 0196539411068A78009E8F2F /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 0194AA9A1102E3FC00E33BF1 /* process.cpp */; + name = "process.cpp: 73"; + rLen = 0; + rLoc = 2130; + rType = 0; + vrLen = 1616; + vrLoc = 1311; + }; + 0196539511068A78009E8F2F /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 01A40E9A11054844002A74CD /* ChameleonPrefPane.mm */; + rLen = 0; + rLoc = 320; + rType = 1; + }; + 0196539611068A78009E8F2F /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 0196539711068A78009E8F2F /* NSImage.h */; + name = "NSImage.h: 42"; + rLen = 30; + rLoc = 1070; + rType = 0; + vrLen = 1323; + vrLoc = 0; + }; + 0196539711068A78009E8F2F /* NSImage.h */ = { + isa = PBXFileReference; + name = NSImage.h; + path = /Developer/SDKs/MacOSX10.6.sdk/System/Library/Frameworks/AppKit.framework/Versions/C/Headers/NSImage.h; + sourceTree = ""; + }; + 0196539811068A78009E8F2F /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = F506C03D013D9D7901CA16C8 /* ChameleonPrefPane.mm */; + name = "ChameleonPrefPane.mm: 112"; + rLen = 0; + rLoc = 4111; + rType = 0; + vrLen = 1766; + vrLoc = 2305; + }; + 0196539911068A78009E8F2F /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = F506C03D013D9D7901CA16C8 /* ChameleonPrefPane.mm */; + name = "ChameleonPrefPane.mm: 112"; + rLen = 0; + rLoc = 4111; + rType = 0; + vrLen = 1754; + vrLoc = 2317; + }; + 0196539A11068A78009E8F2F /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 0194AA9A1102E3FC00E33BF1 /* process.cpp */; + name = "process.cpp: 40"; + rLen = 4; + rLoc = 988; + rType = 0; + vrLen = 2240; + vrLoc = 25; + }; + 0196539B11068A78009E8F2F /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = F506C03C013D9D7901CA16C8 /* ChameleonPrefPane.h */; + name = "ChameleonPrefPane.h: 33"; + rLen = 13; + rLoc = 931; + rType = 0; + vrLen = 1533; + vrLoc = 0; + }; + 0196539D11068AA8009E8F2F /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = F506C03D013D9D7901CA16C8 /* ChameleonPrefPane.mm */; + name = "ChameleonPrefPane.mm: 321"; + rLen = 0; + rLoc = 10452; + rType = 0; + vrLen = 944; + vrLoc = 9608; + }; + 0196539E11068AA8009E8F2F /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 0194AA9B1102E3FC00E33BF1 /* process.h */; + rLen = 0; + rLoc = 9223372036854775807; + rType = 0; + }; + 0196539F11068AA8009E8F2F /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 0194AA9B1102E3FC00E33BF1 /* process.h */; + name = "process.h: 77"; + rLen = 0; + rLoc = 1775; + rType = 0; + vrLen = 905; + vrLoc = 1254; + }; + 019653A111068AAB009E8F2F /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = F506C03D013D9D7901CA16C8 /* ChameleonPrefPane.mm */; + name = "ChameleonPrefPane.mm: 115"; + rLen = 0; + rLoc = 4111; + rType = 0; + vrLen = 1754; + vrLoc = 2317; + }; + 019653A211068AAB009E8F2F /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 01A40E9A11054844002A74CD /* ChameleonPrefPane.mm */; + rLen = 0; + rLoc = 117; + rType = 1; + }; + 019653A311068AAB009E8F2F /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = F506C03D013D9D7901CA16C8 /* ChameleonPrefPane.mm */; + name = "ChameleonPrefPane.mm: 112"; + rLen = 0; + rLoc = 4111; + rType = 0; + vrLen = 1891; + vrLoc = 2317; + }; + 019653A411068AAB009E8F2F /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 0194AA9A1102E3FC00E33BF1 /* process.cpp */; + name = "process.cpp: 40"; + rLen = 4; + rLoc = 988; + rType = 0; + vrLen = 2349; + vrLoc = 25; + }; + 019653A511068AAB009E8F2F /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = F506C03C013D9D7901CA16C8 /* ChameleonPrefPane.h */; + name = "ChameleonPrefPane.h: 33"; + rLen = 13; + rLoc = 931; + rType = 0; + vrLen = 1533; + vrLoc = 0; + }; + 019653A911068B54009E8F2F /* Speaker.tiff */ = { + isa = PBXFileReference; + lastKnownFileType = image.tiff; + name = Speaker.tiff; + path = /Users/fab/Devl/OSX/ChameleonPrefPane/Speaker.tiff; + sourceTree = ""; + }; + 019653AD11068B6D009E8F2F /* PBXBookmark */ = { + isa = PBXBookmark; + fRef = 019653A911068B54009E8F2F /* Speaker.tiff */; + }; + 019653AE11068B6D009E8F2F /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = F506C03D013D9D7901CA16C8 /* ChameleonPrefPane.mm */; + name = "ChameleonPrefPane.mm: 112"; + rLen = 0; + rLoc = 4111; + rType = 0; + vrLen = 1881; + vrLoc = 2317; + }; + 019653AF11068B6D009E8F2F /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = F506C03D013D9D7901CA16C8 /* ChameleonPrefPane.mm */; + name = "ChameleonPrefPane.mm: 112"; + rLen = 0; + rLoc = 4111; + rType = 0; + vrLen = 1882; + vrLoc = 2319; + }; + 019653B011068B6D009E8F2F /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 0194AA9A1102E3FC00E33BF1 /* process.cpp */; + name = "process.cpp: 40"; + rLen = 4; + rLoc = 988; + rType = 0; + vrLen = 2349; + vrLoc = 25; + }; + 019653B111068B6D009E8F2F /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = F506C03C013D9D7901CA16C8 /* ChameleonPrefPane.h */; + name = "ChameleonPrefPane.h: 33"; + rLen = 13; + rLoc = 931; + rType = 0; + vrLen = 1533; + vrLoc = 0; + }; + 019653B411068BA9009E8F2F /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = F506C03D013D9D7901CA16C8 /* ChameleonPrefPane.mm */; + name = "ChameleonPrefPane.mm: 80"; + rLen = 0; + rLoc = 2715; + rType = 0; + vrLen = 1881; + vrLoc = 1344; + }; + 019653B511068BA9009E8F2F /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 0194AA9A1102E3FC00E33BF1 /* process.cpp */; + name = "process.cpp: 40"; + rLen = 4; + rLoc = 988; + rType = 0; + vrLen = 2349; + vrLoc = 25; + }; + 019653B611068BA9009E8F2F /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = F506C03C013D9D7901CA16C8 /* ChameleonPrefPane.h */; + name = "ChameleonPrefPane.h: 33"; + rLen = 13; + rLoc = 931; + rType = 0; + vrLen = 1533; + vrLoc = 0; + }; + 019653B711068BAF009E8F2F /* ChameleonPrefPane.mm:90 */ = { + isa = PBXFileBreakpoint; + actions = ( + ); + breakpointStyle = 0; + continueAfterActions = 0; + countType = 0; + delayBeforeContinue = 0; + fileReference = F506C03D013D9D7901CA16C8 /* ChameleonPrefPane.mm */; + functionName = "-init"; + hitCount = 1; + ignoreCount = 0; + lineNumber = 90; + location = Chameleon; + modificationTime = 285641650.828525; + originalNumberOfMultipleMatches = 1; + state = 1; + }; + 019653BB11068BB1009E8F2F /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = F506C03D013D9D7901CA16C8 /* ChameleonPrefPane.mm */; + name = "ChameleonPrefPane.mm: 80"; + rLen = 0; + rLoc = 2715; + rType = 0; + vrLen = 1881; + vrLoc = 1344; + }; + 019653BC11068BB1009E8F2F /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = F506C03D013D9D7901CA16C8 /* ChameleonPrefPane.mm */; + name = "ChameleonPrefPane.mm: 80"; + rLen = 0; + rLoc = 2715; + rType = 0; + vrLen = 1848; + vrLoc = 1377; + }; + 019653BD11068BB1009E8F2F /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 0194AA9A1102E3FC00E33BF1 /* process.cpp */; + name = "process.cpp: 40"; + rLen = 4; + rLoc = 988; + rType = 0; + vrLen = 2240; + vrLoc = 25; + }; + 019653BE11068BB1009E8F2F /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = F506C03C013D9D7901CA16C8 /* ChameleonPrefPane.h */; + name = "ChameleonPrefPane.h: 33"; + rLen = 13; + rLoc = 931; + rType = 0; + vrLen = 1533; + vrLoc = 0; + }; + 01965402110691C2009E8F2F /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 01A40E9A11054844002A74CD /* ChameleonPrefPane.mm */; + rLen = 0; + rLoc = 81; + rType = 1; + }; + 01965403110691C2009E8F2F /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = F506C03C013D9D7901CA16C8 /* ChameleonPrefPane.h */; + name = "ChameleonPrefPane.h: 41"; + rLen = 0; + rLoc = 1100; + rType = 0; + vrLen = 1441; + vrLoc = 136; + }; + 01965404110691C2009E8F2F /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = F506C03D013D9D7901CA16C8 /* ChameleonPrefPane.mm */; + name = "ChameleonPrefPane.mm: 75"; + rLen = 12; + rLoc = 2329; + rType = 0; + vrLen = 1601; + vrLoc = 1512; + }; + 01965405110691C2009E8F2F /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = F506C03D013D9D7901CA16C8 /* ChameleonPrefPane.mm */; + name = "ChameleonPrefPane.mm: 90"; + rLen = 0; + rLoc = 2814; + rType = 0; + vrLen = 1929; + vrLoc = 1901; + }; + 01965406110691C2009E8F2F /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 0194AA9A1102E3FC00E33BF1 /* process.cpp */; + name = "process.cpp: 40"; + rLen = 4; + rLoc = 988; + rType = 0; + vrLen = 2240; + vrLoc = 25; + }; + 01965407110691C2009E8F2F /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = F506C03C013D9D7901CA16C8 /* ChameleonPrefPane.h */; + name = "ChameleonPrefPane.h: 33"; + rLen = 13; + rLoc = 931; + rType = 0; + vrLen = 1577; + vrLoc = 0; + }; + 0196540A110691F0009E8F2F /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 0194AA9B1102E3FC00E33BF1 /* process.h */; + name = "process.h: 77"; + rLen = 0; + rLoc = 1775; + rType = 0; + vrLen = 932; + vrLoc = 1309; + }; + 0196540B110691F0009E8F2F /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 0146688B1103D07A00088464 /* property_list.h */; + name = "property_list.h: 40"; + rLen = 15; + rLoc = 1070; + rType = 0; + vrLen = 1166; + vrLoc = 208; + }; + 0196540C110691F0009E8F2F /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = F506C03C013D9D7901CA16C8 /* ChameleonPrefPane.h */; + name = "ChameleonPrefPane.h: 35"; + rLen = 17; + rLoc = 994; + rType = 0; + vrLen = 1076; + vrLoc = 233; + }; + 0196540D110691F0009E8F2F /* XCBuildMessageTextBookmark */ = { + isa = PBXTextBookmark; + comments = "Objective-c++ message argument(s) are expected before ']' token"; + fRef = F506C03D013D9D7901CA16C8 /* ChameleonPrefPane.mm */; + fallbackIsa = XCBuildMessageTextBookmark; + rLen = 1; + rLoc = 176; + rType = 1; + }; + 0196540E110691F0009E8F2F /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = F506C03D013D9D7901CA16C8 /* ChameleonPrefPane.mm */; + name = "ChameleonPrefPane.mm: 177"; + rLen = 0; + rLoc = 5771; + rType = 0; + vrLen = 1291; + vrLoc = 5011; + }; + 0196540F110691F6009E8F2F /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = F506C03D013D9D7901CA16C8 /* ChameleonPrefPane.mm */; + name = "ChameleonPrefPane.mm: 96"; + rLen = 0; + rLoc = 3088; + rType = 0; + vrLen = 1929; + vrLoc = 1901; + }; + 01965410110691F6009E8F2F /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 0194AA9A1102E3FC00E33BF1 /* process.cpp */; + name = "process.cpp: 40"; + rLen = 4; + rLoc = 988; + rType = 0; + vrLen = 2240; + vrLoc = 25; + }; + 01965411110691F6009E8F2F /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = F506C03C013D9D7901CA16C8 /* ChameleonPrefPane.h */; + name = "ChameleonPrefPane.h: 33"; + rLen = 13; + rLoc = 931; + rType = 0; + vrLen = 1577; + vrLoc = 0; + }; + 0196541611069231009E8F2F /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = F506C03D013D9D7901CA16C8 /* ChameleonPrefPane.mm */; + name = "ChameleonPrefPane.mm: 93"; + rLen = 0; + rLoc = 3027; + rType = 0; + vrLen = 1928; + vrLoc = 1901; + }; + 0196541711069231009E8F2F /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 0194AA9A1102E3FC00E33BF1 /* process.cpp */; + name = "process.cpp: 40"; + rLen = 4; + rLoc = 988; + rType = 0; + vrLen = 2349; + vrLoc = 25; + }; + 0196541811069231009E8F2F /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = F506C03C013D9D7901CA16C8 /* ChameleonPrefPane.h */; + name = "ChameleonPrefPane.h: 33"; + rLen = 13; + rLoc = 931; + rType = 0; + vrLen = 1577; + vrLoc = 0; + }; + 01965427110693C8009E8F2F /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = F506C03C013D9D7901CA16C8 /* ChameleonPrefPane.h */; + name = "ChameleonPrefPane.h: 41"; + rLen = 0; + rLoc = 1105; + rType = 0; + vrLen = 1515; + vrLoc = 88; + }; + 01965428110693C8009E8F2F /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 0196529A11066CC0009E8F2F /* README */; + name = "README: 17"; + rLen = 0; + rLoc = 659; + rType = 0; + vrLen = 663; + vrLoc = 0; + }; + 01965429110693C8009E8F2F /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = F506C03D013D9D7901CA16C8 /* ChameleonPrefPane.mm */; + name = "ChameleonPrefPane.mm: 74"; + rLen = 0; + rLoc = 2303; + rType = 0; + vrLen = 1450; + vrLoc = 9212; + }; + 0196542A110693C8009E8F2F /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = F506C03D013D9D7901CA16C8 /* ChameleonPrefPane.mm */; + name = "ChameleonPrefPane.mm: 176"; + rLen = 0; + rLoc = 5680; + rType = 0; + vrLen = 1784; + vrLoc = 4499; + }; + 0196542B110693C8009E8F2F /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 0194AA9A1102E3FC00E33BF1 /* process.cpp */; + name = "process.cpp: 40"; + rLen = 4; + rLoc = 988; + rType = 0; + vrLen = 2349; + vrLoc = 25; + }; + 0196542C110693C8009E8F2F /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = F506C03C013D9D7901CA16C8 /* ChameleonPrefPane.h */; + name = "ChameleonPrefPane.h: 33"; + rLen = 13; + rLoc = 931; + rType = 0; + vrLen = 1603; + vrLoc = 0; + }; + 0196544511069F15009E8F2F /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = F506C03D013D9D7901CA16C8 /* ChameleonPrefPane.mm */; + name = "ChameleonPrefPane.mm: 172"; + rLen = 0; + rLoc = 5620; + rType = 0; + vrLen = 1784; + vrLoc = 4499; + }; + 0196544611069F15009E8F2F /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 0194AA9A1102E3FC00E33BF1 /* process.cpp */; + name = "process.cpp: 40"; + rLen = 4; + rLoc = 988; + rType = 0; + vrLen = 2349; + vrLoc = 25; + }; + 0196544711069F15009E8F2F /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = F506C03C013D9D7901CA16C8 /* ChameleonPrefPane.h */; + name = "ChameleonPrefPane.h: 33"; + rLen = 13; + rLoc = 931; + rType = 0; + vrLen = 1603; + vrLoc = 0; + }; + 0196544A11069F77009E8F2F /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = F506C03D013D9D7901CA16C8 /* ChameleonPrefPane.mm */; + name = "ChameleonPrefPane.mm: 172"; + rLen = 0; + rLoc = 5620; + rType = 0; + vrLen = 1784; + vrLoc = 4499; + }; + 0196544B11069F77009E8F2F /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 0194AA9A1102E3FC00E33BF1 /* process.cpp */; + name = "process.cpp: 40"; + rLen = 4; + rLoc = 988; + rType = 0; + vrLen = 2349; + vrLoc = 25; + }; + 0196544C11069F77009E8F2F /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = F506C03C013D9D7901CA16C8 /* ChameleonPrefPane.h */; + name = "ChameleonPrefPane.h: 33"; + rLen = 13; + rLoc = 931; + rType = 0; + vrLen = 1603; + vrLoc = 0; + }; + 0196544F1106A635009E8F2F /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = F506C03D013D9D7901CA16C8 /* ChameleonPrefPane.mm */; + name = "ChameleonPrefPane.mm: 177"; + rLen = 0; + rLoc = 5771; + rType = 0; + vrLen = 1304; + vrLoc = 5078; + }; + 0196545E1106A769009E8F2F /* MacOSX.tiff */ = { + uiCtxt = { + sepNavWindowFrame = "{{15, 29}, {600, 1024}}"; + }; + }; + 01A40E7511054625002A74CD /* Executable */ = { + isa = PBXExecutable; + activeArgIndices = ( + ); + argumentStrings = ( + ); + autoAttachOnCrash = 1; + breakpointsEnabled = 1; + configStateDict = { + "PBXLSLaunchAction-0" = { + PBXLSLaunchAction = 0; + PBXLSLaunchStartAction = 1; + PBXLSLaunchStdioStyle = 2; + PBXLSLaunchStyle = 0; + class = PBXLSRunLaunchConfig; + commandLineArgs = ( + ); + displayName = "Executable Runner"; + environment = { + }; + identifier = com.apple.Xcode.launch.runConfig; + remoteHostInfo = ""; + startActionInfo = ""; + }; + }; + customDataFormattersEnabled = 1; + dataTipCustomDataFormattersEnabled = 1; + dataTipShowTypeColumn = 1; + dataTipSortType = 0; + debuggerPlugin = GDBDebugging; + disassemblyDisplayState = 0; + dylibVariantSuffix = ""; + enableDebugStr = 1; + environmentEntries = ( + ); + executableSystemSymbolLevel = 0; + executableUserSymbolLevel = 0; + launchableReference = 01A40E7611054625002A74CD /* System Preferences.app */; + libgmallocEnabled = 0; + name = Executable; + savedGlobals = { + }; + showTypeColumn = 0; + sourceDirectories = ( + ); + variableFormatDictionary = { + }; + }; + 01A40E7611054625002A74CD /* System Preferences.app */ = { + isa = PBXFileReference; + lastKnownFileType = wrapper.application; + name = "System Preferences.app"; + path = "/Applications/System Preferences.app"; + sourceTree = ""; + }; + 01A40E9A11054844002A74CD /* ChameleonPrefPane.mm */ = { + isa = PBXFileReference; + lastKnownFileType = sourcecode.cpp.objcpp; + name = ChameleonPrefPane.mm; + path = /Users/fab/devl/OSX/ChameleonPrefPane/ChameleonPrefPane.mm; + sourceTree = ""; + }; + 01A40F74110550F4002A74CD /* CHANGES */ = { + uiCtxt = { + sepNavIntBoundsRect = "{{0, 0}, {828, 752}}"; + sepNavSelRange = "{464, 0}"; + sepNavVisRange = "{0, 482}"; + }; + }; + 01A40F8011055392002A74CD /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 089C167EFE841241C02AAC07 /* English */; + name = "InfoPlist.strings: 3"; + rLen = 0; + rLoc = 101; + rType = 0; + vrLen = 105; + vrLoc = 0; + }; + 01A40F8111055392002A74CD /* PBXBookmark */ = { + isa = PBXBookmark; + fRef = F506C040013D9D8001CA16C8 /* Chameleon.tiff */; + }; + 01A40F98110569F5002A74CD /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 01A40F74110550F4002A74CD /* CHANGES */; + name = "CHANGES: 11"; + rLen = 0; + rLoc = 464; + rType = 0; + vrLen = 482; + vrLoc = 0; + }; + 01A4100711056EC3002A74CD /* stat.h */ = { + isa = PBXFileReference; + lastKnownFileType = sourcecode.c.h; + name = stat.h; + path = /Developer/SDKs/MacOSX10.6.sdk/usr/include/sys/stat.h; + sourceTree = ""; + }; + 01A410391105748F002A74CD /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 01A4103A1105748F002A74CD /* SFAuthorization.h */; + name = "SFAuthorization.h: 18"; + rLen = 49; + rLoc = 484; + rType = 0; + vrLen = 2502; + vrLoc = 0; + }; + 01A4103A1105748F002A74CD /* SFAuthorization.h */ = { + isa = PBXFileReference; + lastKnownFileType = sourcecode.c.h; + name = SFAuthorization.h; + path = /Developer/SDKs/MacOSX10.6.sdk/System/Library/Frameworks/SecurityFoundation.framework/Versions/A/Headers/SFAuthorization.h; + sourceTree = ""; + }; + 01A4103B1105748F002A74CD /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 01A4100711056EC3002A74CD /* stat.h */; + name = "stat.h: 153"; + rLen = 0; + rLoc = 5388; + rType = 0; + vrLen = 1474; + vrLoc = 4252; + }; + 01A4105F110575B1002A74CD /* process.h */ = { + isa = PBXFileReference; + lastKnownFileType = sourcecode.c.h; + name = process.h; + path = /Users/fab/devl/OSX/ChameleonPrefPane/process.h; + sourceTree = ""; + }; + 01A4120111059BD3002A74CD /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 01A4120211059BD3002A74CD /* NSBundle.h */; + name = "NSBundle.h: 94"; + rLen = 23; + rLoc = 5470; + rType = 0; + vrLen = 4351; + vrLoc = 2281; + }; + 01A4120211059BD3002A74CD /* NSBundle.h */ = { + isa = PBXFileReference; + lastKnownFileType = sourcecode.c.h; + name = NSBundle.h; + path = /Developer/SDKs/MacOSX10.6.sdk/System/Library/Frameworks/Foundation.framework/Versions/C/Headers/NSBundle.h; + sourceTree = ""; + }; + 01A412F61105AFB1002A74CD /* process.cpp */ = { + isa = PBXFileReference; + lastKnownFileType = sourcecode.cpp.cpp; + name = process.cpp; + path = /Users/fab/devl/OSX/ChameleonPrefPane/process.cpp; + sourceTree = ""; + }; + 01A413341105B260002A74CD /* property_list.cpp */ = { + isa = PBXFileReference; + lastKnownFileType = sourcecode.cpp.cpp; + name = property_list.cpp; + path = /Users/fab/devl/OSX/ChameleonPrefPane/property_list.cpp; + sourceTree = ""; + }; + 01A413371105B260002A74CD /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 0146688B1103D07A00088464 /* property_list.h */; + name = "property_list.h: 40"; + rLen = 15; + rLoc = 1070; + rType = 0; + vrLen = 1375; + vrLoc = 0; + }; + 01A4134D1105B2A1002A74CD /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 01A413341105B260002A74CD /* property_list.cpp */; + rLen = 0; + rLoc = 308; + rType = 1; + }; + 01A4134E1105B2A1002A74CD /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 0146688C1103D07A00088464 /* property_list.cpp */; + name = "property_list.cpp: 309"; + rLen = 0; + rLoc = 8522; + rType = 0; + vrLen = 2108; + vrLoc = 7199; + }; + 01A4135C1105B310002A74CD /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 01A4105F110575B1002A74CD /* process.h */; + rLen = 0; + rLoc = 48; + rType = 1; + }; + 01A413AE1105B8D1002A74CD /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = F506C03C013D9D7901CA16C8 /* ChameleonPrefPane.h */; + name = "ChameleonPrefPane.h: 47"; + rLen = 0; + rLoc = 1571; + rType = 0; + vrLen = 1283; + vrLoc = 0; + }; + 01A414201105C47E002A74CD /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 01A40E9A11054844002A74CD /* ChameleonPrefPane.mm */; + rLen = 0; + rLoc = 74; + rType = 1; + }; + 01A4142C1105C4EF002A74CD /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 0194AA9B1102E3FC00E33BF1 /* process.h */; + name = "process.h: 103"; + rLen = 0; + rLoc = 2814; + rType = 0; + vrLen = 1626; + vrLoc = 1542; + }; + 01A4143E1105C648002A74CD /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 01A412F61105AFB1002A74CD /* process.cpp */; + rLen = 0; + rLoc = 121; + rType = 1; + }; + 01A4143F1105C648002A74CD /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 0194AA9A1102E3FC00E33BF1 /* process.cpp */; + name = "process.cpp: 106"; + rLen = 0; + rLoc = 3535; + rType = 0; + vrLen = 1889; + vrLoc = 0; + }; + 01C8FBB2110653B0009C0EF4 /* PlistBookmark */ = { + isa = PlistBookmark; + fRef = 8D202CF70486D31800D8A456 /* Info.plist */; + fallbackIsa = PBXBookmark; + isK = 0; + kPath = ( + NSPrincipalClass, + ); + name = /Users/fab/Devl/OSX/ChameleonPrefPane/Info.plist; + rLen = 0; + rLoc = 9223372036854775808; + }; + 01C909E0110632C300D30F94 /* Data.plist */ = { + isa = PBXFileReference; + fileEncoding = 4; + lastKnownFileType = text.plist.xml; + name = Data.plist; + path = /Users/fab/Devl/OSX/ChameleonPrefPane/Data.plist; + sourceTree = ""; + uiCtxt = { + sepNavWindowFrame = "{{892, 4}, {954, 1023}}"; + }; + }; + 01D0654D1104FCB8002E797F /* Source Control */ = { + isa = PBXSourceControlManager; + fallbackIsa = XCSourceControlManager; + isSCMEnabled = 0; + scmConfiguration = { + repositoryNamesForRoots = { + "" = devl; + }; + }; + }; + 01D0654E1104FCB8002E797F /* Code sense */ = { + isa = PBXCodeSenseManager; + indexTemplatePath = ""; + }; + 01EC2DCB1106619500686A2C /* PBXBookmark */ = { + isa = PBXBookmark; + fRef = F506C03D013D9D7901CA16C8 /* ChameleonPrefPane.mm */; + }; + 01EC2DCC1106626A00686A2C /* PBXBookmark */ = { + isa = PBXBookmark; + fRef = 01C909E0110632C300D30F94 /* Data.plist */; + }; + 01EC2DCD1106627300686A2C /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = F506C03D013D9D7901CA16C8 /* ChameleonPrefPane.mm */; + name = "ChameleonPrefPane.mm: 282"; + rLen = 0; + rLoc = 9502; + rType = 0; + vrLen = 2101; + vrLoc = 7288; + }; + 01EC2DD51106627300686A2C /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = F506C03C013D9D7901CA16C8 /* ChameleonPrefPane.h */; + name = "ChameleonPrefPane.h: 42"; + rLen = 0; + rLoc = 1332; + rType = 0; + vrLen = 1374; + vrLoc = 0; + }; + 01EC2DD61106627300686A2C /* PlistBookmark */ = { + isa = PlistBookmark; + fRef = 01C909E0110632C300D30F94 /* Data.plist */; + fallbackIsa = PBXBookmark; + isK = 0; + kPath = ( + swapHD02, + ); + name = /Users/fab/Devl/OSX/ChameleonPrefPane/Data.plist; + rLen = 0; + rLoc = 9223372036854775808; + }; + 01EC2DD71106627300686A2C /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = F506C03D013D9D7901CA16C8 /* ChameleonPrefPane.mm */; + name = "ChameleonPrefPane.mm: 256"; + rLen = 0; + rLoc = 8580; + rType = 0; + vrLen = 1864; + vrLoc = 5899; + }; + 089C1669FE841209C02AAC07 /* Project object */ = { + activeArchitecturePreference = i386; + activeBuildConfigurationName = Release; + activeExecutable = 01A40E7511054625002A74CD /* Executable */; + activeSDKPreference = macosx10.5; + activeTarget = 8D202CE80486D31800D8A456 /* CStartup */; + addToTargets = ( + 8D202CE80486D31800D8A456 /* CStartup */, + ); + breakpoints = ( + 019653841106894A009E8F2F /* ChameleonPrefPane.mm:331 */, + 0196538F11068A74009E8F2F /* ChameleonPrefPane.mm:127 */, + 019653B711068BAF009E8F2F /* ChameleonPrefPane.mm:90 */, + ); + codeSenseManager = 01D0654E1104FCB8002E797F /* Code sense */; + executables = ( + 01A40E7511054625002A74CD /* Executable */, + ); + expressions = ( + _hdRedirTable, + mOptionsPlistPath, + ); + perUserDictionary = { + "PBXConfiguration.PBXBreakpointsDataSource.v1:1CA1AED706398EBD00589147" = { + PBXFileTableDataSourceColumnSortingDirectionKey = "-1"; + PBXFileTableDataSourceColumnSortingKey = PBXBreakpointsDataSource_BreakpointID; + PBXFileTableDataSourceColumnWidthsKey = ( + 20, + 20, + 198, + 20, + 99, + 99, + 29, + 20, + ); + PBXFileTableDataSourceColumnsKey = ( + PBXBreakpointsDataSource_ActionID, + PBXBreakpointsDataSource_TypeID, + PBXBreakpointsDataSource_BreakpointID, + PBXBreakpointsDataSource_UseID, + PBXBreakpointsDataSource_LocationID, + PBXBreakpointsDataSource_ConditionID, + PBXBreakpointsDataSource_IgnoreCountID, + PBXBreakpointsDataSource_ContinueID, + ); + }; + PBXConfiguration.PBXFileTableDataSource3.PBXBookmarksDataSource = { + PBXFileTableDataSourceColumnSortingDirectionKey = "-1"; + PBXFileTableDataSourceColumnSortingKey = PBXBookmarksDataSource_NameID; + PBXFileTableDataSourceColumnWidthsKey = ( + 200, + 200, + 459.58349609375, + ); + PBXFileTableDataSourceColumnsKey = ( + PBXBookmarksDataSource_LocationID, + PBXBookmarksDataSource_NameID, + PBXBookmarksDataSource_CommentsID, + ); + }; + PBXConfiguration.PBXFileTableDataSource3.PBXExecutablesDataSource = { + PBXFileTableDataSourceColumnSortingDirectionKey = "-1"; + PBXFileTableDataSourceColumnSortingKey = PBXExecutablesDataSource_NameID; + PBXFileTableDataSourceColumnWidthsKey = ( + 22, + 300, + 538, + ); + PBXFileTableDataSourceColumnsKey = ( + PBXExecutablesDataSource_ActiveFlagID, + PBXExecutablesDataSource_NameID, + PBXExecutablesDataSource_CommentsID, + ); + }; + PBXConfiguration.PBXFileTableDataSource3.PBXFileTableDataSource = { + PBXFileTableDataSourceColumnSortingDirectionKey = "-1"; + PBXFileTableDataSourceColumnSortingKey = PBXFileDataSource_Filename_ColumnID; + PBXFileTableDataSourceColumnWidthsKey = ( + 20, + 650, + 20, + 48, + 43, + 43, + 20, + ); + PBXFileTableDataSourceColumnsKey = ( + PBXFileDataSource_FiletypeID, + PBXFileDataSource_Filename_ColumnID, + PBXFileDataSource_Built_ColumnID, + PBXFileDataSource_ObjectSize_ColumnID, + PBXFileDataSource_Errors_ColumnID, + PBXFileDataSource_Warnings_ColumnID, + PBXFileDataSource_Target_ColumnID, + ); + }; + PBXConfiguration.PBXFileTableDataSource3.PBXFindDataSource = { + PBXFileTableDataSourceColumnSortingDirectionKey = "-1"; + PBXFileTableDataSourceColumnSortingKey = PBXFindDataSource_LocationID; + PBXFileTableDataSourceColumnWidthsKey = ( + 635, + 229, + ); + PBXFileTableDataSourceColumnsKey = ( + PBXFindDataSource_MessageID, + PBXFindDataSource_LocationID, + ); + }; + PBXConfiguration.PBXFileTableDataSource3.XCSCMDataSource = { + PBXFileTableDataSourceColumnSortingDirectionKey = "-1"; + PBXFileTableDataSourceColumnSortingKey = PBXFileDataSource_Filename_ColumnID; + PBXFileTableDataSourceColumnWidthsKey = ( + 20, + 20, + 626, + 20, + 48.16259765625, + 43, + 43, + 20, + ); + PBXFileTableDataSourceColumnsKey = ( + PBXFileDataSource_SCM_ColumnID, + PBXFileDataSource_FiletypeID, + PBXFileDataSource_Filename_ColumnID, + PBXFileDataSource_Built_ColumnID, + PBXFileDataSource_ObjectSize_ColumnID, + PBXFileDataSource_Errors_ColumnID, + PBXFileDataSource_Warnings_ColumnID, + PBXFileDataSource_Target_ColumnID, + ); + }; + PBXPerProjectTemplateStateSaveDate = 285631097; + PBXWorkspaceStateSaveDate = 285631097; + }; + perUserProjectItems = { + 0196521811066319009E8F2F /* XCBuildMessageTextBookmark */ = 0196521811066319009E8F2F /* XCBuildMessageTextBookmark */; + 0196521911066319009E8F2F /* PBXTextBookmark */ = 0196521911066319009E8F2F /* PBXTextBookmark */; + 0196521E11066332009E8F2F /* PBXTextBookmark */ = 0196521E11066332009E8F2F /* PBXTextBookmark */; + 0196521F11066332009E8F2F /* PlistBookmark */ = 0196521F11066332009E8F2F /* PlistBookmark */; + 0196522011066332009E8F2F /* PlistBookmark */ = 0196522011066332009E8F2F /* PlistBookmark */; + 0196522311066332009E8F2F /* PBXTextBookmark */ = 0196522311066332009E8F2F /* PBXTextBookmark */; + 0196523F110665D7009E8F2F /* PlistBookmark */ = 0196523F110665D7009E8F2F /* PlistBookmark */; + 01965240110665D7009E8F2F /* PBXTextBookmark */ = 01965240110665D7009E8F2F /* PBXTextBookmark */; + 01965241110665D7009E8F2F /* PBXTextBookmark */ = 01965241110665D7009E8F2F /* PBXTextBookmark */; + 0196524C11066719009E8F2F /* XCBuildMessageTextBookmark */ = 0196524C11066719009E8F2F /* XCBuildMessageTextBookmark */; + 0196524D11066719009E8F2F /* PBXTextBookmark */ = 0196524D11066719009E8F2F /* PBXTextBookmark */; + 019652541106671A009E8F2F /* PBXTextBookmark */ = 019652541106671A009E8F2F /* PBXTextBookmark */; + 0196525D11066828009E8F2F /* PBXTextBookmark */ = 0196525D11066828009E8F2F /* PBXTextBookmark */; + 0196525E11066828009E8F2F /* PBXTextBookmark */ = 0196525E11066828009E8F2F /* PBXTextBookmark */; + 0196525F11066828009E8F2F /* PBXTextBookmark */ = 0196525F11066828009E8F2F /* PBXTextBookmark */; + 0196526011066828009E8F2F /* PBXTextBookmark */ = 0196526011066828009E8F2F /* PBXTextBookmark */; + 01965267110668E6009E8F2F /* PBXTextBookmark */ = 01965267110668E6009E8F2F /* PBXTextBookmark */; + 01965268110668E7009E8F2F /* PBXTextBookmark */ = 01965268110668E7009E8F2F /* PBXTextBookmark */; + 0196526C11066926009E8F2F /* PBXTextBookmark */ = 0196526C11066926009E8F2F /* PBXTextBookmark */; + 0196526D11066926009E8F2F /* PBXTextBookmark */ = 0196526D11066926009E8F2F /* PBXTextBookmark */; + 0196526E11066926009E8F2F /* PBXTextBookmark */ = 0196526E11066926009E8F2F /* PBXTextBookmark */; + 01965279110669D0009E8F2F /* XCBuildMessageTextBookmark */ = 01965279110669D0009E8F2F /* XCBuildMessageTextBookmark */; + 0196527A110669D0009E8F2F /* PBXTextBookmark */ = 0196527A110669D0009E8F2F /* PBXTextBookmark */; + 0196527B110669D1009E8F2F /* PBXTextBookmark */ = 0196527B110669D1009E8F2F /* PBXTextBookmark */; + 0196529611066C9D009E8F2F /* PlistBookmark */ = 0196529611066C9D009E8F2F /* PlistBookmark */; + 0196529711066C9D009E8F2F /* PBXTextBookmark */ = 0196529711066C9D009E8F2F /* PBXTextBookmark */; + 0196529811066C9D009E8F2F /* PBXTextBookmark */ = 0196529811066C9D009E8F2F /* PBXTextBookmark */; + 019652A211066E28009E8F2F /* PBXTextBookmark */ = 019652A211066E28009E8F2F /* PBXTextBookmark */; + 019652A311066E28009E8F2F /* PlistBookmark */ = 019652A311066E28009E8F2F /* PlistBookmark */; + 019652A411066E28009E8F2F /* PBXTextBookmark */ = 019652A411066E28009E8F2F /* PBXTextBookmark */; + 019652A511066E28009E8F2F /* PBXTextBookmark */ = 019652A511066E28009E8F2F /* PBXTextBookmark */; + 019652AE11066E4C009E8F2F /* XCBuildMessageTextBookmark */ = 019652AE11066E4C009E8F2F /* XCBuildMessageTextBookmark */; + 019652AF11066E4C009E8F2F /* PBXTextBookmark */ = 019652AF11066E4C009E8F2F /* PBXTextBookmark */; + 019652B011066E4C009E8F2F /* PBXTextBookmark */ = 019652B011066E4C009E8F2F /* PBXTextBookmark */; + 019652B111066E4C009E8F2F /* PBXTextBookmark */ = 019652B111066E4C009E8F2F /* PBXTextBookmark */; + 019652B211066E4C009E8F2F /* PBXTextBookmark */ = 019652B211066E4C009E8F2F /* PBXTextBookmark */; + 019652B811066E8D009E8F2F /* PBXTextBookmark */ = 019652B811066E8D009E8F2F /* PBXTextBookmark */; + 019652B911066E8D009E8F2F /* PBXTextBookmark */ = 019652B911066E8D009E8F2F /* PBXTextBookmark */; + 019652BA11066E8D009E8F2F /* PBXTextBookmark */ = 019652BA11066E8D009E8F2F /* PBXTextBookmark */; + 019652C311066F17009E8F2F /* PBXTextBookmark */ = 019652C311066F17009E8F2F /* PBXTextBookmark */; + 019652C411066F17009E8F2F /* PBXTextBookmark */ = 019652C411066F17009E8F2F /* PBXTextBookmark */; + 019652C511066F17009E8F2F /* PBXTextBookmark */ = 019652C511066F17009E8F2F /* PBXTextBookmark */; + 019652C611066F17009E8F2F /* PBXTextBookmark */ = 019652C611066F17009E8F2F /* PBXTextBookmark */; + 019652C711066F17009E8F2F /* PBXTextBookmark */ = 019652C711066F17009E8F2F /* PBXTextBookmark */; + 019652CD11066F44009E8F2F /* PBXTextBookmark */ = 019652CD11066F44009E8F2F /* PBXTextBookmark */; + 019652CE11066F44009E8F2F /* PBXTextBookmark */ = 019652CE11066F44009E8F2F /* PBXTextBookmark */; + 019652CF11066F44009E8F2F /* PBXTextBookmark */ = 019652CF11066F44009E8F2F /* PBXTextBookmark */; + 019652D011066F44009E8F2F /* PBXTextBookmark */ = 019652D011066F44009E8F2F /* PBXTextBookmark */; + 019652DD11066FAA009E8F2F /* PBXTextBookmark */ = 019652DD11066FAA009E8F2F /* PBXTextBookmark */; + 019652DE11066FAA009E8F2F /* PBXTextBookmark */ = 019652DE11066FAA009E8F2F /* PBXTextBookmark */; + 019652DF11066FAA009E8F2F /* PBXTextBookmark */ = 019652DF11066FAA009E8F2F /* PBXTextBookmark */; + 019652E911066FF6009E8F2F /* PBXTextBookmark */ = 019652E911066FF6009E8F2F /* PBXTextBookmark */; + 019652EA11066FF6009E8F2F /* PBXTextBookmark */ = 019652EA11066FF6009E8F2F /* PBXTextBookmark */; + 019652EB11066FF6009E8F2F /* PBXTextBookmark */ = 019652EB11066FF6009E8F2F /* PBXTextBookmark */; + 019652F211067031009E8F2F /* PBXTextBookmark */ = 019652F211067031009E8F2F /* PBXTextBookmark */; + 019652F311067031009E8F2F /* PBXTextBookmark */ = 019652F311067031009E8F2F /* PBXTextBookmark */; + 019652F411067031009E8F2F /* PBXTextBookmark */ = 019652F411067031009E8F2F /* PBXTextBookmark */; + 019652F911067070009E8F2F /* PBXTextBookmark */ = 019652F911067070009E8F2F /* PBXTextBookmark */; + 019652FA11067070009E8F2F /* PBXTextBookmark */ = 019652FA11067070009E8F2F /* PBXTextBookmark */; + 019652FB11067070009E8F2F /* PBXTextBookmark */ = 019652FB11067070009E8F2F /* PBXTextBookmark */; + 019652FC11067070009E8F2F /* PBXTextBookmark */ = 019652FC11067070009E8F2F /* PBXTextBookmark */; + 01965335110683A4009E8F2F /* PBXTextBookmark */ = 01965335110683A4009E8F2F /* PBXTextBookmark */; + 01965336110683A4009E8F2F /* PlistBookmark */ = 01965336110683A4009E8F2F /* PlistBookmark */; + 01965337110683A4009E8F2F /* PBXBookmark */ = 01965337110683A4009E8F2F /* PBXBookmark */; + 01965338110683A4009E8F2F /* PBXTextBookmark */ = 01965338110683A4009E8F2F /* PBXTextBookmark */; + 01965339110683A4009E8F2F /* PlistBookmark */ = 01965339110683A4009E8F2F /* PlistBookmark */; + 0196533A110683A4009E8F2F /* PBXBookmark */ = 0196533A110683A4009E8F2F /* PBXBookmark */; + 0196533B110683A4009E8F2F /* PBXBookmark */ = 0196533B110683A4009E8F2F /* PBXBookmark */; + 0196533C110683A4009E8F2F /* PBXBookmark */ = 0196533C110683A4009E8F2F /* PBXBookmark */; + 0196533D110683A4009E8F2F /* PBXTextBookmark */ = 0196533D110683A4009E8F2F /* PBXTextBookmark */; + 0196533E110683A4009E8F2F /* PBXTextBookmark */ = 0196533E110683A4009E8F2F /* PBXTextBookmark */; + 0196533F110683A4009E8F2F /* PBXTextBookmark */ = 0196533F110683A4009E8F2F /* PBXTextBookmark */; + 019653601106860C009E8F2F /* XCBuildMessageTextBookmark */ = 019653601106860C009E8F2F /* XCBuildMessageTextBookmark */; + 019653611106860C009E8F2F /* PBXTextBookmark */ = 019653611106860C009E8F2F /* PBXTextBookmark */; + 0196536211068610009E8F2F /* PBXBookmark */ = 0196536211068610009E8F2F /* PBXBookmark */; + 01965373110688C6009E8F2F /* PBXTextBookmark */ = 01965373110688C6009E8F2F /* PBXTextBookmark */; + 0196537811068906009E8F2F /* PBXTextBookmark */ = 0196537811068906009E8F2F /* PBXTextBookmark */; + 0196537911068906009E8F2F /* PBXTextBookmark */ = 0196537911068906009E8F2F /* PBXTextBookmark */; + 0196537A11068906009E8F2F /* PBXTextBookmark */ = 0196537A11068906009E8F2F /* PBXTextBookmark */; + 0196537B11068906009E8F2F /* PBXTextBookmark */ = 0196537B11068906009E8F2F /* PBXTextBookmark */; + 0196537E11068906009E8F2F /* PBXTextBookmark */ = 0196537E11068906009E8F2F /* PBXTextBookmark */; + 0196538111068906009E8F2F /* PBXTextBookmark */ = 0196538111068906009E8F2F /* PBXTextBookmark */; + 019653881106894C009E8F2F /* PBXTextBookmark */ = 019653881106894C009E8F2F /* PBXTextBookmark */; + 019653891106894C009E8F2F /* PBXTextBookmark */ = 019653891106894C009E8F2F /* PBXTextBookmark */; + 0196538A1106894C009E8F2F /* PBXTextBookmark */ = 0196538A1106894C009E8F2F /* PBXTextBookmark */; + 0196538B1106894C009E8F2F /* PBXTextBookmark */ = 0196538B1106894C009E8F2F /* PBXTextBookmark */; + 0196538C1106894C009E8F2F /* PBXTextBookmark */ = 0196538C1106894C009E8F2F /* PBXTextBookmark */; + 0196539311068A78009E8F2F /* PBXTextBookmark */ = 0196539311068A78009E8F2F /* PBXTextBookmark */; + 0196539411068A78009E8F2F /* PBXTextBookmark */ = 0196539411068A78009E8F2F /* PBXTextBookmark */; + 0196539511068A78009E8F2F /* PBXTextBookmark */ = 0196539511068A78009E8F2F /* PBXTextBookmark */; + 0196539611068A78009E8F2F /* PBXTextBookmark */ = 0196539611068A78009E8F2F /* PBXTextBookmark */; + 0196539811068A78009E8F2F /* PBXTextBookmark */ = 0196539811068A78009E8F2F /* PBXTextBookmark */; + 0196539911068A78009E8F2F /* PBXTextBookmark */ = 0196539911068A78009E8F2F /* PBXTextBookmark */; + 0196539A11068A78009E8F2F /* PBXTextBookmark */ = 0196539A11068A78009E8F2F /* PBXTextBookmark */; + 0196539B11068A78009E8F2F /* PBXTextBookmark */ = 0196539B11068A78009E8F2F /* PBXTextBookmark */; + 0196539D11068AA8009E8F2F /* PBXTextBookmark */ = 0196539D11068AA8009E8F2F /* PBXTextBookmark */; + 0196539E11068AA8009E8F2F /* PBXTextBookmark */ = 0196539E11068AA8009E8F2F /* PBXTextBookmark */; + 0196539F11068AA8009E8F2F /* PBXTextBookmark */ = 0196539F11068AA8009E8F2F /* PBXTextBookmark */; + 019653A111068AAB009E8F2F /* PBXTextBookmark */ = 019653A111068AAB009E8F2F /* PBXTextBookmark */; + 019653A211068AAB009E8F2F /* PBXTextBookmark */ = 019653A211068AAB009E8F2F /* PBXTextBookmark */; + 019653A311068AAB009E8F2F /* PBXTextBookmark */ = 019653A311068AAB009E8F2F /* PBXTextBookmark */; + 019653A411068AAB009E8F2F /* PBXTextBookmark */ = 019653A411068AAB009E8F2F /* PBXTextBookmark */; + 019653A511068AAB009E8F2F /* PBXTextBookmark */ = 019653A511068AAB009E8F2F /* PBXTextBookmark */; + 019653AD11068B6D009E8F2F /* PBXBookmark */ = 019653AD11068B6D009E8F2F /* PBXBookmark */; + 019653AE11068B6D009E8F2F /* PBXTextBookmark */ = 019653AE11068B6D009E8F2F /* PBXTextBookmark */; + 019653AF11068B6D009E8F2F /* PBXTextBookmark */ = 019653AF11068B6D009E8F2F /* PBXTextBookmark */; + 019653B011068B6D009E8F2F /* PBXTextBookmark */ = 019653B011068B6D009E8F2F /* PBXTextBookmark */; + 019653B111068B6D009E8F2F /* PBXTextBookmark */ = 019653B111068B6D009E8F2F /* PBXTextBookmark */; + 019653B411068BA9009E8F2F /* PBXTextBookmark */ = 019653B411068BA9009E8F2F /* PBXTextBookmark */; + 019653B511068BA9009E8F2F /* PBXTextBookmark */ = 019653B511068BA9009E8F2F /* PBXTextBookmark */; + 019653B611068BA9009E8F2F /* PBXTextBookmark */ = 019653B611068BA9009E8F2F /* PBXTextBookmark */; + 019653BB11068BB1009E8F2F /* PBXTextBookmark */ = 019653BB11068BB1009E8F2F /* PBXTextBookmark */; + 019653BC11068BB1009E8F2F /* PBXTextBookmark */ = 019653BC11068BB1009E8F2F /* PBXTextBookmark */; + 019653BD11068BB1009E8F2F /* PBXTextBookmark */ = 019653BD11068BB1009E8F2F /* PBXTextBookmark */; + 019653BE11068BB1009E8F2F /* PBXTextBookmark */ = 019653BE11068BB1009E8F2F /* PBXTextBookmark */; + 01965402110691C2009E8F2F /* PBXTextBookmark */ = 01965402110691C2009E8F2F /* PBXTextBookmark */; + 01965403110691C2009E8F2F /* PBXTextBookmark */ = 01965403110691C2009E8F2F /* PBXTextBookmark */; + 01965404110691C2009E8F2F /* PBXTextBookmark */ = 01965404110691C2009E8F2F /* PBXTextBookmark */; + 01965405110691C2009E8F2F /* PBXTextBookmark */ = 01965405110691C2009E8F2F /* PBXTextBookmark */; + 01965406110691C2009E8F2F /* PBXTextBookmark */ = 01965406110691C2009E8F2F /* PBXTextBookmark */; + 01965407110691C2009E8F2F /* PBXTextBookmark */ = 01965407110691C2009E8F2F /* PBXTextBookmark */; + 0196540A110691F0009E8F2F /* PBXTextBookmark */ = 0196540A110691F0009E8F2F /* PBXTextBookmark */; + 0196540B110691F0009E8F2F /* PBXTextBookmark */ = 0196540B110691F0009E8F2F /* PBXTextBookmark */; + 0196540C110691F0009E8F2F /* PBXTextBookmark */ = 0196540C110691F0009E8F2F /* PBXTextBookmark */; + 0196540D110691F0009E8F2F /* XCBuildMessageTextBookmark */ = 0196540D110691F0009E8F2F /* XCBuildMessageTextBookmark */; + 0196540E110691F0009E8F2F /* PBXTextBookmark */ = 0196540E110691F0009E8F2F /* PBXTextBookmark */; + 0196540F110691F6009E8F2F /* PBXTextBookmark */ = 0196540F110691F6009E8F2F /* PBXTextBookmark */; + 01965410110691F6009E8F2F /* PBXTextBookmark */ = 01965410110691F6009E8F2F /* PBXTextBookmark */; + 01965411110691F6009E8F2F /* PBXTextBookmark */ = 01965411110691F6009E8F2F /* PBXTextBookmark */; + 0196541611069231009E8F2F /* PBXTextBookmark */ = 0196541611069231009E8F2F /* PBXTextBookmark */; + 0196541711069231009E8F2F /* PBXTextBookmark */ = 0196541711069231009E8F2F /* PBXTextBookmark */; + 0196541811069231009E8F2F /* PBXTextBookmark */ = 0196541811069231009E8F2F /* PBXTextBookmark */; + 01965427110693C8009E8F2F /* PBXTextBookmark */ = 01965427110693C8009E8F2F /* PBXTextBookmark */; + 01965428110693C8009E8F2F /* PBXTextBookmark */ = 01965428110693C8009E8F2F /* PBXTextBookmark */; + 01965429110693C8009E8F2F /* PBXTextBookmark */ = 01965429110693C8009E8F2F /* PBXTextBookmark */; + 0196542A110693C8009E8F2F /* PBXTextBookmark */ = 0196542A110693C8009E8F2F /* PBXTextBookmark */; + 0196542B110693C8009E8F2F /* PBXTextBookmark */ = 0196542B110693C8009E8F2F /* PBXTextBookmark */; + 0196542C110693C8009E8F2F /* PBXTextBookmark */ = 0196542C110693C8009E8F2F /* PBXTextBookmark */; + 0196544511069F15009E8F2F /* PBXTextBookmark */ = 0196544511069F15009E8F2F /* PBXTextBookmark */; + 0196544611069F15009E8F2F /* PBXTextBookmark */ = 0196544611069F15009E8F2F /* PBXTextBookmark */; + 0196544711069F15009E8F2F /* PBXTextBookmark */ = 0196544711069F15009E8F2F /* PBXTextBookmark */; + 0196544A11069F77009E8F2F /* PBXTextBookmark */ = 0196544A11069F77009E8F2F /* PBXTextBookmark */; + 0196544B11069F77009E8F2F /* PBXTextBookmark */ = 0196544B11069F77009E8F2F /* PBXTextBookmark */; + 0196544C11069F77009E8F2F /* PBXTextBookmark */ = 0196544C11069F77009E8F2F /* PBXTextBookmark */; + 0196544F1106A635009E8F2F /* PBXTextBookmark */ = 0196544F1106A635009E8F2F /* PBXTextBookmark */; + 01A40F8011055392002A74CD = 01A40F8011055392002A74CD /* PBXTextBookmark */; + 01A40F8111055392002A74CD = 01A40F8111055392002A74CD /* PBXBookmark */; + 01A40F98110569F5002A74CD = 01A40F98110569F5002A74CD /* PBXTextBookmark */; + 01A410391105748F002A74CD = 01A410391105748F002A74CD /* PBXTextBookmark */; + 01A4103B1105748F002A74CD = 01A4103B1105748F002A74CD /* PBXTextBookmark */; + 01A4120111059BD3002A74CD = 01A4120111059BD3002A74CD /* PBXTextBookmark */; + 01A413371105B260002A74CD = 01A413371105B260002A74CD /* PBXTextBookmark */; + 01A4134D1105B2A1002A74CD = 01A4134D1105B2A1002A74CD /* PBXTextBookmark */; + 01A4134E1105B2A1002A74CD = 01A4134E1105B2A1002A74CD /* PBXTextBookmark */; + 01A4135C1105B310002A74CD = 01A4135C1105B310002A74CD /* PBXTextBookmark */; + 01A413AE1105B8D1002A74CD = 01A413AE1105B8D1002A74CD /* PBXTextBookmark */; + 01A414201105C47E002A74CD = 01A414201105C47E002A74CD /* PBXTextBookmark */; + 01A4142C1105C4EF002A74CD = 01A4142C1105C4EF002A74CD /* PBXTextBookmark */; + 01A4143E1105C648002A74CD = 01A4143E1105C648002A74CD /* PBXTextBookmark */; + 01A4143F1105C648002A74CD = 01A4143F1105C648002A74CD /* PBXTextBookmark */; + 01C8FBB2110653B0009C0EF4 = 01C8FBB2110653B0009C0EF4 /* PlistBookmark */; + 01EC2DCB1106619500686A2C = 01EC2DCB1106619500686A2C /* PBXBookmark */; + 01EC2DCC1106626A00686A2C = 01EC2DCC1106626A00686A2C /* PBXBookmark */; + 01EC2DCD1106627300686A2C = 01EC2DCD1106627300686A2C /* PBXTextBookmark */; + 01EC2DD51106627300686A2C = 01EC2DD51106627300686A2C /* PBXTextBookmark */; + 01EC2DD61106627300686A2C = 01EC2DD61106627300686A2C /* PlistBookmark */; + 01EC2DD71106627300686A2C = 01EC2DD71106627300686A2C /* PBXTextBookmark */; + }; + sourceControlManager = 01D0654D1104FCB8002E797F /* Source Control */; + userBuildSettings = { + }; + }; + 089C167EFE841241C02AAC07 /* English */ = { + uiCtxt = { + sepNavIntBoundsRect = "{{0, 0}, {828, 775}}"; + sepNavSelRange = "{101, 0}"; + sepNavVisRange = "{0, 105}"; + }; + }; + 8D202CE80486D31800D8A456 /* CStartup */ = { + activeExec = 0; + }; + 8D202CF70486D31800D8A456 /* Info.plist */ = { + uiCtxt = { + sepNavWindowFrame = "{{822, 4}, {954, 1023}}"; + }; + }; + F506C03C013D9D7901CA16C8 /* ChameleonPrefPane.h */ = { + isa = PBXFileReference; + fileEncoding = 4; + lastKnownFileType = sourcecode.c.h; + name = ChameleonPrefPane.h; + path = /Users/fab/Devl/OSX/ChameleonPrefPane/ChameleonPrefPane.h; + sourceTree = ""; + uiCtxt = { + sepNavIntBoundsRect = "{{0, 0}, {572, 952}}"; + sepNavSelRange = "{931, 13}"; + sepNavVisRange = "{0, 1603}"; + sepNavWindowFrame = "{{188, -6}, {600, 1024}}"; + }; + }; + F506C03D013D9D7901CA16C8 /* ChameleonPrefPane.mm */ = { + isa = PBXFileReference; + fileEncoding = 4; + lastKnownFileType = sourcecode.cpp.objcpp; + name = ChameleonPrefPane.mm; + path = /Users/fab/Devl/OSX/ChameleonPrefPane/ChameleonPrefPane.mm; + sourceTree = ""; + uiCtxt = { + sepNavIntBoundsRect = "{{0, 0}, {997, 4732}}"; + sepNavSelRange = "{5771, 0}"; + sepNavVisRange = "{5017, 1270}"; + sepNavWindowFrame = "{{15, 30}, {954, 1023}}"; + }; + }; + F506C040013D9D8001CA16C8 /* Chameleon.tiff */ = { + isa = PBXFileReference; + lastKnownFileType = image.tiff; + name = Chameleon.tiff; + path = /Users/fab/Devl/OSX/ChameleonPrefPane/Chameleon.tiff; + sourceTree = ""; + uiCtxt = { + sepNavWindowFrame = "{{595, 32}, {600, 1024}}"; + }; + }; +} Index: ChameleonPrefPane/ChameleonPrefPane.xcodeproj/fab.mode1v3 =================================================================== --- ChameleonPrefPane/ChameleonPrefPane.xcodeproj/fab.mode1v3 (revision 0) +++ ChameleonPrefPane/ChameleonPrefPane.xcodeproj/fab.mode1v3 (revision 1) @@ -0,0 +1,1538 @@ + + + + + ActivePerspectiveName + Project + AllowedModules + + + BundleLoadPath + + MaxInstances + n + Module + PBXSmartGroupTreeModule + Name + Groups and Files Outline View + + + BundleLoadPath + + MaxInstances + n + Module + PBXNavigatorGroup + Name + Editor + + + BundleLoadPath + + MaxInstances + n + Module + XCTaskListModule + Name + Task List + + + BundleLoadPath + + MaxInstances + n + Module + XCDetailModule + Name + File and Smart Group Detail Viewer + + + BundleLoadPath + + MaxInstances + 1 + Module + PBXBuildResultsModule + Name + Detailed Build Results Viewer + + + BundleLoadPath + + MaxInstances + 1 + Module + PBXProjectFindModule + Name + Project Batch Find Tool + + + BundleLoadPath + + MaxInstances + n + Module + XCProjectFormatConflictsModule + Name + Project Format Conflicts List + + + BundleLoadPath + + MaxInstances + n + Module + PBXBookmarksModule + Name + Bookmarks Tool + + + BundleLoadPath + + MaxInstances + n + Module + PBXClassBrowserModule + Name + Class Browser + + + BundleLoadPath + + MaxInstances + n + Module + PBXCVSModule + Name + Source Code Control Tool + + + BundleLoadPath + + MaxInstances + n + Module + PBXDebugBreakpointsModule + Name + Debug Breakpoints Tool + + + BundleLoadPath + + MaxInstances + n + Module + XCDockableInspector + Name + Inspector + + + BundleLoadPath + + MaxInstances + n + Module + PBXOpenQuicklyModule + Name + Open Quickly Tool + + + BundleLoadPath + + MaxInstances + 1 + Module + PBXDebugSessionModule + Name + Debugger + + + BundleLoadPath + + MaxInstances + 1 + Module + PBXDebugCLIModule + Name + Debug Console + + + BundleLoadPath + + MaxInstances + n + Module + XCSnapshotModule + Name + Snapshots Tool + + + BundlePath + /Developer/Library/PrivateFrameworks/DevToolsInterface.framework/Resources + Description + DefaultDescriptionKey + DockingSystemVisible + + Extension + mode1v3 + FavBarConfig + + PBXProjectModuleGUID + 01D065551104FCD0002E797F + XCBarModuleItemNames + + XCBarModuleItems + + + FirstTimeWindowDisplayed + + Identifier + com.apple.perspectives.project.mode1v3 + MajorVersion + 33 + MinorVersion + 0 + Name + Default + Notifications + + + XCObserverAutoDisconnectKey + + XCObserverDefintionKey + + PBXStatusErrorsKey + 0 + + XCObserverFactoryKey + XCPerspectivesSpecificationIdentifier + XCObserverGUIDKey + XCObserverProjectIdentifier + XCObserverNotificationKey + PBXStatusBuildStateMessageNotification + XCObserverTargetKey + XCMainBuildResultsModuleGUID + XCObserverTriggerKey + awakenModuleWithObserver: + XCObserverValidationKey + + PBXStatusErrorsKey + 2 + + + + OpenEditors + + + Content + + PBXProjectModuleGUID + 0196537C11068906009E8F2F + PBXProjectModuleLabel + process.cpp + PBXSplitModuleInNavigatorKey + + Split0 + + PBXProjectModuleGUID + 0196537D11068906009E8F2F + PBXProjectModuleLabel + process.cpp + _historyCapacity + 0 + bookmark + 0196544B11069F77009E8F2F + history + + 01965373110688C6009E8F2F + + + SplitCount + 1 + + StatusBarVisibility + + + Geometry + + Frame + {{0, 20}, {600, 983}} + PBXModuleWindowStatusBarHidden2 + + RubberWindowFrame + 15 29 600 1024 0 0 1920 1058 + + + + Content + + PBXProjectModuleGUID + 0196537F11068906009E8F2F + PBXProjectModuleLabel + ChameleonPrefPane.h + PBXSplitModuleInNavigatorKey + + Split0 + + PBXProjectModuleGUID + 0196538011068906009E8F2F + PBXProjectModuleLabel + ChameleonPrefPane.h + _historyCapacity + 0 + bookmark + 0196544C11069F77009E8F2F + history + + 0196536211068610009E8F2F + + + SplitCount + 1 + + StatusBarVisibility + + + Geometry + + Frame + {{0, 20}, {600, 983}} + PBXModuleWindowStatusBarHidden2 + + RubberWindowFrame + 188 -6 600 1024 0 0 1920 1058 + + + + PerspectiveWidths + + -1 + -1 + + Perspectives + + + ChosenToolbarItems + + active-combo-popup + action + NSToolbarFlexibleSpaceItem + debugger-enable-breakpoints + build-and-go + com.apple.ide.PBXToolbarStopButton + get-info + NSToolbarFlexibleSpaceItem + com.apple.pbx.toolbar.searchfield + + ControllerClassBaseName + + IconName + WindowOfProjectWithEditor + Identifier + perspective.project + IsVertical + + Layout + + + ContentConfiguration + + PBXBottomSmartGroupGIDs + + 1C37FBAC04509CD000000102 + 1C37FAAC04509CD000000102 + 1C37FABC05509CD000000102 + 1C37FABC05539CD112110102 + E2644B35053B69B200211256 + 1C37FABC04509CD000100104 + 1CC0EA4004350EF90044410B + 1CC0EA4004350EF90041110B + + PBXProjectModuleGUID + 1CE0B1FE06471DED0097A5F4 + PBXProjectModuleLabel + Files + PBXProjectStructureProvided + yes + PBXSmartGroupTreeModuleColumnData + + PBXSmartGroupTreeModuleColumnWidthsKey + + 22 + 215 + + PBXSmartGroupTreeModuleColumnsKey_v4 + + SCMStatusColumn + MainColumn + + + PBXSmartGroupTreeModuleOutlineStateKey_v7 + + PBXSmartGroupTreeModuleOutlineStateExpansionKey + + 089C166AFE841209C02AAC07 + 08FB77AFFE84173DC02AAC07 + 32DBCFA10370C40200C91783 + 089C167CFE841241C02AAC07 + 1C37FAAC04509CD000000102 + 1C37FABC05509CD000000102 + + PBXSmartGroupTreeModuleOutlineStateSelectionKey + + + 7 + 1 + 0 + + + PBXSmartGroupTreeModuleOutlineStateVisibleRectKey + {{0, 0}, {237, 940}} + + PBXTopSmartGroupGIDs + + XCIncludePerspectivesSwitch + + XCSharingToken + com.apple.Xcode.GFSharingToken + + GeometryConfiguration + + Frame + {{0, 0}, {254, 958}} + GroupTreeTableConfiguration + + SCMStatusColumn + 22 + MainColumn + 215 + + RubberWindowFrame + 687 59 1148 999 0 0 1920 1058 + + Module + PBXSmartGroupTreeModule + Proportion + 254pt + + + Dock + + + BecomeActive + + ContentConfiguration + + PBXProjectModuleGUID + 1CE0B20306471E060097A5F4 + PBXProjectModuleLabel + ChameleonPrefPane.mm + PBXSplitModuleInNavigatorKey + + Split0 + + PBXProjectModuleGUID + 1CE0B20406471E060097A5F4 + PBXProjectModuleLabel + ChameleonPrefPane.mm + _historyCapacity + 0 + bookmark + 0196544A11069F77009E8F2F + history + + 01A410391105748F002A74CD + 01A4103B1105748F002A74CD + 01A4120111059BD3002A74CD + 01A413371105B260002A74CD + 01A4134D1105B2A1002A74CD + 01A4134E1105B2A1002A74CD + 01A4135C1105B310002A74CD + 019652C411066F17009E8F2F + 01965336110683A4009E8F2F + 01965337110683A4009E8F2F + 01965338110683A4009E8F2F + 01965339110683A4009E8F2F + 0196533A110683A4009E8F2F + 0196533B110683A4009E8F2F + 0196533C110683A4009E8F2F + 0196537A11068906009E8F2F + 0196539311068A78009E8F2F + 0196539411068A78009E8F2F + 0196539611068A78009E8F2F + 01965402110691C2009E8F2F + 01965427110693C8009E8F2F + 01965428110693C8009E8F2F + 01965429110693C8009E8F2F + + + SplitCount + 1 + + StatusBarVisibility + + + GeometryConfiguration + + Frame + {{0, 0}, {889, 727}} + RubberWindowFrame + 687 59 1148 999 0 0 1920 1058 + + Module + PBXNavigatorGroup + Proportion + 727pt + + + ContentConfiguration + + PBXProjectModuleGUID + 1CE0B20506471E060097A5F4 + PBXProjectModuleLabel + Detail + + GeometryConfiguration + + Frame + {{0, 732}, {889, 226}} + RubberWindowFrame + 687 59 1148 999 0 0 1920 1058 + + Module + XCDetailModule + Proportion + 226pt + + + Proportion + 889pt + + + Name + Project + ServiceClasses + + XCModuleDock + PBXSmartGroupTreeModule + XCModuleDock + PBXNavigatorGroup + XCDetailModule + + TableOfContents + + 0196522111066332009E8F2F + 1CE0B1FE06471DED0097A5F4 + 0196522211066332009E8F2F + 1CE0B20306471E060097A5F4 + 1CE0B20506471E060097A5F4 + + ToolbarConfigUserDefaultsMinorVersion + 2 + ToolbarConfiguration + xcode.toolbar.config.defaultV3 + + + ControllerClassBaseName + + IconName + WindowOfProject + Identifier + perspective.morph + IsVertical + 0 + Layout + + + BecomeActive + 1 + ContentConfiguration + + PBXBottomSmartGroupGIDs + + 1C37FBAC04509CD000000102 + 1C37FAAC04509CD000000102 + 1C08E77C0454961000C914BD + 1C37FABC05509CD000000102 + 1C37FABC05539CD112110102 + E2644B35053B69B200211256 + 1C37FABC04509CD000100104 + 1CC0EA4004350EF90044410B + 1CC0EA4004350EF90041110B + + PBXProjectModuleGUID + 11E0B1FE06471DED0097A5F4 + PBXProjectModuleLabel + Files + PBXProjectStructureProvided + yes + PBXSmartGroupTreeModuleColumnData + + PBXSmartGroupTreeModuleColumnWidthsKey + + 186 + + PBXSmartGroupTreeModuleColumnsKey_v4 + + MainColumn + + + PBXSmartGroupTreeModuleOutlineStateKey_v7 + + PBXSmartGroupTreeModuleOutlineStateExpansionKey + + 29B97314FDCFA39411CA2CEA + 1C37FABC05509CD000000102 + + PBXSmartGroupTreeModuleOutlineStateSelectionKey + + + 0 + + + PBXSmartGroupTreeModuleOutlineStateVisibleRectKey + {{0, 0}, {186, 337}} + + PBXTopSmartGroupGIDs + + XCIncludePerspectivesSwitch + 1 + XCSharingToken + com.apple.Xcode.GFSharingToken + + GeometryConfiguration + + Frame + {{0, 0}, {203, 355}} + GroupTreeTableConfiguration + + MainColumn + 186 + + RubberWindowFrame + 373 269 690 397 0 0 1440 878 + + Module + PBXSmartGroupTreeModule + Proportion + 100% + + + Name + Morph + PreferredWidth + 300 + ServiceClasses + + XCModuleDock + PBXSmartGroupTreeModule + + TableOfContents + + 11E0B1FE06471DED0097A5F4 + + ToolbarConfiguration + xcode.toolbar.config.default.shortV3 + + + PerspectivesBarVisible + + ShelfIsVisible + + SourceDescription + file at '/Developer/Library/PrivateFrameworks/DevToolsInterface.framework/Resources/XCPerspectivesSpecificationMode1.xcperspec' + StatusbarIsVisible + + TimeStamp + 285646711.45222402 + ToolbarConfigUserDefaultsMinorVersion + 2 + ToolbarDisplayMode + 1 + ToolbarIsVisible + + ToolbarSizeMode + 1 + Type + Perspectives + UpdateMessage + The Default Workspace in this version of Xcode now includes support to hide and show the detail view (what has been referred to as the "Metro-Morph" feature). You must discard your current Default Workspace settings and update to the latest Default Workspace in order to gain this feature. Do you wish to update to the latest Workspace defaults for project '%@'? + WindowJustification + 5 + WindowOrderList + + 019652A811066E28009E8F2F + 019652A911066E28009E8F2F + 1C78EAAD065D492600B07095 + 1CD10A99069EF8BA00B06720 + 01D065561104FCD0002E797F + 0196537F11068906009E8F2F + 0196537C11068906009E8F2F + 1C530D57069F1CE1000CFCEE + /Users/fab/Devl/OSX/ChameleonPrefPane/ChameleonPrefPane.xcodeproj + + WindowString + 687 59 1148 999 0 0 1920 1058 + WindowToolsV3 + + + FirstTimeWindowDisplayed + + Identifier + windowTool.build + IsVertical + + Layout + + + Dock + + + BecomeActive + + ContentConfiguration + + PBXProjectModuleGUID + 1CD0528F0623707200166675 + PBXProjectModuleLabel + ChameleonPrefPane.mm + StatusBarVisibility + + + GeometryConfiguration + + Frame + {{0, 0}, {1058, 569}} + RubberWindowFrame + 368 67 1058 851 0 0 1920 1058 + + Module + PBXNavigatorGroup + Proportion + 569pt + + + ContentConfiguration + + PBXProjectModuleGUID + XCMainBuildResultsModuleGUID + PBXProjectModuleLabel + Build Results + XCBuildResultsTrigger_Collapse + 1021 + XCBuildResultsTrigger_Open + 1012 + + GeometryConfiguration + + Frame + {{0, 574}, {1058, 236}} + RubberWindowFrame + 368 67 1058 851 0 0 1920 1058 + + Module + PBXBuildResultsModule + Proportion + 236pt + + + Proportion + 810pt + + + Name + Build Results + ServiceClasses + + PBXBuildResultsModule + + StatusbarIsVisible + + TableOfContents + + 01D065561104FCD0002E797F + 0196521A11066319009E8F2F + 1CD0528F0623707200166675 + XCMainBuildResultsModuleGUID + + ToolbarConfiguration + xcode.toolbar.config.buildV3 + WindowContentMinSize + 486 300 + WindowString + 368 67 1058 851 0 0 1920 1058 + WindowToolGUID + 01D065561104FCD0002E797F + WindowToolIsVisible + + + + FirstTimeWindowDisplayed + + Identifier + windowTool.debugger + IsVertical + + Layout + + + Dock + + + ContentConfiguration + + Debugger + + HorizontalSplitView + + _collapsingFrameDimension + 0.0 + _indexOfCollapsedView + 0 + _percentageOfCollapsedView + 0.0 + isCollapsed + yes + sizes + + {{0, 0}, {391, 383}} + {{391, 0}, {471, 383}} + + + VerticalSplitView + + _collapsingFrameDimension + 0.0 + _indexOfCollapsedView + 0 + _percentageOfCollapsedView + 0.0 + isCollapsed + yes + sizes + + {{0, 0}, {862, 383}} + {{0, 383}, {862, 344}} + + + + LauncherConfigVersion + 8 + PBXProjectModuleGUID + 1C162984064C10D400B95A72 + PBXProjectModuleLabel + Debug - GLUTExamples (Underwater) + + GeometryConfiguration + + DebugConsoleVisible + None + DebugConsoleWindowFrame + {{200, 200}, {500, 300}} + DebugSTDIOWindowFrame + {{200, 200}, {500, 300}} + Frame + {{0, 0}, {862, 727}} + PBXDebugSessionStackFrameViewKey + + DebugVariablesTableConfiguration + + Name + 120 + Value + 85 + Summary + 241 + + Frame + {{391, 0}, {471, 383}} + RubberWindowFrame + 336 245 862 768 0 0 1920 1058 + + RubberWindowFrame + 336 245 862 768 0 0 1920 1058 + + Module + PBXDebugSessionModule + Proportion + 727pt + + + Proportion + 727pt + + + Name + Debugger + ServiceClasses + + PBXDebugSessionModule + + StatusbarIsVisible + + TableOfContents + + 1CD10A99069EF8BA00B06720 + 0196524E11066719009E8F2F + 1C162984064C10D400B95A72 + 0196524F11066719009E8F2F + 0196525011066719009E8F2F + 0196525111066719009E8F2F + 0196525211066719009E8F2F + 0196525311066719009E8F2F + + ToolbarConfiguration + xcode.toolbar.config.debugV3 + WindowString + 336 245 862 768 0 0 1920 1058 + WindowToolGUID + 1CD10A99069EF8BA00B06720 + WindowToolIsVisible + + + + FirstTimeWindowDisplayed + + Identifier + windowTool.find + IsVertical + + Layout + + + Dock + + + Dock + + + ContentConfiguration + + PBXProjectModuleGUID + 1CDD528C0622207200134675 + PBXProjectModuleLabel + + StatusBarVisibility + + + GeometryConfiguration + + Frame + {{0, 0}, {781, 212}} + RubberWindowFrame + 783 565 781 470 0 0 1920 1058 + + Module + PBXNavigatorGroup + Proportion + 781pt + + + Proportion + 212pt + + + BecomeActive + + ContentConfiguration + + PBXProjectModuleGUID + 1CD0528E0623707200166675 + PBXProjectModuleLabel + Project Find + + GeometryConfiguration + + Frame + {{0, 217}, {781, 212}} + RubberWindowFrame + 783 565 781 470 0 0 1920 1058 + + Module + PBXProjectFindModule + Proportion + 212pt + + + Proportion + 429pt + + + Name + Project Find + ServiceClasses + + PBXProjectFindModule + + StatusbarIsVisible + + TableOfContents + + 1C530D57069F1CE1000CFCEE + 0196538211068906009E8F2F + 0196538311068906009E8F2F + 1CDD528C0622207200134675 + 1CD0528E0623707200166675 + + WindowString + 783 565 781 470 0 0 1920 1058 + WindowToolGUID + 1C530D57069F1CE1000CFCEE + WindowToolIsVisible + + + + Identifier + MENUSEPARATOR + + + FirstTimeWindowDisplayed + + Identifier + windowTool.debuggerConsole + IsVertical + + Layout + + + Dock + + + ContentConfiguration + + PBXProjectModuleGUID + 1C78EAAC065D492600B07095 + PBXProjectModuleLabel + Debugger Console + + GeometryConfiguration + + Frame + {{0, 0}, {650, 209}} + RubberWindowFrame + 1267 803 650 250 0 0 1920 1058 + + Module + PBXDebugCLIModule + Proportion + 209pt + + + Proportion + 209pt + + + Name + Debugger Console + ServiceClasses + + PBXDebugCLIModule + + StatusbarIsVisible + + TableOfContents + + 1C78EAAD065D492600B07095 + 019652A611066E28009E8F2F + 1C78EAAC065D492600B07095 + + ToolbarConfiguration + xcode.toolbar.config.consoleV3 + WindowString + 1267 803 650 250 0 0 1920 1058 + WindowToolGUID + 1C78EAAD065D492600B07095 + WindowToolIsVisible + + + + Identifier + windowTool.snapshots + Layout + + + Dock + + + Module + XCSnapshotModule + Proportion + 100% + + + Proportion + 100% + + + Name + Snapshots + ServiceClasses + + XCSnapshotModule + + StatusbarIsVisible + Yes + ToolbarConfiguration + xcode.toolbar.config.snapshots + WindowString + 315 824 300 550 0 0 1440 878 + WindowToolIsVisible + Yes + + + FirstTimeWindowDisplayed + + Identifier + windowTool.scm + IsVertical + + Layout + + + Dock + + + ContentConfiguration + + PBXProjectModuleGUID + 1C78EAB2065D492600B07095 + PBXProjectModuleLabel + + StatusBarVisibility + + + GeometryConfiguration + + Frame + {{0, 0}, {722, 0}} + RubberWindowFrame + 196 595 722 287 0 0 1920 1058 + + Module + PBXNavigatorGroup + Proportion + 0pt + + + BecomeActive + + ContentConfiguration + + PBXCVSModuleFilterTypeKey + 1032 + PBXCVSModuleTreeModuleColumnData + + PBXCVSModuleTreeModuleColumnWidthsKey + + 304 + 56.66162109375 + 63 + 60 + 63 + 139.556640625 + + PBXCVSModuleTreeModuleColumnsKey + + Name + Status + Update + Revision + Author + Date + + + PBXProjectModuleGUID + 1CD052920623707200166675 + PBXProjectModuleLabel + SCM Results + + GeometryConfiguration + + Frame + {{0, 5}, {722, 241}} + RubberWindowFrame + 196 595 722 287 0 0 1920 1058 + + Module + PBXCVSModule + Proportion + 241pt + + + Proportion + 246pt + + + Name + SCM + ServiceClasses + + PBXCVSModule + + StatusbarIsVisible + + TableOfContents + + 01A40F681105508D002A74CD + 01A40F691105508D002A74CD + 1C78EAB2065D492600B07095 + 1CD052920623707200166675 + + ToolbarConfiguration + xcode.toolbar.config.scm + WindowString + 196 595 722 287 0 0 1920 1058 + WindowToolGUID + 01A40F681105508D002A74CD + WindowToolIsVisible + + + + FirstTimeWindowDisplayed + + Identifier + windowTool.breakpoints + IsVertical + + Layout + + + Dock + + + ContentConfiguration + + PBXBottomSmartGroupGIDs + + 1C77FABC04509CD000000102 + + PBXProjectModuleGUID + 1CE0B1FE06471DED0097A5F4 + PBXProjectModuleLabel + Files + PBXProjectStructureProvided + no + PBXSmartGroupTreeModuleColumnData + + PBXSmartGroupTreeModuleColumnWidthsKey + + 168 + + PBXSmartGroupTreeModuleColumnsKey_v4 + + MainColumn + + + PBXSmartGroupTreeModuleOutlineStateKey_v7 + + PBXSmartGroupTreeModuleOutlineStateExpansionKey + + 1C77FABC04509CD000000102 + + PBXSmartGroupTreeModuleOutlineStateSelectionKey + + + 0 + + + PBXSmartGroupTreeModuleOutlineStateVisibleRectKey + {{0, 0}, {168, 350}} + + PBXTopSmartGroupGIDs + + XCIncludePerspectivesSwitch + + + GeometryConfiguration + + Frame + {{0, 0}, {185, 368}} + GroupTreeTableConfiguration + + MainColumn + 168 + + RubberWindowFrame + 773 626 744 409 0 0 1920 1058 + + Module + PBXSmartGroupTreeModule + Proportion + 185pt + + + BecomeActive + + ContentConfiguration + + PBXProjectModuleGUID + 1CA1AED706398EBD00589147 + PBXProjectModuleLabel + Detail + + GeometryConfiguration + + Frame + {{190, 0}, {554, 368}} + RubberWindowFrame + 773 626 744 409 0 0 1920 1058 + + Module + XCDetailModule + Proportion + 554pt + + + Proportion + 368pt + + + MajorVersion + 3 + MinorVersion + 0 + Name + Breakpoints + ServiceClasses + + PBXSmartGroupTreeModule + XCDetailModule + + StatusbarIsVisible + + TableOfContents + + 01A410991105787E002A74CD + 01A4109A1105787E002A74CD + 1CE0B1FE06471DED0097A5F4 + 1CA1AED706398EBD00589147 + + ToolbarConfiguration + xcode.toolbar.config.breakpointsV3 + WindowString + 773 626 744 409 0 0 1920 1058 + WindowToolGUID + 01A410991105787E002A74CD + WindowToolIsVisible + + + + Identifier + windowTool.debugAnimator + Layout + + + Dock + + + Module + PBXNavigatorGroup + Proportion + 100% + + + Proportion + 100% + + + Name + Debug Visualizer + ServiceClasses + + PBXNavigatorGroup + + StatusbarIsVisible + 1 + ToolbarConfiguration + xcode.toolbar.config.debugAnimatorV3 + WindowString + 100 100 700 500 0 0 1280 1002 + + + Identifier + windowTool.bookmarks + Layout + + + Dock + + + Module + PBXBookmarksModule + Proportion + 100% + + + Proportion + 100% + + + Name + Bookmarks + ServiceClasses + + PBXBookmarksModule + + StatusbarIsVisible + 0 + WindowString + 538 42 401 187 0 0 1280 1002 + + + Identifier + windowTool.projectFormatConflicts + Layout + + + Dock + + + Module + XCProjectFormatConflictsModule + Proportion + 100% + + + Proportion + 100% + + + Name + Project Format Conflicts + ServiceClasses + + XCProjectFormatConflictsModule + + StatusbarIsVisible + 0 + WindowContentMinSize + 450 300 + WindowString + 50 850 472 307 0 0 1440 877 + + + Identifier + windowTool.classBrowser + Layout + + + Dock + + + BecomeActive + 1 + ContentConfiguration + + OptionsSetName + Hierarchy, all classes + PBXProjectModuleGUID + 1CA6456E063B45B4001379D8 + PBXProjectModuleLabel + Class Browser - NSObject + + GeometryConfiguration + + ClassesFrame + {{0, 0}, {374, 96}} + ClassesTreeTableConfiguration + + PBXClassNameColumnIdentifier + 208 + PBXClassBookColumnIdentifier + 22 + + Frame + {{0, 0}, {630, 331}} + MembersFrame + {{0, 105}, {374, 395}} + MembersTreeTableConfiguration + + PBXMemberTypeIconColumnIdentifier + 22 + PBXMemberNameColumnIdentifier + 216 + PBXMemberTypeColumnIdentifier + 97 + PBXMemberBookColumnIdentifier + 22 + + PBXModuleWindowStatusBarHidden2 + 1 + RubberWindowFrame + 385 179 630 352 0 0 1440 878 + + Module + PBXClassBrowserModule + Proportion + 332pt + + + Proportion + 332pt + + + Name + Class Browser + ServiceClasses + + PBXClassBrowserModule + + StatusbarIsVisible + 0 + TableOfContents + + 1C0AD2AF069F1E9B00FABCE6 + 1C0AD2B0069F1E9B00FABCE6 + 1CA6456E063B45B4001379D8 + + ToolbarConfiguration + xcode.toolbar.config.classbrowser + WindowString + 385 179 630 352 0 0 1440 878 + WindowToolGUID + 1C0AD2AF069F1E9B00FABCE6 + WindowToolIsVisible + 0 + + + Identifier + windowTool.refactoring + IncludeInToolsMenu + 0 + Layout + + + Dock + + + BecomeActive + 1 + GeometryConfiguration + + Frame + {0, 0}, {500, 335} + RubberWindowFrame + {0, 0}, {500, 335} + + Module + XCRefactoringModule + Proportion + 100% + + + Proportion + 100% + + + Name + Refactoring + ServiceClasses + + XCRefactoringModule + + WindowString + 200 200 500 356 0 0 1920 1200 + + + + Index: ChameleonPrefPane/ChameleonPrefPane.xcodeproj/project.pbxproj =================================================================== --- ChameleonPrefPane/ChameleonPrefPane.xcodeproj/project.pbxproj (revision 0) +++ ChameleonPrefPane/ChameleonPrefPane.xcodeproj/project.pbxproj (revision 1) @@ -0,0 +1,371 @@ +// !$*UTF8*$! +{ + archiveVersion = 1; + classes = { + }; + objectVersion = 45; + objects = { + +/* Begin PBXBuildFile section */ + 01466A931104062500088464 /* Security.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 01466A921104062500088464 /* Security.framework */; }; + 01466C2A110408CC00088464 /* SecurityInterface.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 01466C29110408CC00088464 /* SecurityInterface.framework */; }; + 01466C381104091400088464 /* SecurityFoundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 01466C371104091400088464 /* SecurityFoundation.framework */; }; + 0196529B11066CC0009E8F2F /* README in Resources */ = {isa = PBXBuildFile; fileRef = 0196529A11066CC0009E8F2F /* README */; }; + 019654601106A769009E8F2F /* Chameleon.tiff in Resources */ = {isa = PBXBuildFile; fileRef = 0196545C1106A769009E8F2F /* Chameleon.tiff */; }; + 019654611106A769009E8F2F /* Linux.tiff in Resources */ = {isa = PBXBuildFile; fileRef = 0196545D1106A769009E8F2F /* Linux.tiff */; }; + 019654621106A769009E8F2F /* MacOSX.tiff in Resources */ = {isa = PBXBuildFile; fileRef = 0196545E1106A769009E8F2F /* MacOSX.tiff */; }; + 019654631106A769009E8F2F /* Windows.tiff in Resources */ = {isa = PBXBuildFile; fileRef = 0196545F1106A769009E8F2F /* Windows.tiff */; }; + 0196546D1106A7B2009E8F2F /* ChameleonPrefPane.h in Headers */ = {isa = PBXBuildFile; fileRef = 019654671106A7B2009E8F2F /* ChameleonPrefPane.h */; }; + 0196546E1106A7B2009E8F2F /* ChameleonPrefPane.mm in Sources */ = {isa = PBXBuildFile; fileRef = 019654681106A7B2009E8F2F /* ChameleonPrefPane.mm */; }; + 0196546F1106A7B2009E8F2F /* process.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 019654691106A7B2009E8F2F /* process.cpp */; }; + 019654701106A7B2009E8F2F /* process.h in Headers */ = {isa = PBXBuildFile; fileRef = 0196546A1106A7B2009E8F2F /* process.h */; }; + 019654711106A7B2009E8F2F /* property_list.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0196546B1106A7B2009E8F2F /* property_list.cpp */; }; + 019654721106A7B2009E8F2F /* property_list.h in Headers */ = {isa = PBXBuildFile; fileRef = 0196546C1106A7B2009E8F2F /* property_list.h */; }; + 019654761106A7F1009E8F2F /* Data.plist in Resources */ = {isa = PBXBuildFile; fileRef = 019654751106A7F1009E8F2F /* Data.plist */; }; + 0196547A1106A844009E8F2F /* Chameleon.icns in Resources */ = {isa = PBXBuildFile; fileRef = 019654791106A844009E8F2F /* Chameleon.icns */; }; + 01A40F75110550F4002A74CD /* CHANGES in Resources */ = {isa = PBXBuildFile; fileRef = 01A40F74110550F4002A74CD /* CHANGES */; }; + 8D202CEA0486D31800D8A456 /* StartupPrefPane_Prefix.pch in Headers */ = {isa = PBXBuildFile; fileRef = 32DBCFA20370C41700C91783 /* StartupPrefPane_Prefix.pch */; }; + 8D202CED0486D31800D8A456 /* InfoPlist.strings in Resources */ = {isa = PBXBuildFile; fileRef = 089C167DFE841241C02AAC07 /* InfoPlist.strings */; }; + 8D202CEF0486D31800D8A456 /* Chameleon.xib in Resources */ = {isa = PBXBuildFile; fileRef = F506C042013D9D8C01CA16C8 /* Chameleon.xib */; }; + 8D202CF30486D31800D8A456 /* Cocoa.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1058C7ADFEA557BF11CA2CBB /* Cocoa.framework */; }; + 8D202CF40486D31800D8A456 /* PreferencePanes.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = F506C035013D953901CA16C8 /* PreferencePanes.framework */; }; +/* End PBXBuildFile section */ + +/* Begin PBXFileReference section */ + 01466A921104062500088464 /* Security.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Security.framework; path = System/Library/Frameworks/Security.framework; sourceTree = SDKROOT; }; + 01466C29110408CC00088464 /* SecurityInterface.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = SecurityInterface.framework; path = System/Library/Frameworks/SecurityInterface.framework; sourceTree = SDKROOT; }; + 01466C371104091400088464 /* SecurityFoundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = SecurityFoundation.framework; path = System/Library/Frameworks/SecurityFoundation.framework; sourceTree = SDKROOT; }; + 0196529A11066CC0009E8F2F /* README */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = README; sourceTree = ""; }; + 0196545C1106A769009E8F2F /* Chameleon.tiff */ = {isa = PBXFileReference; lastKnownFileType = image.tiff; name = Chameleon.tiff; path = ../../../devl/OSX/ChameleonPrefPane/Resources/Chameleon.tiff; sourceTree = SOURCE_ROOT; }; + 0196545D1106A769009E8F2F /* Linux.tiff */ = {isa = PBXFileReference; lastKnownFileType = image.tiff; name = Linux.tiff; path = ../../../devl/OSX/ChameleonPrefPane/Resources/Linux.tiff; sourceTree = SOURCE_ROOT; }; + 0196545E1106A769009E8F2F /* MacOSX.tiff */ = {isa = PBXFileReference; lastKnownFileType = image.tiff; name = MacOSX.tiff; path = ../../../devl/OSX/ChameleonPrefPane/Resources/MacOSX.tiff; sourceTree = SOURCE_ROOT; }; + 0196545F1106A769009E8F2F /* Windows.tiff */ = {isa = PBXFileReference; lastKnownFileType = image.tiff; name = Windows.tiff; path = ../../../devl/OSX/ChameleonPrefPane/Resources/Windows.tiff; sourceTree = SOURCE_ROOT; }; + 019654671106A7B2009E8F2F /* ChameleonPrefPane.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = ChameleonPrefPane.h; path = ../../../devl/OSX/ChameleonPrefPane/Sources/ChameleonPrefPane.h; sourceTree = SOURCE_ROOT; }; + 019654681106A7B2009E8F2F /* ChameleonPrefPane.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; name = ChameleonPrefPane.mm; path = ../../../devl/OSX/ChameleonPrefPane/Sources/ChameleonPrefPane.mm; sourceTree = SOURCE_ROOT; }; + 019654691106A7B2009E8F2F /* process.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = process.cpp; path = ../../../devl/OSX/ChameleonPrefPane/Sources/process.cpp; sourceTree = SOURCE_ROOT; }; + 0196546A1106A7B2009E8F2F /* process.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = process.h; path = ../../../devl/OSX/ChameleonPrefPane/Sources/process.h; sourceTree = SOURCE_ROOT; }; + 0196546B1106A7B2009E8F2F /* property_list.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = property_list.cpp; path = ../../../devl/OSX/ChameleonPrefPane/Sources/property_list.cpp; sourceTree = SOURCE_ROOT; }; + 0196546C1106A7B2009E8F2F /* property_list.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = property_list.h; path = ../../../devl/OSX/ChameleonPrefPane/Sources/property_list.h; sourceTree = SOURCE_ROOT; }; + 019654751106A7F1009E8F2F /* Data.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = Data.plist; path = ../../../devl/OSX/ChameleonPrefPane/Resources/Data.plist; sourceTree = SOURCE_ROOT; }; + 019654791106A844009E8F2F /* Chameleon.icns */ = {isa = PBXFileReference; lastKnownFileType = image.icns; name = Chameleon.icns; path = ../../../devl/OSX/ChameleonPrefPane/Resources/Chameleon.icns; sourceTree = SOURCE_ROOT; }; + 01A40F74110550F4002A74CD /* CHANGES */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = CHANGES; sourceTree = ""; }; + 089C1672FE841209C02AAC07 /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = /System/Library/Frameworks/Foundation.framework; sourceTree = ""; }; + 089C167EFE841241C02AAC07 /* English */ = {isa = PBXFileReference; fileEncoding = 10; lastKnownFileType = text.plist.strings; name = English; path = English.lproj/InfoPlist.strings; sourceTree = ""; }; + 089C167FFE841241C02AAC07 /* AppKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AppKit.framework; path = /System/Library/Frameworks/AppKit.framework; sourceTree = ""; }; + 1058C7ADFEA557BF11CA2CBB /* Cocoa.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Cocoa.framework; path = /System/Library/Frameworks/Cocoa.framework; sourceTree = ""; }; + 32DBCFA20370C41700C91783 /* StartupPrefPane_Prefix.pch */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = StartupPrefPane_Prefix.pch; sourceTree = ""; }; + 8D202CF70486D31800D8A456 /* Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist; path = Info.plist; sourceTree = ""; }; + 8D202CF80486D31800D8A456 /* Chameleon.prefPane */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = Chameleon.prefPane; sourceTree = BUILT_PRODUCTS_DIR; }; + F506C035013D953901CA16C8 /* PreferencePanes.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = PreferencePanes.framework; path = /System/Library/Frameworks/PreferencePanes.framework; sourceTree = ""; }; + F506C043013D9D8C01CA16C8 /* English */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = English; path = English.lproj/Chameleon.xib; sourceTree = ""; }; +/* End PBXFileReference section */ + +/* Begin PBXFrameworksBuildPhase section */ + 8D202CF20486D31800D8A456 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + 8D202CF30486D31800D8A456 /* Cocoa.framework in Frameworks */, + 8D202CF40486D31800D8A456 /* PreferencePanes.framework in Frameworks */, + 01466A931104062500088464 /* Security.framework in Frameworks */, + 01466C2A110408CC00088464 /* SecurityInterface.framework in Frameworks */, + 01466C381104091400088464 /* SecurityFoundation.framework in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXFrameworksBuildPhase section */ + +/* Begin PBXGroup section */ + 089C166AFE841209C02AAC07 /* StartupPrefPane */ = { + isa = PBXGroup; + children = ( + 08FB77AFFE84173DC02AAC07 /* Classes */, + 32DBCFA10370C40200C91783 /* Other Sources */, + 089C167CFE841241C02AAC07 /* Resources */, + 089C1671FE841209C02AAC07 /* Frameworks and Libraries */, + 19C28FB8FE9D52D311CA2CBB /* Products */, + ); + name = StartupPrefPane; + sourceTree = ""; + }; + 089C1671FE841209C02AAC07 /* Frameworks and Libraries */ = { + isa = PBXGroup; + children = ( + 1058C7ACFEA557BF11CA2CBB /* Linked Frameworks */, + 1058C7AEFEA557BF11CA2CBB /* Other Frameworks */, + ); + name = "Frameworks and Libraries"; + sourceTree = ""; + }; + 089C167CFE841241C02AAC07 /* Resources */ = { + isa = PBXGroup; + children = ( + 019654791106A844009E8F2F /* Chameleon.icns */, + 019654751106A7F1009E8F2F /* Data.plist */, + 0196545C1106A769009E8F2F /* Chameleon.tiff */, + 0196545D1106A769009E8F2F /* Linux.tiff */, + 0196545E1106A769009E8F2F /* MacOSX.tiff */, + 0196545F1106A769009E8F2F /* Windows.tiff */, + 8D202CF70486D31800D8A456 /* Info.plist */, + 089C167DFE841241C02AAC07 /* InfoPlist.strings */, + F506C042013D9D8C01CA16C8 /* Chameleon.xib */, + ); + name = Resources; + sourceTree = ""; + }; + 08FB77AFFE84173DC02AAC07 /* Classes */ = { + isa = PBXGroup; + children = ( + 019654671106A7B2009E8F2F /* ChameleonPrefPane.h */, + 019654681106A7B2009E8F2F /* ChameleonPrefPane.mm */, + 019654691106A7B2009E8F2F /* process.cpp */, + 0196546A1106A7B2009E8F2F /* process.h */, + 0196546B1106A7B2009E8F2F /* property_list.cpp */, + 0196546C1106A7B2009E8F2F /* property_list.h */, + ); + name = Classes; + sourceTree = ""; + }; + 1058C7ACFEA557BF11CA2CBB /* Linked Frameworks */ = { + isa = PBXGroup; + children = ( + 1058C7ADFEA557BF11CA2CBB /* Cocoa.framework */, + F506C035013D953901CA16C8 /* PreferencePanes.framework */, + ); + name = "Linked Frameworks"; + sourceTree = ""; + }; + 1058C7AEFEA557BF11CA2CBB /* Other Frameworks */ = { + isa = PBXGroup; + children = ( + 089C1672FE841209C02AAC07 /* Foundation.framework */, + 089C167FFE841241C02AAC07 /* AppKit.framework */, + 01466A921104062500088464 /* Security.framework */, + 01466C29110408CC00088464 /* SecurityInterface.framework */, + 01466C371104091400088464 /* SecurityFoundation.framework */, + ); + name = "Other Frameworks"; + sourceTree = ""; + }; + 19C28FB8FE9D52D311CA2CBB /* Products */ = { + isa = PBXGroup; + children = ( + 8D202CF80486D31800D8A456 /* Chameleon.prefPane */, + ); + name = Products; + sourceTree = ""; + }; + 32DBCFA10370C40200C91783 /* Other Sources */ = { + isa = PBXGroup; + children = ( + 32DBCFA20370C41700C91783 /* StartupPrefPane_Prefix.pch */, + 01A40F74110550F4002A74CD /* CHANGES */, + 0196529A11066CC0009E8F2F /* README */, + ); + name = "Other Sources"; + sourceTree = ""; + }; +/* End PBXGroup section */ + +/* Begin PBXHeadersBuildPhase section */ + 8D202CE90486D31800D8A456 /* Headers */ = { + isa = PBXHeadersBuildPhase; + buildActionMask = 2147483647; + files = ( + 8D202CEA0486D31800D8A456 /* StartupPrefPane_Prefix.pch in Headers */, + 0196546D1106A7B2009E8F2F /* ChameleonPrefPane.h in Headers */, + 019654701106A7B2009E8F2F /* process.h in Headers */, + 019654721106A7B2009E8F2F /* property_list.h in Headers */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXHeadersBuildPhase section */ + +/* Begin PBXNativeTarget section */ + 8D202CE80486D31800D8A456 /* CStartup */ = { + isa = PBXNativeTarget; + buildConfigurationList = 1DBD214808BA80EA00186707 /* Build configuration list for PBXNativeTarget "CStartup" */; + buildPhases = ( + 8D202CE90486D31800D8A456 /* Headers */, + 8D202CEC0486D31800D8A456 /* Resources */, + 8D202CF00486D31800D8A456 /* Sources */, + 8D202CF20486D31800D8A456 /* Frameworks */, + 8D202CF50486D31800D8A456 /* Rez */, + ); + buildRules = ( + ); + comments = "Chameleon Startup PreferencePane By Rekursor, 1/17/2010.\n"; + dependencies = ( + ); + name = CStartup; + productInstallPath = "$(HOME)/Library/PreferencePanes"; + productName = StartupPrefPane; + productReference = 8D202CF80486D31800D8A456 /* Chameleon.prefPane */; + productType = "com.apple.product-type.bundle"; + }; +/* End PBXNativeTarget section */ + +/* Begin PBXProject section */ + 089C1669FE841209C02AAC07 /* Project object */ = { + isa = PBXProject; + buildConfigurationList = 1DBD214C08BA80EA00186707 /* Build configuration list for PBXProject "ChameleonPrefPane" */; + compatibilityVersion = "Xcode 3.1"; + hasScannedForEncodings = 1; + mainGroup = 089C166AFE841209C02AAC07 /* StartupPrefPane */; + projectDirPath = ""; + projectRoot = ""; + targets = ( + 8D202CE80486D31800D8A456 /* CStartup */, + ); + }; +/* End PBXProject section */ + +/* Begin PBXResourcesBuildPhase section */ + 8D202CEC0486D31800D8A456 /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 8D202CED0486D31800D8A456 /* InfoPlist.strings in Resources */, + 8D202CEF0486D31800D8A456 /* Chameleon.xib in Resources */, + 01A40F75110550F4002A74CD /* CHANGES in Resources */, + 0196529B11066CC0009E8F2F /* README in Resources */, + 019654601106A769009E8F2F /* Chameleon.tiff in Resources */, + 019654611106A769009E8F2F /* Linux.tiff in Resources */, + 019654621106A769009E8F2F /* MacOSX.tiff in Resources */, + 019654631106A769009E8F2F /* Windows.tiff in Resources */, + 019654761106A7F1009E8F2F /* Data.plist in Resources */, + 0196547A1106A844009E8F2F /* Chameleon.icns in Resources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXResourcesBuildPhase section */ + +/* Begin PBXRezBuildPhase section */ + 8D202CF50486D31800D8A456 /* Rez */ = { + isa = PBXRezBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXRezBuildPhase section */ + +/* Begin PBXSourcesBuildPhase section */ + 8D202CF00486D31800D8A456 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 0196546E1106A7B2009E8F2F /* ChameleonPrefPane.mm in Sources */, + 0196546F1106A7B2009E8F2F /* process.cpp in Sources */, + 019654711106A7B2009E8F2F /* property_list.cpp in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXSourcesBuildPhase section */ + +/* Begin PBXVariantGroup section */ + 089C167DFE841241C02AAC07 /* InfoPlist.strings */ = { + isa = PBXVariantGroup; + children = ( + 089C167EFE841241C02AAC07 /* English */, + ); + name = InfoPlist.strings; + sourceTree = ""; + }; + F506C042013D9D8C01CA16C8 /* Chameleon.xib */ = { + isa = PBXVariantGroup; + children = ( + F506C043013D9D8C01CA16C8 /* English */, + ); + name = Chameleon.xib; + sourceTree = ""; + }; +/* End PBXVariantGroup section */ + +/* Begin XCBuildConfiguration section */ + 1DBD214908BA80EA00186707 /* 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 = StartupPrefPane_Prefix.pch; + INFOPLIST_FILE = Info.plist; + INSTALL_PATH = "$(HOME)/Library/PreferencePanes"; + PRODUCT_NAME = Chameleon; + WRAPPER_EXTENSION = prefPane; + ZERO_LINK = YES; + }; + name = Debug; + }; + 1DBD214A08BA80EA00186707 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + GCC_MODEL_TUNING = G5; + GCC_PRECOMPILE_PREFIX_HEADER = YES; + GCC_PREFIX_HEADER = StartupPrefPane_Prefix.pch; + INFOPLIST_FILE = Info.plist; + INSTALL_PATH = "$(HOME)/Library/PreferencePanes"; + PRODUCT_NAME = Chameleon; + WRAPPER_EXTENSION = prefPane; + }; + name = Release; + }; + 1DBD214D08BA80EA00186707 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ARCHS = "$(ARCHS_STANDARD_32_64_BIT)"; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_ENABLE_OBJC_GC = supported; + GCC_WARN_ABOUT_RETURN_TYPE = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + ONLY_ACTIVE_ARCH = YES; + PREBINDING = NO; + SDKROOT = macosx10.5; + VALID_ARCHS = "i386 ppc x86_64"; + }; + name = Debug; + }; + 1DBD214E08BA80EA00186707 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ARCHS = "$(ARCHS_STANDARD_32_64_BIT)"; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_ENABLE_OBJC_GC = supported; + GCC_WARN_ABOUT_RETURN_TYPE = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + PREBINDING = NO; + SDKROOT = macosx10.5; + VALID_ARCHS = "i386 ppc x86_64"; + }; + name = Release; + }; +/* End XCBuildConfiguration section */ + +/* Begin XCConfigurationList section */ + 1DBD214808BA80EA00186707 /* Build configuration list for PBXNativeTarget "CStartup" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 1DBD214908BA80EA00186707 /* Debug */, + 1DBD214A08BA80EA00186707 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + 1DBD214C08BA80EA00186707 /* Build configuration list for PBXProject "ChameleonPrefPane" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 1DBD214D08BA80EA00186707 /* Debug */, + 1DBD214E08BA80EA00186707 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; +/* End XCConfigurationList section */ + }; + rootObject = 089C1669FE841209C02AAC07 /* Project object */; +} Index: ChameleonPrefPane/StartupPrefPane_Prefix.pch =================================================================== --- ChameleonPrefPane/StartupPrefPane_Prefix.pch (revision 0) +++ ChameleonPrefPane/StartupPrefPane_Prefix.pch (revision 1) @@ -0,0 +1,8 @@ +// +// Prefix header for all source files of the 'StartupPrefPane' target in the 'StartupPrefPane' project. +// + +#ifdef __OBJC__ + #import + #import +#endif Index: ChameleonPrefPane/Resources/MacOSX.tiff =================================================================== Cannot display: file marked as a binary type. svn:mime-type = application/octet-stream Property changes on: ChameleonPrefPane/Resources/MacOSX.tiff ___________________________________________________________________ Added: svn:mime-type + application/octet-stream Index: ChameleonPrefPane/Resources/Windows.tiff =================================================================== Cannot display: file marked as a binary type. svn:mime-type = application/octet-stream Property changes on: ChameleonPrefPane/Resources/Windows.tiff ___________________________________________________________________ Added: svn:mime-type + application/octet-stream Index: ChameleonPrefPane/Resources/Chameleon.tiff =================================================================== Cannot display: file marked as a binary type. svn:mime-type = application/octet-stream Property changes on: ChameleonPrefPane/Resources/Chameleon.tiff ___________________________________________________________________ Added: svn:mime-type + application/octet-stream Index: ChameleonPrefPane/Resources/Data.plist =================================================================== --- ChameleonPrefPane/Resources/Data.plist (revision 0) +++ ChameleonPrefPane/Resources/Data.plist (revision 1) @@ -0,0 +1,12 @@ + + + + + forceBootConfigPath + /Library/Preferences/SystemConfiguration/com.apple.Boot.plist + swapHD01 + + swapHD02 + + + Index: ChameleonPrefPane/Resources/Chameleon.icns =================================================================== Cannot display: file marked as a binary type. svn:mime-type = application/octet-stream Property changes on: ChameleonPrefPane/Resources/Chameleon.icns ___________________________________________________________________ Added: svn:mime-type + application/octet-stream Index: ChameleonPrefPane/Resources/Linux.tiff =================================================================== Cannot display: file marked as a binary type. svn:mime-type = application/octet-stream Property changes on: ChameleonPrefPane/Resources/Linux.tiff ___________________________________________________________________ Added: svn:mime-type + application/octet-stream Index: ChameleonPrefPane/Resources/cdrom.tiff =================================================================== Cannot display: file marked as a binary type. svn:mime-type = application/octet-stream Property changes on: ChameleonPrefPane/Resources/cdrom.tiff ___________________________________________________________________ Added: svn:mime-type + application/octet-stream Index: ChameleonPrefPane/README =================================================================== --- ChameleonPrefPane/README (revision 0) +++ ChameleonPrefPane/README (revision 1) @@ -0,0 +1,19 @@ +----------------------------------- +Chameleon System Preferences panel +by rekursor 1/17/2010 +----------------------------------- + +How to Install: + Double click on the panel file to install the resource + +Configuration: + The swap diskk fix option might be use if your disk order from chameleon is different from what diskutil list returns + Idealy we should not need this fix, but as for now, I don't know another way to do it + + In the bundle resources folder, in Data.plist + you can insert a 'forceBootConfigPath' key with your com.apple.Boot,plist file path: + So if automatic detection does not work, then force your com.apple.Boot.plist path here. + + + + \ No newline at end of file Index: ChameleonPrefPane/English.lproj/InfoPlist.strings =================================================================== Cannot display: file marked as a binary type. svn:mime-type = application/octet-stream Property changes on: ChameleonPrefPane/English.lproj/InfoPlist.strings ___________________________________________________________________ Added: svn:mime-type + application/octet-stream Index: ChameleonPrefPane/English.lproj/Chameleon.xib =================================================================== --- ChameleonPrefPane/English.lproj/Chameleon.xib (revision 0) +++ ChameleonPrefPane/English.lproj/Chameleon.xib (revision 1) @@ -0,0 +1,1944 @@ + + + + 1050 + 10C540 + 740 + 1038.25 + 458.00 + + com.apple.InterfaceBuilder.CocoaPlugin + 740 + + + YES + + + + YES + com.apple.InterfaceBuilder.CocoaPlugin + + + YES + + YES + + + YES + + + + YES + + NSPreferencePane + + + FirstResponder + + + NSApplication + + + 7 + 2 + {{176, 715}, {668, 368}} + 1081606144 + << do not localize >> + NSWindow + + View + + {1.79769e+308, 1.79769e+308} + {224.664, 10} + + + 256 + + YES + + + 268 + + YES + + + 2304 + + YES + + + 8448 + {471, 198} + + YES + + + 256 + {471, 17} + + + + + + -2147483392 + {{446, 0}, {16, 17}} + + + + YES + + 36 + 10 + 3.4028234663852886e+38 + + 75628096 + 2048 + + + LucidaGrande + 11 + 3100 + + + 6 + System + headerColor + + 3 + MQA + + + + 6 + System + headerTextColor + + 3 + MAA + + + + + 67239424 + 33554432 + + LucidaGrande + 13 + 1044 + + 0 + 0 + 0 + NO + + 3 + YES + YES + + + + 198 + 40 + 1000 + + 75628096 + 67110912 + Name + + + 3 + MC4zMzMzMzI5OQA + + + + + 69336641 + 67110912 + Text Cell + + + 1 + + 6 + System + controlBackgroundColor + + 3 + MC42NjY2NjY2NjY3AA + + + + 6 + System + controlTextColor + + + + YES + sr_Latn_RS + zh + ro_RO + be_BY + si_LK + fa_IR + en_BW + en_JM + ka_GE + zh_Hans_SG + mk_MK + en_HK + ar_LB + ii_CN + ru_UA + zh_Hant_HK + af + kl_GL + az_Latn + ar_SA + en_BE + bn_BD + en_MH + be + nl_NL + el_CY + az_Cyrl_AZ + ca + sr_Latn + om_ET + es_CL + bg + en_VI + es_VE + uz_Cyrl_UZ + fr_MC + am + zh_Hant + uz_Arab + en_GB + da + mr_IN + es_MX + es_PR + sq_AL + ar + fi_FI + bn + en_NA + de + as + cy_GB + en_IE + en_BZ + de_CH + en_US + sr_Latn_BA + te_IN + ar_QA + ar_TN + zh_Hans_MO + de_LI + fa + kw_GB + cs_CZ + hu_HU + zh_Hant_TW + uz_Latn + ta_IN + az + ar_EG + ar_SD + cs + ga + ar_LY + af_ZA + el + es_PA + es_CO + fi + en + ha + eo + gl_ES + cy + es_GT + ms_BN + ne_IN + he_IL + he + es + fo + en_CA + et + hr_HR + haw + gl + ar_SY + fr_SN + eu + uz_Arab_AF + id + fr + az_Latn_AZ + hi + zh_Hans_HK + ja + es_ES + ar_AE + uz_Latn_UZ + ca_ES + fr_BE + hi_IN + is_IS + ii + ps_AF + ka + tr_TR + it_CH + kk_Cyrl_KZ + gu + es_US + gv + en_PH + es_HN + hr + sv_FI + es_CR + haw_US + ar_MA + hu + nl_BE + th_TH + en_ZA + kk_Cyrl + is + it + es_PE + hy + de_DE + en_NZ + kk + kl + en_AU + pa_Guru + el_GR + km + kn + ko + nb + ar_IQ + es_PY + es_EC + en_US_POSIX + vi_VN + lv_LV + ne + kn_IN + es_AR + mk + ml + bg_BG + hy_AM_REVISED + kw + uk_UA + en_PK + pa + lt + sk_SK + nl + ur_PK + de_BE + lv + as_IN + mr + nn + en_ZW + fr_CA + ne_NP + ms + pl_PL + ti_ER + ja_JP + mt + fr_LU + om + sr_Cyrl_ME + en_IN + ga_IE + sw_KE + pl + kok + ur_IN + or + it_IT + hy_AM + ml_IN + en_SG + es_SV + am_ET + pt_BR + bn_IN + mt_MT + ar_KW + es_DO + pa_Arab + gv_GB + so_KE + ti_ET + ps + ms_MY + sl_SI + es_UY + en_MT + pt + sw_TZ + ta + nn_NO + sr_Cyrl_RS + si + te + ro + so_SO + sk + az_Cyrl + or_IN + sl + pa_Arab_PK + ru_RU + th + ar_DZ + ti + so + sr_Cyrl + es_NI + ha_Latn_NG + ru + en_TT + sq + fr_FR + sr + da_DK + es_BO + nb_NO + de_LU + uk + eu_ES + ar_JO + sv + so_ET + tr + sw + vi + zh_Hans_CN + km_KH + fa_AF + et_EE + ko_KR + pa_Guru_IN + sr_Latn_ME + so_DJ + ur + kok_IN + uz_Cyrl + zh_Hant_MO + zh_Hans + ar_YE + fo_FO + sv_SE + ha_Latn + de_AT + lt_LT + ar_OM + sr_Cyrl_BA + uz + ar_BH + id_ID + pt_PT + af_NA + om_KE + fr_CH + gu_IN + + + 3 + YES + YES + + + + 84 + 10 + 3.4028229999999999e+38 + + 75628096 + 134219776 + Partition + + + + + + 69336641 + 134219776 + Text Cell + + + YES + 1 + + + + 3 + YES + + Name Displayed on the bootable partion during Chameleon boot + + + 141 + 40 + 1000 + + 75628096 + 2048 + File System + + + + + + 69336641 + 2048 + Text Cell + + + YES + 1 + + + + 3 + YES + + + + 3 + 2 + + + 6 + System + gridColor + + 3 + MC41AA + + + 32 + -692060160 + + + 4 + 15 + 0 + YES + 0 + + + {{1, 17}, {471, 198}} + + + + + 4 + + + + -2147483392 + {{446, 17}, {15, 142}} + + + _doScroller: + 0.9242424242424242 + + + + -2147483392 + {{1, 159}, {411, 15}} + + YES + 1 + + _doScroller: + 0.99577167019027479 + + + + 2304 + + YES + + + {{1, 0}, {471, 17}} + + + + + 4 + + + + {{20, 104}, {473, 216}} + + + 690 + + + + + + QSAAAEEgAABCCAAAQggAAA + + + + 268 + {{17, 312}, {146, 22}} + + YES + + 68288064 + 272761856 + Select Boot Partition + + + YES + 1 + + 6 + System + controlColor + + + + + + + + 268 + {{495, 96}, {159, 32}} + + YES + + 67239424 + 134217728 + Restart Now + + + -2038284033 + 129 + + + 200 + 25 + + + + + 268 + {{20, 20}, {628, 49}} + + SFAuthorizationView + + + + 268 + {{140, 340}, {387, 19}} + + YES + + 72482368 + 138544128 + Chameleon System Preferences Panel (Version 1.0 beta 6) by Rekursor + + + YES + + + 1 + MC4wMDI3ODQ5NTE4IDAuMTg5OTYzMzQgMC42NjMwNDM1AA + + + + + + 268 + {{20, 77}, {628, 19}} + + YES + + 72482368 + 4326400 + Status + + + YES + + + 1 + MC4wMDI3ODQ5NTE4IDAuMTg5OTYzMzQgMC42NjMwNDM1AA + + + + + + 12 + + YES + + + 256 + + YES + + + 268 + {{12, 156}, {123, 18}} + + 2 + YES + + 67239424 + 131072 + Swap disks 0<->1 + + + 1211912703 + 2 + + NSImage + NSSwitch + + + NSSwitch + + + + 200 + 25 + + + + + 268 + {{12, 136}, {123, 18}} + + 2 + YES + + 67239424 + 131072 + Swap disks 0<->2 + + + 1211912703 + 2 + + + + + 200 + 25 + + + + {{1, 1}, {151, 190}} + + 2 + + + {{498, 128}, {153, 206}} + + YES + 2 + {0, 0} + + 67239424 + 0 + Fixes + + + 6 + System + textBackgroundColor + + + + 3 + MCAwLjgwMDAwMDAxAA + + + + 1 + 0 + 2 + NO + + + {668, 368} + + + {{0, 0}, {1920, 1178}} + {224.664, 32} + {1.79769e+308, 1.79769e+308} + + + ChameleonPrefPane + + + + + YES + + + _window + + + + 26 + + + + dataSource + + + + 121 + + + + delegate + + + + 122 + + + + mPartitionsTable + + + + 123 + + + + mResetButton + + + + 124 + + + + onRestart: + + + + 125 + + + + mPartitionNameColumn + + + + 126 + + + + mFileSystemColumn + + + + 127 + + + + mPartitionIDColumn + + + + 130 + + + + authView + + + + 137 + + + + mStatusText + + + + 142 + + + + mOptions + + + + 147 + + + + mSwapHD01 + + + + 150 + + + + mSwapHD02 + + + + 154 + + + + onSwapHD: + + + + 156 + + + + onSwapHD: + + + + 157 + + + + mPartitionImgColumn + + + + 161 + + + + + YES + + 0 + + + + + + -2 + + + File's Owner + + + -1 + + + First Responder + + + 12 + + + YES + + + + PrefPane + + + 6 + + + YES + + + + + + + + + + + + -3 + + + Application + + + 99 + + + YES + + + + + + + + + 100 + + + + + 101 + + + + + 102 + + + YES + + + + + + + + + 103 + + + + + 104 + + + YES + + + + + + 105 + + + YES + + + + + + 106 + + + + + 107 + + + + + 108 + + + YES + + + + + + 109 + + + + + 110 + + + YES + + + + + + 111 + + + + + 112 + + + ChameleonPrefPane + + + 128 + + + YES + + + + + + 129 + + + + + 136 + + + + + 138 + + + YES + + + + + + 139 + + + + + 140 + + + YES + + + + + + 141 + + + + + 145 + + + YES + + + + + + + 143 + + + YES + + + + + + 144 + + + + + 151 + + + YES + + + + + + 152 + + + + + 158 + + + YES + + + + + + 160 + + + + + + + YES + + YES + -3.IBPluginDependency + 100.IBPluginDependency + 101.IBPluginDependency + 102.IBPluginDependency + 103.IBPluginDependency + 104.IBPluginDependency + 105.IBPluginDependency + 106.IBPluginDependency + 107.IBPluginDependency + 108.IBPluginDependency + 109.IBPluginDependency + 110.IBAttributePlaceholdersKey + 110.IBPluginDependency + 111.IBPluginDependency + 12.IBEditorWindowLastContentRect + 12.IBPluginDependency + 12.IBWindowTemplateEditedContentRect + 12.ImportedFromIB2 + 12.windowTemplate.hasMinSize + 12.windowTemplate.minSize + 128.IBPluginDependency + 129.IBPluginDependency + 136.IBPluginDependency + 138.IBPluginDependency + 139.IBPluginDependency + 140.IBPluginDependency + 141.IBPluginDependency + 143.IBAttributePlaceholdersKey + 143.IBPluginDependency + 144.IBPluginDependency + 145.IBPluginDependency + 151.IBAttributePlaceholdersKey + 151.IBPluginDependency + 152.IBPluginDependency + 160.IBPluginDependency + 6.IBPluginDependency + 6.ImportedFromIB2 + 99.IBAttributePlaceholdersKey + 99.IBPluginDependency + + + YES + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + ToolTip + + ToolTip + + Restarts the sytem + + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + {{133, 127}, {668, 368}} + com.apple.InterfaceBuilder.CocoaPlugin + {{133, 127}, {668, 368}} + + + {224.664, 10} + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + ToolTip + + ToolTip + + Swap disks indexes 0<->1, use this option if your disk sequence in osx does not match the chameleon boot disk sequence + + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + ToolTip + + ToolTip + + Swap disks indexes 0<->2, use this option if your disk sequence in osx does not match the chameleon boot disk sequence + + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + + ToolTip + + ToolTip + + Click on a partition to make it the default boot partition. + + + com.apple.InterfaceBuilder.CocoaPlugin + + + + YES + + + YES + + + + + YES + + + YES + + + + 161 + + + + YES + + ChameleonPrefPane + NSPreferencePane + + YES + + YES + onRestart: + onSwapHD: + + + YES + id + id + + + + YES + + YES + authView + mFileSystemColumn + mOptions + mPartitionIDColumn + mPartitionImgColumn + mPartitionNameColumn + mPartitionsTable + mResetButton + mStatusText + mSwapHD01 + mSwapHD02 + touchButton + + + YES + SFAuthorizationView + NSTableColumn + NSBox + NSTableColumn + NSTableColumn + NSTableColumn + NSTableView + NSButton + NSTextField + NSButton + NSButton + NSButton + + + + IBProjectSource + ChameleonPrefPane.h + + + + FirstResponder + NSObject + + IBUserSource + + + + + NSPreferencePane + NSObject + + IBUserSource + + + + + + YES + + NSActionCell + NSCell + + IBFrameworkSource + AppKit.framework/Headers/NSActionCell.h + + + + NSApplication + NSResponder + + IBFrameworkSource + AppKit.framework/Headers/NSApplication.h + + + + NSApplication + + IBFrameworkSource + AppKit.framework/Headers/NSApplicationScripting.h + + + + NSApplication + + IBFrameworkSource + AppKit.framework/Headers/NSColorPanel.h + + + + NSApplication + + IBFrameworkSource + AppKit.framework/Headers/NSHelpManager.h + + + + NSApplication + + IBFrameworkSource + AppKit.framework/Headers/NSPageLayout.h + + + + NSApplication + + IBFrameworkSource + AppKit.framework/Headers/NSUserInterfaceItemSearching.h + + + + NSBox + NSView + + IBFrameworkSource + AppKit.framework/Headers/NSBox.h + + + + NSButton + NSControl + + IBFrameworkSource + AppKit.framework/Headers/NSButton.h + + + + NSButtonCell + NSActionCell + + IBFrameworkSource + AppKit.framework/Headers/NSButtonCell.h + + + + NSCell + NSObject + + IBFrameworkSource + AppKit.framework/Headers/NSCell.h + + + + NSControl + NSView + + IBFrameworkSource + AppKit.framework/Headers/NSControl.h + + + + NSFormatter + NSObject + + IBFrameworkSource + Foundation.framework/Headers/NSFormatter.h + + + + NSImageCell + NSCell + + IBFrameworkSource + AppKit.framework/Headers/NSImageCell.h + + + + NSMenu + NSObject + + IBFrameworkSource + AppKit.framework/Headers/NSMenu.h + + + + NSObject + + IBFrameworkSource + AppKit.framework/Headers/NSAccessibility.h + + + + NSObject + + + + NSObject + + + + NSObject + + + + NSObject + + + + NSObject + + IBFrameworkSource + AppKit.framework/Headers/NSDictionaryController.h + + + + NSObject + + IBFrameworkSource + AppKit.framework/Headers/NSDragging.h + + + + NSObject + + IBFrameworkSource + AppKit.framework/Headers/NSFontManager.h + + + + NSObject + + IBFrameworkSource + AppKit.framework/Headers/NSFontPanel.h + + + + NSObject + + IBFrameworkSource + AppKit.framework/Headers/NSKeyValueBinding.h + + + + NSObject + + + + NSObject + + IBFrameworkSource + AppKit.framework/Headers/NSNibLoading.h + + + + NSObject + + IBFrameworkSource + AppKit.framework/Headers/NSOutlineView.h + + + + NSObject + + IBFrameworkSource + AppKit.framework/Headers/NSPasteboard.h + + + + NSObject + + IBFrameworkSource + AppKit.framework/Headers/NSSavePanel.h + + + + NSObject + + IBFrameworkSource + AppKit.framework/Headers/NSTableView.h + + + + NSObject + + IBFrameworkSource + AppKit.framework/Headers/NSToolbarItem.h + + + + NSObject + + IBFrameworkSource + AppKit.framework/Headers/NSView.h + + + + NSObject + + IBFrameworkSource + Foundation.framework/Headers/NSArchiver.h + + + + NSObject + + IBFrameworkSource + Foundation.framework/Headers/NSClassDescription.h + + + + NSObject + + IBFrameworkSource + Foundation.framework/Headers/NSError.h + + + + NSObject + + IBFrameworkSource + Foundation.framework/Headers/NSFileManager.h + + + + NSObject + + IBFrameworkSource + Foundation.framework/Headers/NSKeyValueCoding.h + + + + NSObject + + IBFrameworkSource + Foundation.framework/Headers/NSKeyValueObserving.h + + + + NSObject + + IBFrameworkSource + Foundation.framework/Headers/NSKeyedArchiver.h + + + + NSObject + + IBFrameworkSource + Foundation.framework/Headers/NSObject.h + + + + NSObject + + IBFrameworkSource + Foundation.framework/Headers/NSObjectScripting.h + + + + NSObject + + IBFrameworkSource + Foundation.framework/Headers/NSPortCoder.h + + + + NSObject + + IBFrameworkSource + Foundation.framework/Headers/NSRunLoop.h + + + + NSObject + + IBFrameworkSource + Foundation.framework/Headers/NSScriptClassDescription.h + + + + NSObject + + IBFrameworkSource + Foundation.framework/Headers/NSScriptKeyValueCoding.h + + + + NSObject + + IBFrameworkSource + Foundation.framework/Headers/NSScriptObjectSpecifiers.h + + + + NSObject + + IBFrameworkSource + Foundation.framework/Headers/NSScriptWhoseTests.h + + + + NSObject + + IBFrameworkSource + Foundation.framework/Headers/NSThread.h + + + + NSObject + + IBFrameworkSource + Foundation.framework/Headers/NSURL.h + + + + NSObject + + IBFrameworkSource + Foundation.framework/Headers/NSURLConnection.h + + + + NSObject + + IBFrameworkSource + Foundation.framework/Headers/NSURLDownload.h + + + + NSObject + + IBFrameworkSource + SecurityInterface.framework/Headers/SFAuthorizationView.h + + + + NSObject + + IBFrameworkSource + SecurityInterface.framework/Headers/SFCertificatePanel.h + + + + NSObject + + IBFrameworkSource + SecurityInterface.framework/Headers/SFChooseIdentityPanel.h + + + + NSPreferencePane + NSObject + + YES + + YES + _firstKeyView + _initialKeyView + _lastKeyView + _window + + + YES + NSView + NSView + NSView + NSWindow + + + + IBFrameworkSource + PreferencePanes.framework/Headers/NSPreferencePane.h + + + + NSResponder + + IBFrameworkSource + AppKit.framework/Headers/NSInterfaceStyle.h + + + + NSResponder + NSObject + + IBFrameworkSource + AppKit.framework/Headers/NSResponder.h + + + + NSScrollView + NSView + + IBFrameworkSource + AppKit.framework/Headers/NSScrollView.h + + + + NSScroller + NSControl + + IBFrameworkSource + AppKit.framework/Headers/NSScroller.h + + + + NSTableColumn + NSObject + + IBFrameworkSource + AppKit.framework/Headers/NSTableColumn.h + + + + NSTableHeaderView + NSView + + IBFrameworkSource + AppKit.framework/Headers/NSTableHeaderView.h + + + + NSTableView + NSControl + + + + NSTextField + NSControl + + IBFrameworkSource + AppKit.framework/Headers/NSTextField.h + + + + NSTextFieldCell + NSActionCell + + IBFrameworkSource + AppKit.framework/Headers/NSTextFieldCell.h + + + + NSView + + IBFrameworkSource + AppKit.framework/Headers/NSClipView.h + + + + NSView + + IBFrameworkSource + AppKit.framework/Headers/NSMenuItem.h + + + + NSView + + IBFrameworkSource + AppKit.framework/Headers/NSRulerView.h + + + + NSView + NSResponder + + + + NSWindow + + IBFrameworkSource + AppKit.framework/Headers/NSDrawer.h + + + + NSWindow + NSResponder + + IBFrameworkSource + AppKit.framework/Headers/NSWindow.h + + + + NSWindow + + IBFrameworkSource + AppKit.framework/Headers/NSWindowScripting.h + + + + SFAuthorizationView + NSView + + + + + 0 + + com.apple.InterfaceBuilder.CocoaPlugin.macosx + + + + com.apple.InterfaceBuilder.CocoaPlugin.macosx + + + + com.apple.InterfaceBuilder.CocoaPlugin.InterfaceBuilder3 + + + YES + ../ChameleonPrefPane.xcodeproj + 3 + +