mirror of
https://github.com/cappuccino/cappuccino.git
synced 2026-10-12 19:47:07 +00:00
Fixed: table cells were not initialized from xib settings
This is a second attempt to fix the problems addressed by 69bbe627a9.
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.
This commit is contained in:
1 parent
07f9b94548
commit
9ea3b70143
22 files changed
+376
-286
No files matched your search
@@ -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
|
||||
|
||||
+13
-13
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
+32
-26
@@ -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
|
||||
|
||||
+21
-18
@@ -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
|
||||
|
||||
+17
-13
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
+23
-16
@@ -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
|
||||
|
||||
+24
-20
@@ -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
|
||||
|
||||
@@ -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
|
||||
{
|
||||
|
||||
@@ -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"];
|
||||
|
||||
@@ -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
|
||||
|
||||
+53
-50
@@ -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 ? "<none>" : '"' + [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 ? "<none>" : '"' + [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
|
||||
|
||||
@@ -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
|
||||
|
||||
Reference in new issue
Block a user