MenuEditor.st
changeset 1636 85ab98a850c8
parent 1634 1dd4cd7ea43b
child 1641 7e63a11f3333
--- a/MenuEditor.st	Sat Oct 26 17:53:32 2002 +0200
+++ b/MenuEditor.st	Tue Oct 29 10:42:40 2002 +0100
@@ -348,7 +348,7 @@
 'Aspect for boolean holder, block, or method, specifying the indication state (CheckToggle behavior).'
 
 #basicsIsButton
-'Enable/disable button-like behavior.'
+'Button-like look and behavior.'
 
 #basicsKey
 'Internal key of the item (optional, for programmed accesses).'
@@ -393,7 +393,7 @@
 'Specify start of a right-aligned item group.'
 
 #detailsVisibility
-'Aspect or binding providing a boolean value holder for the visibility-state of the menu item.'
+'Boolean, or aspect or binding for a boolean holder controlling the visibility of the menu item.'
 
 #fileLoad
 'Open a dialog to select and load a menu spec from a class.'
@@ -443,6 +443,9 @@
 #showBusyCursorWhilePerforming
 'If on, a busy cursor is shown while the items action is performing.'
 
+#sendToOriginator
+'Send action-Message to widget (instead of application).'
+
 #settingsRedefineAspectMethods
 'Toggles the permission to overwrite existing aspect methods.'
 
@@ -1519,6 +1522,14 @@
     ^ builder booleanValueAspectFor:#canCreateDelayedMenuChannel
 !
 
+hasItemValue
+    "boolean holder, true if any item is selected
+    "
+    ^ BlockValue 
+        with:[:holder | holder value size > 0]
+        argument:(self aspectFor:#itemValue)
+!
+
 hasSelectionChannel
     "boolean holder, true if any item is selected
     "
@@ -2879,174 +2890,174 @@
 
     ^ 
      #(#FullSpec
-	#name: #detailsEditSpec
-	#window: 
+        #name: #detailsEditSpec
+        #window: 
        #(#WindowSpec
-	  #label: 'Details Edit'
-	  #name: 'Details Edit'
-	  #min: #(#Point 10 10)
-	  #max: #(#Point 1280 1024)
-	  #bounds: #(#Rectangle 43 153 303 398)
-	)
-	#component: 
+          #label: 'Details Edit'
+          #name: 'Details Edit'
+          #min: #(#Point 10 10)
+          #max: #(#Point 1280 1024)
+          #bounds: #(#Rectangle 43 153 303 398)
+        )
+        #component: 
        #(#SpecCollection
