def addToolbarItem(aController, anIdentifier, aLabel, aPaletteLabel, aToolTip, aTarget, anAction, anItemContent, aMenu): """ Add a toolbar button of some kind. """ toolbarItem = NSToolbarItem.alloc().initWithItemIdentifier_(anIdentifier) toolbarItem.setLabel_(aLabel) toolbarItem.setPaletteLabel_(aPaletteLabel) toolbarItem.setToolTip_(aToolTip) toolbarItem.setTarget_(aTarget) if anAction: toolbarItem.setAction_(anAction) if type(anItemContent) == NSImage: toolbarItem.setImage_(anItemContent) else: toolbarItem.setView_(anItemContent) bounds = anItemContent.bounds() minSize = (bounds[1][0], bounds[1][1]) maxSize = (bounds[1][0], bounds[1][1]) toolbarItem.setMinSize_(minSize) toolbarItem.setMaxSize_(maxSize) if aMenu: menuItem = NSMenuItem.alloc().init() menuItem.setSubmenu_(aMenu) menuItem.setTitle_(aMenu.title()) toolbarItem.setMenuFormRepresentation_(menuItem) aController._toolbarItems[anIdentifier] = toolbarItem
def toolbar_itemForItemIdentifier_willBeInsertedIntoToolbar_(self, toolbar, itemIdentifier, flag): """ Delegate method fired when the toolbar is about to insert an item into the toolbar. Item is identified by itemIdentifier. Effectively makes a copy of the cached reference instance of the toolbar item identified by itemIdentifier. """ newItem = NSToolbarItem.alloc().initWithItemIdentifier_(itemIdentifier) item = self._toolbarItems[itemIdentifier] newItem.setLabel_(item.label()) newItem.setPaletteLabel_(item.paletteLabel()) if item.view(): newItem.setView_(item.view()) else: newItem.setImage_(item.image()) newItem.setToolTip_(item.toolTip()) newItem.setTarget_(item.target()) newItem.setAction_(item.action()) newItem.setMenuFormRepresentation_(item.menuFormRepresentation()) if newItem.view(): newItem.setMinSize_(item.minSize()) newItem.setMaxSize_(item.maxSize()) return newItem
def toolbar_itemForItemIdentifier_willBeInsertedIntoToolbar_( self, toolbar, itemIdentifier, flag): """ Delegate method fired when the toolbar is about to insert an item into the toolbar. Item is identified by itemIdentifier. Effectively makes a copy of the cached reference instance of the toolbar item identified by itemIdentifier. """ newItem = NSToolbarItem.alloc().initWithItemIdentifier_(itemIdentifier) item = self._toolbarItems[itemIdentifier] newItem.setLabel_(item.label()) newItem.setPaletteLabel_(item.paletteLabel()) if item.view(): newItem.setView_(item.view()) else: newItem.setImage_(item.image()) newItem.setToolTip_(item.toolTip()) newItem.setTarget_(item.target()) newItem.setAction_(item.action()) newItem.setMenuFormRepresentation_(item.menuFormRepresentation()) if newItem.view(): newItem.setMinSize_(item.minSize()) newItem.setMaxSize_(item.maxSize()) return newItem
def _createToolbarItem(self, itemData): itemIdentifier = itemData.get("itemIdentifier") if itemIdentifier is None: raise VanillaError("toolbar item data must contain a unique itemIdentifier string") if itemIdentifier in self._toolbarItems: raise VanillaError("toolbar itemIdentifier is not unique: %r" % itemIdentifier) if itemIdentifier not in self._toolbarAllowedItemIdentifiers: self._toolbarAllowedItemIdentifiers.append(itemIdentifier) if itemData.get("visibleByDefault", True): self._toolbarDefaultItemIdentifiers.append(itemIdentifier) if itemIdentifier.startswith("NS"): # no need to create an actual item for a standard Cocoa toolbar item return label = itemData.get("label") paletteLabel = itemData.get("paletteLabel", label) toolTip = itemData.get("toolTip", label) imagePath = itemData.get("imagePath") imageNamed = itemData.get("imageNamed") imageObject = itemData.get("imageObject") imageTemplate = itemData.get("imageTemplate") view = itemData.get("view") callback = itemData.get("callback", None) # create the NSImage if needed if imagePath is not None: image = NSImage.alloc().initWithContentsOfFile_(imagePath) elif imageNamed is not None: image = NSImage.imageNamed_(imageNamed) elif imageObject is not None: image = imageObject else: image = None toolbarItem = NSToolbarItem.alloc().initWithItemIdentifier_(itemIdentifier) toolbarItem.setLabel_(label) toolbarItem.setPaletteLabel_(paletteLabel) toolbarItem.setToolTip_(toolTip) if image is not None: if imageTemplate is not None: # only change the image template setting if its either True or False image.setTemplate_(imageTemplate) toolbarItem.setImage_(image) elif view is not None: toolbarItem.setView_(view) toolbarItem.setMinSize_(view.frame().size) toolbarItem.setMaxSize_(view.frame().size) if callback is not None: target = VanillaCallbackWrapper(callback) toolbarItem.setTarget_(target) toolbarItem.setAction_("action:") self._toolbarCallbackWrappers[itemIdentifier] = target if itemData.get("selectable", False): self._toolbarSelectableItemIdentifiers.append(itemIdentifier) self._toolbarItems[itemIdentifier] = toolbarItem
def _createToolbarItem(self, itemData): itemIdentifier = itemData.get("itemIdentifier") if itemIdentifier is None: raise VanillaError( "toolbar item data must contain a unique itemIdentifier string" ) if itemIdentifier in self._toolbarItems: raise VanillaError("toolbar itemIdentifier is not unique: %r" % itemIdentifier) if itemIdentifier not in self._toolbarAllowedItemIdentifiers: self._toolbarAllowedItemIdentifiers.append(itemIdentifier) if itemData.get("visibleByDefault", True): self._toolbarDefaultItemIdentifiers.append(itemIdentifier) if itemIdentifier.startswith("NS"): # no need to create an actual item for a standard Cocoa toolbar item return label = itemData.get("label") paletteLabel = itemData.get("paletteLabel", label) toolTip = itemData.get("toolTip", label) imagePath = itemData.get("imagePath") imageNamed = itemData.get("imageNamed") imageObject = itemData.get("imageObject") view = itemData.get("view") callback = itemData.get("callback", None) # create the NSImage if needed if imagePath is not None: image = NSImage.alloc().initWithContentsOfFile_(imagePath) elif imageNamed is not None: image = NSImage.imageNamed_(imageNamed) elif imageObject is not None: image = imageObject else: image = None toolbarItem = NSToolbarItem.alloc().initWithItemIdentifier_( itemIdentifier) toolbarItem.setLabel_(label) toolbarItem.setPaletteLabel_(paletteLabel) toolbarItem.setToolTip_(toolTip) if image is not None: toolbarItem.setImage_(image) elif view is not None: toolbarItem.setView_(view) toolbarItem.setMinSize_(view.frame().size) toolbarItem.setMaxSize_(view.frame().size) if callback is not None: target = VanillaCallbackWrapper(callback) toolbarItem.setTarget_(target) toolbarItem.setAction_("action:") self._toolbarCallbackWrappers[itemIdentifier] = target if itemData.get("selectable", False): self._toolbarSelectableItemIdentifiers.append(itemIdentifier) self._toolbarItems[itemIdentifier] = toolbarItem