--- a/UIPainter.st Sat Mar 09 00:55:20 2013 +0100
+++ b/UIPainter.st Sun Mar 10 17:57:46 2013 +0100
@@ -3334,7 +3334,19 @@
!
openEditMenu
- "opens a Menu Editor on current widget"
+ "opens a Menu Editor on current widget for the standard menu
+ (accessed via #menu or #menuSelector)"
+
+ ^ self
+ openEditMenuFor:#menu
+ and:#menuSelector
+!
+
+openEditMenuFor:menuSelector and:menuSelectorSelector
+ "opens a Menu Editor on the current widget.
+ The arguments menuSelector (typically: #menu)
+ and menuSelectorSelector (typically: #menuSelector) can be passed in
+ for widgets with a secondary menu (with different selectors)"
|cls selectorOrMenu editor selectedSpec windowSpec holder|
@@ -3350,9 +3362,9 @@
windowSpec := self specTool specification.
self isEditingSpecOnly ifTrue:[
- selectorOrMenu := windowSpec menu
+ selectorOrMenu := windowSpec perform:menuSelector
] ifFalse:[
- (selectorOrMenu := windowSpec menuSelector) notNil ifTrue:[
+ (selectorOrMenu := (windowSpec perform:menuSelectorSelector)) notNil ifTrue:[
selectorOrMenu := selectorOrMenu asSymbol
] ifFalse:[
"/ cg: q&d hack ...
@@ -3378,13 +3390,13 @@
(self isEditingSpecOnly or:[selectorOrMenu class == Menu]) ifTrue: [
editor openModalOnMenu:(selectorOrMenu).
editor hasSaved ifTrue:[
- windowSpec menu:(editor savedSpec).
+ windowSpec perform:(menuSelector,':')asSymbol with:(editor savedSpec).
self accept.
].
] ifFalse: [
editor openModalOnClass:cls andSelector:selectorOrMenu.
editor hasSaved ifTrue:[
- holder := self specTool aspectFor:#menuSelector.
+ holder := self specTool aspectFor:menuSelector.
holder value:(editor specSelector).
self accept.
].