preps for menuSpec without a class
authorClaus Gittinger <cg@exept.de>
Thu, 09 Jul 2009 20:07:21 +0200
changeset 2568 ea1484c2ab9b
parent 2567 903843f8a824
child 2569 b55aeaecefda
preps for menuSpec without a class
UIPainter.st
--- a/UIPainter.st	Wed Jun 17 14:20:27 2009 +0200
+++ b/UIPainter.st	Thu Jul 09 20:07:21 2009 +0200
@@ -3319,45 +3319,58 @@
 openEditMenu
     "opens a Menu Editor on current widget"
 
-    |cls selectorOrMenu editor selectedSpec spec holder|
-
-    (cls := self resolveName:specClassName) isNil ifTrue:[
-        self askForSaving ifTrue:[cls := self resolveName:specClassName].
-    ].
-    cls isNil ifTrue:[^ self].
+    |cls selectorOrMenu editor selectedSpec windowSpec holder|
+
+    self isEditingSpecOnly ifFalse:[
+        "/ normal mode
+        (cls := self resolveName:specClassName) isNil ifTrue:[
+            self askForSaving ifTrue:[cls := self resolveName:specClassName].
+        ].
+        cls isNil ifTrue:[^ self].
+    ].
 
     self acceptOrIgnoreSectionModification.
-    spec := self specTool specification.
-
-    (selectorOrMenu := spec menuSelector) notNil ifTrue:[
-        selectorOrMenu := selectorOrMenu asSymbol
+    windowSpec := self specTool specification.
+
+    self isEditingSpecOnly ifTrue:[
+        selectorOrMenu := windowSpec menu
     ] ifFalse:[
-        "/ cg: q&d hack ...
-        selectorOrMenu := nil.
-
-        (selectedSpec := treeView propertySelected) notNil ifTrue:[
-            Error handle:[:ex |
-                selectorOrMenu := nil.
-            ] do:[
-                selectorOrMenu := selectedSpec view asMenu.
-            ]
+        (selectorOrMenu := windowSpec menuSelector) notNil ifTrue:[
+            selectorOrMenu := selectorOrMenu asSymbol
+        ] ifFalse:[
+            "/ cg: q&d hack ...
+            selectorOrMenu := nil.
+
+            (selectedSpec := treeView propertySelected) notNil ifTrue:[
+                Error handle:[:ex |
+                    selectorOrMenu := nil.
+                ] do:[
+                    selectorOrMenu := selectedSpec view asMenu.
+                ]
+            ].
         ].
     ].
 
     editor := MenuEditor new.
     editor masterApplication:self.
-    editor specClass: cls.
-    editor useHelpTool:(self helpTool).
-
-    selectorOrMenu class == Menu       
-        ifTrue: [self breakPoint:#cg."no resources"editor openModalOnMenu:selectorOrMenu]
-        ifFalse:  [editor openModalOnClass:cls andSelector:selectorOrMenu].
-
-    editor hasSaved ifTrue:[
-        holder := self specTool aspectFor:#menuSelector.
-        holder value:(editor specSelector).
-        self accept.
-        ^ self
+    self isEditingSpecOnly ifFalse:[
+        editor specClass: cls.
+        editor useHelpTool:(self helpTool).
+    ].
+
+    (self isEditingSpecOnly or:[selectorOrMenu class == Menu]) ifTrue: [
+        editor openModalOnMenu:(selectorOrMenu).
+        editor hasSaved ifTrue:[
+            windowSpec menu:(editor savedSpec).
+            self accept.
+        ].
+    ] ifFalse: [
+        editor openModalOnClass:cls andSelector:selectorOrMenu.
+        editor hasSaved ifTrue:[
+            holder := self specTool aspectFor:#menuSelector.
+            holder value:(editor specSelector).
+            self accept.
+        ].
     ].
 
     "Modified: / 12-01-2008 / 10:31:41 / cg"