-	  #collection: #(
-	   #(#LabelSpec
-	      #label: 'Accelerator:'
-	      #name: 'shortcutKeyLabel'
-	      #layout: #(#AlignmentOrigin 107 0 26 0 1 0.5)
-	      #activeHelpKey: #detailsAccelerator
-	      #resizeForLabel: true
-	      #adjust: #right
-	    )
-	   #(#InputFieldSpec
-	      #name: 'shortcutKeyField'
-	      #layout: #(#LayoutFrame 110 0 15 0 -5 1.0 37 0)
-	      #activeHelpKey: #detailsAccelerator
-	      #tabable: true
-	      #model: #shortcutKeyCharacter
-	      #group: #inputGroup
-	      #type: #symbolOrNil
-	      #immediateAccept: false
-	      #acceptOnReturn: true
-	      #acceptOnTab: true
-	      #acceptChannel: #acceptChannel
-	      #modifiedChannel: #modifiedChannel
-	      #acceptOnPointerLeave: false
-	    )
-	   #(#LabelSpec
-	      #label: 'Enabled:'
-	      #name: 'enabledLabel'
-	      #layout: #(#AlignmentOrigin 107 0 51 0 1 0.5)
-	      #activeHelpKey: #detailsEnabled
-	      #resizeForLabel: true
-	      #adjust: #right
-	    )
-	   #(#InputFieldSpec
-	      #name: 'enabledField'
-	      #layout: #(#LayoutFrame 110 0 40 0 -5 1.0 62 0)
-	      #activeHelpKey: #detailsEnabled
-	      #tabable: true
-	      #model: #enabled
-	      #group: #inputGroup
-	      #type: #symbolOrNil
-	      #immediateAccept: false
-	      #acceptOnReturn: true
-	      #acceptOnTab: true
-	      #acceptChannel: #acceptChannel
-	      #modifiedChannel: #modifiedChannel
-	      #acceptOnPointerLeave: false
-	    )
-	   #(#LabelSpec
-	      #label: 'Visibility:'
-	      #name: 'visibilityLabel'
-	      #layout: #(#AlignmentOrigin 107 0 76 0 1 0.5)
-	      #activeHelpKey: #detailsVisibility
-	      #resizeForLabel: true
-	      #adjust: #right
-	    )
-	   #(#InputFieldSpec
-	      #name: 'isVisibleInputField'
-	      #layout: #(#LayoutFrame 110 0 65 0 -5 1.0 87 0)
-	      #activeHelpKey: #detailsVisibility
-	      #tabable: true
-	      #model: #isVisible
-	      #group: #inputGroup
-	      #type: #symbolOrNil
-	      #immediateAccept: false
-	      #acceptOnReturn: true
-	      #acceptOnTab: true
-	      #acceptChannel: #acceptChannel
-	      #modifiedChannel: #modifiedChannel
-	      #acceptOnPointerLeave: false
-	    )
-	   #(#LabelSpec
-	      #label: 'Aux Value'
-	      #name: 'auxLabel'
-	      #layout: #(#AlignmentOrigin 107 0 101 0 1 0.5)
-	      #activeHelpKey: #detailsAuxValue
-	      #translateLabel: true
-	      #resizeForLabel: true
-	      #adjust: #right
-	    )
-	   #(#InputFieldSpec
-	      #name: 'auxInputField'
-	      #layout: #(#LayoutFrame 110 0 90 0 -5 1.0 112 0)
-	      #activeHelpKey: #detailsAuxValue
-	      #tabable: true
-	      #model: #auxValue
-	      #group: #inputGroup
-	      #type: #smalltalkObject
-	      #immediateAccept: false
-	      #acceptOnReturn: true
-	      #acceptOnTab: true
-	      #acceptChannel: #acceptChannel
-	      #modifiedChannel: #modifiedChannel
-	      #acceptOnPointerLeave: false
-	    )
-	   #(#LabelSpec
-	      #label: 'Start Group:'
-	      #name: 'StartGroupLabel'
-	      #layout: #(#AlignmentOrigin 107 0 139 0 1 0.5)
-	      #activeHelpKey: #detailsStartGroup
-	      #resizeForLabel: true
-	      #adjust: #right
-	    )
-	   #(#PopUpListSpec
-	      #label: 'left'
-	      #name: 'StartGroupPopUp'
-	      #layout: #(#LayoutFrame 110 0 128 0 -5 1.0 150 0)
-	      #activeHelpKey: #detailsStartGroup
-	      #tabable: true
-	      #model: #startGroup
-	      #menu: 
-	     #(#left
-		#right
-	      )
-	    )
-	   #(#LabelSpec
-	      #label: 'Access Character Position:'
-	      #name: 'accessCharLabel'
-	      #layout: #(#AlignmentOrigin 217 0 170 0 1 0.5)
-	      #activeHelpKey: #detailsAccessCharaterPosition
-	      #resizeForLabel: true
-	      #adjust: #right
-	    )
-	   #(#InputFieldSpec
-	      #name: 'accessCharField'
-	      #layout: #(#LayoutFrame 220 0 159 0 -5 1.0 181 0)
-	      #activeHelpKey: #detailsAccessCharaterPosition
-	      #tabable: true
-	      #model: #accessCharacterPosition
-	      #group: #inputGroup
-	      #type: #numberOrNil
-	      #immediateAccept: false
-	      #acceptOnReturn: true
-	      #acceptOnTab: true
-	      #acceptChannel: #acceptChannel
-	      #modifiedChannel: #modifiedChannel
-	      #acceptOnPointerLeave: false
-	    )
-	   #(#LabelSpec
-	      #label: 'Font:'
-	      #name: 'fontLabel'
-	      #layout: #(#AlignmentOrigin 75 0 219 0 1 0.5)
-	      #resizeForLabel: true
-	      #adjust: #right
-	    )
-	   #(#FontMenuSpec
-	      #attributes: 
-	     #(#tabable
-		true
-	      )
-	      #name: 'fontMenu'
-	      #layout: #(#LayoutFrame 78 0 208 0 -5 1.0 230 0)
-	      #activeHelpKey: #fontMenu
-	      #model: #font
-	    )
-	   )
+          #collection: #(
+           #(#LabelSpec
+              #label: 'Accelerator:'
+              #name: 'shortcutKeyLabel'
+              #layout: #(#AlignmentOrigin 107 0 26 0 1 0.5)
+              #activeHelpKey: #detailsAccelerator
+              #resizeForLabel: true
+              #adjust: #right
+            )
+           #(#InputFieldSpec
+              #name: 'shortcutKeyField'
+              #layout: #(#LayoutFrame 110 0 15 0 -5 1.0 37 0)
+              #activeHelpKey: #detailsAccelerator
+              #tabable: true
+              #model: #shortcutKeyCharacter
+              #group: #inputGroup
+              #type: #symbolOrNil
+              #immediateAccept: false
+              #acceptOnReturn: true
+              #acceptOnTab: true
+              #acceptChannel: #acceptChannel
+              #modifiedChannel: #modifiedChannel
+              #acceptOnPointerLeave: false
+            )
+           #(#LabelSpec
+              #label: 'Enabled:'
+              #name: 'enabledLabel'
+              #layout: #(#AlignmentOrigin 107 0 51 0 1 0.5)
+              #activeHelpKey: #detailsEnabled
+              #resizeForLabel: true
+              #adjust: #right
+            )
+           #(#InputFieldSpec
+              #name: 'enabledField'
+              #layout: #(#LayoutFrame 110 0 40 0 -5 1.0 62 0)
+              #activeHelpKey: #detailsEnabled
+              #tabable: true
+              #model: #enabled
+              #group: #inputGroup
+              #type: #symbolOrBooleanOrNil
+              #immediateAccept: false
+              #acceptOnReturn: true
+              #acceptOnTab: true
+              #acceptChannel: #acceptChannel
+              #modifiedChannel: #modifiedChannel
+              #acceptOnPointerLeave: false
+            )
+           #(#LabelSpec
+              #label: 'Visibility:'
+              #name: 'visibilityLabel'
+              #layout: #(#AlignmentOrigin 107 0 76 0 1 0.5)
+              #activeHelpKey: #detailsVisibility
+              #resizeForLabel: true
+              #adjust: #right
+            )
+           #(#InputFieldSpec
+              #name: 'isVisibleInputField'
+              #layout: #(#LayoutFrame 110 0 65 0 -5 1.0 87 0)
+              #activeHelpKey: #detailsVisibility
+              #tabable: true
+              #model: #isVisible
+              #group: #inputGroup
+              #type: #symbolOrBooleanOrNil
+              #immediateAccept: false
+              #acceptOnReturn: true
+              #acceptOnTab: true
+              #acceptChannel: #acceptChannel
+              #modifiedChannel: #modifiedChannel
+              #acceptOnPointerLeave: false
+            )
+           #(#LabelSpec
+              #label: 'Aux Value'
+              #name: 'auxLabel'
+              #layout: #(#AlignmentOrigin 107 0 101 0 1 0.5)
+              #activeHelpKey: #detailsAuxValue
+              #translateLabel: true
+              #resizeForLabel: true
+              #adjust: #right
+            )
+           #(#InputFieldSpec
+              #name: 'auxInputField'
+              #layout: #(#LayoutFrame 110 0 90 0 -5 1.0 112 0)
+              #activeHelpKey: #detailsAuxValue
+              #tabable: true
+              #model: #auxValue
+              #group: #inputGroup
+              #type: #smalltalkObject
+              #immediateAccept: false
+              #acceptOnReturn: true
+              #acceptOnTab: true
+              #acceptChannel: #acceptChannel
+              #modifiedChannel: #modifiedChannel
+              #acceptOnPointerLeave: false
+            )
+           #(#LabelSpec
+              #label: 'Start Group:'
+              #name: 'StartGroupLabel'
+              #layout: #(#AlignmentOrigin 107 0 139 0 1 0.5)
+              #activeHelpKey: #detailsStartGroup
+              #resizeForLabel: true
+              #adjust: #right
+            )
+           #(#PopUpListSpec
+              #label: 'left'
+              #name: 'StartGroupPopUp'
+              #layout: #(#LayoutFrame 110 0 128 0 -5 1.0 150 0)
+              #activeHelpKey: #detailsStartGroup
+              #tabable: true
+              #model: #startGroup
+              #menu: 
+             #(#left
+                #right
+              )
+            )
+           #(#LabelSpec
+              #label: 'Access Character Position:'
+              #name: 'accessCharLabel'
+              #layout: #(#AlignmentOrigin 217 0 170 0 1 0.5)
+              #activeHelpKey: #detailsAccessCharaterPosition
+              #resizeForLabel: true
+              #adjust: #right
+            )
+           #(#InputFieldSpec
+              #name: 'accessCharField'
+              #layout: #(#LayoutFrame 220 0 159 0 -5 1.0 181 0)
+              #activeHelpKey: #detailsAccessCharaterPosition
+              #tabable: true
+              #model: #accessCharacterPosition
+              #group: #inputGroup
+              #type: #numberOrNil
+              #immediateAccept: false
+              #acceptOnReturn: true
+              #acceptOnTab: true
+              #acceptChannel: #acceptChannel
+              #modifiedChannel: #modifiedChannel
+              #acceptOnPointerLeave: false
+            )
+           #(#LabelSpec
+              #label: 'Font:'
+              #name: 'fontLabel'
+              #layout: #(#AlignmentOrigin 75 0 219 0 1 0.5)
+              #resizeForLabel: true
+              #adjust: #right
+            )
+           #(#FontMenuSpec
+              #attributes: 
+             #(#tabable
+                true
+              )
+              #name: 'fontMenu'
+              #layout: #(#LayoutFrame 78 0 208 0 -5 1.0 230 0)
+              #activeHelpKey: #fontMenu
+              #model: #font
+            )
+           )
          
