--- a/UIPainter.st Tue Feb 03 12:13:51 1998 +0100
+++ b/UIPainter.st Tue Feb 03 13:51:57 1998 +0100
@@ -22,7 +22,7 @@
SelectionInTreeView subclass:#TreeView
instanceVariableNames:'lastDrawnMaster cvsEventsDisabled windowSpec'
- classVariableNames:'Images'
+ classVariableNames:''
poolDictionaries:''
privateIn:UIPainter
!
@@ -503,11 +503,11 @@
#'window:'
#(#WindowSpec
#'name:' 'Tree-View'
- #'layout:' #(#LayoutFrame 6 0 406 0 558 0 931 0)
+ #'layout:' #(#LayoutFrame 6 0 391 0 558 0 916 0)
#'label:' 'Tree-View'
#'min:' #(#Point 10 10)
#'max:' #(#Point 1160 870)
- #'bounds:' #(#Rectangle 6 406 559 932)
+ #'bounds:' #(#Rectangle 6 391 559 917)
#'menu:' #menu
#'usePreferredExtent:' false
)
@@ -552,78 +552,97 @@
#(#SpecCollection
#'collection:'
#(
- #(#HorizontalPanelViewSpec
- #'name:' 'panelViewButtons'
- #'layout:' #(#LayoutFrame 0 0.0 0 0 0 1.0 25 0)
+ #(#ViewSpec
+ #'name:' 'View'
+ #'layout:' #(#LayoutFrame 0 0.0 0 0 0 1.0 28 0)
#'component:'
#(#SpecCollection
#'collection:'
#(
- #(#ArrowButtonSpec
- #'name:' 'moveLeft'
- #'activeHelpKey:' #moveSelectionLeft
- #'tabable:' true
- #'model:' #moveSelectionLeft
- #'enableChannel:' #canMoveOrAlignSelection
- #'isTriggerOnDown:' true
- #'direction:' #left
- #'extent:' #(#Point 22 22)
- )
- #(#ArrowButtonSpec
- #'name:' 'moveRight'
- #'activeHelpKey:' #moveSelectionRight
- #'model:' #moveSelectionRight
- #'enableChannel:' #canMoveOrAlignSelection
- #'isTriggerOnDown:' true
- #'direction:' #right
- #'extent:' #(#Point 22 22)
+ #(#HorizontalPanelViewSpec
+ #'name:' 'panelViewButtons'
+ #'layout:' #(#LayoutFrame 0 0.0 2 0 0 0.5 26 0)
+ #'component:'
+ #(#SpecCollection
+ #'collection:'
+ #(
+ #(#CheckBoxSpec
+ #'name:' 'checkBox1'
+ #'model:' #galleryShown
+ #'label:' 'Gallery'
+ #'extent:' #(#Point 82 22)
+ )
+ #(#CheckBoxSpec
+ #'name:' 'checkBox2'
+ #'model:' #painterShown
+ #'label:' 'Canvas'
+ #'extent:' #(#Point 119 22)
+ )
+ )
+ )
+ #'horizontalLayout:' #left
+ #'verticalLayout:' #top
+ #'horizontalSpace:' 4
+ #'verticalSpace:' 4
)
- #(#ArrowButtonSpec
- #'name:' 'moveDown'
- #'activeHelpKey:' #moveSelectionDown
- #'model:' #moveSelectionDown
- #'enableChannel:' #canMoveOrAlignSelection
- #'isTriggerOnDown:' true
- #'direction:' #down
- #'extent:' #(#Point 22 22)
- )
- #(#ArrowButtonSpec
- #'name:' 'moveUp'
- #'activeHelpKey:' #moveSelectionUp
- #'model:' #moveSelectionUp
- #'enableChannel:' #canMoveOrAlignSelection
- #'isTriggerOnDown:' true
- #'direction:' #up
- #'extent:' #(#Point 22 22)
- )
- #(#LabelSpec
- #'name:' 'label1'
- #'label:' ' '
- #'extent:' #(#Point 14 22)
- )
- #(#CheckBoxSpec
- #'name:' 'checkBox1'
- #'model:' #galleryShown
- #'label:' 'Gallery'
- #'extent:' #(#Point 82 22)
- )
- #(#CheckBoxSpec
- #'name:' 'checkBox2'
- #'model:' #painterShown
- #'label:' 'Canvas'
- #'extent:' #(#Point 119 22)
+ #(#HorizontalPanelViewSpec
+ #'name:' 'horizontalPanelView1'
+ #'layout:' #(#LayoutFrame 0 0.5 2 0 0 1.0 26 0)
+ #'component:'
+ #(#SpecCollection
+ #'collection:'
+ #(
+ #(#ArrowButtonSpec
+ #'name:' 'arrowButton1'
+ #'activeHelpKey:' #moveSelectionLeft
+ #'tabable:' true
+ #'model:' #moveSelectionLeft
+ #'enableChannel:' #canMoveOrAlignSelection
+ #'isTriggerOnDown:' true
+ #'direction:' #left
+ #'extent:' #(#Point 22 22)
+ )
+ #(#ArrowButtonSpec
+ #'name:' 'arrowButton2'
+ #'activeHelpKey:' #moveSelectionRight
+ #'model:' #moveSelectionRight
+ #'enableChannel:' #canMoveOrAlignSelection
+ #'isTriggerOnDown:' true
+ #'direction:' #right
+ #'extent:' #(#Point 22 22)
+ )
+ #(#ArrowButtonSpec
+ #'name:' 'arrowButton3'
+ #'activeHelpKey:' #moveSelectionDown
+ #'model:' #moveSelectionDown
+ #'enableChannel:' #canMoveOrAlignSelection
+ #'isTriggerOnDown:' true
+ #'direction:' #down
+ #'extent:' #(#Point 22 22)
+ )
+ #(#ArrowButtonSpec
+ #'name:' 'arrowButton4'
+ #'activeHelpKey:' #moveSelectionUp
+ #'model:' #moveSelectionUp
+ #'enableChannel:' #canMoveOrAlignSelection
+ #'isTriggerOnDown:' true
+ #'direction:' #up
+ #'extent:' #(#Point 22 22)
+ )
+ )
+ )
+ #'horizontalLayout:' #right
+ #'verticalLayout:' #top
+ #'horizontalSpace:' 4
+ #'verticalSpace:' 4
)
)
)
#'level:' 1
- #'horizontalLayout:' #left
- #'verticalLayout:' #top
- #'horizontalSpace:' 4
- #'verticalSpace:' 4
)
#(#NoteBookViewSpec
#'name:' 'noteBook'
- #'layout:' #(#LayoutFrame 0 0.0 26 0.0 0 1.0 -30 1.0)
+ #'layout:' #(#LayoutFrame 0 0.0 29 0.0 0 1.0 -30 1.0)
#'enableChannel:' #enableChannel
#'tabable:' true
#'model:' #tabModel
@@ -815,6 +834,10 @@
#'submenuChannel:' #menuEdit
)
#(#MenuItem
+ #'label:' 'Add'
+ #'submenuChannel:' #menuAdd
+ )
+ #(#MenuItem
#'label:' 'Align'
#'submenuChannel:' #menuAlign
)
@@ -875,6 +898,350 @@
)
!
+menuAdd
+ "this window spec was automatically generated by the ST/X MenuEditor"
+
+ "do not manually edit this - the builder may not be able to
+ handle the specification if its corrupted."
+
+ "
+ MenuEditor new openOnClass:UIPainter andSelector:#menuAdd
+ (Menu new fromLiteralArrayEncoding:(UIPainter menuAdd)) startUp
+ "
+
+ <resource: #menu>
+
+ ^
+
+ #(#Menu
+
+ #(
+ #(#MenuItem
+ #'label:' 'Buttons'
+ #'submenu:'
+ #(#Menu
+
+ #(
+ #(#MenuItem
+ #'label:' 'Action Button'
+ #'value:' #'addWidget:'
+ #'argument:' #ActionButtonSpec
+ #'labelImage:' #(#ResourceRetriever #ActionButtonSpec #icon 'Action Button')
+ )
+ #(#MenuItem
+ #'label:' 'Arrow Button'
+ #'value:' #'addWidget:'
+ #'argument:' #ArrowButtonSpec
+ #'labelImage:' #(#ResourceRetriever #ArrowButtonSpec #icon 'Arrow Button')
+ )
+ #(#MenuItem
+ #'label:' '-'
+ )
+ #(#MenuItem
+ #'label:' 'Toggle'
+ #'value:' #'addWidget:'
+ #'argument:' #ToggleSpec
+ #'labelImage:' #(#ResourceRetriever #ToggleSpec #icon 'Toggle')
+ )
+ #(#MenuItem
+ #'label:' 'Radio Button'
+ #'value:' #'addWidget:'
+ #'argument:' #RadioButtonSpec
+ #'labelImage:' #(#ResourceRetriever #RadioButtonSpec #icon 'Radio Button')
+ )
+ #(#MenuItem
+ #'label:' '-'
+ )
+ #(#MenuItem
+ #'label:' 'Check Box'
+ #'value:' #'addWidget:'
+ #'argument:' #CheckBoxSpec
+ #'labelImage:' #(#ResourceRetriever #CheckBoxSpec #icon 'Check Box')
+ )
+ #(#MenuItem
+ #'label:' '-'
+ )
+ #(#MenuItem
+ #'label:' 'Up Down Button'
+ #'value:' #'addWidget:'
+ #'argument:' #UpDownButtonSpec
+ #'labelImage:' #(#ResourceRetriever #UpDownButtonSpec #icon 'Up Down Button')
+ )
+ #(#MenuItem
+ #'label:' '-'
+ )
+ #(#MenuItem
+ #'label:' 'Slider'
+ #'value:' #'addWidget:'
+ #'argument:' #SliderSpec
+ #'labelImage:' #(#ResourceRetriever #SliderSpec #icon 'Slider')
+ )
+ #(#MenuItem
+ #'label:' 'Thumb Wheel'
+ #'value:' #'addWidget:'
+ #'argument:' #ThumbWheelSpec
+ #'labelImage:' #(#ResourceRetriever #ThumbWheelSpec #icon 'Thumb Wheel')
+ )
+ ) nil
+ nil
+ )
+ )
+ #(#MenuItem
+ #'label:' 'Menus'
+ #'submenu:'
+ #(#Menu
+
+ #(
+ #(#MenuItem
+ #'label:' 'Combo Box'
+ #'value:' #'addWidget:'
+ #'argument:' #ComboBoxSpec
+ #'labelImage:' #(#ResourceRetriever #ComboBoxSpec #icon 'Combo Box')
+ )
+ #(#MenuItem
+ #'label:' 'Combo List'
+ #'value:' #'addWidget:'
+ #'argument:' #ComboListSpec
+ #'labelImage:' #(#ResourceRetriever #ComboListSpec #icon 'Combo List')
+ )
+ #(#MenuItem
+ #'label:' 'PopUp List'
+ #'value:' #'addWidget:'
+ #'argument:' #PopUpListSpec
+ #'labelImage:' #(#ResourceRetriever #ComboListSpec #icon 'PopUp List')
+ )
+ #(#MenuItem
+ #'label:' '-'
+ )
+ #(#MenuItem
+ #'label:' 'Tab'
+ #'value:' #'addWidget:'
+ #'argument:' #TabViewSpec
+ #'labelImage:' #(#ResourceRetriever #TabViewSpec #icon 'Tab')
+ )
+ #(#MenuItem
+ #'label:' 'Note Book'
+ #'value:' #'addWidget:'
+ #'argument:' #NoteBookViewSpec
+ #'labelImage:' #(#ResourceRetriever #NoteBookViewSpec #icon 'Note Book')
+ )
+ #(#MenuItem
+ #'label:' 'Gallery'
+ #'value:' #'addWidget:'
+ #'argument:' #UIGalleryViewSpec
+ #'labelImage:' #(#ResourceRetriever #UIGalleryViewSpec #icon 'Gallery')
+ )
+ #(#MenuItem
+ #'label:' '-'
+ )
+ #(#MenuItem
+ #'label:' 'Menu Panel'
+ #'value:' #'addWidget:'
+ #'argument:' #MenuPanelSpec
+ #'labelImage:' #(#ResourceRetriever #MenuPanelSpec #icon 'Menu Panel')
+ )
+ ) nil
+ nil
+ )
+ )
+ #(#MenuItem
+ #'label:' 'Text Views'
+ #'submenu:'
+ #(#Menu
+
+ #(
+ #(#MenuItem
+ #'label:' 'Text Editor'
+ #'value:' #'addWidget:'
+ #'argument:' #TextEditorSpec
+ #'labelImage:' #(#ResourceRetriever #TextEditorSpec #icon 'Text Editor')
+ )
+ #(#MenuItem
+ #'label:' 'Input Field'
+ #'value:' #'addWidget:'
+ #'argument:' #InputFieldSpec
+ #'labelImage:' #(#ResourceRetriever #InputFieldSpec #icon 'Input Field')
+ )
+ #(#MenuItem
+ #'label:' '-'
+ )
+ #(#MenuItem
+ #'label:' 'Label'
+ #'value:' #'addWidget:'
+ #'argument:' #LabelSpec
+ #'labelImage:' #(#ResourceRetriever #LabelSpec #icon 'Label')
+ )
+ #(#MenuItem
+ #'label:' '-'
+ )
+ #(#MenuItem
+ #'label:' 'HTML View'
+ #'value:' #'addWidget:'
+ #'argument:' #HTMLViewSpec
+ #'labelImage:' #(#ResourceRetriever #HTMLViewSpec #icon 'HTML View')
+ )
+ ) nil
+ nil
+ )
+ )
+ #(#MenuItem
+ #'label:' 'Lists'
+ #'submenu:'
+ #(#Menu
+
+ #(
+ #(#MenuItem
+ #'label:' 'List'
+ #'value:' #'addWidget:'
+ #'argument:' #SequenceViewSpec
+ #'labelImage:' #(#ResourceRetriever #SequenceViewSpec #icon 'List')
+ )
+ #(#MenuItem
+ #'label:' 'Data Set List'
+ #'value:' #'addWidget:'
+ #'argument:' #DataSetSpec
+ #'labelImage:' #(#ResourceRetriever #DataSetSpec #icon 'Data Set List')
+ )
+ #(#MenuItem
+ #'label:' '-'
+ )
+ #(#MenuItem
+ #'label:' 'Tree List'
+ #'value:' #'addWidget:'
+ #'argument:' #SelectionInTreeViewSpec
+ #'labelImage:' #(#ResourceRetriever #SelectionInTreeViewSpec #icon 'Tree List')
+ )
+ #(#MenuItem
+ #'label:' 'File Tree List'
+ #'value:' #'addWidget:'
+ #'argument:' #FileSelectionTreeSpec
+ #'labelImage:' #(#ResourceRetriever #FileSelectionTreeSpec #icon 'File Tree List')
+ )
+ ) nil
+ nil
+ )
+ )
+ #(#MenuItem
+ #'label:' 'Boxes'
+ #'submenu:'
+ #(#Menu
+
+ #(
+ #(#MenuItem
+ #'label:' 'Box'
+ #'value:' #'addWidget:'
+ #'argument:' #ViewSpec
+ #'labelImage:' #(#ResourceRetriever #ViewSpec #icon 'Box')
+ )
+ #(#MenuItem
+ #'label:' 'Framed Box'
+ #'value:' #'addWidget:'
+ #'argument:' #FramedBoxSpec
+ #'labelImage:' #(#ResourceRetriever #FramedBoxSpec #icon 'Framed Box')
+ )
+ #(#MenuItem
+ #'label:' '-'
+ )
+ #(#MenuItem
+ #'label:' 'Horizontal Panel'
+ #'value:' #'addWidget:'
+ #'argument:' #HorizontalPanelViewSpec
+ #'labelImage:' #(#ResourceRetriever #HorizontalPanelViewSpec #icon 'Horizontal Panel')
+ )
+ #(#MenuItem
+ #'label:' 'Vertical Panel'
+ #'value:' #'addWidget:'
+ #'argument:' #VerticalPanelViewSpec
+ #'labelImage:' #(#ResourceRetriever #VerticalPanelViewSpec #icon 'Vertical Panel')
+ )
+ #(#MenuItem
+ #'label:' '-'
+ )
+ #(#MenuItem
+ #'label:' 'Area Panel'
+ #'value:' #'addWidget:'
+ #'argument:' #PanelViewSpec
+ #'labelImage:' #(#ResourceRetriever #PanelViewSpec #icon 'Area Panel')
+ )
+ #(#MenuItem
+ #'label:' '-'
+ )
+ #(#MenuItem
+ #'label:' 'Variable Horizontal Panel'
+ #'value:' #'addWidget:'
+ #'argument:' #VariableHorizontalPanelSpec
+ #'labelImage:' #(#ResourceRetriever #VariableHorizontalPanelSpec #icon 'Variable Horizontal Panel')
+ )
+ #(#MenuItem
+ #'label:' 'Variable Vertical Panel'
+ #'value:' #'addWidget:'
+ #'argument:' #VariableVerticalPanelSpec
+ #'labelImage:' #(#ResourceRetriever #VariableVerticalPanelSpec #icon 'Variable Vertical Panel')
+ )
+ ) nil
+ nil
+ )
+ )
+ #(#MenuItem
+ #'label:' 'Misc'
+ #'submenu:'
+ #(#Menu
+
+ #(
+ #(#MenuItem
+ #'label:' 'Arbitrary Component'
+ #'value:' #'addWidget:'
+ #'argument:' #ArbitraryComponentSpec
+ #'labelImage:' #(#ResourceRetriever #ArbitraryComponentSpec #icon 'Arbitrary Component')
+ )
+ #(#MenuItem
+ #'label:' '-'
+ )
+ #(#MenuItem
+ #'label:' 'Sub Specification'
+ #'value:' #'addWidget:'
+ #'argument:' #UISubSpecification
+ #'labelImage:' #(#ResourceRetriever #ArbitraryComponentSpec #icon 'Sub Specification')
+ )
+ #(#MenuItem
+ #'label:' 'Sub Canvas'
+ #'value:' #'addWidget:'
+ #'argument:' #SubCanvasSpec
+ #'labelImage:' #(#ResourceRetriever #SubCanvasSpec #icon 'Sub Canvas')
+ )
+ #(#MenuItem
+ #'label:' '-'
+ )
+ #(#MenuItem
+ #'label:' 'Progress Indicator'
+ #'value:' #'addWidget:'
+ #'argument:' #ProgressIndicatorSpec
+ #'labelImage:' #(#ResourceRetriever #ProgressIndicatorSpec #icon 'Progress Indicator')
+ )
+ #(#MenuItem
+ #'label:' '-'
+ )
+ #(#MenuItem
+ #'label:' 'Divider'
+ #'value:' #'addWidget:'
+ #'argument:' #DividerSpec
+ #'labelImage:' #(#ResourceRetriever #DividerSpec #icon 'Divider')
+ )
+ #(#MenuItem
+ #'label:' 'Region'
+ #'value:' #'addWidget:'
+ #'argument:' #RegionSpec
+ #'labelImage:' #(#ResourceRetriever #RegionSpec #icon 'Region')
+ )
+ ) nil
+ nil
+ )
+ )
+ ) nil
+ nil
+ )
+!
+
menuAlign
"this window spec was automatically generated by the ST/X MenuEditor"
@@ -1488,9 +1855,15 @@
self modifiedChannel value:false.
!
+addWidget: aSpecClass
+
+ self addWidgetOfSpec: (Array with: (Smalltalk at: aSpecClass) new)
+
+!
+
addWidgetOfSpec: aSpec
- |newSel|
+ |newSel|
(newSel := self pasteSpecifications:aSpec keepLayout:false at:0@0) notNil
ifTrue:
[
@@ -1498,13 +1871,13 @@
]
ifFalse:
[
- treeView selection size = 0
+ ((treeView selection size = 0) or: [treeView selectedNode isNil])
ifTrue:
[
treeView selection: #(1).
]
ifFalse:
- [
+ [
treeView selectNode: (treeView detectNode: [:n| n = treeView selectedNode parent])
].
self addWidgetOfSpec: aSpec
@@ -2892,13 +3265,6 @@
! !
-!UIPainter::TreeView class methodsFor:'startup / release'!
-
-preSnapshot
-
- Images notNil ifTrue: [Images removeAll]
-! !
-
!UIPainter::TreeView methodsFor:'accessing'!
canvas
@@ -3311,8 +3677,9 @@
initialize
"initialization; set multiple select and model
"
- Images := Images ? IdentityDictionary new.
+
super initialize.
+
self multipleSelectOk:true.
cvsEventsDisabled := false.
self showDirectoryIndicator: true.
@@ -3324,15 +3691,14 @@
figureFor:aNode
"returns image for an spec item"
- |cls image|
+ |cls icon|
cls := aNode contents spec class.
aNode contents spec isNil ifTrue: [cls := WindowSpec].
- cls := cls withAllSuperclasses detect: [:cls| cls class implements: #icon] ifNone: [^nil].
- image := Images at: cls name ifAbsent: [Images at: cls name put: cls icon].
- image device ~~ device ifTrue: [image := image onDevice: device].
- image extent y > 16 ifTrue: [image := image magnifiedBy: 16/image extent y].
- ^image
+ icon := cls icon.
+ icon extent y > 16 ifTrue: [icon := icon magnifiedBy: 16/icon extent y].
+ icon device ~~ device ifTrue: [icon := icon onDevice: device].
+ ^icon
!
selectionChangedFrom:oldSelection