A new version of ToolBuilder-Morphic was added to project The Inbox: http://source.squeak.org/inbox/ToolBuilder-Morphic-nice.80.mcz
==================== Summary ====================
Name: ToolBuilder-Morphic-nice.80 Author: nice Time: 30 June 2011, 9:06:57.179 pm UUID: 769ffad1-759b-415b-abce-0a8ab66d10fd Ancestors: ToolBuilder-Morphic-ul.79
Builde richer menus (require PluggableMenuItemSpec changes from ToolBuilder-Kernel)
=============== Diff against ToolBuilder-Morphic-ul.79 ===============
Item was changed: ----- Method: MorphicToolBuilder>>buildPluggableMenuItem: (in category 'building') ----- buildPluggableMenuItem: itemSpec + | item label | + item := itemSpec isUpdating + ifTrue: [self updatingMenuItemClass new] + ifFalse: [self menuItemClass new]. + label := itemSpec label ifNil: ['']. + itemSpec hasCheckBox + ifTrue: [ itemSpec checked + ifTrue: [label := '<on>', label] + ifFalse: [label := '<off>', label]]. - | item action label menu | - item := self menuItemClass new. - label := itemSpec label. - itemSpec checked ifTrue:[label := '<on>', label] ifFalse:[label := '<off>', label]. item contents: label. + item icon: itemSpec icon. item isEnabled: itemSpec enabled. + itemSpec isUpdating ifTrue: [ + itemSpec enablementSelector ifNotNil: [:sel | item enablementSelector: sel]. + item wordingProvider: itemSpec wordingProvider wordingSelector: itemSpec wordingSelector. + itemSpec wordingArgument ifNotNil: [:arg | item wordingArgument: arg]]. + itemSpec action ifNotNil: [:action | - (action := itemSpec action) ifNotNil:[ item target: action receiver; selector: action selector; arguments: action arguments. ]. + itemSpec subMenu ifNotNil: [:menu | - (menu := itemSpec subMenu) ifNotNil:[ item subMenu: (menu buildWith: self). ]. + parentMenu ifNotNil: [parentMenu addMorphBack: item]. + itemSpec separator ifTrue: [parentMenu addLine]. - parentMenu ifNotNil:[parentMenu addMorphBack: item]. - itemSpec separator ifTrue:[parentMenu addLine]. ^item!
Item was changed: ----- Method: MorphicToolBuilder>>buildPluggablePanel: (in category 'pluggable widgets') ----- buildPluggablePanel: aSpec + | widget children | - | widget children frame | widget := self panelClass new. self register: widget id: aSpec name. widget model: aSpec model. widget color: Color transparent. widget clipSubmorphs: true. children := aSpec children. children isSymbol ifTrue:[ widget getChildrenSelector: children. widget update: children. children := #(). ]. self buildAll: children in: widget. self buildHelpFor: widget spec: aSpec. self setFrame: aSpec frame in: widget. parent ifNotNil:[self add: widget to: parent]. self setLayout: aSpec layout in: widget. widget layoutInset: 0. widget borderWidth: 0. + widget submorphsDo:[:sm| | frame | - widget submorphsDo:[:sm| (frame := sm layoutFrame) ifNotNil:[ (frame rightFraction = 0 or:[frame rightFraction = 1]) ifFalse:[frame rightOffset:1]. (frame bottomFraction = 0 or:[frame bottomFraction = 1]) ifFalse:[frame bottomOffset: 1]]]. widget color: Color transparent. ^widget!
Item was added: + ----- Method: MorphicToolBuilder>>updatingMenuItemClass (in category 'widget classes') ----- + updatingMenuItemClass + ^ UpdatingMenuItemMorph!
squeak-dev@lists.squeakfoundation.org