--- a/UIObjectView.st Wed Sep 22 18:59:10 1999 +0200
+++ b/UIObjectView.st Wed Sep 22 20:11:46 1999 +0200
@@ -1344,6 +1344,21 @@
]
!
+twoElementSelection
+ "checks whether exactly two elements are selected;
+ in this case, return the selection collection.
+ otherwise return nil
+ "
+ |coll|
+
+ (coll := self selection) isCollection ifFalse:[
+ ^ nil "/ single
+ ].
+
+ coll size == 2 ifTrue:[ ^ coll].
+ ^ nil
+!
+
unselect
"clear selection
"
@@ -1523,6 +1538,32 @@
!
+exchangeLayouts
+ "exchange the layout of two elements
+ (useful to change the order of radiobuttons or checkBoxes)
+ "
+ |objects l1 l2|
+
+ objects := self twoElementSelection.
+
+ objects notNil ifTrue:[
+ l1 := (objects at:1) geometryLayout copy.
+ l2 := (objects at:2) geometryLayout copy.
+ self transaction:#exchangeLayout dimensionDo:[:v|
+ v == (objects at:1) ifTrue:[
+ v geometryLayout:(l2 copy)
+ ] ifFalse:[
+ v geometryLayout:(l1 copy).
+ ]
+ ]
+ ] ifFalse:[
+ self warn:'exactly two elements must be selected'.
+ ]
+
+
+
+!
+
pasteExtent
"paste the copied extent to all objects in the selection
"
--- a/UIPainter.st Wed Sep 22 18:59:10 1999 +0200
+++ b/UIPainter.st Wed Sep 22 20:11:46 1999 +0200
@@ -1336,178 +1336,185 @@
#(#Menu
- #(
- #(#MenuItem
- #label: 'Undo'
- #translateLabel: true
- #nameKey: #undo
- #value: #undoLast
- #activeHelpKey: #editUndo
- #enabled: #hasUndoHistory
- #shortcutKeyCharacter: #Cmdu
- )
- #(#MenuItem
- #label: '-'
- )
- #(#MenuItem
- #label: 'Cut'
- #translateLabel: true
- #value: #deleteSelection
- #activeHelpKey: #editCut
- #enabled: #valueOfCanCut
- #shortcutKeyCharacter: #Cut
- )
- #(#MenuItem
- #label: 'Copy'
- #translateLabel: true
- #value: #copySelection
- #activeHelpKey: #editCopy
- #enabled: #valueOfCanCopy
- #shortcutKeyCharacter: #Copy
- )
- #(#MenuItem
- #label: 'Paste'
- #translateLabel: true
- #value: #pasteBuffer
- #activeHelpKey: #pasteBuffer
- #enabled: #valueOfCanPaste
- #shortcutKeyCharacter: #Paste
- )
- #(#MenuItem
- #label: 'Delete'
- #translateLabel: true
- #value: #deleteTotalSelection
- #activeHelpKey: #editDelete
- #enabled: #valueOfCanCut
- #shortcutKeyCharacter: #Delete
- )
- #(#MenuItem
- #label: '-'
- )
- #(#MenuItem
- #label: 'Paste With Layout'
- #translateLabel: true
- #value: #pasteWithLayout
- #activeHelpKey: #pasteWithLayout
- #enabled: #valueOfCanPasteWithKeepingLayout
- )
- #(#MenuItem
- #label: '-'
- )
- #(#MenuItem
- #label: 'Move'
- #translateLabel: true
- #enabled: #canMoveSelection
- #submenuChannel: #menuMove
- )
- #(#MenuItem
- #label: 'Dimension'
- #translateLabel: true
- #enabled: #hasSelection
- #submenu:
- #(#Menu
+ #(
+ #(#MenuItem
+ #label: 'Undo'
+ #translateLabel: true
+ #nameKey: #undo
+ #value: #undoLast
+ #activeHelpKey: #editUndo
+ #enabled: #hasUndoHistory
+ #shortcutKeyCharacter: #Cmdu
+ )
+ #(#MenuItem
+ #label: '-'
+ )
+ #(#MenuItem
+ #label: 'Cut'
+ #translateLabel: true
+ #value: #deleteSelection
+ #activeHelpKey: #editCut
+ #enabled: #valueOfCanCut
+ #shortcutKeyCharacter: #Cut
+ )
+ #(#MenuItem
+ #label: 'Copy'
+ #translateLabel: true
+ #value: #copySelection
+ #activeHelpKey: #editCopy
+ #enabled: #valueOfCanCopy
+ #shortcutKeyCharacter: #Copy
+ )
+ #(#MenuItem
+ #label: 'Paste'
+ #translateLabel: true
+ #value: #pasteBuffer
+ #activeHelpKey: #pasteBuffer
+ #enabled: #valueOfCanPaste
+ #shortcutKeyCharacter: #Paste
+ )
+ #(#MenuItem
+ #label: 'Delete'
+ #translateLabel: true
+ #value: #deleteTotalSelection
+ #activeHelpKey: #editDelete
+ #enabled: #valueOfCanCut
+ #shortcutKeyCharacter: #Delete
+ )
+ #(#MenuItem
+ #label: '-'
+ )
+ #(#MenuItem
+ #label: 'Paste With Layout'
+ #translateLabel: true
+ #value: #pasteWithLayout
+ #activeHelpKey: #pasteWithLayout
+ #enabled: #valueOfCanPasteWithKeepingLayout
+ )
+ #(#MenuItem
+ #label: '-'
+ )
+ #(#MenuItem
+ #label: 'Move'
+ #translateLabel: true
+ #enabled: #canMoveSelection
+ #submenuChannel: #menuMove
+ )
+ #(#MenuItem
+ #label: 'Dimension'
+ #translateLabel: true
+ #enabled: #hasSelection
+ #submenu:
+ #(#Menu
- #(
- #(#MenuItem
- #label: 'Default Extent'
- #translateLabel: true
- #value: #setToDefaultExtent
- #activeHelpKey: #editDimensionDefaultExtent
- #enabled: #canMoveOrAlignSelection
- )
- #(#MenuItem
- #label: 'Default Width'
- #translateLabel: true
- #value: #setToDefaultWidth
- #activeHelpKey: #editDimensionDefaultWidth
- #enabled: #canMoveOrAlignSelection
- )
- #(#MenuItem
- #label: 'Default Height'
- #translateLabel: true
- #value: #setToDefaultHeight
- #activeHelpKey: #editDimensionDefaultHeight
- #enabled: #canMoveOrAlignSelection
- )
- #(#MenuItem
- #label: '-'
- )
- #(#MenuItem
- #label: 'Copy Layout'
- #translateLabel: true
- #value: #copyLayout
- #activeHelpKey: #editDimensionCopyLayout
- #enabled: #hasSingleSelection
- )
- #(#MenuItem
- #label: 'Copy Extent'
- #translateLabel: true
- #value: #copyExtent
- #activeHelpKey: #editDimensionCopyExtent
- #enabled: #hasSingleSelection
- )
- #(#MenuItem
- #label: '-'
- )
- #(#MenuItem
- #label: 'Paste Layout'
- #translateLabel: true
- #value: #pasteLayout
- #activeHelpKey: #editDimensionPasteLayout
- #enabled: #canMoveOrAlignSelection
- )
- #(#MenuItem
- #label: 'Paste Extent'
- #translateLabel: true
- #value: #pasteExtent
- #activeHelpKey: #editDimensionPasteExtent
- #enabled: #canMoveOrAlignSelection
- )
- #(#MenuItem
- #label: 'Paste Width'
- #translateLabel: true
- #value: #pasteWidth
- #activeHelpKey: #editDimensionPasteWidth
- #enabled: #canMoveOrAlignSelection
- )
- #(#MenuItem
- #label: 'Paste Height'
- #translateLabel: true
- #value: #pasteHeight
- #activeHelpKey: #editDimensionPasteHeight
- #enabled: #canMoveOrAlignSelection
- )
- ) nil
- nil
- )
- )
- #(#MenuItem
- #label: '-'
- )
- #(#MenuItem
- #label: 'Open Widget Documentation'
- #translateLabel: true
- #value: #doOpenWidgetDocumentation
- #activeHelpKey: #editOpenSpecDocumentation
- )
- #(#MenuItem
- #label: '-'
- )
- #(#MenuItem
- #label: 'Inspect View'
- #translateLabel: true
- #value: #doInspectView
- #activeHelpKey: #editInspectView
- #enabled: #hasOneSelectionOtherThanCanvas
- )
- #(#MenuItem
- #label: 'Inspect Spec'
- #translateLabel: true
- #value: #doInspectSpec
- #activeHelpKey: #editInspectSpec
- )
- ) nil
- nil
+ #(
+ #(#MenuItem
+ #label: 'Default Extent'
+ #translateLabel: true
+ #value: #setToDefaultExtent
+ #activeHelpKey: #editDimensionDefaultExtent
+ #enabled: #canMoveOrAlignSelection
+ )
+ #(#MenuItem
+ #label: 'Default Width'
+ #translateLabel: true
+ #value: #setToDefaultWidth
+ #activeHelpKey: #editDimensionDefaultWidth
+ #enabled: #canMoveOrAlignSelection
+ )
+ #(#MenuItem
+ #label: 'Default Height'
+ #translateLabel: true
+ #value: #setToDefaultHeight
+ #activeHelpKey: #editDimensionDefaultHeight
+ #enabled: #canMoveOrAlignSelection
+ )
+ #(#MenuItem
+ #label: '-'
+ )
+ #(#MenuItem
+ #label: 'Copy Layout'
+ #translateLabel: true
+ #value: #copyLayout
+ #activeHelpKey: #editDimensionCopyLayout
+ #enabled: #hasSingleSelection
+ )
+ #(#MenuItem
+ #label: 'Paste Layout'
+ #translateLabel: true
+ #value: #pasteLayout
+ #activeHelpKey: #editDimensionPasteLayout
+ #enabled: #canMoveOrAlignSelection
+ )
+ #(#MenuItem
+ #label: 'Exchange Layouts'
+ #translateLabel: true
+ #value: #exchangeLayouts
+ #activeHelpKey: #editDimensionExchangeLayouts
+ #enabled: #canExchangeSelectionLayouts
+ )
+ #(#MenuItem
+ #label: '-'
+ )
+ #(#MenuItem
+ #label: 'Copy Extent'
+ #translateLabel: true
+ #value: #copyExtent
+ #activeHelpKey: #editDimensionCopyExtent
+ #enabled: #hasSingleSelection
+ )
+ #(#MenuItem
+ #label: 'Paste Extent'
+ #translateLabel: true
+ #value: #pasteExtent
+ #activeHelpKey: #editDimensionPasteExtent
+ #enabled: #canMoveOrAlignSelection
+ )
+ #(#MenuItem
+ #label: 'Paste Width'
+ #translateLabel: true
+ #value: #pasteWidth
+ #activeHelpKey: #editDimensionPasteWidth
+ #enabled: #canMoveOrAlignSelection
+ )
+ #(#MenuItem
+ #label: 'Paste Height'
+ #translateLabel: true
+ #value: #pasteHeight
+ #activeHelpKey: #editDimensionPasteHeight
+ #enabled: #canMoveOrAlignSelection
+ )
+ ) nil
+ nil
+ )
+ )
+ #(#MenuItem
+ #label: '-'
+ )
+ #(#MenuItem
+ #label: 'Open Widget Documentation'
+ #translateLabel: true
+ #value: #doOpenWidgetDocumentation
+ #activeHelpKey: #editOpenSpecDocumentation
+ )
+ #(#MenuItem
+ #label: '-'
+ )
+ #(#MenuItem
+ #label: 'Inspect View'
+ #translateLabel: true
+ #value: #doInspectView
+ #activeHelpKey: #editInspectView
+ #enabled: #hasOneSelectionOtherThanCanvas
+ )
+ #(#MenuItem
+ #label: 'Inspect Spec'
+ #translateLabel: true
+ #value: #doInspectSpec
+ #activeHelpKey: #editInspectSpec
+ )
+ ) nil
+ nil
)
"Modified: / 20.5.1998 / 01:46:00 / cg"
@@ -1791,6 +1798,15 @@
^ builder booleanValueAspectFor:#canChangeOrderInContainer
!
+canExchangeSelectionLayouts
+ "returns a boolean value holder which is true in case that the selection
+ consists of exactly 2 components
+ and all widgets in the selection can change its layout through to a move or
+ align operation"
+
+ ^ builder booleanValueAspectFor:#canExchangeSelectionLayouts
+!
+
canMoveOrAlignSelection
"returns a boolean value holder which is true in case that any selection exists
and all widgets in the selection can change its layout through to a move or
@@ -2215,6 +2231,7 @@
|canCutOrCopy canPaste clipboard sel treeSelection|
self canMoveOrAlignSelection value:(treeView canMoveOrAlignSelection).
+ self canExchangeSelectionLayouts value:(treeView canExchangeSelectionLayouts).
self canChangeOrderInContainer value:(treeView canChangeOrderInContainer).
self canMoveSelectionIntoContainer value:(treeView canMoveSelectionIntoContainer).
self canMoveSelectionOutOfContainer value:(treeView canMoveSelectionOutOfContainer).
@@ -2223,18 +2240,18 @@
treeView notNil
ifTrue:
[
- treeSelection := treeView selection.
- "/ the top-node cannot be cut, copied or pasted.
- canCutOrCopy := treeSelection size >= 1 and:[treeSelection first ~~ 1].
- clipboard := self getSelection.
-
- clipboard isCollection ifTrue:[clipboard notEmpty ifTrue:[sel := clipboard first]]
- ifFalse:[sel := clipboard].
-
- canPaste := (sel isKindOf:UISpecification) and:
- [treeSelection size = 1
- and:[treeSelection first == 1
- or: [self canPasteInto: treeView selectedNode contents view]]]
+ treeSelection := treeView selection.
+ "/ the top-node cannot be cut, copied or pasted.
+ canCutOrCopy := treeSelection size >= 1 and:[treeSelection first ~~ 1].
+ clipboard := self getSelection.
+
+ clipboard isCollection ifTrue:[clipboard notEmpty ifTrue:[sel := clipboard first]]
+ ifFalse:[sel := clipboard].
+
+ canPaste := (sel isKindOf:UISpecification) and:
+ [treeSelection size = 1
+ and:[treeSelection first == 1
+ or: [self canPasteInto: treeView selectedNode contents view]]]
].
self valueOfCanCut value: canCutOrCopy.
@@ -4023,6 +4040,17 @@
!
+canExchangeSelectionLayouts
+ "returns true if the selections size is exactly 2
+ and all widgets in the selection
+ can change their layout through to a move or align operation"
+
+ selection size == 2 ifFalse:[
+ ^ false
+ ].
+ ^ self canMoveOrAlignSelection
+!
+
canMoveOrAlignSelection
"returns true if any selection exists and all widgets in the selection
can change their layout through to a move or align operation"
--- a/UIPainterView.st Wed Sep 22 18:59:10 1999 +0200
+++ b/UIPainterView.st Wed Sep 22 20:11:46 1999 +0200
@@ -1762,6 +1762,17 @@
^ (prnt parent isNil or:[prnt contents spec class isLayoutContainer not])
!
+canExchangeSelectionLayouts
+ "returns true if the selection size is exactly 2
+ and all elements in the selection can be moved or aligned
+ "
+ selection size == 2 ifFalse:[
+ ^ false
+ ].
+ ^ self canMoveOrAlignSelection
+
+!
+
canKeepLayoutInSelection
"returns true if layout can be kept during a paste operation
"