-	)
+        )
       )
 ! !
 
@@ -3376,7 +3387,7 @@
           #name: 'basicsEditSpec'
           #min: #(#Point 10 10)
           #max: #(#Point 1160 870)
-          #bounds: #(#Rectangle 42 67 382 407)
+          #bounds: #(#Rectangle 314 340 654 680)
         )
         #component: 
        #(#SpecCollection
@@ -3446,12 +3457,13 @@
               #group: #inputGroup
               #type: #symbolOrNil
               #immediateAccept: false
+              #acceptOnLeave: true
               #acceptOnReturn: true
               #acceptOnTab: true
-              #acceptOnLostFocus: false
+              #acceptOnLostFocus: true
               #acceptChannel: #acceptChannel
               #modifiedChannel: #modifiedChannel
-              #acceptOnPointerLeave: false
+              #acceptOnPointerLeave: true
             )
            #(#LabelSpec
               #label: 'Argument:'
@@ -3600,7 +3612,8 @@
               #label: 'Send To Originating Widget'
               #name: 'sendToOriginator'
               #layout: #(#AlignmentOrigin 7 0 313 0 0 0)
-              #activeHelpKey: #showBusyCursorWhilePerforming
+              #activeHelpKey: #sendToOriginator
+              #enableChannel: #hasItemValue
               #tabable: true
               #model: #sendToOriginator
               #translateLabel: true
