diff -r 81f54df8d333 -r df1f1e84d94a UIPainter.st --- 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 + " + + + + ^ + + #(#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