--- a/MenuView.st Wed Mar 03 17:51:48 2004 +0100
+++ b/MenuView.st Wed Mar 03 17:52:13 2004 +0100
@@ -519,10 +519,15 @@
!
addItemList:list after:itemNameOrSelector
+ self addItemList:list resources:nil after:itemNameOrSelector
+!
+
+addItemList:list resources:resources after:itemNameOrSelector
self
addLabels:(list collect:[:row | row at:1])
selectors:(list collect:[:row | row at:2 ifAbsent:nil])
accelerators:(list collect:[:row | row at:3 ifAbsent:nil])
+ resources:resources
after:itemNameOrSelector
!
@@ -839,6 +844,212 @@
"Modified: 24.3.1996 / 17:12:23 / cg"
!
+addLabels:moreLabels selectors:moreSelectors accelerators:shorties resources:resources after:aLabelOrSelectorOrNumber
+ "insert more labels/selectors at some place.
+ Being very friendly here, allowing label-string, selector or numeric
+ index for the argument aLabelOrSelectorOrNumber.
+ If such an item is not found, insert the new items at the END.
+
+ To be independent of the entries label, we recommend you use the selector
+ as index; in systems which translate strings for national variants,
+ this makes your code easier to maintain."
+
+ |idx|
+
+ aLabelOrSelectorOrNumber isNil ifTrue:[
+ idx := list size + 1
+ ] ifFalse:[
+ idx := (self indexOf:aLabelOrSelectorOrNumber) + 1.
+ idx == 1 ifTrue:[
+ idx := list size + 1
+ ]
+ ].
+
+ ^ self
+ addLabels:moreLabels
+ selectors:moreSelectors
+ accelerators:shorties
+ resources:resources
+ before:idx
+
+ "Created: 28.2.1996 / 17:48:24 / cg"
+ "Modified: 4.3.1996 / 23:26:02 / cg"
+!
+
+addLabels:moreLabels selectors:moreSelectors accelerators:shorties resources:resources before:aLabelOrSelectorOrNumber
+ "insert more labels/selectors at some place.
+ Being very friendly here, allowing label-string, selector or numeric
+ index for the argument aLabelOrSelectorOrNumber.
+ If such an item is not found, insert the new items at the beginning.
+
+ To be independent of the entries label, we recommend you use the selector
+ as index; in systems which translate strings for national variants,
+ this makes your code easier to maintain."
+
+ |idx oldSize
+ i "{ Class: SmallInteger }"
+ nMore "{ Class: SmallInteger }"|
+
+ list isNil ifTrue:[
+ ^ self addLabels:moreLabels selectors:moreSelectors resources:resources
+ ].
+ "
+ be user friendly - allow both label or selector
+ to be passed
+ "
+ aLabelOrSelectorOrNumber isNil ifTrue:[
+ idx := 1
+ ] ifFalse:[
+ idx := self indexOf:aLabelOrSelectorOrNumber.
+ (idx between:2 and:(list size + 1)) ifFalse:[
+ "add to beginning"
+ idx := 1
+ ]
+ ].
+
+ nMore := moreLabels size.
+ "/ just a check
+ moreSelectors size ~~ nMore ifTrue:[
+ ^ self error
+ ].
+
+ oldSize := list size.
+
+ list := list asOrderedCollection.
+ i := idx.
+ moreLabels do:[:aLabel |
+ |l|
+
+ resources notNil
+ ifTrue:[l := resources string:aLabel]
+ ifFalse:[l := aLabel].
+
+ list add:l beforeIndex:i. i := i + 1.
+ ].
+
+ selectors := (selectors ? #()) asOrderedCollection.
+ i := idx.
+ moreSelectors do:[:sel |
+ selectors add:sel beforeIndex:i. i := i + 1.
+ ].
+
+ enableFlags := (enableFlags ? #()) asOrderedCollection.
+ i := idx.
+ nMore timesRepeat:[
+ enableFlags add:true beforeIndex:i. i := i + 1.
+ ].
+
+ subMenus notNil ifTrue:[
+ subMenus := subMenus asOrderedCollection.
+ i := idx.
+ i >= subMenus size ifTrue:[
+ subMenus grow:i-1
+ ].
+ nMore timesRepeat:[
+ subMenus add:nil beforeIndex:i. i := i + 1.
+ ].
+ ].
+ args notNil ifTrue:[
+ args := args asOrderedCollection.
+ i := idx.
+ i >= args size ifTrue:[
+ args grow:i-1
+ ].
+ nMore timesRepeat:[
+ args add:nil beforeIndex:i. i := i + 1.
+ ]
+ ].
+ actions notNil ifTrue:[
+ actions := actions asOrderedCollection.
+ i := idx.
+ i >= actions size ifTrue:[
+ actions grow:i-1
+ ].
+ nMore timesRepeat:[
+ actions add:nil beforeIndex:i. i := i + 1.
+ ]
+ ].
+ onOffFlags notNil ifTrue:[
+ onOffFlags := onOffFlags asOrderedCollection.
+ i := idx.
+ i >= onOffFlags size ifTrue:[
+ onOffFlags grow:i-1
+ ].
+ nMore timesRepeat:[
+ onOffFlags add:nil beforeIndex:i. i := i + 1.
+ ]
+ ].
+ shortKeys isNil ifTrue:[
+ shortKeys := OrderedCollection new:oldSize.
+ shortKeys grow:oldSize
+ ].
+ shortKeys := shortKeys asOrderedCollection.
+ i := idx.
+ shorties isNil ifTrue:[
+ nMore timesRepeat:[
+ shortKeys add:nil beforeIndex:i. i := i + 1.
+ ]
+ ] ifFalse:[
+ maxShortKeyStringLen := nil.
+ shorties do:[:sel |
+ shortKeys add:sel beforeIndex:i. i := i + 1.
+ ]
+ ].
+
+ shown ifTrue:[
+ self resize
+ ] ifFalse:[
+ needResize := true
+ ].
+
+ "
+ |v1 v2 v3 v4 v5 m|
+
+
+ v1 := CodeView new open.
+ v1 contents:'original menu'.
+
+ v2 := CodeView new open.
+ v2 contents:'before copy'.
+ m := v2 editMenu.
+ m
+ addLabels:#('new entry1' 'new entry2')
+ selectors:#(foo bar)
+ before:#copySelection
+ accelerators:#(Copy Cut Paste).
+ v2 middleButtonMenu:m.
+
+ v3 := CodeView new open.
+ v3 contents:'before again '.
+ m := v3 editMenu.
+ m
+ addLabels:#('new entry1' 'new entry2')
+ selectors:#(foo bar)
+ before:#again.
+ v3 middleButtonMenu:m.
+
+ v4 := CodeView new open.
+ v4 contents:'at beginning '.
+ m := v4 editMenu.
+ m
+ addLabels:#('new entry1' 'new entry2' '-')
+ selectors:#(foo bar nil)
+ before:1.
+ v4 middleButtonMenu:m.
+
+ v5 := CodeView new open.
+ v5 contents:'at end '.
+ m := v5 editMenu.
+ m
+ addLabels:#('-' 'new entry1' 'new entry2')
+ selectors:#(nil foo bar).
+ v5 middleButtonMenu:m.
+ "
+
+ "Created: 28.2.1996 / 17:49:44 / cg"
+ "Modified: 24.3.1996 / 17:12:23 / cg"
+!
+
addLabels:moreLabels selectors:moreSelectors after:aLabelOrSelectorOrNumber
"insert more labels/selectors at some place.
Being very friendly here, allowing label-string, selector or numeric
@@ -908,6 +1119,94 @@
"Modified: 28.2.1996 / 17:49:30 / cg"
!
+addLabels:moreLabels selectors:moreSelectors resources:resources
+ "add more labels and selectors at the END"
+
+ self addLabels:moreLabels selectors:moreSelectors resources:resources after:nil
+
+ "Modified: 28.2.1996 / 17:46:50 / cg"
+!
+
+addLabels:moreLabels selectors:moreSelectors resources:resources accelerators:shorties
+ "add more labels and selectors at the END"
+
+ self addLabels:moreLabels selectors:moreSelectors accelerators:shorties resources:resources after:nil
+
+ "Modified: 28.2.1996 / 17:46:50 / cg"
+ "Created: 28.2.1996 / 17:47:17 / cg"
+!
+
+addLabels:moreLabels selectors:moreSelectors resources:resources after:aLabelOrSelectorOrNumber
+ "insert more labels/selectors at some place.
+ Being very friendly here, allowing label-string, selector or numeric
+ index for the argument aLabelOrSelectorOrNumber.
+ If such an item is not found, insert the new items at the END.
+
+ To be independent of the entries label, we recommend you use the selector
+ as index; in systems which translate strings for national variants,
+ this makes your code easier to maintain."
+
+ ^ self
+ addLabels:moreLabels
+ selectors:moreSelectors
+ accelerators:nil
+ resources:resources
+ after:aLabelOrSelectorOrNumber
+
+ "Modified: 28.2.1996 / 17:47:52 / cg"
+!
+
+addLabels:moreLabels selectors:moreSelectors resources:resources before:aLabelOrSelectorOrNumber
+ "insert more labels/selectors at some place.
+ Being very friendly here, allowing label-string, selector or numeric
+ index for the argument aLabelOrSelectorOrNumber.
+ If such an item is not found, insert the new items at the beginning.
+
+ To be independent of the entries label, we recommend you use the selector
+ as index; in systems which translate strings for national variants,
+ this makes your code easier to maintain."
+
+ self
+ addLabels:moreLabels
+ selectors:moreSelectors
+ accelerators:nil
+ resources:resources
+ before:aLabelOrSelectorOrNumber
+
+ "
+ |v1 v2 v3 v4 m|
+
+
+ v1 := CodeView new open.
+
+ v2 := CodeView new open.
+ m := v2 editMenu.
+ m
+ addLabels:#('new entry1' 'new entry2')
+ selectors:#(foo bar)
+ before:'paste'.
+ v2 middleButtonMenu:m.
+
+ v3 := CodeView new open.
+ m := v3 editMenu.
+ m
+ addLabels:#('new entry1' 'new entry2')
+ selectors:#(foo bar)
+ before:#again.
+ v3 middleButtonMenu:m.
+
+ v4 := CodeView new open.
+ m := v4 editMenu.
+ m
+ addLabels:#('new entry1' 'new entry2')
+ selectors:#(foo bar)
+ before:1.
+ v4 middleButtonMenu:m.
+ "
+
+ "Modified: 28.2.1996 / 17:49:30 / cg"
+!
+
addSeparatingLine
"add a separating line at the END"
@@ -2786,5 +3085,5 @@
!MenuView class methodsFor:'documentation'!
version
- ^ '$Header: /cvs/stx/stx/libwidg/MenuView.st,v 1.143 2004-03-02 08:44:19 cg Exp $'
+ ^ '$Header: /cvs/stx/stx/libwidg/MenuView.st,v 1.144 2004-03-03 16:52:13 cg Exp $'
! !