├── cog.tiff ├── icon.icns ├── icon.png ├── Read me.txt ├── cog-tiger.tiff ├── English.lproj ├── .DS_Store ├── HexPicker.strings ├── InfoPlist.strings ├── Localizable.strings └── HexPicker.nib │ ├── keyedobjects.nib │ └── designable.nib ├── main.m ├── .gitignore ├── WSAsyncURL.h ├── hexcolorpicker_Prefix.pch ├── Info.plist ├── README.md ├── WSAsyncURL.m ├── HexColorPicker.h ├── hexcolorpicker.xcodeproj └── project.pbxproj └── HexColorPicker.m /cog.tiff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rtgibbons/hexcolorpicker/HEAD/cog.tiff -------------------------------------------------------------------------------- /icon.icns: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rtgibbons/hexcolorpicker/HEAD/icon.icns -------------------------------------------------------------------------------- /icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rtgibbons/hexcolorpicker/HEAD/icon.png -------------------------------------------------------------------------------- /Read me.txt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rtgibbons/hexcolorpicker/HEAD/Read me.txt -------------------------------------------------------------------------------- /cog-tiger.tiff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rtgibbons/hexcolorpicker/HEAD/cog-tiger.tiff -------------------------------------------------------------------------------- /English.lproj/.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rtgibbons/hexcolorpicker/HEAD/English.lproj/.DS_Store -------------------------------------------------------------------------------- /English.lproj/HexPicker.strings: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rtgibbons/hexcolorpicker/HEAD/English.lproj/HexPicker.strings -------------------------------------------------------------------------------- /English.lproj/InfoPlist.strings: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rtgibbons/hexcolorpicker/HEAD/English.lproj/InfoPlist.strings -------------------------------------------------------------------------------- /English.lproj/Localizable.strings: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rtgibbons/hexcolorpicker/HEAD/English.lproj/Localizable.strings -------------------------------------------------------------------------------- /English.lproj/HexPicker.nib/keyedobjects.nib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rtgibbons/hexcolorpicker/HEAD/English.lproj/HexPicker.nib/keyedobjects.nib -------------------------------------------------------------------------------- /main.m: -------------------------------------------------------------------------------- 1 | #import 2 | 3 | int main(int argc, char *argv[]) 4 | { 5 | return NSApplicationMain(argc, (const char **) argv); 6 | } 7 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # Xcode 2 | build/* 3 | *.pbxuser 4 | !default.pbxuser 5 | *.mode1v3 6 | !default.mode1v3 7 | *.mode2v3 8 | !default.mode2v3 9 | *.perspectivev3 10 | !default.perspectivev3 11 | *.xcworkspace 12 | !default.xcworkspace 13 | xcuserdata 14 | profile 15 | *.moved-aside 16 | -------------------------------------------------------------------------------- /WSAsyncURL.h: -------------------------------------------------------------------------------- 1 | // 2 | // WSAsyncURL.h 3 | // hexcolorpicker 4 | // 5 | // Created by Jesper on 2010-01-01. 6 | // This file is available under terms equivalent to the US public domain. 7 | // For more information, see . 8 | // 9 | 10 | #import 11 | 12 | 13 | @interface WSAsyncURL : NSObject { 14 | NSMutableData *chunk; 15 | id delegate; 16 | SEL successSelector; 17 | SEL failSelector; 18 | NSURL *url; 19 | 20 | NSURLConnection *connection; 21 | } 22 | + (void)fetchURL:(NSURL *)url loadDelegate:(id)delegate successSelector:(SEL)successSelector failSelector:(SEL)failSelector; 23 | @end 24 | -------------------------------------------------------------------------------- /hexcolorpicker_Prefix.pch: -------------------------------------------------------------------------------- 1 | // 2 | // Prefix header for all source files of the 'hexcolorpicker' target in the 'hexcolorpicker' project. 3 | // 4 | 5 | #ifdef __OBJC__ 6 | #import 7 | #endif 8 | 9 | #ifndef NSInteger 10 | #if __LP64__ 11 | typedef long NSInteger; 12 | typedef unsigned long NSUInteger; 13 | typedef double CGFloat; 14 | #else 15 | typedef int NSInteger; 16 | typedef unsigned int NSUInteger; 17 | typedef float CGFloat; 18 | #endif 19 | typedef NSInteger NSColorPanelMode; 20 | #endif 21 | 22 | // NSLocalizedString looks in the main bundle. Which is bad for a color panel. 23 | #define HCPLocalizedString(k,c) NSLocalizedStringFromTableInBundle(k, nil, [NSBundle bundleForClass:[HexColorPicker class]], c) 24 | -------------------------------------------------------------------------------- /Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | English 7 | CFBundleExecutable 8 | ${EXECUTABLE_NAME} 9 | CFBundleName 10 | ${PRODUCT_NAME} 11 | CFBundleIconFile 12 | icon.icns 13 | CFBundleIdentifier 14 | net.wafflesoftware.hexcolorpicker 15 | CFBundleInfoDictionaryVersion 16 | 6.0 17 | CFBundlePackageType 18 | BNDL 19 | LSTypeIsPackage 20 | 21 | CFBundleSignature 22 | ???? 23 | CFBundleVersion 24 | 1.6.1.1 25 | NSPrincipalClass 26 | HexColorPicker 27 | 28 | 29 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | Installation 2 | ============ 3 | 4 | Install is easy, put it in ~/Library/ColorPickers . If you want to install it for all users on the computer throw it in /Library/ColorPickers 5 | 6 | Requirements 7 | ------------ 8 | 9 | Should work on all archs with 10.5 and 10.6. It might work on 10.4. 10 | 11 | I'm new building apps with XCode, let me know if you have problems. I only have access to 10.6 to for testing. 12 | 13 | About 14 | ===== 15 | 16 | The original Hex Color Picker was developed by Jesper with [Waffle Software][wf_url] you can grab it over on the [Project Page][hcp_url]. 17 | 18 | [wf_url]: http://wafflesoftware.net/ 19 | [hcp_url]: http://wafflesoftware.net/hexpicker/ 20 | 21 | The biggest use out of this plugin was the ability to grab the non-calibrated color from a mac. But I worked with a lot of different groups in the agency and need more values then just the Hex. So was always grabbing the hex and converting to RGP. That with my desire to learn a bit of Cocoa led my to modify this plugin a little. 22 | 23 | This isn't the official repo for Hex Color Picker. I've contacted Jesper and he is still working on this and another project and didn't want to put this in Github, I wanted a way to store my changes and share it friends. I've contacted Jesper and have this on Github with his knowledge. 24 | 25 | TODO 26 | ==== 27 | 28 | Small list of what I would like to add, feel free to request something 29 | 30 | - Type in HSL or RGB Values to update color 31 | 32 | Known Issues 33 | ============ 34 | 35 | Easy fix or not, these are things I need to go back in and fix 36 | 37 | - Typing in colors only accepts Hex and HTML Shorthand 38 | - Update server still using waffle software's (not sure how i'm going to handle versioning. 39 | - A Few Others 40 | -------------------------------------------------------------------------------- /WSAsyncURL.m: -------------------------------------------------------------------------------- 1 | // 2 | // WSAsyncURL.m 3 | // hexcolorpicker 4 | // 5 | // Created by Jesper on 2010-01-01. 6 | // This file is available under terms equivalent to the US public domain. 7 | // For more information, see . 8 | // 9 | 10 | #import "WSAsyncURL.h" 11 | 12 | @interface WSAsyncURL () 13 | - (id)initAsyncWithURL:(NSURL *)url loadDelegate:(id)delegate successSelector:(SEL)successSelector failSelector:(SEL)failSelector; 14 | @end 15 | 16 | 17 | @implementation WSAsyncURL 18 | 19 | static NSMutableSet *wsasyncurlInstances = nil; 20 | 21 | - (id)initAsyncWithURL:(NSURL *)aURL loadDelegate:(id)aDelegate successSelector:(SEL)aSuccessSelector failSelector:(SEL)aFailSelector { 22 | if (!aURL) return nil; 23 | if (!aDelegate) return nil; 24 | 25 | self = [super init]; 26 | if (self) { 27 | url = [aURL copy]; 28 | delegate = [aDelegate retain]; 29 | successSelector = aSuccessSelector; 30 | failSelector = aFailSelector; 31 | } 32 | 33 | return self; 34 | } 35 | 36 | /* needed to work in both refcount and GC */ 37 | 38 | + (void)retainObject:(WSAsyncURL *)obj { 39 | // NSLog(@"retaining %@ in %@", obj, wsasyncurlInstances); 40 | [wsasyncurlInstances addObject:obj]; 41 | } 42 | 43 | - (void)retainOurselves { 44 | [WSAsyncURL retainObject:self]; 45 | } 46 | 47 | + (void)releaseObject:(WSAsyncURL *)obj { 48 | // NSLog(@"releasing %@ from %@", obj, wsasyncurlInstances); 49 | [wsasyncurlInstances removeObject:obj]; 50 | } 51 | 52 | - (void)releaseOurselves { 53 | [WSAsyncURL releaseObject:self]; 54 | } 55 | 56 | - (void)startFetching { 57 | 58 | [self retainOurselves]; 59 | 60 | NSURLRequest *updateReq = [NSURLRequest requestWithURL:url 61 | cachePolicy:NSURLRequestReloadIgnoringCacheData 62 | timeoutInterval:20]; 63 | connection = [[NSURLConnection connectionWithRequest:updateReq delegate:self] retain]; 64 | if ([connection respondsToSelector:@selector(start)]) { 65 | [connection performSelector:@selector(start)]; 66 | } 67 | // NSLog(@"started connection %@ to %@", connection, url); 68 | if (!connection) { 69 | // NSLog(@"didn't work, fail"); 70 | [delegate performSelector:failSelector withObject:nil]; 71 | [self releaseOurselves]; 72 | } 73 | } 74 | 75 | - (void)connection:(NSURLConnection *)connection didReceiveResponse:(NSURLResponse *)response { 76 | if (chunk) { 77 | [chunk release]; 78 | } 79 | chunk = [[NSMutableData alloc] init]; 80 | // NSLog(@"received response"); 81 | } 82 | 83 | - (void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data { 84 | [chunk appendData:data]; 85 | // NSLog(@"append %d bytes", [data length]); 86 | } 87 | 88 | - (void)connectionDidFinishLoading:(NSURLConnection *)connection { 89 | // NSLog(@"finished"); 90 | [delegate performSelector:successSelector withObject:[chunk autorelease]]; 91 | [self releaseOurselves]; // we're spent! 92 | } 93 | 94 | - (void)connection:(NSURLConnection *)connection didFailWithError:(NSError *)error { 95 | if (chunk) { 96 | [chunk release]; 97 | } 98 | // NSLog(@"failed"); 99 | [delegate performSelector:failSelector withObject:[[error copy] autorelease]]; 100 | [self releaseOurselves]; // we're spent! 101 | } 102 | 103 | - (void)dealloc { 104 | [connection release]; 105 | [delegate release]; 106 | [url release]; 107 | [super dealloc]; 108 | } 109 | 110 | 111 | + (void)fetchURL:(NSURL *)url loadDelegate:(id)delegate successSelector:(SEL)successSelector failSelector:(SEL)failSelector { 112 | if (!wsasyncurlInstances) { 113 | wsasyncurlInstances = [[NSMutableSet alloc] init]; 114 | } 115 | 116 | WSAsyncURL *instance = [[WSAsyncURL alloc] initAsyncWithURL:url loadDelegate:delegate successSelector:successSelector failSelector:failSelector]; 117 | [instance startFetching]; 118 | [instance release]; 119 | } 120 | @end 121 | -------------------------------------------------------------------------------- /HexColorPicker.h: -------------------------------------------------------------------------------- 1 | /* 2 | 3 | BSD License 4 | 5 | Copyright (c) 2006-2010, Jesper (waffle software) 6 | All rights reserved. 7 | 8 | Redistribution and use in source and binary forms, with or without modification, 9 | are permitted provided that the following conditions are met: 10 | 11 | * Redistributions of source code must retain the above copyright notice, 12 | this list of conditions and the following disclaimer. 13 | * Redistributions in binary form must reproduce the above copyright notice, 14 | this list of conditions and the following disclaimer in the documentation 15 | and/or other materials provided with the distribution. 16 | * Neither the name of Hex Color Picker or waffle software, nor the names of Hex Color Picker's 17 | contributors may be used to endorse or promote products derived from this software 18 | without specific prior written permission. 19 | 20 | THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" 21 | AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, 22 | THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR 23 | PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS 24 | BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, 25 | OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT 26 | OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 27 | INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, 28 | STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 29 | OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 30 | 31 | For more information, see http://wafflesoftware.net/hexpicker/ . 32 | 33 | */ 34 | // 35 | // HexColorPicker.h 36 | // hexcolorpicker 37 | // 38 | // Created by Jesper on 2006-02-18. 39 | // Copyright 2006-2010 waffle software. All rights reserved. 40 | // 41 | 42 | #import 43 | 44 | 45 | @interface HexColorPicker : NSColorPicker { 46 | IBOutlet NSView *colorPickerView; 47 | 48 | IBOutlet NSTextField *colorDisplay; 49 | 50 | IBOutlet NSTextField *colorR; 51 | IBOutlet NSTextField *colorG; 52 | IBOutlet NSTextField *colorB; 53 | 54 | IBOutlet NSTextField *colorH; 55 | IBOutlet NSTextField *colorS; 56 | IBOutlet NSTextField *colorL; 57 | 58 | IBOutlet NSTextField *colorHex; 59 | 60 | IBOutlet NSButton *goUpgrade; 61 | 62 | IBOutlet NSMenu *cogMenu; 63 | IBOutlet NSPopUpButton *cogButton; 64 | 65 | IBOutlet NSMenu *colorStyleMenu; 66 | IBOutlet NSMenuItem *colorStyleHex; 67 | IBOutlet NSMenuItem *colorStyleRGB; 68 | IBOutlet NSMenuItem *colorStyleHSL; 69 | 70 | IBOutlet NSPanel *colorPickerPrefs; 71 | IBOutlet NSButton *useUpperHex; 72 | IBOutlet NSButton *checkForUpdates; 73 | IBOutlet NSButton *enableShorthand; 74 | IBOutlet NSButton *useDeviceColors; 75 | 76 | IBOutlet NSPanel *aboutPanel; 77 | IBOutlet NSTextField *aboutVersionField; 78 | 79 | NSColor *currColor; 80 | 81 | NSURL *updateInfoURL; 82 | 83 | BOOL alertIsUp; 84 | 85 | BOOL holdTheFormat; 86 | 87 | BOOL hasAskedAboutUpdates; 88 | BOOL shouldCheckForUpdates; 89 | BOOL uppercasesHex; 90 | BOOL shouldEnableShorthand; 91 | BOOL shouldGenerateDevice; 92 | NSString *optionColorStyle; 93 | 94 | int32_t isCheckingForUpdatesRightNow; // really fat BOOL for atomicity (no BOOL CompareAndSwap) 95 | } 96 | 97 | - (IBAction)colorChanged:(id)sender; 98 | - (IBAction)copyToClipboard:(id)sender; 99 | - (IBAction)updateColorStyle:(id)sender; 100 | - (IBAction)visitWebsite:(id)sender; 101 | - (IBAction)goUpgrade:(id)sender; 102 | 103 | - (IBAction)showPrefs:(id)sender; 104 | - (IBAction)savePrefs:(id)sender; 105 | 106 | - (IBAction)showAboutPanel:(id)sender; 107 | - (IBAction)closeAboutPanel:(id)sender; 108 | 109 | - (NSView *)provideNewView:(BOOL)initialRequest; 110 | 111 | - (void)setColor:(NSColor *)color; 112 | 113 | - (BOOL)supportsMode:(NSInteger)mode; 114 | - (NSInteger)currentMode; 115 | 116 | @end 117 | -------------------------------------------------------------------------------- /hexcolorpicker.xcodeproj/project.pbxproj: -------------------------------------------------------------------------------- 1 | // !$*UTF8*$! 2 | { 3 | archiveVersion = 1; 4 | classes = { 5 | }; 6 | objectVersion = 42; 7 | objects = { 8 | 9 | /* Begin PBXBuildFile section */ 10 | 24046EF20A3A02E9006476CC /* SystemConfiguration.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 24046EF10A3A02E9006476CC /* SystemConfiguration.framework */; }; 11 | 2430C21B0B97A1B000E4067F /* Localizable.strings in Resources */ = {isa = PBXBuildFile; fileRef = 2430C21A0B97A1B000E4067F /* Localizable.strings */; }; 12 | 244F4CF009A77191003C85E5 /* HexColorPicker.m in Sources */ = {isa = PBXBuildFile; fileRef = 244F4CEF09A77191003C85E5 /* HexColorPicker.m */; }; 13 | 244F4D1D09A77524003C85E5 /* HexPicker.nib in Resources */ = {isa = PBXBuildFile; fileRef = 244F4D1B09A77524003C85E5 /* HexPicker.nib */; }; 14 | 247F77240BECC4E50067F0F4 /* icon.icns in Resources */ = {isa = PBXBuildFile; fileRef = 247F77220BECC4E50067F0F4 /* icon.icns */; }; 15 | 2494B56F1024FF7800EF0E90 /* cog.tiff in Resources */ = {isa = PBXBuildFile; fileRef = 2494B56E1024FF7800EF0E90 /* cog.tiff */; }; 16 | 249EBFFA1034DEAB002F6B2F /* cog-tiger.tiff in Resources */ = {isa = PBXBuildFile; fileRef = 249EBFF91034DEAB002F6B2F /* cog-tiger.tiff */; }; 17 | 249F52C410EE6B2E00E62209 /* WSAsyncURL.m in Sources */ = {isa = PBXBuildFile; fileRef = 249F52C310EE6B2E00E62209 /* WSAsyncURL.m */; }; 18 | 8D5B49B0048680CD000E48DA /* InfoPlist.strings in Resources */ = {isa = PBXBuildFile; fileRef = 089C167DFE841241C02AAC07 /* InfoPlist.strings */; }; 19 | 8D5B49B4048680CD000E48DA /* Cocoa.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1058C7ADFEA557BF11CA2CBB /* Cocoa.framework */; }; 20 | /* End PBXBuildFile section */ 21 | 22 | /* Begin PBXFileReference section */ 23 | 089C1672FE841209C02AAC07 /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = /System/Library/Frameworks/Foundation.framework; sourceTree = ""; }; 24 | 089C167EFE841241C02AAC07 /* English */ = {isa = PBXFileReference; fileEncoding = 10; lastKnownFileType = text.plist.strings; name = English; path = English.lproj/InfoPlist.strings; sourceTree = ""; }; 25 | 089C167FFE841241C02AAC07 /* AppKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AppKit.framework; path = /System/Library/Frameworks/AppKit.framework; sourceTree = ""; }; 26 | 1058C7ADFEA557BF11CA2CBB /* Cocoa.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Cocoa.framework; path = /System/Library/Frameworks/Cocoa.framework; sourceTree = ""; }; 27 | 24046EF10A3A02E9006476CC /* SystemConfiguration.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = SystemConfiguration.framework; path = /System/Library/Frameworks/SystemConfiguration.framework; sourceTree = ""; }; 28 | 2430C2160B97A1AA00E4067F /* English */ = {isa = PBXFileReference; fileEncoding = 10; lastKnownFileType = text.plist.strings; name = English; path = English.lproj/Localizable.strings; sourceTree = ""; }; 29 | 244F4CEE09A77191003C85E5 /* HexColorPicker.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = HexColorPicker.h; sourceTree = ""; }; 30 | 244F4CEF09A77191003C85E5 /* HexColorPicker.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = HexColorPicker.m; sourceTree = ""; }; 31 | 244F4D1C09A77524003C85E5 /* English */ = {isa = PBXFileReference; lastKnownFileType = wrapper.nib; name = English; path = English.lproj/HexPicker.nib; sourceTree = ""; }; 32 | 247F77220BECC4E50067F0F4 /* icon.icns */ = {isa = PBXFileReference; lastKnownFileType = image.icns; path = icon.icns; sourceTree = ""; }; 33 | 2494B56E1024FF7800EF0E90 /* cog.tiff */ = {isa = PBXFileReference; lastKnownFileType = image.tiff; path = cog.tiff; sourceTree = ""; }; 34 | 249EBFF91034DEAB002F6B2F /* cog-tiger.tiff */ = {isa = PBXFileReference; lastKnownFileType = image.tiff; path = "cog-tiger.tiff"; sourceTree = ""; }; 35 | 249F52C210EE6B2E00E62209 /* WSAsyncURL.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WSAsyncURL.h; sourceTree = ""; }; 36 | 249F52C310EE6B2E00E62209 /* WSAsyncURL.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = WSAsyncURL.m; sourceTree = ""; }; 37 | 32DBCF630370AF2F00C91783 /* hexcolorpicker_Prefix.pch */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = hexcolorpicker_Prefix.pch; sourceTree = ""; }; 38 | 8D5B49B6048680CD000E48DA /* HexColorPicker.colorPicker */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = HexColorPicker.colorPicker; sourceTree = BUILT_PRODUCTS_DIR; }; 39 | 8D5B49B7048680CD000E48DA /* Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; 40 | D2F7E65807B2D6F200F64583 /* CoreData.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreData.framework; path = /System/Library/Frameworks/CoreData.framework; sourceTree = ""; }; 41 | /* End PBXFileReference section */ 42 | 43 | /* Begin PBXFrameworksBuildPhase section */ 44 | 8D5B49B3048680CD000E48DA /* Frameworks */ = { 45 | isa = PBXFrameworksBuildPhase; 46 | buildActionMask = 2147483647; 47 | files = ( 48 | 8D5B49B4048680CD000E48DA /* Cocoa.framework in Frameworks */, 49 | 24046EF20A3A02E9006476CC /* SystemConfiguration.framework in Frameworks */, 50 | ); 51 | runOnlyForDeploymentPostprocessing = 0; 52 | }; 53 | /* End PBXFrameworksBuildPhase section */ 54 | 55 | /* Begin PBXGroup section */ 56 | 089C166AFE841209C02AAC07 /* hexcolorpicker */ = { 57 | isa = PBXGroup; 58 | children = ( 59 | 08FB77AFFE84173DC02AAC07 /* Classes */, 60 | 32C88E010371C26100C91783 /* Other Sources */, 61 | 089C167CFE841241C02AAC07 /* Resources */, 62 | 089C1671FE841209C02AAC07 /* Frameworks and Libraries */, 63 | 19C28FB8FE9D52D311CA2CBB /* Products */, 64 | ); 65 | name = hexcolorpicker; 66 | sourceTree = ""; 67 | }; 68 | 089C1671FE841209C02AAC07 /* Frameworks and Libraries */ = { 69 | isa = PBXGroup; 70 | children = ( 71 | 1058C7ACFEA557BF11CA2CBB /* Linked Frameworks */, 72 | 1058C7AEFEA557BF11CA2CBB /* Other Frameworks */, 73 | ); 74 | name = "Frameworks and Libraries"; 75 | sourceTree = ""; 76 | }; 77 | 089C167CFE841241C02AAC07 /* Resources */ = { 78 | isa = PBXGroup; 79 | children = ( 80 | 2494B56E1024FF7800EF0E90 /* cog.tiff */, 81 | 249EBFF91034DEAB002F6B2F /* cog-tiger.tiff */, 82 | 247F77220BECC4E50067F0F4 /* icon.icns */, 83 | 2430C21A0B97A1B000E4067F /* Localizable.strings */, 84 | 8D5B49B7048680CD000E48DA /* Info.plist */, 85 | 244F4D1B09A77524003C85E5 /* HexPicker.nib */, 86 | 089C167DFE841241C02AAC07 /* InfoPlist.strings */, 87 | ); 88 | name = Resources; 89 | sourceTree = ""; 90 | }; 91 | 08FB77AFFE84173DC02AAC07 /* Classes */ = { 92 | isa = PBXGroup; 93 | children = ( 94 | 244F4CEE09A77191003C85E5 /* HexColorPicker.h */, 95 | 244F4CEF09A77191003C85E5 /* HexColorPicker.m */, 96 | 249F52C210EE6B2E00E62209 /* WSAsyncURL.h */, 97 | 249F52C310EE6B2E00E62209 /* WSAsyncURL.m */, 98 | ); 99 | name = Classes; 100 | sourceTree = ""; 101 | }; 102 | 1058C7ACFEA557BF11CA2CBB /* Linked Frameworks */ = { 103 | isa = PBXGroup; 104 | children = ( 105 | 24046EF10A3A02E9006476CC /* SystemConfiguration.framework */, 106 | 1058C7ADFEA557BF11CA2CBB /* Cocoa.framework */, 107 | ); 108 | name = "Linked Frameworks"; 109 | sourceTree = ""; 110 | }; 111 | 1058C7AEFEA557BF11CA2CBB /* Other Frameworks */ = { 112 | isa = PBXGroup; 113 | children = ( 114 | 089C167FFE841241C02AAC07 /* AppKit.framework */, 115 | D2F7E65807B2D6F200F64583 /* CoreData.framework */, 116 | 089C1672FE841209C02AAC07 /* Foundation.framework */, 117 | ); 118 | name = "Other Frameworks"; 119 | sourceTree = ""; 120 | }; 121 | 19C28FB8FE9D52D311CA2CBB /* Products */ = { 122 | isa = PBXGroup; 123 | children = ( 124 | 8D5B49B6048680CD000E48DA /* HexColorPicker.colorPicker */, 125 | ); 126 | name = Products; 127 | sourceTree = ""; 128 | }; 129 | 32C88E010371C26100C91783 /* Other Sources */ = { 130 | isa = PBXGroup; 131 | children = ( 132 | 32DBCF630370AF2F00C91783 /* hexcolorpicker_Prefix.pch */, 133 | ); 134 | name = "Other Sources"; 135 | sourceTree = ""; 136 | }; 137 | /* End PBXGroup section */ 138 | 139 | /* Begin PBXNativeTarget section */ 140 | 8D5B49AC048680CD000E48DA /* hexcolorpicker */ = { 141 | isa = PBXNativeTarget; 142 | buildConfigurationList = 1DEB913A08733D840010E9CD /* Build configuration list for PBXNativeTarget "hexcolorpicker" */; 143 | buildPhases = ( 144 | 8D5B49AF048680CD000E48DA /* Resources */, 145 | 8D5B49B1048680CD000E48DA /* Sources */, 146 | 8D5B49B3048680CD000E48DA /* Frameworks */, 147 | 247068A70B98E1A30084A4E7 /* ShellScript */, 148 | ); 149 | buildRules = ( 150 | ); 151 | dependencies = ( 152 | ); 153 | name = hexcolorpicker; 154 | productInstallPath = "$(HOME)/Library/Bundles"; 155 | productName = hexcolorpicker; 156 | productReference = 8D5B49B6048680CD000E48DA /* HexColorPicker.colorPicker */; 157 | productType = "com.apple.product-type.bundle"; 158 | }; 159 | /* End PBXNativeTarget section */ 160 | 161 | /* Begin PBXProject section */ 162 | 089C1669FE841209C02AAC07 /* Project object */ = { 163 | isa = PBXProject; 164 | buildConfigurationList = 1DEB913E08733D840010E9CD /* Build configuration list for PBXProject "hexcolorpicker" */; 165 | compatibilityVersion = "Xcode 2.4"; 166 | developmentRegion = English; 167 | hasScannedForEncodings = 1; 168 | knownRegions = ( 169 | English, 170 | Japanese, 171 | French, 172 | German, 173 | ); 174 | mainGroup = 089C166AFE841209C02AAC07 /* hexcolorpicker */; 175 | projectDirPath = ""; 176 | projectRoot = ""; 177 | targets = ( 178 | 8D5B49AC048680CD000E48DA /* hexcolorpicker */, 179 | ); 180 | }; 181 | /* End PBXProject section */ 182 | 183 | /* Begin PBXResourcesBuildPhase section */ 184 | 8D5B49AF048680CD000E48DA /* Resources */ = { 185 | isa = PBXResourcesBuildPhase; 186 | buildActionMask = 2147483647; 187 | files = ( 188 | 8D5B49B0048680CD000E48DA /* InfoPlist.strings in Resources */, 189 | 244F4D1D09A77524003C85E5 /* HexPicker.nib in Resources */, 190 | 2430C21B0B97A1B000E4067F /* Localizable.strings in Resources */, 191 | 247F77240BECC4E50067F0F4 /* icon.icns in Resources */, 192 | 2494B56F1024FF7800EF0E90 /* cog.tiff in Resources */, 193 | 249EBFFA1034DEAB002F6B2F /* cog-tiger.tiff in Resources */, 194 | ); 195 | runOnlyForDeploymentPostprocessing = 0; 196 | }; 197 | /* End PBXResourcesBuildPhase section */ 198 | 199 | /* Begin PBXShellScriptBuildPhase section */ 200 | 247068A70B98E1A30084A4E7 /* ShellScript */ = { 201 | isa = PBXShellScriptBuildPhase; 202 | buildActionMask = 2147483647; 203 | files = ( 204 | ); 205 | inputPaths = ( 206 | ); 207 | outputPaths = ( 208 | ); 209 | runOnlyForDeploymentPostprocessing = 0; 210 | shellPath = /bin/sh; 211 | shellScript = "/Developer/Tools/SetFile -a B \"$INSTALL_DIR/HexColorPicker.colorPicker\"\ntouch \"$INSTALL_DIR/HexColorPicker.colorPicker\""; 212 | }; 213 | /* End PBXShellScriptBuildPhase section */ 214 | 215 | /* Begin PBXSourcesBuildPhase section */ 216 | 8D5B49B1048680CD000E48DA /* Sources */ = { 217 | isa = PBXSourcesBuildPhase; 218 | buildActionMask = 2147483647; 219 | files = ( 220 | 244F4CF009A77191003C85E5 /* HexColorPicker.m in Sources */, 221 | 249F52C410EE6B2E00E62209 /* WSAsyncURL.m in Sources */, 222 | ); 223 | runOnlyForDeploymentPostprocessing = 0; 224 | }; 225 | /* End PBXSourcesBuildPhase section */ 226 | 227 | /* Begin PBXVariantGroup section */ 228 | 089C167DFE841241C02AAC07 /* InfoPlist.strings */ = { 229 | isa = PBXVariantGroup; 230 | children = ( 231 | 089C167EFE841241C02AAC07 /* English */, 232 | ); 233 | name = InfoPlist.strings; 234 | sourceTree = ""; 235 | }; 236 | 2430C21A0B97A1B000E4067F /* Localizable.strings */ = { 237 | isa = PBXVariantGroup; 238 | children = ( 239 | 2430C2160B97A1AA00E4067F /* English */, 240 | ); 241 | name = Localizable.strings; 242 | sourceTree = ""; 243 | }; 244 | 244F4D1B09A77524003C85E5 /* HexPicker.nib */ = { 245 | isa = PBXVariantGroup; 246 | children = ( 247 | 244F4D1C09A77524003C85E5 /* English */, 248 | ); 249 | name = HexPicker.nib; 250 | sourceTree = ""; 251 | }; 252 | /* End PBXVariantGroup section */ 253 | 254 | /* Begin XCBuildConfiguration section */ 255 | 1DEB913C08733D840010E9CD /* Release 10.4 */ = { 256 | isa = XCBuildConfiguration; 257 | buildSettings = { 258 | ARCHS = ( 259 | ppc, 260 | i386, 261 | ); 262 | DEPLOYMENT_LOCATION = YES; 263 | DSTROOT = /; 264 | GCC_GENERATE_DEBUGGING_SYMBOLS = NO; 265 | GCC_MODEL_TUNING = G5; 266 | GCC_PRECOMPILE_PREFIX_HEADER = YES; 267 | GCC_PREFIX_HEADER = hexcolorpicker_Prefix.pch; 268 | INFOPLIST_FILE = Info.plist; 269 | INSTALL_PATH = "$(HOME)/Library/ColorPickers"; 270 | PRODUCT_NAME = "HexColorPicker-10-4"; 271 | SKIP_INSTALL = YES; 272 | WRAPPER_EXTENSION = colorPicker; 273 | }; 274 | name = "Release 10.4"; 275 | }; 276 | 1DEB914008733D840010E9CD /* Release 10.4 */ = { 277 | isa = XCBuildConfiguration; 278 | buildSettings = { 279 | ARCHS = "$(ARCHS_STANDARD_32_BIT_PRE_XCODE_3_1)"; 280 | ARCHS_STANDARD_32_BIT_PRE_XCODE_3_1 = "ppc i386"; 281 | GCC_PREPROCESSOR_DEFINITIONS_NOT_USED_IN_PRECOMPS = HCP_BUILD_TIGER; 282 | GCC_VERSION = 4.0; 283 | GCC_WARN_ABOUT_RETURN_TYPE = YES; 284 | GCC_WARN_UNUSED_VARIABLE = YES; 285 | IBC_STRIP_NIBS = NO; 286 | "New Setting" = ""; 287 | PREBINDING = NO; 288 | SDKROOT = /Developer/SDKs/MacOSX10.4u.sdk; 289 | }; 290 | name = "Release 10.4"; 291 | }; 292 | 24206CF6101B25450066E2C4 /* Release 10.5 */ = { 293 | isa = XCBuildConfiguration; 294 | buildSettings = { 295 | ARCHS = "$(ARCHS_STANDARD_32_64_BIT_PRE_XCODE_3_1)"; 296 | ARCHS_STANDARD_32_64_BIT_PRE_XCODE_3_1 = "ppc i386 ppc64 x86_64"; 297 | GCC_ENABLE_OBJC_GC = YES; 298 | GCC_PREPROCESSOR_DEFINITIONS_NOT_USED_IN_PRECOMPS = ""; 299 | GCC_WARN_ABOUT_RETURN_TYPE = YES; 300 | GCC_WARN_UNUSED_VARIABLE = YES; 301 | IBC_STRIP_NIBS = NO; 302 | "New Setting" = ""; 303 | PREBINDING = NO; 304 | SDKROOT = /Developer/SDKs/MacOSX10.5.sdk; 305 | }; 306 | name = "Release 10.5"; 307 | }; 308 | 24206CF7101B25450066E2C4 /* Release 10.5 */ = { 309 | isa = XCBuildConfiguration; 310 | buildSettings = { 311 | ARCHS = "$(ARCHS_STANDARD_32_64_BIT_PRE_XCODE_3_1)"; 312 | ARCHS_STANDARD_32_64_BIT_PRE_XCODE_3_1 = "ppc i386 ppc64 x86_64"; 313 | DEPLOYMENT_LOCATION = YES; 314 | DSTROOT = /; 315 | GCC_GENERATE_DEBUGGING_SYMBOLS = NO; 316 | GCC_MODEL_TUNING = G5; 317 | GCC_PRECOMPILE_PREFIX_HEADER = YES; 318 | GCC_PREFIX_HEADER = hexcolorpicker_Prefix.pch; 319 | INFOPLIST_FILE = Info.plist; 320 | INSTALL_PATH = "$(HOME)/Library/ColorPickers"; 321 | PRODUCT_NAME = HexColorPicker; 322 | SKIP_INSTALL = YES; 323 | WRAPPER_EXTENSION = colorPicker; 324 | }; 325 | name = "Release 10.5"; 326 | }; 327 | /* End XCBuildConfiguration section */ 328 | 329 | /* Begin XCConfigurationList section */ 330 | 1DEB913A08733D840010E9CD /* Build configuration list for PBXNativeTarget "hexcolorpicker" */ = { 331 | isa = XCConfigurationList; 332 | buildConfigurations = ( 333 | 1DEB913C08733D840010E9CD /* Release 10.4 */, 334 | 24206CF7101B25450066E2C4 /* Release 10.5 */, 335 | ); 336 | defaultConfigurationIsVisible = 0; 337 | defaultConfigurationName = "Release 10.4"; 338 | }; 339 | 1DEB913E08733D840010E9CD /* Build configuration list for PBXProject "hexcolorpicker" */ = { 340 | isa = XCConfigurationList; 341 | buildConfigurations = ( 342 | 1DEB914008733D840010E9CD /* Release 10.4 */, 343 | 24206CF6101B25450066E2C4 /* Release 10.5 */, 344 | ); 345 | defaultConfigurationIsVisible = 0; 346 | defaultConfigurationName = "Release 10.4"; 347 | }; 348 | /* End XCConfigurationList section */ 349 | }; 350 | rootObject = 089C1669FE841209C02AAC07 /* Project object */; 351 | } 352 | -------------------------------------------------------------------------------- /HexColorPicker.m: -------------------------------------------------------------------------------- 1 | /* 2 | 3 | BSD License 4 | 5 | Copyright (c) 2006-2010, Jesper (waffle software) 6 | All rights reserved. 7 | 8 | Redistribution and use in source and binary forms, with or without modification, 9 | are permitted provided that the following conditions are met: 10 | 11 | * Redistributions of source code must retain the above copyright notice, 12 | this list of conditions and the following disclaimer. 13 | * Redistributions in binary form must reproduce the above copyright notice, 14 | this list of conditions and the following disclaimer in the documentation 15 | and/or other materials provided with the distribution. 16 | * Neither the name of Hex Color Picker or waffle software, nor the names of Hex Color Picker's 17 | contributors may be used to endorse or promote products derived from this software 18 | without specific prior written permission. 19 | 20 | THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" 21 | AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, 22 | THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR 23 | PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS 24 | BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, 25 | OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT 26 | OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 27 | INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, 28 | STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 29 | OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 30 | 31 | For more information, see http://wafflesoftware.net/hexpicker/ . 32 | 33 | */ 34 | 35 | // 36 | // HexColorPicker.m 37 | // hexcolorpicker 38 | // 39 | // Created by Jesper on 2006-02-18. 40 | // Copyright 2006-2010 waffle software. All rights reserved. 41 | // 42 | 43 | #import "HexColorPicker.h" 44 | #import 45 | #import "WSAsyncURL.h" 46 | #include 47 | #include 48 | 49 | #define HexColorPickerWebsite @"http://wafflesoftware.net/hexpicker/visit/" 50 | 51 | #define HexColorPickerPrefCheckForUpdatesKey @"HexColorPickerPrefCheckForUpdates" 52 | #define HexColorPickerPrefCheckForUpdatesVal NO 53 | 54 | #define HexColorPickerPrefAskedAboutUpdatesKey @"HexColorPickerPrefAskedAboutUpdates" 55 | #define HexColorPickerPrefAskedAboutUpdatesVal NO 56 | 57 | #define HexColorPickerPrefLastUpdateCheckKey @"HexColorPickerPrefLastUpdateCheck" 58 | 59 | #define HexColorPickerPrefUppercaseHexKey @"UppercaseHex" 60 | #define HexColorPickerPrefUppercaseHexVal YES 61 | 62 | #define HexColorPickerPrefEnableShorthandKey @"HexColorPickerPrefEnableShorthand" 63 | #define HexColorPickerPrefEnableShorthandVal YES 64 | 65 | #define HexColorPickerPrefGenerateDeviceKey @"HexColorPickerPrefGenerateDevice" 66 | #define HexColorPickerPrefGenerateDeviceVal NO 67 | 68 | #define HexColorPickerPrefOptionColorStyleKey @"HexColorPickerOptionColorStyle" 69 | #define HexColorPickerPrefOptionColorStyleVal @"Hex" 70 | 71 | 72 | #define HexColorPickerUpdateServer "wafflesoftware.net" 73 | // yes, that above is a char *, not an NSString 74 | #define HexColorPickerUpdateURL @"http://wafflesoftware.net/hexpicker/updatechecker/?requestversion=2&" 75 | 76 | #define HexColorPickerUpdateVerdict @"Verdict" 77 | #define HexColorPickerUpdateNewerAvailable @"Newer version available" 78 | #define HexColorPickerUpdateUpToDate @"No newer version available" 79 | 80 | #define HexColorPickerUpdateNewerURL @"Info URL" 81 | 82 | #define HexColorPickerUpdateNewVersion @"New version" 83 | 84 | #define HexColorPickerAskUpdatesMessage HCPLocalizedString(@"Should Hex Color Picker check for updates automatically?", @"HexColorPickerAskUpdatesMessage") 85 | #define HexColorPickerAskUpdatesInfo HCPLocalizedString(@"Hex Color Picker can automatically check for updates periodically. You won't need to update whenever a new version appears, and no personal information will be sent in order to check for updates.", @"HexColorPickerAskUpdatesInfo") 86 | #define HexColorPickerAskUpdatesYes HCPLocalizedString(@"Check automatically", @"HexColorPickerAskUpdatesYes") 87 | #define HexColorPickerAskUpdatesNo HCPLocalizedString(@"Don't check", @"HexColorPickerAskUpdatesNo") 88 | 89 | /* Big ups to CocoaDev! http://cocoadev.com/index.pl?NSBezierPathCategory */ 90 | 91 | @interface NSBezierPath (CocoaDevCategory) 92 | + (NSBezierPath*)hcp_bezierPathWithRoundRectInRect:(NSRect)aRect radius:(CGFloat)radius; 93 | @end 94 | 95 | @implementation NSBezierPath (CocoaDevCategory) 96 | 97 | + (NSBezierPath*)hcp_bezierPathWithRoundRectInRect:(NSRect)aRect radius:(CGFloat)radius 98 | { 99 | NSBezierPath* path = [self bezierPath]; 100 | radius = MIN(radius, 0.5f * MIN(NSWidth(aRect), NSHeight(aRect))); 101 | NSRect rect = NSInsetRect(aRect, radius, radius); 102 | [path appendBezierPathWithArcWithCenter:NSMakePoint(NSMinX(rect), NSMinY(rect)) 103 | radius:radius startAngle:180.0 endAngle:270.0]; 104 | [path appendBezierPathWithArcWithCenter:NSMakePoint(NSMaxX(rect), NSMinY(rect)) 105 | radius:radius startAngle:270.0 endAngle:360.0]; 106 | [path appendBezierPathWithArcWithCenter:NSMakePoint(NSMaxX(rect), NSMaxY(rect)) 107 | radius:radius startAngle: 0.0 endAngle: 90.0]; 108 | [path appendBezierPathWithArcWithCenter:NSMakePoint(NSMinX(rect), NSMaxY(rect)) 109 | radius:radius startAngle: 90.0 endAngle:180.0]; 110 | [path closePath]; 111 | return path; 112 | } 113 | 114 | @end 115 | 116 | @interface HexColorPicker (Private) 117 | 118 | - (void)hcp_syncColorAndField; 119 | - (void)hcp_syncFieldAndColor; 120 | - (NSString *)hcp_syncFieldAndColorWithoutChangingString; 121 | - (void)hcp_updateColorStyles:(NSColor *)color; 122 | 123 | - (void)hcp_updateColorStyleMenu; 124 | - (void)hcp_readPrefs; 125 | - (BOOL)hcp_boolPrefWithKey:(NSString *)pkey defaultValue:(BOOL)def; 126 | - (void)hcp_setBoolPref:(BOOL)pref forKey:(NSString *)pkey; 127 | - (NSString *)hcp_stringPrefWithKey:(NSString *)pkey; 128 | - (void)hcp_setStringPref:(NSString *)pref forKey:(NSString *)pkey; 129 | 130 | - (void)hcp_checkForUpdate; 131 | - (void)hcp_checkForUpdatePrepare; 132 | - (void)hcp_checkForUpdateGoFetch:(NSURL *)url; 133 | - (void)hcp_checkForUpdateUIFinish:(NSDictionary *)updateDict; 134 | 135 | - (BOOL)hcp_mayBeginCheckingForUpdate; 136 | - (void)hcp_updateCheckingHasFinished; 137 | 138 | - (BOOL)hcp_runsOnGC; 139 | - (BOOL)hcp_runsOn64; 140 | - (cpu_type_t)hcp_architecture; 141 | - (NSString *)hcp_bundleVersion; 142 | - (NSString *)hcp_systemVersion; 143 | @end 144 | @implementation HexColorPicker (Private) 145 | 146 | static NSDictionary *htmlKeywordsToColors; 147 | 148 | + (void)initialize { 149 | /** Source of these: http://www.w3.org/TR/css3-color/#svg-color (SVG colors, actually, but the HTML colors are all in there.) **/ 150 | htmlKeywordsToColors = [[NSDictionary dictionaryWithObjectsAndKeys: 151 | @"#F0F8FF", @"aliceblue", 152 | @"#FAEBD7", @"antiquewhite", 153 | @"#00FFFF", @"aqua", 154 | @"#7FFFD4", @"aquamarine", 155 | @"#F0FFFF", @"azure", 156 | @"#F5F5DC", @"beige", 157 | @"#FFE4C4", @"bisque", 158 | @"#000000", @"black", 159 | @"#FFEBCD", @"blanchedalmond", 160 | @"#0000FF", @"blue", 161 | @"#8A2BE2", @"blueviolet", 162 | @"#A52A2A", @"brown", 163 | @"#DEB887", @"burlywood", 164 | @"#5F9EA0", @"cadetblue", 165 | @"#7FFF00", @"chartreuse", 166 | @"#D2691E", @"chocolate", 167 | @"#FF7F50", @"coral", 168 | @"#6495ED", @"cornflowerblue", 169 | @"#FFF8DC", @"cornsilk", 170 | @"#DC143C", @"crimson", 171 | @"#00FFFF", @"cyan", 172 | @"#00008B", @"darkblue", 173 | @"#008B8B", @"darkcyan", 174 | @"#B8860B", @"darkgoldenrod", 175 | @"#A9A9A9", @"darkgray", 176 | @"#006400", @"darkgreen", 177 | @"#A9A9A9", @"darkgrey", 178 | @"#BDB76B", @"darkkhaki", 179 | @"#8B008B", @"darkmagenta", 180 | @"#556B2F", @"darkolivegreen", 181 | @"#FF8C00", @"darkorange", 182 | @"#9932CC", @"darkorchid", 183 | @"#8B0000", @"darkred", 184 | @"#E9967A", @"darksalmon", 185 | @"#8FBC8F", @"darkseagreen", 186 | @"#483D8B", @"darkslateblue", 187 | @"#2F4F4F", @"darkslategray", 188 | @"#2F4F4F", @"darkslategrey", 189 | @"#00CED1", @"darkturquoise", 190 | @"#9400D3", @"darkviolet", 191 | @"#FF1493", @"deeppink", 192 | @"#00BFFF", @"deepskyblue", 193 | @"#696969", @"dimgray", 194 | @"#696969", @"dimgrey", 195 | @"#1E90FF", @"dodgerblue", 196 | @"#B22222", @"firebrick", 197 | @"#FFFAF0", @"floralwhite", 198 | @"#228B22", @"forestgreen", 199 | @"#FF00FF", @"fuchsia", 200 | @"#DCDCDC", @"gainsboro", 201 | @"#F8F8FF", @"ghostwhite", 202 | @"#FFD700", @"gold", 203 | @"#DAA520", @"goldenrod", 204 | @"#808080", @"gray", 205 | @"#008000", @"green", 206 | @"#ADFF2F", @"greenyellow", 207 | @"#808080", @"grey", 208 | @"#F0FFF0", @"honeydew", 209 | @"#FF69B4", @"hotpink", 210 | @"#CD5C5C", @"indianred", 211 | @"#4B0082", @"indigo", 212 | @"#FFFFF0", @"ivory", 213 | @"#F0E68C", @"khaki", 214 | @"#E6E6FA", @"lavender", 215 | @"#FFF0F5", @"lavenderblush", 216 | @"#7CFC00", @"lawngreen", 217 | @"#FFFACD", @"lemonchiffon", 218 | @"#ADD8E6", @"lightblue", 219 | @"#F08080", @"lightcoral", 220 | @"#E0FFFF", @"lightcyan", 221 | @"#FAFAD2", @"lightgoldenrodyellow", 222 | @"#D3D3D3", @"lightgray", 223 | @"#90EE90", @"lightgreen", 224 | @"#D3D3D3", @"lightgrey", 225 | @"#FFB6C1", @"lightpink", 226 | @"#FFA07A", @"lightsalmon", 227 | @"#20B2AA", @"lightseagreen", 228 | @"#87CEFA", @"lightskyblue", 229 | @"#778899", @"lightslategray", 230 | @"#778899", @"lightslategrey", 231 | @"#B0C4DE", @"lightsteelblue", 232 | @"#FFFFE0", @"lightyellow", 233 | @"#00FF00", @"lime", 234 | @"#32CD32", @"limegreen", 235 | @"#FAF0E6", @"linen", 236 | @"#FF00FF", @"magenta", 237 | @"#800000", @"maroon", 238 | @"#66CDAA", @"mediumaquamarine", 239 | @"#0000CD", @"mediumblue", 240 | @"#BA55D3", @"mediumorchid", 241 | @"#9370DB", @"mediumpurple", 242 | @"#3CB371", @"mediumseagreen", 243 | @"#7B68EE", @"mediumslateblue", 244 | @"#00FA9A", @"mediumspringgreen", 245 | @"#48D1CC", @"mediumturquoise", 246 | @"#C71585", @"mediumvioletred", 247 | @"#191970", @"midnightblue", 248 | @"#F5FFFA", @"mintcream", 249 | @"#FFE4E1", @"mistyrose", 250 | @"#FFE4B5", @"moccasin", 251 | @"#FFDEAD", @"navajowhite", 252 | @"#000080", @"navy", 253 | @"#FDF5E6", @"oldlace", 254 | @"#808000", @"olive", 255 | @"#6B8E23", @"olivedrab", 256 | @"#FFA500", @"orange", 257 | @"#FF4500", @"orangered", 258 | @"#DA70D6", @"orchid", 259 | @"#EEE8AA", @"palegoldenrod", 260 | @"#98FB98", @"palegreen", 261 | @"#AFEEEE", @"paleturquoise", 262 | @"#DB7093", @"palevioletred", 263 | @"#FFEFD5", @"papayawhip", 264 | @"#FFDAB9", @"peachpuff", 265 | @"#CD853F", @"peru", 266 | @"#FFC0CB", @"pink", 267 | @"#DDA0DD", @"plum", 268 | @"#B0E0E6", @"powderblue", 269 | @"#800080", @"purple", 270 | @"#FF0000", @"red", 271 | @"#BC8F8F", @"rosybrown", 272 | @"#4169E1", @"royalblue", 273 | @"#8B4513", @"saddlebrown", 274 | @"#FA8072", @"salmon", 275 | @"#F4A460", @"sandybrown", 276 | @"#2E8B57", @"seagreen", 277 | @"#FFF5EE", @"seashell", 278 | @"#A0522D", @"sienna", 279 | @"#C0C0C0", @"silver", 280 | @"#87CEEB", @"skyblue", 281 | @"#6A5ACD", @"slateblue", 282 | @"#708090", @"slategray", 283 | @"#708090", @"slategrey", 284 | @"#FFFAFA", @"snow", 285 | @"#00FF7F", @"springgreen", 286 | @"#4682B4", @"steelblue", 287 | @"#D2B48C", @"tan", 288 | @"#008080", @"teal", 289 | @"#D8BFD8", @"thistle", 290 | @"#FF6347", @"tomato", 291 | @"#40E0D0", @"turquoise", 292 | @"#EE82EE", @"violet", 293 | @"#F5DEB3", @"wheat", 294 | @"#FFFFFF", @"white", 295 | @"#F5F5F5", @"whitesmoke", 296 | @"#FFFF00", @"yellow", 297 | @"#9ACD32", @"yellowgreen", 298 | 299 | // Easter eggs! 300 | @"#4B5259", @"gruber", 301 | @"#F0FA3B", @"wall", 302 | @"#F0FA3B", @"larry", 303 | 304 | // In-joke. 305 | @"#0167FF", @"blew", 306 | nil] retain]; 307 | } 308 | 309 | #pragma mark System and HCP introspection 310 | 311 | - (BOOL)hcp_runsOnGC { 312 | BOOL gcage = NO; 313 | Class gcclass = NSClassFromString(@"NSGarbageCollector"); 314 | if (gcclass != Nil) { 315 | if ([gcclass performSelector:@selector(defaultCollector)]) { 316 | gcage = YES; 317 | } 318 | } 319 | return gcage; 320 | } 321 | 322 | - (BOOL)hcp_runsOn64 { 323 | return 324 | #ifdef __LP64__ 325 | YES 326 | #else 327 | NO 328 | #endif 329 | ; 330 | } 331 | 332 | - (cpu_type_t)hcp_architecture { 333 | int value = 0; 334 | unsigned long length = sizeof(value); 335 | int error = sysctlbyname("hw.cputype", &value, &length, NULL, 0); 336 | if (error == 0) { 337 | return (cpu_type_t)value; 338 | } else { 339 | return CPU_TYPE_ANY; 340 | } 341 | } 342 | 343 | - (NSString *)hcp_bundleVersion { 344 | NSString *bundleVersion = [[[NSBundle bundleForClass:[self class]] infoDictionary] objectForKey:@"CFBundleVersion"]; 345 | return [[bundleVersion copy] autorelease]; 346 | } 347 | 348 | - (NSString *)hcp_systemVersion { 349 | return [[[[NSDictionary dictionaryWithContentsOfFile:@"/System/Library/CoreServices/SystemVersion.plist"] objectForKey:@"ProductVersion"] copy] autorelease]; 350 | } 351 | 352 | #pragma mark Color handling 353 | 354 | - (void)hcp_syncColorAndField { 355 | NSColor *color = currColor; 356 | 357 | //NSLog(@"synccolor: %@ (class: %@)", color, [color className]); 358 | 359 | NSColor *colorInCorrectColorSpace = [color colorUsingColorSpaceName:(shouldGenerateDevice ? NSDeviceRGBColorSpace : NSCalibratedRGBColorSpace)]; 360 | NSString *hslStr = @"?"; NSString *rgbStr = @"?"; NSString *hexStr = @"?"; BOOL rgb = NO; 361 | 362 | if (nil != colorInCorrectColorSpace) { 363 | color = colorInCorrectColorSpace; 364 | // NSLog(@"color 2: %@ (class: %@)", c, [c className]); 365 | 366 | [self hcp_updateColorStyles:color]; 367 | 368 | hexStr = [NSString stringWithFormat:@"#%@", [colorHex stringValue]]; 369 | rgbStr = [NSString stringWithFormat:@"%@,%@,%@", [colorR stringValue], [colorB stringValue], [colorG stringValue]]; 370 | hslStr = [NSString stringWithFormat:@"%@,%@%%,%@%%", [colorH stringValue], [colorS stringValue], [colorL stringValue]]; 371 | 372 | rgb = YES; 373 | } 374 | 375 | //NSLog(@"Style %@", optionColorStyle); 376 | [colorDisplay setEnabled:rgb]; 377 | if ( [optionColorStyle isEqualToString:@"RGB"]) { 378 | [colorDisplay setStringValue:rgbStr]; 379 | } else if ([optionColorStyle isEqualToString:@"HSL"]) { 380 | [colorDisplay setStringValue:hslStr]; 381 | } else { 382 | [colorDisplay setStringValue:hexStr]; 383 | } 384 | } 385 | 386 | - (NSString *)hcp_syncFieldAndColorWithoutChangingString { 387 | NSString *baseString = [colorDisplay stringValue]; 388 | NSString *f = [baseString uppercaseString]; 389 | // NSLog(@"string: %@", f); 390 | NSString *keywordColor = nil; 391 | NSScanner *sc; 392 | if ((keywordColor = [htmlKeywordsToColors objectForKey:[baseString lowercaseString]])) { 393 | sc = [NSScanner scannerWithString:[keywordColor uppercaseString]]; 394 | } else { 395 | sc = [NSScanner scannerWithString:f]; 396 | } 397 | NSString *s = @"nil"; 398 | NSCharacterSet *hex = [NSCharacterSet characterSetWithCharactersInString:@"0123456789ABCDEF"]; 399 | NSCharacterSet *ws = [NSCharacterSet whitespaceAndNewlineCharacterSet]; 400 | [sc scanCharactersFromSet:ws intoString:nil]; 401 | if ([sc scanUpToCharactersFromSet:hex intoString:&s]) { 402 | // NSLog(@"ate '%@'", s); 403 | } 404 | s = @"000000"; 405 | [sc scanCharactersFromSet:ws intoString:nil]; 406 | [sc scanCharactersFromSet:hex intoString:&s]; 407 | NSUInteger l = [s length]; 408 | NSString *r = @"00"; NSString *g = @"00"; NSString *b = @"00"; 409 | if (l == 1) { 410 | r = [NSString stringWithFormat:@"%@%@", [s substringWithRange:NSMakeRange(0,1)], [s substringWithRange:NSMakeRange(0,1)]]; 411 | g = r; 412 | b = r; 413 | } else if (l == 2) { 414 | r = [NSString stringWithFormat:@"%@%@", [s substringWithRange:NSMakeRange(0,1)], [s substringWithRange:NSMakeRange(1,1)]]; 415 | g = [NSString stringWithFormat:@"%@%@", [s substringWithRange:NSMakeRange(0,1)], [s substringWithRange:NSMakeRange(1,1)]]; 416 | b = [NSString stringWithFormat:@"%@%@", [s substringWithRange:NSMakeRange(0,1)], [s substringWithRange:NSMakeRange(1,1)]]; 417 | } else if (l == 3) { 418 | r = [NSString stringWithFormat:@"%@%@", [s substringWithRange:NSMakeRange(0,1)], [s substringWithRange:NSMakeRange(0,1)]]; 419 | g = [NSString stringWithFormat:@"%@%@", [s substringWithRange:NSMakeRange(1,1)], [s substringWithRange:NSMakeRange(1,1)]]; 420 | b = [NSString stringWithFormat:@"%@%@", [s substringWithRange:NSMakeRange(2,1)], [s substringWithRange:NSMakeRange(2,1)]]; 421 | } else if (l > 5) { // 6 or longer (ignore following chars) 422 | r = [NSString stringWithFormat:@"%@", [s substringWithRange:NSMakeRange(0,2)]]; 423 | g = [NSString stringWithFormat:@"%@", [s substringWithRange:NSMakeRange(2,2)]]; 424 | b = [NSString stringWithFormat:@"%@", [s substringWithRange:NSMakeRange(4,2)]]; 425 | } 426 | 427 | unsigned ri; unsigned gi; unsigned bi; 428 | sc = [NSScanner scannerWithString:r]; 429 | [sc scanHexInt:&ri]; 430 | sc = [NSScanner scannerWithString:g]; 431 | [sc scanHexInt:&gi]; 432 | sc = [NSScanner scannerWithString:b]; 433 | [sc scanHexInt:&bi]; 434 | 435 | double rc = (double)(ri/255.0); 436 | double gc = (double)(gi/255.0); 437 | double bc = (double)(bi/255.0); 438 | 439 | 440 | NSColor *c = (shouldGenerateDevice ? [NSColor colorWithDeviceRed:rc green:gc blue:bc alpha:1.0] : [NSColor colorWithCalibratedRed:rc green:gc blue:bc alpha:1.0]); 441 | // NSLog(@"color: %@", c); 442 | 443 | [self hcp_updateColorStyles:c]; 444 | 445 | holdTheFormat = YES; 446 | [[self colorPanel] setColor:c]; 447 | holdTheFormat = NO; 448 | 449 | s = [NSString stringWithFormat:@"#%02X%02X%02X", 450 | (unsigned int)ri, 451 | (unsigned int)gi, 452 | (unsigned int)bi]; 453 | if (!uppercasesHex) s = [s lowercaseString]; 454 | 455 | return s; 456 | 457 | } 458 | 459 | - (void)hcp_syncFieldAndColor { 460 | 461 | NSString *s = [self hcp_syncFieldAndColorWithoutChangingString]; 462 | 463 | if ([optionColorStyle isEqualToString:@"RGB"]) { 464 | s = [NSString stringWithFormat:@"%@,%@,%@", [colorR stringValue], [colorG stringValue], [colorB stringValue]]; 465 | } else if ([optionColorStyle isEqualToString:@"HSL"]) { 466 | s = [NSString stringWithFormat:@"%@,%@%%,%@%%", [colorH stringValue], [colorS stringValue], [colorL stringValue]]; 467 | } 468 | 469 | [colorDisplay setStringValue:s]; 470 | 471 | } 472 | 473 | - (void)hcp_updateColorStyles:(NSColor *)color { 474 | NSString *r = @"?"; NSString *g = @"?"; NSString *b = @"?"; 475 | NSString *h = @"?"; NSString *s = @"?"; NSString *l = @"?"; 476 | NSString *hex = @"?"; 477 | 478 | CGFloat hi = 0.0; CGFloat li = 0.0; CGFloat si = 0.0; 479 | //Gathered formula below from http://ariya.blogspot.com/2008/07/converting-between-hsl-and-hsv.html 480 | hi = [color hueComponent]; 481 | li = (2 - [color saturationComponent]) * [color brightnessComponent]; 482 | si = [color saturationComponent] * [color brightnessComponent]; 483 | si = (li == 0) ? 0 : (si /= (li <= 1) ? (li) : 2 - (li)); 484 | li /= 2; 485 | 486 | //NSLog(@"hsl float: %f %f %f", (360*hi), (100*si), (100*li)); 487 | //NSLog(@"hsl values: %d %d %d", (unsigned int)(hi*360+0.5), (unsigned int)(si*100+0.5), (unsigned int)(li*100+0.5)); 488 | h = [NSString stringWithFormat:@"%d", (unsigned int)(hi*360+0.5)]; 489 | s = [NSString stringWithFormat:@"%d", (unsigned int)(si*100+0.5)]; 490 | l = [NSString stringWithFormat:@"%d", (unsigned int)(li*100+0.5)]; 491 | 492 | r = [NSString stringWithFormat:@"%d", (unsigned int)(255*[color redComponent])]; 493 | g = [NSString stringWithFormat:@"%d", (unsigned int)(255*[color greenComponent])]; 494 | b = [NSString stringWithFormat:@"%d", (unsigned int)(255*[color blueComponent])]; 495 | 496 | hex = [NSString stringWithFormat:@"%02X%02X%02X", 497 | (unsigned int)(255*[color redComponent]), 498 | (unsigned int)(255*[color greenComponent]), 499 | (unsigned int)(255*[color blueComponent])]; 500 | if (!uppercasesHex) hex = [hex lowercaseString]; 501 | 502 | 503 | [colorR setStringValue:r]; 504 | [colorG setStringValue:g]; 505 | [colorB setStringValue:b]; 506 | 507 | [colorH setStringValue:h]; 508 | [colorS setStringValue:s]; 509 | [colorL setStringValue:l]; 510 | 511 | [colorHex setStringValue:hex]; 512 | 513 | } 514 | 515 | #pragma mark Preferences 516 | 517 | - (BOOL)hcp_boolPrefWithKey:(NSString *)pkey defaultValue:(BOOL)def { 518 | // NSLog(@"bool pref %@?", pkey); 519 | CFPreferencesSynchronize(kCFPreferencesAnyApplication,kCFPreferencesCurrentUser,kCFPreferencesCurrentHost); 520 | CFPropertyListRef lr = CFPreferencesCopyValue((CFStringRef)pkey,kCFPreferencesAnyApplication,kCFPreferencesCurrentUser,kCFPreferencesCurrentHost); 521 | if (lr == NULL) { 522 | // NSLog(@"- saved pref is null; pref %@ is %@", pkey, def ? @"Y" : @"N"); 523 | return def; 524 | } 525 | BOOL retVal = def; 526 | if (CFGetTypeID(lr) == CFBooleanGetTypeID()) { 527 | retVal = (lr == kCFBooleanTrue); 528 | // NSLog(@"- pref %@ is %@", pkey, retVal ? @"Y" : @"N"); 529 | } else { 530 | // NSLog(@"- pref is not boolean; pref %@ is %@", pkey, def ? @"Y" : @"N"); 531 | } 532 | CFRelease(lr); 533 | return retVal; 534 | } 535 | 536 | - (void)hcp_setBoolPref:(BOOL)pref forKey:(NSString *)pkey { 537 | // NSLog(@"set bool pref %@ to %@", pkey, (pref ? @"Y" : @"N")); 538 | CFPreferencesSetValue((CFStringRef)pkey, (pref ? kCFBooleanTrue : kCFBooleanFalse), kCFPreferencesAnyApplication,kCFPreferencesCurrentUser,kCFPreferencesCurrentHost); 539 | CFPreferencesSynchronize(kCFPreferencesAnyApplication,kCFPreferencesCurrentUser,kCFPreferencesCurrentHost); 540 | } 541 | 542 | - (NSString *)hcp_stringPrefWithKey:(NSString *)pkey { 543 | CFPreferencesSynchronize(kCFPreferencesAnyApplication,kCFPreferencesCurrentUser,kCFPreferencesCurrentHost); 544 | CFPropertyListRef lr = CFPreferencesCopyValue((CFStringRef)pkey,kCFPreferencesAnyApplication,kCFPreferencesCurrentUser,kCFPreferencesCurrentHost); 545 | if (lr == NULL) return @""; 546 | // make it work with GC (otherwise we'd return a CF object with a +1 retain count) 547 | NSString *returnValue = [((NSString *)lr) copy]; 548 | CFRelease(lr); 549 | return [returnValue autorelease]; 550 | } 551 | 552 | - (void)hcp_setStringPref:(NSString *)pref forKey:(NSString *)pkey { 553 | CFPreferencesSetValue((CFStringRef)pkey, ((CFStringRef)pref), kCFPreferencesAnyApplication,kCFPreferencesCurrentUser,kCFPreferencesCurrentHost); 554 | CFPreferencesSynchronize(kCFPreferencesAnyApplication,kCFPreferencesCurrentUser,kCFPreferencesCurrentHost); 555 | } 556 | 557 | - (void)hcp_readPrefs { 558 | hasAskedAboutUpdates = [self hcp_boolPrefWithKey:HexColorPickerPrefAskedAboutUpdatesKey defaultValue:HexColorPickerPrefAskedAboutUpdatesVal]; 559 | shouldCheckForUpdates = [self hcp_boolPrefWithKey:HexColorPickerPrefCheckForUpdatesKey defaultValue:HexColorPickerPrefCheckForUpdatesVal]; 560 | uppercasesHex = [self hcp_boolPrefWithKey:HexColorPickerPrefUppercaseHexKey defaultValue:HexColorPickerPrefUppercaseHexVal]; 561 | shouldEnableShorthand = [self hcp_boolPrefWithKey:HexColorPickerPrefEnableShorthandKey defaultValue:HexColorPickerPrefEnableShorthandVal]; 562 | shouldGenerateDevice = [self hcp_boolPrefWithKey:HexColorPickerPrefGenerateDeviceKey defaultValue:HexColorPickerPrefGenerateDeviceVal]; 563 | optionColorStyle = [self hcp_stringPrefWithKey:HexColorPickerPrefOptionColorStyleKey]; 564 | if ([optionColorStyle isEqualToString:@""]) { 565 | optionColorStyle = HexColorPickerPrefOptionColorStyleVal; 566 | } 567 | 568 | [self hcp_updateColorStyleMenu]; 569 | [self hcp_checkForUpdate]; 570 | } 571 | 572 | - (void)hcp_updateColorStyleMenu { 573 | [colorStyleHex setState:NSOffState]; 574 | [colorStyleRGB setState:NSOffState]; 575 | [colorStyleHSL setState:NSOffState]; 576 | if ([optionColorStyle isEqualToString:@"Hex"]) { 577 | [colorStyleHex setState:NSOnState]; 578 | } else if ([optionColorStyle isEqualToString:@"RGB"]) { 579 | [colorStyleRGB setState:NSOnState]; 580 | } else if ([optionColorStyle isEqualToString:@"HSL"]) { 581 | [colorStyleHSL setState:NSOnState]; 582 | } 583 | } 584 | 585 | - (void)hcp_askAboutUpdatesAlertDidEnd:(NSAlert *)alert returnCode:(NSInteger)returnCode contextInfo:(void *)contextInfo { 586 | // NSLog(@"alert did end: %i", returnCode); 587 | [self hcp_setBoolPref:YES forKey:HexColorPickerPrefAskedAboutUpdatesKey]; 588 | hasAskedAboutUpdates = YES; 589 | [self hcp_setBoolPref:(returnCode == NSAlertDefaultReturn) forKey:HexColorPickerPrefCheckForUpdatesKey]; 590 | shouldCheckForUpdates = (returnCode == NSAlertDefaultReturn); 591 | // NSLog(@"hex color picker: should check? %i", returnCode); 592 | if (returnCode == NSAlertDefaultReturn) [self hcp_checkForUpdate]; 593 | } 594 | 595 | - (BOOL)hcp_mayBeginCheckingForUpdate { 596 | // Check, atomically, whether an update is already in progress, and don't do anything if it is. 597 | // This flag is int32_t because that's the smallest type for which Apple provides this function. 598 | // The flag is unset on every error condition, or when the update is complete, in hcp_updateCheckingHasFinished. 599 | if (OSAtomicCompareAndSwap32Barrier((int32_t)NO, (int32_t)YES, &isCheckingForUpdatesRightNow)) { 600 | return YES; 601 | } else { 602 | return NO; 603 | } 604 | } 605 | 606 | - (void)hcp_updateCheckingHasFinished { 607 | OSAtomicCompareAndSwap32Barrier((int32_t)YES, (int32_t)NO, &isCheckingForUpdatesRightNow); 608 | } 609 | 610 | - (void)hcp_checkForUpdatePrepare { 611 | NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init]; 612 | 613 | // First, check for 'reachability' (can we reach the update server without establishing a new connection? 614 | SCNetworkReachabilityRef target; 615 | SCNetworkConnectionFlags flags = 0; 616 | Boolean success; 617 | target = SCNetworkReachabilityCreateWithName(NULL, HexColorPickerUpdateServer); 618 | success = SCNetworkReachabilityGetFlags(target, &flags); 619 | CFRelease(target); 620 | 621 | // NSLog(@"reachable?"); 622 | if(!success || (!((flags & kSCNetworkFlagsReachable) && !(flags & kSCNetworkFlagsConnectionRequired)))) { 623 | [self hcp_updateCheckingHasFinished]; 624 | goto bail; // Instead of return; have to drain the autorelease pool. 625 | } 626 | // NSLog(@"apparently"); 627 | 628 | NSString *systemVersion = [[self hcp_systemVersion] retain]; 629 | if (!systemVersion) systemVersion = @"?"; 630 | cpu_type_t cpuArch = [self hcp_architecture]; 631 | NSString *cpu = @"?"; 632 | switch (cpuArch) { 633 | case CPU_TYPE_X86: 634 | cpu = @"x86"; 635 | break; 636 | case CPU_TYPE_X86_64: 637 | cpu = @"x86-64"; 638 | break; 639 | 640 | // not defined in 10.4 SDK 641 | #ifndef CPU_TYPE_ARM 642 | #define CPU_TYPE_ARM ((cpu_type_t) 12) 643 | #endif 644 | case CPU_TYPE_ARM: 645 | cpu = @"arm"; 646 | break; 647 | case CPU_TYPE_POWERPC: 648 | cpu = @"ppc"; 649 | break; 650 | case CPU_TYPE_POWERPC64: 651 | cpu = @"ppc-64"; 652 | break; 653 | } 654 | 655 | NSString *bundleVersion = [[self hcp_bundleVersion] retain]; 656 | 657 | // Now, do the actual check. 658 | // Suck down dictionary that results in a call to the update server. 659 | // (We supply our version number, which saves version comparison heuristics in this class.) 660 | NSString *upURLString = [NSString stringWithFormat:@"%@v=%@&osxversion=%@&arch=%@", 661 | HexColorPickerUpdateURL, 662 | bundleVersion, 663 | systemVersion, 664 | cpu 665 | ]; 666 | 667 | [systemVersion release]; 668 | [bundleVersion release]; 669 | 670 | [self hcp_setStringPref:[[NSDate date] description] forKey:HexColorPickerPrefLastUpdateCheckKey]; 671 | 672 | NSURL *upURL = [NSURL URLWithString:upURLString]; 673 | 674 | // If I don't run this on the main thread, it just dies. 675 | // Either something goes away with autorelease (and I retain everything!) 676 | // or it just doesn't like continuing to load when the thread it was started on 677 | // was stopped (which is bogus, it should isolate this coordination elsewhere). 678 | [self performSelectorOnMainThread:@selector(hcp_checkForUpdateGoFetch:) withObject:[upURL retain] waitUntilDone:YES]; 679 | // [self hcp_checkForUpdateGoFetch:[upURL retain]]; 680 | // NSLog(@"hex color picker: updateurl: %@", upURL); 681 | 682 | bail: 683 | [pool drain]; 684 | } 685 | 686 | - (void)hcp_checkForUpdateGoFetch:(NSURL *)url { 687 | // Cross the network in the background, please. 688 | [WSAsyncURL fetchURL:[url autorelease] 689 | loadDelegate:self 690 | successSelector:@selector(hcp_receivedUpdateDictData:) 691 | failSelector:@selector(hcp_failedUpdateCheck:)]; 692 | } 693 | 694 | - (void)hcp_receivedUpdateDictData:(NSData *)data { 695 | NSPropertyListFormat plistFormat; 696 | NSString *errString; 697 | NSDictionary *updateDict = [[NSPropertyListSerialization 698 | propertyListFromData:data 699 | mutabilityOption:NSPropertyListImmutable 700 | format:&plistFormat 701 | errorDescription:&errString] retain]; 702 | if (errString) [errString release]; 703 | 704 | if (![updateDict isKindOfClass:[NSDictionary class]]) { 705 | [updateDict release]; 706 | updateDict = nil; 707 | } 708 | 709 | // NSLog(@"hex color picker: updatedict: %@", updateDict); 710 | 711 | if (!updateDict || [updateDict count]<1) { 712 | [updateDict release]; 713 | [self hcp_updateCheckingHasFinished]; 714 | return; 715 | } 716 | 717 | [self performSelectorOnMainThread:@selector(hcp_checkForUpdateUIFinish:) withObject:[updateDict copy] waitUntilDone:NO]; 718 | [updateDict release]; 719 | } 720 | 721 | - (void)hcp_failedUpdateCheck:(NSError *)err { 722 | [self hcp_updateCheckingHasFinished]; 723 | // NSLog(@"hex color picker: update check failed (%@)", err); 724 | } 725 | 726 | - (void)hcp_checkForUpdateUIFinish:(NSDictionary *)updateDict { 727 | NSString *verdict = [[updateDict objectForKey:HexColorPickerUpdateVerdict] copy]; 728 | 729 | [self hcp_updateCheckingHasFinished]; 730 | 731 | if (!verdict) { 732 | [updateDict release]; 733 | return; 734 | } 735 | if ([verdict isEqualToString:HexColorPickerUpdateNewerAvailable]) { 736 | NSString *infourl = [updateDict objectForKey:HexColorPickerUpdateNewerURL]; 737 | if (updateInfoURL) [updateInfoURL release]; 738 | updateInfoURL = [[NSURL alloc] initWithString:infourl]; 739 | NSString *v = [updateDict objectForKey:HexColorPickerUpdateNewVersion]; 740 | [goUpgrade setHidden:NO]; 741 | [goUpgrade setTitle:[NSString stringWithFormat:HCPLocalizedString(@"Upgrade to v%@", @"HexColorPickerGetVersionFormat"), v]]; 742 | } 743 | [verdict release]; 744 | [updateDict release]; 745 | } 746 | 747 | - (void)hcp_checkForUpdate { 748 | 749 | [self hcp_mayBeginCheckingForUpdate]; 750 | 751 | // NSLog(@"hcp_checkForUpdate: should? %@ has? %@", (shouldCheckForUpdates ? @"YES" : @"NO"), (hasAskedAboutUpdates ? @"YES" : @"NO")); 752 | 753 | if (!shouldCheckForUpdates) { 754 | if (!hasAskedAboutUpdates) { 755 | if (!alertIsUp) { 756 | NSAlert *askingAboutUpdates = [NSAlert alertWithMessageText:HexColorPickerAskUpdatesMessage defaultButton:HexColorPickerAskUpdatesYes alternateButton:HexColorPickerAskUpdatesNo otherButton:nil informativeTextWithFormat:HexColorPickerAskUpdatesInfo]; 757 | [askingAboutUpdates beginSheetModalForWindow:[colorPickerView window] modalDelegate:self didEndSelector:@selector(hcp_askAboutUpdatesAlertDidEnd:returnCode:contextInfo:) contextInfo:nil]; 758 | alertIsUp = YES; 759 | } 760 | } 761 | [self hcp_updateCheckingHasFinished]; 762 | return; 763 | } 764 | 765 | // In a perfect world, this would be a date setting, but it's more confusing to change it now. 766 | NSString *lastDateString = [self hcp_stringPrefWithKey:HexColorPickerPrefLastUpdateCheckKey]; 767 | if (lastDateString && ![@"" isEqualToString:[lastDateString stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]]]) { 768 | NSDate *lastDate = [NSDate dateWithString:lastDateString]; 769 | NSDate *now = [NSDate date]; 770 | // NSLog(@"lastDate: <%@> %@, now: %@", lastDateString, lastDate, now); 771 | if ([(NSDate *)[now addTimeInterval:(NSTimeInterval)(-(60.0*60.0*12.0))] compare:lastDate] != NSOrderedDescending) { 772 | // Never check more than twice a day. 773 | // NSLog(@"don't check..."); 774 | [self hcp_updateCheckingHasFinished]; 775 | return; 776 | } 777 | } 778 | 779 | // Under some odd conditions, even the reachability check can block. 780 | // For that reason, if we're to check updates *really* synchronously, detach to a new thread. 781 | [NSThread detachNewThreadSelector:@selector(hcp_checkForUpdatePrepare) toTarget:self withObject:nil]; 782 | 783 | } 784 | 785 | @end 786 | 787 | @implementation HexColorPicker 788 | 789 | - (void)dealloc { 790 | [currColor release]; 791 | [updateInfoURL release]; 792 | 793 | [super dealloc]; 794 | } 795 | 796 | - (NSSize)minContentSize { 797 | return NSMakeSize(210.0, 180.0); 798 | } 799 | 800 | - (IBAction)copyToClipboard:(id)sender { 801 | NSPasteboard *pb = [NSPasteboard generalPasteboard]; 802 | [pb declareTypes:[NSArray arrayWithObjects:NSStringPboardType, NSColorPboardType, nil] owner:nil]; 803 | 804 | NSString *copying = [colorHex stringValue]; 805 | 806 | NSText *fe = [[colorHex window] fieldEditor:NO forObject:colorHex]; 807 | if (fe != nil) { 808 | NSRange r = [fe selectedRange]; 809 | if (!(r.location == NSNotFound || r.length == 0)) { 810 | copying = [copying substringWithRange:r]; 811 | } 812 | } 813 | 814 | [pb setString:copying forType:NSStringPboardType]; 815 | [[[self colorPanel] color] writeToPasteboard:pb]; 816 | } 817 | 818 | - (IBAction)updateColorStyle:(id)sender { 819 | //NSLog(@"Current Title %@", [sender title]); 820 | 821 | NSString *ocs = [sender title]; 822 | 823 | if (optionColorStyle != ocs) { 824 | [self hcp_setStringPref:ocs forKey:HexColorPickerPrefOptionColorStyleKey]; 825 | optionColorStyle = ocs; 826 | 827 | [self hcp_updateColorStyleMenu]; 828 | 829 | [self hcp_syncColorAndField]; 830 | } 831 | } 832 | 833 | - (NSView *)provideNewView:(BOOL)initialRequest { 834 | if (initialRequest) { 835 | BOOL loaded = [NSBundle loadNibNamed:@"HexPicker" owner:self]; 836 | NSAssert((loaded == YES), @"NIB did not load"); 837 | 838 | #ifdef HCP_BUILD_TIGER 839 | [[cogButton cell] setArrowPosition:NSPopUpNoArrow]; 840 | [[cogMenu itemAtIndex:0] setImage:[[[NSImage alloc] initWithContentsOfFile:[[NSBundle bundleForClass:[self class]] pathForResource:@"cog-tiger" ofType:@"tiff"]] autorelease]]; 841 | #endif 842 | [cogButton setMenu:cogMenu]; 843 | 844 | 845 | } 846 | NSAssert((nil != colorPickerView), @"colorPickerView is nil!"); 847 | 848 | // NSLog(@"provide new view"); 849 | [self hcp_readPrefs]; 850 | 851 | return colorPickerView; 852 | } 853 | 854 | - (void)controlTextDidChange:(NSNotification *)aNotification { 855 | // NSLog(@"color hex text did change: %@", [colorHex stringValue]); 856 | [self hcp_syncFieldAndColorWithoutChangingString]; 857 | } 858 | 859 | - (void)setColor:(NSColor *)color { 860 | // NSLog(@"setcolor: %@ (hold the format? %@)", color, (holdTheFormat ? @"yep" : @"nope")); 861 | 862 | [currColor release]; 863 | currColor = [color retain]; 864 | 865 | if (!holdTheFormat) 866 | [self hcp_syncColorAndField]; 867 | } 868 | 869 | - (BOOL)supportsMode:(NSInteger)mode { 870 | switch (mode) { 871 | case NSColorPanelAllModesMask: 872 | return YES; 873 | } 874 | return NO; 875 | } 876 | - (NSInteger)currentMode { 877 | return NSColorPanelAllModesMask; 878 | } 879 | 880 | - (IBAction)colorChanged:(id)sender { 881 | // NSLog(@"color changed: %@", sender); 882 | // NSLog(@"field editor object: %@", [[colorHex window] fieldEditor:YES forObject:colorHex]); 883 | 884 | [self hcp_syncFieldAndColor]; 885 | } 886 | 887 | - (NSImage *)provideNewButtonImage { 888 | NSImage *im; 889 | 890 | im = [[NSImage alloc] initWithContentsOfFile:[[NSBundle bundleForClass:[self class]] pathForResource:@"icon" ofType:@"icns"]]; 891 | [im setScalesWhenResized:YES]; 892 | [im setSize:NSMakeSize(32.0,32.0)]; 893 | 894 | return [im autorelease]; 895 | } 896 | 897 | - (IBAction)visitWebsite:(id)sender { 898 | [[NSWorkspace sharedWorkspace] openURL:[NSURL URLWithString:HexColorPickerWebsite]]; 899 | } 900 | 901 | - (IBAction)goUpgrade:(id)sender { 902 | if (updateInfoURL) 903 | [[NSWorkspace sharedWorkspace] openURL:updateInfoURL]; 904 | } 905 | 906 | - (IBAction)showAboutPanel:(id)sender { 907 | NSString *bundleVersion = [self hcp_bundleVersion]; 908 | if (bundleVersion == nil || [bundleVersion isEqualToString:@""]) { 909 | bundleVersion = @"?"; 910 | } 911 | NSString *bittage = ([self hcp_runsOn64] ? @"64" : @"32"); 912 | NSString *gcage = ([self hcp_runsOnGC] ? @", GC" : @""); 913 | 914 | [aboutVersionField setStringValue:[NSString stringWithFormat:@"%@ (%@-bit%@)", bundleVersion, bittage, gcage]]; 915 | [NSApp beginSheet:aboutPanel modalForWindow:[colorPickerView window] modalDelegate:self didEndSelector:@selector(aboutSheetDidEnd:returnCode:contextInfo:) contextInfo:nil]; 916 | } 917 | 918 | - (IBAction)closeAboutPanel:(id)sender { 919 | [NSApp endSheet:aboutPanel]; 920 | } 921 | 922 | - (IBAction)showPrefs:(id)sender { 923 | [useUpperHex setState:(uppercasesHex ? NSOnState : NSOffState)]; 924 | [checkForUpdates setState:(shouldCheckForUpdates ? NSOnState : NSOffState)]; 925 | [enableShorthand setState:(shouldEnableShorthand ? NSOnState : NSOffState)]; 926 | [useDeviceColors setState:(shouldGenerateDevice ? NSOnState : NSOffState)]; 927 | [NSApp beginSheet:colorPickerPrefs modalForWindow:[colorPickerView window] modalDelegate:self didEndSelector:@selector(sheetDidEnd:returnCode:contextInfo:) contextInfo:nil]; 928 | } 929 | 930 | - (void)aboutSheetDidEnd:(NSWindow *)sheet returnCode:(NSInteger)returnCode contextInfo:(void *)contextInfo { 931 | [sheet orderOut:self]; 932 | } 933 | 934 | - (void)sheetDidEnd:(NSWindow *)sheet returnCode:(NSInteger)returnCode contextInfo:(void *)contextInfo { 935 | 936 | [sheet orderOut:self]; 937 | 938 | // NSLog(@"sheet did end"); 939 | [self hcp_readPrefs]; 940 | } 941 | 942 | - (IBAction)savePrefs:(id)sender { 943 | BOOL cfu = ([checkForUpdates state] == NSOnState); 944 | BOOL uch = ([useUpperHex state] == NSOnState); 945 | BOOL usk = ([enableShorthand state] == NSOnState); 946 | BOOL gdv = ([useDeviceColors state] == NSOnState); 947 | [self hcp_setBoolPref:cfu forKey:HexColorPickerPrefCheckForUpdatesKey]; 948 | shouldCheckForUpdates = cfu; 949 | [self hcp_setBoolPref:uch forKey:HexColorPickerPrefUppercaseHexKey]; 950 | uppercasesHex = uch; 951 | [self hcp_setBoolPref:usk forKey:HexColorPickerPrefEnableShorthandKey]; 952 | shouldEnableShorthand = usk; 953 | [self hcp_setBoolPref:gdv forKey:HexColorPickerPrefGenerateDeviceKey]; 954 | shouldGenerateDevice = gdv; 955 | 956 | NSString *hex = [[colorHex stringValue] lowercaseString]; 957 | if (uch) hex = [hex uppercaseString]; 958 | [colorHex setStringValue:hex]; 959 | [colorHex display]; 960 | 961 | [self hcp_syncColorAndField]; 962 | 963 | [NSApp endSheet:colorPickerPrefs]; 964 | } 965 | 966 | #define HexColorPickerAppName HCPLocalizedString(@"Hex Color Picker", @"HexColorPickerAppName") 967 | 968 | // private API pre-10.5; the only way you could customize the tool tip. 969 | - (NSString *)_buttonToolTip { 970 | return HexColorPickerAppName; 971 | } 972 | 973 | // new, official API in 10.5 974 | - (NSString *)buttonToolTip { 975 | return HexColorPickerAppName; 976 | } 977 | 978 | - (NSString *)description { 979 | return HexColorPickerAppName; 980 | } 981 | 982 | 983 | @end 984 | -------------------------------------------------------------------------------- /English.lproj/HexPicker.nib/designable.nib: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 1040 5 | 10J567 6 | 804 7 | 1038.35 8 | 462.00 9 | 10 | com.apple.InterfaceBuilder.CocoaPlugin 11 | 804 12 | 13 | 14 | YES 15 | 16 | 17 | 18 | 19 | 20 | YES 21 | com.apple.InterfaceBuilder.CocoaPlugin 22 | 23 | 24 | PluginDependencyRecalculationVersion 25 | 26 | 27 | 28 | YES 29 | 30 | HexColorPicker 31 | 32 | 33 | FirstResponder 34 | 35 | 36 | NSApplication 37 | 38 | 39 | 40 | 274 41 | 42 | YES 43 | 44 | 45 | 269 46 | 47 | YES 48 | 49 | 50 | 268 51 | {{8, 64}, {14, 17}} 52 | 53 | YES 54 | 55 | 68288064 56 | 272630784 57 | R 58 | 59 | LucidaGrande 60 | 13 61 | 1044 62 | 63 | 64 | 65 | 6 66 | System 67 | controlColor 68 | 69 | 3 70 | MC42NjY2NjY2NjY3AA 71 | 72 | 73 | 74 | 6 75 | System 76 | controlTextColor 77 | 78 | 3 79 | MAA 80 | 81 | 82 | 83 | 84 | 85 | 86 | 268 87 | {{118, 59}, {41, 22}} 88 | 89 | YES 90 | 91 | -2077098431 92 | 138417152 93 | 359 94 | 95 | 96 | YES 97 | 98 | 99 | 6 100 | System 101 | textColor 102 | 103 | 104 | 105 | 106 | 107 | 108 | 268 109 | {{103, 64}, {14, 17}} 110 | 111 | YES 112 | 113 | 68288064 114 | 272630784 115 | H 116 | 117 | 118 | 119 | 120 | 121 | 122 | 123 | 124 | 268 125 | {{51, 5}, {13, 17}} 126 | 127 | YES 128 | 129 | 68288064 130 | 272630784 131 | # 132 | 133 | 134 | 135 | 136 | 137 | 138 | 139 | 140 | 268 141 | {{8, 30}, {14, 17}} 142 | 143 | YES 144 | 145 | 68288064 146 | 272630784 147 | B 148 | 149 | 150 | 151 | 152 | 153 | 154 | 155 | 156 | 268 157 | {{23, 59}, {41, 22}} 158 | 159 | YES 160 | 161 | -2077098431 162 | 138417152 163 | 255 164 | 165 | 166 | YES 167 | 168 | 169 | 170 | 171 | 172 | 173 | 268 174 | {{23, 42}, {41, 22}} 175 | 176 | YES 177 | 178 | -2077098431 179 | 138417152 180 | 255 181 | 182 | 183 | YES 184 | 185 | 186 | 187 | 188 | 189 | 190 | 268 191 | {{8, 47}, {14, 17}} 192 | 193 | YES 194 | 195 | 68288064 196 | 272630784 197 | G 198 | 199 | 200 | 201 | 202 | 203 | 204 | 205 | 206 | 268 207 | {{23, 25}, {41, 22}} 208 | 209 | YES 210 | 211 | -2077098431 212 | 138417152 213 | 255 214 | 215 | 216 | YES 217 | 218 | 219 | 220 | 221 | 222 | 223 | 268 224 | {{118, 42}, {42, 22}} 225 | 226 | YES 227 | 228 | -2077098431 229 | 138417152 230 | 100% 231 | 232 | 233 | YES 234 | 235 | 236 | 237 | 238 | 239 | 240 | 268 241 | {{118, 25}, {42, 22}} 242 | 243 | YES 244 | 245 | -2077098431 246 | 138417152 247 | 100% 248 | 249 | 250 | YES 251 | 252 | 253 | 254 | 255 | 256 | 257 | 268 258 | {{103, 47}, {14, 17}} 259 | 260 | YES 261 | 262 | 68288064 263 | 272630784 264 | S 265 | 266 | 267 | 268 | 269 | 270 | 271 | 272 | 273 | 268 274 | {{56, 0}, {61, 22}} 275 | 276 | YES 277 | 278 | -2077098431 279 | 138417152 280 | FFFFFF 281 | 282 | 283 | YES 284 | 285 | 286 | 287 | 288 | 289 | 290 | 268 291 | {{103, 30}, {14, 17}} 292 | 293 | YES 294 | 295 | 68288064 296 | 272630784 297 | L 298 | 299 | 300 | 301 | 302 | 303 | 304 | 305 | {{23, 89}, {166, 84}} 306 | 307 | NSView 308 | 309 | 310 | 311 | 289 312 | {{166, 3}, {36, 19}} 313 | 314 | YES 315 | 316 | -2076049856 317 | 2048 318 | 319 | LucidaGrande 320 | 12 321 | 16 322 | 323 | 324 | -2031075073 325 | 36 326 | 327 | 328 | 400 329 | 75 330 | 331 | YES 332 | 333 | 334 | 1048576 335 | 2147483647 336 | 337 | NSImage 338 | NSMenuCheckmark 339 | 340 | 341 | NSImage 342 | NSMenuMixedState 343 | 344 | _popUpItemAction: 345 | 346 | 347 | YES 348 | 349 | 350 | 351 | YES 352 | 353 | 354 | YES 355 | 1 356 | YES 357 | YES 358 | 2 359 | 360 | 361 | 362 | 363 | 292 364 | {{8, 3}, {53, 19}} 365 | 366 | YES 367 | 368 | 67239424 369 | 134217728 370 | Options 371 | 372 | LucidaGrande 373 | 10 374 | 16 375 | 376 | 377 | -2038284033 378 | 36 379 | 380 | 381 | 382 | 383 | 384 | 200 385 | 25 386 | 387 | 388 | 389 | 390 | -2147483358 391 | {{8, 24}, {194, 19}} 392 | 393 | YES 394 | 395 | 67239424 396 | 134217728 397 | Upgrade (DO NOT LOCALIZE) 398 | 399 | 400 | -2038284033 401 | 36 402 | 403 | 404 | 405 | 406 | 407 | 200 408 | 25 409 | 410 | 411 | 412 | 413 | 266 414 | {{8, 183}, {194, 35}} 415 | 416 | YES 417 | 418 | -1805517247 419 | 138414592 420 | #333333 421 | 422 | Monaco 423 | 24 424 | 16 425 | 426 | 427 | YES 428 | 429 | 6 430 | System 431 | textBackgroundColor 432 | 433 | 3 434 | MQA 435 | 436 | 437 | 438 | 439 | 440 | 441 | {211, 228} 442 | 443 | 444 | NSView 445 | 446 | NSResponder 447 | 448 | 449 | 3 450 | 2 451 | {{228, 377}, {221, 133}} 452 | 1886912512 453 | Hex Color Picker Preferences 454 | NSPanel 455 | 456 | View 457 | 458 | {1.79769e+308, 1.79769e+308} 459 | {213, 30} 460 | 461 | 462 | 256 463 | 464 | YES 465 | 466 | 467 | 256 468 | {{9, 105}, {204, 18}} 469 | 470 | YES 471 | 472 | 67239424 473 | 131072 474 | Use uppercase hexadecimal digits 475 | 476 | LucidaGrande 477 | 11 478 | 3100 479 | 480 | 481 | 1211912703 482 | 2 483 | 484 | NSImage 485 | NSSwitch 486 | 487 | 488 | NSSwitch 489 | 490 | 491 | 492 | 200 493 | 25 494 | 495 | 496 | 497 | 498 | 256 499 | {{9, 35}, {194, 18}} 500 | 501 | YES 502 | 503 | 67239424 504 | 131072 505 | Automatically check for updates 506 | 507 | 508 | 1211912703 509 | 2 510 | 511 | 512 | 513 | 514 | 200 515 | 25 516 | 517 | 518 | 519 | 520 | 256 521 | {{149, 5}, {67, 28}} 522 | 523 | YES 524 | 525 | 67239424 526 | 134348800 527 | OK 528 | 529 | 530 | -2038284033 531 | 1 532 | 533 | LucidaGrande 534 | 11 535 | 16 536 | 537 | 538 | DQ 539 | 200 540 | 25 541 | 542 | 543 | 544 | 545 | 256 546 | {{9, 85}, {204, 18}} 547 | 548 | YES 549 | 550 | 67239424 551 | 131072 552 | Recognize HTML color names 553 | 554 | 555 | 1211912703 556 | 2 557 | 558 | 559 | 560 | 561 | 200 562 | 25 563 | 564 | 565 | 566 | 567 | 256 568 | {{0, 56}, {221, 5}} 569 | 570 | {0, 0} 571 | 572 | 67239424 573 | 0 574 | 575 | 576 | 577 | 578 | 3 579 | MCAwLjgwMDAwMDAxAA 580 | 581 | 582 | 3 583 | 2 584 | 0 585 | NO 586 | 587 | 588 | 589 | 256 590 | {{9, 65}, {204, 18}} 591 | 592 | YES 593 | 594 | 67239424 595 | 131072 596 | Don't generate calibrated colors 597 | 598 | 599 | 1211912703 600 | 2 601 | 602 | 603 | 604 | 605 | 200 606 | 25 607 | 608 | 609 | 610 | {221, 133} 611 | 612 | 613 | {{0, 0}, {1440, 878}} 614 | {213, 52} 615 | {1.79769e+308, 1.79769e+308} 616 | 617 | 618 | 3 619 | 2 620 | {{196, 417}, {160, 94}} 621 | 1946157056 622 | About 623 | NSPanel 624 | 625 | {1.79769e+308, 1.79769e+308} 626 | {160, 40} 627 | 628 | 629 | 256 630 | 631 | YES 632 | 633 | 634 | 268 635 | 636 | YES 637 | 638 | YES 639 | Apple PDF pasteboard type 640 | Apple PICT pasteboard type 641 | Apple PNG pasteboard type 642 | NSFilenamesPboardType 643 | NeXT Encapsulated PostScript v1.2 pasteboard type 644 | NeXT TIFF v4.0 pasteboard type 645 | 646 | 647 | {{8, 54}, {32, 32}} 648 | 649 | YES 650 | 651 | 130560 652 | 33554432 653 | 654 | NSImage 655 | icon 656 | 657 | 0 658 | 0 659 | 0 660 | YES 661 | 662 | YES 663 | 664 | 665 | 666 | 268 667 | {{45, 69}, {106, 14}} 668 | 669 | YES 670 | 671 | 68288064 672 | 272630784 673 | Hex Color Picker 674 | 675 | 676 | 677 | 678 | 679 | 680 | 681 | 682 | 268 683 | {{45, 56}, {106, 14}} 684 | 685 | YES 686 | 687 | 68288064 688 | 272630784 689 | 1.4.1 690 | 691 | 692 | 693 | 694 | 695 | 696 | 697 | 698 | 268 699 | {{5, 35}, {146, 11}} 700 | 701 | YES 702 | 703 | 68288064 704 | 138413056 705 | © 2006-2010 waffle software 706 | 707 | LucidaGrande 708 | 9 709 | 16 710 | 711 | 712 | 713 | 714 | 715 | 716 | 717 | 718 | 289 719 | {{109, 10}, {39, 17}} 720 | 721 | YES 722 | 723 | 67239424 724 | 134348800 725 | OK 726 | 727 | 728 | -2038284033 729 | 36 730 | 731 | 732 | DQ 733 | 200 734 | 25 735 | 736 | 737 | 738 | {160, 94} 739 | 740 | {{0, 0}, {1440, 878}} 741 | {160, 62} 742 | {1.79769e+308, 1.79769e+308} 743 | 744 | 745 | 746 | 747 | YES 748 | 749 | 750 | 751 | 752 | 1048576 753 | 2147483647 754 | 1 755 | 756 | NSImage 757 | cog 758 | 759 | 760 | 761 | _popUpItemAction: 762 | 763 | 764 | 765 | Color Style 766 | 767 | 2147483647 768 | 769 | 770 | submenuAction: 771 | 772 | Color Style 773 | 774 | YES 775 | 776 | 777 | Hex 778 | 779 | 2147483647 780 | 1 781 | 782 | 783 | 784 | 785 | RGB 786 | 787 | 2147483647 788 | 789 | 790 | 791 | 792 | HSL 793 | 794 | 2147483647 795 | 796 | 797 | 798 | 799 | 800 | 801 | 802 | Copy 803 | c 804 | 1048576 805 | 2147483647 806 | 807 | 808 | _popUpItemAction: 809 | 810 | 811 | 812 | YES 813 | YES 814 | 815 | 816 | 2147483647 817 | 818 | 819 | 820 | 821 | 822 | Visit Web Site 823 | 824 | 1048576 825 | 2147483647 826 | 827 | 828 | _popUpItemAction: 829 | 830 | 831 | 832 | YES 833 | About Hex Color Picker 834 | 835 | 1048576 836 | 2147483647 837 | 838 | 839 | _popUpItemAction: 840 | 841 | 842 | 843 | 844 | 845 | 846 | YES 847 | 848 | 849 | colorPickerView 850 | 851 | 852 | 853 | 10 854 | 855 | 856 | 857 | colorChanged: 858 | 859 | 860 | 861 | 12 862 | 863 | 864 | 865 | colorPickerPrefs 866 | 867 | 868 | 869 | 22 870 | 871 | 872 | 873 | checkForUpdates 874 | 875 | 876 | 877 | 23 878 | 879 | 880 | 881 | useUpperHex 882 | 883 | 884 | 885 | 24 886 | 887 | 888 | 889 | showPrefs: 890 | 891 | 892 | 893 | 26 894 | 895 | 896 | 897 | savePrefs: 898 | 899 | 900 | 901 | 27 902 | 903 | 904 | 905 | enableShorthand 906 | 907 | 908 | 909 | 38 910 | 911 | 912 | 913 | delegate 914 | 915 | 916 | 917 | 39 918 | 919 | 920 | 921 | useDeviceColors 922 | 923 | 924 | 925 | 48 926 | 927 | 928 | 929 | closeAboutPanel: 930 | 931 | 932 | 933 | 112 934 | 935 | 936 | 937 | aboutPanel 938 | 939 | 940 | 941 | 135 942 | 943 | 944 | 945 | aboutVersionField 946 | 947 | 948 | 949 | 171 950 | 951 | 952 | 953 | goUpgrade 954 | 955 | 956 | 957 | 217 958 | 959 | 960 | 961 | goUpgrade: 962 | 963 | 964 | 965 | 218 966 | 967 | 968 | 969 | copyToClipboard: 970 | 971 | 972 | 973 | 246 974 | 975 | 976 | 977 | visitWebsite: 978 | 979 | 980 | 981 | 247 982 | 983 | 984 | 985 | showAboutPanel: 986 | 987 | 988 | 989 | 248 990 | 991 | 992 | 993 | cogMenu 994 | 995 | 996 | 997 | 250 998 | 999 | 1000 | 1001 | cogButton 1002 | 1003 | 1004 | 1005 | 251 1006 | 1007 | 1008 | 1009 | colorR 1010 | 1011 | 1012 | 1013 | 330 1014 | 1015 | 1016 | 1017 | colorG 1018 | 1019 | 1020 | 1021 | 331 1022 | 1023 | 1024 | 1025 | colorB 1026 | 1027 | 1028 | 1029 | 332 1030 | 1031 | 1032 | 1033 | colorH 1034 | 1035 | 1036 | 1037 | 333 1038 | 1039 | 1040 | 1041 | colorS 1042 | 1043 | 1044 | 1045 | 334 1046 | 1047 | 1048 | 1049 | colorL 1050 | 1051 | 1052 | 1053 | 335 1054 | 1055 | 1056 | 1057 | colorHex 1058 | 1059 | 1060 | 1061 | 336 1062 | 1063 | 1064 | 1065 | colorDisplay 1066 | 1067 | 1068 | 1069 | 337 1070 | 1071 | 1072 | 1073 | updateColorStyle: 1074 | 1075 | 1076 | 1077 | 342 1078 | 1079 | 1080 | 1081 | updateColorStyle: 1082 | 1083 | 1084 | 1085 | 343 1086 | 1087 | 1088 | 1089 | updateColorStyle: 1090 | 1091 | 1092 | 1093 | 344 1094 | 1095 | 1096 | 1097 | colorStyleHex 1098 | 1099 | 1100 | 1101 | 345 1102 | 1103 | 1104 | 1105 | colorStyleRGB 1106 | 1107 | 1108 | 1109 | 346 1110 | 1111 | 1112 | 1113 | colorStyleHSL 1114 | 1115 | 1116 | 1117 | 347 1118 | 1119 | 1120 | 1121 | colorStyleMenu 1122 | 1123 | 1124 | 1125 | 348 1126 | 1127 | 1128 | 1129 | 1130 | YES 1131 | 1132 | 0 1133 | 1134 | YES 1135 | 1136 | 1137 | 1138 | 1139 | 1140 | -2 1141 | 1142 | 1143 | File's Owner 1144 | 1145 | 1146 | -1 1147 | 1148 | 1149 | First Responder 1150 | 1151 | 1152 | -3 1153 | 1154 | 1155 | Application 1156 | 1157 | 1158 | 7 1159 | 1160 | 1161 | YES 1162 | 1163 | 1164 | 1165 | 1166 | 1167 | 1168 | 1169 | Color panel 1170 | 1171 | 1172 | 9 1173 | 1174 | 1175 | YES 1176 | 1177 | 1178 | 1179 | 1180 | 1181 | 17 1182 | 1183 | 1184 | YES 1185 | 1186 | 1187 | 1188 | Prefs 1189 | 1190 | 1191 | 18 1192 | 1193 | 1194 | YES 1195 | 1196 | 1197 | 1198 | 1199 | 1200 | 1201 | 1202 | 1203 | 1204 | 1205 | 19 1206 | 1207 | 1208 | YES 1209 | 1210 | 1211 | 1212 | 1213 | 1214 | 20 1215 | 1216 | 1217 | YES 1218 | 1219 | 1220 | 1221 | 1222 | 1223 | 21 1224 | 1225 | 1226 | YES 1227 | 1228 | 1229 | 1230 | 1231 | 1232 | 35 1233 | 1234 | 1235 | YES 1236 | 1237 | 1238 | 1239 | 1240 | 1241 | 36 1242 | 1243 | 1244 | YES 1245 | 1246 | 1247 | 256 1248 | {{2, 2}, {125, 1}} 1249 | 1250 | 1251 | 1252 | 1253 | 1254 | 37 1255 | 1256 | 1257 | 1258 | 1259 | 46 1260 | 1261 | 1262 | YES 1263 | 1264 | 1265 | 1266 | 1267 | 1268 | 99 1269 | 1270 | 1271 | YES 1272 | 1273 | 1274 | 1275 | Panel (About) 1276 | 1277 | 1278 | 100 1279 | 1280 | 1281 | YES 1282 | 1283 | 1284 | 1285 | 1286 | 1287 | 1288 | 1289 | 1290 | 1291 | 101 1292 | 1293 | 1294 | YES 1295 | 1296 | 1297 | 1298 | 1299 | 1300 | 103 1301 | 1302 | 1303 | YES 1304 | 1305 | 1306 | 1307 | 1308 | 1309 | 105 1310 | 1311 | 1312 | YES 1313 | 1314 | 1315 | 1316 | 1317 | 1318 | 107 1319 | 1320 | 1321 | YES 1322 | 1323 | 1324 | 1325 | 1326 | 1327 | 109 1328 | 1329 | 1330 | YES 1331 | 1332 | 1333 | 1334 | 1335 | 1336 | 237 1337 | 1338 | 1339 | YES 1340 | 1341 | 1342 | 1343 | 1344 | 1345 | 1346 | 1347 | 1348 | Cog menu 1349 | 1350 | 1351 | 241 1352 | 1353 | 1354 | 1355 | 1356 | 242 1357 | 1358 | 1359 | 1360 | 1361 | 243 1362 | 1363 | 1364 | 1365 | 1366 | 244 1367 | 1368 | 1369 | 1370 | 1371 | 245 1372 | 1373 | 1374 | 1375 | 1376 | 258 1377 | 1378 | 1379 | 1380 | 1381 | 262 1382 | 1383 | 1384 | 1385 | 1386 | 263 1387 | 1388 | 1389 | 1390 | 1391 | 264 1392 | 1393 | 1394 | 1395 | 1396 | 265 1397 | 1398 | 1399 | 1400 | 1401 | 266 1402 | 1403 | 1404 | 1405 | 1406 | 267 1407 | 1408 | 1409 | 1410 | 1411 | 268 1412 | 1413 | 1414 | 1415 | 1416 | 269 1417 | 1418 | 1419 | 1420 | 1421 | 270 1422 | 1423 | 1424 | 1425 | 1426 | 271 1427 | 1428 | 1429 | 1430 | 1431 | 309 1432 | 1433 | 1434 | YES 1435 | 1436 | 1437 | 1438 | Menu Item (Color Style) 1439 | 1440 | 1441 | 310 1442 | 1443 | 1444 | YES 1445 | 1446 | 1447 | 1448 | 1449 | 1450 | 1451 | 1452 | 312 1453 | 1454 | 1455 | 1456 | 1457 | 311 1458 | 1459 | 1460 | 1461 | 1462 | 313 1463 | 1464 | 1465 | 1466 | 1467 | 197 1468 | 1469 | 1470 | YES 1471 | 1472 | 1473 | 1474 | 1475 | 1476 | 261 1477 | 1478 | 1479 | 1480 | 1481 | 16 1482 | 1483 | 1484 | YES 1485 | 1486 | 1487 | 1488 | 1489 | 1490 | 259 1491 | 1492 | 1493 | 1494 | 1495 | 72 1496 | 1497 | 1498 | YES 1499 | 1500 | 1501 | 1502 | 1503 | 1504 | 260 1505 | 1506 | 1507 | YES 1508 | 1509 | 1510 | 1511 | 1512 | 1513 | 74 1514 | 1515 | 1516 | 1517 | 1518 | 341 1519 | 1520 | 1521 | YES 1522 | 1523 | 1524 | 1525 | 1526 | 1527 | 1528 | 1529 | 1530 | 1531 | 1532 | 1533 | 1534 | 1535 | 1536 | 1537 | 1538 | 1539 | 1540 | 318 1541 | 1542 | 1543 | YES 1544 | 1545 | 1546 | 1547 | 1548 | 1549 | 321 1550 | 1551 | 1552 | 1553 | 1554 | 327 1555 | 1556 | 1557 | YES 1558 | 1559 | 1560 | 1561 | 1562 | 1563 | 328 1564 | 1565 | 1566 | 1567 | 1568 | 316 1569 | 1570 | 1571 | YES 1572 | 1573 | 1574 | 1575 | 1576 | 1577 | 323 1578 | 1579 | 1580 | 1581 | 1582 | 319 1583 | 1584 | 1585 | YES 1586 | 1587 | 1588 | 1589 | 1590 | 1591 | 320 1592 | 1593 | 1594 | 1595 | 1596 | 317 1597 | 1598 | 1599 | YES 1600 | 1601 | 1602 | 1603 | 1604 | 1605 | 322 1606 | 1607 | 1608 | 1609 | 1610 | 302 1611 | 1612 | 1613 | YES 1614 | 1615 | 1616 | 1617 | 1618 | 1619 | 303 1620 | 1621 | 1622 | 1623 | 1624 | 297 1625 | 1626 | 1627 | YES 1628 | 1629 | 1630 | 1631 | 1632 | 1633 | 300 1634 | 1635 | 1636 | 1637 | 1638 | 298 1639 | 1640 | 1641 | YES 1642 | 1643 | 1644 | 1645 | 1646 | 1647 | 299 1648 | 1649 | 1650 | 1651 | 1652 | 287 1653 | 1654 | 1655 | YES 1656 | 1657 | 1658 | 1659 | 1660 | 1661 | 288 1662 | 1663 | 1664 | 1665 | 1666 | 301 1667 | 1668 | 1669 | YES 1670 | 1671 | 1672 | 1673 | 1674 | 1675 | 304 1676 | 1677 | 1678 | 1679 | 1680 | 326 1681 | 1682 | 1683 | YES 1684 | 1685 | 1686 | 1687 | 1688 | 1689 | 329 1690 | 1691 | 1692 | 1693 | 1694 | 314 1695 | 1696 | 1697 | YES 1698 | 1699 | 1700 | 1701 | 1702 | 1703 | 325 1704 | 1705 | 1706 | 1707 | 1708 | 315 1709 | 1710 | 1711 | YES 1712 | 1713 | 1714 | 1715 | 1716 | 1717 | 324 1718 | 1719 | 1720 | 1721 | 1722 | 285 1723 | 1724 | 1725 | YES 1726 | 1727 | 1728 | 1729 | 1730 | 1731 | 286 1732 | 1733 | 1734 | 1735 | 1736 | 1737 | 1738 | YES 1739 | 1740 | YES 1741 | -3.IBPluginDependency 1742 | -3.ImportedFromIB2 1743 | 100.IBPluginDependency 1744 | 100.ImportedFromIB2 1745 | 101.IBPluginDependency 1746 | 101.ImportedFromIB2 1747 | 103.IBPluginDependency 1748 | 103.ImportedFromIB2 1749 | 105.IBPluginDependency 1750 | 105.ImportedFromIB2 1751 | 107.IBPluginDependency 1752 | 107.ImportedFromIB2 1753 | 109.IBPluginDependency 1754 | 109.ImportedFromIB2 1755 | 16.IBPluginDependency 1756 | 16.IBViewBoundsToFrameTransform 1757 | 16.ImportedFromIB2 1758 | 17.IBEditorWindowLastContentRect 1759 | 17.IBPluginDependency 1760 | 17.IBWindowTemplateEditedContentRect 1761 | 17.ImportedFromIB2 1762 | 17.windowTemplate.hasMinSize 1763 | 17.windowTemplate.minSize 1764 | 18.IBPluginDependency 1765 | 18.ImportedFromIB2 1766 | 19.IBAttributePlaceholdersKey 1767 | 19.IBPluginDependency 1768 | 19.ImportedFromIB2 1769 | 197.IBPluginDependency 1770 | 197.IBViewBoundsToFrameTransform 1771 | 197.ImportedFromIB2 1772 | 20.IBAttributePlaceholdersKey 1773 | 20.IBPluginDependency 1774 | 20.ImportedFromIB2 1775 | 21.IBPluginDependency 1776 | 21.ImportedFromIB2 1777 | 237.IBEditorWindowLastContentRect 1778 | 237.IBPluginDependency 1779 | 237.ImportedFromIB2 1780 | 241.IBPluginDependency 1781 | 241.ImportedFromIB2 1782 | 242.IBPluginDependency 1783 | 242.ImportedFromIB2 1784 | 243.IBPluginDependency 1785 | 243.ImportedFromIB2 1786 | 244.IBPluginDependency 1787 | 244.ImportedFromIB2 1788 | 245.IBPluginDependency 1789 | 245.ImportedFromIB2 1790 | 258.IBPluginDependency 1791 | 259.IBPluginDependency 1792 | 260.IBPluginDependency 1793 | 261.IBPluginDependency 1794 | 262.IBPluginDependency 1795 | 263.IBPluginDependency 1796 | 264.IBPluginDependency 1797 | 265.IBPluginDependency 1798 | 266.IBPluginDependency 1799 | 267.IBPluginDependency 1800 | 268.IBPluginDependency 1801 | 269.IBPluginDependency 1802 | 270.IBPluginDependency 1803 | 271.IBPluginDependency 1804 | 285.IBPluginDependency 1805 | 285.IBViewBoundsToFrameTransform 1806 | 286.IBPluginDependency 1807 | 287.IBPluginDependency 1808 | 287.IBViewBoundsToFrameTransform 1809 | 288.IBPluginDependency 1810 | 297.IBPluginDependency 1811 | 297.IBViewBoundsToFrameTransform 1812 | 298.IBPluginDependency 1813 | 298.IBViewBoundsToFrameTransform 1814 | 299.IBPluginDependency 1815 | 300.IBPluginDependency 1816 | 301.IBPluginDependency 1817 | 301.IBViewBoundsToFrameTransform 1818 | 302.IBPluginDependency 1819 | 302.IBViewBoundsToFrameTransform 1820 | 303.IBPluginDependency 1821 | 304.IBPluginDependency 1822 | 309.IBPluginDependency 1823 | 310.IBEditorWindowLastContentRect 1824 | 310.IBPluginDependency 1825 | 311.IBPluginDependency 1826 | 312.IBPluginDependency 1827 | 313.IBPluginDependency 1828 | 314.IBPluginDependency 1829 | 314.IBViewBoundsToFrameTransform 1830 | 315.IBPluginDependency 1831 | 315.IBViewBoundsToFrameTransform 1832 | 316.IBPluginDependency 1833 | 316.IBViewBoundsToFrameTransform 1834 | 317.IBPluginDependency 1835 | 317.IBViewBoundsToFrameTransform 1836 | 318.IBPluginDependency 1837 | 318.IBViewBoundsToFrameTransform 1838 | 319.IBPluginDependency 1839 | 319.IBViewBoundsToFrameTransform 1840 | 320.IBPluginDependency 1841 | 321.IBPluginDependency 1842 | 322.IBPluginDependency 1843 | 323.IBPluginDependency 1844 | 324.IBPluginDependency 1845 | 325.IBPluginDependency 1846 | 326.IBPluginDependency 1847 | 326.IBViewBoundsToFrameTransform 1848 | 327.IBPluginDependency 1849 | 327.IBViewBoundsToFrameTransform 1850 | 328.IBPluginDependency 1851 | 329.IBPluginDependency 1852 | 341.IBViewBoundsToFrameTransform 1853 | 35.IBAttributePlaceholdersKey 1854 | 35.IBPluginDependency 1855 | 35.ImportedFromIB2 1856 | 36.IBPluginDependency 1857 | 36.ImportedFromIB2 1858 | 37.IBPluginDependency 1859 | 37.ImportedFromIB2 1860 | 46.IBAttributePlaceholdersKey 1861 | 46.IBPluginDependency 1862 | 46.ImportedFromIB2 1863 | 7.IBEditorWindowLastContentRect 1864 | 7.IBPluginDependency 1865 | 7.ImportedFromIB2 1866 | 72.IBPluginDependency 1867 | 72.IBViewBoundsToFrameTransform 1868 | 72.ImportedFromIB2 1869 | 74.IBPluginDependency 1870 | 74.ImportedFromIB2 1871 | 9.IBPluginDependency 1872 | 9.IBViewBoundsToFrameTransform 1873 | 9.ImportedFromIB2 1874 | 99.IBEditorWindowLastContentRect 1875 | 99.IBPluginDependency 1876 | 99.IBWindowTemplateEditedContentRect 1877 | 99.ImportedFromIB2 1878 | 99.windowTemplate.hasMinSize 1879 | 99.windowTemplate.minSize 1880 | 1881 | 1882 | YES 1883 | com.apple.InterfaceBuilder.CocoaPlugin 1884 | 1885 | com.apple.InterfaceBuilder.CocoaPlugin 1886 | 1887 | com.apple.InterfaceBuilder.CocoaPlugin 1888 | 1889 | com.apple.InterfaceBuilder.CocoaPlugin 1890 | 1891 | com.apple.InterfaceBuilder.CocoaPlugin 1892 | 1893 | com.apple.InterfaceBuilder.CocoaPlugin 1894 | 1895 | com.apple.InterfaceBuilder.CocoaPlugin 1896 | 1897 | com.apple.InterfaceBuilder.CocoaPlugin 1898 | 1899 | P4AAAL+AAABBAAAAwhQAAA 1900 | 1901 | 1902 | {{329, 644}, {221, 133}} 1903 | com.apple.InterfaceBuilder.CocoaPlugin 1904 | {{329, 644}, {221, 133}} 1905 | 1906 | 1907 | {213, 30} 1908 | com.apple.InterfaceBuilder.CocoaPlugin 1909 | 1910 | 1911 | ToolTip 1912 | 1913 | ToolTip 1914 | 1915 | Show the digits as A-F instead of as a-f. 1916 | 1917 | 1918 | com.apple.InterfaceBuilder.CocoaPlugin 1919 | 1920 | com.apple.InterfaceBuilder.CocoaPlugin 1921 | 1922 | P4AAAL+AAABBAAAAwmgAAA 1923 | 1924 | 1925 | 1926 | ToolTip 1927 | 1928 | ToolTip 1929 | 1930 | Automatically check for updates to Hex Color Picker. (At most twice per day.) 1931 | 1932 | 1933 | com.apple.InterfaceBuilder.CocoaPlugin 1934 | 1935 | com.apple.InterfaceBuilder.CocoaPlugin 1936 | 1937 | {{330, 612}, {234, 113}} 1938 | com.apple.InterfaceBuilder.CocoaPlugin 1939 | 1940 | com.apple.InterfaceBuilder.CocoaPlugin 1941 | 1942 | com.apple.InterfaceBuilder.CocoaPlugin 1943 | 1944 | com.apple.InterfaceBuilder.CocoaPlugin 1945 | 1946 | com.apple.InterfaceBuilder.CocoaPlugin 1947 | 1948 | com.apple.InterfaceBuilder.CocoaPlugin 1949 | 1950 | com.apple.InterfaceBuilder.CocoaPlugin 1951 | com.apple.InterfaceBuilder.CocoaPlugin 1952 | com.apple.InterfaceBuilder.CocoaPlugin 1953 | com.apple.InterfaceBuilder.CocoaPlugin 1954 | com.apple.InterfaceBuilder.CocoaPlugin 1955 | com.apple.InterfaceBuilder.CocoaPlugin 1956 | com.apple.InterfaceBuilder.CocoaPlugin 1957 | com.apple.InterfaceBuilder.CocoaPlugin 1958 | com.apple.InterfaceBuilder.CocoaPlugin 1959 | com.apple.InterfaceBuilder.CocoaPlugin 1960 | com.apple.InterfaceBuilder.CocoaPlugin 1961 | com.apple.InterfaceBuilder.CocoaPlugin 1962 | com.apple.InterfaceBuilder.CocoaPlugin 1963 | com.apple.InterfaceBuilder.CocoaPlugin 1964 | com.apple.InterfaceBuilder.CocoaPlugin 1965 | 1966 | P4AAAL+AAABA4AAAwx0AAA 1967 | 1968 | com.apple.InterfaceBuilder.CocoaPlugin 1969 | com.apple.InterfaceBuilder.CocoaPlugin 1970 | 1971 | P4AAAL+AAABBsAAAwx0AAA 1972 | 1973 | com.apple.InterfaceBuilder.CocoaPlugin 1974 | com.apple.InterfaceBuilder.CocoaPlugin 1975 | 1976 | P4AAAL+AAABA4AAAwwwAAA 1977 | 1978 | com.apple.InterfaceBuilder.CocoaPlugin 1979 | 1980 | P4AAAL+AAABBsAAAwwwAAA 1981 | 1982 | com.apple.InterfaceBuilder.CocoaPlugin 1983 | com.apple.InterfaceBuilder.CocoaPlugin 1984 | com.apple.InterfaceBuilder.CocoaPlugin 1985 | 1986 | P4AAAL+AAABBiAAAwvYAAA 1987 | 1988 | com.apple.InterfaceBuilder.CocoaPlugin 1989 | 1990 | P4AAAL+AAABCAAAAwvYAAA 1991 | 1992 | com.apple.InterfaceBuilder.CocoaPlugin 1993 | com.apple.InterfaceBuilder.CocoaPlugin 1994 | com.apple.InterfaceBuilder.CocoaPlugin 1995 | {{564, 642}, {79, 63}} 1996 | com.apple.InterfaceBuilder.CocoaPlugin 1997 | com.apple.InterfaceBuilder.CocoaPlugin 1998 | com.apple.InterfaceBuilder.CocoaPlugin 1999 | com.apple.InterfaceBuilder.CocoaPlugin 2000 | com.apple.InterfaceBuilder.CocoaPlugin 2001 | 2002 | P4AAAL+AAABA4AAAwx0AAA 2003 | 2004 | com.apple.InterfaceBuilder.CocoaPlugin 2005 | 2006 | P4AAAL+AAABC/gAAwx0AAA 2007 | 2008 | com.apple.InterfaceBuilder.CocoaPlugin 2009 | 2010 | P4AAAL+AAABA4AAAwwwAAA 2011 | 2012 | com.apple.InterfaceBuilder.CocoaPlugin 2013 | 2014 | P4AAAL+AAABBsAAAwwwAAA 2015 | 2016 | com.apple.InterfaceBuilder.CocoaPlugin 2017 | 2018 | P4AAAL+AAABA4AAAwvYAAA 2019 | 2020 | com.apple.InterfaceBuilder.CocoaPlugin 2021 | 2022 | P4AAAL+AAABBsAAAwvYAAA 2023 | 2024 | com.apple.InterfaceBuilder.CocoaPlugin 2025 | com.apple.InterfaceBuilder.CocoaPlugin 2026 | com.apple.InterfaceBuilder.CocoaPlugin 2027 | com.apple.InterfaceBuilder.CocoaPlugin 2028 | com.apple.InterfaceBuilder.CocoaPlugin 2029 | com.apple.InterfaceBuilder.CocoaPlugin 2030 | com.apple.InterfaceBuilder.CocoaPlugin 2031 | 2032 | P4AAAL+AAABCZAAAw20AAA 2033 | 2034 | com.apple.InterfaceBuilder.CocoaPlugin 2035 | 2036 | P4AAAL+AAABBsAAAwvYAAA 2037 | 2038 | com.apple.InterfaceBuilder.CocoaPlugin 2039 | com.apple.InterfaceBuilder.CocoaPlugin 2040 | 2041 | AUGQAABCXAAAA 2042 | 2043 | 2044 | ToolTip 2045 | 2046 | ToolTip 2047 | 2048 | This lets you type HTML color keywords into the box. The color will be displayed as a hex code when you press Tab, Enter or otherwise move the focus from the text field. 2049 | 2050 | 2051 | com.apple.InterfaceBuilder.CocoaPlugin 2052 | 2053 | com.apple.InterfaceBuilder.CocoaPlugin 2054 | 2055 | com.apple.InterfaceBuilder.CocoaPlugin 2056 | 2057 | 2058 | ToolTip 2059 | 2060 | ToolTip 2061 | 2062 | By default, Hex Color Picker generated calibrated colors. If you want to generate uncalibrated ("device") colors, check this box. 2063 | 2064 | 2065 | com.apple.InterfaceBuilder.CocoaPlugin 2066 | 2067 | {{756, 709}, {211, 228}} 2068 | com.apple.InterfaceBuilder.CocoaPlugin 2069 | 2070 | com.apple.InterfaceBuilder.CocoaPlugin 2071 | 2072 | P4AAAL+AAABDJAAAwhQAAA 2073 | 2074 | 2075 | com.apple.InterfaceBuilder.CocoaPlugin 2076 | 2077 | com.apple.InterfaceBuilder.CocoaPlugin 2078 | 2079 | P4AAAL+AAABBIAAAw0gAAA 2080 | 2081 | 2082 | {{364, 857}, {160, 94}} 2083 | com.apple.InterfaceBuilder.CocoaPlugin 2084 | {{364, 857}, {160, 94}} 2085 | 2086 | 2087 | {160, 40} 2088 | 2089 | 2090 | 2091 | YES 2092 | 2093 | 2094 | YES 2095 | 2096 | 2097 | 2098 | 2099 | YES 2100 | 2101 | 2102 | YES 2103 | 2104 | 2105 | 2106 | 348 2107 | 2108 | 2109 | 2110 | YES 2111 | 2112 | FirstResponder 2113 | NSObject 2114 | 2115 | : 2116 | id 2117 | 2118 | 2119 | : 2120 | 2121 | : 2122 | id 2123 | 2124 | 2125 | 2126 | IBUserSource 2127 | 2128 | 2129 | 2130 | 2131 | HexColorPicker 2132 | NSColorPicker 2133 | 2134 | YES 2135 | 2136 | YES 2137 | closeAboutPanel: 2138 | colorChanged: 2139 | copyToClipboard: 2140 | goUpgrade: 2141 | savePrefs: 2142 | showAboutPanel: 2143 | showPrefs: 2144 | updateColorStyle: 2145 | visitWebsite: 2146 | 2147 | 2148 | YES 2149 | id 2150 | id 2151 | id 2152 | id 2153 | id 2154 | id 2155 | id 2156 | id 2157 | id 2158 | 2159 | 2160 | 2161 | YES 2162 | 2163 | YES 2164 | closeAboutPanel: 2165 | colorChanged: 2166 | copyToClipboard: 2167 | goUpgrade: 2168 | savePrefs: 2169 | showAboutPanel: 2170 | showPrefs: 2171 | updateColorStyle: 2172 | visitWebsite: 2173 | 2174 | 2175 | YES 2176 | 2177 | closeAboutPanel: 2178 | id 2179 | 2180 | 2181 | colorChanged: 2182 | id 2183 | 2184 | 2185 | copyToClipboard: 2186 | id 2187 | 2188 | 2189 | goUpgrade: 2190 | id 2191 | 2192 | 2193 | savePrefs: 2194 | id 2195 | 2196 | 2197 | showAboutPanel: 2198 | id 2199 | 2200 | 2201 | showPrefs: 2202 | id 2203 | 2204 | 2205 | updateColorStyle: 2206 | id 2207 | 2208 | 2209 | visitWebsite: 2210 | id 2211 | 2212 | 2213 | 2214 | 2215 | YES 2216 | 2217 | YES 2218 | aboutPanel 2219 | aboutVersionField 2220 | checkForUpdates 2221 | cogButton 2222 | cogMenu 2223 | colorB 2224 | colorDisplay 2225 | colorG 2226 | colorH 2227 | colorHex 2228 | colorL 2229 | colorPickerPrefs 2230 | colorPickerView 2231 | colorR 2232 | colorS 2233 | colorStyleHSL 2234 | colorStyleHex 2235 | colorStyleMenu 2236 | colorStyleRGB 2237 | enableShorthand 2238 | goUpgrade 2239 | useDeviceColors 2240 | useUpperHex 2241 | 2242 | 2243 | YES 2244 | NSPanel 2245 | NSTextField 2246 | NSButton 2247 | NSPopUpButton 2248 | NSMenu 2249 | NSTextField 2250 | NSTextField 2251 | NSTextField 2252 | NSTextField 2253 | NSTextField 2254 | NSTextField 2255 | NSPanel 2256 | NSView 2257 | NSTextField 2258 | NSTextField 2259 | NSMenuItem 2260 | NSMenuItem 2261 | NSMenu 2262 | NSMenuItem 2263 | NSButton 2264 | NSButton 2265 | NSButton 2266 | NSButton 2267 | 2268 | 2269 | 2270 | YES 2271 | 2272 | YES 2273 | aboutPanel 2274 | aboutVersionField 2275 | checkForUpdates 2276 | cogButton 2277 | cogMenu 2278 | colorB 2279 | colorDisplay 2280 | colorG 2281 | colorH 2282 | colorHex 2283 | colorL 2284 | colorPickerPrefs 2285 | colorPickerView 2286 | colorR 2287 | colorS 2288 | colorStyleHSL 2289 | colorStyleHex 2290 | colorStyleMenu 2291 | colorStyleRGB 2292 | enableShorthand 2293 | goUpgrade 2294 | useDeviceColors 2295 | useUpperHex 2296 | 2297 | 2298 | YES 2299 | 2300 | aboutPanel 2301 | NSPanel 2302 | 2303 | 2304 | aboutVersionField 2305 | NSTextField 2306 | 2307 | 2308 | checkForUpdates 2309 | NSButton 2310 | 2311 | 2312 | cogButton 2313 | NSPopUpButton 2314 | 2315 | 2316 | cogMenu 2317 | NSMenu 2318 | 2319 | 2320 | colorB 2321 | NSTextField 2322 | 2323 | 2324 | colorDisplay 2325 | NSTextField 2326 | 2327 | 2328 | colorG 2329 | NSTextField 2330 | 2331 | 2332 | colorH 2333 | NSTextField 2334 | 2335 | 2336 | colorHex 2337 | NSTextField 2338 | 2339 | 2340 | colorL 2341 | NSTextField 2342 | 2343 | 2344 | colorPickerPrefs 2345 | NSPanel 2346 | 2347 | 2348 | colorPickerView 2349 | NSView 2350 | 2351 | 2352 | colorR 2353 | NSTextField 2354 | 2355 | 2356 | colorS 2357 | NSTextField 2358 | 2359 | 2360 | colorStyleHSL 2361 | NSMenuItem 2362 | 2363 | 2364 | colorStyleHex 2365 | NSMenuItem 2366 | 2367 | 2368 | colorStyleMenu 2369 | NSMenu 2370 | 2371 | 2372 | colorStyleRGB 2373 | NSMenuItem 2374 | 2375 | 2376 | enableShorthand 2377 | NSButton 2378 | 2379 | 2380 | goUpgrade 2381 | NSButton 2382 | 2383 | 2384 | useDeviceColors 2385 | NSButton 2386 | 2387 | 2388 | useUpperHex 2389 | NSButton 2390 | 2391 | 2392 | 2393 | 2394 | IBProjectSource 2395 | HexColorPicker.h 2396 | 2397 | 2398 | 2399 | HexColorPicker 2400 | NSColorPicker 2401 | 2402 | IBUserSource 2403 | 2404 | 2405 | 2406 | 2407 | 2408 | YES 2409 | 2410 | NSActionCell 2411 | NSCell 2412 | 2413 | IBFrameworkSource 2414 | AppKit.framework/Headers/NSActionCell.h 2415 | 2416 | 2417 | 2418 | NSApplication 2419 | NSResponder 2420 | 2421 | IBFrameworkSource 2422 | AppKit.framework/Headers/NSApplication.h 2423 | 2424 | 2425 | 2426 | NSApplication 2427 | 2428 | IBFrameworkSource 2429 | AppKit.framework/Headers/NSApplicationScripting.h 2430 | 2431 | 2432 | 2433 | NSApplication 2434 | 2435 | IBFrameworkSource 2436 | AppKit.framework/Headers/NSColorPanel.h 2437 | 2438 | 2439 | 2440 | NSApplication 2441 | 2442 | IBFrameworkSource 2443 | AppKit.framework/Headers/NSHelpManager.h 2444 | 2445 | 2446 | 2447 | NSApplication 2448 | 2449 | IBFrameworkSource 2450 | AppKit.framework/Headers/NSPageLayout.h 2451 | 2452 | 2453 | 2454 | NSApplication 2455 | 2456 | IBFrameworkSource 2457 | AppKit.framework/Headers/NSUserInterfaceItemSearching.h 2458 | 2459 | 2460 | 2461 | NSBox 2462 | NSView 2463 | 2464 | IBFrameworkSource 2465 | AppKit.framework/Headers/NSBox.h 2466 | 2467 | 2468 | 2469 | NSButton 2470 | NSControl 2471 | 2472 | IBFrameworkSource 2473 | AppKit.framework/Headers/NSButton.h 2474 | 2475 | 2476 | 2477 | NSButtonCell 2478 | NSActionCell 2479 | 2480 | IBFrameworkSource 2481 | AppKit.framework/Headers/NSButtonCell.h 2482 | 2483 | 2484 | 2485 | NSCell 2486 | NSObject 2487 | 2488 | IBFrameworkSource 2489 | AppKit.framework/Headers/NSCell.h 2490 | 2491 | 2492 | 2493 | NSColorPicker 2494 | NSObject 2495 | 2496 | IBFrameworkSource 2497 | AppKit.framework/Headers/NSColorPicker.h 2498 | 2499 | 2500 | 2501 | NSControl 2502 | NSView 2503 | 2504 | IBFrameworkSource 2505 | AppKit.framework/Headers/NSControl.h 2506 | 2507 | 2508 | 2509 | NSFormatter 2510 | NSObject 2511 | 2512 | IBFrameworkSource 2513 | Foundation.framework/Headers/NSFormatter.h 2514 | 2515 | 2516 | 2517 | NSImageCell 2518 | NSCell 2519 | 2520 | IBFrameworkSource 2521 | AppKit.framework/Headers/NSImageCell.h 2522 | 2523 | 2524 | 2525 | NSImageView 2526 | NSControl 2527 | 2528 | IBFrameworkSource 2529 | AppKit.framework/Headers/NSImageView.h 2530 | 2531 | 2532 | 2533 | NSMenu 2534 | NSObject 2535 | 2536 | IBFrameworkSource 2537 | AppKit.framework/Headers/NSMenu.h 2538 | 2539 | 2540 | 2541 | NSMenuItem 2542 | NSObject 2543 | 2544 | IBFrameworkSource 2545 | AppKit.framework/Headers/NSMenuItem.h 2546 | 2547 | 2548 | 2549 | NSMenuItemCell 2550 | NSButtonCell 2551 | 2552 | IBFrameworkSource 2553 | AppKit.framework/Headers/NSMenuItemCell.h 2554 | 2555 | 2556 | 2557 | NSObject 2558 | 2559 | IBFrameworkSource 2560 | AppKit.framework/Headers/NSAccessibility.h 2561 | 2562 | 2563 | 2564 | NSObject 2565 | 2566 | 2567 | 2568 | NSObject 2569 | 2570 | 2571 | 2572 | NSObject 2573 | 2574 | 2575 | 2576 | NSObject 2577 | 2578 | 2579 | 2580 | NSObject 2581 | 2582 | IBFrameworkSource 2583 | AppKit.framework/Headers/NSDictionaryController.h 2584 | 2585 | 2586 | 2587 | NSObject 2588 | 2589 | IBFrameworkSource 2590 | AppKit.framework/Headers/NSDragging.h 2591 | 2592 | 2593 | 2594 | NSObject 2595 | 2596 | IBFrameworkSource 2597 | AppKit.framework/Headers/NSFontManager.h 2598 | 2599 | 2600 | 2601 | NSObject 2602 | 2603 | IBFrameworkSource 2604 | AppKit.framework/Headers/NSFontPanel.h 2605 | 2606 | 2607 | 2608 | NSObject 2609 | 2610 | IBFrameworkSource 2611 | AppKit.framework/Headers/NSKeyValueBinding.h 2612 | 2613 | 2614 | 2615 | NSObject 2616 | 2617 | 2618 | 2619 | NSObject 2620 | 2621 | IBFrameworkSource 2622 | AppKit.framework/Headers/NSNibLoading.h 2623 | 2624 | 2625 | 2626 | NSObject 2627 | 2628 | IBFrameworkSource 2629 | AppKit.framework/Headers/NSOutlineView.h 2630 | 2631 | 2632 | 2633 | NSObject 2634 | 2635 | IBFrameworkSource 2636 | AppKit.framework/Headers/NSPasteboard.h 2637 | 2638 | 2639 | 2640 | NSObject 2641 | 2642 | IBFrameworkSource 2643 | AppKit.framework/Headers/NSSavePanel.h 2644 | 2645 | 2646 | 2647 | NSObject 2648 | 2649 | IBFrameworkSource 2650 | AppKit.framework/Headers/NSTableView.h 2651 | 2652 | 2653 | 2654 | NSObject 2655 | 2656 | IBFrameworkSource 2657 | AppKit.framework/Headers/NSToolbarItem.h 2658 | 2659 | 2660 | 2661 | NSObject 2662 | 2663 | IBFrameworkSource 2664 | AppKit.framework/Headers/NSView.h 2665 | 2666 | 2667 | 2668 | NSObject 2669 | 2670 | IBFrameworkSource 2671 | Foundation.framework/Headers/NSArchiver.h 2672 | 2673 | 2674 | 2675 | NSObject 2676 | 2677 | IBFrameworkSource 2678 | Foundation.framework/Headers/NSClassDescription.h 2679 | 2680 | 2681 | 2682 | NSObject 2683 | 2684 | IBFrameworkSource 2685 | Foundation.framework/Headers/NSError.h 2686 | 2687 | 2688 | 2689 | NSObject 2690 | 2691 | IBFrameworkSource 2692 | Foundation.framework/Headers/NSFileManager.h 2693 | 2694 | 2695 | 2696 | NSObject 2697 | 2698 | IBFrameworkSource 2699 | Foundation.framework/Headers/NSKeyValueCoding.h 2700 | 2701 | 2702 | 2703 | NSObject 2704 | 2705 | IBFrameworkSource 2706 | Foundation.framework/Headers/NSKeyValueObserving.h 2707 | 2708 | 2709 | 2710 | NSObject 2711 | 2712 | IBFrameworkSource 2713 | Foundation.framework/Headers/NSKeyedArchiver.h 2714 | 2715 | 2716 | 2717 | NSObject 2718 | 2719 | IBFrameworkSource 2720 | Foundation.framework/Headers/NSObject.h 2721 | 2722 | 2723 | 2724 | NSObject 2725 | 2726 | IBFrameworkSource 2727 | Foundation.framework/Headers/NSObjectScripting.h 2728 | 2729 | 2730 | 2731 | NSObject 2732 | 2733 | IBFrameworkSource 2734 | Foundation.framework/Headers/NSPortCoder.h 2735 | 2736 | 2737 | 2738 | NSObject 2739 | 2740 | IBFrameworkSource 2741 | Foundation.framework/Headers/NSRunLoop.h 2742 | 2743 | 2744 | 2745 | NSObject 2746 | 2747 | IBFrameworkSource 2748 | Foundation.framework/Headers/NSScriptClassDescription.h 2749 | 2750 | 2751 | 2752 | NSObject 2753 | 2754 | IBFrameworkSource 2755 | Foundation.framework/Headers/NSScriptKeyValueCoding.h 2756 | 2757 | 2758 | 2759 | NSObject 2760 | 2761 | IBFrameworkSource 2762 | Foundation.framework/Headers/NSScriptObjectSpecifiers.h 2763 | 2764 | 2765 | 2766 | NSObject 2767 | 2768 | IBFrameworkSource 2769 | Foundation.framework/Headers/NSScriptWhoseTests.h 2770 | 2771 | 2772 | 2773 | NSObject 2774 | 2775 | IBFrameworkSource 2776 | Foundation.framework/Headers/NSThread.h 2777 | 2778 | 2779 | 2780 | NSObject 2781 | 2782 | IBFrameworkSource 2783 | Foundation.framework/Headers/NSURL.h 2784 | 2785 | 2786 | 2787 | NSObject 2788 | 2789 | IBFrameworkSource 2790 | Foundation.framework/Headers/NSURLConnection.h 2791 | 2792 | 2793 | 2794 | NSObject 2795 | 2796 | IBFrameworkSource 2797 | Foundation.framework/Headers/NSURLDownload.h 2798 | 2799 | 2800 | 2801 | NSPanel 2802 | NSWindow 2803 | 2804 | IBFrameworkSource 2805 | AppKit.framework/Headers/NSPanel.h 2806 | 2807 | 2808 | 2809 | NSPopUpButton 2810 | NSButton 2811 | 2812 | IBFrameworkSource 2813 | AppKit.framework/Headers/NSPopUpButton.h 2814 | 2815 | 2816 | 2817 | NSPopUpButtonCell 2818 | NSMenuItemCell 2819 | 2820 | IBFrameworkSource 2821 | AppKit.framework/Headers/NSPopUpButtonCell.h 2822 | 2823 | 2824 | 2825 | NSResponder 2826 | 2827 | IBFrameworkSource 2828 | AppKit.framework/Headers/NSInterfaceStyle.h 2829 | 2830 | 2831 | 2832 | NSResponder 2833 | NSObject 2834 | 2835 | IBFrameworkSource 2836 | AppKit.framework/Headers/NSResponder.h 2837 | 2838 | 2839 | 2840 | NSTextField 2841 | NSControl 2842 | 2843 | IBFrameworkSource 2844 | AppKit.framework/Headers/NSTextField.h 2845 | 2846 | 2847 | 2848 | NSTextFieldCell 2849 | NSActionCell 2850 | 2851 | IBFrameworkSource 2852 | AppKit.framework/Headers/NSTextFieldCell.h 2853 | 2854 | 2855 | 2856 | NSView 2857 | 2858 | IBFrameworkSource 2859 | AppKit.framework/Headers/NSClipView.h 2860 | 2861 | 2862 | 2863 | NSView 2864 | 2865 | 2866 | 2867 | NSView 2868 | 2869 | IBFrameworkSource 2870 | AppKit.framework/Headers/NSRulerView.h 2871 | 2872 | 2873 | 2874 | NSView 2875 | NSResponder 2876 | 2877 | 2878 | 2879 | NSWindow 2880 | 2881 | IBFrameworkSource 2882 | AppKit.framework/Headers/NSDrawer.h 2883 | 2884 | 2885 | 2886 | NSWindow 2887 | NSResponder 2888 | 2889 | IBFrameworkSource 2890 | AppKit.framework/Headers/NSWindow.h 2891 | 2892 | 2893 | 2894 | NSWindow 2895 | 2896 | IBFrameworkSource 2897 | AppKit.framework/Headers/NSWindowScripting.h 2898 | 2899 | 2900 | 2901 | 2902 | 0 2903 | IBCocoaFramework 2904 | 2905 | com.apple.InterfaceBuilder.CocoaPlugin.macosx 2906 | 2907 | 2908 | 2909 | com.apple.InterfaceBuilder.CocoaPlugin.macosx 2910 | 2911 | 2912 | 2913 | com.apple.InterfaceBuilder.CocoaPlugin.InterfaceBuilder3 2914 | 2915 | 2916 | YES 2917 | ../hexcolorpicker.xcodeproj 2918 | 3 2919 | 2920 | YES 2921 | 2922 | YES 2923 | NSMenuCheckmark 2924 | NSMenuMixedState 2925 | NSSwitch 2926 | cog 2927 | icon 2928 | 2929 | 2930 | YES 2931 | {9, 8} 2932 | {7, 2} 2933 | {15, 15} 2934 | {12, 12} 2935 | {128, 128} 2936 | 2937 | 2938 | 2939 | 2940 | --------------------------------------------------------------------------------