@@ -3908,7 +3921,7 @@
               #model: #isButton
             )
            #(#CheckBoxSpec
-              #label: 'Has Horizontal Layout'
+              #label: 'Horizontal Layout'
               #name: 'horizontalLayout'
               #layout: #(#Point 20 263)
               #activeHelpKey: #horizontalLayout
@@ -3916,7 +3929,7 @@
               #model: #horizontalLayout
             )
            #(#CheckBoxSpec
-              #label: 'Do not destroy linked Menu'
+              #label: 'Do not Destroy Linked Menu'
               #name: 'keepLinkedMenu'
               #layout: #(#Point 20 288)
               #activeHelpKey: #keepLinkedMenu
@@ -4141,7 +4154,7 @@
               #model: #isButton
             )
            #(#CheckBoxSpec
-              #label: 'Has Horizontal Layout'
+              #label: 'Horizontal Layout'
               #name: 'horizontalLayout'
               #layout: #(#Point 20 263)
               #activeHelpKey: #horizontalLayout
@@ -4965,78 +4978,78 @@
 
     ^ 
      #(#FullSpec
-	#name: #basicsEditSpec
-	#window: 
+        #name: #basicsEditSpec
+        #window: 
        #(#WindowSpec
-	  #label: 'basicsEditSpec'
-	  #name: 'basicsEditSpec'
-	  #min: #(#Point 10 10)
-	  #max: #(#Point 1160 870)
-	  #bounds: #(#Rectangle 160 398 420 643)
-	)
-	#component: 
+          #label: 'basicsEditSpec'
+          #name: 'basicsEditSpec'
+          #min: #(#Point 10 10)
+          #max: #(#Point 1160 870)
+          #bounds: #(#Rectangle 160 398 420 643)
+        )
+        #component: 
        #(#SpecCollection
