Merge branch 'master' of git://github.com/280north/cappuccino

This commit is contained in:
vijaykiran
2008-09-22 04:42:30 +02:00
28 changed files with 567 additions and 255 deletions
+2
View File
@@ -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"
+2 -2
View File
@@ -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];
}
+2 -2
View File
@@ -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
+42 -9
View File
@@ -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 */
+1 -1
View File
@@ -301,7 +301,7 @@ var CPResponderNextResponderKey = @"CPResponderNextResponderKey";
*/
- (id)initWithCoder:(CPCoder)aCoder
{
self = [self init];
self = [super init];
if (self)
_nextResponder = [aCoder decodeObjectForKey:CPResponderNextResponderKey];
+1 -1
View File
@@ -22,7 +22,7 @@
import "CPControl.j"
var CPSliderHorizontalKnobImage = nil
var CPSliderHorizontalKnobImage = nil,
CPSliderHorizontalBarLeftImage = nil,
CPSliderHorizontalBarRightImage = nil,
CPSliderHorizontalBarCenterImage = nil;
+138 -50
View File
@@ -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 <code>aCoder</code>.
@param aCoder the coder containing the archived <objj>CPSplitView</objj>.
*/
- (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)];
+62 -25
View File
@@ -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 <code>YES</code> means the textfield
will draw a bezeled border
@param shouldBeBezeled <code>YES</code> means the textfield will draw a bezeled border
*/
- (void)setBezeled:(BOOL)shouldBeBezeled
{
@@ -181,8 +182,7 @@ var _CPTextFieldSquareBezelColor = nil;
}
/*
Returns <code>YES</code> if the textfield draws a
bezeled border.
Returns <code>YES</code> 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 <code>YES</code> makes the
textfield draw a border
@param shouldBeBordered <code>YES</code> makes the textfield draw a border
*/
- (void)setBordered:(BOOL)shouldBeBordered
{
@@ -227,8 +226,7 @@ var _CPTextFieldSquareBezelColor = nil;
}
/*
Returns <code>YES</code> if the textfield has
a border.
Returns <code>YES</code> 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 <code>YES</code> if the textfield is currently
editable by the user.
Returns <code>YES</code> if the textfield is currently editable by the user.
*/
- (BOOL)isEditable
{
@@ -351,8 +362,7 @@ var _CPTextFieldSquareBezelColor = nil;
}
/*
Returns <code>YES</code> if the field's text is
selectable by the user.
Returns <code>YES</code> 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 <code>YES</code> 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
{
+59 -2
View File
@@ -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 <code>YES</code> if the view is flipped. <code>NO</code>, 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];
+2 -1
View File
@@ -26,6 +26,7 @@ import <Foundation/CPURLRequest.j>
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]])
+31 -33
View File
@@ -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
+1 -1
View File
@@ -28,7 +28,7 @@ var _CPCibCustomObjectClassName = @"_CPCibCustomObjectClassName";
[aCoder encodeObject:_className forKey:_CPCibCustomObjectClassName];
}
- (id)awakeAfterUsingCoder:(CPCoder)aCoder
- (id)_cibInstantiate
{
var theClass = CPClassFromString(_className);
+37
View File
@@ -0,0 +1,37 @@
import <Foundation/CPKeyedUnarchiver.j>
@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
+4 -4
View File
@@ -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
+1 -1
View File
@@ -65,7 +65,7 @@ var _CPCibWindowTemplateMinSizeKey = @"_CPCibWindowTemplateMinSizeKey",
[aCoder encodeObject:_windowView forKey:_CPCibWindowTemplateWindowViewKey];
}
- (id)awakeAfterUsingCoder:(CPCoder)aCoder
- (id)_cibInstantiate
{
var windowClass = CPClassFromString(_windowClass);
+2 -2
View File
@@ -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]];
}
+1 -1
View File
@@ -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;
+1 -1
View File
@@ -553,7 +553,7 @@ var CPStringHashes = new objj_dictionary();
*/
- (CPString)pathExtension
{
return substr(lastIndexOf('.')+1);
return substr(lastIndexOf('.') + 1);
}
/*
+5
View File
@@ -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
+3 -1
View File
@@ -7,7 +7,9 @@
<key>IBOldestOS</key>
<integer>5</integer>
<key>IBOpenObjects</key>
<array/>
<array>
<integer>1</integer>
</array>
<key>IBSystem Version</key>
<string>9F33</string>
<key>targetFramework</key>
Binary file not shown.
+108 -107
View File
@@ -9,11 +9,11 @@
<object class="NSMutableArray" key="IBDocument.EditedObjectIDs">
<bool key="EncodedWithXMLCoder">YES</bool>
<integer value="13"/>
<integer value="1"/>
<integer value="1" id="9"/>
</object>
<object class="NSArray" key="IBDocument.PluginDependencies">
<bool key="EncodedWithXMLCoder">YES</bool>
<string id="32298658">com.apple.InterfaceBuilder.CocoaPlugin</string>
<string id="878848921">com.apple.InterfaceBuilder.CocoaPlugin</string>
</object>
<object class="NSMutableArray" key="IBDocument.RootObjects" id="1000">
<bool key="EncodedWithXMLCoder">YES</bool>
@@ -41,7 +41,7 @@
<object class="NSButtonCell" key="NSCell" id="428923890">
<int key="NSCellFlags">-2080244224</int>
<int key="NSCellFlags2">134217728</int>
<string key="NSContents">Round Rect Button</string>
<string key="NSContents" id="498285202">Round Rect Button</string>
<object class="NSFont" key="NSSupport" id="1028390566">
<string key="NSName">LucidaGrande</string>
<double key="NSSize">1.200000e+01</double>
@@ -133,7 +133,7 @@
<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="NSContents" ref="498285202"/>
<reference key="NSSupport" ref="1028390566"/>
<reference key="NSControlView" ref="380597285"/>
<int key="NSButtonFlags">-2038152961</int>
@@ -297,6 +297,7 @@
<reference ref="872041560"/>
</object>
<reference key="parent" ref="1002"/>
<string key="objectName">Francisco</string>
</object>
<object class="IBObjectRecord">
<int key="objectID">15</int>
@@ -362,28 +363,28 @@
</object>
<object class="NSMutableArray" key="dict.values">
<bool key="EncodedWithXMLCoder">YES</bool>
<reference ref="32298658"/>
<reference ref="32298658"/>
<reference ref="32298658"/>
<reference ref="32298658"/>
<reference ref="878848921"/>
<reference ref="878848921"/>
<reference ref="878848921"/>
<reference ref="878848921"/>
<string>{628, 654}</string>
<string>{{319, 416}, {480, 272}}</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"/>
<reference ref="878848921"/>
<reference ref="878848921"/>
<string id="347871574">{{196, 240}, {480, 270}}</string>
<reference ref="9"/>
<reference ref="347871574"/>
<reference ref="878848921"/>
<reference ref="878848921"/>
<reference ref="9"/>
<reference ref="878848921"/>
<reference ref="878848921"/>
<reference ref="878848921"/>
<reference ref="878848921"/>
<reference ref="878848921"/>
<reference ref="878848921"/>
<reference ref="878848921"/>
</object>
</object>
<object class="NSMutableDictionary" key="unlocalizedProperties">
@@ -438,7 +439,7 @@
</object>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBUserSource</string>
<string key="minorKey"/>
<reference key="minorKey" ref="729400536"/>
</object>
</object>
</object>
@@ -448,90 +449,90 @@
<int key="IBDocument.defaultPropertyAccessControl">3</int>
<object class="NSMutableData" key="IBDocument.RunnableNib">
<bytes key="NS.bytes">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</bytes>
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</bytes>
</object>
</data>
</archive>
+1
View File
@@ -32,6 +32,7 @@ import "NSResponder.j"
import "NSSlider.j"
import "NSView.j"
import "NSWindowTemplate.j"
import "NSSplitView.j"
function CP_NSMapClassName(aClassName)
{
-6
View File
@@ -31,10 +31,4 @@ import <AppKit/_CPCibCustomObject.j>
return [_CPCibCustomObject class];
}
- (id)awakeAfterUsingCoder:(CPCoder)aCoder
{
print("awaking from coder...");
return self;
}
@end
+55
View File
@@ -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 <AppKit/CPSplitView.j>
@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
+5
View File
@@ -41,6 +41,11 @@ import <AppKit/CPView.j>
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"];
-5
View File
@@ -46,11 +46,6 @@ import <AppKit/_CPCibWindowTemplate.j>
return [self NS_initWithCoder:aCoder];
}
- (id)awakeAfterUsingCoder:(CPCoder)aCoder
{
return self;
}
- (Class)classForKeyedArchiver
{
return [_CPCibWindowTemplate class];
+1
View File
@@ -30,6 +30,7 @@ import "NSAppKit.j"
importClass(java.io.FileWriter);
importClass(java.io.BufferedWriter);
CPLogRegister(CPLogPrint);
function exec(command)
{