Menu.st
changeset 900 aa93395cdb55
parent 801 0b87e3ba8eaf
child 938 dfa1b1666cfa
--- a/Menu.st	Wed Apr 15 13:31:52 1998 +0200
+++ b/Menu.st	Sun Apr 19 17:17:35 1998 +0200
@@ -37,48 +37,48 @@
     nLabel := arrayOfString size.
 
     valueArrayOrNil isNil ifTrue:[
-	(valueArray := arrayOfString isEmpty) ifTrue: [
-	    valueArray := #()
-	] ifFalse:[
-	    valueArray := (1 to:nLabel)
-	]
+        (valueArray := arrayOfString isEmpty) ifTrue: [
+            valueArray := #()
+        ] ifFalse:[
+            valueArray := (1 to:nLabel)
+        ]
     ] ifFalse:[
-	valueArray := valueArrayOrNil
+        valueArray := valueArrayOrNil
     ].
 
     nLabel ~~ valueArray size ifTrue: [
-	^ self error: 'illegal menu combination'
+        ^ self error: 'illegal menu combination'
     ].
 
     menuItems := Array new:nLabel.
     1 to:nLabel do:[:i |
-	|mi v|
+        |mi v|
 
-	mi := MenuItem labeled: (arrayOfString at:i) asString.
-	v := valueArray at: i.
-	(v isKindOf: Menu) ifTrue: [mi submenu: v].
-	menuItems at: i put: mi
+        mi := MenuItem labeled: (arrayOfString at:i) asString.
+        v := valueArray at: i.
+        (v isKindOf: Menu) ifTrue: [mi submenu: v].
+        menuItems at: i put: mi
     ].
 
     (linesArray == nil or:[linesArray isEmpty]) ifTrue:[
-	groupLengths := (menuItems isEmpty)
-			    ifTrue: [Array new: 0]
-			    ifFalse: [Array with: menuItems size]
+        groupLengths := (menuItems isEmpty)
+                            ifTrue: [Array new: 0]
+                            ifFalse: [Array with: menuItems size]
     ] ifFalse:[
-	groupLengths := Array new: linesArray size + 1.
-	groupLengths at: 1 put: linesArray first.
-	2 to: linesArray size do: [:i | 
-		groupLengths at: i put: (linesArray at: i) - (linesArray at: i - 1)
-	].
-	groupLengths at: groupLengths size put: menuItems size - linesArray last
+        groupLengths := Array new: linesArray size + 1.
+        groupLengths at: 1 put: linesArray first.
+        2 to: linesArray size do: [:i | 
+                groupLengths at: i put: (linesArray at: i) - (linesArray at: i - 1)
+        ].
+        groupLengths at: groupLengths size put: menuItems size - linesArray last.
     ].
 
     ^ self new 
-	menuItems: menuItems 
-	menuItemGroups: groupLengths 
-	values: valueArray
+        menuItems: menuItems 
+        menuItemGroups: groupLengths 
+        values: valueArray
 
-    "Modified: / 31.10.1997 / 03:19:14 / cg"
+    "Modified: / 19.4.1998 / 11:30:18 / cg"
 !
 
 labelList:arrayOfGroupStrings values:valueArrayOrNil
@@ -304,14 +304,22 @@
 !
 
 menuItems:aCollectionOfMenuItems menuItemGroups:sizes values:values
+    |n|
+
     items := aCollectionOfMenuItems.
     groupSizes := sizes.
+    sizes size > 0 ifTrue:[
+        n := sizes inject:0 into:[:sumSoFar :this | sumSoFar + this].
+        n = items size ifTrue:[
+            groupSizes := sizes copyWithoutLast:1
+        ]
+    ].
 
     values notNil ifTrue:[
-	items with:values do:[:anItem :aValue |anItem value:aValue]
+        items with:values do:[:anItem :aValue |anItem value:aValue]
     ].
 
-    "Modified: 20.6.1997 / 10:45:30 / cg"
+    "Modified: / 19.4.1998 / 11:47:34 / cg"
 !
 
 numberOfItems
@@ -760,5 +768,5 @@
 !Menu class methodsFor:'documentation'!
 
 version
-    ^ '$Header: /cvs/stx/stx/libview2/Menu.st,v 1.26 1998-02-02 12:30:22 cg Exp $'
+    ^ '$Header: /cvs/stx/stx/libview2/Menu.st,v 1.27 1998-04-19 15:17:35 cg Exp $'
 ! !