diff --git a/AppKit/AppKit.j b/AppKit/AppKit.j index 7a4263b61..b0a9f66d1 100644 --- a/AppKit/AppKit.j +++ b/AppKit/AppKit.j @@ -53,9 +53,11 @@ import "CPSecureTextField.j" import "CPSegmentedControl.j" import "CPShadow.j" import "CPSlider.j" +import "CPSplitView.j" import "CPTextField.j" import "CPToolbar.j" import "CPToolbarItem.j" import "CPView.j" +import "CPWebView.j" import "CPWindow.j" import "CPWindowController.j" diff --git a/AppKit/CPControl.j b/AppKit/CPControl.j index a035f5467..421b89b08 100644 --- a/AppKit/CPControl.j +++ b/AppKit/CPControl.j @@ -253,8 +253,8 @@ var CPControlBlackColor = [CPColor blackColor]; - (void)mouseUp:(CPEvent)anEvent { - if (_sendActionOn & CPLeftMouseUpMask && CPRectContainsPoint([self bounds], [self convertPoint:[anEvent locationInWindow] fromView:nil])){alert([_target description] + " : " + _action); - [self sendAction:_action to:_target];} + if (_sendActionOn & CPLeftMouseUpMask && CPRectContainsPoint([self bounds], [self convertPoint:[anEvent locationInWindow] fromView:nil])) + [self sendAction:_action to:_target]; [super mouseUp:anEvent]; } diff --git a/AppKit/CPDocument.j b/AppKit/CPDocument.j index 2e53ce40a..cff5335eb 100644 --- a/AppKit/CPDocument.j +++ b/AppKit/CPDocument.j @@ -200,7 +200,7 @@ var CPDocumentUntitledCount = 0; - (CPData)dataOfType:(CPString)aType error:({CPError})anError { [CPException raise:CPUnsupportedMethodException - reason:"This method must be overridden by the document"]; + reason:"dataOfType:error: must be overridden by the document subclass."]; } /* @@ -215,7 +215,7 @@ var CPDocumentUntitledCount = 0; - (void)readFromData:(CPData)aData ofType:(CPString)aType error:(CPError)anError { [CPException raise:CPUnsupportedMethodException - reason:"This method must be overridden by the document"]; + reason:"readFromData:ofType: must be overridden by the document subclass."]; } // Creating and managing window controllers diff --git a/AppKit/CPDocumentController.j b/AppKit/CPDocumentController.j index 84fbd9d7a..dc2c04e33 100644 --- a/AppKit/CPDocumentController.j +++ b/AppKit/CPDocumentController.j @@ -100,18 +100,18 @@ var CPSharedDocumentController = nil; */ - (void)openUntitledDocumentOfType:(CPString)aType display:(BOOL)shouldDisplay { - var document = [self makeUntitledDocumentOfType:aType error:nil]; + var theDocument = [self makeUntitledDocumentOfType:aType error:nil]; - if (document) - [self addDocument:document]; + if (theDocument) + [self addDocument:theDocument]; if (shouldDisplay) { - [document makeWindowControllers]; - [document showWindows]; + [theDocument makeWindowControllers]; + [theDocument showWindows]; } - return document; + return theDocument; } /* @@ -137,9 +137,11 @@ var CPSharedDocumentController = nil; var result = [self documentForURL:anAbsoluteURL]; if (!result) - // FIXME: type(!) - result = [self makeDocumentWithContentsOfURL:anAbsoluteURL ofType:[[_documentTypes objectAtIndex:0] objectForKey:@"CPBundleTypeName"] delegate:self didReadSelector:@selector(document:didRead:contextInfo:) contextInfo:nil]; - + { + var type = [self typeForContentsOfURL:anAbsoluteURL error:anError]; + + result = [self makeDocumentWithContentsOfURL:anAbsoluteURL ofType:type delegate:self didReadSelector:@selector(document:didRead:contextInfo:) contextInfo:[CPDictionary dictionaryWithObject:shouldDisplay forKey:@"shouldDisplay"]]; + } else if (shouldDisplay) [result showWindows]; @@ -200,6 +202,9 @@ var CPSharedDocumentController = nil; [self addDocument:aDocument]; [aDocument makeWindowControllers]; + + if ([aContextInfo objectForKey:@"shouldDisplay"]) + [aDocument showWindows]; } /* @@ -240,6 +245,34 @@ var CPSharedDocumentController = nil; [_documents removeObjectIdenticalTo:aDocument]; } +- (CPString)defaultType +{ + return [_documentTypes[0] objectForKey:@"CPBundleTypeName"]; +} + +- (CPString)typeForContentsOfURL:(CPURL)anAbsoluteURL error:(CPError)outError +{ + var index = 0, + count = _documentTypes.length, + + extension = [[anAbsoluteURL pathExtension] lowercaseString]; + + for (; index < count; ++index) + { + var documentType = _documentTypes[index], + extensions = [documentType objectForKey:@"CFBundleTypeExtensions"], + extensionIndex = 0, + extensionCount = extensions.length; + + for (; extensionIndex < extensionCount; ++extensionIndex) + if ([extensions[extensionIndex] lowercaseString] == extension) + return [documentType objectForKey:@"CPBundleTypeName"]; + } + + // FIXME? + return [self defaultType];//nil; +} + // Managing Document Types /* @ignore */ diff --git a/AppKit/CPResponder.j b/AppKit/CPResponder.j index 34e177677..406dbb43e 100644 --- a/AppKit/CPResponder.j +++ b/AppKit/CPResponder.j @@ -301,7 +301,7 @@ var CPResponderNextResponderKey = @"CPResponderNextResponderKey"; */ - (id)initWithCoder:(CPCoder)aCoder { - self = [self init]; + self = [super init]; if (self) _nextResponder = [aCoder decodeObjectForKey:CPResponderNextResponderKey]; diff --git a/AppKit/CPSlider.j b/AppKit/CPSlider.j index 8f0240a9d..ab8d2e6b6 100644 --- a/AppKit/CPSlider.j +++ b/AppKit/CPSlider.j @@ -22,7 +22,7 @@ import "CPControl.j" -var CPSliderHorizontalKnobImage = nil +var CPSliderHorizontalKnobImage = nil, CPSliderHorizontalBarLeftImage = nil, CPSliderHorizontalBarRightImage = nil, CPSliderHorizontalBarCenterImage = nil; diff --git a/AppKit/CPSplitView.j b/AppKit/CPSplitView.j index adafffca9..fc9ac630a 100644 --- a/AppKit/CPSplitView.j +++ b/AppKit/CPSplitView.j @@ -27,6 +27,7 @@ import "CPView.j" #include "Platform/Platform.h" #include "Platform/DOM/CPDOMDisplayServer.h" + CPSplitViewDidResizeSubviewsNotification = @"CPSplitViewDidResizeSubviewsNotification"; CPSplitViewWillResizeSubviewsNotification = @"CPSplitViewWillResizeSubviewsNotification"; @@ -72,8 +73,7 @@ var CPSplitViewHorizontalImage = nil, _DOMDividerElements = []; - [self setVertical:YES]; - [self setIsPaneSplitter:YES]; + [self _setVertical:YES]; } return self; @@ -81,31 +81,47 @@ var CPSplitViewHorizontalImage = nil, - (float)dividerThickness { - return 10.0; + return _isPaneSplitter ? 1.0 : 10.0; } - (BOOL)isVertical { return _isVertical; } + - (void)setVertical:(BOOL)flag +{ + [self _setVertical:flag]; + + [self adjustSubviews]; +} + +- (void)_setVertical:(BOOL)flag { _isVertical = flag; - _originComponent = [self isVertical] ? "x" : "y"; - _sizeComponent = [self isVertical] ? "width" : "height"; - _dividerImagePath = [self isVertical] ? [CPSplitViewVerticalImage filename] : [CPSplitViewHorizontalImage filename]; - - [self adjustSubviews]; + _originComponent = [self isVertical] ? "x" : "y"; + _sizeComponent = [self isVertical] ? "width" : "height"; + _dividerImagePath = [self isVertical] ? [CPSplitViewVerticalImage filename] : [CPSplitViewHorizontalImage filename]; } - (BOOL)isPaneSplitter { return _isPaneSplitter; } -- (void)setIsPaneSplitter:(BOOL)flag + +- (void)setIsPaneSplitter:(BOOL)shouldBePaneSplitter { - _isPaneSplitter = flag; + if (_isPaneSplitter == shouldBePaneSplitter) + return; + + _isPaneSplitter = shouldBePaneSplitter; + +#if PLATFORM(DOM) + _DOMDividerElements = []; +#endif + + [self setNeedsDisplay:YES]; } - (void)didAddSubview:(CPView)subview @@ -120,15 +136,16 @@ var CPSplitViewHorizontalImage = nil, [self _postNotificationWillResize]; - var eachSize = (frame.size[_sizeComponent] - dividerThickness * (_subviews.length - 1)) / _subviews.length; - - for (var i = 0; i < [_subviews count]; i++) - { - if ([self isVertical]) - [_subviews[i] setFrame:CGRectMake(Math.round((eachSize + dividerThickness) * i), 0, Math.round(eachSize), frame.size.height)]; - else - [_subviews[i] setFrame:CGRectMake(0, Math.round((eachSize + dividerThickness) * i), frame.size.width, Math.round(eachSize))]; - } + var eachSize = ROUND((frame.size[_sizeComponent] - dividerThickness * (_subviews.length - 1)) / _subviews.length), + index = 0, + count = _subviews.length; + + if ([self isVertical]) + for (; index < count; ++index) + [_subviews[index] setFrame:CGRectMake(ROUND((eachSize + dividerThickness) * index), 0, eachSize, frame.size.height)]; + else + for (; index < count; ++index) + [_subviews[index] setFrame:CGRectMake(0, ROUND((eachSize + dividerThickness) * index), frame.size.width, eachSize)]; [self setNeedsDisplay:YES]; @@ -142,10 +159,10 @@ var CPSplitViewHorizontalImage = nil, - (CGRect)rectOfDividerAtIndex:(int)aDivider { - var frame = [_subviews[aDivider] frame]; + var frame = [_subviews[aDivider] frame], + rect = CGRectMakeZero(); - var rect = CGRectMakeZero(); - rect.size = CPSizeCreateCopy([self frame].size); + rect.size = [self frame].size; rect.size[_sizeComponent] = [self dividerThickness]; rect.origin[_originComponent] = frame.origin[_originComponent] + frame.size[_sizeComponent]; @@ -157,19 +174,20 @@ var CPSplitViewHorizontalImage = nil, { var realRect = [self rectOfDividerAtIndex:aDivider]; - realRect.size[_sizeComponent] += 4; - realRect.origin[_originComponent] -= 2; + var padding = 2; + + realRect.size[_sizeComponent] += padding * 2; + realRect.origin[_originComponent] -= padding; return realRect; } - (void)drawRect:(CGRect)rect { - var count = [_subviews count]; - for (var _drawingDivider = 0; _drawingDivider < count-1; _drawingDivider++) - { - [self drawDividerInRect:[self rectOfDividerAtIndex:_drawingDivider]]; - } + var count = [_subviews count] - 1; + + while (count--) + [self drawDividerInRect:[self rectOfDividerAtIndex:count]]; } - (void)drawDividerInRect:(CGRect)aRect @@ -181,13 +199,23 @@ var CPSplitViewHorizontalImage = nil, _DOMDividerElements[_drawingDivider].style.cursor = "move"; _DOMDividerElements[_drawingDivider].style.position = "absolute"; _DOMDividerElements[_drawingDivider].style.backgroundRepeat = "repeat"; + CPDOMDisplayServerAppendChild(_DOMElement, _DOMDividerElements[_drawingDivider]); + + if (_isPaneSplitter) + { + _DOMDividerElements[_drawingDivider].style.backgroundColor = "#A5A5A5"; + _DOMDividerElements[_drawingDivider].style.backgroundImage = ""; + } + else + { + _DOMDividerElements[_drawingDivider].style.backgroundColor = ""; + _DOMDividerElements[_drawingDivider].style.backgroundImage = "url('"+_dividerImagePath+"')"; + } } CPDOMDisplayServerSetStyleLeftTop(_DOMDividerElements[_drawingDivider], NULL, _CGRectGetMinX(aRect), _CGRectGetMinY(aRect)); CPDOMDisplayServerSetStyleSize(_DOMDividerElements[_drawingDivider], _CGRectGetWidth(aRect), _CGRectGetHeight(aRect)); - - _DOMDividerElements[_drawingDivider].style.backgroundImage = "url('"+_dividerImagePath+"')"; #endif } @@ -207,6 +235,22 @@ var CPSplitViewHorizontalImage = nil, return CGRectContainsPoint(effectiveRect, aPoint) || (additionalRect && CGRectContainsPoint(additionalRect, aPoint)); } +- (CPView)hitTest:(CGPoint)aPoint +{ + if ([self isHidden] || ![self hitTests] || !CGRectContainsPoint([self frame], aPoint)) + return nil; + + var point = [self convertPoint:aPoint fromView:[self superview]]; + + var count = [_subviews count] - 1; + for (var i = 0; i < count; i++) + { + if ([self cursorAtPoint:point hitDividerAtIndex:i]) + return self; + } + + return [super hitTest:aPoint]; +} /* Tracks the divider. @@ -229,11 +273,11 @@ var CPSplitViewHorizontalImage = nil, if (type == CPLeftMouseDown) { - var location = [anEvent locationInWindow], - point = [self convertPoint:location fromView:nil]; + var point = [self convertPoint:[anEvent locationInWindow] fromView:nil]; _currentDivider = CPNotFound; - for (var i = 0; i < [_subviews count] - 1; i++) + var count = [_subviews count] - 1; + for (var i = 0; i < count; i++) { var frame = [_subviews[i] frame], startPosition = frame.origin[_originComponent] + frame.size[_sizeComponent]; @@ -273,15 +317,11 @@ var CPSplitViewHorizontalImage = nil, } } - else if (type == CPLeftMouseDragged) + else if (type == CPLeftMouseDragged && _currentDivider != CPNotFound) { - if (_currentDivider != CPNotFound) - { - var location = [anEvent locationInWindow], - point = [self convertPoint:location fromView:nil]; - - [self setPosition:(point[_originComponent] + _initialOffset) ofDividerAtIndex:_currentDivider]; - } + var point = [self convertPoint:[anEvent locationInWindow] fromView:nil]; + + [self setPosition:(point[_originComponent] + _initialOffset) ofDividerAtIndex:_currentDivider]; } [CPApp setTarget:self selector:@selector(trackDivider:) forNextEventMatchingMask:CPLeftMouseDraggedMask | CPLeftMouseUpMask untilDate:nil inMode:nil dequeue:YES]; @@ -331,9 +371,9 @@ var CPSplitViewHorizontalImage = nil, var frame = [self frame], viewA = _subviews[dividerIndex], - frameA = CGRectCreateCopy([viewA frame]), + frameA = [viewA frame], viewB = _subviews[dividerIndex+1], - frameB = CGRectCreateCopy([viewB frame]); + frameB = [viewB frame]; var realPosition = MAX(MIN(position, actualMax), actualMin); @@ -362,20 +402,23 @@ var CPSplitViewHorizontalImage = nil, [self _postNotificationWillResize]; - var frame = CGRectCreateCopy([self frame]); + var frame = [self frame]; - for (var i = 0; i < [_subviews count]; i++) + var index = 0, + count = [_subviews count], + dividerThickness = [self dividerThickness]; + + for (; index < count; ++index) { - var view = [_subviews objectAtIndex:i], + var view = _subviews[index], newFrame = CGRectCreateCopy(frame); - if(i + 1 == [_subviews count]) + if (index + 1 == count) newFrame.size[_sizeComponent] = frame.size[_sizeComponent] - newFrame.origin[_originComponent]; else newFrame.size[_sizeComponent] = frame.size[_sizeComponent] * ([view frame].size[_sizeComponent] / oldSize[_sizeComponent]); - frame.origin[_originComponent] += newFrame.size[_sizeComponent]; - frame.origin[_originComponent] += [self dividerThickness]; + frame.origin[_originComponent] += newFrame.size[_sizeComponent] + dividerThickness; [view setFrame:newFrame]; } @@ -418,6 +461,51 @@ var CPSplitViewHorizontalImage = nil, @end +var CPSplitViewDelegateKey = "CPSplitViewDelegateKey", + CPSplitViewIsVerticalKey = "CPSplitViewIsVerticalKey", + CPSplitViewIsPaneSplitterKey = "CPSplitViewIsPaneSplitterKey"; + +@implementation CPSplitView (CPCoding) + +/* + Initializes the split view by unarchiving data from aCoder. + @param aCoder the coder containing the archived CPSplitView. +*/ +- (id)initWithCoder:(CPCoder)aCoder +{ + self = [super initWithCoder:aCoder]; + + if (self) + { + _currentDivider = CPNotFound; + + _DOMDividerElements = []; + + _delegate = [aCoder decodeObjectForKey:CPSplitViewDelegateKey];; + + _isPaneSplitter = [aCoder decodeBoolForKey:CPSplitViewIsPaneSplitterKey]; + [self _setVertical:[aCoder decodeBoolForKey:CPSplitViewIsVerticalKey]]; + } + + return self; +} + +/* + Archives this split view into the provided coder. + @param aCoder the coder to which the button's instance data will be written. +*/ +- (void)encodeWithCoder:(CPCoder)aCoder +{ + [super encodeWithCoder:aCoder]; + + [aCoder encodeConditionalObject:_delegate forKey:CPSplitViewDelegateKey]; + + [aCoder encodeBool:_isVertical forKey:CPSplitViewIsVerticalKey]; + [aCoder encodeBool:_isPaneSplitter forKey:CPSplitViewIsPaneSplitterKey]; +} + +@end + // FIXME: once +initialize is fixed for superclasses, remove this and uncomment +initialize var bundle = [CPBundle bundleForClass:CPSplitView]; CPSplitViewHorizontalImage = [[CPImage alloc] initWithContentsOfFile:[bundle pathForResource:@"CPSplitView/CPSplitViewHorizontal.png"] size:CPSizeMake(5.0, 10.0)]; diff --git a/AppKit/CPTextField.j b/AppKit/CPTextField.j index 900015de8..fbb63ca66 100644 --- a/AppKit/CPTextField.j +++ b/AppKit/CPTextField.j @@ -105,6 +105,7 @@ var _CPTextFieldSquareBezelColor = nil; BOOL _isSelectable; id _value; + id _placeholderString; CPLineBreakMode _lineBreakMode; #if PLATFORM(DOM) @@ -140,11 +141,12 @@ var _CPTextFieldSquareBezelColor = nil; - (id)initWithFrame:(CGRect)aFrame { self = [super initWithFrame:aFrame]; - + if (self) { _value = @""; - + _placeholderString = @""; + #if PLATFORM(DOM) _DOMTextElement = document.createElement("div"); _DOMTextElement.style.position = "absolute"; @@ -167,8 +169,7 @@ var _CPTextFieldSquareBezelColor = nil; // Setting the Bezel Style /* Sets whether the textfield will have a bezeled border. - @param shouldBeBezeled YES means the textfield - will draw a bezeled border + @param shouldBeBezeled YES means the textfield will draw a bezeled border */ - (void)setBezeled:(BOOL)shouldBeBezeled { @@ -181,8 +182,7 @@ var _CPTextFieldSquareBezelColor = nil; } /* - Returns YES if the textfield draws a - bezeled border. + Returns YES if the textfield draws a bezeled border. */ - (BOOL)isBezeled { @@ -213,8 +213,7 @@ var _CPTextFieldSquareBezelColor = nil; /* Sets whether the textfield will have a border drawn. - @param shouldBeBordered YES makes the - textfield draw a border + @param shouldBeBordered YES makes the textfield draw a border */ - (void)setBordered:(BOOL)shouldBeBordered { @@ -227,8 +226,7 @@ var _CPTextFieldSquareBezelColor = nil; } /* - Returns YES if the textfield has - a border. + Returns YES if the textfield has a border. */ - (BOOL)isBordered { @@ -264,11 +262,13 @@ var _CPTextFieldSquareBezelColor = nil; [self setBackgroundColor:nil]; } +/* @ignore */ - (BOOL)acceptsFirstResponder { return _isEditable; } +/* @ignore */ - (BOOL)becomeFirstResponder { var string = [self stringValue]; @@ -283,12 +283,12 @@ var _CPTextFieldSquareBezelColor = nil; element.style.font = _DOMElement.style.font; element.style.zIndex = 1000; element.style.width = CGRectGetWidth([self bounds]) - 3.0 + "px"; -// element.style.left = _DOMTextElement.style.left; -// element.style.top = _DOMTextElement.style.top; + //element.style.left = _DOMTextElement.style.left; + //element.style.top = _DOMTextElement.style.top; _DOMElement.appendChild(element); window.setTimeout(function() { element.focus(); }, 0.0); -// element.onblur = function() { objj_debug_print_backtrace(); } + //element.onblur = function() { objj_debug_print_backtrace(); } //element.select(); element.onkeypress = function(aDOMEvent) @@ -309,12 +309,17 @@ var _CPTextFieldSquareBezelColor = nil; } }; + // If current value is the placeholder value, remove it to allow user to update. + if ([_value lowercaseString] == [[self placeholderString] lowercaseString]) + [self setStringValue:@""]; + [[CPDOMWindowBridge sharedDOMWindowBridge] _propagateCurrentDOMEvent:YES]; #endif return YES; } +/* @ignore */ - (BOOL)resignFirstResponder { #if PLATFORM(DOM) @@ -322,19 +327,25 @@ var _CPTextFieldSquareBezelColor = nil; _DOMElement.removeChild(element); [self setStringValue:element.value]; -#endif + // If textfield has no value, then display the placeholderValue + if (!_value) + [self setStringValue:[self placeholderString]]; + +#endif return YES; } +/* + Sets whether or not the receiver text field can be edited +*/ - (void)setEditable:(BOOL)shouldBeEditable { _isEditable = shouldBeEditable; } /* - Returns YES if the textfield is currently - editable by the user. + Returns YES if the textfield is currently editable by the user. */ - (BOOL)isEditable { @@ -351,8 +362,7 @@ var _CPTextFieldSquareBezelColor = nil; } /* - Returns YES if the field's text is - selectable by the user. + Returns YES if the field's text is selectable by the user. */ - (BOOL)isSelectable { @@ -360,8 +370,7 @@ var _CPTextFieldSquareBezelColor = nil; } /* - Sets whether the field's text is selectable - by the user. + Sets whether the field's text is selectable by the user. @param aFlag YES makes the text selectable */ - (void)setSelectable:(BOOL)aFlag @@ -432,7 +441,7 @@ var _CPTextFieldSquareBezelColor = nil; return [[self class] _inputElement].value; #endif - return [self stringValue]; + return [super stringValue]; } /* @@ -457,6 +466,23 @@ var _CPTextFieldSquareBezelColor = nil; #endif } +/* + Returns the receiver's placeholder string +*/ +- (CPString)placeholderString +{ + return _placeholderString; +} + +/* + Sets a placeholder string for the receiver. The placeholder is displayed until editing begins, + and after editing ends, if the text field has an empty string value +*/ +-(void)setPlaceholderString:(CPString)aStringValue +{ + _placeholderString = aStringValue; +} + /* Adjusts the text field's size in the application. */ @@ -469,6 +495,19 @@ var _CPTextFieldSquareBezelColor = nil; #endif } +/* + Select all the text in the CPTextField. +*/ +- (void)selectText:(id)sender +{ +#if PLATFORM(DOM) + var element = [[self class] _inputElement]; + + if (element.parentNode == _DOMElement && ([self isEditable] || [self isSelectable])) + element.select(); +#endif +} + @end var CPTextFieldIsSelectableKey = @"CPTextFieldIsSelectableKey", @@ -520,10 +559,8 @@ var CPTextFieldIsSelectableKey = @"CPTextFieldIsSelectableKey", } /* - Encodes the data of this textfield into the - provided coder. - @param aCoder the coder into which the data - will be written + Encodes the data of this textfield into the provided coder. + @param aCoder the coder into which the data will be written */ - (void)encodeWithCoder:(CPCoder)aCoder { diff --git a/AppKit/CPView.j b/AppKit/CPView.j index 1fe0de2e2..db843c9d9 100644 --- a/AppKit/CPView.j +++ b/AppKit/CPView.j @@ -37,13 +37,47 @@ import "CPGraphicsContext.j" #include "CoreGraphics/CGGeometry.h" #include "Platform/DOM/CPDOMDisplayServer.h" - +/* + @global + @group CPViewAutoresizingMasks + The default resizingMask, the view will not resize or reposition itself. +*/ CPViewNotSizable = 0; +/* + @global + @group CPViewAutoresizingMasks + Allow for flexible space on the left hand side of the view. +*/ CPViewMinXMargin = 1; +/* + @global + @group CPViewAutoresizingMasks + The view should grow and shrink horizontally with its parent view. +*/ CPViewWidthSizable = 2; +/* + @global + @group CPViewAutoresizingMasks + Allow for flexible space to the right hand side of the view. +*/ CPViewMaxXMargin = 4; +/* + @global + @group CPViewAutoresizingMasks + Allow for flexible space above the view. +*/ CPViewMinYMargin = 8; +/* + @global + @group CPViewAutoresizingMasks + The view should grow and shrink vertically with its parent view. +*/ CPViewHeightSizable = 16; +/* + @global + @group CPViewAutoresizingMasks + Allow for flexible space below the view. +*/ CPViewMaxYMargin = 32; CPViewBoundsDidChangeNotification = @"CPViewBoundsDidChangeNotification"; @@ -88,6 +122,8 @@ var DOMElementPrototype = nil, CPGraphicsContext _graphicsContext; + int _tag; + CGRect _frame; CGRect _bounds; CGAffineTransform _boundsTransform; @@ -159,6 +195,11 @@ var DOMElementPrototype = nil, _CPViewNotificationCenter = [CPNotificationCenter defaultCenter]; } +- (id)init +{ + return [self initWithFrame:CGRectMakeZero()]; +} + /* Initializes the receiver for usage with the specified bounding rectangle @return the initialized view @@ -174,6 +215,8 @@ var DOMElementPrototype = nil, _subviews = []; + _tag = -1; + _frame = _CGRectMakeCopy(aFrame); _bounds = _CGRectMake(0.0, 0.0, width, height); @@ -364,7 +407,7 @@ var DOMElementPrototype = nil, [aSubview removeFromSuperview]; - [aView _insertSubview:aView atIndex:index]; + [self _insertSubview:aView atIndex:index]; } /* @ignore */ @@ -464,6 +507,11 @@ var DOMElementPrototype = nil, return enclosingMenuItem;*/ } +- (int)tag +{ + return _tag; +} + /* Returns whether the view is flipped. @return YES if the view is flipped. NO, otherwise. @@ -1665,6 +1713,7 @@ var CPViewAutoresizingMaskKey = @"CPViewAutoresizingMask", CPViewOpacityKey = @"CPViewOpacityKey", CPViewSubviewsKey = @"CPViewSubviewsKey", CPViewSuperviewKey = @"CPViewSuperviewKey", + CPViewTagKey = @"CPViewTagKey", CPViewWindowKey = @"CPViewWindowKey"; @implementation CPView (CPCoding) @@ -1692,6 +1741,11 @@ var CPViewAutoresizingMaskKey = @"CPViewAutoresizingMask", if (self) { + _tag = -1; + + if ([aCoder containsValueForKey:CPViewTagKey]) + _tag = [aCoder decodeIntForKey:CPViewTagKey]; + _window = [aCoder decodeObjectForKey:CPViewWindowKey]; _subviews = [aCoder decodeObjectForKey:CPViewSubviewsKey]; _superview = [aCoder decodeObjectForKey:CPViewSuperviewKey]; @@ -1736,6 +1790,9 @@ var CPViewAutoresizingMaskKey = @"CPViewAutoresizingMask", { [super encodeWithCoder:aCoder]; + if (_tag != -1) + [aCoder encodeInt:_tag forKey:CPViewTagKey]; + [aCoder encodeRect:_frame forKey:CPViewFrameKey]; [aCoder encodeRect:_bounds forKey:CPViewBoundsKey]; diff --git a/AppKit/Cib/CPCib.j b/AppKit/Cib/CPCib.j index be630aedb..ee27f538d 100644 --- a/AppKit/Cib/CPCib.j +++ b/AppKit/Cib/CPCib.j @@ -26,6 +26,7 @@ import import "CPCustomView.j" import "_CPCibCustomObject.j" +import "_CPCibKeyedUnarchiver.j" import "_CPCibObjectData.j" import "_CPCibWindowTemplate.j" @@ -51,7 +52,7 @@ var CPCibObjectDataKey = @"CPCibObjectDataKey"; - (BOOL)instantiateCibWithExternalNameTable:(CPDictionary)anExternalNameTable { - var unarchiver = [[CPKeyedUnarchiver alloc] initForReadingWithData:_data], + var unarchiver = [[_CPCibKeyedUnarchiver alloc] initForReadingWithData:_data], objectData = [unarchiver decodeObjectForKey:CPCibObjectDataKey]; if (!objectData || ![objectData isKindOfClass:[_CPCibObjectData class]]) diff --git a/AppKit/Cib/CPCustomView.j b/AppKit/Cib/CPCustomView.j index e1755d2b5..c0c70fce2 100644 --- a/AppKit/Cib/CPCustomView.j +++ b/AppKit/Cib/CPCustomView.j @@ -22,17 +22,6 @@ import "CPView.j" -var CPViewAutoresizingMaskKey = @"CPViewAutoresizingMask", - CPViewAutoresizesSubviewsKey = @"CPViewAutoresizesSubviews", - CPViewBackgroundColorKey = @"CPViewBackgroundColor", - CPViewBoundsKey = @"CPViewBoundsKey", - CPViewFrameKey = @"CPViewFrameKey", - CPViewHitTestsKey = @"CPViewHitTestsKey", - CPViewIsHiddenKey = @"CPViewIsHiddenKey", - CPViewOpacityKey = @"CPViewOpacityKey", - CPViewSubviewsKey = @"CPViewSubviewsKey", - CPViewSuperviewKey = @"CPViewSuperviewKey", - CPViewWindowKey = @"CPViewWindowKey"; /* @ignore */ @@ -49,8 +38,23 @@ var _CPCibCustomViewClassNameKey = @"_CPCibCustomViewClassNameKey"; - (id)initWithCoder:(CPCoder)aCoder { - _className = [aCoder decodeObjectForKey:_CPCibCustomViewClassNameKey]; + self = [super initWithCoder:aCoder]; + + if (self) + _className = [aCoder decodeObjectForKey:_CPCibCustomViewClassNameKey]; + + return self; +} + +- (void)encodeWithCoder:(CPCoder)aCoder +{ + [super encodeWithCoder:aCoder]; + [aCoder encodeObject:_className forKey:_CPCibCustomViewClassNameKey]; +} + +- (id)_cibInstantiate +{ var theClass = CPClassFromString(_className); // If we don't have this class, just use CPView. @@ -62,37 +66,31 @@ var _CPCibCustomViewClassNameKey = @"_CPCibCustomViewClassNameKey"; theClass = [CPView class]; } - var frame = [aCoder decodeRectForKey:CPViewFrameKey]; - - self = [[CPView alloc] initWithFrame:frame]; + var view = [[theClass alloc] initWithFrame:[self frame]]; - if (self) - { - [self _setWindow:[aCoder decodeObjectForKey:CPViewWindowKey]]; + if (view) + { + [view setBounds:[self bounds]]; // Since the object replacement logic hasn't had a chance to kick in yet, we need to do it manually: - var subviews = [aCoder decodeObjectForKey:CPViewSubviewsKey], + var subviews = [self subviews], index = 0, count = subviews.length; for (; index < count; ++index) - { - // This is a bogus superview "_CPCibCustomView". - subviews[index]._superview = nil; - [self addSubview:subviews[index]]; - } - - _autoresizingMask = [aCoder decodeIntForKey:CPViewAutoresizingMaskKey]; - _autoresizesSubviews = [aCoder decodeBoolForKey:CPViewAutoresizesSubviewsKey]; - - _hitTests = [aCoder decodeObjectForKey:CPViewHitTestsKey]; - _isHidden = [aCoder decodeObjectForKey:CPViewIsHiddenKey]; - _opacity = [aCoder decodeIntForKey:CPViewOpacityKey]; + [view addSubview:subviews[index]]; + + [view setAutoresizingMask:[self autoresizingMask]]; + [view setAutoresizesSubviews:[self autoresizesSubviews]]; - [self setBackgroundColor:[aCoder decodeObjectForKey:CPViewBackgroundColorKey]]; + [view setHitTests:[self hitTests]]; + [view setHidden:[self isHidden]]; + [view setAlphaValue:[self alphaValue]]; + + [view setBackgroundColor:[self backgroundColor]]; } - return self; + return view; } @end diff --git a/AppKit/Cib/_CPCibCustomObject.j b/AppKit/Cib/_CPCibCustomObject.j index 56b633c9a..5064784d8 100644 --- a/AppKit/Cib/_CPCibCustomObject.j +++ b/AppKit/Cib/_CPCibCustomObject.j @@ -28,7 +28,7 @@ var _CPCibCustomObjectClassName = @"_CPCibCustomObjectClassName"; [aCoder encodeObject:_className forKey:_CPCibCustomObjectClassName]; } -- (id)awakeAfterUsingCoder:(CPCoder)aCoder +- (id)_cibInstantiate { var theClass = CPClassFromString(_className); diff --git a/AppKit/Cib/_CPCibKeyedUnarchiver.j b/AppKit/Cib/_CPCibKeyedUnarchiver.j new file mode 100644 index 000000000..3776cc5a8 --- /dev/null +++ b/AppKit/Cib/_CPCibKeyedUnarchiver.j @@ -0,0 +1,37 @@ + +import + + +@implementation _CPCibKeyedUnarchiver : CPKeyedUnarchiver +{ +} + +- (id)initForReadingWithData:(CPData)data +{ + self = [super initForReadingWithData:data]; + + if (self) + [self setDelegate:self]; + + return self; +} + +- (id)unarchiver:(CPKeyedUnarchiver)aKeyedUnarchiver didDecodeObject:(id)anObject +{ + if ([anObject respondsToSelector:@selector(_cibInstantiate)]) + return [anObject _cibInstantiate]; + + return anObject; +} + +- (void)replaceObjectAtUID:(int)aUID withObject:(id)anObject +{ + _objects[aUID] = anObject; +} + +- (id)objectAtUID:(int)aUID +{ + return _objects[aUID]; +} + +@end \ No newline at end of file diff --git a/AppKit/Cib/_CPCibObjectData.j b/AppKit/Cib/_CPCibObjectData.j index 0e43193ab..f336e6942 100644 --- a/AppKit/Cib/_CPCibObjectData.j +++ b/AppKit/Cib/_CPCibObjectData.j @@ -58,16 +58,17 @@ import "_CPCibConnector.j" CPSet _visibleWindows; } -/* + - (CPArray)topLevelObjects { - var count = [_objectsValues count]; + var count = [_objectsValues count], + topLevelObjects = []; while (count--) { var eachObject = _objectsValues[count]; - if(eachObject == _fileOwner) + if (eachObject == _fileOwner) { var anObject = _objectsKeys[count]; @@ -78,7 +79,6 @@ import "_CPCibConnector.j" return topLevelObjects; } -*/ @end diff --git a/AppKit/Cib/_CPCibWindowTemplate.j b/AppKit/Cib/_CPCibWindowTemplate.j index 7147656aa..dec6bd3c4 100644 --- a/AppKit/Cib/_CPCibWindowTemplate.j +++ b/AppKit/Cib/_CPCibWindowTemplate.j @@ -65,7 +65,7 @@ var _CPCibWindowTemplateMinSizeKey = @"_CPCibWindowTemplateMinSizeKey", [aCoder encodeObject:_windowView forKey:_CPCibWindowTemplateWindowViewKey]; } -- (id)awakeAfterUsingCoder:(CPCoder)aCoder +- (id)_cibInstantiate { var windowClass = CPClassFromString(_windowClass); diff --git a/AppKit/Platform/DOM/CPDOMDisplayServer.j b/AppKit/Platform/DOM/CPDOMDisplayServer.j index 0e34fef89..b2338c339 100644 --- a/AppKit/Platform/DOM/CPDOMDisplayServer.j +++ b/AppKit/Platform/DOM/CPDOMDisplayServer.j @@ -133,7 +133,7 @@ CPDOMDisplayServerViewsContext = {}; CPDOMDisplayServerInstructions[index++] = nil; break; - }}catch(e) { alert("here?" + instruction) } + }}catch(e) { CPLog("here?" + instruction) } } CPDOMDisplayServerInstructionCount = 0; @@ -155,7 +155,7 @@ CPDOMDisplayServerViewsContext = {}; [view displayIfNeeded]; } } - + [CPDOMDisplayRunLoop performSelector:@selector(run) target:CPDOMDisplayServer argument:nil order:0 modes:[CPDefaultRunLoopMode]]; } diff --git a/AppKit/_CPWindowView.j b/AppKit/_CPWindowView.j index f427f98a5..7bbadec51 100644 --- a/AppKit/_CPWindowView.j +++ b/AppKit/_CPWindowView.j @@ -62,7 +62,7 @@ var _CPWindowViewResizeIndicatorImage = nil; { _resizeIndicatorOffset = CGSizeMake(0.0, 0.0); - [self setShowsResizeIndicator:((_styleMask & CPBorderlessWindowMask) || (_styleMask & CPBorderlessBridgeWindowMask)) && (_styleMask & CPResizableWindowMask)]; + [self setShowsResizeIndicator:!(_styleMask & CPBorderlessBridgeWindowMask) && (_styleMask & CPResizableWindowMask)]; } return self; diff --git a/Foundation/CPString.j b/Foundation/CPString.j index c5ade8ee7..ef02d1060 100644 --- a/Foundation/CPString.j +++ b/Foundation/CPString.j @@ -553,7 +553,7 @@ var CPStringHashes = new objj_dictionary(); */ - (CPString)pathExtension { - return substr(lastIndexOf('.')+1); + return substr(lastIndexOf('.') + 1); } /* diff --git a/Tests/README b/Tests/README new file mode 100644 index 000000000..b81dbe228 --- /dev/null +++ b/Tests/README @@ -0,0 +1,5 @@ +Requires objj be installed, as well as ojunit, located at http://github.com/280north/ojunit + +Run individual tests using a command similar to the following: + + objj ojunit/OJTestRunnerText.j cappuccino/Tests/Foundation/CPDateTest.j diff --git a/Tools/NibApp/HelloWorld.nib/info.nib b/Tools/NibApp/HelloWorld.nib/info.nib index b8f7650f5..e6ff1f2ef 100644 --- a/Tools/NibApp/HelloWorld.nib/info.nib +++ b/Tools/NibApp/HelloWorld.nib/info.nib @@ -7,7 +7,9 @@ IBOldestOS 5 IBOpenObjects - + + 1 + IBSystem Version 9F33 targetFramework diff --git a/Tools/NibApp/HelloWorld.nib/keyedobjects.nib b/Tools/NibApp/HelloWorld.nib/keyedobjects.nib index 3ad8add67..44157a897 100644 Binary files a/Tools/NibApp/HelloWorld.nib/keyedobjects.nib and b/Tools/NibApp/HelloWorld.nib/keyedobjects.nib differ diff --git a/Tools/NibApp/HelloWorld.xib b/Tools/NibApp/HelloWorld.xib index 206d50ba7..b94e7b7a8 100644 --- a/Tools/NibApp/HelloWorld.xib +++ b/Tools/NibApp/HelloWorld.xib @@ -9,11 +9,11 @@ YES - + YES - com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin YES @@ -41,7 +41,7 @@ -2080244224 134217728 - Round Rect Button + Round Rect Button LucidaGrande 1.200000e+01 @@ -133,7 +133,7 @@ -2080244224 134217728 - Round Rect Button + -2038152961 @@ -297,6 +297,7 @@ + Francisco 15 @@ -362,28 +363,28 @@ YES - - - - + + + + {628, 654} {{319, 416}, {480, 272}} - - - com.apple.InterfaceBuilder.CocoaPlugin - {{196, 240}, {480, 270}} - - {{196, 240}, {480, 270}} - - com.apple.InterfaceBuilder.CocoaPlugin - - - com.apple.InterfaceBuilder.CocoaPlugin - - com.apple.InterfaceBuilder.CocoaPlugin - - + + + {{196, 240}, {480, 270}} + + + + + + + + + + + + @@ -438,7 +439,7 @@ IBUserSource - + @@ -448,90 +449,90 @@ 3 YnBsaXN0MDDUAAEAAgADAAQABQAGAAkAClgkdmVyc2lvblQkdG9wWSRhcmNoaXZlclgkb2JqZWN0cxIA -AYag0QAHAAhdSUIub2JqZWN0ZGF0YYABXxAPTlNLZXllZEFyY2hpdmVyrxB2AAsADAAxADUANgA7ADwA +AYag0QAHAAhdSUIub2JqZWN0ZGF0YYABXxAPTlNLZXllZEFyY2hpdmVyrxB1AAsADAAxADUANgA7ADwA 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 +CwBmANAA1ADbAOMA5ADoAO0A9QD9AAsA/gEFAQYBCQEOAQ8BFAEZASEBIgE2ATkBOgE9AUAACwBkAUEB +RAFFAVYBWQFaAVwBbQF/AZEBkgGTAZQBlQGWAZcBmAGZAZoBmwGcAZ0BngGfAaABowGmAbwB0gHTAdQB +1QHWAdcB2AEuAdkAVAHaAdsB3AHdAd4B3wHgAK0B4QHiAeUB6AHrVSRudWxs3xASAA0ADgAPABAAEQAS +ABMAFAAVABYAFwAYABkAGgAbABwAHQAeAB8AIAAhACIAIwAkACUAJgAnACgAKQAqACsALAAtAC4ALwAw +Vk5TUm9vdFYkY2xhc3NdTlNPYmplY3RzS2V5c18QD05TQ2xhc3Nlc1ZhbHVlc18QGU5TQWNjZXNzaWJp +bGl0eU9pZHNWYWx1ZXNdTlNDb25uZWN0aW9uc1tOU05hbWVzS2V5c1tOU0ZyYW1ld29ya11OU0NsYXNz +ZXNLZXlzWk5TT2lkc0tleXNdTlNOYW1lc1ZhbHVlc18QGU5TQWNjZXNzaWJpbGl0eUNvbm5lY3RvcnNd +TlNGb250TWFuYWdlcl8QEE5TVmlzaWJsZVdpbmRvd3NfEA9OU09iamVjdHNWYWx1ZXNfEBdOU0FjY2Vz +c2liaWxpdHlPaWRzS2V5c1lOU05leHRPaWRcTlNPaWRzVmFsdWVzgAKAdIBEgFuAc4AogEmABYBagFyA +SoBxgACABoBIgHIQHIBd0gAOADIAMwA0W05TQ2xhc3NOYW1lgASAA1hOU09iamVjdNIANwA4ADkAOlgk +Y2xhc3Nlc1okY2xhc3NuYW1logA6ADVeTlNDdXN0b21PYmplY3RfEBBJQkNvY29hRnJhbWV3b3Jr0gAO +AD0APgA/Wk5TLm9iamVjdHOAJ6IAQABBgAeAENoAQwAOAEQARQBGAEcASABJAEoASwBMAE0ATgBPAFAA +UQBSAFMAVAArXE5TV2luZG93Vmlld1xOU1NjcmVlblJlY3RdTlNXaW5kb3dUaXRsZVlOU1dURmxhZ3Nd +TlNXaW5kb3dDbGFzc1xOU1dpbmRvd1JlY3RfEA9OU1dpbmRvd0JhY2tpbmdfEBFOU1dpbmRvd1N0eWxl +TWFza1tOU1ZpZXdDbGFzc4ALgA+ADoAJEiQAAACACoAIEAIQD4AAXxAYe3sxOTYsIDI0MH0sIHs0ODAs +IDI3MH19VldpbmRvd1hOU1dpbmRvd9QAWgAOAFsAXAArAF4AXwBgXxAPTlNOZXh0UmVzcG9uZGVyWE5T +dkZsYWdzW05TRnJhbWVTaXplgACADREBAIAMWns0ODAsIDI3MH3SADcAOABjAGSjAGQAZQA1Vk5TVmll +d1tOU1Jlc3BvbmRlcl8QFnt7MCwgMH0sIHsxNjgwLCAxMDI4fX3SADcAOABoAGmiAGkANV8QEE5TV2lu +ZG93VGVtcGxhdGXaAEMADgBEAEUARgBHAEgASQBKAEsAawBNAG0ATwBQAFEAcABTAFQAK4ASgA+AJoAJ +gAqAEYAA1wBaAA4AcwBbAFwAWAB0AHUAXgB3AF8AeAB1AHpaTlNTdWJ2aWV3c1tOU1N1cGVydmlld4AT +gA2AFIAkgBOAJdIADgA9AHwAfYAjogB+AH+AFYAf2ABaAA4AgQCCAFsAgwBYAHQAawCFAIYAhwCIAIkA +dQBrV05TRnJhbWVWTlNDZWxsWU5TRW5hYmxlZIASgB6AFoAXEQEMCYATgBJfEBd7ezE0NSwgMTEzfSwg +ezE1NCwgMTl9fdwAjgAOAI8AkACRAJIAkwCUAJUAlgCXAJgAmQCaAJsAnACdAJsAnwCgAH4AogCjAKRb +TlNDZWxsRmxhZ3NfEBNOU0FsdGVybmF0ZUNvbnRlbnRzXxASTlNQZXJpb2RpY0ludGVydmFsXk5TQnV0 +dG9uRmxhZ3MyXxAPTlNLZXlFcXVpdmFsZW50Wk5TQ29udGVudHNZTlNTdXBwb3J0XU5TQ29udHJvbFZp +ZXdfEA9OU1BlcmlvZGljRGVsYXlcTlNDZWxsRmxhZ3MyXU5TQnV0dG9uRmxhZ3MT/////4QB/gCAHYAc +EEsQpIAcgBiAGYAVEQGQEggAAAAT/////4aEQP9WeWlrZXMh1AAOAKcAqACpAKoAqwCsAK1WTlNTaXpl +Vk5TTmFtZVhOU2ZGbGFnc4AbI0AoAAAAAAAAgBoQEFxMdWNpZGFHcmFuZGXSADcAOACwALGiALEANVZO +U0ZvbnRQ0gA3ADgAtAC1pAC1ALYAggA1XE5TQnV0dG9uQ2VsbFxOU0FjdGlvbkNlbGzSADcAOAC4ALml +ALkAugBkAGUANVhOU0J1dHRvbllOU0NvbnRyb2zYAFoADgCBAIIAWwCDAFgAdABrAIUAvgC/AIgAiQB1 +AGuAEoAegCCAIQmAE4ASXxAVe3swLCAyNTF9LCB7MTU0LCAxOX193ACOAA4AjwCQAJEAkgCTAJQAlQCW +AJcAmACZAJoAmwCcAJ0AmwDIAKAAfwCiAKMApIAdgByAHIAigBmAH18QEVJvdW5kIFJlY3QgQnV0dG9u +0gA3ADgAzQDOowDOAM8ANV5OU011dGFibGVBcnJheVdOU0FycmF50gA3ADgA0QDSowDSANMANVxOU011 +dGFibGVTZXRVTlNTZXTSAA4APQB8ANaAI6QA1wDYANkA2oApgCyANIA21AAOANwA3QDeAN8AQQAfAOJd +TlNEZXN0aW5hdGlvblhOU1NvdXJjZVdOU0xhYmVsgCuAEIACgCpWd2luZG930gA3ADgA5QDmowDmAOcA +NV8QFE5TTmliT3V0bGV0Q29ubmVjdG9yXk5TTmliQ29ubmVjdG9y1AAOANwA3QDeAOkAQQDrAOyAM4AQ +gC2AMtgAWgAOAIEAggBbAIMAWAB0AO4AhQDwAPEAiACJAPMA7oAugB6AL4AxCYAwgC7YAFoADgBzAFsA +XABYADIAdADzAPcA+ACIAPkA8wD7APyAMIBCgDeAP4AwgEGAQF8QF3t7MTU3LCAxMTB9LCB7MTU0LCAx +OX193ACOAA4AjwCQAJEAkgCTAJQAlQCWAJcAmACZAJoAmwCcAJ0AmwDIAKAA6wCiAKMApIAdgByAHIAi +gBmALVtvcmRlckZyb250OtIANwA4AQcBCKMBCADnADVfEBVOU05pYkNvbnRyb2xDb25uZWN0b3LUAA4A +3ADdAN4A6QBBAH4BDYAzgBCAFYA1WW9yZGVyT3V0OtQADgDcAN0A3gDfAO4AHwETgCuALoACgEPSAA4A +PQB8ARaAI6IA6wEYgC2AONgAWgAOAIEAggBbAIMAWAB0AO4BGwEcAR0AiACJAPMA7oAugD6AOYA6CYAw +gC5fEBZ7ezM1OSwgMTA4fSwgezk2LCAyMX193gEjAI4ADgEkASUAkwCUAJUBJgEnAJcBKAEpASoBKwCZ +ASwBLQEuAJsBMAEYATIBMwEtATQBMwE0V05TVmFsdWVfEBNOU051bWJlck9mVGlja01hcmtzXxASTlNU +aWNrTWFya1Bvc2l0aW9uWk5TTWF4VmFsdWVaTlNNaW5WYWx1ZVpOU1ZlcnRpY2FsXU5TQWx0SW5jVmFs +dWVfEBpOU0FsbG93c1RpY2tNYXJrVmFsdWVzT25seSNASQAAAAAAAIA9EAAQAYAcgDuAOCNAWQAAAAAA +ACMAAAAAAAAAAAgI1AAOAKcAqACpAKoAqwE4AK2AG4A8WUhlbHZldGljYdIANwA4ATsBPKQBPAC2AIIA +NVxOU1NsaWRlckNlbGzSADcAOAE+AT+lAT8AugBkAGUANVhOU1NsaWRlclp7NDgwLCAyNzJ90gA3ADgB +QgFDpAFDAGQAZQA1XE5TQ3VzdG9tVmlld1R2aWV30gAOAD0BRgFHgEeuAGsAfwEYAEAA7gFNAEwA8QEd +AEEA6wCHAL8AfoASgB+AOIAHgC6ARYALgDGAOoAQgC2AF4AhgBXSAA4AMgAzAViABIBGXU5TQXBwbGlj +YXRpb27SADcAOAFbAM+iAM8ANdIADgA9AUYBXoBHrgBBAGsA7gAfAB8AHwBAAOsBGAAfAO4AfgB/AGuA +EIASgC6AAoACgAKAB4AtgDiAAoAugBWAH4AS0gAOAD0BRgFvgEevEA8AawB/ARgAQADuAU0ATADxAR0A +QQAfAOsAvwB+AIeAEoAfgDiAB4AugEWAC4AxgDqAEIACgC2AIYAVgBfSAA4APQFGAYGAR68QDwGCAYMB +hAGFAYYBhwGIAYkBigGLAYwBjQGOAY8BkIBLgEyATYBOgE+AUIBRgFKAU4BUgFWAVoBXgFiAWVxDb250 +ZW50IFZpZXdfECdSb3VuZCBSZWN0IEJ1dHRvbiAoUm91bmQgUmVjdCBCdXR0b24pLTFfEBFIb3Jpem9u +dGFsIFNsaWRlcllGcmFuY2lzY29bQ3VzdG9tIFZpZXdbQXBwbGljYXRpb25eQ29udGVudCBWaWV3LTFf +EB9CdXR0b24gQ2VsbCAoUm91bmQgUmVjdCBCdXR0b24pW1NsaWRlciBDZWxsXxAPV2luZG93IChXaW5k +b3cpXEZpbGUncyBPd25lcl8QJVJvdW5kIFJlY3QgQnV0dG9uIChSb3VuZCBSZWN0IEJ1dHRvbilfECFC +dXR0b24gQ2VsbCAoUm91bmQgUmVjdCBCdXR0b24pLTFfEBpSb3VuZCBSZWN0IEJ1dHRvbiAoeWlrZXMh +KV8QFEJ1dHRvbiBDZWxsICh5aWtlcyEp0gAOAD0BRgGigEeg0gAOAD0BRgGlgEeg0gAOAD0BRgGogEev +EBMAawB/ARgA2gDYAEAA2QDuAU0ATADXAPEBHQBBAB8A6wCHAH4Av4ASgB+AOIA2gCyAB4A0gC6ARYAL +gCmAMYA6gBCAAoAtgBeAFYAh0gAOAD0BRgG+gEevEBMBvwHAAcEBwgHDAcQBxQHGAccByAHJAcoBywHM +Ac0BzgHPAdAB0YBegF+AYIBhgGKAY4BkgGWAZoBngGiAaYBqgGuAbIBtgG6Ab4BwEA0QGRAKEBQQFhAO +EBgT//////////0QFRAJEAsQDBAbEAgQERAa0gAOAD0AfAHkgCOg0gAOAD0BRgHngEeg0gAOAD0BRgHq +gEeg0gA3ADgB7AHtogHtADVeTlNJQk9iamVjdERhdGEACAAZACIAJwAxADoAPwBEAFIAVABmAVMBWQGk +AasBsgHAAdIB7gH8AggCFAIiAi0COwJXAmUCeAKKAqQCrgK7Ar0CvwLBAsMCxQLHAskCywLNAs8C0QLT +AtUC1wLZAtsC3QLfAugC9AL2AvgDAQMKAxMDHgMjAzIDRQNOA1kDWwNgA2IDZAONA5oDpwO1A78DzQPa +A+wEAAQMBA4EEAQSBBQEGQQbBB0EHwQhBCMEPgRFBE4EXwRxBHoEhgSIBIoEjQSPBJoEowSqBLEEvQTW +BN8E5AT3BSAFIgUkBSYFKAUqBSwFLgVLBVYFYgVkBWYFaAVqBWwFbgV3BXkFfgWABYIFowWrBbIFvAW+ +BcAFwgXEBccFyAXKBcwF5gYXBiMGOQZOBl0GbwZ6BoQGkgakBrEGvwbIBsoGzAbOBtAG0gbUBtYG2Abb +BuAG6QbwBwEHCAcPBxgHGgcjByUHJwc0Bz0HQgdJB0oHUwdcB2kHdgd/B4oHkwedB74HwAfCB8QHxgfH +B8kHywfjCBQIFggYCBoIHAgeCCAINAg9CEQIUwhbCGQIawh4CH4IhwiJCJIIlAiWCJgImgirCLkIwgjK +CMwIzgjQCNII2QjiCOkJAAkPCSAJIgkkCSYJKAlJCUsJTQlPCVEJUglUCVYJdwl5CXsJfQl/CYEJgwmF +CZ8J0AnSCdQJ1gnYCdoJ3AnoCfEJ+AoQCiEKIwolCicKKQozCkQKRgpICkoKTApVClcKXApeCmAKgQqD +CoUKhwqJCooKjAqOCqcK4AroCv4LEwseCykLNAtCC18LaAtqC2wLbgtwC3ILdAt9C4YLhwuIC5kLmwud +C6cLsAu5C8YLzwvaC+ML7gv3DAAMDQwSDBsMHQw6DDwMPgxADEIMRAxGDEgMSgxMDE4MUAxSDFQMVgxf +DGEMYwxxDHoMfwyIDIoMpwypDKsMrQyvDLEMswy1DLcMuQy7DL0MvwzBDMMMzAzODO8M8QzzDPUM9wz5 +DPsM/Qz/DQENAw0FDQcNCQ0LDQ0NFg0YDTkNOw09DT8NQQ1DDUUNRw1JDUsNTQ1PDVENUw1VDVcNZA2O +DaINrA24DcQN0w31DgEOEw4gDkgObA6JDqAOqQ6rDqwOtQ63DrgOwQ7DDuwO7g7wDvIO9A72DvgO+g78 +Dv4PAA8CDwQPBg8IDwoPDA8ODxAPEg8bDx0PRg9ID0oPTA9OD1APUg9UD1YPWA9aD1wPXg9gD2IPZA9m +D2gPag9sD24PcA9yD3QPdg94D3oPgw+FD4cPiQ+LD40Pjw+RD5MPnA+eD58PqA+qD6sPtA+2D7cPwA/F +AAAAAAAAAgIAAAAAAAAB7gAAAAAAAAAAAAAAAAAAD9Q diff --git a/Tools/nib2cib/NSAppKit.j b/Tools/nib2cib/NSAppKit.j index e307708da..efb30c17b 100644 --- a/Tools/nib2cib/NSAppKit.j +++ b/Tools/nib2cib/NSAppKit.j @@ -32,6 +32,7 @@ import "NSResponder.j" import "NSSlider.j" import "NSView.j" import "NSWindowTemplate.j" +import "NSSplitView.j" function CP_NSMapClassName(aClassName) { diff --git a/Tools/nib2cib/NSCustomObject.j b/Tools/nib2cib/NSCustomObject.j index 62891fdb3..58b5f600c 100644 --- a/Tools/nib2cib/NSCustomObject.j +++ b/Tools/nib2cib/NSCustomObject.j @@ -31,10 +31,4 @@ import return [_CPCibCustomObject class]; } -- (id)awakeAfterUsingCoder:(CPCoder)aCoder -{ - print("awaking from coder..."); - return self; -} - @end \ No newline at end of file diff --git a/Tools/nib2cib/NSSplitView.j b/Tools/nib2cib/NSSplitView.j new file mode 100644 index 000000000..8dc7d83ab --- /dev/null +++ b/Tools/nib2cib/NSSplitView.j @@ -0,0 +1,55 @@ +/* + * NSSplitView.j + * nib2cib + * + * Created by Thomas Robinson. + * 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 + + +@implementation CPSplitView (CPCoding) + +- (id)NS_initWithCoder:(CPCoder)aCoder +{ + if (self = [super NS_initWithCoder:aCoder]) + { + _isVertical = [aCoder decodeBoolForKey:@"NSIsVertical"]; + _isPaneSplitter = [aCoder decodeIntForKey:@"NSDividerStyle"] == 2 ? YES : NO; + } + + return self; +} + +@end + +@implementation NSSplitView : CPSplitView +{ +} + +- (id)initWithCoder:(CPCoder)aCoder +{ + return [self NS_initWithCoder:aCoder]; +} + +- (Class)classForKeyedArchiver +{ + return [CPSplitView class]; +} + +@end diff --git a/Tools/nib2cib/NSView.j b/Tools/nib2cib/NSView.j index 4d92d3010..dc8eb9058 100644 --- a/Tools/nib2cib/NSView.j +++ b/Tools/nib2cib/NSView.j @@ -41,6 +41,11 @@ import if (self) { + _tag = -1; + + if([aCoder containsValueForKey:@"NSTag"]) + _tag = [aCoder decodeIntForKey:@"NSTag"]; + _bounds = CGRectMake(0.0, 0.0, CGRectGetWidth(_frame), CGRectGetHeight(_frame)); _window = [aCoder decodeObjectForKey:@"NSWindow"]; diff --git a/Tools/nib2cib/NSWindowTemplate.j b/Tools/nib2cib/NSWindowTemplate.j index a87338805..9a8b7b2e7 100644 --- a/Tools/nib2cib/NSWindowTemplate.j +++ b/Tools/nib2cib/NSWindowTemplate.j @@ -46,11 +46,6 @@ import return [self NS_initWithCoder:aCoder]; } -- (id)awakeAfterUsingCoder:(CPCoder)aCoder -{ - return self; -} - - (Class)classForKeyedArchiver { return [_CPCibWindowTemplate class]; diff --git a/Tools/nib2cib/main.j b/Tools/nib2cib/main.j index 8a822799d..43866e029 100644 --- a/Tools/nib2cib/main.j +++ b/Tools/nib2cib/main.j @@ -30,6 +30,7 @@ import "NSAppKit.j" importClass(java.io.FileWriter); importClass(java.io.BufferedWriter); +CPLogRegister(CPLogPrint); function exec(command) {