Menu.st
changeset 2081 52ba70a79ce9
parent 2080 4fe491fe114c
child 2092 8c85812b46c4
--- a/Menu.st	Wed Jan 11 15:18:54 2006 +0100
+++ b/Menu.st	Wed Jan 11 15:46:27 2006 +0100
@@ -640,17 +640,54 @@
 
 !Menu methodsFor:'converting'!
 
-asOldStylePopUpMenu
+asOldStylePopUpMenuFor:anApplicationOrNil
     "a temporary kludge - will vanish, when oldStyle MenuView and PopUpMenu are gone"
 
-    |menuView|
+    |menuView itemsShown|
+
+    itemsShown := items select:[:each |
+            |visibilityInItem|
+
+            visibilityInItem := each isVisible.
+            visibilityInItem isNil ifTrue:[
+                true
+            ] ifFalse:[
+                visibilityInItem isBoolean ifTrue:[
+                    visibilityInItem
+                ] ifFalse:[
+                    visibilityInItem isSymbol ifTrue:[
+                        (anApplicationOrNil perform:visibilityInItem) value.
+                    ] ifFalse:[
+                        visibilityInItem value
+                    ].
+                ].
+            ].
+        ].
 
     menuView := MenuView 
-        labels:(items collect:[:each | each label])
-        selectors:(items collect:[:each | each value])
-        args:(items collect:[:each | each argument])
+        labels:(itemsShown collect:[:each | each label])
+        selectors:(itemsShown collect:[:each | each value])
+        args:(itemsShown collect:[:each | each argument])
         receiver:receiver.
 
+    itemsShown do:[:each |
+        |enabledInItem enabled|
+
+        enabledInItem := each enabled.
+        enabledInItem notNil ifTrue:[
+            enabledInItem isSymbol ifTrue:[
+                enabled := (anApplicationOrNil perform:enabledInItem).
+            ] ifFalse:[
+                enabledInItem isBoolean ifTrue:[
+                    enabled := enabledInItem
+                ].
+            ].
+            enabled value ifFalse:[
+                menuView disable:(each value)
+            ].
+        ].
+    ].
+
     menuView actions:(items collect:[:each | [ receiver perform:each value ]]).
 
     ^ PopUpMenu forMenu:menuView
@@ -1093,5 +1130,5 @@
 !Menu class methodsFor:'documentation'!
 
 version
-    ^ '$Header: /cvs/stx/stx/libview2/Menu.st,v 1.62 2006-01-11 14:18:54 cg Exp $'
+    ^ '$Header: /cvs/stx/stx/libview2/Menu.st,v 1.63 2006-01-11 14:46:27 cg Exp $'
 ! !