From cdf9a8c2a73d21207cc618bb3f3a2bb090f7ad87 Mon Sep 17 00:00:00 2001 From: Saikat Chakrabarti Date: Sun, 12 Sep 2010 12:07:27 -0700 Subject: [PATCH 1/8] Adding a DOM check for CPCookie --- AppKit/CPCookie.j | 27 +++++++++++++++++---------- 1 file changed, 17 insertions(+), 10 deletions(-) diff --git a/AppKit/CPCookie.j b/AppKit/CPCookie.j index 5a5694a94..a34d6e59f 100644 --- a/AppKit/CPCookie.j +++ b/AppKit/CPCookie.j @@ -92,21 +92,28 @@ domain = "; domain="+domain; else domain = ""; - - document.cookie = _cookieName+"="+value+expires+"; path=/"+domain; + +#if PLATFORM(DOM) + document.cookie = _cookieName+"="+value+expires+"; path=/"+domain; +#else + _cookieValue = value; + _expires = expires; +#endif } /* @ignore */ - (CPString)_readCookieValue { - var nameEQ = _cookieName + "="; - var ca = document.cookie.split(';'); - for(var i=0;i < ca.length;i++) { - var c = ca[i]; - while (c.charAt(0)==' ') c = c.substring(1,c.length); - if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length,c.length); - } - return ""; +#if PLATFORM(DOM) + var nameEQ = _cookieName + "="; + var ca = document.cookie.split(';'); + for(var i=0;i < ca.length;i++) { + var c = ca[i]; + while (c.charAt(0)==' ') c = c.substring(1,c.length); + if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length,c.length); + } +#endif + return ""; } @end From 032639234e1e853ca95d36038ae2e1f31c3ae19b Mon Sep 17 00:00:00 2001 From: Sami Samhuri Date: Thu, 9 Sep 2010 11:57:29 -0700 Subject: [PATCH 2/8] Use CPTextFields for RGB, HSB, and hex inputs in CPSliderColorPicker The old DOM based fields only accepted a few characters. Backspace and other expected functionality was broken. Switching to CPTextFields makes them behave as expected. --- AppKit/CPColor.j | 3 +- AppKit/CPSliderColorPicker.j | 227 ++++++++++++++--------------------- 2 files changed, 91 insertions(+), 139 deletions(-) diff --git a/AppKit/CPColor.j b/AppKit/CPColor.j index 3309c2d5c..dca6843e1 100644 --- a/AppKit/CPColor.j +++ b/AppKit/CPColor.j @@ -188,7 +188,8 @@ var cachedBlackColor, */ + (CPColor)colorWithHexString:(string)hex { - return [[CPColor alloc] _initWithRGBA: hexToRGB(hex)]; + var rgba = hexToRGB(hex); + return rgba ? [[CPColor alloc] _initWithRGBA: rgba] : null; } /*! diff --git a/AppKit/CPSliderColorPicker.j b/AppKit/CPSliderColorPicker.j index 6bcbeb923..3934b89db 100644 --- a/AppKit/CPSliderColorPicker.j +++ b/AppKit/CPSliderColorPicker.j @@ -49,14 +49,13 @@ CPTextField _hexLabel; CPTextField _hexValue; -#if PLATFORM(DOM) - DOMElement _redValue; - DOMElement _greenValue; - DOMElement _blueValue; - DOMElement _hueValue; - DOMElement _saturationValue; - DOMElement _brightnessValue; -#endif + CPTextField _hexValue; + CPTextField _redValue; + CPTextField _greenValue; + CPTextField _blueValue; + CPTextField _hueValue; + CPTextField _saturationValue; + CPTextField _brightnessValue; } - (id)initWithPickerMask:(int)mask colorPanel:(CPColorPanel)owningColorPanel @@ -86,73 +85,13 @@ [_redSlider setAction: @selector(sliderChanged:)]; [_redSlider setAutoresizingMask: CPViewWidthSizable]; -#if PLATFORM(DOM) - var updateFunction = function(aDOMEvent) - { - if(isNaN(this.value)) - return; - - switch(this) - { - case _redValue: [_redSlider setFloatValue:MAX(MIN(ROUND(this.value), 255) / 255.0, 0)]; - //[self sliderChanged: _redSlider]; - break; - - case _greenValue: [_greenSlider setFloatValue:MAX(MIN(ROUND(this.value), 255) / 255.0, 0)]; - //[self sliderChanged: _greenSlider]; - break; - - case _blueValue: [_blueSlider setFloatValue:MAX(MIN(ROUND(this.value), 255) / 255.0, 0)]; - //[self sliderChanged: _blueSlider]; - break; - - case _hueValue: [_hueSlider setFloatValue:MAX(MIN(ROUND(this.value), 360), 0)]; - //[self sliderChanged: _hueSlider]; - break; - - case _saturationValue: [_saturationSlider setFloatValue:MAX(MIN(ROUND(this.value), 100), 0)]; - //[self sliderChanged: _saturationSlider]; - break; - - case _brightnessValue: [_brightnessSlider setFloatValue:MAX(MIN(ROUND(this.value), 100), 0)]; - //[self sliderChanged: _brightnessSlider]; - break; - } - - this.blur(); - }; - - var keypressFunction = function(aDOMEvent) - { - aDOMEvent = aDOMEvent || window.event; - if (aDOMEvent.keyCode == 13) - { - updateFunction(aDOMEvent); - - if(aDOMEvent.preventDefault) - aDOMEvent.preventDefault(); - else if(aDOMEvent.stopPropagation) - aDOMEvent.stopPropagation(); - } - } - - //red value input box - var redValue = [[CPView alloc] initWithFrame: CPRectMake(aFrame.size.width - 45, 35, 45, 20)]; - [redValue setAutoresizingMask: CPViewMinXMargin]; - - _redValue = document.createElement("input"); - _redValue.style.width = "40px"; - _redValue.style.backgroundColor = "transparent"; - _redValue.style.border = "1px solid black"; - _redValue.style.color = "black"; - _redValue.style.position = "absolute"; - _redValue.style.top = "0px"; - _redValue.style.left = "0px"; - _redValue.onchange = updateFunction; - - redValue._DOMElement.appendChild(_redValue); - [_contentView addSubview: redValue]; -#endif + // red value input box + _redValue = [[CPTextField alloc] initWithFrame: CGRectMake(aFrame.size.width - 45, 30, 45, 29)]; + [_redValue setAutoresizingMask: CPViewMinXMargin]; + [_redValue setEditable: YES]; + [_redValue setBezeled: YES]; + [_redValue setDelegate: self]; + [_contentView addSubview: _redValue]; _greenLabel = [[CPTextField alloc] initWithFrame: CPRectMake(0, 58, 15, 20)]; [_greenLabel setStringValue: "G"]; @@ -165,17 +104,13 @@ [_greenSlider setAction: @selector(sliderChanged:)]; [_greenSlider setAutoresizingMask: CPViewWidthSizable]; -#if PLATFORM(DOM) - //green value input box - var greenValue = [[CPView alloc] initWithFrame: CPRectMake(aFrame.size.width - 45, 58, 45, 20)]; - [greenValue setAutoresizingMask: CPViewMinXMargin]; - - _greenValue = _redValue.cloneNode(false); - _greenValue.onchange = updateFunction; - - greenValue._DOMElement.appendChild(_greenValue); - [_contentView addSubview: greenValue]; -#endif + // green value input box + _greenValue = [[CPTextField alloc] initWithFrame: CGRectMake(aFrame.size.width - 45, 53, 45, 29)]; + [_greenValue setAutoresizingMask: CPViewMinXMargin]; + [_greenValue setEditable: YES]; + [_greenValue setBezeled: YES]; + [_greenValue setDelegate: self]; + [_contentView addSubview: _greenValue]; _blueLabel = [[CPTextField alloc] initWithFrame: CPRectMake(0, 81, 15, 20)]; [_blueLabel setStringValue: "B"]; @@ -188,17 +123,14 @@ [_blueSlider setAction: @selector(sliderChanged:)]; [_blueSlider setAutoresizingMask: CPViewWidthSizable]; -#if PLATFORM(DOM) - //blue value input box - var blueValue = [[CPView alloc] initWithFrame: CPRectMake(aFrame.size.width - 45, 81, 45, 20)]; - [blueValue setAutoresizingMask: CPViewMinXMargin]; + // blue value input box + _blueValue = [[CPTextField alloc] initWithFrame: CGRectMake(aFrame.size.width - 45, 76, 45, 29)]; + [_blueValue setAutoresizingMask: CPViewMinXMargin]; + [_blueValue setEditable: YES]; + [_blueValue setBezeled: YES]; + [_blueValue setDelegate: self]; + [_contentView addSubview: _blueValue]; - _blueValue = _redValue.cloneNode(false); - _blueValue.onchange = updateFunction; - - blueValue._DOMElement.appendChild(_blueValue); - [_contentView addSubview: blueValue]; -#endif _hsbLabel = [[CPTextField alloc] initWithFrame: CPRectMake(0, 120, 190, 20)]; [_hsbLabel setStringValue: "Hue, Saturation, Brightness"]; [_hsbLabel setTextColor:[CPColor blackColor]]; @@ -214,17 +146,14 @@ [_hueSlider setAction: @selector(sliderChanged:)]; [_hueSlider setAutoresizingMask: CPViewWidthSizable]; -#if PLATFORM(DOM) - //red value input box - var hueValue = [[CPView alloc] initWithFrame: CPRectMake(aFrame.size.width - 45, 145, 45, 20)]; - [hueValue setAutoresizingMask: CPViewMinXMargin]; + // hue value input box + _hueValue = [[CPTextField alloc] initWithFrame: CGRectMake(aFrame.size.width - 45, 140, 45, 29)]; + [_hueValue setAutoresizingMask: CPViewMinXMargin]; + [_hueValue setEditable: YES]; + [_hueValue setBezeled: YES]; + [_hueValue setDelegate: self]; + [_contentView addSubview: _hueValue]; - _hueValue = _redValue.cloneNode(false); - _hueValue.onchange = updateFunction; - - hueValue._DOMElement.appendChild(_hueValue); - [_contentView addSubview: hueValue]; -#endif _saturationLabel = [[CPTextField alloc] initWithFrame: CPRectMake(0, 168, 15, 20)]; [_saturationLabel setStringValue: "S"]; [_saturationLabel setTextColor:[CPColor blackColor]]; @@ -236,17 +165,14 @@ [_saturationSlider setAction: @selector(sliderChanged:)]; [_saturationSlider setAutoresizingMask: CPViewWidthSizable]; -#if PLATFORM(DOM) - //green value input box - var saturationValue = [[CPView alloc] initWithFrame: CPRectMake(aFrame.size.width - 45, 168, 45, 20)]; - [saturationValue setAutoresizingMask: CPViewMinXMargin]; + // saturation value input box + _saturationValue = [[CPTextField alloc] initWithFrame: CGRectMake(aFrame.size.width - 45, 163, 45, 29)]; + [_saturationValue setAutoresizingMask: CPViewMinXMargin]; + [_saturationValue setEditable: YES]; + [_saturationValue setBezeled: YES]; + [_saturationValue setDelegate: self]; + [_contentView addSubview: _saturationValue]; - _saturationValue = _redValue.cloneNode(false); - _saturationValue.onchange = updateFunction; - - saturationValue._DOMElement.appendChild(_saturationValue); - [_contentView addSubview: saturationValue]; -#endif _brightnessLabel = [[CPTextField alloc] initWithFrame: CPRectMake(0, 191, 15, 20)]; [_brightnessLabel setStringValue: "B"]; [_brightnessLabel setTextColor:[CPColor blackColor]]; @@ -258,17 +184,14 @@ [_brightnessSlider setAction: @selector(sliderChanged:)]; [_brightnessSlider setAutoresizingMask: CPViewWidthSizable]; -#if PLATFORM(DOM) - //blue value input box - var brightnessValue = [[CPView alloc] initWithFrame: CPRectMake(aFrame.size.width - 45, 191, 45, 20)]; - [brightnessValue setAutoresizingMask: CPViewMinXMargin]; + // brightness value input box + _brightnessValue = [[CPTextField alloc] initWithFrame: CGRectMake(aFrame.size.width - 45, 186, 45, 29)]; + [_brightnessValue setAutoresizingMask: CPViewMinXMargin]; + [_brightnessValue setEditable: YES]; + [_brightnessValue setBezeled: YES]; + [_brightnessValue setDelegate: self]; + [_contentView addSubview: _brightnessValue]; - _brightnessValue = _redValue.cloneNode(false); - _brightnessValue.onchange = updateFunction; - - brightnessValue._DOMElement.appendChild(_brightnessValue); - [_contentView addSubview: brightnessValue]; -#endif _hexLabel = [[CPTextField alloc] initWithFrame: CPRectMake(0, 230, 30, 20)]; [_hexLabel setStringValue: "Hex"]; [_hexLabel setTextColor:[CPColor blackColor]]; @@ -384,15 +307,13 @@ - (void)updateLabels { -#if PLATFORM(DOM) - _hueValue.value = ROUND([_hueSlider floatValue]); - _saturationValue.value = ROUND([_saturationSlider floatValue]); - _brightnessValue.value = ROUND([_brightnessSlider floatValue]); + [_hueValue setStringValue: ROUND([_hueSlider floatValue])]; + [_saturationValue setStringValue: ROUND([_saturationSlider floatValue])]; + [_brightnessValue setStringValue: ROUND([_brightnessSlider floatValue])]; - _redValue.value = ROUND([_redSlider floatValue] * 255); - _greenValue.value = ROUND([_greenSlider floatValue] * 255); - _blueValue.value = ROUND([_blueSlider floatValue] * 255); -#endif + [_redValue setStringValue: ROUND([_redSlider floatValue] * 255)]; + [_greenValue setStringValue: ROUND([_greenSlider floatValue] * 255)]; + [_blueValue setStringValue: ROUND([_blueSlider floatValue] * 255)]; } - (CPImage)provideNewButtonImage @@ -407,10 +328,40 @@ - (void)controlTextDidEndEditing:(CPNotification)aNotification { - var newColor = [CPColor colorWithHexString:[[_hexValue stringValue] stringByTrimmingWhitespace]]; - if (newColor) { - [self setColor: newColor]; - [[self colorPanel] setColor: newColor]; + var field = [aNotification object], + value = [[field stringValue] stringByTrimmingWhitespace]; + if (field === _hexValue) { + var newColor = [CPColor colorWithHexString: value]; + if (newColor) { + [self setColor: newColor]; + [[self colorPanel] setColor: newColor]; + } + } else { + switch(field) { + case _redValue: [_redSlider setFloatValue:MAX(MIN(ROUND(value), 255) / 255.0, 0)]; + [self sliderChanged: _redSlider]; + break; + + case _greenValue: [_greenSlider setFloatValue:MAX(MIN(ROUND(value), 255) / 255.0, 0)]; + [self sliderChanged: _greenSlider]; + break; + + case _blueValue: [_blueSlider setFloatValue:MAX(MIN(ROUND(value), 255) / 255.0, 0)]; + [self sliderChanged: _blueSlider]; + break; + + case _hueValue: [_hueSlider setFloatValue:MAX(MIN(ROUND(value), 360), 0)]; + [self sliderChanged: _hueSlider]; + break; + + case _saturationValue: [_saturationSlider setFloatValue:MAX(MIN(ROUND(value), 100), 0)]; + [self sliderChanged: _saturationSlider]; + break; + + case _brightnessValue: [_brightnessSlider setFloatValue:MAX(MIN(ROUND(value), 100), 0)]; + [self sliderChanged: _brightnessSlider]; + break; + } } } From 1220555936b8b6ba545e6cb5f69621bdcc676649 Mon Sep 17 00:00:00 2001 From: Tom Robinson Date: Mon, 13 Sep 2010 16:44:45 -0700 Subject: [PATCH 3/8] Fix for CPProxy not returning the return value --- Foundation/CPProxy.j | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Foundation/CPProxy.j b/Foundation/CPProxy.j index 2b4054c83..cbb8f0f2f 100644 --- a/Foundation/CPProxy.j +++ b/Foundation/CPProxy.j @@ -67,7 +67,7 @@ // FIXME: This should be moved to the runtime? - (void)forward:(SEL)aSelector :(marg_list)args { - [CPObject methodForSelector:_cmd](self, _cmd, aSelector, args); + return [CPObject methodForSelector:_cmd](self, _cmd, aSelector, args); } - (unsigned)hash From f7c7ee447d150c17377de5cc4ad1cbfe0f210725 Mon Sep 17 00:00:00 2001 From: Klaas Pieter Annema Date: Tue, 14 Sep 2010 11:11:10 +0200 Subject: [PATCH 4/8] set proper autoresizing for ScrollviewTheming test color well --- Tests/Manual/ScrollviewTheming/Resources/MainMenu.cib | 2 +- Tests/Manual/ScrollviewTheming/Resources/MainMenu.xib | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/Tests/Manual/ScrollviewTheming/Resources/MainMenu.cib b/Tests/Manual/ScrollviewTheming/Resources/MainMenu.cib index 4507e507b..ecde6540c 100644 --- a/Tests/Manual/ScrollviewTheming/Resources/MainMenu.cib +++ b/Tests/Manual/ScrollviewTheming/Resources/MainMenu.cib @@ -1 +1 @@ -280NPLIST;1.0;D;K;4;$topD;K;18;CPCibObjectDataKeyD;K;6;CP$UIDd;1;2E;E;K;8;$objectsA;S;5;$nullD;K;10;$classnameS;16;_CPCibObjectDataK;8;$classesA;S;16;_CPCibObjectDataS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;1;1E;K;28;_CPCibObjectDataNamesKeysKeyD;K;6;CP$UIDd;1;4E;K;30;_CPCibObjectDataNamesValuesKeyD;K;6;CP$UIDd;1;5E;K;30;_CPCibObjectDataClassesKeysKeyD;K;6;CP$UIDd;1;6E;K;32;_CPCibObjectDataClassesValuesKeyD;K;6;CP$UIDd;1;7E;K;30;_CPCibObjectDataConnectionsKeyD;K;6;CP$UIDd;1;8E;K;28;_CPCibObjectDataFrameworkKeyD;K;6;CP$UIDd;1;9E;K;26;_CPCibObjectDataNextOidKeyD;K;6;CP$UIDd;2;10E;K;30;_CPCibObjectDataObjectsKeysKeyD;K;6;CP$UIDd;2;11E;K;32;_CPCibObjectDataObjectsValuesKeyD;K;6;CP$UIDd;2;12E;K;26;_CPCibObjectDataOidKeysKeyD;K;6;CP$UIDd;2;13E;K;28;_CPCibObjectDataOidValuesKeyD;K;6;CP$UIDd;2;14E;K;28;_CPCibObjectDataFileOwnerKeyD;K;6;CP$UIDd;2;16E;K;33;_CPCibObjectDataVisibleWindowsKeyD;K;6;CP$UIDd;2;18E;E;D;K;10;$classnameS;7;CPArrayK;8;$classesA;S;7;CPArrayS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;2;20E;D;K;6;CP$UIDd;2;21E;D;K;6;CP$UIDd;2;23E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;2;25E;D;K;6;CP$UIDd;2;27E;D;K;6;CP$UIDd;2;16E;D;K;6;CP$UIDd;2;29E;D;K;6;CP$UIDd;2;31E;D;K;6;CP$UIDd;2;33E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;2;35E;D;K;6;CP$UIDd;2;36E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;2;37E;D;K;6;CP$UIDd;2;38E;D;K;6;CP$UIDd;2;40E;D;K;6;CP$UIDd;2;42E;D;K;6;CP$UIDd;2;43E;D;K;6;CP$UIDd;2;44E;D;K;6;CP$UIDd;2;46E;E;E;D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;2;47E;D;K;6;CP$UIDd;2;48E;D;K;6;CP$UIDd;2;49E;D;K;6;CP$UIDd;2;50E;D;K;6;CP$UIDd;2;51E;D;K;6;CP$UIDd;2;52E;D;K;6;CP$UIDd;2;53E;D;K;6;CP$UIDd;2;54E;D;K;6;CP$UIDd;2;55E;D;K;6;CP$UIDd;2;56E;D;K;6;CP$UIDd;2;57E;D;K;6;CP$UIDd;2;58E;D;K;6;CP$UIDd;2;59E;D;K;6;CP$UIDd;2;60E;D;K;6;CP$UIDd;2;61E;D;K;6;CP$UIDd;2;62E;D;K;6;CP$UIDd;2;63E;D;K;6;CP$UIDd;2;64E;D;K;6;CP$UIDd;2;65E;D;K;6;CP$UIDd;2;66E;D;K;6;CP$UIDd;2;67E;E;E;D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;E;E;D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;E;E;D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;2;69E;D;K;6;CP$UIDd;2;70E;D;K;6;CP$UIDd;2;71E;D;K;6;CP$UIDd;2;73E;D;K;6;CP$UIDd;2;74E;D;K;6;CP$UIDd;2;75E;D;K;6;CP$UIDd;2;76E;D;K;6;CP$UIDd;2;77E;D;K;6;CP$UIDd;2;78E;E;E;S;16;IBCocoaFrameworkD;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;E;E;D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;2;20E;D;K;6;CP$UIDd;2;21E;D;K;6;CP$UIDd;2;23E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;2;25E;D;K;6;CP$UIDd;2;27E;D;K;6;CP$UIDd;2;29E;D;K;6;CP$UIDd;2;31E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;2;35E;D;K;6;CP$UIDd;2;36E;D;K;6;CP$UIDd;2;37E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;2;38E;D;K;6;CP$UIDd;2;40E;D;K;6;CP$UIDd;2;42E;D;K;6;CP$UIDd;2;43E;D;K;6;CP$UIDd;2;46E;D;K;6;CP$UIDd;2;44E;D;K;6;CP$UIDd;2;33E;E;E;D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;2;31E;D;K;6;CP$UIDd;2;16E;D;K;6;CP$UIDd;2;31E;D;K;6;CP$UIDd;2;42E;D;K;6;CP$UIDd;2;31E;D;K;6;CP$UIDd;2;33E;D;K;6;CP$UIDd;2;46E;D;K;6;CP$UIDd;2;35E;D;K;6;CP$UIDd;2;23E;D;K;6;CP$UIDd;2;16E;D;K;6;CP$UIDd;2;33E;D;K;6;CP$UIDd;2;33E;D;K;6;CP$UIDd;2;25E;D;K;6;CP$UIDd;2;46E;D;K;6;CP$UIDd;2;46E;D;K;6;CP$UIDd;2;31E;D;K;6;CP$UIDd;2;33E;D;K;6;CP$UIDd;2;31E;D;K;6;CP$UIDd;2;16E;D;K;6;CP$UIDd;2;42E;E;E;D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;E;E;D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;E;E;D;K;10;$classnameS;18;_CPCibCustomObjectK;8;$classesA;S;18;_CPCibCustomObjectS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;2;15E;K;27;_CPCibCustomObjectClassNameD;K;6;CP$UIDd;2;79E;E;D;K;10;$classnameS;5;CPSetK;8;$classesA;S;5;CPSetS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;2;17E;K;15;CPSetObjectsKeyD;K;6;CP$UIDd;2;80E;E;D;K;10;$classnameS;11;CPColorWellK;8;$classesA;S;11;CPColorWellS;9;CPControlS;6;CPViewS;11;CPResponderS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;2;19E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;2;31E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;2;81E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;2;82E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;2;31E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;2;83E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;2;84E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;2;85E;K;19;CPColorWellColorKeyD;K;6;CP$UIDd;2;87E;K;22;CPColorWellBorderedKeyD;K;6;CP$UIDd;2;88E;E;D;K;6;$classD;K;6;CP$UIDd;2;15E;K;27;_CPCibCustomObjectClassNameD;K;6;CP$UIDd;2;79E;E;D;K;10;$classnameS;10;CPCheckBoxK;8;$classesA;S;10;CPCheckBoxS;8;CPButtonS;9;CPControlS;6;CPViewS;11;CPResponderS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;2;22E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;2;31E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;2;89E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;2;90E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;2;31E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;2;91E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;2;92E;K;17;$aline-break-modeD;K;6;CP$UIDd;2;93E;K;11;$aalignmentD;K;6;CP$UIDd;2;93E;K;17;CPControlValueKeyD;K;6;CP$UIDd;2;93E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;2;85E;K;16;CPButtonImageKeyD;K;6;CP$UIDd;1;0E;K;25;CPButtonAlternateImageKeyD;K;6;CP$UIDd;1;0E;K;16;CPButtonTitleKeyD;K;6;CP$UIDd;2;94E;K;25;CPButtonAlternateTitleKeyD;K;6;CP$UIDd;1;0E;K;32;CPButtonImageDimsWhenDisabledKeyD;K;6;CP$UIDd;1;0E;K;28;CPButtonKeyEquivalentMaskKeyD;K;6;CP$UIDd;1;0E;E;D;K;10;$classnameS;11;CPTextFieldK;8;$classesA;S;11;CPTextFieldS;9;CPControlS;6;CPViewS;11;CPResponderS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;2;24E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;2;31E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;2;95E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;2;96E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;2;31E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;2;91E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;2;84E;K;17;$aline-break-modeD;K;6;CP$UIDd;2;97E;K;11;$aalignmentD;K;6;CP$UIDd;2;85E;K;17;CPControlValueKeyD;K;6;CP$UIDd;2;98E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;2;99E;K;24;CPTextFieldIsEditableKeyD;K;6;CP$UIDd;3;100E;K;26;CPTextFieldIsSelectableKeyD;K;6;CP$UIDd;3;100E;K;29;CPTextFieldDrawsBackgroundKeyD;K;6;CP$UIDd;3;100E;K;29;CPTextFieldBackgroundColorKeyD;K;6;CP$UIDd;1;0E;K;27;CPTextFieldLineBreakModeKeyD;K;6;CP$UIDd;2;97E;K;23;CPTextFieldAlignmentKeyD;K;6;CP$UIDd;2;85E;K;31;CPTextFieldPlaceholderStringKeyD;K;6;CP$UIDd;1;0E;E;D;K;10;$classnameS;10;CPMenuItemK;8;$classesA;S;10;CPMenuItemS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;2;26E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;101E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;2;42E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;3;102E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;1;0E;K;18;CPMenuItemStateKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;2;33E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;103E;E;D;K;10;$classnameS;10;CPScrollerK;8;$classesA;S;10;CPScrollerS;9;CPControlS;6;CPViewS;11;CPResponderS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;2;28E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;2;46E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;104E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;105E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;2;46E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;106E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;107E;K;17;CPControlValueKeyD;K;6;CP$UIDd;2;93E;K;18;CPControlTargetKeyD;K;6;CP$UIDd;2;46E;K;18;CPControlActionKeyD;K;6;CP$UIDd;3;108E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;2;85E;K;21;CPScrollerControlSizeD;K;6;CP$UIDd;2;93E;K;24;CPScrollerKnobProportionD;K;6;CP$UIDd;3;109E;E;D;K;10;$classnameS;6;CPViewK;8;$classesA;S;6;CPViewS;11;CPResponderS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;2;30E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;110E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;110E;K;17;CPViewSubviewsKeyD;K;6;CP$UIDd;3;111E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;2;84E;E;D;K;10;$classnameS;6;CPMenuK;8;$classesA;S;6;CPMenuS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;2;32E;K;14;CPMenuTitleKeyD;K;6;CP$UIDd;3;112E;K;14;CPMenuItemsKeyD;K;6;CP$UIDd;3;113E;E;D;K;10;$classnameS;20;_CPCibWindowTemplateK;8;$classesA;S;20;_CPCibWindowTemplateS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;2;34E;K;30;_CPCibWindowTemplateMaxSizeKeyD;K;6;CP$UIDd;3;114E;K;32;_CPCibWindowTemplateViewClassKeyD;K;6;CP$UIDd;1;0E;K;34;_CPCibWindowTemplateWindowClassKeyD;K;6;CP$UIDd;3;115E;K;33;_CPCibWindowTemplateWindowRectKeyD;K;6;CP$UIDd;3;116E;K;30;_CPCibWindowTempatStyleMaskKeyD;K;6;CP$UIDd;3;117E;K;34;_CPCibWindowTemplateWindowTitleKeyD;K;6;CP$UIDd;3;118E;K;33;_CPCibWindowTemplateWindowViewKeyD;K;6;CP$UIDd;2;31E;E;D;K;6;$classD;K;6;CP$UIDd;2;26E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;119E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;2;42E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;3;102E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;1;0E;K;18;CPMenuItemStateKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;2;33E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;103E;E;D;K;6;$classD;K;6;CP$UIDd;2;26E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;120E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;2;42E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;3;102E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;1;0E;K;18;CPMenuItemStateKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;2;33E;E;D;K;6;$classD;K;6;CP$UIDd;2;28E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;2;46E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;121E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;122E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;2;46E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;106E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;123E;K;17;CPControlValueKeyD;K;6;CP$UIDd;3;124E;K;18;CPControlTargetKeyD;K;6;CP$UIDd;2;46E;K;18;CPControlActionKeyD;K;6;CP$UIDd;3;125E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;2;85E;K;21;CPScrollerControlSizeD;K;6;CP$UIDd;2;93E;K;24;CPScrollerKnobProportionD;K;6;CP$UIDd;3;126E;E;D;K;10;$classnameS;16;_CPCibCustomViewK;8;$classesA;S;16;_CPCibCustomViewS;6;CPViewS;11;CPResponderS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;2;39E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;3;127E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;128E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;128E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;3;127E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;129E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;2;84E;K;28;_CPCibCustomViewClassNameKeyD;K;6;CP$UIDd;3;130E;E;D;K;10;$classnameS;13;CPPopUpButtonK;8;$classesA;S;13;CPPopUpButtonS;8;CPButtonS;9;CPControlS;6;CPViewS;11;CPResponderS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;2;41E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;2;31E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;131E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;132E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;2;31E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;2;91E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;2;92E;K;17;$aline-break-modeD;K;6;CP$UIDd;2;85E;K;11;$aalignmentD;K;6;CP$UIDd;2;93E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;2;85E;K;16;CPButtonImageKeyD;K;6;CP$UIDd;1;0E;K;25;CPButtonAlternateImageKeyD;K;6;CP$UIDd;1;0E;K;16;CPButtonTitleKeyD;K;6;CP$UIDd;1;0E;K;25;CPButtonAlternateTitleKeyD;K;6;CP$UIDd;1;0E;K;32;CPButtonImageDimsWhenDisabledKeyD;K;6;CP$UIDd;1;0E;K;28;CPButtonKeyEquivalentMaskKeyD;K;6;CP$UIDd;1;0E;K;20;CPPopUpButtonMenuKeyD;K;6;CP$UIDd;2;33E;K;29;CPPopUpButtonSelectedIndexKeyD;K;6;CP$UIDd;3;133E;E;D;K;6;$classD;K;6;CP$UIDd;2;26E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;134E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;2;42E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;3;102E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;1;0E;K;18;CPMenuItemStateKeyD;K;6;CP$UIDd;3;133E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;2;33E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;103E;E;D;K;6;$classD;K;6;CP$UIDd;2;15E;K;27;_CPCibCustomObjectClassNameD;K;6;CP$UIDd;3;135E;E;D;K;10;$classnameS;12;CPScrollViewK;8;$classesA;S;12;CPScrollViewS;6;CPViewS;11;CPResponderS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;2;45E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;2;31E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;136E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;137E;K;17;CPViewSubviewsKeyD;K;6;CP$UIDd;3;138E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;2;31E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;129E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;2;84E;K;23;CPScrollViewContentViewD;K;6;CP$UIDd;3;127E;K;29;CPScrollViewHeaderClipViewKeyD;K;6;CP$UIDd;1;0E;K;21;CPScrollViewVScrollerD;K;6;CP$UIDd;2;38E;K;21;CPScrollViewHScrollerD;K;6;CP$UIDd;2;29E;K;23;CPScrollViewVLineScrollD;K;6;CP$UIDd;3;140E;K;23;CPScrollViewVPageScrollD;K;6;CP$UIDd;3;140E;K;23;CPScrollViewHLineScrollD;K;6;CP$UIDd;3;140E;K;23;CPScrollViewHPageScrollD;K;6;CP$UIDd;3;140E;K;24;CPScrollViewHasVScrollerD;K;6;CP$UIDd;2;88E;K;24;CPScrollViewHasHScrollerD;K;6;CP$UIDd;2;88E;K;29;CPScrollViewAutohidesScrollerD;K;6;CP$UIDd;3;100E;K;25;CPScrollViewCornerViewKeyD;K;6;CP$UIDd;1;0E;K;25;CPScrollViewBorderTypeKeyD;K;6;CP$UIDd;3;133E;E;S;10;Color WellS;11;ApplicationS;27;Check Box (Show headerview)S;33;Pop Up Button Cell (CPLineBorder)S;27;Static Text (Border style:)S;22;Menu Item (CPNoBorder)S;12;File's OwnerS;19;Horizontal ScrollerS;12;Content ViewS;17;Menu (OtherViews)S;29;Button Cell (Show headerview)S;15;Window (Window)S;25;Menu Item (CPBezelBorder)S;31;Text Field Cell (Border style:)S;26;Menu Item (CPGrooveBorder)S;17;Vertical ScrollerS;13;Document ViewS;13;Pop Up ButtonS;24;Menu Item (CPLineBorder)S;14;App ControllerS;34;Bordered Scroll View (Custom View)D;K;10;$classnameS;20;CPCibOutletConnectorK;8;$classesA;S;20;CPCibOutletConnectorS;14;CPCibConnectorS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;2;68E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;16E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;2;44E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;141E;E;D;K;6;$classD;K;6;CP$UIDd;2;68E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;44E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;2;46E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;142E;E;D;K;6;$classD;K;6;CP$UIDd;2;68E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;44E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;2;35E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;143E;E;D;K;10;$classnameS;21;CPCibControlConnectorK;8;$classesA;S;21;CPCibControlConnectorS;14;CPCibConnectorS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;2;72E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;27E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;2;44E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;144E;E;D;K;6;$classD;K;6;CP$UIDd;2;72E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;43E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;2;44E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;144E;E;D;K;6;$classD;K;6;CP$UIDd;2;72E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;36E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;2;44E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;144E;E;D;K;6;$classD;K;6;CP$UIDd;2;72E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;37E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;2;44E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;144E;E;D;K;6;$classD;K;6;CP$UIDd;2;72E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;23E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;2;44E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;145E;E;D;K;6;$classD;K;6;CP$UIDd;2;72E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;20E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;2;44E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;146E;E;S;13;CPApplicationD;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;2;35E;E;E;S;22;{{210, 464}, {44, 23}}S;18;{{0, 0}, {44, 23}}d;2;36S;6;normald;1;4D;K;10;$classnameS;7;CPColorK;8;$classesA;S;7;CPColorS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;2;86E;K;20;CPColorComponentsKeyD;K;6;CP$UIDd;3;147E;E;T;S;22;{{18, 503}, {131, 18}}S;19;{{0, 0}, {131, 18}}d;2;12S;8;borderedd;1;0S;15;Show headerviewS;21;{{17, 440}, {84, 17}}S;18;{{0, 0}, {84, 17}}d;1;2S;13;Border style:d;4;3072F;S;10;CPNoBorderS;17;_popUpItemAction:d;7;1048576S;19;{{1, 1}, {700, 15}}S;19;{{0, 0}, {700, 15}}d;1;8S;8;disabledS;29;_horizontalScrollerDidScroll:f;18;0.5060241222381592S;20;{{0, 0}, {757, 547}}D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;2;46E;D;K;6;CP$UIDd;2;42E;D;K;6;CP$UIDd;2;25E;D;K;6;CP$UIDd;2;23E;D;K;6;CP$UIDd;2;20E;E;E;S;10;OtherViewsD;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;2;27E;D;K;6;CP$UIDd;2;43E;D;K;6;CP$UIDd;2;36E;D;K;6;CP$UIDd;2;37E;E;E;S;28;{1.79769e+308, 1.79769e+308}S;8;CPWindowS;24;{{335, 128}, {757, 547}}d;1;7S;6;WindowS;13;CPBezelBorderS;14;CPGrooveBorderS;22;{{701, 16}, {15, 382}}S;19;{{0, 0}, {15, 382}}S;17;disabled+verticalf;18;0.9738219895287958S;27;_verticalScrollerDidScroll:f;18;0.9636362791061401D;K;6;$classD;K;6;CP$UIDd;3;139E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;2;46E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;148E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;128E;K;17;CPViewSubviewsKeyD;K;6;CP$UIDd;3;149E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;2;46E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;106E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;2;84E;K;24;CPScrollViewDocumentViewD;K;6;CP$UIDd;2;40E;E;S;20;{{0, 0}, {700, 382}}d;2;18S;12;DocumentViewS;22;{{17, 461}, {168, 24}}S;19;{{0, 0}, {168, 24}}d;1;1S;12;CPLineBorderS;13;AppControllerS;22;{{20, 20}, {717, 399}}S;20;{{0, 0}, {717, 399}}D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;3;127E;D;K;6;CP$UIDd;2;38E;D;K;6;CP$UIDd;2;29E;E;E;D;K;10;$classnameS;10;CPClipViewK;8;$classesA;S;10;CPClipViewS;6;CPViewS;11;CPResponderS;8;CPObjectE;E;d;2;10S;8;delegateS;10;scrollViewS;6;windowS;17;changeBorderType:S;17;toggleHeaderView:S;18;changeBorderColor:D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;2;93E;D;K;6;CP$UIDd;2;93E;D;K;6;CP$UIDd;2;93E;D;K;6;CP$UIDd;3;150E;E;E;S;21;{{1, 16}, {700, 382}}D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;2;40E;E;E;f;3;0.2E;K;9;$archiverS;15;CPKeyedArchiverK;8;$versionS;6;100000E; \ No newline at end of file +280NPLIST;1.0;D;K;4;$topD;K;18;CPCibObjectDataKeyD;K;6;CP$UIDd;1;2E;E;K;8;$objectsA;S;5;$nullD;K;10;$classnameS;16;_CPCibObjectDataK;8;$classesA;S;16;_CPCibObjectDataS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;1;1E;K;28;_CPCibObjectDataNamesKeysKeyD;K;6;CP$UIDd;1;4E;K;30;_CPCibObjectDataNamesValuesKeyD;K;6;CP$UIDd;1;5E;K;30;_CPCibObjectDataClassesKeysKeyD;K;6;CP$UIDd;1;6E;K;32;_CPCibObjectDataClassesValuesKeyD;K;6;CP$UIDd;1;7E;K;30;_CPCibObjectDataConnectionsKeyD;K;6;CP$UIDd;1;8E;K;28;_CPCibObjectDataFrameworkKeyD;K;6;CP$UIDd;1;9E;K;26;_CPCibObjectDataNextOidKeyD;K;6;CP$UIDd;2;10E;K;30;_CPCibObjectDataObjectsKeysKeyD;K;6;CP$UIDd;2;11E;K;32;_CPCibObjectDataObjectsValuesKeyD;K;6;CP$UIDd;2;12E;K;26;_CPCibObjectDataOidKeysKeyD;K;6;CP$UIDd;2;13E;K;28;_CPCibObjectDataOidValuesKeyD;K;6;CP$UIDd;2;14E;K;28;_CPCibObjectDataFileOwnerKeyD;K;6;CP$UIDd;2;16E;K;33;_CPCibObjectDataVisibleWindowsKeyD;K;6;CP$UIDd;2;18E;E;D;K;10;$classnameS;7;CPArrayK;8;$classesA;S;7;CPArrayS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;2;20E;D;K;6;CP$UIDd;2;22E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;2;16E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;2;24E;D;K;6;CP$UIDd;2;26E;D;K;6;CP$UIDd;2;28E;D;K;6;CP$UIDd;2;30E;D;K;6;CP$UIDd;2;32E;D;K;6;CP$UIDd;2;34E;D;K;6;CP$UIDd;2;35E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;2;37E;D;K;6;CP$UIDd;2;38E;D;K;6;CP$UIDd;2;39E;D;K;6;CP$UIDd;2;40E;D;K;6;CP$UIDd;2;42E;D;K;6;CP$UIDd;2;44E;D;K;6;CP$UIDd;2;45E;D;K;6;CP$UIDd;2;46E;E;E;D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;2;47E;D;K;6;CP$UIDd;2;48E;D;K;6;CP$UIDd;2;49E;D;K;6;CP$UIDd;2;50E;D;K;6;CP$UIDd;2;51E;D;K;6;CP$UIDd;2;52E;D;K;6;CP$UIDd;2;53E;D;K;6;CP$UIDd;2;54E;D;K;6;CP$UIDd;2;55E;D;K;6;CP$UIDd;2;56E;D;K;6;CP$UIDd;2;57E;D;K;6;CP$UIDd;2;58E;D;K;6;CP$UIDd;2;59E;D;K;6;CP$UIDd;2;60E;D;K;6;CP$UIDd;2;61E;D;K;6;CP$UIDd;2;62E;D;K;6;CP$UIDd;2;63E;D;K;6;CP$UIDd;2;64E;D;K;6;CP$UIDd;2;65E;D;K;6;CP$UIDd;2;66E;D;K;6;CP$UIDd;2;67E;E;E;D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;E;E;D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;E;E;D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;2;69E;D;K;6;CP$UIDd;2;70E;D;K;6;CP$UIDd;2;71E;D;K;6;CP$UIDd;2;73E;D;K;6;CP$UIDd;2;74E;D;K;6;CP$UIDd;2;75E;D;K;6;CP$UIDd;2;76E;D;K;6;CP$UIDd;2;77E;D;K;6;CP$UIDd;2;78E;E;E;S;16;IBCocoaFrameworkD;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;E;E;D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;2;20E;D;K;6;CP$UIDd;2;22E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;2;24E;D;K;6;CP$UIDd;2;26E;D;K;6;CP$UIDd;2;28E;D;K;6;CP$UIDd;2;30E;D;K;6;CP$UIDd;2;34E;D;K;6;CP$UIDd;2;35E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;2;37E;D;K;6;CP$UIDd;2;45E;D;K;6;CP$UIDd;2;39E;D;K;6;CP$UIDd;2;38E;D;K;6;CP$UIDd;2;42E;D;K;6;CP$UIDd;2;44E;D;K;6;CP$UIDd;2;46E;D;K;6;CP$UIDd;2;40E;D;K;6;CP$UIDd;2;32E;E;E;D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;2;32E;D;K;6;CP$UIDd;2;28E;D;K;6;CP$UIDd;2;44E;D;K;6;CP$UIDd;2;22E;D;K;6;CP$UIDd;2;28E;D;K;6;CP$UIDd;2;24E;D;K;6;CP$UIDd;2;34E;D;K;6;CP$UIDd;2;24E;D;K;6;CP$UIDd;2;16E;D;K;6;CP$UIDd;2;32E;D;K;6;CP$UIDd;2;42E;D;K;6;CP$UIDd;2;28E;D;K;6;CP$UIDd;2;32E;D;K;6;CP$UIDd;2;24E;D;K;6;CP$UIDd;2;16E;D;K;6;CP$UIDd;2;28E;D;K;6;CP$UIDd;2;28E;D;K;6;CP$UIDd;2;32E;D;K;6;CP$UIDd;2;16E;D;K;6;CP$UIDd;2;42E;E;E;D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;E;E;D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;E;E;D;K;10;$classnameS;18;_CPCibCustomObjectK;8;$classesA;S;18;_CPCibCustomObjectS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;2;15E;K;27;_CPCibCustomObjectClassNameD;K;6;CP$UIDd;2;79E;E;D;K;10;$classnameS;5;CPSetK;8;$classesA;S;5;CPSetS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;2;17E;K;15;CPSetObjectsKeyD;K;6;CP$UIDd;2;80E;E;D;K;10;$classnameS;10;CPMenuItemK;8;$classesA;S;10;CPMenuItemS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;2;19E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;2;81E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;2;42E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;2;82E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;1;0E;K;18;CPMenuItemStateKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;2;32E;E;D;K;10;$classnameS;11;CPTextFieldK;8;$classesA;S;11;CPTextFieldS;9;CPControlS;6;CPViewS;11;CPResponderS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;2;21E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;2;28E;K;12;CPViewTagKeyD;K;6;CP$UIDd;2;83E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;2;84E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;2;85E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;2;28E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;2;86E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;2;87E;K;17;$aline-break-modeD;K;6;CP$UIDd;2;88E;K;11;$aalignmentD;K;6;CP$UIDd;2;89E;K;17;CPControlValueKeyD;K;6;CP$UIDd;2;90E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;2;91E;K;24;CPTextFieldIsEditableKeyD;K;6;CP$UIDd;2;92E;K;26;CPTextFieldIsSelectableKeyD;K;6;CP$UIDd;2;92E;K;29;CPTextFieldDrawsBackgroundKeyD;K;6;CP$UIDd;2;92E;K;29;CPTextFieldBackgroundColorKeyD;K;6;CP$UIDd;1;0E;K;27;CPTextFieldLineBreakModeKeyD;K;6;CP$UIDd;2;88E;K;23;CPTextFieldAlignmentKeyD;K;6;CP$UIDd;2;89E;K;31;CPTextFieldPlaceholderStringKeyD;K;6;CP$UIDd;1;0E;E;D;K;10;$classnameS;12;CPScrollViewK;8;$classesA;S;12;CPScrollViewS;6;CPViewS;11;CPResponderS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;2;23E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;2;28E;K;12;CPViewTagKeyD;K;6;CP$UIDd;2;83E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;2;93E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;2;94E;K;17;CPViewSubviewsKeyD;K;6;CP$UIDd;2;95E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;2;28E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;2;96E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;2;87E;K;23;CPScrollViewContentViewD;K;6;CP$UIDd;2;98E;K;29;CPScrollViewHeaderClipViewKeyD;K;6;CP$UIDd;1;0E;K;21;CPScrollViewVScrollerD;K;6;CP$UIDd;2;26E;K;21;CPScrollViewHScrollerD;K;6;CP$UIDd;2;39E;K;23;CPScrollViewVLineScrollD;K;6;CP$UIDd;2;99E;K;23;CPScrollViewVPageScrollD;K;6;CP$UIDd;2;99E;K;23;CPScrollViewHLineScrollD;K;6;CP$UIDd;2;99E;K;23;CPScrollViewHPageScrollD;K;6;CP$UIDd;2;99E;K;24;CPScrollViewHasVScrollerD;K;6;CP$UIDd;3;100E;K;24;CPScrollViewHasHScrollerD;K;6;CP$UIDd;3;100E;K;29;CPScrollViewAutohidesScrollerD;K;6;CP$UIDd;2;92E;K;25;CPScrollViewCornerViewKeyD;K;6;CP$UIDd;1;0E;K;25;CPScrollViewBorderTypeKeyD;K;6;CP$UIDd;3;101E;E;D;K;10;$classnameS;10;CPScrollerK;8;$classesA;S;10;CPScrollerS;9;CPControlS;6;CPViewS;11;CPResponderS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;2;25E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;2;24E;K;12;CPViewTagKeyD;K;6;CP$UIDd;2;83E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;102E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;103E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;2;24E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;104E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;105E;K;17;CPControlValueKeyD;K;6;CP$UIDd;3;106E;K;18;CPControlTargetKeyD;K;6;CP$UIDd;2;24E;K;18;CPControlActionKeyD;K;6;CP$UIDd;3;107E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;2;89E;K;21;CPScrollerControlSizeD;K;6;CP$UIDd;2;83E;K;24;CPScrollerKnobProportionD;K;6;CP$UIDd;3;108E;E;D;K;10;$classnameS;6;CPViewK;8;$classesA;S;6;CPViewS;11;CPResponderS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;2;27E;K;12;CPViewTagKeyD;K;6;CP$UIDd;2;83E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;109E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;109E;K;17;CPViewSubviewsKeyD;K;6;CP$UIDd;3;110E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;2;87E;E;D;K;10;$classnameS;16;_CPCibCustomViewK;8;$classesA;S;16;_CPCibCustomViewS;6;CPViewS;11;CPResponderS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;2;29E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;2;98E;K;12;CPViewTagKeyD;K;6;CP$UIDd;2;83E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;111E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;111E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;2;98E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;2;96E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;2;87E;K;28;_CPCibCustomViewClassNameKeyD;K;6;CP$UIDd;3;112E;E;D;K;10;$classnameS;6;CPMenuK;8;$classesA;S;6;CPMenuS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;2;31E;K;14;CPMenuTitleKeyD;K;6;CP$UIDd;3;113E;K;14;CPMenuItemsKeyD;K;6;CP$UIDd;3;114E;E;D;K;10;$classnameS;20;_CPCibWindowTemplateK;8;$classesA;S;20;_CPCibWindowTemplateS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;2;33E;K;30;_CPCibWindowTemplateMaxSizeKeyD;K;6;CP$UIDd;3;115E;K;32;_CPCibWindowTemplateViewClassKeyD;K;6;CP$UIDd;1;0E;K;34;_CPCibWindowTemplateWindowClassKeyD;K;6;CP$UIDd;3;116E;K;33;_CPCibWindowTemplateWindowRectKeyD;K;6;CP$UIDd;3;117E;K;30;_CPCibWindowTempatStyleMaskKeyD;K;6;CP$UIDd;3;118E;K;34;_CPCibWindowTemplateWindowTitleKeyD;K;6;CP$UIDd;3;119E;K;33;_CPCibWindowTemplateWindowViewKeyD;K;6;CP$UIDd;2;28E;E;D;K;6;$classD;K;6;CP$UIDd;2;19E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;120E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;2;42E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;2;82E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;1;0E;K;18;CPMenuItemStateKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;2;32E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;121E;E;D;K;10;$classnameS;11;CPColorWellK;8;$classesA;S;11;CPColorWellS;9;CPControlS;6;CPViewS;11;CPResponderS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;2;36E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;2;28E;K;12;CPViewTagKeyD;K;6;CP$UIDd;2;83E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;122E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;123E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;2;28E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;2;86E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;2;87E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;2;89E;K;19;CPColorWellColorKeyD;K;6;CP$UIDd;3;125E;K;22;CPColorWellBorderedKeyD;K;6;CP$UIDd;3;100E;E;D;K;6;$classD;K;6;CP$UIDd;2;15E;K;27;_CPCibCustomObjectClassNameD;K;6;CP$UIDd;2;79E;E;D;K;6;$classD;K;6;CP$UIDd;2;25E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;2;24E;K;12;CPViewTagKeyD;K;6;CP$UIDd;2;83E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;126E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;127E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;2;24E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;104E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;128E;K;17;CPControlValueKeyD;K;6;CP$UIDd;2;83E;K;18;CPControlTargetKeyD;K;6;CP$UIDd;2;24E;K;18;CPControlActionKeyD;K;6;CP$UIDd;3;129E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;2;89E;K;21;CPScrollerControlSizeD;K;6;CP$UIDd;2;83E;K;24;CPScrollerKnobProportionD;K;6;CP$UIDd;3;130E;E;D;K;6;$classD;K;6;CP$UIDd;2;15E;K;27;_CPCibCustomObjectClassNameD;K;6;CP$UIDd;3;131E;E;D;K;10;$classnameS;13;CPPopUpButtonK;8;$classesA;S;13;CPPopUpButtonS;8;CPButtonS;9;CPControlS;6;CPViewS;11;CPResponderS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;2;41E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;2;28E;K;12;CPViewTagKeyD;K;6;CP$UIDd;2;83E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;132E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;133E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;2;28E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;2;86E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;134E;K;17;$aline-break-modeD;K;6;CP$UIDd;2;89E;K;11;$aalignmentD;K;6;CP$UIDd;2;83E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;2;89E;K;16;CPButtonTitleKeyD;K;6;CP$UIDd;1;0E;K;25;CPButtonAlternateTitleKeyD;K;6;CP$UIDd;1;0E;K;27;CPButtonAllowsMixedStateKeyD;K;6;CP$UIDd;1;0E;K;32;CPButtonImageDimsWhenDisabledKeyD;K;6;CP$UIDd;1;0E;K;24;CPButtonImagePositionKeyD;K;6;CP$UIDd;2;88E;K;28;CPButtonKeyEquivalentMaskKeyD;K;6;CP$UIDd;1;0E;K;20;CPPopUpButtonMenuKeyD;K;6;CP$UIDd;2;32E;K;29;CPPopUpButtonSelectedIndexKeyD;K;6;CP$UIDd;3;101E;E;D;K;10;$classnameS;10;CPCheckBoxK;8;$classesA;S;10;CPCheckBoxS;8;CPButtonS;9;CPControlS;6;CPViewS;11;CPResponderS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;2;43E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;2;28E;K;12;CPViewTagKeyD;K;6;CP$UIDd;2;83E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;135E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;136E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;2;28E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;2;86E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;134E;K;16;$aimage-positionD;K;6;CP$UIDd;2;88E;K;17;$aline-break-modeD;K;6;CP$UIDd;2;83E;K;11;$aalignmentD;K;6;CP$UIDd;2;83E;K;17;CPControlValueKeyD;K;6;CP$UIDd;2;83E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;2;89E;K;16;CPButtonTitleKeyD;K;6;CP$UIDd;3;137E;K;25;CPButtonAlternateTitleKeyD;K;6;CP$UIDd;1;0E;K;27;CPButtonAllowsMixedStateKeyD;K;6;CP$UIDd;2;92E;K;32;CPButtonImageDimsWhenDisabledKeyD;K;6;CP$UIDd;1;0E;K;24;CPButtonImagePositionKeyD;K;6;CP$UIDd;2;88E;K;28;CPButtonKeyEquivalentMaskKeyD;K;6;CP$UIDd;2;83E;E;D;K;6;$classD;K;6;CP$UIDd;2;19E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;138E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;2;42E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;2;82E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;1;0E;K;18;CPMenuItemStateKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;2;32E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;121E;E;D;K;6;$classD;K;6;CP$UIDd;2;19E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;139E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;2;42E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;2;82E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;1;0E;K;18;CPMenuItemStateKeyD;K;6;CP$UIDd;3;101E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;2;32E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;121E;E;S;26;Menu Item (CPGrooveBorder)S;27;Static Text (Border style:)S;29;Button Cell (Show headerview)S;12;File's OwnerS;31;Text Field Cell (Border style:)S;34;Bordered Scroll View (Custom View)S;17;Vertical ScrollerS;12;Content ViewS;13;Document ViewS;17;Menu (OtherViews)S;15;Window (Window)S;25;Menu Item (CPBezelBorder)S;33;Pop Up Button Cell (CPLineBorder)S;10;Color WellS;11;ApplicationS;19;Horizontal ScrollerS;14;App ControllerS;13;Pop Up ButtonS;27;Check Box (Show headerview)S;22;Menu Item (CPNoBorder)S;24;Menu Item (CPLineBorder)D;K;10;$classnameS;20;CPCibOutletConnectorK;8;$classesA;S;20;CPCibOutletConnectorS;14;CPCibConnectorS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;2;68E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;16E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;2;40E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;140E;E;D;K;6;$classD;K;6;CP$UIDd;2;68E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;40E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;2;24E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;141E;E;D;K;6;$classD;K;6;CP$UIDd;2;68E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;40E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;2;34E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;142E;E;D;K;10;$classnameS;21;CPCibControlConnectorK;8;$classesA;S;21;CPCibControlConnectorS;14;CPCibConnectorS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;2;72E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;45E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;2;40E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;143E;E;D;K;6;$classD;K;6;CP$UIDd;2;72E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;46E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;2;40E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;143E;E;D;K;6;$classD;K;6;CP$UIDd;2;72E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;35E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;2;40E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;143E;E;D;K;6;$classD;K;6;CP$UIDd;2;72E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;20E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;2;40E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;143E;E;D;K;6;$classD;K;6;CP$UIDd;2;72E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;44E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;2;40E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;144E;E;D;K;6;$classD;K;6;CP$UIDd;2;72E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;37E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;2;40E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;145E;E;S;13;CPApplicationD;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;2;34E;E;E;S;14;CPGrooveBorderS;17;_popUpItemAction:d;1;0S;21;{{17, 440}, {84, 17}}S;18;{{0, 0}, {84, 17}}d;2;12S;6;normald;1;2d;1;4S;13;Border style:d;4;3072F;S;22;{{20, 20}, {717, 399}}S;20;{{0, 0}, {717, 399}}D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;2;98E;D;K;6;CP$UIDd;2;26E;D;K;6;CP$UIDd;2;39E;E;E;d;2;18D;K;10;$classnameS;10;CPClipViewK;8;$classesA;S;10;CPClipViewS;6;CPViewS;11;CPResponderS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;2;97E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;2;24E;K;12;CPViewTagKeyD;K;6;CP$UIDd;2;83E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;146E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;111E;K;17;CPViewSubviewsKeyD;K;6;CP$UIDd;3;147E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;2;24E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;104E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;2;87E;K;24;CPScrollViewDocumentViewD;K;6;CP$UIDd;2;30E;E;d;2;10T;d;1;1S;22;{{701, 16}, {15, 382}}S;19;{{0, 0}, {15, 382}}d;1;8S;17;disabled+verticalf;18;0.9738219895287958S;27;_verticalScrollerDidScroll:f;18;0.9636362791061401S;20;{{0, 0}, {757, 547}}D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;2;24E;D;K;6;CP$UIDd;2;42E;D;K;6;CP$UIDd;2;22E;D;K;6;CP$UIDd;2;44E;D;K;6;CP$UIDd;2;37E;E;E;S;20;{{0, 0}, {700, 382}}S;12;DocumentViewS;10;OtherViewsD;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;2;45E;D;K;6;CP$UIDd;2;46E;D;K;6;CP$UIDd;2;35E;D;K;6;CP$UIDd;2;20E;E;E;S;28;{1.79769e+308, 1.79769e+308}S;8;CPWindowS;24;{{335, 128}, {757, 547}}d;1;7S;6;WindowS;13;CPBezelBorderd;7;1048576S;22;{{210, 464}, {44, 23}}S;18;{{0, 0}, {44, 23}}D;K;10;$classnameS;7;CPColorK;8;$classesA;S;7;CPColorS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;3;124E;K;20;CPColorComponentsKeyD;K;6;CP$UIDd;3;148E;E;S;19;{{1, 1}, {700, 15}}S;19;{{0, 0}, {700, 15}}S;8;disabledS;29;_horizontalScrollerDidScroll:f;18;0.5060241222381592S;13;AppControllerS;22;{{17, 461}, {168, 24}}S;19;{{0, 0}, {168, 24}}S;8;borderedS;22;{{18, 503}, {131, 18}}S;19;{{0, 0}, {131, 18}}S;15;Show headerviewS;10;CPNoBorderS;12;CPLineBorderS;8;delegateS;10;scrollViewS;6;windowS;17;changeBorderType:S;17;toggleHeaderView:S;18;changeBorderColor:S;21;{{1, 16}, {700, 382}}D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;2;30E;E;E;D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;2;83E;D;K;6;CP$UIDd;2;83E;D;K;6;CP$UIDd;2;83E;D;K;6;CP$UIDd;3;149E;E;E;f;3;0.2E;K;9;$archiverS;15;CPKeyedArchiverK;8;$versionS;6;100000E; \ No newline at end of file diff --git a/Tests/Manual/ScrollviewTheming/Resources/MainMenu.xib b/Tests/Manual/ScrollviewTheming/Resources/MainMenu.xib index 39c33a809..f9b6436d0 100644 --- a/Tests/Manual/ScrollviewTheming/Resources/MainMenu.xib +++ b/Tests/Manual/ScrollviewTheming/Resources/MainMenu.xib @@ -12,7 +12,7 @@ YES - + YES @@ -254,7 +254,7 @@ - 268 + 292 YES From f79edc7bfb59aed689d856adc1da367a64e57c63 Mon Sep 17 00:00:00 2001 From: Klaas Pieter Annema Date: Tue, 14 Sep 2010 11:12:29 +0200 Subject: [PATCH 5/8] fix scroller being offset 1 pixel when headerview had the same height as corner view --- AppKit/CPScrollView.j | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/AppKit/CPScrollView.j b/AppKit/CPScrollView.j index 2fb5ff510..9aad1b8fd 100644 --- a/AppKit/CPScrollView.j +++ b/AppKit/CPScrollView.j @@ -314,8 +314,10 @@ if (shouldShowVerticalScroller) { - var verticalScrollerY = MAX(_CGRectGetMaxY([self _cornerViewFrame]), headerClipViewHeight + 1.0), - verticalScrollerHeight = _CGRectGetMaxY(contentFrame) - verticalScrollerY; + var verticalScrollerY = + MAX(_CGRectGetMinY(contentFrame), MAX(_CGRectGetMaxY([self _cornerViewFrame]), _CGRectGetMaxY(headerClipViewFrame))); + + var verticalScrollerHeight = _CGRectGetMaxY(contentFrame) - verticalScrollerY; [_verticalScroller setFloatValue:(difference.height <= 0.0) ? 0.0 : scrollPoint.y / difference.height]; [_verticalScroller setKnobProportion:_CGRectGetHeight(contentFrame) / _CGRectGetHeight(documentFrame)]; From 32348148b83f6b892e9582137043899f6a214aa7 Mon Sep 17 00:00:00 2001 From: Klaas Pieter Annema Date: Tue, 14 Sep 2010 12:12:50 +0200 Subject: [PATCH 6/8] fixed typos in CPViewController documentation --- AppKit/CPViewController.j | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/AppKit/CPViewController.j b/AppKit/CPViewController.j index ab8c3a22e..9d31db0f0 100644 --- a/AppKit/CPViewController.j +++ b/AppKit/CPViewController.j @@ -111,10 +111,10 @@ var CPViewControllerCachedCibs; If you create your views manually, you must override this method and use it to create your view and assign it to the view property. The default implementation for programmatic views is to create a plain view. You can invoke super to utilize this view. - If you use Interface Builder to create your views and initialize the view controllerŃthat is, you initialize the view using the - initWithCibName:bundle: methodŃthen you must not override this method. The consequences risk shattering the space-time continuum. + If you use Interface Builder to create your views, you initialize the view using the + initWithCibName:bundle: method then you must not override this method. The consequences risk shattering the space-time continuum. - Note: The cib loading system is currently asynchronous. + Note: The cib loading system is currently synchronous. */ - (void)loadView { @@ -171,7 +171,7 @@ var CPViewControllerCachedCibs; /*! This method is called after the view controller has loaded its associated views into memory. This method is called regardless of whether the views were stored in a nib file or created programmatically in the loadView method. - This method is most commonly used to perform additional initialization steps on views that are loaded from nib files. + This method is most commonly used to perform additional initialization steps on views that are loaded from cib files. */ - (void)viewDidLoad { From 677cb4638f842e62b3eda2ac024fdc4150840226 Mon Sep 17 00:00:00 2001 From: Klaas Pieter Annema Date: Tue, 14 Sep 2010 12:58:47 +0200 Subject: [PATCH 7/8] fix bug where CPViewController viewDidLoad is called to early The bug was caused by connections (outlets) being defined in undefined order. Sometimes the view connection was decoded and connected before other connections, because setView: would automatically call viewDidLoad the first time a view was set viewDidLoad was called before the entire view was actually loaded. ViewDidLoad is now only called from setView: if the _view === nil and no view is currently being loaded. --- AppKit/CPViewController.j | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/AppKit/CPViewController.j b/AppKit/CPViewController.j index 9d31db0f0..b5c18de9f 100644 --- a/AppKit/CPViewController.j +++ b/AppKit/CPViewController.j @@ -47,7 +47,8 @@ var CPViewControllerCachedCibs; */ @implementation CPViewController : CPResponder { - CPView _view; + CPView _view @accessors(property=view); + BOOL _isLoading; id _representedObject @accessors(property=representedObject); CPString _title @accessors(property=title); @@ -99,6 +100,8 @@ var CPViewControllerCachedCibs; _cibName = aCibNameOrNil; _cibBundle = aCibBundleOrNil || [CPBundle mainBundle]; _cibExternalNameTable = anExternalNameTable || [CPDictionary dictionaryWithObject:self forKey:CPCibOwner]; + + _isLoading = NO; } return self; @@ -120,7 +123,7 @@ var CPViewControllerCachedCibs; { if (_view) return; - + // check if a cib is already cached for the current _cibName var cib = [CPViewControllerCachedCibs objectForKey:_cibName]; @@ -143,6 +146,8 @@ var CPViewControllerCachedCibs; { if (!_view) { + _isLoading = YES; + var cibOwner = [_cibExternalNameTable objectForKey:CPCibOwner]; if ([cibOwner respondsToSelector:@selector(viewControllerWillLoadCib:)]) @@ -162,6 +167,9 @@ var CPViewControllerCachedCibs; if ([cibOwner respondsToSelector:@selector(viewControllerDidLoadCib:)]) [cibOwner viewControllerDidLoadCib:self]; + + _isLoading = NO; + [self viewDidLoad]; } return _view; @@ -192,7 +200,7 @@ var CPViewControllerCachedCibs; _view = aView; // Make sure the viewDidLoad method is called if the view is set directly - if (viewWasLoaded) + if (!_isLoading && viewWasLoaded) [self viewDidLoad]; } From ac26827f32991abe3c07f96d5d4b81d8c5ce798c Mon Sep 17 00:00:00 2001 From: Klaas Pieter Annema Date: Tue, 14 Sep 2010 14:47:10 +0200 Subject: [PATCH 8/8] make CPTableHeaderView divider color theme-able --- AppKit/CPTableHeaderView.j | 6 +++--- AppKit/Themes/Aristo/ThemeDescriptors.j | 4 +++- 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/AppKit/CPTableHeaderView.j b/AppKit/CPTableHeaderView.j index c8a316a7a..540b3824d 100644 --- a/AppKit/CPTableHeaderView.j +++ b/AppKit/CPTableHeaderView.j @@ -173,8 +173,8 @@ var _CPTableColumnHeaderViewStringValueKey = @"_CPTableColumnHeaderViewStringVal + (id)themeAttributes { - return [CPDictionary dictionaryWithObjects:[[CPNull null]] - forKeys:[@"background-color"]]; + return [CPDictionary dictionaryWithObjects:[[CPNull null], [CPColor grayColor]] + forKeys:[@"background-color", @"divider-color"]]; } - (void)_init @@ -624,7 +624,7 @@ var _CPTableColumnHeaderViewStringValueKey = @"_CPTableColumnHeaderViewStringVal exposedRange = CPMakeRange(firstIndex, [exposedTableColumns lastIndex] - firstIndex + 1); CGContextSetLineWidth(context, 1); - CGContextSetStrokeColor(context, [_tableView gridColor]); + CGContextSetStrokeColor(context, [self currentValueForThemeAttribute:@"divider-color"]); [exposedColumnIndexes getIndexes:columnsArray maxCount:-1 inIndexRange:exposedRange]; diff --git a/AppKit/Themes/Aristo/ThemeDescriptors.j b/AppKit/Themes/Aristo/ThemeDescriptors.j index c0e471181..9e6ca110f 100755 --- a/AppKit/Themes/Aristo/ThemeDescriptors.j +++ b/AppKit/Themes/Aristo/ThemeDescriptors.j @@ -1224,9 +1224,11 @@ var themedButtonValues = nil, + (CPTableHeaderView)themedTableHeaderRow { var header = [[CPTableHeaderView alloc] initWithFrame:CGRectMake(0.0, 0.0, 100.0, 23.0)], - normal = PatternColor("tableview-headerview.png", 1.0, 23.0); + normal = PatternColor("tableview-headerview.png", 1.0, 23.0), + gridColor = [CPColor colorWithHexString:@"dce0e2"]; [header setValue:normal forThemeAttribute:@"background-color"]; + [header setValue:gridColor forThemeAttribute:@"divider-color"]; return header; }