diff --git a/AppKit/CPToolbar.j b/AppKit/CPToolbar.j
index fe60da738..0917ce948 100644
--- a/AppKit/CPToolbar.j
+++ b/AppKit/CPToolbar.j
@@ -220,7 +220,7 @@ var CPToolbarConfigurationsByIdentifier = nil;
*/
- (void)setDelegate:(id)aDelegate
{
- if (_delegate == aDelegate)
+ if (_delegate === aDelegate)
return;
_delegate = aDelegate;
@@ -252,19 +252,22 @@ var CPToolbarConfigurationsByIdentifier = nil;
/* @ignore */
- (void)_reloadToolbarItems
{
- // As of OS X 10.5 (Leopard), toolbar items can be set in IB and a toolbar delegate is optional.
- // Toolbar items can be combined from both IB and a delegate (see Apple's NSToolbar guide for IB, for more details).
+ // As of OS X 10.5 (Leopard), toolbar items can be set in IB and a
+ // toolbar delegate is optional. Toolbar items can be combined from
+ // both IB and a delegate (see Apple's NSToolbar guide for IB, for more details).
- // _defaultItems may have been loaded from Nib
- _itemIdentifiers = [_defaultItems valueForKey:"_itemIdentifier"];
-
- if (_delegate)
- {
- var itemIdentifiersFromDelegate = [[_delegate toolbarDefaultItemIdentifiers:self] mutableCopy];
- if(itemIdentifiersFromDelegate)
- _itemIdentifiers = [_itemIdentifiers arrayByAddingObjectsFromArray:itemIdentifiersFromDelegate];
- }
- var count = [_itemIdentifiers count];
+ // _defaultItems may have been loaded from Cib
+ _itemIdentifiers = [_defaultItems valueForKey:@"itemIdentifier"] || [];
+
+ if (_delegate)
+ {
+ var itemIdentifiersFromDelegate = [[_delegate toolbarDefaultItemIdentifiers:self] mutableCopy];
+
+ if (itemIdentifiersFromDelegate)
+ _itemIdentifiers = [_itemIdentifiers arrayByAddingObjectsFromArray:itemIdentifiersFromDelegate];
+ }
+
+ var count = [_itemIdentifiers count];
_items = [];
@@ -275,17 +278,18 @@ var CPToolbarConfigurationsByIdentifier = nil;
var identifier = _itemIdentifiers[index],
item = [CPToolbarItem _standardItemWithItemIdentifier:identifier];
+ // May come from a Cib.
if (!item)
- item = [_identifiedItems objectForKey:identifier]; // may have been loaded from Nib
+ item = [_identifiedItems objectForKey:identifier];
if (!item && _delegate)
item = [_delegate toolbar:self itemForItemIdentifier:identifier willBeInsertedIntoToolbar:YES];
-
+
item = [item copy];
-
- if (item == nil)
+
+ if (item === nil)
[CPException raise:CPInvalidArgumentException
- reason:sprintf(@"_delegate %s returned nil toolbar item returned for identifier %s", _delegate, identifier)];
+ reason:@"Toolbar delegate " + _delegate + " returned nil toolbar item for identifier \"" + identifier + "\""];
item._toolbar = self;
@@ -296,9 +300,9 @@ var CPToolbarConfigurationsByIdentifier = nil;
// Store items sorted by priority. We want items to be removed first at the end of the array,
// items to be removed last at the front.
-
+
_itemsSortedByVisibilityPriority = [_items sortedArrayUsingFunction:_CPToolbarItemVisibilityPriorityCompare context:NULL];
-
+
[_toolbarView reloadToolbarItems];
}
@@ -369,10 +373,18 @@ var CPToolbarConfigurationsByIdentifier = nil;
/* @ignore */
- (id)_defaultToolbarItems
{
- if (!_defaultItems)
- if ([_delegate respondsToSelector:@selector(toolbarDefaultItemIdentifiers:)])
- _defaultItems = [self _itemsWithIdentifiers:[_delegate toolbarDefaultItemIdentifiers:self]];
-
+ if (!_defaultItems && [_delegate respondsToSelector:@selector(toolbarDefaultItemIdentifiers:)])
+ {
+ _defaultItems = [];
+
+ var identifiers = [_delegate toolbarDefaultItemIdentifiers:self],
+ index = 0,
+ count = [identifiers count];
+
+ for (; index < count; ++index)
+ [_defaultItems addObject:[self _itemForItemIdentifier:identifiers[index] willBeInsertedIntoToolbar:NO]];
+ }
+
return _defaultItems;
}
@@ -382,35 +394,39 @@ var CPToolbarConfigurationsByIdentifier = nil;
*/
- (void)toolbarItemDidChange:(CPToolbarItem)anItem
{
- if([_identifiedItems objectForKey:[anItem itemIdentifier]])
+ if ([_identifiedItems objectForKey:[anItem itemIdentifier]])
[_identifiedItems setObject:anItem forKey:[anItem itemIdentifier]];
-
- for(var index = 0; index <= _items.length; index++)
+
+ var index = 0,
+ count = [_items count];
+
+ for (; index <= count; ++index)
{
var item = _items[index];
- if([item itemIdentifier] === [anItem itemIdentifier])
+
+ if ([item itemIdentifier] === [anItem itemIdentifier])
{
_items[index] = anItem;
_itemsSortedByVisibilityPriority = [_items sortedArrayUsingFunction:_CPToolbarItemVisibilityPriorityCompare context:NULL];
+
[_toolbarView reloadToolbarItems];
- break;
- }
+ }
}
}
@end
-var CPToolbarIdentifierKey = "CPToolbarIdentifierKey",
- CPToolbarDisplayModeKey = "CPToolbarDisplayModeKey",
- CPToolbarShowsBaselineSeparatorKey = "CPToolbarShowsBaselineSeparatorKey",
- CPToolbarAllowsUserCustomizationKey = "CPToolbarAllowsUserCustomizationKey",
- CPToolbarIsVisibleKey = "CPToolbarIsVisibleKey",
- CPToolbarDelegateKey = "CPToolbarDelegateKey",
- CPToolbarIdentifiedItemsKey = "CPToolbarIdentifiedItemsKey",
- CPToolbarDefaultItemsKey = "CPToolbarDefaultItemsKey",
- CPToolbarAllowedItemsKey = "CPToolbarAllowedItemsKey",
- CPToolbarSelectableItemsKey = "CPToolbarSelectableItemsKey";
+var CPToolbarIdentifierKey = @"CPToolbarIdentifierKey",
+ CPToolbarDisplayModeKey = @"CPToolbarDisplayModeKey",
+ CPToolbarShowsBaselineSeparatorKey = @"CPToolbarShowsBaselineSeparatorKey",
+ CPToolbarAllowsUserCustomizationKey = @"CPToolbarAllowsUserCustomizationKey",
+ CPToolbarIsVisibleKey = @"CPToolbarIsVisibleKey",
+ CPToolbarDelegateKey = @"CPToolbarDelegateKey",
+ CPToolbarIdentifiedItemsKey = @"CPToolbarIdentifiedItemsKey",
+ CPToolbarDefaultItemsKey = @"CPToolbarDefaultItemsKey",
+ CPToolbarAllowedItemsKey = @"CPToolbarAllowedItemsKey",
+ CPToolbarSelectableItemsKey = @"CPToolbarSelectableItemsKey";
@implementation CPToolbar (CPCoding)
@@ -424,38 +440,36 @@ var CPToolbarIdentifierKey = "CPToolbarIdentifierKey",
if (self)
{
- _identifier = [aCoder decodeObjectForKey:CPToolbarIdentifierKey];
- _displayMode = [aCoder decodeIntForKey:CPToolbarDisplayModeKey];
- _showsBaselineSeparator = [aCoder decodeBoolForKey:CPToolbarShowsBaselineSeparatorKey];
- _allowsUserCustomization = [aCoder decodeBoolForKey:CPToolbarAllowsUserCustomizationKey];
- _isVisible = [aCoder decodeBoolForKey:CPToolbarIsVisibleKey];
-
- _identifiedItems = [aCoder decodeObjectForKey:CPToolbarIdentifiedItemsKey];
- _defaultItems = [aCoder decodeObjectForKey:CPToolbarDefaultItemsKey];
- _allowedItems = [aCoder decodeObjectForKey:CPToolbarAllowedItemsKey];
- _selectableItems = [aCoder decodeObjectForKey:CPToolbarSelectableItemsKey];
-
- var identifiedItems = [_identifiedItems allValues];
- [identifiedItems makeObjectsPerformSelector:@selector(_setToolbar:) withObject:self];
+ _identifier = [aCoder decodeObjectForKey:CPToolbarIdentifierKey];
+ _displayMode = [aCoder decodeIntForKey:CPToolbarDisplayModeKey];
+ _showsBaselineSeparator = [aCoder decodeBoolForKey:CPToolbarShowsBaselineSeparatorKey];
+ _allowsUserCustomization = [aCoder decodeBoolForKey:CPToolbarAllowsUserCustomizationKey];
+ _isVisible = [aCoder decodeBoolForKey:CPToolbarIsVisibleKey];
+
+ _identifiedItems = [aCoder decodeObjectForKey:CPToolbarIdentifiedItemsKey];
+ _defaultItems = [aCoder decodeObjectForKey:CPToolbarDefaultItemsKey];
+ _allowedItems = [aCoder decodeObjectForKey:CPToolbarAllowedItemsKey];
+ _selectableItems = [aCoder decodeObjectForKey:CPToolbarSelectableItemsKey];
+
+ [[_identifiedItems allValues] makeObjectsPerformSelector:@selector(_setToolbar:) withObject:self];
_items = [];
+
[CPToolbar _addToolbar:self forIdentifier:_identifier];
-// [self setDelegate:[aCoder decodeObjectForKey:CPToolbarDelegateKey]];
- /*
- The delegate is actually set by reference in the "IBObjectContainer" node of the Nib and not in the "NSToolbar" node,
- and therefore we cannot read it here (otherwise we'll only read NULL). The correct delegate is read later outside this class
- when node "IBObjectContainer" is processed, which triggers [setDelegate:].
-
- Because we don't know if a delegate will be set later (it is optional as if OS X 10.5), we need to call [_reloadToolbarItems] here
- in order to load any toolbar items that may have been configured in the Nib. Unfortunatelly this means that if there is a delegate
- specified, it will be read later and the resulting call to [setDelegate:] will cause [_reloadToolbarItems] to run again :-(
-
- Can we make this better?
- */
+ // This won't come from a Cib, but can come from manual encoding.
+ [self setDelegate:[aCoder decodeObjectForKey:CPToolbarDelegateKey]];
+
+ // Because we don't know if a delegate will be set later (it is optional
+ // as of OS X 10.5), we need to call -_reloadToolbarItems here.
+ // In order to load any toolbar items that may have been configured in the
+ // Cib. Unfortunatelly this means that if there is a delegate
+ // specified, it will be read later and the resulting call to -setDelegate:
+ // will cause -_reloadToolbarItems] to run again :-(
+ // FIXME: Can we make this better?
[self _reloadToolbarItems];
}
-
+
return self;
}
@@ -465,18 +479,18 @@ var CPToolbarIdentifierKey = "CPToolbarIdentifierKey",
*/
- (void)encodeWithCoder:(CPCoder)aCoder
{
- [aCoder encodeObject:_identifier forKey:CPToolbarIdentifierKey];
- [aCoder encodeInt:_displayMode forKey:CPToolbarDisplayModeKey];
- [aCoder encodeBool:_showsBaselineSeparator forKey:CPToolbarShowsBaselineSeparatorKey];
+ [aCoder encodeObject:_identifier forKey:CPToolbarIdentifierKey];
+ [aCoder encodeInt:_displayMode forKey:CPToolbarDisplayModeKey];
+ [aCoder encodeBool:_showsBaselineSeparator forKey:CPToolbarShowsBaselineSeparatorKey];
[aCoder encodeBool:_allowsUserCustomization forKey:CPToolbarAllowsUserCustomizationKey];
- [aCoder encodeBool:_isVisible forKey:CPToolbarIsVisibleKey];
-
- [aCoder encodeObject:_identifiedItems forKey:CPToolbarIdentifiedItemsKey];
- [aCoder encodeObject:_defaultItems forKey:CPToolbarDefaultItemsKey];
- [aCoder encodeObject:_allowedItems forKey:CPToolbarAllowedItemsKey];
- [aCoder encodeObject:_selectableItems forKey:CPToolbarSelectableItemsKey];
-
- [aCoder encodeConditionalObject:_delegate forKey:CPToolbarDelegateKey];
+ [aCoder encodeBool:_isVisible forKey:CPToolbarIsVisibleKey];
+
+ [aCoder encodeObject:_identifiedItems forKey:CPToolbarIdentifiedItemsKey];
+ [aCoder encodeObject:_defaultItems forKey:CPToolbarDefaultItemsKey];
+ [aCoder encodeObject:_allowedItems forKey:CPToolbarAllowedItemsKey];
+ [aCoder encodeObject:_selectableItems forKey:CPToolbarSelectableItemsKey];
+
+ [aCoder encodeConditionalObject:_delegate forKey:CPToolbarDelegateKey];
}
@end
@@ -520,7 +534,7 @@ var _CPToolbarItemInfoMake = function(anIndex, aView, aLabel, aMinWidth)
+ (void)initialize
{
- if (self != [_CPToolbarView class])
+ if (self !== [_CPToolbarView class])
return;
var bundle = [CPBundle bundleForClass:self];
@@ -819,7 +833,7 @@ var _CPToolbarItemInfoMake = function(anIndex, aView, aLabel, aMinWidth)
_minWidth += [view minSize].width + TOOLBAR_ITEM_MARGIN;
}
-
+
[self tile];
}
@@ -882,7 +896,16 @@ var TOP_MARGIN = 5.0,
_toolbar = aToolbar;
- [_toolbarItem addObserver:self forKeyPath:"enabled" options:0 context:NULL];
+ var keyPaths = [@"label", @"image", @"alternateImage", @"minSize", @"maxSize", @"enabled"],
+ index = 0,
+ count = [keyPaths count];
+
+ for (; index < count; ++index)
+ [_toolbarItem
+ addObserver:self
+ forKeyPath:keyPaths[index]
+ options:0
+ context:NULL];
}
return self;
@@ -1077,9 +1100,10 @@ var TOP_MARGIN = 5.0,
change:(CPDictionary)aChange
context:(id)aContext
{
- // FIXME: Not clear if -synchronizeWindowTitleWithDocumentName is the best way to go.
if (aKeyPath === "enabled")
[self setEnabled:[anObject isEnabled]];
+ else
+ [self updateFromItem];
}
@end
diff --git a/AppKit/CPToolbarItem.j b/AppKit/CPToolbarItem.j
index 5562ef784..54e93c6b0 100644
--- a/AppKit/CPToolbarItem.j
+++ b/AppKit/CPToolbarItem.j
@@ -48,13 +48,13 @@ CPToolbarItemVisibilityPriorityHigh = 1000;
*/
CPToolbarItemVisibilityPriorityUser = 2000;
-CPToolbarSeparatorItemIdentifier = @"CPToolbarSeparatorItemIdentifier";
-CPToolbarSpaceItemIdentifier = @"CPToolbarSpaceItemIdentifier";
-CPToolbarFlexibleSpaceItemIdentifier = @"CPToolbarFlexibleSpaceItemIdentifier";
-CPToolbarShowColorsItemIdentifier = @"CPToolbarShowColorsItemIdentifier";
-CPToolbarShowFontsItemIdentifier = @"CPToolbarShowFontsItemIdentifier";
-CPToolbarCustomizeToolbarItemIdentifier = @"CPToolbarCustomizeToolbarItemIdentifier";
-CPToolbarPrintItemIdentifier = @"CPToolbarPrintItemIdentifier";
+CPToolbarSeparatorItemIdentifier = @"CPToolbarSeparatorItem";
+CPToolbarSpaceItemIdentifier = @"CPToolbarSpaceItem";
+CPToolbarFlexibleSpaceItemIdentifier = @"CPToolbarFlexibleSpaceItem";
+CPToolbarShowColorsItemIdentifier = @"CPToolbarShowColorsItem";
+CPToolbarShowFontsItemIdentifier = @"CPToolbarShowFontsItem";
+CPToolbarCustomizeToolbarItemIdentifier = @"CPToolbarCustomizeToolbarItem";
+CPToolbarPrintItemIdentifier = @"CPToolbarPrintItem";
/*!
@ingroup appkit
@@ -114,6 +114,7 @@ CPToolbarPrintItemIdentifier = @"CPToolbarPrintItemIdentifier";
_maxSize = CGSizeMakeZero();
_visibilityPriority = CPToolbarItemVisibilityPriorityStandard;
+ _autovalidates = YES;
}
return self;
@@ -157,9 +158,6 @@ CPToolbarPrintItemIdentifier = @"CPToolbarPrintItemIdentifier";
- (void)setLabel:(CPString)aLabel
{
_label = aLabel;
-
- if(_toolbar)
- [_toolbar toolbarItemDidChange:self];
}
/*!
@@ -177,9 +175,6 @@ CPToolbarPrintItemIdentifier = @"CPToolbarPrintItemIdentifier";
- (void)setPaletteLabel:(CPString)aPaletteLabel
{
_paletteLabel = aPaletteLabel;
-
- if(_toolbar)
- [_toolbar toolbarItemDidChange:self];
}
/*!
@@ -205,9 +200,6 @@ CPToolbarPrintItemIdentifier = @"CPToolbarPrintItemIdentifier";
[view setToolTip:aToolTip];
_toolTip = aToolTip;
-
- if(_toolbar)
- [_toolbar toolbarItemDidChange:self];
}
/*!
@@ -231,9 +223,6 @@ CPToolbarPrintItemIdentifier = @"CPToolbarPrintItemIdentifier";
[_view setTag:aTag];
_tag = aTag;
-
- if(_toolbar)
- [_toolbar toolbarItemDidChange:self];
}
/*!
@@ -259,9 +248,6 @@ CPToolbarPrintItemIdentifier = @"CPToolbarPrintItemIdentifier";
else if ([_view respondsToSelector:@selector(setTarget:)])
[_view setTarget:aTarget];
-
- if(_toolbar)
- [_toolbar toolbarItemDidChange:self];
}
/*!
@@ -286,9 +272,6 @@ CPToolbarPrintItemIdentifier = @"CPToolbarPrintItemIdentifier";
else if ([_view respondsToSelector:@selector(setAction:)])
[_view setAction:anAction];
-
- if(_toolbar)
- [_toolbar toolbarItemDidChange:self];
}
/*!
@@ -312,9 +295,6 @@ CPToolbarPrintItemIdentifier = @"CPToolbarPrintItemIdentifier";
[_view setEnabled:shouldBeEnabled];
_isEnabled = shouldBeEnabled;
-
- if(_toolbar)
- [_toolbar toolbarItemDidChange:self];
}
/*!
@@ -358,9 +338,6 @@ CPToolbarPrintItemIdentifier = @"CPToolbarPrintItemIdentifier";
[self setMaxSize:imageSize];
}
}
-
- if(_toolbar)
- [_toolbar toolbarItemDidChange:self];
}
/*!
@@ -373,9 +350,6 @@ CPToolbarPrintItemIdentifier = @"CPToolbarPrintItemIdentifier";
[_view setAlternateImage:anImage];
_alternateImage = anImage;
-
- if(_toolbar)
- [_toolbar toolbarItemDidChange:self];
}
/*!
@@ -417,9 +391,6 @@ CPToolbarPrintItemIdentifier = @"CPToolbarPrintItemIdentifier";
_target = nil;
_action = nil;
}
-
- if(_toolbar)
- [_toolbar toolbarItemDidChange:self];
}
/*!
@@ -443,9 +414,6 @@ CPToolbarPrintItemIdentifier = @"CPToolbarPrintItemIdentifier";
// Try to provide some sanity: Make maxSize >= minSize
_maxSize = CGSizeMake(MAX(_minSize.width, _maxSize.width), MAX(_minSize.height, _maxSize.height));
-
- if(_toolbar)
- [_toolbar toolbarItemDidChange:self];
}
/*!
@@ -469,9 +437,6 @@ CPToolbarPrintItemIdentifier = @"CPToolbarPrintItemIdentifier";
// Try to provide some sanity: Make minSize <= maxSize
_minSize = CGSizeMake(MIN(_minSize.width, _maxSize.width), MIN(_minSize.height, _maxSize.height));
-
- if(_toolbar)
- [_toolbar toolbarItemDidChange:self];
}
// Visibility Priority
@@ -502,9 +467,6 @@ CPToolbarItemVisibilityPriorityUser
- (void)setVisibilityPriority:(int)aVisibilityPriority
{
_visibilityPriority = aVisibilityPriority;
-
- if(_toolbar)
- [_toolbar toolbarItemDidChange:self];
}
- (void)validate
@@ -551,7 +513,7 @@ CPToolbarItemVisibilityPriorityUser
@end
-var CPToolbarItemIdentifierKey = @"CPToolbarItemIdentifierKey",
+var CPToolbarItemItemIdentifierKey = @"CPToolbarItemItemIdentifierKey",
CPToolbarItemLabelKey = @"CPToolbarItemLabelKey",
CPToolbarItemPaletteLabelKey = @"CPToolbarItemPaletteLabelKey",
CPToolbarItemToolTipKey = @"CPToolbarItemToolTipKey",
@@ -564,7 +526,8 @@ var CPToolbarItemIdentifierKey = @"CPToolbarItemIdentifierKey",
CPToolbarItemViewKey = @"CPToolbarItemViewKey",
CPToolbarItemMinSizeKey = @"CPToolbarItemMinSizeKey",
CPToolbarItemMaxSizeKey = @"CPToolbarItemMaxSizeKey",
- CPToolbarItemVisibilityPriorityKey = @"CPToolbarItemVisibilityPriorityKey";
+ CPToolbarItemVisibilityPriorityKey = @"CPToolbarItemVisibilityPriorityKey",
+ CPToolbarItemAutovalidatesKey = @"CPToolbarItemAutovalidatesKey";
@implementation CPToolbarItem (CPCoding)
@@ -574,7 +537,10 @@ var CPToolbarItemIdentifierKey = @"CPToolbarItemIdentifierKey",
if (self)
{
- _itemIdentifier = [aCoder decodeObjectForKey:CPToolbarItemIdentifierKey];
+ _itemIdentifier = [aCoder decodeObjectForKey:CPToolbarItemItemIdentifierKey];
+
+ _minSize = [aCoder decodeSizeForKey:CPToolbarItemMinSizeKey];
+ _maxSize = [aCoder decodeSizeForKey:CPToolbarItemMaxSizeKey];
[self setLabel:[aCoder decodeObjectForKey:CPToolbarItemLabelKey]];
[self setPaletteLabel:[aCoder decodeObjectForKey:CPToolbarItemPaletteLabelKey]];
@@ -591,10 +557,8 @@ var CPToolbarItemIdentifierKey = @"CPToolbarItemIdentifierKey",
[self setView:[aCoder decodeObjectForKey:CPToolbarItemViewKey]];
- [self setMinSize:[aCoder decodeSizeForKey:CPToolbarItemMinSizeKey]];
- [self setMaxSize:[aCoder decodeSizeForKey:CPToolbarItemMaxSizeKey]];
-
[self setVisibilityPriority:[aCoder decodeIntForKey:CPToolbarItemVisibilityPriorityKey]];
+ [self setAutovalidates:[aCoder decodeBoolForKey:CPToolbarItemAutovalidatesKey]];
}
return self;
@@ -624,6 +588,7 @@ var CPToolbarItemIdentifierKey = @"CPToolbarItemIdentifierKey",
[aCoder encodeSize:[self maxSize] forKey:CPToolbarItemMaxSizeKey];
[aCoder encodeObject:[self visibilityPriority] forKey:CPToolbarItemVisibilityPriorityKey];
+ [aCoder encodeBool:[self autovalidates] forKey:CPToolbarItemAutovalidatesKey];
}
@end
@@ -633,12 +598,12 @@ var CPToolbarItemIdentifierKey = @"CPToolbarItemIdentifierKey",
- (id)copy
{
var copy = [[[self class] alloc] initWithItemIdentifier:_itemIdentifier];
-
+
if (_view)
[copy setView:[CPKeyedUnarchiver unarchiveObjectWithData:[CPKeyedArchiver archivedDataWithRootObject:_view]]];
-
+
[copy _setToolbar:_toolbar];
-
+
[copy setLabel:_label];
[copy setPaletteLabel:_paletteLabel];
[copy setToolTip:[self toolTip]];
@@ -646,7 +611,7 @@ var CPToolbarItemIdentifierKey = @"CPToolbarItemIdentifierKey",
[copy setTag:[self tag]];
[copy setTarget:[self target]];
[copy setAction:[self action]];
-
+
[copy setEnabled:[self isEnabled]];
[copy setImage:[self image]];
@@ -654,98 +619,15 @@ var CPToolbarItemIdentifierKey = @"CPToolbarItemIdentifierKey",
[copy setMinSize:_minSize];
[copy setMaxSize:_maxSize];
-
- [copy setVisibilityPriority:_visibilityPriority];
-
+
+ [copy setVisibilityPriority:[self visibilityPriority]];
+ [copy setAutovalidates:[self autovalidates]];
+
return copy;
}
@end
-
-var CPToolbarItemIdentifierKey = "CPToolbarItemIdentifierKey",
- CPToolbarItemLabelKey = "CPToolbarItemLabelKey",
- CPToolbarItemPaletteLabelKey = "CPToolbarItemPaletteLabelKey",
- CPToolbarItemToolTipKey = "CPToolbarItemToolTipKey",
- CPToolbarItemTagKey = "CPToolbarItemTagKey",
- CPToolbarItemTargetKey = "CPToolbarItemTargetKey",
- CPToolbarItemActionKey = "CPToolbarItemActionKey",
- CPToolbarItemEnabledKey = "CPToolbarItemEnabledKey",
- CPToolbarItemImageKey = "CPToolbarItemImageKey",
- CPToolbarItemAlternateImageKey = "CPToolbarItemAlternateImageKey",
- CPToolbarItemViewKey = "CPToolbarItemViewKey",
- CPToolbarItemMinSizeKey = "CPToolbarItemMinSizeKey",
- CPToolbarItemMaxSizeKey = "CPToolbarItemMaxSizeKey",
- CPToolbarItemVisibilityPriorityKey = "CPToolbarItemVisibilityPriorityKey";
- CPToolbarItemAutovalidatesKey = "CPToolbarItemAutovalidatesKey";
-
-@implementation CPToolbarItem (CPCoding)
-
-/*
- Initializes the toolbar item by unarchiving data from aCoder.
- @param aCoder the coder containing the archived CPToolbarItem.
-*/
-- (id)initWithCoder:(CPCoder)aCoder
-{
- self = [super init];
-
- if (self)
- {
- _itemIdentifier = [aCoder decodeObjectForKey:CPToolbarItemIdentifierKey];
-
- _label = [aCoder decodeObjectForKey:CPToolbarItemLabelKey];
- _paletteLabel = [aCoder decodeObjectForKey:CPToolbarItemPaletteLabelKey];
- _toolTip = [aCoder decodeObjectForKey:CPToolbarItemToolTipKey];
- _tag = [aCoder decodeIntForKey:CPToolbarItemTagKey];
- _target = [aCoder decodeObjectForKey:CPToolbarItemTargetKey];
- _action = [aCoder decodeObjectForKey:CPToolbarItemActionKey];
- _isEnabled = [aCoder decodeBoolForKey:CPToolbarItemEnabledKey];
- _view = [aCoder decodeObjectForKey:CPToolbarItemViewKey];
- _minSize = [aCoder decodeSizeForKey:CPToolbarItemMinSizeKey];
- _maxSize = [aCoder decodeSizeForKey:CPToolbarItemMaxSizeKey];
- _visibilityPriority = [aCoder decodeIntForKey:CPToolbarItemVisibilityPriorityKey];
- _autovalidates = [aCoder decodeBoolForKey:CPToolbarItemAutovalidatesKey];
-
- if(!_minSize.height || !_minSize.width)
- _minSize = CGSizeMakeZero();
-
- if(!_maxSize.height || !_maxSize.width)
- _maxSize = CGSizeMakeZero();
-
- [self setImage: [aCoder decodeObjectForKey:CPToolbarItemImageKey]];
-// [self setAlternateImage: [aCoder decodeObjectForKey:CPToolbarItemAlternateImageKey]]; // no altImage in Nib
- }
-
- return self;
-}
-
-/*
- Archives this toolbar item into the provided coder.
- @param aCoder the coder to which the toolbar item's instance data will be written.
-*/
-- (void)encodeWithCoder:(CPCoder)aCoder
-{
- [aCoder encodeObject:_itemIdentifier forKey:CPToolbarItemIdentifierKey];
-
- [aCoder encodeObject:_label forKey:CPToolbarItemLabelKey];
- [aCoder encodeObject:_paletteLabel forKey:CPToolbarItemPaletteLabelKey];
- [aCoder encodeObject:_toolTip forKey:CPToolbarItemToolTipKey];
- [aCoder encodeInt:_tag forKey:CPToolbarItemTagKey];
- [aCoder encodeBool:_isEnabled forKey:CPToolbarItemEnabledKey];
- [aCoder encodeObject:_view forKey:CPToolbarItemViewKey];
- [aCoder encodeSize:_minSize forKey:CPToolbarItemMinSizeKey];
- [aCoder encodeSize:_maxSize forKey:CPToolbarItemMaxSizeKey];
- [aCoder encodeInt:_visibilityPriority forKey:CPToolbarItemVisibilityPriorityKey];
- [aCoder encodeBool:_autovalidates forKey:CPToolbarItemAutovalidatesKey];
-
- [aCoder encodeObject:_image forKey:CPToolbarItemImageKey];
-// [aCoder encodeObject:_alternateImage forKey:CPToolbarItemAlternateImageKey]; // no altImage in IB
-
-}
-
-@end
-
-
// Standard toolbar identifiers
@implementation CPToolbarItem (Standard)
diff --git a/Tools/nib2cib/NSAppKit.j b/Tools/nib2cib/NSAppKit.j
index d1e102e28..e6258e6e2 100644
--- a/Tools/nib2cib/NSAppKit.j
+++ b/Tools/nib2cib/NSAppKit.j
@@ -44,6 +44,7 @@
@import "NSResponder.j"
@import "NSScrollView.j"
@import "NSScroller.j"
+@import "NSSearchField.j"
@import "NSSet.j"
@import "NSSecureTextField.j"
@import "NSSegmentedControl.j"
diff --git a/Tools/nib2cib/NSSearchField.j b/Tools/nib2cib/NSSearchField.j
new file mode 100644
index 000000000..22cec52f1
--- /dev/null
+++ b/Tools/nib2cib/NSSearchField.j
@@ -0,0 +1,41 @@
+
+
+@import
+@import "NSTextField.j"
+
+
+@implementation CPSearchField (NSCoding)
+
+- (id)NS_initWithCoder:(CPCoder)aCoder
+{
+ self = [super NS_initWithCoder:aCoder];
+
+ if (self)
+ {
+ }
+
+ return self;
+}
+
+@end
+
+@implementation NSSearchField : CPSearchField
+{
+}
+
+- (id)initWithCoder:(CPCoder)aCoder
+{
+ return [self NS_initWithCoder:aCoder];
+}
+
+- (Class)classForKeyedArchiver
+{
+ return [CPSearchField class];
+}
+
+@end
+
+@implementation NSSearchFieldCell : NSTextFieldCell
+{
+}
+@end
diff --git a/Tools/nib2cib/NSToolbarItem.j b/Tools/nib2cib/NSToolbarItem.j
index 4914862db..76ab09665 100644
--- a/Tools/nib2cib/NSToolbarItem.j
+++ b/Tools/nib2cib/NSToolbarItem.j
@@ -45,7 +45,10 @@ NS_CPToolbarItemIdentifierMap =
{
var NS_itemIdentifier = [aCoder decodeObjectForKey:@"NSToolbarItemIdentifier"];
- _itemIdentifier = NS_CPToolbarItemIdentifierMap[NS_itemIdentifier] || _itemIdentifier;
+ _itemIdentifier = NS_CPToolbarItemIdentifierMap[NS_itemIdentifier] || NS_itemIdentifier;
+
+ _minSize = [aCoder decodeSizeForKey:@"NSToolbarItemMinSize"] || CGSizeMakeZero();
+ _maxSize = [aCoder decodeSizeForKey:@"NSToolbarItemMaxSize"] || CGSizeMakeZero();
[self setLabel:[aCoder decodeObjectForKey:@"NSToolbarItemLabel"]];
[self setPaletteLabel:[aCoder decodeObjectForKey:@"NSToolbarItemPaletteLabel"]];
@@ -56,16 +59,13 @@ NS_CPToolbarItemIdentifierMap =
[self setAction:CPSelectorFromString([aCoder decodeObjectForKey:@"NSToolbarItemAction"])];
[self setEnabled:[aCoder decodeBoolForKey:@"NSToolbarItemEnabled"]];
- [self setAutovalidates:[aCoder decodeBoolForKey:"NSToolbarItemAutovalidates"]];
[self setImage:[aCoder decodeBoolForKey:@"NSToolbarItemImage"]];
[self setView:[aCoder decodeObjectForKey:@"NSToolbarItemView"]];
- _minSize = [aCoder decodeSizeForKey:@"NSToolbarItemMinSize"];
- _maxSize = [aCoder decodeSizeForKey:@"NSToolbarItemMaxSize"];
-
[self setVisibilityPriority:[aCoder decodeIntForKey:@"NSToolbarItemVisibilityPriority"]];
+ [self setAutovalidates:[aCoder decodeBoolForKey:"NSToolbarItemAutovalidates"]];
}
return self;