From 9ea3b701433fc51237b494e8b42026beea45b306 Mon Sep 17 00:00:00 2001 From: Aparajita Fishman Date: Wed, 27 Feb 2013 18:02:55 -0500 Subject: [PATCH] Fixed: table cells were not initialized from xib settings This is a second attempt to fix the problems addressed by 69bbe627a9e10fc78af3cda2b8c7b4a821eed8ed. Because table cell classes needed to use the same initialization code as the NS_initWithCoder methods, it was necessary to refactor the initialization code into separate NS_initWithCell methods and call them separately from NS_initWithCoder. --- Tools/nib2cib/NSBrowser.j | 12 +++- Tools/nib2cib/NSButton.j | 26 ++++---- Tools/nib2cib/NSColorWell.j | 10 ++- Tools/nib2cib/NSComboBox.j | 58 ++++++++-------- Tools/nib2cib/NSControl.j | 39 ++++++----- Tools/nib2cib/NSImageView.j | 30 +++++---- Tools/nib2cib/NSLevelIndicator.j | 25 +++---- Tools/nib2cib/NSOutlineView.j | 10 ++- Tools/nib2cib/NSPopUpButton.j | 37 ++++++----- Tools/nib2cib/NSPredicateEditor.j | 10 ++- Tools/nib2cib/NSRuleEditor.j | 10 ++- Tools/nib2cib/NSScroller.j | 10 ++- Tools/nib2cib/NSSearchField.j | 39 ++++++----- Tools/nib2cib/NSSecureTextField.j | 10 ++- Tools/nib2cib/NSSegmentedControl.j | 80 ++++++++++++---------- Tools/nib2cib/NSSlider.j | 39 ++++++----- Tools/nib2cib/NSStepper.j | 44 ++++++------ Tools/nib2cib/NSTableCellView.j | 8 +-- Tools/nib2cib/NSTableColumn.j | 22 ++---- Tools/nib2cib/NSTableView.j | 12 +++- Tools/nib2cib/NSTextField.j | 103 +++++++++++++++-------------- Tools/nib2cib/NSTokenField.j | 28 ++++---- 22 files changed, 376 insertions(+), 286 deletions(-) diff --git a/Tools/nib2cib/NSBrowser.j b/Tools/nib2cib/NSBrowser.j index 2979861da..ae20ed34a 100644 --- a/Tools/nib2cib/NSBrowser.j +++ b/Tools/nib2cib/NSBrowser.j @@ -51,12 +51,18 @@ @end @implementation NSBrowser : CPBrowser -{ -} - (id)initWithCoder:(CPCoder)aCoder { - return [self NS_initWithCoder:aCoder]; + self = [self NS_initWithCoder:aCoder]; + + if (self) + { + var cell = [aCoder decodeObjectForKey:@"NSCell"]; + [self NS_initWithCell:cell]; + } + + return self; } - (Class)classForKeyedArchiver diff --git a/Tools/nib2cib/NSButton.j b/Tools/nib2cib/NSButton.j index 26581674b..d31a62596 100644 --- a/Tools/nib2cib/NSButton.j +++ b/Tools/nib2cib/NSButton.j @@ -66,23 +66,17 @@ var NSButtonIsBorderedMask = 0x00800000, - (id)NS_initWithCoder:(CPCoder)aCoder { - self = [super NS_initWithCoder:aCoder]; - - if (self) - { - var cell = [aCoder decodeObjectForKey:@"NSCell"]; - self = [self NS_initWithCell:cell]; - } - - return self; + return [super NS_initWithCoder:aCoder]; } /*! Intialise a button given a cell. This method is meant for reuse by controls which contain cells other than CPButton itself. */ -- (id)NS_initWithCell:(NSCell)cell +- (void)NS_initWithCell:(NSCell)cell { + [super NS_initWithCell:cell]; + var alternateImage = [cell alternateImage], positionOffsetSizeWidth = 0, positionOffsetOriginX = 0, @@ -275,8 +269,6 @@ var NSButtonIsBorderedMask = 0x00800000, _highlightsBy = [cell highlightsBy]; _showsStateBy = [cell showsStateBy]; - - return self; } @end @@ -285,7 +277,15 @@ var NSButtonIsBorderedMask = 0x00800000, - (id)initWithCoder:(CPCoder)aCoder { - return [self NS_initWithCoder:aCoder]; + self = [self NS_initWithCoder:aCoder]; + + if (self) + { + var cell = [aCoder decodeObjectForKey:@"NSCell"]; + [self NS_initWithCell:cell]; + } + + return self; } - (Class)classForKeyedArchiver diff --git a/Tools/nib2cib/NSColorWell.j b/Tools/nib2cib/NSColorWell.j index dbb0a0042..f2119fe49 100644 --- a/Tools/nib2cib/NSColorWell.j +++ b/Tools/nib2cib/NSColorWell.j @@ -59,7 +59,15 @@ - (id)initWithCoder:(CPCoder)aCoder { - return [self NS_initWithCoder:aCoder]; + self = [self NS_initWithCoder:aCoder]; + + if (self) + { + var cell = [aCoder decodeObjectForKey:@"NSCell"]; + [self NS_initWithCell:cell]; + } + + return self; } - (Class)classForKeyedArchiver diff --git a/Tools/nib2cib/NSComboBox.j b/Tools/nib2cib/NSComboBox.j index 08434c265..e38627a57 100644 --- a/Tools/nib2cib/NSComboBox.j +++ b/Tools/nib2cib/NSComboBox.j @@ -32,35 +32,33 @@ - (id)NS_initWithCoder:(CPCoder)aCoder { - self = [super NS_initWithCoder:aCoder]; + return [super NS_initWithCoder:aCoder]; +} - if (self) +- (void)NS_initWithCell:(NSCell)cell +{ + [super NS_initWithCell:cell]; + + _items = [cell itemList]; + _usesDataSource = [cell usesDataSource]; + _completes = [cell completes]; + _numberOfVisibleItems = [cell visibleItemCount]; + _hasVerticalScroller = [cell hasVerticalScroller]; + [self setButtonBordered:[cell borderedButton]]; + + // Make sure the height is clipped to the max given by the theme + var maxSize = [[[Converter sharedConverter] themes][0] valueForAttributeWithName:@"max-size" forClass:[CPComboBox class]], + size = [self frameSize], + widthOffset = -3; + + // Adjust for differences between Cocoa and Cappuccino widget framing. + if ([[[Converter sharedConverter] themes][0] name] == @"Aristo") { - var cell = [aCoder decodeObjectForKey:@"NSCell"]; - - _items = [cell itemList]; - _usesDataSource = [cell usesDataSource]; - _completes = [cell completes]; - _numberOfVisibleItems = [cell visibleItemCount]; - _hasVerticalScroller = [cell hasVerticalScroller]; - [self setButtonBordered:[cell borderedButton]]; - - // Make sure the height is clipped to the max given by the theme - var maxSize = [[[Converter sharedConverter] themes][0] valueForAttributeWithName:@"max-size" forClass:[CPComboBox class]], - size = [self frameSize], - widthOffset = -3; - - // Adjust for differences between Cocoa and Cappuccino widget framing. - if ([[[Converter sharedConverter] themes][0] name] == @"Aristo") - { - _frame.origin.x += 1; - widthOffset = -5; - } - - [self setFrameSize:CGSizeMake(size.width + widthOffset, MIN(size.height, maxSize.height))]; + _frame.origin.x += 1; + widthOffset = -5; } - return self; + [self setFrameSize:CGSizeMake(size.width + widthOffset, MIN(size.height, maxSize.height))]; } @end @@ -69,7 +67,15 @@ - (id)initWithCoder:(CPCoder)aCoder { - return [self NS_initWithCoder:aCoder]; + self = [self NS_initWithCoder:aCoder]; + + if (self) + { + var cell = [aCoder decodeObjectForKey:@"NSCell"]; + [self NS_initWithCell:cell]; + } + + return self; } - (Class)classForKeyedArchiver diff --git a/Tools/nib2cib/NSControl.j b/Tools/nib2cib/NSControl.j index 5db1eeff3..548e2f68d 100644 --- a/Tools/nib2cib/NSControl.j +++ b/Tools/nib2cib/NSControl.j @@ -34,29 +34,15 @@ if (self) { - var cell = [aCoder decodeObjectForKey:@"NSCell"]; - - [self sendActionOn:CPLeftMouseUpMask]; - [self setSendsActionOnEndEditing:[cell sendsActionOnEndEditing]]; - - [self setObjectValue:[cell objectValue]]; - - [self setFont:[cell font]]; - [self setAlignment:[cell alignment]]; - // Enabled state is derived from the NSEnabled flag or the control's cell. // For example NSTableView uses the NSEnabled flag, but NSButton uses it's cell isEnabled state. // We use the NSEnabled flag here and override the behavior in controls using different logic (NSButton). [self setEnabled:[aCoder decodeBoolForKey:@"NSEnabled"]]; - [self setContinuous:[cell isContinuous]]; + [self sendActionOn:CPLeftMouseUpMask]; [self setTarget:[aCoder decodeObjectForKey:@"NSTarget"]]; [self setAction:[aCoder decodeObjectForKey:@"NSAction"]]; - [self setLineBreakMode:[cell lineBreakMode]]; - - [self setFormatter:[cell formatter]]; - // In IB, both cells and controls can have tags. // If the control has a tag, that takes precedence. if ([aCoder containsValueForKey:@"NSTag"]) @@ -66,15 +52,32 @@ return self; } +- (void)NS_initWithCell:(NSCell)cell +{ + [self setSendsActionOnEndEditing:[cell sendsActionOnEndEditing]]; + [self setObjectValue:[cell objectValue]]; + [self setFont:[cell font]]; + [self setAlignment:[cell alignment]]; + [self setContinuous:[cell isContinuous]]; + [self setLineBreakMode:[cell lineBreakMode]]; + [self setFormatter:[cell formatter]]; +} + @end @implementation NSControl : CPControl -{ -} - (id)initWithCoder:(CPCoder)aCoder { - return [self NS_initWithCoder:aCoder]; + self = [self NS_initWithCoder:aCoder]; + + if (self) + { + var cell = [aCoder decodeObjectForKey:@"NSCell"]; + [self NS_initWithCell:cell]; + } + + return self; } - (Class)classForKeyedArchiver diff --git a/Tools/nib2cib/NSImageView.j b/Tools/nib2cib/NSImageView.j index 48f94a3f1..593f1b424 100644 --- a/Tools/nib2cib/NSImageView.j +++ b/Tools/nib2cib/NSImageView.j @@ -29,29 +29,33 @@ - (id)NS_initWithCoder:(CPCoder)aCoder { - self = [super NS_initWithCoder:aCoder]; + return [super NS_initWithCoder:aCoder]; +} - if (self) - { - var cell = [aCoder decodeObjectForKey:@"NSCell"]; +- (void)NS_initWithCell:(NSCell)cell +{ + [super NS_initWithCell:cell]; - [self setImageScaling:[cell imageScaling]]; - [self setImageAlignment:[cell imageAlignment]]; - _isEditable = [cell isEditable]; - } - - return self; + [self setImageScaling:[cell imageScaling]]; + [self setImageAlignment:[cell imageAlignment]]; + _isEditable = [cell isEditable]; } @end @implementation NSImageView : CPImageView -{ -} - (id)initWithCoder:(CPCoder)aCoder { - return [super NS_initWithCoder:aCoder]; + self = [self NS_initWithCoder:aCoder]; + + if (self) + { + var cell = [aCoder decodeObjectForKey:@"NSCell"]; + [self NS_initWithCell:cell]; + } + + return self; } - (Class)classForKeyedArchiver diff --git a/Tools/nib2cib/NSLevelIndicator.j b/Tools/nib2cib/NSLevelIndicator.j index b65ac45c0..3acf47f6d 100644 --- a/Tools/nib2cib/NSLevelIndicator.j +++ b/Tools/nib2cib/NSLevelIndicator.j @@ -35,22 +35,17 @@ _minValue = [cell minValue]; _maxValue = [cell maxValue]; - self = [super NS_initWithCoder:aCoder]; - - if (self) - { - self = [self NS_initWithCell:cell]; - } - - return self; + return [super NS_initWithCoder:aCoder]; } /*! Intialise the receiver given a cell. This method is meant for reuse by controls which contain cells other than CPLevelIndicator itself. */ -- (id)NS_initWithCell:(NSCell)cell +- (void)NS_initWithCell:(NSCell)cell { + [super NS_initWithCell:cell]; + _minValue = [cell minValue]; _maxValue = [cell maxValue]; _levelIndicatorStyle = [cell levelIndicatorStyle]; @@ -63,8 +58,6 @@ [self setEditable:[cell isEditable]]; [self setEnabled:[cell isEnabled]]; [self setContinuous:[cell isContinuous]]; - - return self; } @end @@ -75,7 +68,15 @@ - (id)initWithCoder:(CPCoder)aCoder { - return [self NS_initWithCoder:aCoder]; + self = [self NS_initWithCoder:aCoder]; + + if (self) + { + var cell = [aCoder decodeObjectForKey:@"NSCell"]; + [self NS_initWithCell:cell]; + } + + return self; } - (Class)classForKeyedArchiver diff --git a/Tools/nib2cib/NSOutlineView.j b/Tools/nib2cib/NSOutlineView.j index e0ddae889..aca77a835 100644 --- a/Tools/nib2cib/NSOutlineView.j +++ b/Tools/nib2cib/NSOutlineView.j @@ -57,7 +57,15 @@ - (id)initWithCoder:(CPCoder)aCoder { - return [self NS_initWithCoder:aCoder]; + self = [self NS_initWithCoder:aCoder]; + + if (self) + { + var cell = [aCoder decodeObjectForKey:@"NSCell"]; + [self NS_initWithCell:cell]; + } + + return self; } - (Class)classForKeyedArchiver diff --git a/Tools/nib2cib/NSPopUpButton.j b/Tools/nib2cib/NSPopUpButton.j index 0a58d88b2..ad09130e8 100644 --- a/Tools/nib2cib/NSPopUpButton.j +++ b/Tools/nib2cib/NSPopUpButton.j @@ -30,23 +30,22 @@ - (id)NS_initWithCoder:(CPCoder)aCoder { - if (self = [super NS_initWithCoder:aCoder]) - { - var cell = [aCoder decodeObjectForKey:@"NSCell"]; + return [super NS_initWithCoder:aCoder]; +} - _menu = [cell menu]; +- (void)NS_initWithCell:(NSCell)cell +{ + [super NS_initWithCell:cell]; - // adjust the frame - _frame.origin.x -= 4; - _frame.origin.y -= 4; - _frame.size.width += 7; - _bounds.size.width += 7; + _menu = [cell menu]; + [self setPullsDown:[cell pullsDown]]; + _preferredEdge = [cell preferredEdge]; - [self setPullsDown:[cell pullsDown]]; - _preferredEdge = [cell preferredEdge]; - } - - return self; + // adjust the frame + _frame.origin.x -= 4; + _frame.origin.y -= 4; + _frame.size.width += 7; + _bounds.size.width += 7; } @end @@ -57,7 +56,15 @@ - (id)initWithCoder:(CPCoder)aCoder { - return [self NS_initWithCoder:aCoder]; + self = [self NS_initWithCoder:aCoder]; + + if (self) + { + var cell = [aCoder decodeObjectForKey:@"NSCell"]; + [self NS_initWithCell:cell]; + } + + return self; } - (Class)classForKeyedArchiver diff --git a/Tools/nib2cib/NSPredicateEditor.j b/Tools/nib2cib/NSPredicateEditor.j index add06a19b..9c4578130 100644 --- a/Tools/nib2cib/NSPredicateEditor.j +++ b/Tools/nib2cib/NSPredicateEditor.j @@ -44,7 +44,15 @@ - (id)initWithCoder:(CPCoder)aCoder { - return [self NS_initWithCoder:aCoder]; + self = [self NS_initWithCoder:aCoder]; + + if (self) + { + var cell = [aCoder decodeObjectForKey:@"NSCell"]; + [self NS_initWithCell:cell]; + } + + return self; } - (Class)classForKeyedArchiver diff --git a/Tools/nib2cib/NSRuleEditor.j b/Tools/nib2cib/NSRuleEditor.j index aa2db53ae..dac606ea6 100644 --- a/Tools/nib2cib/NSRuleEditor.j +++ b/Tools/nib2cib/NSRuleEditor.j @@ -65,7 +65,15 @@ - (id)initWithCoder:(CPCoder)aCoder { - return [self NS_initWithCoder:aCoder]; + self = [self NS_initWithCoder:aCoder]; + + if (self) + { + var cell = [aCoder decodeObjectForKey:@"NSCell"]; + [self NS_initWithCell:cell]; + } + + return self; } - (Class)classForKeyedArchiver diff --git a/Tools/nib2cib/NSScroller.j b/Tools/nib2cib/NSScroller.j index 5c6b26a4b..e67d4bd49 100644 --- a/Tools/nib2cib/NSScroller.j +++ b/Tools/nib2cib/NSScroller.j @@ -76,7 +76,15 @@ - (id)initWithCoder:(CPCoder)aCoder { - return [self NS_initWithCoder:aCoder]; + self = [self NS_initWithCoder:aCoder]; + + if (self) + { + var cell = [aCoder decodeObjectForKey:@"NSCell"]; + [self NS_initWithCell:cell]; + } + + return self; } - (Class)classForKeyedArchiver diff --git a/Tools/nib2cib/NSSearchField.j b/Tools/nib2cib/NSSearchField.j index 05fd4e50e..30bf0d384 100644 --- a/Tools/nib2cib/NSSearchField.j +++ b/Tools/nib2cib/NSSearchField.j @@ -31,27 +31,24 @@ - (id)NS_initWithCoder:(CPCoder)aCoder { - self = [super NS_initWithCoder:aCoder]; + return [super NS_initWithCoder:aCoder]; +} - if (self) +- (void)NS_initWithCell:(NSCell)cell +{ + [super NS_initWithCell:cell]; + + [self setRecentsAutosaveName:[cell recentsAutosaveName]]; + [self setMaximumRecents:[cell maximumRecents]]; + [self setSendsWholeSearchString:[cell sendsWholeSearchString]]; + [self setSendsSearchStringImmediately:[cell sendsSearchStringImmediately]]; + + if ([[[Converter sharedConverter] themes][0] name] == @"Aristo" && [self isBezeled]) { - var cell = [aCoder decodeObjectForKey:@"NSCell"]; - - [self setRecentsAutosaveName:[cell recentsAutosaveName]]; - [self setMaximumRecents:[cell maximumRecents]]; - [self setSendsWholeSearchString:[cell sendsWholeSearchString]]; - [self setSendsSearchStringImmediately:[cell sendsSearchStringImmediately]]; - - if ([[[Converter sharedConverter] themes][0] name] == @"Aristo" && [self isBezeled]) - { - // NSTextField.j makes the field +7.0 pixels tall. We want +8.0 to go to 30. - var frame = [self frame]; - [self setFrameSize:CGSizeMake(frame.size.width, frame.size.height)]; - } - + // NSTextField.j makes the field +7.0 pixels tall. We want +8.0 to go to 30. + var frame = [self frame]; + [self setFrameSize:CGSizeMake(frame.size.width, frame.size.height)]; } - - return self; } @end @@ -64,6 +61,12 @@ { self = [self NS_initWithCoder:aCoder]; + if (self) + { + var cell = [aCoder decodeObjectForKey:@"NSCell"]; + [self NS_initWithCell:cell]; + } + return self; } diff --git a/Tools/nib2cib/NSSecureTextField.j b/Tools/nib2cib/NSSecureTextField.j index d1d1ea5f9..f114a6e79 100644 --- a/Tools/nib2cib/NSSecureTextField.j +++ b/Tools/nib2cib/NSSecureTextField.j @@ -31,7 +31,15 @@ - (id)initWithCoder:(CPCoder)aCoder { - return [self NS_initWithCoder:aCoder]; + self = [self NS_initWithCoder:aCoder]; + + if (self) + { + var cell = [aCoder decodeObjectForKey:@"NSCell"]; + [self NS_initWithCell:cell]; + } + + return self; } - (Class)classForKeyedArchiver diff --git a/Tools/nib2cib/NSSegmentedControl.j b/Tools/nib2cib/NSSegmentedControl.j index 35394ec49..8525a2611 100644 --- a/Tools/nib2cib/NSSegmentedControl.j +++ b/Tools/nib2cib/NSSegmentedControl.j @@ -34,45 +34,45 @@ _segments = []; _themeStates = []; - if (self = [super NS_initWithCoder:aCoder]) + return [super NS_initWithCoder:aCoder]; +} + +- (void)NS_initWithCell:(NSCell)cell +{ + [super NS_initWithCell:cell]; + + var frame = [self frame], + originalWidth = frame.size.width; + + frame.size.width = 0; + frame.origin.x = MAX(frame.origin.x - 4.0, 0.0); + + [self setFrame:frame]; + + _segments = [cell segments]; + _selectedSegment = [cell selectedSegment]; + _segmentStyle = [cell segmentStyle]; + _trackingMode = [cell trackingMode]; + + [self setValue:CPCenterTextAlignment forThemeAttribute:@"alignment"]; + + // HACK + + for (var i = 0; i < _segments.length; i++) { - var frame = [self frame], - originalWidth = frame.size.width; + _themeStates[i] = _segments[i].selected ? CPThemeStateSelected : CPThemeStateNormal; - frame.size.width = 0; - frame.origin.x = MAX(frame.origin.x - 4.0, 0.0); - - [self setFrame:frame]; - - var cell = [aCoder decodeObjectForKey:"NSCell"]; - - _segments = [cell segments]; - _selectedSegment = [cell selectedSegment]; - _segmentStyle = [cell segmentStyle]; - _trackingMode = [cell trackingMode]; - - [self setValue:CPCenterTextAlignment forThemeAttribute:@"alignment"]; - - // HACK - - for (var i = 0; i < _segments.length; i++) - { - _themeStates[i] = _segments[i].selected ? CPThemeStateSelected : CPThemeStateNormal; - - [self tileWithChangedSegment:i]; - } - - // Adjust for differences between Cocoa and Cappuccino widget framing. - frame.origin.x += 6; - - if ([[[Converter sharedConverter] themes][0] name] == @"Aristo2") - frame.size.height += 1; - - frame.size.width = originalWidth; - [self setFrame:frame]; + [self tileWithChangedSegment:i]; } - return self; + // Adjust for differences between Cocoa and Cappuccino widget framing. + frame.origin.x += 6; + + if ([[[Converter sharedConverter] themes][0] name] == @"Aristo2") + frame.size.height += 1; + + frame.size.width = originalWidth; + [self setFrame:frame]; } @end @@ -83,7 +83,15 @@ - (id)initWithCoder:(CPCoder)aCoder { - return [self NS_initWithCoder:aCoder]; + self = [self NS_initWithCoder:aCoder]; + + if (self) + { + var cell = [aCoder decodeObjectForKey:@"NSCell"]; + [self NS_initWithCell:cell]; + } + + return self; } - (Class)classForKeyedArchiver diff --git a/Tools/nib2cib/NSSlider.j b/Tools/nib2cib/NSSlider.j index 239aa42cd..b9acdebce 100644 --- a/Tools/nib2cib/NSSlider.j +++ b/Tools/nib2cib/NSSlider.j @@ -35,23 +35,15 @@ _minValue = [cell minValue]; _maxValue = [cell maxValue]; - self = [super NS_initWithCoder:aCoder]; + return [super NS_initWithCoder:aCoder]; +} - if (self) - { - _altIncrementValue = [cell altIncrementValue]; +- (void)NS_initWithCell:(NSCell)cell +{ + [super NS_initWithCell:cell]; - [self setSliderType:[cell sliderType]]; - - var frame = [self frame]; - - if ([self sliderType] === CPCircularSlider) - [self setFrameSize:CGSizeMake(frame.size.width + 2.0, frame.size.height + 2.0)]; - else - [self setFrame:CGRectMake(frame.origin.x + 2, frame.origin.y, frame.size.width - 4, frame.size.height)]; - } - - return self; + _altIncrementValue = [cell altIncrementValue]; + [self setSliderType:[cell sliderType]]; } @end @@ -62,7 +54,22 @@ - (id)initWithCoder:(CPCoder)aCoder { - return [self NS_initWithCoder:aCoder]; + self = [self NS_initWithCoder:aCoder]; + + if (self) + { + var cell = [aCoder decodeObjectForKey:@"NSCell"]; + [self NS_initWithCell:cell]; + + var frame = [self frame]; + + if ([self sliderType] === CPCircularSlider) + [self setFrameSize:CGSizeMake(frame.size.width + 2.0, frame.size.height + 2.0)]; + else + [self setFrame:CGRectMake(frame.origin.x + 2, frame.origin.y, frame.size.width - 4, frame.size.height)]; + } + + return self; } - (Class)classForKeyedArchiver diff --git a/Tools/nib2cib/NSStepper.j b/Tools/nib2cib/NSStepper.j index d7e91f141..043461e86 100644 --- a/Tools/nib2cib/NSStepper.j +++ b/Tools/nib2cib/NSStepper.j @@ -29,37 +29,41 @@ - (id)NS_initWithCoder:(CPCoder)aCoder { - self = [super NS_initWithCoder:aCoder]; + return [super NS_initWithCoder:aCoder]; +} - if (self) - { - var cell = [aCoder decodeObjectForKey:@"NSCell"]; +- (void)NS_initWithCell:(NSCell)cell +{ + [super NS_initWithCell:cell]; - self._minValue = [cell minValue]; - self._maxValue = [cell maxValue]; - self._increment = [cell increment]; - self._valueWraps = [cell valueWraps]; - self._autorepeat = [cell autorepeat]; - self._objectValue = [cell objectValue]; + self._minValue = [cell minValue]; + self._maxValue = [cell maxValue]; + self._increment = [cell increment]; + self._valueWraps = [cell valueWraps]; + self._autorepeat = [cell autorepeat]; + self._objectValue = [cell objectValue]; - // Convert Cocoa normal size to Cappuccino normal size. - self._frame.origin.y += 2; - self._frame.size.height -= 2; - self._bounds.size.height -= 2; - } - - return self; + // Convert Cocoa normal size to Cappuccino normal size. + self._frame.origin.y += 2; + self._frame.size.height -= 2; + self._bounds.size.height -= 2; } @end @implementation NSStepper : CPStepper -{ -} - (id)initWithCoder:(CPCoder)aCoder { - return [self NS_initWithCoder:aCoder]; + self = [self NS_initWithCoder:aCoder]; + + if (self) + { + var cell = [aCoder decodeObjectForKey:@"NSCell"]; + [self NS_initWithCell:cell]; + } + + return self; } - (Class)classForKeyedArchiver diff --git a/Tools/nib2cib/NSTableCellView.j b/Tools/nib2cib/NSTableCellView.j index 51010131c..6a2ff3723 100644 --- a/Tools/nib2cib/NSTableCellView.j +++ b/Tools/nib2cib/NSTableCellView.j @@ -4,17 +4,13 @@ @implementation CPTableCellView (NSCoding) - (id)NS_initWithCoder:(CPCoder)aCoder -{ - self = [super NS_initWithCoder:aCoder]; - - return self; +{ + return [super NS_initWithCoder:aCoder]; } @end @implementation NSTableCellView : CPTableCellView -{ -} - (id)initWithCoder:(CPCoder)aCoder { diff --git a/Tools/nib2cib/NSTableColumn.j b/Tools/nib2cib/NSTableColumn.j index 83f5742cf..86a353152 100644 --- a/Tools/nib2cib/NSTableColumn.j +++ b/Tools/nib2cib/NSTableColumn.j @@ -49,14 +49,14 @@ var IBDefaultFontSizeTableHeader = 11.0; if ([dataViewCell isKindOfClass:[NSImageCell class]]) { _dataView = [[CPImageView alloc] initWithFrame:CGRectMakeZero()]; - [_dataView setImageScaling:[dataViewCell imageScaling]]; - [_dataView setImageAlignment:[dataViewCell imageAlignment]]; + [_dataView NS_initWithCell:dataViewCell]; } else if ([dataViewCell isKindOfClass:[NSTextFieldCell class]]) { _dataView = [[CPTextField alloc] initWithFrame:CGRectMakeZero()]; + [_dataView NS_initWithCell:dataViewCell]; - var font = [dataViewCell font], + var font = [_dataView font], selectedFont = nil; if (font) @@ -69,28 +69,16 @@ var IBDefaultFontSizeTableHeader = 11.0; [_dataView setFont:font]; [_dataView setValue:selectedFont forThemeAttribute:@"font" inState:CPThemeStateSelectedDataView]; - - [_dataView setLineBreakMode:CPLineBreakByTruncatingTail]; - - [_dataView setValue:CPCenterVerticalTextAlignment forThemeAttribute:@"vertical-alignment"]; - [_dataView setValue:CGInsetMake(0.0, 5.0, 0.0, 5.0) forThemeAttribute:@"content-inset"]; - - var textColor = [dataViewCell textColor], - defaultColor = [_dataView currentValueForThemeAttribute:@"text-color"]; - - // Don't change the text color if it is not the default, that messes up the theme lookups later - if (![textColor isEqual:defaultColor]) - [_dataView setTextColor:[dataViewCell textColor]]; } else if ([dataViewCell isKindOfClass:[NSButtonCell class]]) { _dataView = [[CPButton alloc] initWithFrame:CGRectMakeZero()]; - _dataView = [_dataView NS_initWithCell:dataViewCell]; + [_dataView NS_initWithCell:dataViewCell]; } else if ([dataViewCell isKindOfClass:[NSLevelIndicatorCell class]]) { _dataView = [[CPLevelIndicator alloc] initWithFrame:CGRectMakeZero()]; - _dataView = [_dataView NS_initWithCell:dataViewCell]; + [_dataView NS_initWithCell:dataViewCell]; } [_dataView setValue:[dataViewCell alignment] forThemeAttribute:@"alignment"]; diff --git a/Tools/nib2cib/NSTableView.j b/Tools/nib2cib/NSTableView.j index 45a6c9da8..46eefdd7c 100644 --- a/Tools/nib2cib/NSTableView.j +++ b/Tools/nib2cib/NSTableView.j @@ -63,7 +63,7 @@ _tableColumns = [aCoder decodeObjectForKey:@"NSTableColumns"]; [_tableColumns makeObjectsPerformSelector:@selector(setTableView:) withObject:self]; - + _archivedDataViews = [aCoder decodeObjectForKey:@"NSTableViewArchivedReusableViewsKey"]; _intercellSpacing = CGSizeMake([aCoder decodeFloatForKey:@"NSIntercellSpacingWidth"], @@ -99,7 +99,15 @@ - (id)initWithCoder:(CPCoder)aCoder { - return [self NS_initWithCoder:aCoder]; + self = [self NS_initWithCoder:aCoder]; + + if (self) + { + var cell = [aCoder decodeObjectForKey:@"NSCell"]; + [self NS_initWithCell:cell]; + } + + return self; } - (Class)classForKeyedArchiver diff --git a/Tools/nib2cib/NSTextField.j b/Tools/nib2cib/NSTextField.j index b930ff4ab..9aa9f5bfb 100644 --- a/Tools/nib2cib/NSTextField.j +++ b/Tools/nib2cib/NSTextField.j @@ -30,68 +30,71 @@ - (id)NS_initWithCoder:(CPCoder)aCoder { - self = [super NS_initWithCoder:aCoder]; + return [super NS_initWithCoder:aCoder]; +} - if (self) +- (void)NS_initWithCell:(NSCell)cell +{ + [super NS_initWithCell:cell]; + + [self setEditable:[cell isEditable]]; + [self setSelectable:[cell isSelectable]]; + [self setSendsActionOnEndEditing:[cell sendsActionOnEndEditing]]; + + [self setBordered:[cell isBordered]]; + [self setBezeled:[cell isBezeled]]; + [self setBezelStyle:[cell bezelStyle]]; + [self setDrawsBackground:[cell drawsBackground]]; + + [self setLineBreakMode:[cell lineBreakMode]]; + [self setAlignment:[cell alignment]]; + [self setTextFieldBackgroundColor:[cell backgroundColor]]; + + [self setPlaceholderString:[cell placeholderString]]; + + var textColor = [cell textColor], + defaultColor = [self currentValueForThemeAttribute:@"text-color"]; + + // Don't change the text color if it is not the default, that messes up the theme lookups later + if (![textColor isEqual:defaultColor]) + [self setTextColor:[cell textColor]]; + + // Only adjust the origin and size if this is a bezeled textfield. + // This ensures that labels positioned in IB are properly positioned after nibcib. + var frame = [self frame]; + + if ([self isBezeled]) { - var cell = [aCoder decodeObjectForKey:@"NSCell"]; - - [self sendActionOn:CPKeyUpMask | CPKeyDownMask]; - - [self setEditable:[cell isEditable]]; - [self setSelectable:[cell isSelectable]]; - - [self setBordered:[cell isBordered]]; - [self setBezeled:[cell isBezeled]]; - [self setBezelStyle:[cell bezelStyle]]; - [self setDrawsBackground:[cell drawsBackground]]; - - [self setLineBreakMode:[cell lineBreakMode]]; - [self setAlignment:[cell alignment]]; - [self setTextFieldBackgroundColor:[cell backgroundColor]]; - - [self setPlaceholderString:[cell placeholderString]]; - - var textColor = [cell textColor], - defaultColor = [self currentValueForThemeAttribute:@"text-color"]; - - // Don't change the text color if it is not the default, that messes up the theme lookups later - if (![textColor isEqual:defaultColor]) - [self setTextColor:[cell textColor]]; - - // Only adjust the origin and size if this is a bezeled textfield. - // This ensures that labels positioned in IB are properly positioned after nibcib. - var frame = [self frame]; - - if ([self isBezeled]) - { - [self setFrameOrigin:CGPointMake(frame.origin.x - 4.0, frame.origin.y - 3.0)]; - [self setFrameSize:CGSizeMake(frame.size.width + 8.0, frame.size.height + 7.0)]; - } - else - { - [self setFrameOrigin:CGPointMake(frame.origin.x + 3.0, frame.origin.y)]; - [self setFrameSize:CGSizeMake(frame.size.width - 6.0, frame.size.height)]; - } - - CPLog.debug("NSTextField: title=\"" + [self stringValue] + "\", placeholder=" + ([cell placeholderString] == null ? "" : '"' + [cell placeholderString] + '"') + ", isBordered=" + [self isBordered] + ", isBezeled=" + [self isBezeled] + ", bezelStyle=" + [self bezelStyle]); - - if ([self formatter]) - CPLog.debug(">> Formatter: " + [[self formatter] description]); + [self setFrameOrigin:CGPointMake(frame.origin.x - 4.0, frame.origin.y - 3.0)]; + [self setFrameSize:CGSizeMake(frame.size.width + 8.0, frame.size.height + 7.0)]; + } + else + { + [self setFrameOrigin:CGPointMake(frame.origin.x + 3.0, frame.origin.y)]; + [self setFrameSize:CGSizeMake(frame.size.width - 6.0, frame.size.height)]; } - return self; + CPLog.debug("NSTextField: title=\"" + [self stringValue] + "\", placeholder=" + ([cell placeholderString] == null ? "" : '"' + [cell placeholderString] + '"') + ", isBordered=" + [self isBordered] + ", isBezeled=" + [self isBezeled] + ", bezelStyle=" + [self bezelStyle]); + + if ([self formatter]) + CPLog.debug(">> Formatter: " + [[self formatter] description]); } @end @implementation NSTextField : CPTextField -{ -} - (id)initWithCoder:(CPCoder)aCoder { - return [self NS_initWithCoder:aCoder]; + self = [self NS_initWithCoder:aCoder]; + + if (self) + { + var cell = [aCoder decodeObjectForKey:@"NSCell"]; + [self NS_initWithCell:cell]; + } + + return self; } - (Class)classForKeyedArchiver diff --git a/Tools/nib2cib/NSTokenField.j b/Tools/nib2cib/NSTokenField.j index a471542d1..dbbb1501a 100644 --- a/Tools/nib2cib/NSTokenField.j +++ b/Tools/nib2cib/NSTokenField.j @@ -31,38 +31,36 @@ - (id)NS_initWithCoder:(CPCoder)aCoder { - self = [super NS_initWithCoder:aCoder]; - - if (self) - { - var cell = [aCoder decodeObjectForKey:@"NSCell"]; - self = [self NS_initWithCell:cell]; - } - - return self; + return [super NS_initWithCoder:aCoder]; } /*! Intialise the receiver given a cell. This method is meant for reuse by controls which contain cells other than CPTokenField itself. */ -- (id)NS_initWithCell:(NSCell)cell +- (void)NS_initWithCell:(NSCell)cell { + [super NS_initWithCell:cell]; + // Uncomment if we add support for token styles. // _style = [cell tokenStyle]; - - return self; } @end @implementation NSTokenField : CPTokenField -{ -} - (id)initWithCoder:(CPCoder)aCoder { - return [self NS_initWithCoder:aCoder]; + self = [self NS_initWithCoder:aCoder]; + + if (self) + { + var cell = [aCoder decodeObjectForKey:@"NSCell"]; + [self NS_initWithCell:cell]; + } + + return self; } - (Class)classForKeyedArchiver