1# 2# ToolbarCreator.py 3# TableModelWithSearch 4# 5# Created by Bill Bumgarner on Sun Apr 04 2004. 6# Copyright (c) 2004 __MyCompanyName__. All rights reserved. 7# 8 9from Cocoa import * 10 11kToolbarIdentifier = "TableModel Toolbar Identifier" 12kSearchFieldItemIdentifier = "TableModel Search Field Identifier" 13 14from FilteringArrayController import kLiteralSearch, kRegularExpressionSearch 15 16class ToolbarCreator (NSObject): 17 filteringArrayController = objc.IBOutlet() 18 searchField = objc.IBOutlet() 19 window = objc.IBOutlet() 20 21 def awakeFromNib(self): 22 self.toolbarItemCache = {} 23 24 # create toolbar containing search field 25 toolbar = NSToolbar.alloc().initWithIdentifier_(kToolbarIdentifier) 26 toolbar.setDelegate_(self) 27 toolbar.setAllowsUserCustomization_(True) 28 toolbar.setAutosavesConfiguration_(True) 29 30 searchFieldItem = NSToolbarItem.alloc().initWithItemIdentifier_(kSearchFieldItemIdentifier) 31 self.searchFieldItem = searchFieldItem 32 searchFieldItem.setLabel_("Search") 33 searchFieldItem.setPaletteLabel_("Search Field") 34 searchFieldItem.setToolTip_("Search") 35 searchFieldItem.setView_(self.searchField) 36 searchFieldItem.setMinSize_(self.searchField.bounds().size) 37 maxSize = self.searchField.bounds().size 38 maxSize.width = maxSize.width + 150 39 searchFieldItem.setMaxSize_(maxSize) 40 41 self.toolbarItemCache[kSearchFieldItemIdentifier] = searchFieldItem 42 43 self.window.setToolbar_(toolbar) 44 45 cellMenu = NSMenu.alloc().initWithTitle_(u'Search Menu') 46 # note, bottom up! 47 for v in [kRegularExpressionSearch, kLiteralSearch]: 48 item = NSMenuItem.alloc().initWithTitle_action_keyEquivalent_(v, 'changeSearchType:', u'') 49 item.setRepresentedObject_(v) 50 item.setTarget_(self) 51 cellMenu.insertItem_atIndex_(item, 0) 52 self.searchField.cell().setSearchMenuTemplate_(cellMenu) 53 # this better be the kLiteralSearch menu item 54 self.changeSearchType_(item) 55 56 @objc.IBAction 57 def changeSearchType_(self, sender): 58 obj = sender.representedObject() 59 self.searchField.cell().setPlaceholderString_(obj) 60 self.searchField.setStringValue_(u'') 61 self.filteringArrayController.changeSearchType_(obj) 62 63 def toolbarDefaultItemIdentifiers_(self, aToolbar): 64 return [ 65 kSearchFieldItemIdentifier, 66 NSToolbarFlexibleSpaceItemIdentifier, 67 NSToolbarSeparatorItemIdentifier, 68 NSToolbarCustomizeToolbarItemIdentifier, 69 ] 70 71 def toolbarAllowedItemIdentifiers_(self, aToolbar): 72 return [ 73 kSearchFieldItemIdentifier, 74 NSToolbarFlexibleSpaceItemIdentifier, 75 NSToolbarSpaceItemIdentifier, 76 NSToolbarSeparatorItemIdentifier, 77 NSToolbarPrintItemIdentifier, 78 NSToolbarCustomizeToolbarItemIdentifier, 79 ] 80 81 def toolbar_itemForItemIdentifier_willBeInsertedIntoToolbar_(self, toolbar, itemIdentifier, flag): 82 newItem = NSToolbarItem.alloc().initWithItemIdentifier_(itemIdentifier) 83 item = self.toolbarItemCache[itemIdentifier] 84 85 newItem.setLabel_( item.label() ) 86 newItem.setPaletteLabel_( item.paletteLabel() ) 87 if item.view(): 88 newItem.setView_( item.view() ) 89 else: 90 newItem.setImage_( item.image() ) 91 92 newItem.setToolTip_( item.toolTip() ) 93 newItem.setTarget_( item.target() ) 94 newItem.setAction_( item.action() ) 95 newItem.setMenuFormRepresentation_( item.menuFormRepresentation() ) 96 97 if newItem.view(): 98 newItem.setMinSize_( item.minSize() ) 99 newItem.setMaxSize_( item.maxSize() ) 100 101 return newItem 102