-	  #collection: #(
-	   #(#LabelSpec
-	      #label: 'Separator:'
-	      #name: 'separatorLabel'
-	      #layout: #(#AlignmentOrigin 107 0 26 0 1 0.5)
-	      #resizeForLabel: true
-	      #adjust: #right
-	    )
-	   #(#ComboListSpec
-	      #name: 'seperatorList'
-	      #layout: #(#LayoutFrame 110 0 15 0 -5 1.0 37 0)
-	      #activeHelpKey: #basicsSeparatorType
-	      #tabable: true
-	      #model: #seperatorSelection
-	      #comboList: #seperatorList
-	      #useIndex: true
-	    )
-	   #(#LabelSpec
-	      #label: 'Visibility:'
-	      #name: 'visibilityLabel'
-	      #layout: #(#AlignmentOrigin 107 0 51 0 1 0.5)
-	      #resizeForLabel: true
-	      #adjust: #right
-	    )
-	   #(#InputFieldSpec
-	      #name: 'visibilityInputField'
-	      #layout: #(#LayoutFrame 110 0 40 0 -5 1.0 62 0)
-	      #activeHelpKey: #detailsVisibility
-	      #tabable: true
-	      #model: #isVisible
-	      #group: #inputGroup
-	      #type: #symbolOrNil
-	      #immediateAccept: false
-	      #acceptOnReturn: true
-	      #acceptOnTab: true
-	      #acceptChannel: #acceptChannel
-	      #modifiedChannel: #modifiedChannel
-	      #acceptOnPointerLeave: false
-	    )
-	   #(#LabelSpec
-	      #label: 'Start Group:'
-	      #name: 'startGroupLabel'
-	      #layout: #(#AlignmentOrigin 107 0 88 0 1 0.5)
-	      #resizeForLabel: true
-	      #adjust: #right
-	    )
-	   #(#PopUpListSpec
-	      #label: 'left'
-	      #name: 'startGroupPopUp'
-	      #layout: #(#LayoutFrame 110 0 77 0 -5 1.0 99 0)
-	      #activeHelpKey: #detailsStartGroup
-	      #tabable: true
-	      #model: #startGroup
-	      #menu: 
-	     #(#left
-		#right
-	      )
-	    )
-	   )
+          #collection: #(
+           #(#LabelSpec
+              #label: 'Separator:'
+              #name: 'separatorLabel'
+              #layout: #(#AlignmentOrigin 107 0 26 0 1 0.5)
+              #resizeForLabel: true
+              #adjust: #right
+            )
+           #(#ComboListSpec
+              #name: 'seperatorList'
+              #layout: #(#LayoutFrame 110 0 15 0 -5 1.0 37 0)
+              #activeHelpKey: #basicsSeparatorType
+              #tabable: true
+              #model: #seperatorSelection
+              #comboList: #seperatorList
+              #useIndex: true
+            )
+           #(#LabelSpec
+              #label: 'Visibility:'
+              #name: 'visibilityLabel'
+              #layout: #(#AlignmentOrigin 107 0 51 0 1 0.5)
+              #resizeForLabel: true
+              #adjust: #right
+            )
+           #(#InputFieldSpec
+              #name: 'visibilityInputField'
+              #layout: #(#LayoutFrame 110 0 40 0 -5 1.0 62 0)
+              #activeHelpKey: #detailsVisibility
+              #tabable: true
+              #model: #isVisible
+              #group: #inputGroup
+              #type: #symbolOrBooleanOrNil
+              #immediateAccept: false
+              #acceptOnReturn: true
+              #acceptOnTab: true
+              #acceptChannel: #acceptChannel
+              #modifiedChannel: #modifiedChannel
+              #acceptOnPointerLeave: false
+            )
+           #(#LabelSpec
+              #label: 'Start Group:'
+              #name: 'startGroupLabel'
+              #layout: #(#AlignmentOrigin 107 0 88 0 1 0.5)
+              #resizeForLabel: true
+              #adjust: #right
+            )
+           #(#PopUpListSpec
+              #label: 'left'
+              #name: 'startGroupPopUp'
+              #layout: #(#LayoutFrame 110 0 77 0 -5 1.0 99 0)
+              #activeHelpKey: #detailsStartGroup
+              #tabable: true
+              #model: #startGroup
+              #menu: 
+             #(#left
+                #right
+              )
+            )
+           )
          
-	)
+        )
       )
 ! !