mirror of
https://github.com/cappuccino/cappuccino.git
synced 2026-09-14 06:31:27 +00:00
Significant improvements to cib support and nib2cib.
Reviewed by rossco.
This commit is contained in:
+2
-2
@@ -34,12 +34,12 @@
|
||||
<dict>
|
||||
<key>Name</key>
|
||||
<string>Debug</string>
|
||||
<key>Flags</key>
|
||||
<string>-DDEBUG</string>
|
||||
<key>Settings</key>
|
||||
<dict>
|
||||
<key>PREPROCESS</key>
|
||||
<true/>
|
||||
<key>FLAGS</key>
|
||||
<string>-DDEBUG</string>
|
||||
</dict>
|
||||
</dict>
|
||||
<dict>
|
||||
|
||||
+2
-2
@@ -253,8 +253,8 @@ var CPControlBlackColor = [CPColor blackColor];
|
||||
|
||||
- (void)mouseUp:(CPEvent)anEvent
|
||||
{
|
||||
if (_sendActionOn & CPLeftMouseUpMask && CPRectContainsPoint([self bounds], [self convertPoint:[anEvent locationInWindow] fromView:nil]))
|
||||
[self sendAction:_action to:_target];
|
||||
if (_sendActionOn & CPLeftMouseUpMask && CPRectContainsPoint([self bounds], [self convertPoint:[anEvent locationInWindow] fromView:nil])){alert([_target description] + " : " + _action);
|
||||
[self sendAction:_action to:_target];}
|
||||
|
||||
[super mouseUp:anEvent];
|
||||
}
|
||||
|
||||
+5
-3
@@ -1684,13 +1684,14 @@ var CPViewAutoresizingMaskKey = @"CPViewAutoresizingMask",
|
||||
_DOMElement = DOMElementPrototype.cloneNode(false);
|
||||
#endif
|
||||
|
||||
// Also decode these "early".
|
||||
_frame = [aCoder decodeRectForKey:CPViewFrameKey];
|
||||
_bounds = [aCoder decodeRectForKey:CPViewBoundsKey];
|
||||
|
||||
self = [super initWithCoder:aCoder];
|
||||
|
||||
if (self)
|
||||
{
|
||||
_frame = [aCoder decodeRectForKey:CPViewFrameKey];
|
||||
_bounds = [aCoder decodeRectForKey:CPViewBoundsKey];
|
||||
|
||||
_window = [aCoder decodeObjectForKey:CPViewWindowKey];
|
||||
_subviews = [aCoder decodeObjectForKey:CPViewSubviewsKey];
|
||||
_superview = [aCoder decodeObjectForKey:CPViewSuperviewKey];
|
||||
@@ -1716,6 +1717,7 @@ var CPViewAutoresizingMaskKey = @"CPViewAutoresizingMask",
|
||||
for (; index < count; ++index)
|
||||
{
|
||||
CPDOMDisplayServerAppendChild(_DOMElement, _subviews[index]._DOMElement);
|
||||
//_subviews[index]._superview = self;
|
||||
}
|
||||
#endif
|
||||
_displayHash = [self hash];
|
||||
|
||||
+10
-3
@@ -269,7 +269,9 @@ var CPWindowSaveImage = nil,
|
||||
CPURL _representedURL;
|
||||
|
||||
// Bridge Support
|
||||
#if PLATFORM(DOM)
|
||||
DOMElement _DOMElement;
|
||||
#endif
|
||||
CPDOMWindowBridge _bridge;
|
||||
unsigned _autoresizingMask;
|
||||
|
||||
@@ -364,7 +366,8 @@ CPTexturedBackgroundWindowMask
|
||||
[self setContentView:[[CPView alloc] initWithFrame:CGRectMakeZero()]];
|
||||
|
||||
_firstResponder = self;
|
||||
|
||||
|
||||
#if PLATFORM(DOM)
|
||||
_DOMElement = document.createElement("div");
|
||||
|
||||
_DOMElement.style.position = "absolute";
|
||||
@@ -375,7 +378,8 @@ CPTexturedBackgroundWindowMask
|
||||
CPDOMDisplayServerSetStyleSize(_DOMElement, 1, 1);
|
||||
|
||||
CPDOMDisplayServerAppendChild(_DOMElement, _windowView._DOMElement);
|
||||
|
||||
#endif
|
||||
|
||||
[self setBridge:aBridge];
|
||||
|
||||
[self setNextResponder:CPApp];
|
||||
@@ -854,12 +858,15 @@ CPTexturedBackgroundWindowMask
|
||||
[_shadowView setBackgroundColor:_CPWindowShadowColor];
|
||||
[_shadowView setAutoresizingMask:CPViewWidthSizable | CPViewHeightSizable];
|
||||
|
||||
#if PLATFORM(DOM)
|
||||
CPDOMDisplayServerInsertBefore(_DOMElement, _shadowView._DOMElement, _windowView._DOMElement);
|
||||
#endif
|
||||
}
|
||||
else
|
||||
{
|
||||
#if PLATFORM(DOM)
|
||||
CPDOMDisplayServerRemoveChild(_DOMElement, _shadowView._DOMElement);
|
||||
|
||||
#endif
|
||||
_shadowView = nil;
|
||||
}
|
||||
}
|
||||
|
||||
+4
-13
@@ -25,8 +25,9 @@ import <Foundation/CPURLConnection.j>
|
||||
import <Foundation/CPURLRequest.j>
|
||||
|
||||
import "CPCustomView.j"
|
||||
import "_CPCibCustomObject.j"
|
||||
import "_CPCibObjectData.j"
|
||||
|
||||
import "_CPCibWindowTemplate.j"
|
||||
|
||||
CPCibOwner = @"CPCibOwner",
|
||||
CPCibTopLevelObjects = @"CPCibTopLevelObjects";
|
||||
@@ -56,20 +57,10 @@ var CPCibObjectDataKey = @"CPCibObjectDataKey";
|
||||
if (!objectData || ![objectData isKindOfClass:[_CPCibObjectData class]])
|
||||
return NO;
|
||||
|
||||
[objectData establishConnectionsWithExternalNameTable:anExternalNameTable];
|
||||
|
||||
var owner = [anExternalNameTable objectForKey:CPCibOwner],
|
||||
topLevelObjects = [anExternalNameTable objectForKey:CPCibTopLevelObjects];
|
||||
|
||||
var objects = unarchiver._objects,
|
||||
count = [objects count];
|
||||
|
||||
// The order in which objects receive the awakeFromCib message is not guaranteed.
|
||||
while (count--)
|
||||
{
|
||||
var object = objects[count];
|
||||
|
||||
if ([object isMemberOfClass:[CPView class]])
|
||||
return object;
|
||||
}
|
||||
/*
|
||||
// [objectData establishConnectionsWithOwner:owner topLevelObjects:topLevelObjects];
|
||||
// [objectData cibInstantiateWithOwner:owner topLevelObjects:topLevelObjects];
|
||||
|
||||
+11
-10
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* CPCustomView.j
|
||||
* _CPCibCustomView.j
|
||||
* AppKit
|
||||
*
|
||||
* Created by Francisco Tolmasky.
|
||||
@@ -36,33 +36,35 @@ var CPViewAutoresizingMaskKey = @"CPViewAutoresizingMask",
|
||||
|
||||
/* @ignore */
|
||||
|
||||
@implementation CPCustomView : CPView
|
||||
@implementation _CPCibCustomView : CPView
|
||||
{
|
||||
CPString _className;
|
||||
}
|
||||
|
||||
@end
|
||||
|
||||
var CPCustomViewClassNameKey = @"CPCustomViewClassNameKey";
|
||||
var _CPCibCustomViewClassNameKey = @"_CPCibCustomViewClassNameKey";
|
||||
|
||||
@implementation CPCustomView (CPCoding)
|
||||
@implementation _CPCibCustomView (CPCoding)
|
||||
|
||||
- (id)initWithCoder:(CPCoder)aCoder
|
||||
{
|
||||
_className = [aCoder decodeObjectForKey:CPCustomViewClassNameKey];
|
||||
_className = [aCoder decodeObjectForKey:_CPCibCustomViewClassNameKey];
|
||||
|
||||
var theClass = CPClassFromString(_className);
|
||||
|
||||
// If we don't have this class, just use CPView.
|
||||
// FIXME: Should we instead throw an exception?
|
||||
if (!theClass)
|
||||
{
|
||||
CPLog("Unknown class \"" + _className + "\" in cib file, using CPView instead.");
|
||||
|
||||
theClass = [CPView class];
|
||||
}
|
||||
|
||||
var frame = [aCoder decodeRectForKey:CPViewFrameKey];
|
||||
|
||||
// If this is just a "CPView", don't bother with any funny business, just go ahead and create it with initWithCoder:
|
||||
if (theClass == [CPView class])
|
||||
self = [[CPView alloc] initWithFrame:frame];
|
||||
self = [[CPView alloc] initWithFrame:frame];
|
||||
|
||||
if (self)
|
||||
{
|
||||
@@ -75,9 +77,8 @@ var CPCustomViewClassNameKey = @"CPCustomViewClassNameKey";
|
||||
|
||||
for (; index < count; ++index)
|
||||
{
|
||||
// This is a bogus superview "CPCustomView".
|
||||
// This is a bogus superview "_CPCibCustomView".
|
||||
subviews[index]._superview = nil;
|
||||
|
||||
[self addSubview:subviews[index]];
|
||||
}
|
||||
|
||||
|
||||
@@ -0,0 +1,112 @@
|
||||
|
||||
import <Foundation/CPObject.j>
|
||||
import <Foundation/CPKeyValueCoding.j>
|
||||
|
||||
|
||||
var _CPCibConnectorSourceKey = @"_CPCibConnectorSourceKey",
|
||||
_CPCibConnectorDestinationKey = @"_CPCibConnectorDestinationKey",
|
||||
_CPCibConnectorLabelKey = @"_CPCibConnectorLabelKey";
|
||||
|
||||
@implementation _CPCibConnector : CPObject
|
||||
{
|
||||
id _source;
|
||||
id _destination;
|
||||
CPString _label;
|
||||
}
|
||||
|
||||
- (void)replaceObject:(id)anObject withObject:(id)anotherObject
|
||||
{
|
||||
if (_source == anObject)
|
||||
_source = anotherObject;
|
||||
|
||||
else if (_destination == anObject)
|
||||
_destination = anotherObject;
|
||||
}
|
||||
|
||||
@end
|
||||
|
||||
@implementation _CPCibConnector (CPCoding)
|
||||
|
||||
- (id)initWithCoder:(CPCoder)aCoder
|
||||
{
|
||||
self = [super init];
|
||||
|
||||
if (self)
|
||||
{
|
||||
_source = [aCoder decodeObjectForKey:_CPCibConnectorSourceKey];
|
||||
_destination = [aCoder decodeObjectForKey:_CPCibConnectorDestinationKey];
|
||||
_label = [aCoder decodeObjectForKey:_CPCibConnectorLabelKey];
|
||||
|
||||
#if DEBUG
|
||||
CPLog("Connection from " + [_source description] + " to " + [_destination description] + " and label " + _label + " decoded.");
|
||||
#endif
|
||||
}
|
||||
|
||||
return self;
|
||||
}
|
||||
|
||||
- (void)encodeWithCoder:(CPCoder)aCoder
|
||||
{
|
||||
[aCoder encodeObject:_source forKey:_CPCibConnectorSourceKey];
|
||||
[aCoder encodeObject:_destination forKey:_CPCibConnectorDestinationKey];
|
||||
[aCoder encodeObject:_label forKey:_CPCibConnectorLabelKey];
|
||||
}
|
||||
|
||||
@end
|
||||
|
||||
@implementation _CPCibControlConnector : _CPCibConnector
|
||||
{
|
||||
}
|
||||
|
||||
- (void)establishConnection
|
||||
{
|
||||
#if DEBUG
|
||||
CPLog('[' + [_source description] + " setTarget: " + [_destination description] + ']');
|
||||
CPLog('[' + [_source description] + " setAction: " + _label + ']');
|
||||
#endif
|
||||
|
||||
var selectorName = _label;
|
||||
|
||||
if (![selectorName hasSuffix:@":"])
|
||||
selectorName += ':';
|
||||
|
||||
var selector = CPSelectorFromString(selectorName);
|
||||
|
||||
if (!selector)
|
||||
[CPException
|
||||
raise:CPInvalidArgumentException
|
||||
reason:@"-[" + [self className] + ' ' + _cmd + @"] selector " + selectorName + @" does not exist."];
|
||||
|
||||
if ([_source respondsToSelector:@selector(setAction:)])
|
||||
objj_msgSend(_source, @selector(setAction:), selector);
|
||||
|
||||
else
|
||||
[CPException
|
||||
raise:CPInvalidArgumentException
|
||||
reason:@"-[" + [self className] + ' ' + _cmd + @"] " + [_source description] + " does not respond to setAction:"];
|
||||
|
||||
if ([_source respondsToSelector:@selector(setTarget:)])
|
||||
objj_msgSend(_source, @selector(setTarget:), _destination);
|
||||
|
||||
else
|
||||
[CPException
|
||||
raise:CPInvalidArgumentException
|
||||
reason:@"-[" + [self className] + ' ' + _cmd + @"] " + [_source description] + " does not respond to setTarget:"];
|
||||
}
|
||||
|
||||
@end
|
||||
|
||||
@implementation _CPCibOutletConnector : _CPCibConnector
|
||||
{
|
||||
}
|
||||
|
||||
- (void)establishConnection
|
||||
{
|
||||
#if DEBUG
|
||||
CPLog([_source description] + " setValue: " + [_destination description] + " forKey: " + _label);
|
||||
#endif
|
||||
|
||||
[_source setValue:_destination forKey:_label];
|
||||
}
|
||||
|
||||
@end
|
||||
@@ -0,0 +1,41 @@
|
||||
|
||||
import <Foundation/CPObject.j>
|
||||
|
||||
|
||||
var _CPCibCustomObjectClassName = @"_CPCibCustomObjectClassName";
|
||||
|
||||
@implementation _CPCibCustomObject : CPObject
|
||||
{
|
||||
CPString _className;
|
||||
}
|
||||
|
||||
@end
|
||||
|
||||
@implementation _CPCibCustomObject (CPCoding)
|
||||
|
||||
- (id)initWithCoder:(CPCoder)aCoder
|
||||
{
|
||||
self = [super init];
|
||||
|
||||
if (self)
|
||||
_className = [aCoder decodeObjectForKey:_CPCibCustomObjectClassName];
|
||||
|
||||
return self;
|
||||
}
|
||||
|
||||
- (void)encodeWithCoder:(CPCoder)aCoder
|
||||
{
|
||||
[aCoder encodeObject:_className forKey:_CPCibCustomObjectClassName];
|
||||
}
|
||||
|
||||
- (id)awakeAfterUsingCoder:(CPCoder)aCoder
|
||||
{
|
||||
var theClass = CPClassFromString(_className);
|
||||
|
||||
if (!theClass)
|
||||
CPLog("Unknown class \"" + _className + "\" in cib file");
|
||||
|
||||
return [[theClass alloc] init];
|
||||
}
|
||||
|
||||
@end
|
||||
@@ -24,36 +24,39 @@ import <Foundation/CPArray.j>
|
||||
import <Foundation/CPObject.j>
|
||||
import <Foundation/CPString.j>
|
||||
|
||||
import "CPCib.j"
|
||||
import "_CPCibConnector.j"
|
||||
|
||||
|
||||
@implementation _CPCibObjectData : CPObject
|
||||
{
|
||||
CPArray _namesKeys;
|
||||
CPArray _namesValues;
|
||||
CPArray _namesKeys;
|
||||
CPArray _namesValues;
|
||||
|
||||
CPArray _accessibilityConnectors;
|
||||
CPArray _accessibilityOidsKeys;
|
||||
CPArray _accessibilityOidsValues;
|
||||
CPArray _accessibilityConnectors;
|
||||
CPArray _accessibilityOidsKeys;
|
||||
CPArray _accessibilityOidsValues;
|
||||
|
||||
CPArray _classesKeys;
|
||||
CPArray _classesValues;
|
||||
CPArray _classesKeys;
|
||||
CPArray _classesValues;
|
||||
|
||||
CPArray _connections;
|
||||
CPArray _connections;
|
||||
|
||||
id _fontManager;
|
||||
id _fontManager;
|
||||
|
||||
CPString _framework;
|
||||
CPString _framework;
|
||||
|
||||
int _nextOid;
|
||||
int _nextOid;
|
||||
|
||||
CPArray _objectsKeys;
|
||||
CPArray _objectsValues;
|
||||
CPArray _objectsKeys;
|
||||
CPArray _objectsValues;
|
||||
|
||||
CPArray _oidKeys;
|
||||
CPArray _oidValues;
|
||||
CPArray _oidKeys;
|
||||
CPArray _oidValues;
|
||||
|
||||
CPCustomObject _rootObject;
|
||||
_CPCibCustomObject _fileOwner;
|
||||
|
||||
CPSet _visibleWindows;
|
||||
CPSet _visibleWindows;
|
||||
}
|
||||
/*
|
||||
- (CPArray)topLevelObjects
|
||||
@@ -103,7 +106,7 @@ var _CPCibObjectDataNamesKeysKey = @"_CPCibObjectDataNamesKeysKey
|
||||
_CPCibObjectDataOidKeysKey = @"_CPCibObjectDataOidKeysKey",
|
||||
_CPCibObjectDataOidValuesKey = @"_CPCibObjectDataOidValuesKey",
|
||||
|
||||
_CPCibObjectDataRootObjectKey = @"_CPCibObjectDataRootObjectKey",
|
||||
_CPCibObjectDataFileOwnerKey = @"_CPCibObjectDataFileOwnerKey",
|
||||
_CPCibObjectDataVisibleWindowsKey = @"_CPCibObjectDataVisibleWindowsKey";
|
||||
|
||||
@implementation _CPCibObjectData (CPCoding)
|
||||
@@ -125,7 +128,6 @@ var _CPCibObjectDataNamesKeysKey = @"_CPCibObjectDataNamesKeysKey
|
||||
_classesValues = [aCoder decodeObjectForKey:_CPCibObjectDataClassesValuesKey];
|
||||
|
||||
_connections = [aCoder decodeObjectForKey:_CPCibObjectDataConnectionsKey];
|
||||
|
||||
//id _fontManager;
|
||||
|
||||
_framework = [aCoder decodeObjectForKey:_CPCibObjectDataFrameworkKey];
|
||||
@@ -138,7 +140,7 @@ var _CPCibObjectDataNamesKeysKey = @"_CPCibObjectDataNamesKeysKey
|
||||
_oidKeys = [aCoder decodeObjectForKey:_CPCibObjectDataOidKeysKey];
|
||||
_oidValues = [aCoder decodeObjectForKey:_CPCibObjectDataOidValuesKey];
|
||||
|
||||
_rootObject = [aCoder decodeObjectForKey:_CPCibObjectDataRootObjectKey];
|
||||
_fileOwner = [aCoder decodeObjectForKey:_CPCibObjectDataFileOwnerKey];
|
||||
|
||||
// CPSet _visibleWindows;
|
||||
}
|
||||
@@ -172,10 +174,25 @@ var _CPCibObjectDataNamesKeysKey = @"_CPCibObjectDataNamesKeysKey
|
||||
[aCoder encodeObject:_oidKeys forKey:_CPCibObjectDataOidKeysKey];
|
||||
[aCoder encodeObject:_oidValues forKey:_CPCibObjectDataOidValuesKey];
|
||||
|
||||
[aCoder encodeObject:_rootObject forKey:_CPCibObjectDataRootObjectKey];
|
||||
[aCoder encodeObject:_fileOwner forKey:_CPCibObjectDataFileOwnerKey];
|
||||
// CPCustomObject _fileOwner;
|
||||
|
||||
// CPSet _visibleWindows;
|
||||
}
|
||||
|
||||
- (void)establishConnectionsWithExternalNameTable:(CPDictionary)anExternalNameTable
|
||||
{
|
||||
var index = 0,
|
||||
count = _connections.length,
|
||||
cibOwner = [anExternalNameTable objectForKey:CPCibOwner];
|
||||
|
||||
for (; index < count; ++index)
|
||||
{
|
||||
var connection = _connections[index];
|
||||
|
||||
[connection replaceObject:_fileOwner withObject:cibOwner];
|
||||
[connection establishConnection];
|
||||
}
|
||||
}
|
||||
|
||||
@end
|
||||
|
||||
@@ -0,0 +1,97 @@
|
||||
|
||||
import <Foundation/CPObject.j>
|
||||
|
||||
|
||||
var _CPCibWindowTemplateMinSizeKey = @"_CPCibWindowTemplateMinSizeKey",
|
||||
_CPCibWindowTemplateMaxSizeKey = @"_CPCibWindowTemplateMaxSizeKey",
|
||||
|
||||
_CPCibWindowTemplateViewClassKey = @"_CPCibWindowTemplateWindowClassKey",
|
||||
|
||||
_CPCibWindowTemplateWindowRectKey = @"_CPCibWindowTemplateWindowRectKey",
|
||||
_CPCibWindowTemplateWindowStyleMaskKey = @"_CPCibWindowTempatStyleMaskKey",
|
||||
_CPCibWindowTemplateWindowTitleKey = @"_CPCibWindowTemplateWindowTitleKey",
|
||||
_CPCibWindowTemplateWindowViewKey = @"_CPCibWindowTemplateWindowViewKey";
|
||||
|
||||
@implementation _CPCibWindowTemplate : CPObject
|
||||
{
|
||||
CGSize _minSize;
|
||||
CGSize _maxSize;
|
||||
//CGSize _screenRect;
|
||||
|
||||
CPString _viewClass;
|
||||
//unsigned _wtFlags;
|
||||
CPString _windowClass;
|
||||
CGRect _windowRect;
|
||||
unsigned _windowStyleMask;
|
||||
|
||||
CPString _windowTitle;
|
||||
CPView _windowView;
|
||||
}
|
||||
|
||||
- (id)initWithCoder:(CPCoder)aCoder
|
||||
{
|
||||
self = [super init];
|
||||
|
||||
if (self)
|
||||
{
|
||||
_minSize = [aCoder decodeSizeForKey:_CPCibWindowTemplateMinSizeKey];
|
||||
_maxSize = [aCoder decodeSizeForKey:_CPCibWindowTemplateMaxSizeKey];
|
||||
|
||||
_viewClass = [aCoder decodeObjectForKey:_CPCibWindowTemplateViewClassKey];
|
||||
|
||||
_windowClass = [aCoder decodeObjectForKey:_CPCibWindowTemplateViewClassKey];
|
||||
_windowRect = [aCoder decodeRectForKey:_CPCibWindowTemplateWindowRectKey];
|
||||
_windowStyleMask = [aCoder decodeIntForKey:_CPCibWindowTemplateWindowStyleMaskKey];
|
||||
|
||||
_windowTitle = [aCoder decodeObjectForKey:_CPCibWindowTemplateWindowTitleKey];
|
||||
_windowView = [aCoder decodeObjectForKey:_CPCibWindowTemplateWindowViewKey];
|
||||
}
|
||||
|
||||
return self;
|
||||
}
|
||||
|
||||
- (void)encodeWithCoder:(CPCoder)aCoder
|
||||
{
|
||||
[aCoder encodeSize:_minSize forKey:_CPCibWindowTemplateMinSizeKey];
|
||||
[aCoder encodeSize:_maxSize forKey:_CPCibWindowTemplateMaxSizeKey];
|
||||
|
||||
[aCoder encodeObject:_viewClass forKey:_CPCibWindowTemplateViewClassKey];
|
||||
|
||||
[aCoder encodeObject:_windowClass forKey:_CPCibWindowTemplateViewClassKey];
|
||||
[aCoder encodeRect:_windowRect forKey:_CPCibWindowTemplateWindowRectKey];
|
||||
[aCoder encodeInt:_windowStyleMask forKey:_CPCibWindowTemplateWindowStyleMaskKey];
|
||||
|
||||
[aCoder encodeObject:_windowTitle forKey:_CPCibWindowTemplateWindowTitleKey];
|
||||
[aCoder encodeObject:_windowView forKey:_CPCibWindowTemplateWindowViewKey];
|
||||
}
|
||||
|
||||
- (id)awakeAfterUsingCoder:(CPCoder)aCoder
|
||||
{
|
||||
var windowClass = CPClassFromString(_windowClass);
|
||||
|
||||
/* if (!windowClass)
|
||||
[NSException raise:NSInvalidArgumentException format:@"Unable to locate NSWindow class %@, using NSWindow",_windowClass];
|
||||
class=[NSWindow class];*/
|
||||
|
||||
var theWindow = [[windowClass alloc] initWithContentRect:_windowRect styleMask:CPHUDBackgroundWindowMask | CPClosableWindowMask];//styleMask:_windowStyleMask];
|
||||
// alert(CPStringFromRect(_windowRect));
|
||||
// alert(CPStringFromSize(_minSize));
|
||||
// alert(CPStringFromSize(_maxSize));
|
||||
//[theWindow setMinSize:_minSize];
|
||||
//[theWindow setMaxSize:_maxSize];
|
||||
[theWindow setLevel:CPFloatingWindowLevel];
|
||||
|
||||
//[result setHidesOnDeactivate:(_wtFlags&0x80000000)?YES:NO];
|
||||
[theWindow setTitle:_windowTitle];
|
||||
|
||||
// FIXME: we can't autoresize yet...
|
||||
[_windowView setAutoresizesSubviews:NO];
|
||||
|
||||
[theWindow setContentView:_windowView];
|
||||
|
||||
[_windowView setAutoresizesSubviews:YES];
|
||||
|
||||
return theWindow;
|
||||
}
|
||||
|
||||
@end
|
||||
+160
-38
@@ -22,7 +22,15 @@
|
||||
|
||||
import "CPObject.j"
|
||||
|
||||
@implementation CPObject(CPKeyValueCoding)
|
||||
|
||||
var CPObjectAccessorsForClass = nil,
|
||||
CPObjectModifiersForClass = nil;
|
||||
|
||||
CPUndefinedKeyException = @"CPUndefinedKeyException";
|
||||
CPTargetObjectUserInfoKey = @"CPTargetObjectUserInfoKey";
|
||||
CPUnknownUserInfoKey = @"CPUnknownUserInfoKey";
|
||||
|
||||
@implementation CPObject (CPKeyValueCoding)
|
||||
|
||||
+ (BOOL)accessInstanceVariablesDirectly
|
||||
{
|
||||
@@ -32,14 +40,42 @@ import "CPObject.j"
|
||||
/* @ignore */
|
||||
+ (SEL)_accessorForKey:(CPString)aKey
|
||||
{
|
||||
var capitalizedKey = aKey.charAt(0).toUpperCase() + aKey.substr(1),
|
||||
selector = CPSelectorFromString("get" + capitalizedKey);
|
||||
if (!CPObjectAccessorsForClass)
|
||||
CPObjectAccessorsForClass = [CPDictionary dictionary];
|
||||
|
||||
if ([self instancesRespondToSelector:selector] ||
|
||||
var hash = [isa hash],
|
||||
selector = nil,
|
||||
accessors = [CPObjectAccessorsForClass objectForKey:hash];
|
||||
|
||||
if (accessors)
|
||||
{
|
||||
selector = [accessors objectForKey:aKey];
|
||||
|
||||
if (selector)
|
||||
return selector == [CPNull null] ? nil : selector;
|
||||
}
|
||||
else
|
||||
{
|
||||
accessors = [CPDictionary dictionary];
|
||||
|
||||
[CPObjectAccessorsForClass setObject:accessors forKey:hash];
|
||||
}
|
||||
|
||||
var capitalizedKey = aKey.charAt(0).toUpperCase() + aKey.substr(1);
|
||||
|
||||
if ([self instancesRespondToSelector:selector = CPSelectorFromString("get" + capitalizedKey)] ||
|
||||
[self instancesRespondToSelector:selector = CPSelectorFromString(aKey)] ||
|
||||
[self instancesRespondToSelector:selector = CPSelectorFromString("_"+aKey)] ||
|
||||
[self instancesRespondToSelector:selector = CPSelectorFromString("is" + capitalizedKey)])
|
||||
[self instancesRespondToSelector:selector = CPSelectorFromString("is" + capitalizedKey)] ||
|
||||
[self instancesRespondToSelector:selector = CPSelectorFromString("_get" + capitalizedKey)] ||
|
||||
[self instancesRespondToSelector:selector = CPSelectorFromString("_" + aKey)] ||
|
||||
[self instancesRespondToSelector:selector = CPSelectorFromString("_is" + capitalizedKey)])
|
||||
{
|
||||
[accessors setObject:selector forKey:aKey];
|
||||
|
||||
return selector;
|
||||
}
|
||||
|
||||
[accessors setObject:[CPNull null] forKey:aKey];
|
||||
|
||||
return nil;
|
||||
}
|
||||
@@ -47,22 +83,68 @@ import "CPObject.j"
|
||||
/* @ignore */
|
||||
+ (SEL)_modifierForKey:(CPString)aKey
|
||||
{
|
||||
var selector = CPSelectorFromString("set" + aKey.charAt(0).toUpperCase() + aKey.substr(1) + ':');
|
||||
if (!CPObjectModifiersForClass)
|
||||
CPObjectModifiersForClass = [CPDictionary dictionary];
|
||||
|
||||
var hash = [isa hash],
|
||||
selector = nil,
|
||||
modifiers = [CPObjectModifiersForClass objectForKey:hash];
|
||||
|
||||
if (modifiers)
|
||||
{
|
||||
selector = [modifiers objectForKey:aKey];
|
||||
|
||||
if (selector)
|
||||
return selector == [CPNull null] ? nil : selector;
|
||||
}
|
||||
else
|
||||
{
|
||||
modifiers = [CPDictionary dictionary];
|
||||
|
||||
[CPObjectModifiersForClass setObject:modifiers forKey:hash];
|
||||
}
|
||||
|
||||
if (selector)
|
||||
return selector == [CPNull null] ? nil : selector;
|
||||
|
||||
if ([self instancesRespondToSelector:selector])
|
||||
var capitalizedKey = aKey.charAt(0).toUpperCase() + aKey.substr(1) + ':';
|
||||
|
||||
if ([self instancesRespondToSelector:selector = CPSelectorFromString("set" + capitalizedKey)] ||
|
||||
[self instancesRespondToSelector:selector = CPSelectorFromString("_set" + capitalizedKey)])
|
||||
{
|
||||
[modifiers setObject:selector forKey:aKey];
|
||||
|
||||
return selector;
|
||||
|
||||
}
|
||||
|
||||
[modifiers setObject:[CPNull null] forKey:aKey];
|
||||
|
||||
return nil;
|
||||
}
|
||||
|
||||
/* @ignore */
|
||||
- (CPString)_ivarForKey:(CPString)aKey
|
||||
{
|
||||
var ivar,
|
||||
isKey = "is" + aKey.charAt(0).toUpperCase() + aKey.substr(1);
|
||||
var ivar = '_' + aKey;
|
||||
|
||||
if (typeof self[ivar] != "undefined")
|
||||
return ivar;
|
||||
|
||||
if (self[ivar = "_" + aKey] != undefined || self[ivar = "_" + isKey] != undefined ||
|
||||
self[ivar = aKey] != undefined || self[ivar = isKey] != undefined) ;
|
||||
var isKey = "is" + aKey.charAt(0).toUpperCase() + aKey.substr(1);
|
||||
|
||||
ivar = '_' + isKey;
|
||||
|
||||
if (typeof self[ivar] != "undefined")
|
||||
return ivar;
|
||||
|
||||
ivar = aKey;
|
||||
|
||||
if (typeof self[ivar] != "undefined")
|
||||
return ivar;
|
||||
|
||||
ivar = isKey;
|
||||
|
||||
if (typeof self[ivar] != "undefined")
|
||||
return ivar;
|
||||
|
||||
return nil;
|
||||
@@ -70,35 +152,62 @@ import "CPObject.j"
|
||||
|
||||
- (id)valueForKey:(CPString)aKey
|
||||
{
|
||||
var ivar,
|
||||
theClass = [self class],
|
||||
selector = [theClass _accessorForKey:aKey]
|
||||
var selector = [isa _accessorForKey:aKey];
|
||||
|
||||
if (selector)
|
||||
return [self performSelector:selector];
|
||||
else if([theClass accessInstanceVariablesDirectly] && (ivar = [self _ivarForKey:aKey]))
|
||||
return self[ivar];
|
||||
else
|
||||
return [self valueForUndefinedKey:aKey];
|
||||
return objj_msgSend(self, selector);
|
||||
|
||||
if([isa accessInstanceVariablesDirectly])
|
||||
{
|
||||
var ivar = [self _ivarForKey:aKey];
|
||||
|
||||
if (ivar)
|
||||
return self[ivar];
|
||||
}
|
||||
|
||||
return [self valueForUndefinedKey:aKey];
|
||||
}
|
||||
|
||||
- (id)valueForKeyPath:(CPString)aKeyPath
|
||||
{
|
||||
var i = 0,
|
||||
keys = aKeyPath.split("."),
|
||||
var keys = aKeyPath.split("."),
|
||||
|
||||
index = 0,
|
||||
count = keys.length,
|
||||
|
||||
value = self;
|
||||
|
||||
for(; i<count; ++i)
|
||||
value = [value valueForKey:keys[i]];
|
||||
for(; index < count; ++index)
|
||||
value = [value valueForKey:keys[index]];
|
||||
|
||||
return value;
|
||||
}
|
||||
|
||||
- (CPDictionary)dictionaryWithValuesForKeys:(CPArray)keys
|
||||
{
|
||||
var index = 0,
|
||||
count = keys.length,
|
||||
dictionary = [CPDictionary dictionary];
|
||||
|
||||
for (; index < count; ++index)
|
||||
{
|
||||
var key = keys[index],
|
||||
value = [self valueForKey:key];
|
||||
|
||||
if (value === nil)
|
||||
[dictionary setObject:[CPNull null] forKey:key];
|
||||
else
|
||||
[dictionary setObject:value forKey:key];
|
||||
}
|
||||
|
||||
return dictionary;
|
||||
}
|
||||
|
||||
- (id)valueForUndefinedKey:(CPString)aKey
|
||||
{
|
||||
alert("IMPLEMENT EXCEPTIONS, also, valueForKey died.");
|
||||
// CPException.raise(CPUndefinedKeyException, "[<"+this.classObject().name()+" "+this+"> valueForKey()]: this class is not key value coding-compliant for the key "+aKey+".]");
|
||||
[[CPException exceptionWithName:CPUndefinedKeyException
|
||||
reason:[self description] + " is not key value coding-compliant for the key " + aKey
|
||||
userInfo:[CPDictionary dictionaryWithObjects:[self, aKey] forKeys:[CPTargetObjectUserInfoKey, CPUnknownUserInfoKey]]] raise];
|
||||
}
|
||||
|
||||
- (void)setValue:(id)aValue forKeyPath:(CPString)aKeyPath
|
||||
@@ -118,22 +227,35 @@ import "CPObject.j"
|
||||
|
||||
- (void)setValue:(id)aValue forKey:(CPString)aKey
|
||||
{
|
||||
var ivar,
|
||||
theClass = [self class],
|
||||
selector = [theClass _modifierForKey:aKey];
|
||||
var selector = [isa _modifierForKey:aKey];
|
||||
|
||||
if (selector)
|
||||
[self performSelector:selector withObject:aValue];
|
||||
else if([theClass accessInstanceVariablesDirectly] && (ivar = [self _ivarForKey:aKey]))
|
||||
self[ivar] = aValue;
|
||||
else
|
||||
[self setValue:aValue forUndefinedKey:aKey];
|
||||
return objj_msgSend(self, selector, aValue);
|
||||
|
||||
if([isa accessInstanceVariablesDirectly])
|
||||
{
|
||||
var ivar = [self _ivarForKey:aKey];
|
||||
|
||||
if (ivar)
|
||||
{
|
||||
[self willChangeValueForKey:aKey];
|
||||
|
||||
self[ivar] = aValue;
|
||||
|
||||
[self didChangeValueForKey:aKey];
|
||||
}
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
[self setValue:aValue forUndefinedKey:aKey];
|
||||
}
|
||||
|
||||
- (void)setValue:(id)aValue forUndefinedKey:(CPString)aKey
|
||||
{
|
||||
alert("IMPLEMENT EXCEPTIONS, also, setValueForKey died.");
|
||||
// CPException.raise(CPUndefinedKeyException, "[<"+this.className()+" "+this+"> setValueForKey()]: this class is not key value coding-compliant for the key "+aKey+".]");
|
||||
[[CPException exceptionWithName:CPUndefinedKeyException
|
||||
reason:[self description] + " is not key value coding-compliant for the key " + aKey
|
||||
userInfo:[CPDictionary dictionaryWithObjects:[self, aKey] forKeys:[CPTargetObjectUserInfoKey, CPUnknownUserInfoKey]]] raise];
|
||||
}
|
||||
|
||||
@end
|
||||
@end
|
||||
|
||||
@@ -0,0 +1,39 @@
|
||||
/*
|
||||
* CPKeyValueCoding.j
|
||||
* Foundation
|
||||
*
|
||||
* Created by Francisco Tolmasky.
|
||||
* Copyright 2008, 280 North, Inc.
|
||||
*
|
||||
* This library is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU Lesser General Public
|
||||
* License as published by the Free Software Foundation; either
|
||||
* version 2.1 of the License, or (at your option) any later version.
|
||||
*
|
||||
* This library is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* Lesser General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public
|
||||
* License along with this library; if not, write to the Free Software
|
||||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
*/
|
||||
|
||||
import "CPObject.j"
|
||||
|
||||
|
||||
@implementation CPObject (KeyValueObserving)
|
||||
|
||||
- (void)willChangeValueForKey:(CPString)aKey
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
|
||||
- (void)didChangeValueForKey:(CPString)aKey
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
@end
|
||||
@@ -33,6 +33,7 @@ import "CPJSONPConnection.j"
|
||||
import "CPKeyedArchiver.j"
|
||||
import "CPKeyedUnarchiver.j"
|
||||
import "CPKeyValueCoding.j"
|
||||
import "CPKeyValueObserving.j"
|
||||
import "CPLog.j"
|
||||
import "CPNotification.j"
|
||||
import "CPNotificationCenter.j"
|
||||
|
||||
@@ -5,21 +5,25 @@ import <AppKit/CPCib.j>
|
||||
|
||||
@implementation AppController : CPObject
|
||||
{
|
||||
CPWindow _window;
|
||||
CPWindow _secondWindow;
|
||||
CPView _view;
|
||||
}
|
||||
|
||||
- (void)applicationDidFinishLaunching:(CPNotification)aNotification
|
||||
{
|
||||
var cib = [[CPCib alloc] initWithContentsOfURL:@"MainMenu.cib"],
|
||||
x = [cib instantiateCibWithExternalNameTable:nil];
|
||||
|
||||
[x setBackgroundColor:[CPColor blueColor]];
|
||||
|
||||
var theWindow = [[CPWindow alloc] initWithContentRect:CGRectMakeZero() styleMask:CPBorderlessBridgeWindowMask],
|
||||
theWindow = [[CPWindow alloc] initWithContentRect:CGRectMakeZero() styleMask:CPBorderlessBridgeWindowMask],
|
||||
contentView = [theWindow contentView];
|
||||
|
||||
[contentView addSubview:x];
|
||||
|
||||
|
||||
[cib instantiateCibWithExternalNameTable:[CPDictionary dictionaryWithObject:self forKey:CPCibOwner]];
|
||||
|
||||
[_view setBackgroundColor:[CPColor blueColor]];
|
||||
|
||||
[contentView addSubview:_view];
|
||||
[theWindow orderFront:self];
|
||||
|
||||
[_secondWindow orderFront:self];
|
||||
}
|
||||
|
||||
@end
|
||||
Generated
+29
@@ -2,6 +2,35 @@
|
||||
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
||||
<plist version="1.0">
|
||||
<dict>
|
||||
<key>IBClasses</key>
|
||||
<array>
|
||||
<dict>
|
||||
<key>CLASS</key>
|
||||
<string>NSObject</string>
|
||||
<key>LANGUAGE</key>
|
||||
<string>ObjC</string>
|
||||
<key>OUTLETS</key>
|
||||
<dict>
|
||||
<key>window</key>
|
||||
<string>id</string>
|
||||
</dict>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>CLASS</key>
|
||||
<string>AppController</string>
|
||||
<key>LANGUAGE</key>
|
||||
<string>ObjC</string>
|
||||
<key>OUTLETS</key>
|
||||
<dict>
|
||||
<key>secondWindow</key>
|
||||
<string>id</string>
|
||||
<key>view</key>
|
||||
<string>id</string>
|
||||
<key>window</key>
|
||||
<string>id</string>
|
||||
</dict>
|
||||
</dict>
|
||||
</array>
|
||||
<key>IBVersion</key>
|
||||
<string>1</string>
|
||||
</dict>
|
||||
|
||||
Generated
+2
-4
@@ -7,11 +7,9 @@
|
||||
<key>IBOldestOS</key>
|
||||
<integer>5</integer>
|
||||
<key>IBOpenObjects</key>
|
||||
<array>
|
||||
<integer>1</integer>
|
||||
</array>
|
||||
<array/>
|
||||
<key>IBSystem Version</key>
|
||||
<string>9E17</string>
|
||||
<string>9F33</string>
|
||||
<key>targetFramework</key>
|
||||
<string>IBCocoaFramework</string>
|
||||
</dict>
|
||||
|
||||
BIN
Binary file not shown.
+322
-64
@@ -2,22 +2,23 @@
|
||||
<archive type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="7.01">
|
||||
<data>
|
||||
<int key="IBDocument.SystemTarget">1050</int>
|
||||
<string key="IBDocument.SystemVersion">9E17</string>
|
||||
<string key="IBDocument.SystemVersion">9F33</string>
|
||||
<string key="IBDocument.InterfaceBuilderVersion">629</string>
|
||||
<string key="IBDocument.AppKitVersion">949.33</string>
|
||||
<string key="IBDocument.AppKitVersion">949.34</string>
|
||||
<string key="IBDocument.HIToolboxVersion">352.00</string>
|
||||
<object class="NSMutableArray" key="IBDocument.EditedObjectIDs">
|
||||
<bool key="EncodedWithXMLCoder">YES</bool>
|
||||
<integer value="13"/>
|
||||
<integer value="1"/>
|
||||
</object>
|
||||
<object class="NSArray" key="IBDocument.PluginDependencies">
|
||||
<bool key="EncodedWithXMLCoder">YES</bool>
|
||||
<string id="432113897">com.apple.InterfaceBuilder.CocoaPlugin</string>
|
||||
<string id="32298658">com.apple.InterfaceBuilder.CocoaPlugin</string>
|
||||
</object>
|
||||
<object class="NSMutableArray" key="IBDocument.RootObjects" id="1000">
|
||||
<bool key="EncodedWithXMLCoder">YES</bool>
|
||||
<object class="NSCustomObject" id="1001">
|
||||
<string key="NSClassName">NSObject</string>
|
||||
<string key="NSClassName" id="1051880339">NSObject</string>
|
||||
</object>
|
||||
<object class="NSCustomObject" id="1003">
|
||||
<string key="NSClassName">FirstResponder</string>
|
||||
@@ -41,7 +42,7 @@
|
||||
<int key="NSCellFlags">-2080244224</int>
|
||||
<int key="NSCellFlags2">134217728</int>
|
||||
<string key="NSContents">Round Rect Button</string>
|
||||
<object class="NSFont" key="NSSupport">
|
||||
<object class="NSFont" key="NSSupport" id="1028390566">
|
||||
<string key="NSName">LucidaGrande</string>
|
||||
<double key="NSSize">1.200000e+01</double>
|
||||
<int key="NSfFlags">16</int>
|
||||
@@ -88,10 +89,119 @@
|
||||
<reference key="NSWindow"/>
|
||||
<string key="NSClassName">NSView</string>
|
||||
</object>
|
||||
<object class="NSWindowTemplate" id="728415824">
|
||||
<int key="NSWindowStyleMask">15</int>
|
||||
<int key="NSWindowBacking">2</int>
|
||||
<string key="NSWindowRect">{{196, 240}, {480, 270}}</string>
|
||||
<int key="NSWTFlags">603979776</int>
|
||||
<string key="NSWindowTitle" id="988560763">Window</string>
|
||||
<string key="NSWindowClass" id="620584816">NSWindow</string>
|
||||
<nil key="NSViewClass"/>
|
||||
<object class="NSView" key="NSWindowView" id="882339348">
|
||||
<reference key="NSNextResponder"/>
|
||||
<int key="NSvFlags">256</int>
|
||||
<object class="NSMutableArray" key="NSSubviews">
|
||||
<bool key="EncodedWithXMLCoder">YES</bool>
|
||||
<object class="NSButton" id="111855648">
|
||||
<reference key="NSNextResponder" ref="882339348"/>
|
||||
<int key="NSvFlags">268</int>
|
||||
<string key="NSFrame">{{145, 113}, {154, 19}}</string>
|
||||
<reference key="NSSuperview" ref="882339348"/>
|
||||
<reference key="NSWindow"/>
|
||||
<bool key="NSEnabled">YES</bool>
|
||||
<object class="NSButtonCell" key="NSCell" id="823598869">
|
||||
<int key="NSCellFlags">-2080244224</int>
|
||||
<int key="NSCellFlags2">134217728</int>
|
||||
<string key="NSContents">yikes!</string>
|
||||
<reference key="NSSupport" ref="1028390566"/>
|
||||
<reference key="NSControlView" ref="111855648"/>
|
||||
<int key="NSButtonFlags">-2038152961</int>
|
||||
<int key="NSButtonFlags2">164</int>
|
||||
<reference key="NSAlternateContents" ref="729400536"/>
|
||||
<reference key="NSKeyEquivalent" ref="729400536"/>
|
||||
<int key="NSPeriodicDelay">400</int>
|
||||
<int key="NSPeriodicInterval">75</int>
|
||||
</object>
|
||||
</object>
|
||||
<object class="NSButton" id="380597285">
|
||||
<reference key="NSNextResponder" ref="882339348"/>
|
||||
<int key="NSvFlags">268</int>
|
||||
<string key="NSFrame">{{0, 251}, {154, 19}}</string>
|
||||
<reference key="NSSuperview" ref="882339348"/>
|
||||
<reference key="NSWindow"/>
|
||||
<bool key="NSEnabled">YES</bool>
|
||||
<object class="NSButtonCell" key="NSCell" id="401652134">
|
||||
<int key="NSCellFlags">-2080244224</int>
|
||||
<int key="NSCellFlags2">134217728</int>
|
||||
<string key="NSContents">Round Rect Button</string>
|
||||
<reference key="NSSupport" ref="1028390566"/>
|
||||
<reference key="NSControlView" ref="380597285"/>
|
||||
<int key="NSButtonFlags">-2038152961</int>
|
||||
<int key="NSButtonFlags2">164</int>
|
||||
<reference key="NSAlternateContents" ref="729400536"/>
|
||||
<reference key="NSKeyEquivalent" ref="729400536"/>
|
||||
<int key="NSPeriodicDelay">400</int>
|
||||
<int key="NSPeriodicInterval">75</int>
|
||||
</object>
|
||||
</object>
|
||||
</object>
|
||||
<string key="NSFrameSize">{480, 270}</string>
|
||||
<reference key="NSSuperview"/>
|
||||
<reference key="NSWindow"/>
|
||||
</object>
|
||||
<string key="NSScreenRect">{{0, 0}, {1680, 1028}}</string>
|
||||
</object>
|
||||
<object class="NSWindowTemplate" id="901839919">
|
||||
<int key="NSWindowStyleMask">15</int>
|
||||
<int key="NSWindowBacking">2</int>
|
||||
<string key="NSWindowRect">{{196, 240}, {480, 270}}</string>
|
||||
<int key="NSWTFlags">603979776</int>
|
||||
<reference key="NSWindowTitle" ref="988560763"/>
|
||||
<reference key="NSWindowClass" ref="620584816"/>
|
||||
<nil key="NSViewClass"/>
|
||||
<object class="NSView" key="NSWindowView" id="872041560">
|
||||
<nil key="NSNextResponder"/>
|
||||
<int key="NSvFlags">256</int>
|
||||
<string key="NSFrameSize">{480, 270}</string>
|
||||
</object>
|
||||
<string key="NSScreenRect">{{0, 0}, {1680, 1028}}</string>
|
||||
</object>
|
||||
</object>
|
||||
<object class="IBObjectContainer" key="IBDocument.Objects">
|
||||
<object class="NSMutableArray" key="connectionRecords">
|
||||
<bool key="EncodedWithXMLCoder">YES</bool>
|
||||
<object class="IBConnectionRecord">
|
||||
<object class="IBOutletConnection" key="connection">
|
||||
<string key="label" id="508157406">view</string>
|
||||
<reference key="source" ref="1001"/>
|
||||
<reference key="destination" ref="1005"/>
|
||||
</object>
|
||||
<int key="connectionID">20</int>
|
||||
</object>
|
||||
<object class="IBConnectionRecord">
|
||||
<object class="IBOutletConnection" key="connection">
|
||||
<string key="label" id="752515934">window</string>
|
||||
<reference key="source" ref="1001"/>
|
||||
<reference key="destination" ref="728415824"/>
|
||||
</object>
|
||||
<int key="connectionID">21</int>
|
||||
</object>
|
||||
<object class="IBConnectionRecord">
|
||||
<object class="IBActionConnection" key="connection">
|
||||
<string key="label">orderFront:</string>
|
||||
<reference key="source" ref="728415824"/>
|
||||
<reference key="destination" ref="376826387"/>
|
||||
</object>
|
||||
<int key="connectionID">22</int>
|
||||
</object>
|
||||
<object class="IBConnectionRecord">
|
||||
<object class="IBActionConnection" key="connection">
|
||||
<string key="label">orderOut:</string>
|
||||
<reference key="source" ref="728415824"/>
|
||||
<reference key="destination" ref="111855648"/>
|
||||
</object>
|
||||
<int key="connectionID">24</int>
|
||||
</object>
|
||||
</object>
|
||||
<object class="IBMutableOrderedSet" key="objectRecords">
|
||||
<object class="NSArray" key="orderedObjects">
|
||||
@@ -160,6 +270,67 @@
|
||||
<reference key="object" ref="955868276"/>
|
||||
<reference key="parent" ref="1050330329"/>
|
||||
</object>
|
||||
<object class="IBObjectRecord">
|
||||
<int key="objectID">12</int>
|
||||
<reference key="object" ref="728415824"/>
|
||||
<object class="NSMutableArray" key="children">
|
||||
<bool key="EncodedWithXMLCoder">YES</bool>
|
||||
<reference ref="882339348"/>
|
||||
</object>
|
||||
<reference key="parent" ref="1002"/>
|
||||
</object>
|
||||
<object class="IBObjectRecord">
|
||||
<int key="objectID">13</int>
|
||||
<reference key="object" ref="882339348"/>
|
||||
<object class="NSMutableArray" key="children">
|
||||
<bool key="EncodedWithXMLCoder">YES</bool>
|
||||
<reference ref="111855648"/>
|
||||
<reference ref="380597285"/>
|
||||
</object>
|
||||
<reference key="parent" ref="728415824"/>
|
||||
</object>
|
||||
<object class="IBObjectRecord">
|
||||
<int key="objectID">14</int>
|
||||
<reference key="object" ref="901839919"/>
|
||||
<object class="NSMutableArray" key="children">
|
||||
<bool key="EncodedWithXMLCoder">YES</bool>
|
||||
<reference ref="872041560"/>
|
||||
</object>
|
||||
<reference key="parent" ref="1002"/>
|
||||
</object>
|
||||
<object class="IBObjectRecord">
|
||||
<int key="objectID">15</int>
|
||||
<reference key="object" ref="872041560"/>
|
||||
<reference key="parent" ref="901839919"/>
|
||||
</object>
|
||||
<object class="IBObjectRecord">
|
||||
<int key="objectID">16</int>
|
||||
<reference key="object" ref="111855648"/>
|
||||
<object class="NSMutableArray" key="children">
|
||||
<bool key="EncodedWithXMLCoder">YES</bool>
|
||||
<reference ref="823598869"/>
|
||||
</object>
|
||||
<reference key="parent" ref="882339348"/>
|
||||
</object>
|
||||
<object class="IBObjectRecord">
|
||||
<int key="objectID">17</int>
|
||||
<reference key="object" ref="823598869"/>
|
||||
<reference key="parent" ref="111855648"/>
|
||||
</object>
|
||||
<object class="IBObjectRecord">
|
||||
<int key="objectID">25</int>
|
||||
<reference key="object" ref="380597285"/>
|
||||
<object class="NSMutableArray" key="children">
|
||||
<bool key="EncodedWithXMLCoder">YES</bool>
|
||||
<reference ref="401652134"/>
|
||||
</object>
|
||||
<reference key="parent" ref="882339348"/>
|
||||
</object>
|
||||
<object class="IBObjectRecord">
|
||||
<int key="objectID">26</int>
|
||||
<reference key="object" ref="401652134"/>
|
||||
<reference key="parent" ref="380597285"/>
|
||||
</object>
|
||||
</object>
|
||||
</object>
|
||||
<object class="NSMutableDictionary" key="flattenedProperties">
|
||||
@@ -174,20 +345,44 @@
|
||||
<string>1.editorWindowContentRectSynchronizationRect</string>
|
||||
<string>10.IBPluginDependency</string>
|
||||
<string>11.IBPluginDependency</string>
|
||||
<string>12.IBPluginDependency</string>
|
||||
<string>12.IBWindowTemplateEditedContentRect</string>
|
||||
<string>12.NSWindowTemplate.visibleAtLaunch</string>
|
||||
<string>12.editorWindowContentRectSynchronizationRect</string>
|
||||
<string>13.IBPluginDependency</string>
|
||||
<string>14.IBPluginDependency</string>
|
||||
<string>14.NSWindowTemplate.visibleAtLaunch</string>
|
||||
<string>15.IBPluginDependency</string>
|
||||
<string>16.IBPluginDependency</string>
|
||||
<string>17.IBPluginDependency</string>
|
||||
<string>25.IBPluginDependency</string>
|
||||
<string>26.IBPluginDependency</string>
|
||||
<string>8.IBPluginDependency</string>
|
||||
<string>9.IBPluginDependency</string>
|
||||
</object>
|
||||
<object class="NSMutableArray" key="dict.values">
|
||||
<bool key="EncodedWithXMLCoder">YES</bool>
|
||||
<reference ref="432113897"/>
|
||||
<reference ref="432113897"/>
|
||||
<reference ref="432113897"/>
|
||||
<reference ref="432113897"/>
|
||||
<reference ref="32298658"/>
|
||||
<reference ref="32298658"/>
|
||||
<reference ref="32298658"/>
|
||||
<reference ref="32298658"/>
|
||||
<string>{628, 654}</string>
|
||||
<string>{{319, 416}, {480, 272}}</string>
|
||||
<string id="682767821">com.apple.InterfaceBuilder.CocoaPlugin</string>
|
||||
<reference ref="682767821"/>
|
||||
<string id="32298658">com.apple.InterfaceBuilder.CocoaPlugin</string>
|
||||
<reference ref="32298658"/>
|
||||
<reference ref="32298658"/>
|
||||
<string id="821364897">com.apple.InterfaceBuilder.CocoaPlugin</string>
|
||||
<string>{{196, 240}, {480, 270}}</string>
|
||||
<integer value="1" id="5"/>
|
||||
<string>{{196, 240}, {480, 270}}</string>
|
||||
<reference ref="821364897"/>
|
||||
<string id="749189018">com.apple.InterfaceBuilder.CocoaPlugin</string>
|
||||
<reference ref="5"/>
|
||||
<reference ref="749189018"/>
|
||||
<string id="883876083">com.apple.InterfaceBuilder.CocoaPlugin</string>
|
||||
<reference ref="883876083"/>
|
||||
<string id="878848921">com.apple.InterfaceBuilder.CocoaPlugin</string>
|
||||
<reference ref="878848921"/>
|
||||
<reference ref="32298658"/>
|
||||
<reference ref="32298658"/>
|
||||
</object>
|
||||
</object>
|
||||
@@ -211,11 +406,41 @@
|
||||
</object>
|
||||
</object>
|
||||
<nil key="sourceID"/>
|
||||
<int key="maxID">11</int>
|
||||
<int key="maxID">26</int>
|
||||
</object>
|
||||
<object class="IBClassDescriber" key="IBDocument.Classes">
|
||||
<object class="NSMutableArray" key="referencedPartialClassDescriptions">
|
||||
<bool key="EncodedWithXMLCoder">YES</bool>
|
||||
<object class="IBPartialClassDescription">
|
||||
<reference key="className" ref="1051880339"/>
|
||||
<nil key="superclassName"/>
|
||||
<object class="NSMutableDictionary" key="actions">
|
||||
<bool key="EncodedWithXMLCoder">YES</bool>
|
||||
<object class="NSArray" key="dict.sortedKeys">
|
||||
<bool key="EncodedWithXMLCoder">YES</bool>
|
||||
</object>
|
||||
<object class="NSMutableArray" key="dict.values">
|
||||
<bool key="EncodedWithXMLCoder">YES</bool>
|
||||
</object>
|
||||
</object>
|
||||
<object class="NSMutableDictionary" key="outlets">
|
||||
<bool key="EncodedWithXMLCoder">YES</bool>
|
||||
<object class="NSMutableArray" key="dict.sortedKeys">
|
||||
<bool key="EncodedWithXMLCoder">YES</bool>
|
||||
<reference ref="508157406"/>
|
||||
<reference ref="752515934"/>
|
||||
</object>
|
||||
<object class="NSMutableArray" key="dict.values">
|
||||
<bool key="EncodedWithXMLCoder">YES</bool>
|
||||
<string id="769725644">id</string>
|
||||
<reference ref="769725644"/>
|
||||
</object>
|
||||
</object>
|
||||
<object class="IBClassDescriptionSource" key="sourceIdentifier">
|
||||
<string key="majorKey">IBUserSource</string>
|
||||
<string key="minorKey"/>
|
||||
</object>
|
||||
</object>
|
||||
</object>
|
||||
</object>
|
||||
<int key="IBDocument.localizationMode">0</int>
|
||||
@@ -223,57 +448,90 @@
|
||||
<int key="IBDocument.defaultPropertyAccessControl">3</int>
|
||||
<object class="NSMutableData" key="IBDocument.RunnableNib">
|
||||
<bytes key="NS.bytes">YnBsaXN0MDDUAAEAAgADAAQABQAGAAkAClgkdmVyc2lvblQkdG9wWSRhcmNoaXZlclgkb2JqZWN0cxIA
|
||||
AYag0QAHAAhdSUIub2JqZWN0ZGF0YYABXxAPTlNLZXllZEFyY2hpdmVyrxA/AAsADAAxADUANgA7ADwA
|
||||
QABEAEcASwBUAGwAbQB1AHYAeQCJAIoAjgCYAAsAmQCfALMAtgC3AL8AwgDHAMgAywALAJ0AzADPANIA
|
||||
0wDVAN4A6ADyAPMA9AD1APYA9wD4APkA/AD/AQkBEwEUARUBFgCrARcBGAEZARwBHwEiVSRudWxs3xAS
|
||||
AA0ADgAPABAAEQASABMAFAAVABYAFwAYABkAGgAbABwAHQAeAB8AIAAhACIAIwAkACUAJgAnACgAKQAq
|
||||
ACsALAAtAC4ALwAwVk5TUm9vdFYkY2xhc3NdTlNPYmplY3RzS2V5c18QD05TQ2xhc3Nlc1ZhbHVlc18Q
|
||||
GU5TQWNjZXNzaWJpbGl0eU9pZHNWYWx1ZXNdTlNDb25uZWN0aW9uc1tOU05hbWVzS2V5c1tOU0ZyYW1l
|
||||
d29ya11OU0NsYXNzZXNLZXlzWk5TT2lkc0tleXNdTlNOYW1lc1ZhbHVlc18QGU5TQWNjZXNzaWJpbGl0
|
||||
eUNvbm5lY3RvcnNdTlNGb250TWFuYWdlcl8QEE5TVmlzaWJsZVdpbmRvd3NfEA9OU09iamVjdHNWYWx1
|
||||
ZXNfEBdOU0FjY2Vzc2liaWxpdHlPaWRzS2V5c1lOU05leHRPaWRcTlNPaWRzVmFsdWVzgAKAPoAKgDGA
|
||||
PYAIgCeABYAwgDKAKIA7gACABoAmgDwQDYAz0gAOADIAMwA0W05TQ2xhc3NOYW1lgASAA1hOU09iamVj
|
||||
dNIANwA4ADkAOlgkY2xhc3Nlc1okY2xhc3NuYW1logA6ADVeTlNDdXN0b21PYmplY3RfEBBJQkNvY29h
|
||||
RnJhbWV3b3Jr0gAOAD0APgA/Wk5TLm9iamVjdHOAB6DSADcAOABBAEKjAEIAQwA1XE5TTXV0YWJsZVNl
|
||||
dFVOU1NldNIADgA9AEUARoAJoNIANwA4AEgASaMASQBKADVeTlNNdXRhYmxlQXJyYXlXTlNBcnJhedIA
|
||||
DgA9AEwATYAlpgBOAE8AUABRAFIAU4ALgBCAF4ATgBqAI9wAVQAOAFYAVwBYAFkAWgBbAFwAXQBeAF8A
|
||||
YABhAGIAYwBkAGIAZgBnAE8AaQBqAGtbTlNDZWxsRmxhZ3NfEBNOU0FsdGVybmF0ZUNvbnRlbnRzXxAS
|
||||
TlNQZXJpb2RpY0ludGVydmFsXk5TQnV0dG9uRmxhZ3MyXxAPTlNLZXlFcXVpdmFsZW50Wk5TQ29udGVu
|
||||
dHNZTlNTdXBwb3J0XU5TQ29udHJvbFZpZXdfEA9OU1BlcmlvZGljRGVsYXlcTlNDZWxsRmxhZ3MyXU5T
|
||||
QnV0dG9uRmxhZ3MT/////4QB/gCAEoAREEsQpIARgAyADYAQEQGQEggAAAAT/////4aEQP9fEBFSb3Vu
|
||||
ZCBSZWN0IEJ1dHRvbtQADgBuAG8AcABxAHIAcwB0Vk5TU2l6ZVZOU05hbWVYTlNmRmxhZ3OADyNAKAAA
|
||||
AAAAAIAOEBBcTHVjaWRhR3JhbmRl0gA3ADgAdwB4ogB4ADVWTlNGb2502AB6AA4AewB8AH0AfgB/AIAA
|
||||
UQCCAIMATgCFAIYAhwBRXxAPTlNOZXh0UmVzcG9uZGVyV05TRnJhbWVWTlNDZWxsWE5TdkZsYWdzWU5T
|
||||
RW5hYmxlZFhOU1dpbmRvd1tOU1N1cGVydmlld4ATgBaAFIALEQEMCYAVgBNQ0gA3ADgAiwCMpACMAI0A
|
||||
fAA1XE5TQnV0dG9uQ2VsbFxOU0FjdGlvbkNlbGzYAHoADgCPAH0AkAB/ADIAgACHAJIAkwCFAJQAhwCW
|
||||
AJdaTlNTdWJ2aWV3c1tOU0ZyYW1lU2l6ZYAVgCKAHIAfgBWAIYAgXxAXe3sxNTcsIDExMH0sIHsxNTQs
|
||||
IDE5fX3SADcAOACaAJulAJsAnACdAJ4ANVhOU0J1dHRvbllOU0NvbnRyb2xWTlNWaWV3W05TUmVzcG9u
|
||||
ZGVy3gCgAFUADgChAKIAWgBbAFwAowCkAF4ApQCmAKcAqABgAKkAqgCrAGIArQBSAK8AsACqALEAsACx
|
||||
V05TVmFsdWVfEBNOU051bWJlck9mVGlja01hcmtzXxASTlNUaWNrTWFya1Bvc2l0aW9uWk5TTWF4VmFs
|
||||
dWVaTlNNaW5WYWx1ZVpOU1ZlcnRpY2FsXU5TQWx0SW5jVmFsdWVfEBpOU0FsbG93c1RpY2tNYXJrVmFs
|
||||
dWVzT25seSNASQAAAAAAAIAbEAAQAYARgBiAGiNAWQAAAAAAACMAAAAAAAAAAAgI1AAOAG4AbwBwAHEA
|
||||
cgC1AHSAD4AZWUhlbHZldGljYdgAegAOAHsAfAB9AH4AfwCAAFEAuQC6AFAAhQCGAIcAUYATgB6AHYAX
|
||||
CYAVgBPSADcAOADAAMGkAMEAjQB8ADVcTlNTbGlkZXJDZWxs0gAOAD0ARQDEgAmiAE8AUoAQgBpfEBZ7
|
||||
ezM1OSwgMTA4fSwgezk2LCAyMX190gA3ADgAyQDKpQDKAJwAnQCeADVYTlNTbGlkZXJaezQ4MCwgMjcy
|
||||
fdIANwA4AM0AzqQAzgCdAJ4ANVxOU0N1c3RvbVZpZXfSAA4AMgAzANGABIAkXU5TQXBwbGljYXRpb27S
|
||||
ADcAOADUAEqiAEoANdIADgA9AEwA14AlpgBPAFEAUgAfAFEAH4AQgBOAGoACgBOAAtIADgA9AEwA4IAl
|
||||
pwBQAB8ATgBPAFEAUgBTgBeAAoALgBCAE4AagCPSAA4APQBMAOqAJacA6wDsAO0A7gDvAPAA8YApgCqA
|
||||
K4AsgC2ALoAvW1NsaWRlciBDZWxsXEZpbGUncyBPd25lcl8QH0J1dHRvbiBDZWxsIChSb3VuZCBSZWN0
|
||||
IEJ1dHRvbilfECVSb3VuZCBSZWN0IEJ1dHRvbiAoUm91bmQgUmVjdCBCdXR0b24pW0N1c3RvbSBWaWV3
|
||||
XxARSG9yaXpvbnRhbCBTbGlkZXJbQXBwbGljYXRpb27SAA4APQBMAPuAJaDSAA4APQBMAP6AJaDSAA4A
|
||||
PQBMAQGAJacAUAAfAE4ATwBRAFIAU4AXgAKAC4AQgBOAGoAj0gAOAD0ATAELgCWnAQwBDQEOAQ8BEAER
|
||||
ARKANIA1gDaAN4A4gDmAOhALEAwQCRAIEAoT//////////3SAA4APQBFARuACaDSAA4APQBMAR6AJaDS
|
||||
AA4APQBMASGAJaDSADcAOAEjASSiASQANV5OU0lCT2JqZWN0RGF0YQAIABkAIgAnADEAOgA/AEQAUgBU
|
||||
AGYA5wDtATgBPwFGAVQBZgGCAZABnAGoAbYBwQHPAesB+QIMAh4COAJCAk8CUQJTAlUCVwJZAlsCXQJf
|
||||
AmECYwJlAmcCaQJrAm0CbwJxAnMCfAKIAooCjAKVAp4CpwKyArcCxgLZAuIC7QLvAvAC+QMAAw0DEwMc
|
||||
Ax4DHwMoAy8DPgNGA08DUQNeA2ADYgNkA2YDaANqA5sDpwO9A9ID4QPzA/4ECAQWBCgENQRDBEwETgRQ
|
||||
BFIEVARWBFgEWgRcBF8EZARtBIEEkgSZBKAEqQSrBLQEtgS4BMUEzgTTBNoE+wUNBRUFHAUlBS8FOAVE
|
||||
BUYFSAVKBUwFTwVQBVIFVAVVBV4FZwV0BYEFogWtBbkFuwW9Bb8FwQXDBcUFxwXhBeoF9QX+BggGDwYb
|
||||
BlQGXAZyBocGkgadBqgGtgbTBtwG3gbgBuIG5AbmBugG8Qb6BvsG/AcNBw8HEQcbBzwHPgdAB0IHRAdF
|
||||
B0cHSQdSB1sHaAdxB3MHeAd6B3wHlQeeB6kHsge9B8YHzwfcB+UH5wfpB/cIAAgFCA4IEAgdCB8IIQgj
|
||||
CCUIJwgpCDIINAhDCEUIRwhJCEsITQhPCFEIWghcCGsIbQhvCHEIcwh1CHcIeQiFCJIItAjcCOgI/AkI
|
||||
CREJEwkUCR0JHwkgCSkJKwk6CTwJPglACUIJRAlGCUgJUQlTCWIJZAlmCWgJaglsCW4JcAlyCXQJdgl4
|
||||
CXoJgwmMCY4JjwmYCZoJmwmkCaYJpwmwCbUAAAAAAAACAgAAAAAAAAElAAAAAAAAAAAAAAAAAAAJxA</bytes>
|
||||
AYag0QAHAAhdSUIub2JqZWN0ZGF0YYABXxAPTlNLZXllZEFyY2hpdmVyrxB2AAsADAAxADUANgA7ADwA
|
||||
QgBWAFcAWABZAGEAYgBmAGcAagBWAHIACwB7AIAAjACNAKUApgCuAK8AsgCzALcAuwDDAMQAywDMAGEA
|
||||
CwBmANAA1ADbAOMA5ADoAO0ACwD1APoBAgEDAMsBCgESARMBJwEqASsBLgExAAsAZAEyATUBNgE7ATwB
|
||||
PwFEAUUBVgFZAVoBXAFtAX8BkQGSAZMBlAGVAZYBlwGYAZkBmgGbAZwBnQGeAZ8BoAGjAaYBvAHSAdMB
|
||||
1AEfAdUB1gHXAdgB2QHaAdsB3ACtAd0B3gBUAd8B4AHhAeIB5QHoAetVJG51bGzfEBIADQAOAA8AEAAR
|
||||
ABIAEwAUABUAFgAXABgAGQAaABsAHAAdAB4AHwAgACEAIgAjACQAJQAmACcAKAApACoAKwAsAC0ALgAv
|
||||
ADBWTlNSb290ViRjbGFzc11OU09iamVjdHNLZXlzXxAPTlNDbGFzc2VzVmFsdWVzXxAZTlNBY2Nlc3Np
|
||||
YmlsaXR5T2lkc1ZhbHVlc11OU0Nvbm5lY3Rpb25zW05TTmFtZXNLZXlzW05TRnJhbWV3b3JrXU5TQ2xh
|
||||
c3Nlc0tleXNaTlNPaWRzS2V5c11OU05hbWVzVmFsdWVzXxAZTlNBY2Nlc3NpYmlsaXR5Q29ubmVjdG9y
|
||||
c11OU0ZvbnRNYW5hZ2VyXxAQTlNWaXNpYmxlV2luZG93c18QD05TT2JqZWN0c1ZhbHVlc18QF05TQWNj
|
||||
ZXNzaWJpbGl0eU9pZHNLZXlzWU5TTmV4dE9pZFxOU09pZHNWYWx1ZXOAAoB1gEWAXIB0gCiASoAFgFuA
|
||||
XYBLgHKAAIAGgEmAcxAcgF7SAA4AMgAzADRbTlNDbGFzc05hbWWABIADWE5TT2JqZWN00gA3ADgAOQA6
|
||||
WCRjbGFzc2VzWiRjbGFzc25hbWWiADoANV5OU0N1c3RvbU9iamVjdF8QEElCQ29jb2FGcmFtZXdvcmvS
|
||||
AA4APQA+AD9aTlMub2JqZWN0c4AnogBAAEGAB4AQ2gBDAA4ARABFAEYARwBIAEkASgBLAEwATQBOAE8A
|
||||
UABRAFIAUwBUACtcTlNXaW5kb3dWaWV3XE5TU2NyZWVuUmVjdF1OU1dpbmRvd1RpdGxlWU5TV1RGbGFn
|
||||
c11OU1dpbmRvd0NsYXNzXE5TV2luZG93UmVjdF8QD05TV2luZG93QmFja2luZ18QEU5TV2luZG93U3R5
|
||||
bGVNYXNrW05TVmlld0NsYXNzgAuAD4AOgAkSJAAAAIAKgAgQAhAPgABfEBh7ezE5NiwgMjQwfSwgezQ4
|
||||
MCwgMjcwfX1WV2luZG93WE5TV2luZG931ABaAA4AWwBcACsAXgBfAGBfEA9OU05leHRSZXNwb25kZXJY
|
||||
TlN2RmxhZ3NbTlNGcmFtZVNpemWAAIANEQEAgAxaezQ4MCwgMjcwfdIANwA4AGMAZKMAZABlADVWTlNW
|
||||
aWV3W05TUmVzcG9uZGVyXxAWe3swLCAwfSwgezE2ODAsIDEwMjh9fdIANwA4AGgAaaIAaQA1XxAQTlNX
|
||||
aW5kb3dUZW1wbGF0ZdoAQwAOAEQARQBGAEcASABJAEoASwBrAE0AbQBPAFAAUQBwAFMAVAArgBKAD4Am
|
||||
gAmACoARgADXAFoADgBzAFsAXABYAHQAdQBeAHcAXwB4AHUAelpOU1N1YnZpZXdzW05TU3VwZXJ2aWV3
|
||||
gBOADYAUgCSAE4Al0gAOAD0AfAB9gCOiAH4Af4AVgB/YAFoADgCBAIIAWwCDAFgAdABrAIUAhgCHAIgA
|
||||
iQB1AGtXTlNGcmFtZVZOU0NlbGxZTlNFbmFibGVkgBKAHoAWgBcRAQwJgBOAEl8QF3t7MTQ1LCAxMTN9
|
||||
LCB7MTU0LCAxOX193ACOAA4AjwCQAJEAkgCTAJQAlQCWAJcAmACZAJoAmwCcAJ0AmwCfAKAAfgCiAKMA
|
||||
pFtOU0NlbGxGbGFnc18QE05TQWx0ZXJuYXRlQ29udGVudHNfEBJOU1BlcmlvZGljSW50ZXJ2YWxeTlNC
|
||||
dXR0b25GbGFnczJfEA9OU0tleUVxdWl2YWxlbnRaTlNDb250ZW50c1lOU1N1cHBvcnRdTlNDb250cm9s
|
||||
Vmlld18QD05TUGVyaW9kaWNEZWxheVxOU0NlbGxGbGFnczJdTlNCdXR0b25GbGFncxP/////hAH+AIAd
|
||||
gBwQSxCkgByAGIAZgBURAZASCAAAABP/////hoRA/1Z5aWtlcyHUAA4ApwCoAKkAqgCrAKwArVZOU1Np
|
||||
emVWTlNOYW1lWE5TZkZsYWdzgBsjQCgAAAAAAACAGhAQXEx1Y2lkYUdyYW5kZdIANwA4ALAAsaIAsQA1
|
||||
Vk5TRm9udFDSADcAOAC0ALWkALUAtgCCADVcTlNCdXR0b25DZWxsXE5TQWN0aW9uQ2VsbNIANwA4ALgA
|
||||
uaUAuQC6AGQAZQA1WE5TQnV0dG9uWU5TQ29udHJvbNgAWgAOAIEAggBbAIMAWAB0AGsAhQC+AL8AiACJ
|
||||
AHUAa4ASgB6AIIAhCYATgBJfEBV7ezAsIDI1MX0sIHsxNTQsIDE5fX3cAI4ADgCPAJAAkQCSAJMAlACV
|
||||
AJYAlwCYAJkAmgCbAJwAnQCbAMgAoAB/AKIAowCkgB2AHIAcgCKAGYAfXxARUm91bmQgUmVjdCBCdXR0
|
||||
b27SADcAOADNAM6jAM4AzwA1Xk5TTXV0YWJsZUFycmF5V05TQXJyYXnSADcAOADRANKjANIA0wA1XE5T
|
||||
TXV0YWJsZVNldFVOU1NldNIADgA9AHwA1oAjpADXANgA2QDagCmALIBAgEPUAA4A3ADdAN4A3wBBAB8A
|
||||
4l1OU0Rlc3RpbmF0aW9uWE5TU291cmNlV05TTGFiZWyAK4AQgAKAKlZ3aW5kb3fSADcAOADlAOajAOYA
|
||||
5wA1XxAUTlNOaWJPdXRsZXRDb25uZWN0b3JeTlNOaWJDb25uZWN0b3LUAA4A3ADdAN4A3wDqAB8A7IAr
|
||||
gC2AAoA/2ABaAA4AcwBbAFwAWAAyAHQA7gDvAPAAiADxAO4A8wD0gC6APoAvgDuALoA9gDzSAA4APQB8
|
||||
APeAI6IA+AD5gDCANNgAWgAOAIEAggBbAIMAWAB0AOoAhQD9AP4AiACJAO4A6oAtgB6AMYAyCYAugC1f
|
||||
EBd7ezE1NywgMTEwfSwgezE1NCwgMTl9fdwAjgAOAI8AkACRAJIAkwCUAJUAlgCXAJgAmQCaAJsAnACd
|
||||
AJsBBwCgAPgAogCjAKSAHYAcgByAM4AZgDDYAFoADgCBAIIAWwCDAFgAdADqAQwBDQEOAIgAiQDuAOqA
|
||||
LYA6gDWANgmALoAtXxAWe3szNTksIDEwOH0sIHs5NiwgMjF9fd4BFACOAA4BFQEWAJMAlACVARcBGACX
|
||||
ARkBGgEbARwAmQEdAR4BHwCbASEA+QEjASQBHgElASQBJVdOU1ZhbHVlXxATTlNOdW1iZXJPZlRpY2tN
|
||||
YXJrc18QEk5TVGlja01hcmtQb3NpdGlvblpOU01heFZhbHVlWk5TTWluVmFsdWVaTlNWZXJ0aWNhbF1O
|
||||
U0FsdEluY1ZhbHVlXxAaTlNBbGxvd3NUaWNrTWFya1ZhbHVlc09ubHkjQEkAAAAAAACAORAAEAGAHIA3
|
||||
gDQjQFkAAAAAAAAjAAAAAAAAAAAICNQADgCnAKgAqQCqAKsBKQCtgBuAOFlIZWx2ZXRpY2HSADcAOAEs
|
||||
AS2kAS0AtgCCADVcTlNTbGlkZXJDZWxs0gA3ADgBLwEwpQEwALoAZABlADVYTlNTbGlkZXJaezQ4MCwg
|
||||
MjcyfdIANwA4ATMBNKQBNABkAGUANVxOU0N1c3RvbVZpZXdUdmlld9QADgDcAN0A3gE3AEEAfgE6gEKA
|
||||
EIAVgEFZb3JkZXJPdXQ60gA3ADgBPQE+owE+AOcANV8QFU5TTmliQ29udHJvbENvbm5lY3RvctQADgDc
|
||||
AN0A3gE3AEEA+AFDgEKAEIAwgERbb3JkZXJGcm9udDrSAA4APQFGAUeASK4A+QEOAOoAawCHAL8BTgD+
|
||||
AH8AfgBAAEEATAD4gDSANoAtgBKAF4AhgEaAMoAfgBWAB4AQgAuAMNIADgAyADMBWIAEgEddTlNBcHBs
|
||||
aWNhdGlvbtIANwA4AVsAz6IAzwA10gAOAD0BRgFegEiuAOoA+QAfAEEAfgB/AB8A+ABrAGsAHwAfAEAA
|
||||
6oAtgDSAAoAQgBWAH4ACgDCAEoASgAKAAoAHgC3SAA4APQFGAW+ASK8QDwD5AGsA6gEOAIcAvwFOAP4A
|
||||
fwBAAEwAQQB+AB8A+IA0gBKALYA2gBeAIYBGgDKAH4AHgAuAEIAVgAKAMNIADgA9AUYBgYBIrxAPAYIB
|
||||
gwGEAYUBhgGHAYgBiQGKAYsBjAGNAY4BjwGQgEyATYBOgE+AUIBRgFKAU4BUgFWAVoBXgFiAWYBaXxAR
|
||||
SG9yaXpvbnRhbCBTbGlkZXJcQ29udGVudCBWaWV3W0N1c3RvbSBWaWV3W1NsaWRlciBDZWxsXxAUQnV0
|
||||
dG9uIENlbGwgKHlpa2VzISlfECFCdXR0b24gQ2VsbCAoUm91bmQgUmVjdCBCdXR0b24pLTFbQXBwbGlj
|
||||
YXRpb25fEB9CdXR0b24gQ2VsbCAoUm91bmQgUmVjdCBCdXR0b24pXxAnUm91bmQgUmVjdCBCdXR0b24g
|
||||
KFJvdW5kIFJlY3QgQnV0dG9uKS0xXxARV2luZG93IChXaW5kb3cpLTFeQ29udGVudCBWaWV3LTFfEA9X
|
||||
aW5kb3cgKFdpbmRvdylfEBpSb3VuZCBSZWN0IEJ1dHRvbiAoeWlrZXMhKVxGaWxlJ3MgT3duZXJfECVS
|
||||
b3VuZCBSZWN0IEJ1dHRvbiAoUm91bmQgUmVjdCBCdXR0b24p0gAOAD0BRgGigEig0gAOAD0BRgGlgEig
|
||||
0gAOAD0BRgGogEivEBMA2AD5AQ4A6gBrAIcAvwFOANkA2gD+AH8AfgBAAEEATADXAB8A+IAsgDSANoAt
|
||||
gBKAF4AhgEaAQIBDgDKAH4AVgAeAEIALgCmAAoAw0gAOAD0BRgG+gEivEBMBvwHAAcEBwgHDAcQBxQHG
|
||||
AccByAHJAcoBywHMAc0BzgHPAdAB0YBfgGCAYYBigGOAZIBlgGaAZ4BogGmAaoBrgGyAbYBugG+AcIBx
|
||||
EBQQChALEA0QERAaE//////////9EBgQFhAJEBkQDhAMEBUQGxAI0gAOAD0AfAHkgCOg0gAOAD0BRgHn
|
||||
gEig0gAOAD0BRgHqgEig0gA3ADgB7AHtogHtADVeTlNJQk9iamVjdERhdGEACAAZACIAJwAxADoAPwBE
|
||||
AFIAVABmAVUBWwGmAa0BtAHCAdQB8AH+AgoCFgIkAi8CPQJZAmcCegKMAqYCsAK9Ar8CwQLDAsUCxwLJ
|
||||
AssCzQLPAtEC0wLVAtcC2QLbAt0C3wLhAuoC9gL4AvoDAwMMAxUDIAMlAzQDRwNQA1sDXQNiA2QDZgOP
|
||||
A5wDqQO3A8EDzwPcA+4EAgQOBBAEEgQUBBYEGwQdBB8EIQQjBCUEQARHBFAEYQRzBHwEiASKBIwEjwSR
|
||||
BJwEpQSsBLMEvwTYBOEE5gT5BSIFJAUmBSgFKgUsBS4FMAVNBVgFZAVmBWgFagVsBW4FcAV5BXsFgAWC
|
||||
BYQFpQWtBbQFvgXABcIFxAXGBckFygXMBc4F6AYZBiUGOwZQBl8GcQZ8BoYGlAamBrMGwQbKBswGzgbQ
|
||||
BtIG1AbWBtgG2gbdBuIG6wbyBwMHCgcRBxoHHAclBycHKQc2Bz8HRAdLB0wHVQdeB2sHeAeBB4wHlQef
|
||||
B8AHwgfEB8YHyAfJB8sHzQflCBYIGAgaCBwIHgggCCIINgg/CEYIVQhdCGYIbQh6CIAIiQiLCJQIlgiY
|
||||
CJoInAitCLsIxAjMCM4I0AjSCNQI2wjkCOsJAgkRCSIJJAkmCSgJKglLCU0JTwlRCVMJVQlXCVkJYglk
|
||||
CWkJawltCY4JkAmSCZQJlgmXCZkJmwm1CeYJ6AnqCewJ7gnwCfIKEwoVChcKGQobChwKHgogCjkKcgp6
|
||||
CpAKpQqwCrsKxgrUCvEK+gr8Cv4LAAsCCwQLBgsPCxgLGQsaCysLLQsvCzkLQgtLC1gLYQtsC3ULgAuJ
|
||||
C5ILnwukC7ULtwu5C7sLvQvHC9AL1wvvDAAMAgwEDAYMCAwUDB0MHww8DD4MQAxCDEQMRgxIDEoMTAxO
|
||||
DFAMUgxUDFYMWAxhDGMMZQxzDHwMgQyKDIwMqQyrDK0MrwyxDLMMtQy3DLkMuwy9DL8MwQzDDMUMzgzQ
|
||||
DPEM8wz1DPcM+Qz7DP0M/w0BDQMNBQ0HDQkNCw0NDQ8NGA0aDTsNPQ0/DUENQw1FDUcNSQ1LDU0NTw1R
|
||||
DVMNVQ1XDVkNbQ16DYYNkg2pDc0N2Q37DiUOOQ5IDloOdw6EDqwOtQ63DrgOwQ7DDsQOzQ7PDvgO+g78
|
||||
Dv4PAA8CDwQPBg8IDwoPDA8ODxAPEg8UDxYPGA8aDxwPHg8nDykPUg9UD1YPWA9aD1wPXg9gD2IPZA9m
|
||||
D2gPag9sD24PcA9yD3QPdg94D3oPfA9+D4APgg+ED40Pjw+RD5MPlQ+XD5kPmw+dD58PqA+qD6sPtA+2
|
||||
D7cPwA/CD8MPzA/RAAAAAAAAAgIAAAAAAAAB7gAAAAAAAAAAAAAAAAAAD+A</bytes>
|
||||
</object>
|
||||
</data>
|
||||
</archive>
|
||||
|
||||
@@ -12,6 +12,8 @@ import <AppKit/AppKit.j>
|
||||
import "AppController.j"
|
||||
|
||||
|
||||
CPLogRegister(CPLogPopup);
|
||||
|
||||
function main(args, namedArgs)
|
||||
{
|
||||
CPApplicationMain(args, namedArgs);
|
||||
|
||||
@@ -23,9 +23,23 @@
|
||||
import "NSButton.j"
|
||||
import "NSCell.j"
|
||||
import "NSControl.j"
|
||||
import "NSCustomObject.j"
|
||||
import "NSCustomView.j"
|
||||
import "NSFont.j"
|
||||
import "NSIBObjectData.j"
|
||||
import "NSNibConnector.j"
|
||||
import "NSResponder.j"
|
||||
import "NSSlider.j"
|
||||
import "NSView.j"
|
||||
import "NSWindowTemplate.j"
|
||||
|
||||
function CP_NSMapClassName(aClassName)
|
||||
{
|
||||
if (aClassName == @"NSView")
|
||||
return "CPView";
|
||||
|
||||
if (aClassName == @"NSWindow")
|
||||
return @"CPWindow";
|
||||
|
||||
return aClassName;
|
||||
}
|
||||
|
||||
@@ -45,6 +45,9 @@ import "NSControl.j"
|
||||
|
||||
[self setBezelStyle:[cell bezelStyle]];
|
||||
[self setBordered:[cell isBordered]];
|
||||
|
||||
// FIXME
|
||||
_sendActionOn = CPLeftMouseUpMask;
|
||||
}
|
||||
|
||||
return self;
|
||||
|
||||
@@ -0,0 +1,40 @@
|
||||
|
||||
import <AppKit/_CPCibCustomObject.j>
|
||||
|
||||
|
||||
@implementation _CPCibCustomObject (NSCoding)
|
||||
|
||||
- (id)NS_initWithCoder:(CPCoder)aCoder
|
||||
{
|
||||
self = [super init];
|
||||
|
||||
if (self){
|
||||
_className = [aCoder decodeObjectForKey:@"NSClassName"];
|
||||
print(":::"+_className);
|
||||
}
|
||||
return self;
|
||||
}
|
||||
|
||||
@end
|
||||
|
||||
@implementation NSCustomObject : _CPCibCustomObject
|
||||
{
|
||||
}
|
||||
|
||||
- (id)initWithCoder:(CPCoder)aCoder
|
||||
{print("i-nit form coder");
|
||||
return [self NS_initWithCoder:aCoder];
|
||||
}
|
||||
|
||||
- (Class)classForKeyedArchiver
|
||||
{
|
||||
return [_CPCibCustomObject class];
|
||||
}
|
||||
|
||||
- (id)awakeAfterUsingCoder:(CPCoder)aCoder
|
||||
{
|
||||
print("awaking from coder...");
|
||||
return self;
|
||||
}
|
||||
|
||||
@end
|
||||
@@ -25,6 +25,8 @@ import <AppKit/CPCustomView.j>
|
||||
import "NSView.j"
|
||||
|
||||
|
||||
var _CPCibCustomViewClassNameKey = @"_CPCibCustomViewClassNameKey";
|
||||
|
||||
@implementation NSCustomView : CPView
|
||||
{
|
||||
CPString _className;
|
||||
@@ -44,20 +46,13 @@ import "NSView.j"
|
||||
{
|
||||
[super encodeWithCoder:aCoder];
|
||||
|
||||
[aCoder encodeObject:_NSCustomViewMapClassName(_className) forKey:@"CPCustomViewClassNameKey"];
|
||||
[aCoder encodeObject:CP_NSMapClassName(_className) forKey:_CPCibCustomViewClassNameKey];
|
||||
}
|
||||
|
||||
- (CPString)classForKeyedArchiver
|
||||
{
|
||||
return [CPCustomView class];
|
||||
return [_CPCibCustomView class];
|
||||
}
|
||||
|
||||
@end
|
||||
|
||||
function _NSCustomViewMapClassName(aClassName)
|
||||
{
|
||||
if (aClassName == @"NSView")
|
||||
return "CPView";
|
||||
|
||||
return aClassName;
|
||||
}
|
||||
|
||||
@@ -73,9 +73,9 @@ import <AppKit/_CPCibObjectData.j>
|
||||
//_accessibilityConnectors = [aCoder decodeObjectForKey:@"NSAccessibilityConnectors"];
|
||||
//_accessibilityOidsKeys = [aCoder decodeObjectForKey:@"NSAccessibilityOidsKeys"];
|
||||
//_accessibilityOidsValues = [aCoder decodeObjectForKey:@"NSAccessibilityOidsValues"];
|
||||
|
||||
_classesKeys = [aCoder decodeObjectForKey:@"NSClassesKeys"];
|
||||
_classesValues = [aCoder decodeObjectForKey:@"NSClassesValues"];
|
||||
|
||||
_classesKeys = [aCoder decodeObjectForKey:@"NSClassesKeys"];print("d");
|
||||
_classesValues = [aCoder decodeObjectForKey:@"NSClassesValues"];print("e");
|
||||
|
||||
_connections = [aCoder decodeObjectForKey:@"NSConnections"];
|
||||
|
||||
@@ -90,7 +90,7 @@ import <AppKit/_CPCibObjectData.j>
|
||||
_oidKeys = [aCoder decodeObjectForKey:@"NSOidsKeys"];
|
||||
_oidValues = [aCoder decodeObjectForKey:@"NSOidsValues"];
|
||||
|
||||
_rootObject = [aCoder decodeObjectForKey:@"NSRoot"];
|
||||
_fileOwner = [aCoder decodeObjectForKey:@"NSRoot"];
|
||||
_visibleWindows = [aCoder decodeObjectForKey:@"NSVisibleWindows"];
|
||||
}
|
||||
|
||||
|
||||
@@ -0,0 +1,72 @@
|
||||
|
||||
import <AppKit/_CPCibConnector.j>
|
||||
|
||||
|
||||
@implementation _CPCibConnector (NSCoding)
|
||||
|
||||
- (id)NS_initWithCoder:(CPCoder)aCoder
|
||||
{
|
||||
self = [super init];
|
||||
|
||||
if (self)
|
||||
{
|
||||
_source = [aCoder decodeObjectForKey:@"NSSource"];
|
||||
_destination = [aCoder decodeObjectForKey:@"NSDestination"];
|
||||
_label = [aCoder decodeObjectForKey:@"NSLabel"];
|
||||
#if DEBUG
|
||||
CPLog(@"Connection: " + [_source description] + " " + [_destination description] + " " + _label);
|
||||
#endif
|
||||
}
|
||||
|
||||
return self;
|
||||
}
|
||||
|
||||
@end
|
||||
|
||||
@implementation NSNibConnector : _CPCibConnector
|
||||
{
|
||||
}
|
||||
|
||||
- (id)initWithCoder:(CPCoder)aCoder
|
||||
{
|
||||
return [[_CPCibConnector alloc] NS_initWithCoder:aCoder];
|
||||
}
|
||||
|
||||
- (Class)classForKeyedArchiver
|
||||
{
|
||||
return [_CPCibConnector class];
|
||||
}
|
||||
|
||||
@end
|
||||
|
||||
@implementation NSNibControlConnector : _CPCibControlConnector
|
||||
{
|
||||
}
|
||||
|
||||
- (id)initWithCoder:(CPCoder)aCoder
|
||||
{
|
||||
return [[_CPCibControlConnector alloc] NS_initWithCoder:aCoder];
|
||||
}
|
||||
|
||||
- (Class)classForKeyedArchiver
|
||||
{
|
||||
return [_CPCibControlConnector class];
|
||||
}
|
||||
|
||||
@end
|
||||
|
||||
@implementation NSNibOutletConnector : _CPCibOutletConnector
|
||||
{
|
||||
}
|
||||
|
||||
- (id)initWithCoder:(CPCoder)aCoder
|
||||
{
|
||||
return [[_CPCibOutletConnector alloc] NS_initWithCoder:aCoder];
|
||||
}
|
||||
|
||||
- (Class)classForKeyedArchiver
|
||||
{
|
||||
return [_CPCibOutletConnector class];
|
||||
}
|
||||
|
||||
@end
|
||||
@@ -0,0 +1,59 @@
|
||||
|
||||
import <AppKit/_CPCibWindowTemplate.j>
|
||||
|
||||
|
||||
@implementation _CPCibWindowTemplate (NSCoding)
|
||||
|
||||
- (id)NS_initWithCoder:(CPCoder)aCoder
|
||||
{
|
||||
self = [super init];
|
||||
|
||||
if (self)
|
||||
{
|
||||
_minSize = [aCoder decodeSizeForKey:@"NSMinSize"];
|
||||
_maxSize = [aCoder decodeSizeForKey:@"NSMaxSize"];
|
||||
_screenRect = [aCoder decodeRectForKey:@"NSScreenRect"]; // screen created on
|
||||
_viewClass = [aCoder decodeObjectForKey:@"NSViewClass"];
|
||||
_wtFlags = [aCoder decodeIntForKey:@"NSWTFlags"];
|
||||
_windowBacking = [aCoder decodeIntForKey:@"NSWindowBacking"];
|
||||
|
||||
// Convert NSWindows to CPWindows.
|
||||
_windowClass = CP_NSMapClassName([aCoder decodeObjectForKey:@"NSWindowClass"]);
|
||||
|
||||
_windowRect = [aCoder decodeRectForKey:@"NSWindowRect"];
|
||||
_windowStyleMask = [aCoder decodeIntForKey:@"NSWindowStyleMask"];
|
||||
_windowTitle = [aCoder decodeObjectForKey:@"NSWindowTitle"];
|
||||
_windowView = [aCoder decodeObjectForKey:@"NSWindowView"];
|
||||
|
||||
/*
|
||||
_windowRect.origin.y -= _screenRect.size.height - [[NSScreen mainScreen] frame].size.height;
|
||||
if (![_windowClass isEqualToString:@"NSPanel"])
|
||||
_windowRect.origin.y -= [NSMainMenuView menuHeight]; // compensation for the additional menu bar
|
||||
*/
|
||||
}
|
||||
|
||||
return self;
|
||||
}
|
||||
|
||||
@end
|
||||
|
||||
@implementation NSWindowTemplate : _CPCibWindowTemplate
|
||||
{
|
||||
}
|
||||
|
||||
- (id)initWithCoder:(CPCoder)aCoder
|
||||
{
|
||||
return [self NS_initWithCoder:aCoder];
|
||||
}
|
||||
|
||||
- (id)awakeAfterUsingCoder:(CPCoder)aCoder
|
||||
{
|
||||
return self;
|
||||
}
|
||||
|
||||
- (Class)classForKeyedArchiver
|
||||
{
|
||||
return [_CPCibWindowTemplate class];
|
||||
}
|
||||
|
||||
@end
|
||||
Reference in New Issue
Block a user