--- 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 $'
! !