diff -r 668eb9eae2ac -r 0a2b2ff030a0 UIPainter.st --- a/UIPainter.st Fri Feb 21 20:33:57 1997 +0100 +++ b/UIPainter.st Tue Feb 25 14:15:56 1997 +0100 @@ -1,26 +1,3 @@ -" - COPYRIGHT (c) 1995 by Claus Gittinger - All Rights Reserved - - This software is furnished under a license and may be used - only in accordance with the terms of that license and with the - inclusion of the above copyright notice. This software may not - be provided or otherwise made available to, or used by, any - other person. No title to or ownership of the software is - hereby transferred. -" - -ApplicationModel subclass:#UIPainter - instanceVariableNames:'menu nameField elementMenu workView treeView outletView stringBox - actionBox listBox fileBox currentFileName topView propertyFrame - whichProperty nameChannel applyAction specClass specSelector - specSuperclass aspectHolders specShown specSpecificAspectHolders - claus' - classVariableNames:'' - poolDictionaries:'' - category:'Interface-UIPainter' -! - HorizontalPanelView subclass:#ButtonPanel instanceVariableNames:'receiver argumentToSelector' classVariableNames:'' @@ -28,2853 +5,6 @@ privateIn:UIPainter ! -!UIPainter class methodsFor:'documentation'! - -copyright -" - COPYRIGHT (c) 1995 by Claus Gittinger - All Rights Reserved - - This software is furnished under a license and may be used - only in accordance with the terms of that license and with the - inclusion of the above copyright notice. This software may not - be provided or otherwise made available to, or used by, any - other person. No title to or ownership of the software is - hereby transferred. -" -! - -documentation -" - not yet finished, not yet published, not yet released. - - [start with:] - UIPainter open -" -! ! - -!UIPainter class methodsFor:'interface specs'! - -actionButtonModelSpec - "UIPainter new openOnClass:self andSelector:#actionButtonModelSpec" - - - - ^ - - #(#FullSpec - #'component:' - #(#SpecCollection - #'collection:' - #( - #(#FramedBoxSpec - #'layout:' #(#LayoutFrame 0 0 -1 0 251 0 289 0) - #'component:' - #(#SpecCollection - #'collection:' - #( - #(#VerticalPanelViewSpec - #'layout:' #(#LayoutFrame 6 0 26 0 78 0 216 0) - #'component:' - #(#SpecCollection - #'collection:' - #( - #(#LabelSpec - #'name:' 'label' - #'layout:' #(#LayoutFrame 0 0 47 0 57 0 71 0) - #'label:' 'aspect:' - ) - #(#LabelSpec - #'name:' 'label' - #'layout:' #(#LayoutFrame 0 0 119 0 62 0 143 0) - #'label:' 'change:' - ) - ) - ) - #'horizontalLayout:' #left - #'verticalLayout:' #spreadSpace - ) - #(#VerticalPanelViewSpec - #'layout:' #(#LayoutFrame 80 0 24 0 231 0 214 0) - #'component:' - #(#SpecCollection - #'collection:' - #( - #(#InputFieldSpec - #'name:' 'aspectInput' - #'layout:' #(#LayoutFrame 0 0 49 0 163 0 69 0) - #model: #aspectChannel - #acceptOnLostFocus: true - #tabable: true - ) - #(#InputFieldSpec - #'name:' 'changeInput' - #'layout:' #(#LayoutFrame 0 0 119 0 163 0 142 0) - #model: #changeChannel - #acceptOnLostFocus: true - #tabable: true - ) - ) - ) - #'horizontalLayout:' #fit - #'verticalLayout:' #spreadSpace - ) - #(#ActionButtonSpec - #'name:' 'button' - #'layout:' #(#LayoutFrame 102 0 246 0 153 0 272 0) - #'label:' 'apply' - #'model:' #setModelAspects - ) - ) - ) - #'labelPosition:' #topLeft - #'showFrame:' false - ) - ) - ) - #'window:' - #(#WindowSpec - #'label:' 'unnamed' - #'bounds:' #(#Rectangle 0 0 255 292) - ) - ) -! - -cancelAndApplySpec - "this window spec was automatically generated by the ST/X UIPainter" - - "do not manually edit this - the painter/builder may not be able to - handle the specification if its corrupted." - - " - UIPainter new openOnClass:UIPainter andSelector:#cancelAndApplySpec - UIPainter new openInterface:#cancelAndApplySpec - " - - - - ^ - - #(#FullSpec - #'window:' - #(#WindowSpec - #'layout:' #(#LayoutFrame 0 0.0 0 0.0 0 1.0 0 1.0) - #'label:' 'unnamed' - #'bounds:' #(#Rectangle 0 0 225 45) - ) - #'component:' - #(#SpecCollection - #'collection:' - #( - #(#ActionButtonSpec - #'name:' 'cancel' - #'layout:' #(#LayoutFrame 26 0 13 0 77 0 35 0) - #'label:' 'cancel' - #'model:' #cancel - ) - #(#ActionButtonSpec - #'name:' 'apply' - #'layout:' #(#LayoutFrame 139 0 13 0 190 0 35 0) - #'label:' 'apply' - #'model:' #apply - ) - ) - ) - ) -! - -colorSpec - "UIBuilder new openOnClass:self andSelector:#colorSpec" - "Builder new openInterface:#colorSpec" - - - ^ - - #(#FullSpec - #'component:' - #(#SpecCollection - #'collection:' - #( - #(#FramedBoxSpec - #'layout:' #(#LayoutFrame 0 0 -1 0 252 0 290 0) - #'component:' - #(#SpecCollection - #'collection:' - #( - #(#VerticalPanelViewSpec - #'layout:' #(#LayoutFrame 6 0 26 0 100 0 215 0) - #'component:' - #(#SpecCollection - #'collection:' - #( - #(#LabelSpec - #'name:' 'label' - #'layout:' #(#LayoutFrame 0 0 47 0 87 0 71 0) - #'label:' 'foreground:' - ) - #(#LabelSpec - #'name:' 'label' - #'layout:' #(#LayoutFrame 0 0 119 0 93 0 143 0) - #'label:' 'background:' - ) - ) - ) - #'horizontalLayout:' #left - #'verticalLayout:' #spreadSpace - ) - #(#VerticalPanelViewSpec - #'layout:' #(#LayoutFrame 114 0 24 0 233 0 213 0) - #'component:' - #(#SpecCollection - #'collection:' - #( - #(#InputFieldSpec - #'layout:' #(#LayoutFrame 0 0 49 0 163 0 69 0) - #model: #foregroundColor - #acceptOnLostFocus: true - #tabable: true - - ) - #(#InputFieldSpec - #'layout:' #(#LayoutFrame 0 0 119 0 163 0 142 0) - #model: #backgroundColor - #acceptOnLostFocus: true - #tabable: true - - ) - ) - ) - #'horizontalLayout:' #fit - #'verticalLayout:' #spreadSpace - ) - #(#ActionButtonSpec - #'name:' 'button' - #'layout:' #(#LayoutFrame 102 0 246 0 153 0 272 0) - #'label:' 'apply' - #'model:' #setColors - #tabable: true - - ) - ) - ) - #'labelPosition:' #topLeft - #'showFrame:' false - ) - ) - ) - #'window:' - #(#WindowSpec - #'label:' 'unnamed' - #'bounds:' #(#Rectangle 0 0 255 292) - ) - ) -! - -geometrySpecForAlignmentOrigin - " - UIPainter new openOnClass:self andSelector:#geometrySpecForAlignmentOrigin - " - - - ^ - - #(#FullSpec - #'window:' - #(#WindowSpec - #'layout:' #(#LayoutFrame 0 0.0 0 0.0 0 1.0 0 1.0) - #'label:' 'unnamed' - #'bounds:' #(#Rectangle 0 0 248 304) - ) - #'component:' - #(#SpecCollection - #'collection:' - #( - #(#LabelSpec - #'name:' 'label1' - #'layout:' #(#LayoutFrame 5 0 42 0 48 0 60 0) - #'label:' 'left' - ) - #(#LabelSpec - #'name:' 'label2' - #'layout:' #(#LayoutFrame 5 0 69 0 48 0 87 0) - #'label:' 'top' - ) - #(#LabelSpec - #'name:' 'label3' - #'layout:' #(#LayoutFrame 57 0 10 0 103 0 27 0) - #'label:' 'relative' - ) - #(#LabelSpec - #'name:' 'label4' - #'layout:' #(#LayoutFrame 154 0 11 0 190 0 28 0) - #'label:' 'offset' - ) - #(#LabelSpec - #'name:' 'label5' - #'layout:' #(#LayoutFrame 5 0 96 0 48 0 114 0) - #'label:' 'align H' - ) - #(#LabelSpec - #'name:' 'label6' - #'layout:' #(#LayoutFrame 5 0 122 0 48 0 140 0) - #'label:' 'align V' - ) - #(#InputFieldSpec - #'name:' 'editField1' - #'type:' #numberOrNil - #'layout:' #(#LayoutFrame 57 0 42 0 114 0 60 0) - #'model:' #leftFraction - #acceptOnLostFocus: true - #tabable: true - ) - #(#InputFieldSpec - #'name:' 'editField2' - #'type:' #numberOrNil - #'layout:' #(#LayoutFrame 57 0 69 0 114 0 87 0) - #'model:' #topFraction - #acceptOnLostFocus: true - #tabable: true - ) - #(#InputFieldSpec - #'name:' 'editField5' - #'type:' #numberOrNil - #'layout:' #(#LayoutFrame 57 0 96 0 114 0 114 0) - #'model:' #leftAlignmentFraction - #acceptOnLostFocus: true - #tabable: true - ) - #(#InputFieldSpec - #'name:' 'editField6' - #'type:' #numberOrNil - #'layout:' #(#LayoutFrame 56 0 122 0 113 0 140 0) - #'model:' #topAlignmentFraction - #acceptOnLostFocus: true - #tabable: true - ) - #(#InputFieldSpec - #'name:' 'editField3' - #'type:' #numberOrNil - #'layout:' #(#LayoutFrame 154 0 42 0 212 0 60 0) - #'model:' #leftOffset - #acceptOnLostFocus: true - #tabable: true - ) - #(#InputFieldSpec - #'name:' 'editField4' - #'type:' #numberOrNil - #'layout:' #(#LayoutFrame 154 0 69 0 212 0 87 0) - #'model:' #topOffset - #acceptOnLostFocus: true - #tabable: true - ) - #(#ActionButtonSpec - #'name:' 'button1' - #'layout:' #(#LayoutFrame 119 0 42 0 138 0 60 0) - #'label:' '' - #'model:' #makeRelativeLeft - ) - #(#ActionButtonSpec - #'name:' 'button2' - #'layout:' #(#LayoutFrame 119 0 69 0 138 0 87 0) - #'label:' '' - #'model:' #makeRelativeTop - ) - #(#ActionButtonSpec - #'name:' 'button3' - #'layout:' #(#LayoutFrame 216 0 42 0 235 0 60 0) - #'label:' '' - #'model:' #makeOffsetLeft - ) - #(#ActionButtonSpec - #'name:' 'button4' - #'layout:' #(#LayoutFrame 216 0 69 0 235 0 87 0) - #'label:' '' - #'model:' #makeOffsetTop - ) - - - #(#ActionButtonSpec - #'name:' 'button' - #'layout:' #(#LayoutFrame 16 0 210 0 76 0 240 0) - #'label:' 'frame' - #'model:' #setLayoutFrame - ) - #(#ActionButtonSpec - #'name:' 'button' - #'layout:' #(#LayoutFrame 96 0 210 0 156 0 240 0) - #'label:' 'origin' - #'model:' #setLayoutOrigin - ) - #(#ActionButtonSpec - #'name:' 'button' - #'layout:' #(#LayoutFrame 176 0 210 0 236 0 240 0) - #'label:' 'align' - #'model:' #setAlignmentOrigin - #'initiallyDisabled:' true - ) - #(#ActionButtonSpec - #'layout:' #(#LayoutFrame 96 0 260 0 156 0 290 0) - #'label:' 'apply' - #'model:' #setDimensionForLayoutFrame - #tabable: true - ) - - ) - ) - ) - - -! - -geometrySpecForLayoutFrame - " - UIPainter new openOnClass:self andSelector:#geometrySpecForLayoutFrame - " - - - ^ - - #(#FullSpec - #'window:' - #(#WindowSpec - #'layout:' #(#LayoutFrame 0 0.0 0 0.0 0 1.0 0 1.0) - #'label:' 'unnamed' - #'bounds:' #(#Rectangle 0 0 300 300) - ) - #'component:' - #(#SpecCollection - #'collection:' - #( - #(#LabelSpec - #'name:' 'label left' - #'layout:' #(#LayoutFrame 12 0 39 0 53 0 57 0) - #'label:' 'left' - ) - #(#LabelSpec - #'name:' 'label top' - #'layout:' #(#LayoutFrame 12 0 67 0 53 0 85 0) - #'label:' 'top' - ) - #(#LabelSpec - #'name:' 'label right' - #'layout:' #(#LayoutFrame 12 0 95 0 53 0 113 0) - #'label:' 'right' - ) - #(#LabelSpec - #'name:' 'label bottom' - #'layout:' #(#LayoutFrame 12 0 123 0 53 0 141 0) - #'label:' 'bottom' - ) - #(#LabelSpec - #'name:' 'label relative' - #'layout:' #(#LayoutFrame 65 0 6 0 110 0 24 0) - #'label:' 'relative' - ) - #(#LabelSpec - #'name:' 'label offset' - #'layout:' #(#LayoutFrame 159 0 6 0 190 0 24 0) - #'label:' 'offset' - ) - #(#LabelSpec - #'name:' 'label all relative' - #'layout:' #(#LayoutFrame 12 0 157 0 53 0 175 0) - #'label:' 'all' - ) - #(#LabelSpec - #'name:' 'label all absolute' - #'layout:' #(#LayoutFrame 159 0 157 0 210 0 175 0) - #'label:' 'all' - ) - #(#InputFieldSpec - #'name:' 'relative E1' - #'layout:' #(#LayoutFrame 65 0 39 0 113 0 57 0) - #'model:' #leftFraction - #'type:' #numberOrNil - #'immediateAccept:' false - #'acceptOnLeave:' true - #'acceptOnReturn:' true - #'acceptOnTab:' true - #'acceptOnLostFocus:' true - ) - #(#InputFieldSpec - #'name:' 'relative E2' - #'layout:' #(#LayoutFrame 65 0 67 0 113 0 85 0) - #'model:' #topFraction - #'type:' #numberOrNil - #'immediateAccept:' false - #'acceptOnLeave:' true - #'acceptOnReturn:' true - #'acceptOnTab:' true - #'acceptOnLostFocus:' true - ) - #(#InputFieldSpec - #'name:' 'relative E3' - #'layout:' #(#LayoutFrame 65 0 95 0 113 0 113 0) - #'model:' #rightFraction - #'type:' #numberOrNil - #'immediateAccept:' false - #'acceptOnLeave:' true - #'acceptOnReturn:' true - #'acceptOnTab:' true - #'acceptOnLostFocus:' true - ) - #(#InputFieldSpec - #'name:' 'relative E4' - #'layout:' #(#LayoutFrame 65 0 123 0 113 0 141 0) - #'model:' #bottomFraction - #'type:' #numberOrNil - #'immediateAccept:' false - #'acceptOnLeave:' true - #'acceptOnReturn:' true - #'acceptOnTab:' true - #'acceptOnLostFocus:' true - ) - #(#InputFieldSpec - #'name:' 'offset E1' - #'layout:' #(#LayoutFrame 159 0 39 0 210 0 57 0) - #'model:' #leftOffset - #'type:' #numberOrNil - #'immediateAccept:' false - #'acceptOnLeave:' true - #'acceptOnReturn:' true - #'acceptOnTab:' true - #'acceptOnLostFocus:' true - ) - #(#InputFieldSpec - #'name:' 'offset E2' - #'layout:' #(#LayoutFrame 159 0 67 0 210 0 85 0) - #'model:' #topOffset - #'type:' #numberOrNil - #'immediateAccept:' false - #'acceptOnLeave:' true - #'acceptOnReturn:' true - #'acceptOnTab:' true - #'acceptOnLostFocus:' true - ) - #(#InputFieldSpec - #'name:' 'offset E3' - #'layout:' #(#LayoutFrame 159 0 95 0 210 0 113 0) - #'model:' #rightOffset - #'type:' #numberOrNil - #'immediateAccept:' false - #'acceptOnLeave:' true - #'acceptOnReturn:' true - #'acceptOnTab:' true - #'acceptOnLostFocus:' true - ) - #(#InputFieldSpec - #'name:' 'offset E4' - #'layout:' #(#LayoutFrame 159 0 123 0 210 0 141 0) - #'model:' #bottomOffset - #'type:' #numberOrNil - #'immediateAccept:' false - #'acceptOnLeave:' true - #'acceptOnReturn:' true - #'acceptOnTab:' true - #'acceptOnLostFocus:' true - ) - #(#ActionButtonSpec - #'name:' 'relative B1' - #'layout:' #(#LayoutFrame 117 0 39 0 136 0 57 0) - #'label:' '' - #'model:' #makeRelativeLeft - ) - #(#ActionButtonSpec - #'name:' 'relative B2' - #'layout:' #(#LayoutFrame 117 0 67 0 136 0 85 0) - #'label:' '' - #'model:' #makeRelativeTop - ) - #(#ActionButtonSpec - #'name:' 'relative B3' - #'layout:' #(#LayoutFrame 117 0 95 0 136 0 113 0) - #'label:' '' - #'model:' #makeRelativeRight - ) - #(#ActionButtonSpec - #'name:' 'relative B4' - #'layout:' #(#LayoutFrame 117 0 123 0 136 0 141 0) - #'label:' '' - #'model:' #makeRelativeBottom - ) - #(#ActionButtonSpec - #'name:' 'relative BAll' - #'layout:' #(#LayoutFrame 117 0 157 0 136 0 175 0) - #'label:' '' - #'model:' #makeRelativeAll - ) - #(#ActionButtonSpec - #'name:' 'offset B1' - #'layout:' #(#LayoutFrame 214 0 39 0 233 0 57 0) - #'label:' '' - #'model:' #makeOffsetLeft - ) - #(#ActionButtonSpec - #'name:' 'offset B2' - #'layout:' #(#LayoutFrame 214 0 67 0 233 0 85 0) - #'label:' '' - #'model:' #makeOffsetTop - ) - #(#ActionButtonSpec - #'name:' 'offset B3' - #'layout:' #(#LayoutFrame 214 0 95 0 233 0 113 0) - #'label:' '' - #'model:' #makeOffsetRight - ) - #(#ActionButtonSpec - #'name:' 'offset B4' - #'layout:' #(#LayoutFrame 214 0 123 0 233 0 141 0) - #'label:' '' - #'model:' #makeOffsetBottom - ) - #(#ActionButtonSpec - #'name:' 'offset BAll' - #'layout:' #(#LayoutFrame 214 0 157 0 233 0 175 0) - #'label:' '' - #'model:' #makeOffsetAll - ) - #(#ActionButtonSpec - #'name:' 'button' - #'layout:' #(#LayoutFrame 16 0 210 0 76 0 240 0) - #'label:' 'frame' - #'model:' #setLayoutFrame - ) - #(#ActionButtonSpec - #'name:' 'button10' - #'layout:' #(#LayoutFrame 96 0 210 0 156 0 240 0) - #'label:' 'origin' - #'model:' #setLayoutOrigin - ) - #(#ActionButtonSpec - #'name:' 'button11' - #'layout:' #(#LayoutFrame 176 0 210 0 236 0 240 0) - #'label:' 'align' - #'model:' #setAlignmentOrigin - ) - #(#ActionButtonSpec - #'name:' 'button12' - #'layout:' #(#LayoutFrame 96 0 260 0 156 0 290 0) - #'label:' 'apply' - #'model:' #setDimensionForLayoutFrame - ) - ) - ) - ) - - -! - -geometrySpecForLayoutOrigin - " - UIPainter new openOnClass:self andSelector:#geometrySpecForLayoutOrigin - " - - - ^ - - #(#FullSpec - #'window:' - #(#WindowSpec - #'layout:' #(#LayoutFrame 0 0.0 0 0.0 0 1.0 0 1.0) - #'label:' 'unnamed' - #'bounds:' #(#Rectangle 0 0 248 304) - ) - #'component:' - #(#SpecCollection - #'collection:' - #( - #(#LabelSpec - #'name:' 'label1' - #'layout:' #(#LayoutFrame 16 0 42 0 44 0 60 0) - #'label:' 'left' - ) - #(#LabelSpec - #'name:' 'label2' - #'layout:' #(#LayoutFrame 16 0 69 0 44 0 87 0) - #'label:' 'top' - ) - #(#LabelSpec - #'name:' 'label3' - #'layout:' #(#LayoutFrame 57 0 10 0 103 0 27 0) - #'label:' 'relative' - ) - #(#LabelSpec - #'name:' 'label4' - #'layout:' #(#LayoutFrame 154 0 11 0 190 0 28 0) - #'label:' 'offset' - ) - #(#InputFieldSpec - #'name:' 'editField1' - #'type:' #numberOrNil - #'layout:' #(#LayoutFrame 57 0 42 0 114 0 60 0) - #'model:' #leftFraction - #acceptOnLostFocus: true - #tabable: true - ) - #(#InputFieldSpec - #'name:' 'editField2' - #'type:' #numberOrNil - #'layout:' #(#LayoutFrame 57 0 69 0 114 0 87 0) - #'model:' #topFraction - #acceptOnLostFocus: true - #tabable: true - ) - #(#InputFieldSpec - #'name:' 'editField3' - #'type:' #numberOrNil - #'layout:' #(#LayoutFrame 154 0 42 0 212 0 60 0) - #'model:' #leftOffset - #acceptOnLostFocus: true - #tabable: true - ) - #(#InputFieldSpec - #'name:' 'editField4' - #'type:' #numberOrNil - #'layout:' #(#LayoutFrame 154 0 69 0 212 0 87 0) - #'model:' #topOffset - #acceptOnLostFocus: true - #tabable: true - ) - #(#ActionButtonSpec - #'name:' 'button1' - #'layout:' #(#LayoutFrame 119 0 42 0 138 0 60 0) - #'label:' '' - #'model:' #makeRelativeLeft - ) - #(#ActionButtonSpec - #'name:' 'button2' - #'layout:' #(#LayoutFrame 119 0 69 0 138 0 87 0) - #'label:' '' - #'model:' #makeRelativeTop - ) - #(#ActionButtonSpec - #'name:' 'button3' - #'layout:' #(#LayoutFrame 216 0 42 0 235 0 60 0) - #'label:' '' - #'model:' #makeOffsetLeft - ) - #(#ActionButtonSpec - #'name:' 'button4' - #'layout:' #(#LayoutFrame 216 0 69 0 235 0 87 0) - #'label:' '' - #'model:' #makeOffsetTop - ) - - - #(#ActionButtonSpec - #'name:' 'button' - #'layout:' #(#LayoutFrame 16 0 210 0 76 0 240 0) - #'label:' 'frame' - #'model:' #setLayoutFrame - ) - #(#ActionButtonSpec - #'name:' 'button' - #'layout:' #(#LayoutFrame 96 0 210 0 156 0 240 0) - #'label:' 'origin' - #'model:' #setLayoutOrigin - #'initiallyDisabled:' true - ) - #(#ActionButtonSpec - #'name:' 'button' - #'layout:' #(#LayoutFrame 176 0 210 0 236 0 240 0) - #'label:' 'align' - #'model:' #setAlignmentOrigin - ) - #(#ActionButtonSpec - #'layout:' #(#LayoutFrame 96 0 260 0 156 0 290 0) - #'label:' 'apply' - #'model:' #setDimensionForLayoutFrame - #tabable: true - ) - - ) - ) - ) - - -! - -miscSpec - "UIBuilder new openOnClass:self andSelector:#miscSpec" - "Builder new openInterface:#miscSpec" - - - - ^ - - #(#FullSpec - #'component:' - #(#SpecCollection - #'collection:' - #( - #(#FramedBoxSpec - #'layout:' #(#LayoutFrame 0 0 -1 0 251 0 289 0) - #'component:' - #(#SpecCollection - #'collection:' - #( - #(#VerticalPanelViewSpec - #'layout:' #(#LayoutFrame 6 0 26 0 61 0 215 0) - #'component:' - #(#SpecCollection - #'collection:' - #( - #(#LabelSpec - #'layout:' #(#LayoutFrame 0 0 47 0 57 0 71 0) - #'label:' 'name:' - ) - ) - ) - #'horizontalLayout:' #left - #'verticalLayout:' #spreadSpace - ) - #(#VerticalPanelViewSpec - #'layout:' #(#LayoutFrame 60 0 24 0 230 0 213 0) - #'component:' - #(#SpecCollection - #'collection:' - #( - #(#InputFieldSpec - #model: #nameChannel - #'layout:' #(#LayoutFrame 0 0 49 0 163 0 69 0) - #acceptOnLostFocus: true - #tabable: true - ) - ) - ) - #'horizontalLayout:' #fit - #'verticalLayout:' #spreadSpace - ) - #(#ActionButtonSpec - #'layout:' #(#LayoutFrame 102 0 246 0 153 0 272 0) - #'label:' 'apply' - #'model:' #setMiscAspects - #tabable: true - ) - ) - ) - #'labelPosition:' #topLeft - #'showFrame:' false - ) - ) - ) - #'window:' - #(#WindowSpec - #'label:' 'unnamed' - #'bounds:' #(#Rectangle 0 0 255 292) - ) - ) -! - -modelSpec - "UIBuilder new openOnClass:self andSelector:#modelSpec" - "Builder new openInterface:#modelSpec" - - - - ^ - - #(#FullSpec - #'component:' - #(#SpecCollection - #'collection:' - #( - #(#FramedBoxSpec - #'layout:' #(#LayoutFrame 0 0 -1 0 251 0 289 0) - #'component:' - #(#SpecCollection - #'collection:' - #( - #(#VerticalPanelViewSpec - #'layout:' #(#LayoutFrame 6 0 26 0 78 0 216 0) - #'component:' - #(#SpecCollection - #'collection:' - #( - #(#LabelSpec - #'name:' 'label' - #'layout:' #(#LayoutFrame 0 0 47 0 57 0 71 0) - #'label:' 'aspect:' - ) - #(#LabelSpec - #'name:' 'label' - #'layout:' #(#LayoutFrame 0 0 119 0 62 0 143 0) - #'label:' 'change:' - ) - ) - ) - #'horizontalLayout:' #left - #'verticalLayout:' #spreadSpace - ) - #(#VerticalPanelViewSpec - #'layout:' #(#LayoutFrame 80 0 24 0 231 0 214 0) - #'component:' - #(#SpecCollection - #'collection:' - #( - #(#InputFieldSpec - #'name:' 'aspectInput' - #'layout:' #(#LayoutFrame 0 0 49 0 163 0 69 0) - #model: #aspectChannel - #acceptOnLostFocus: true - #tabable: true - ) - #(#InputFieldSpec - #'name:' 'changeInput' - #'layout:' #(#LayoutFrame 0 0 119 0 163 0 142 0) - #model: #changeChannel - #acceptOnLostFocus: true - #tabable: true - ) - ) - ) - #'horizontalLayout:' #fit - #'verticalLayout:' #spreadSpace - ) - #(#ActionButtonSpec - #'name:' 'button' - #'layout:' #(#LayoutFrame 102 0 246 0 153 0 272 0) - #'label:' 'apply' - #'model:' #setModelAspects - ) - ) - ) - #'labelPosition:' #topLeft - #'showFrame:' false - ) - ) - ) - #'window:' - #(#WindowSpec - #'label:' 'unnamed' - #'bounds:' #(#Rectangle 0 0 255 292) - ) - ) -! - -nameAndSelectorSpec - "this window spec was automatically generated by the ST/X UIPainter" - - "do not manually edit this - the painter/builder may not be able to - handle the specification if its corrupted." - - "UIPainter new openOnClass:self andSelector:#nameAndSelectorSpec" - - - - ^ - - #(#FullSpec - #'window:' - #(#WindowSpec - #'layout:' #(#LayoutFrame 0 0.0 0 0.0 0 1.0 0 1.0) - #'label:' 'unnamed' - #'bounds:' #(#Rectangle 0 0 300 300) - ) - #'component:' - #(#SpecCollection - #'collection:' - #( - #(#LabelSpec - #'name:' 'label1' - #'layout:' #(#LayoutFrame 10 0 50 0 110 0 70 0) - #'label:' 'class:' - #'adjust:' #right - ) - #(#LabelSpec - #'name:' 'label2' - #'layout:' #(#LayoutFrame 10 0 90 0 110 0 110 0) - #'label:' 'superclass:' - #'adjust:' #right - ) - #(#LabelSpec - #'name:' 'label3' - #'layout:' #(#LayoutFrame 10 0 130 0 110 0 150 0) - #'label:' 'selector:' - #'adjust:' #right - ) - #(#InputFieldSpec - #'name:' 'classNameField' - #'layout:' #(#LayoutFrame 120 0 50 0 289 0 69 0) - #'model:' #classNameChannel - #'immediateAccept:' false - #'acceptOnLeave:' true - #'acceptOnReturn:' true - #'acceptOnTab:' true - ) - #(#InputFieldSpec - #'name:' 'superclassNameField' - #'layout:' #(#LayoutFrame 120 0 90 0 289 0 109 0) - #'model:' #superclassNameChannel - #'immediateAccept:' false - #'acceptOnLeave:' true - #'acceptOnReturn:' true - #'acceptOnTab:' true - ) - #(#InputFieldSpec - #'name:' 'methodNameField' - #'layout:' #(#LayoutFrame 120 0 130 0 289 0 149 0) - #'model:' #methodNameChannel - #'immediateAccept:' false - #'acceptOnLeave:' true - #'acceptOnReturn:' true - #'acceptOnTab:' true - ) - #(#ActionButtonSpec - #'name:' 'button1' - #'layout:' #(#LayoutFrame 30 0 250 0 129 0 279 0) - #'label:' 'cancel' - #'model:' #cancel - ) - #(#ActionButtonSpec - #'name:' 'button2' - #'layout:' #(#LayoutFrame 160 0 250 0 259 0 279 0) - #'label:' 'ok' - #'model:' #accept - ) - ) - ) - ) - - - -! - -propertyFrameSpec - "this window spec was automatically generated by the ST/X UIPainter" - - "do not manually edit this - the painter/builder may not be able to - handle the specification if its corrupted." - - "UIPainter new openOnClass:UIPainter andSelector:#propertyFrameSpec" - "UIPainter new openInterface:#propertyFrameSpec" - - - - ^ - - #(#FullSpec - #'window:' - #(#WindowSpec - #'layout:' #(#LayoutFrame 0 0.0 0 0.0 0 1.0 0 1.0) - #'label:' 'unnamed' - #'bounds:' #(#Rectangle 0 0 309 326) - ) - #'component:' - #(#SpecCollection - #'collection:' - #( - #(#ArbitraryComponentSpec - #'name:' 'view1' - #'layout:' #(#LayoutFrame 0 0 0 0 0 1.0 -40 1.0) - ) - #(#ActionButtonSpec - #'name:' 'button1' - #'layout:' #(#LayoutFrame 108 0 291 0 200 0 323 0) - #'label:' 'apply' - ) - ) - ) - ) -! ! - -!UIPainter methodsFor:'BuilderView interface'! - -update:something - |singleSelection| - - elementMenu deselect. - - singleSelection := workView singleSelection. - - something == #selection ifTrue:[ - claus setupView:singleSelection. - ]. - - (something == #layout or:[something == #any]) ifTrue:[ - singleSelection notNil ifTrue:[ - self fetchLayoutFrom:singleSelection - ]. - ^ self - ]. - - (something == #aspects or:[something == #any]) ifTrue:[ - singleSelection notNil ifTrue:[ - self fetchModelAspectsFrom:singleSelection - ]. - ^ self - ]. - - (something == #selection or:[something == #any]) ifTrue:[ - self showPropertyView. - self showOutletsFor:(workView selection). - - singleSelection isNil ifFalse:[ - nameChannel isNil ifTrue:[self nameChannel]. - nameChannel value:singleSelection name. - - self fetchLayoutFrom:singleSelection. - self fetchColorsFrom:singleSelection. - self fetchModelAspectsFrom:singleSelection. - ]. - ^ self - ]. -! ! - -!UIPainter methodsFor:'aspects'! - -aspectFor:aKey - ^ specSpecificAspectHolders at:aKey ifAbsent:[ - aspectHolders at:aKey ifAbsent:[ - super aspectFor:aKey - ] - ] - -! - -nameChannel - nameChannel isNil ifTrue:[ - nameChannel := '' asValue. - ]. - ^ nameChannel - - "Modified: 6.9.1995 / 00:38:00 / claus" -! ! - -!UIPainter methodsFor:'filein & fileout'! - -openFile:aFileName - |aStream | - - aStream := FileStream readonlyFileNamed:aFileName. - aStream notNil ifTrue:[ - workView fileInContentsFrom:aStream. - aStream close. - currentFileName := aFileName - ] - -! - -saveAs:aFileName - |aStream| - - aStream := FileStream newFileNamed:aFileName. - aStream notNil ifTrue:[ - workView storeContentsOn:aStream. - aStream close - ]. - currentFileName := aFileName - -! ! - -!UIPainter methodsFor:'help'! - -helpTextFor:aComponent - |sel| - - (aComponent isKindOf:Button) ifTrue:[ - (sel := aComponent changeMessage) notNil ifTrue:[ - "/ take the buttons change symbol as resource-key - ^ resources string:(sel asString) - ] - ]. - ^ nil - - "Modified: 31.8.1995 / 20:49:58 / claus" -! ! - -!UIPainter methodsFor:'initialization'! - -createCanvas - |topView| - - super initialize. - - topView := StandardSystemView new. - topView label:'unnamed'. - topView extent:300@300. - topView application:self. - - workView := UIPainterView in:topView. - workView layout:(0.0 @ 0.0 corner:1.0 @ 1.0) asLayout. - - ^ workView. - - "Builder new createCanvas open" -! - -createPaletteIn:aViewOrNil - |topView v| - - aViewOrNil isNil ifTrue:[ - topView := StandardSystemView new. - topView label:'element palette'. - topView extent:200@400. - ] ifFalse:[ - topView := aViewOrNil - ]. - v := HVScrollableView for:SelectionInListView miniScrollerH:true in:topView. - v origin:(0.0 @ 0.0) corner:(1.0 @ 1.0). - elementMenu := v scrolledView. - - ^ elementMenu. - - "(Builder new createPaletteIn:nil) topView open" - - "Modified: 5.9.1995 / 23:52:57 / claus" -! - -initChannels - |cls| - - specSpecificAspectHolders := IdentityDictionary new. - aspectHolders := IdentityDictionary new. - - aspectHolders at:#classNameChannel put:( - (specClass notNil ifTrue:[specClass] - ifFalse:['NewApplication']) asValue - ). - specSuperclass isNil ifTrue:[ - specClass notNil ifTrue:[ - (cls := Smalltalk at:specClass asSymbol) notNil ifTrue:[ - specSuperclass := cls superclass name. - ] - ] - ]. - aspectHolders at:#superclassNameChannel put:( - (specSuperclass notNil ifTrue:[specSuperclass] - ifFalse:['ApplicationModel']) asValue - ). - aspectHolders at:#methodNameChannel put:( - (specSelector notNil ifTrue:[specSelector] - ifFalse:[#windowSpec]) asValue - ). - - aspectHolders at:#aspectChannel put:(ValueHolder new). - aspectHolders at:#changeChannel put:(ValueHolder new). - - aspectHolders at:#foregroundColor put:(ValueHolder new). - aspectHolders at:#backgroundColor put:(ValueHolder new). - - #( bottomFraction leftFraction topFraction rightFraction leftAlignmentFraction - bottomOffset leftOffset topOffset rightOffset topAlignmentFraction - ) - do:[:aChannel| aspectHolders at:aChannel put:(ValueHolder new) ]. -! - -initPullDownMenu - menu labels:(resources array:#( - 'file' - 'font' - 'type' - 'align' - 'dimension' - 'special' - 'code' - 'test' - )). - - menu selectors:#(#file - #font - #type - #align - #dimension - #special - #code - #test - ). - - menu at:#file - putLabels:(resources array: - #('new' - 'from class ...' - 'pick a view ' - '-' - 'save' - 'save as ...' - '-' - 'install' - '-' -"/ 'source' - 'windowSpec' - 'inspect me' - '-' - 'print' - '-' - 'quit' - )) - selectors:#(doNew - doFromClass - doPickAView - nil - doSave - doSaveAs - nil - doInstall - nil -"/ doSource - doWindowSpec - inspect - nil - doPrint - nil - doFinish - ) - receiver:self. - - menu at:#font putMenu:(workView subMenuFont menuView). - - menu at:#type - putLabels:(resources array:#( - 'basic widgets' - 'layout' - 'text' - 'interactors' - 'modal' - 'other' - '-' - 'all' - ) ) - selectors:#(showBasicWidgets - showLayoutWidgets - showTextWidgets - showInteractorWidgets - showModalWidgets - showOtherWidgets - nil - showAllWidgets - ) - receiver:self. - - menu at:#align putMenu:(workView subMenuAlign menuView). - menu at:#dimension putMenu:(workView subMenuDimension menuView). - - menu at:#special - putLabels:(resources array:#( - 'group radioButtons' - 'group enterFields' - '-' - 'delete undo history' - ) ) - selectors:#( - groupRadioButtons - groupEnterFields - nil - undoDeleteAll - ) - receiver:workView. - - menu at:#code - putLabels:(resources array:#( - 'class & method' - ) ) - selectors:#( - defineClassAndSelector - ) - receiver:self. - - menu at:#test - putLabels:(resources array:#( - 'test on' - ) ) - selectors:#(toggleTest - ) - receiver:self. -! - -openInterface - |list v topInset menuInset leftPanel middlePanel rightPanel buttonPanel propSelector| - - super initialize. - - self initChannels. - - whichProperty := SelectionInList new. -"/ whichProperty list:#('dimension' 'colors' 'model' 'misc' 'attribute list'). - whichProperty list:(UISpecification slices collect:[:slice | slice first asString]). - whichProperty onChangeSend:#showPropertyView to:self. - - workView :=self createCanvas. - - topView := StandardSystemView new. - topView label:'Interface Builder'. - topView icon:(Image fromFile:'bitmaps/Builder.xbm' resolution:100). - topView extent:(600 @ 400). - - menu := PullDownMenu in:topView. - buttonPanel := ButtonPanel in:topView. - - menuInset := menu preferredExtent y. - topInset := menuInset + buttonPanel preferredExtent y. - - buttonPanel origin:0.0@menuInset corner:1.0@topInset. - buttonPanel receiver:workView. - leftPanel := View origin:(0.0 @ 0.0) corner:0.3@1.0 in:topView. - leftPanel topInset:topInset. - middlePanel := View origin:(0.3 @ 0.0) corner:0.6@1.0 in:topView. - middlePanel topInset:topInset. - rightPanel := View origin:(0.6 @ 0.0) corner:1.0@1.0 in:topView. - rightPanel topInset:topInset. - - v := HVScrollableView for:UIPainterTreeView miniScrollerH:true in:middlePanel. - v origin:(0.0 @ 0.0) corner:(1.0 @ 1.0). - treeView := v scrolledView. - - propSelector := PopUpList label:'properties' in:rightPanel. - propSelector origin:(0.0 @ 0.0) corner:1.0@(propSelector preferredExtent y). - propSelector horizontalInset:View viewSpacing. - propSelector model:whichProperty. - - propertyFrame := View in:rightPanel. - propertyFrame origin:(0.0 @ 0.0) corner:1.0@1.0. - propertyFrame topInset:propSelector height + View viewSpacing. - - claus := View origin:(0.0 @ 0.0) corner:1.0@1.0 in:rightPanel. - claus := UIPropertyView in:claus receiver:workView. - - elementMenu := self createPaletteIn:leftPanel. - - treeView builderView:workView. "link workview with treeview" - - workView addDependent:treeView. - workView addDependent:self. - - self initPullDownMenu. - - elementMenu action:[:selection | - workView testMode ifTrue:[ - elementMenu deselect - ] ifFalse:[ - selection notNil ifTrue:[ - workView createWidgetWithClass: - (Smalltalk at:(elementMenu selectionValue asSymbol)) - ] - ] - ]. - topView application:self. - builder window:topView. - - topView beMaster. - workView topView beSlave. - - "/ can be created as embedded or side-menu - elementMenu topView ~~ topView ifTrue:[ - elementMenu topView beSlave. - ]. - - topView open. - workView topView openInGroup:(topView windowGroup). - elementMenu topView ~~ topView ifTrue:[ - elementMenu topView openInGroup:(topView windowGroup). - ] - - " - Builder open - " - - "Modified: 6.9.1995 / 00:26:59 / claus" -! - -openNewWindowCanvas - self open. - - -! - -openOnClass:aClass andSelector:aSelector - "open up an interface builder, fetching a spec from someClass - via some selector" - - |specArray| - - specClass := aClass name. - specSuperclass := aClass superclass name. - specSelector := aSelector. - - self openInterface. - workView className:aClass name. - workView methodName:aSelector. - workView setupFromSpec:(aClass perform:aSelector). -! - -openOnSpec:aSpecOrSpecArray - "open up an interface builder, given some specArray" - - |newBuilder| - - newBuilder := self new. -! ! - -!UIPainter methodsFor:'make layout'! - -makeLayout:what xOrY:xOrY offset:aBool - |view layout extent fraction offset fractSymb offsetSymb| - - view := workView singleSelection. - - view isNil ifTrue:[ - ^ self - ]. - layout := view geometryLayout. - - layout isLayout ifFalse:[ - ^ self - ]. - fractSymb := (what, 'Fraction') asSymbol. - offsetSymb := (what, 'Offset') asSymbol. - - ( (layout respondsTo:fractSymb) - and:[layout respondsTo:offsetSymb] - ) ifTrue:[ - - fraction := layout perform:fractSymb. - offset := layout perform:offsetSymb. - extent := (view superView computeExtent) perform:xOrY. - - aBool ifTrue:[ - offset := offset + ((fraction * extent) asInteger). - (aspectHolders at:offsetSymb) value:offset. - (aspectHolders at:fractSymb) value:0. - ] ifFalse:[ - fraction := (fraction + (offset / extent)) asFloat. - - (fraction > 1.0) ifTrue:[ fraction := 1.0 ]. - (fraction < 0.0) ifTrue:[ fraction := 0.0 ]. - - (aspectHolders at:offsetSymb) value:0. - (aspectHolders at:fractSymb) value:fraction. - ] - ] -! - -makeOffsetAll - self makeOffsetLeft. - self makeOffsetTop. - self makeOffsetRight. - self makeOffsetBottom. - -! - -makeOffsetBottom - self makeLayout:'bottom' xOrY:#y offset:true. - -! - -makeOffsetLeft - self makeLayout:'left' xOrY:#x offset:true. - -! - -makeOffsetRight - self makeLayout:'right' xOrY:#x offset:true. - -! - -makeOffsetTop - self makeLayout:'top' xOrY:#y offset:true. - - -! - -makeRelativeAll - self makeRelativeLeft. - self makeRelativeTop. - self makeRelativeRight. - self makeRelativeBottom. - -! - -makeRelativeBottom - self makeLayout:'bottom' xOrY:#y offset:false. - -! - -makeRelativeLeft - self makeLayout:'left' xOrY:#x offset:false. - -! - -makeRelativeRight - self makeLayout:'right' xOrY:#x offset:false. - -! - -makeRelativeTop - self makeLayout:'top' xOrY:#y offset:false. - -! ! - -!UIPainter methodsFor:'misc'! - -listOfOutletsFor:aViewClass - "return a list of outlets for a view-class" - - |l1 l2 all rej| - - (aViewClass == Object) ifTrue:[^ nil]. - - l1 := self listOfOutletsFor:(aViewClass superclass). - l2 := self listOfOutletsForClass:aViewClass. - - l2 isNil ifTrue:[ - all := l1 - ] ifFalse:[ - l1 isNil ifTrue:[ - all := l2 - ] ifFalse:[ - all := l1 , l2 - ] - ]. - rej := self rejectOutletsForClass:aViewClass. - rej notNil ifTrue:[ - rej do:[:x | - all := all copyWithout:x - ] - ]. - ^ all -! - -listOfOutletsForClass:aViewClass - "return a list of outlets for a view-class" - - "could this be done automatically ?" - - (aViewClass == Label) ifTrue:[ - ^ #('label' - 'iconic-label' - 'label layout' - 'fixed size' - 'foreground-color' - 'background-color' - ) - ]. - (aViewClass == Button) ifTrue:[ - ^ #( - 'active foreground-color' - 'active background-color' - 'active level' - 'passive level' - 'press action' - ) - ]. - (aViewClass == Toggle) ifTrue:[ - ^ #( - 'release action' - ) - ]. - (aViewClass == CheckBox) ifTrue:[ - ^ #( - 'label' - ) - ]. - (aViewClass == FramedBox) ifTrue:[ - ^ #( - 'label' - 'label position' - 'frame shown' - ) - ]. - (aViewClass == VerticalPanelView) ifTrue:[ - ^ #( - 'horizontal layout' - 'vertical layout' - ) - ]. - (aViewClass == HorizontalPanelView) ifTrue:[ - ^ #( - 'horizontal layout' - 'vertical layout' - ) - ]. - (aViewClass == VariableVerticalPanel) ifTrue:[ - ^ #( - 'handle position' - 'style' - ) - ]. - (aViewClass == ListView) ifTrue:[ - ^ #( - 'contents' - ) - ]. - (aViewClass == SelectionInListView) ifTrue:[ - ^ #( - 'press action' - ) - ]. - (aViewClass == EditField) ifTrue:[ - ^#( - 'initialText' - 'field type' - 'field length' - ) - ]. - (aViewClass == View) ifTrue:[ - ^ #( - 'level' - 'view background-color' - ) - ]. - (aViewClass == Scroller) ifTrue:[ - ^ #( - 'scroll action' - 'asynchronous' - 'synchronous' - ) - ]. - (aViewClass == ScrollBar) ifTrue:[ - ^ #( - 'scroll action' - 'scrollDown action' - 'scrollUp action' - 'asynchronous' - 'synchronous' - ) - ]. - (aViewClass == HorizontalScrollBar) ifTrue:[ - ^ #( - 'scrollLeft action' - 'scrollRight action' - ) - ]. - (aViewClass == PullDownMenu) ifTrue:[ - ^ #( - 'labels' - 'actions' - ) - ]. - (aViewClass == Separator) ifTrue:[ - ^ #( - 'orientation' - ) - ]. - ^ nil - - "Modified: 6.9.1995 / 13:42:09 / claus" -! - -rejectOutletsForClass:aViewClass - "return a list of suppressed outlets for a view-class" - - "could this be done automatically ?" - - (aViewClass == CheckToggle) ifTrue:[ - ^ #( - 'iconic-label' - ) - ]. - (aViewClass == CheckBox) ifTrue:[ - ^ #( - 'horizontal layout' - 'vertical layout' - ) - ]. - (aViewClass == HorizontalScrollBar) ifTrue:[ - ^ #( - 'scrollUp action' - 'scrollDown action' - ) - ]. - ^ nil - - "Modified: 4.9.1995 / 18:55:03 / claus" -! - -setupPropertyFromSpec:aSpec - "apply is pressed in the geometry-sub view, with a alignmentOrigin selected - " - |aViewsSpec| - - workView singleSelectionDo:[:selectedView | - aViewsSpec := workView generateSpecFor:selectedView. - aViewsSpec := aViewsSpec first. - ]. - - self setupPropertyFromSpec:aSpec for:aViewsSpec - -! - -setupPropertyFromSpec:aSpec for:aViewsSpec - "setup menu from spec - " - |specBindings| - - outletView := nil. - - specShown ~= aSpec ifTrue:[ - propertyFrame destroySubViews. - - "/ get aspects from specClass - specSpecificAspectHolders := IdentityDictionary new. - aViewsSpec class addBindingsTo:specSpecificAspectHolders for:aViewsSpec channel:nil. - - builder buildFromSpec:aSpec in:propertyFrame. - propertyFrame realizeAllSubViews. - ]. - specShown := aSpec -! - -showOutletsFor:aView - |c outlets| - - outletView isNil ifTrue:[^ self]. - - (aView isKindOf:SimpleView) ifFalse:[ - outletView list:nil. - ^ self - ]. - c := aView class. - - outlets := self listOfOutletsFor:c. - outletView list:outlets - - "Modified: 5.9.1995 / 21:51:57 / claus" -! ! - -!UIPainter methodsFor:'private - fetch'! - -fetchColorsFrom:aView - |holder| - - holder := self aspectFor:#foregroundColor. - (aView respondsTo:#foregroundColor) ifTrue:[ - holder value:(aView foregroundColor storeString). - ] ifFalse:[ - holder value:nil - ]. - holder := self aspectFor:#backgroundColor. - (aView respondsTo:#backgroundColor) ifTrue:[ - holder value:(aView backgroundColor storeString). - ] ifFalse:[ - holder value:nil - ]. - -! - -fetchLayoutFrom:aView - |layout extent| - - layout := aView geometryLayout. - layout isNil ifTrue:[^ self]. - - layout isLayout ifFalse:[ - layout isRectangle ifTrue:[ - (aspectHolders at:#leftOffset) value:(layout left). - (aspectHolders at:#rightOffset) value:(layout right). - (aspectHolders at:#topOffset) value:(layout top). - (aspectHolders at:#bottomOffset) value:(layout bottom). - ^ self - ]. - layout isPoint ifTrue:[ - (aspectHolders at:#leftOffset) value:(layout left). - (aspectHolders at:#rightOffset) value:(layout right). - ^ self - ]. - ]. - - (aspectHolders at:#leftOffset) value:(layout leftOffset). - (aspectHolders at:#leftFraction) value:(layout leftFraction). - (aspectHolders at:#topOffset) value:(layout topOffset). - (aspectHolders at:#topFraction) value:(layout topFraction). - - layout isLayoutFrame ifTrue:[ - (aspectHolders at:#rightOffset) value:(layout rightOffset). - (aspectHolders at:#bottomOffset) value:(layout bottomOffset). - - (aspectHolders at:#rightFraction) value:(layout rightFraction). - (aspectHolders at:#bottomFraction) value:(layout bottomFraction). - - (aspectHolders at:#leftAlignmentFraction) value:0. - (aspectHolders at:#topAlignmentFraction) value:0. - ] ifFalse:[ - extent := aView extent. - - (aspectHolders at:#rightOffset) value:(layout leftOffset + extent x). - (aspectHolders at:#bottomOffset) value:(layout topOffset + extent y). - - (aspectHolders at:#rightFraction) value:0. - (aspectHolders at:#bottomFraction) value:0. - - layout isAlignmentOrigin ifTrue:[ - (aspectHolders at:#leftAlignmentFraction) value:(layout leftAlignmentFraction). - (aspectHolders at:#topAlignmentFraction) value:(layout topAlignmentFraction). - ] ifFalse:[ - (aspectHolders at:#leftAlignmentFraction) value:0. - (aspectHolders at:#topAlignmentFraction) value:0. - ] - ]. - - -! - -fetchModelAspectsFrom:aView - (self aspectFor:#aspectChannel) value:(workView aspectSelectorForView:aView). - (self aspectFor:#changeChannel) value:(workView changeSelectorForView:aView). - -! ! - -!UIPainter methodsFor:'setup choices'! - -showAllWidgets - "create list of basic widgets" - - self showWidgetsWhere:[:class | true] -! - -showBasicWidgets - "create list of basic widgets" - - self showWidgetsInCategory:'Views-Basic' - butNot:[:class | class isKindOf:ModalBox class] -! - -showInteractorWidgets - "create list of interactor widgets" - - self showWidgetsInCategory:'Views-Interactors' - butNot:[:class | class isKindOf:ModalBox class] -! - -showLayoutWidgets - "create list of basic widgets" - - self showWidgetsInCategory:'Views-Layout' - butNot:[:class | class isKindOf:ModalBox class] -! - -showModalWidgets - "create list of modal widgets" - - self showWidgetsWhere:[:class | class isKindOf:ModalBox class] -! - -showOtherWidgets - "create list of other widgets" - - |check cat| - - check := [:class | - (#('Views-Basic' - 'Views-Interactors' - 'Views-Layout' - 'Views-Text') includes:class category) not]. - self showWidgetsWhere:check - butNot:[:class | class isKindOf:ModalBox class] -! - -showTextWidgets - "create list of basic widgets" - - self showWidgetsInCategory:'Views-Text' - butNot:[:class | class isKindOf:ModalBox class] -! - -showWidgetsInCategory:aCategory - "create list of basic widgets" - - self showWidgetsWhere:[:class | class category = aCategory] -! - -showWidgetsInCategory:aCategory butNot:excludeBlock - "create list of basic widgets" - - self showWidgetsWhere:[:class | class category = aCategory] - butNot:excludeBlock -! - -showWidgetsWhere:aBlock - "create list of widgets where aBlock avaluates to true" - - self showWidgetsWhere:aBlock butNot:[:class | false] -! - -showWidgetsWhere:aBlock butNot:excludeBlock - "create list of widgets where aBlock evaluates to true and excludeBlock - evaluates to false" - - |list| - - list := OrderedCollection new:0. - SimpleView allSubclassesDo:[:aSubclass | - (aBlock value:aSubclass) ifTrue:[ - (excludeBlock value:aSubclass) ifFalse:[ - list add:(aSubclass name) - ] - ] - ]. - (aBlock value:View) ifTrue:[ - (excludeBlock value:View) ifFalse:[ - list add:'View' - ] - ]. - (list size == 0) ifFalse:[ - list sort - ]. - elementMenu list:list -! ! - -!UIPainter methodsFor:'user actions - dimension'! - -setAlignmentOrigin - "apply is pressed in the geometry-sub view, with a alignmentOrigin selected - " - self setupPropertyFromSpec:(self class geometrySpecForAlignmentOrigin) -! - -setDimensionForAlignmentOrigin - |view layout| - - view := workView singleSelection. - - view notNil ifTrue:[ - layout := AlignmentOrigin new. - - layout leftOffset:((aspectHolders at:#leftOffset) value) ? 0. - layout topOffset:((aspectHolders at:#topOffset) value) ? 0. - layout leftFraction:((aspectHolders at:#leftFraction) value) ? 0. - layout topFraction:((aspectHolders at:#topFraction) value) ? 0. - - layout leftAlignmentFraction:((aspectHolders at:#leftAlignmentFraction) value) ? 0. - layout topAlignmentFraction:((aspectHolders at:#topAlignmentFraction) value) ? 0. - - workView setDimension:layout. - ] -! - -setDimensionForLayoutFrame - |view layout| - - view := workView singleSelection. - - view notNil ifTrue:[ - layout := LayoutFrame new. - - layout leftOffset:((aspectHolders at:#leftOffset) value) ? 0. - layout rightOffset:((aspectHolders at:#rightOffset) value) ? 0. - layout topOffset:((aspectHolders at:#topOffset) value) ? 0. - layout bottomOffset:((aspectHolders at:#bottomOffset) value) ? 0. - layout leftFraction:((aspectHolders at:#leftFraction) value) ? 0. - layout rightFraction:((aspectHolders at:#rightFraction) value) ? 0. - layout topFraction:((aspectHolders at:#topFraction) value) ? 0. - layout bottomFraction:((aspectHolders at:#bottomFraction) value) ? 0. - - workView setDimension:layout. - ] -! - -setDimensionForLayoutOrigin - |view layout| - - view := workView singleSelection. - - view notNil ifTrue:[ - layout := LayoutOrigin new. - - layout leftOffset:((aspectHolders at:#leftOffset) value) ? 0. - layout topOffset:((aspectHolders at:#topOffset) value) ? 0. - - layout leftFraction:((aspectHolders at:#leftFraction) value) ? 0. - layout topFraction:((aspectHolders at:#topFraction) value) ? 0. - - workView setDimension:layout. - ] -! - -setLayoutFrame - "apply is pressed in the geometry-sub view, with a layoutFrame selected - " - self setupPropertyFromSpec:(self class geometrySpecForLayoutFrame) -! - -setLayoutOrigin - "apply is pressed in the geometry-sub view, with a layoutOrigin selected - " - self setupPropertyFromSpec:(self class geometrySpecForLayoutOrigin) -! ! - -!UIPainter methodsFor:'user interaction'! - -closeRequest - workView notNil ifTrue:[workView release. workView := nil]. - super closeRequest -! - -closeRequestFor:aTopView - aTopView ~~ topView ifTrue:[ - topView device beep. - ^ self - ]. - super closeRequestFor:aTopView -! - -selectOutlet:nr - |outlet type sel text box action initialText initialList - view prop t val| - - outlet := outletView selectionValue. - outletView deselect. - view := workView selection. - view isNil ifTrue:[ - self notify:'select something first'. - ^ self - ]. - action := [:s | self setOutlet:sel type:type to:s in:view]. - (outlet = 'label') ifTrue:[ - type := #string. - sel := #label:. - text := 'label-text:'. - initialText := view label - ]. - (outlet = 'fixed size') ifTrue:[ - type := #boolean. - sel := #sizeFixed:. - text := 'size is fix:'. - ]. - (outlet = 'frame shown') ifTrue:[ - type := #boolean. - sel := #showFrame:. - text := 'frame is to be drawn:'. - ]. - (outlet = 'labels') ifTrue:[ - type := #strings. - sel := #labels:. - initialText := view labels - ]. - (outlet = 'contents') ifTrue:[ - type := #text. - sel := #contents:. - initialText := view contents - ]. - (outlet = 'initialText') ifTrue:[ - type := #string. - sel := #initialText:. - initialText := view contents - ]. - (outlet = 'field type') ifTrue:[ - type := #fieldTypeSymbol. - sel := #type:. - initialList := #(number - string - password - ). - initialText := view converter isNil ifTrue:[#string] ifFalse:[view converter type]. - ]. - (outlet = 'field length') ifTrue:[ - type := #numberOrNil. - sel := #maxChars:. - text := 'field length (empty -> unlimited)'. - initialText := view maxChars isNil ifTrue:[''] ifFalse:[view maxChars printString]. - ]. - (outlet = 'level') ifTrue:[ - type := #number. - sel := #level:. - initialText := view level printString - ]. - (outlet = 'active level') ifTrue:[ - type := #number. - sel := #onLevel:. - initialText := view onLevel printString - ]. - (outlet = 'passive level') ifTrue:[ - type := #number. - sel := #offLevel:. - initialText := view offLevel printString - ]. - (outlet = 'iconic-label') ifTrue:[ - type := #form. - sel := #label:. - text := 'label-icon:' - ]. - (outlet = 'view background-color') ifTrue:[ - type := #color. - sel := #viewBackground:. - text := 'view background color'. - initialText := 'Black' - ]. - (outlet = 'foreground-color') ifTrue:[ - type := #color. - sel := #foregroundColor:. - text := 'foreground color'. - initialText := 'Black' - ]. - (outlet = 'background-color') ifTrue:[ - type := #color. - sel := #backgroundColor:. - text := 'background color'. - initialText := 'Grey' - ]. - (outlet = 'active foreground-color') ifTrue:[ - type := #color. - sel := #activeForegroundColor:. - text := 'active foreground color'. - initialText := 'Yellow' - ]. - (outlet = 'active background-color') ifTrue:[ - type := #color. - sel := #activeBackgroundColor:. - text := 'active background color'. - initialText := 'Grey' - ]. - (outlet = 'scroll action') ifTrue:[ - type := #block. - sel := #scrollAction:. - text := 'action block when scrolled' - ]. - (outlet = 'scrollUp action') ifTrue:[ - type := #block. - sel := #scrollUpAction:. - text := 'action block when scrolled up' - ]. - (outlet = 'scrollDown action') ifTrue:[ - type := #block. - sel := #scrollDownAction:. - text := 'action block when scrolled down' - ]. - (outlet = 'scrollLeft action') ifTrue:[ - type := #block. - sel := #scrollLeftAction:. - text := 'action block when scrolled left' - ]. - (outlet = 'scrollRight action') ifTrue:[ - type := #block. - sel := #scrollRightAction:. - text := 'action block when scrolled right' - ]. - (outlet = 'press action') ifTrue:[ - type := #block. - sel := #pressAction:. - text := 'action block when pressed' - ]. - (outlet = 'release action') ifTrue:[ - type := #block. - sel := #releaseAction:. - text := 'action block when released' - ]. - (outlet = 'style') ifTrue:[ - type := #symbol. - sel := #style:. - initialList := #(motif next) - ]. - (outlet = 'handle position') ifTrue:[ - type := #symbol. - sel := #handlePosition:. - initialList := #(left center right) - ]. - (outlet = 'horizontal layout') ifTrue:[ - type := #symbol. - sel := #horizontalLayout:. - text := 'horizontal components layout'. - initialList := #(left - leftSpace - leftMax - leftSpaceMax - center - centerMax - right - rightSpace - rightMax - rightSpaceMax - spread - spreadSpace - spreadMax - spreadSpaceMax - fit - fitSpace). - initialText := view horizontalLayout printString - ]. - (outlet = 'vertical layout') ifTrue:[ - type := #symbol. - sel := #verticalLayout:. - text := 'vertical components layout'. - initialList := #(top - topSpace - center - bottom - bottomSpace - spread - spreadSpace - fit - fitSpace). - initialText := view verticalLayout printString - ]. - (outlet = 'label position') ifTrue:[ - type := #symbol. - sel := #labelPosition:. - initialList := #(topLeft topCenter topRight bottomLeft bottomCenter bottomRight). - initialText := view labelPosition printString - ]. - (outlet = 'label layout') ifTrue:[ - type := #symbol. - sel := #adjust:. - initialList := #( left right center centerLeft centerRight fit ). - initialText := view adjust printString - ]. - (outlet = 'orientation') ifTrue:[ - type := #symbol. - sel := #orientation:. - initialList := #( horizontal vertical ). - initialText := view orientation printString - ]. - - (type == #color) ifTrue:[ - initialList := #('Black' - 'White' - 'LightGrey' - 'Grey' - 'DarkGrey' - 'Yellow' - 'Red' - 'Green' - 'Blue' - ) - ]. - - text isNil ifTrue:[ - text := outlet - ]. - - "what type of box do we need" - - t := type. - ((type == #color) or:[type == #symbol or:[type == #fieldTypeSymbol]]) ifTrue:[ - t := #list - ]. - ((type == #number) or:[type == #numberOrNil]) ifTrue:[ - t := #string - ]. - (type == #strings) ifTrue:[ - t := #text - ]. - (type == #block) ifTrue:[ - t := #text. - initialText := workView outletValueOf:sel for:view. - initialText isNil ifTrue:[initialText := '[statements]'] - ]. - (type == #block1) ifTrue:[ - t := #text. - type := #block. - initialText := workView outletValueOf:sel for:view. - initialText isNil ifTrue:[initialText := '[:argument | statements ]'] - ]. - (type == #block2) ifTrue:[ - t := #text. - type := #block. - initialText := workView outletValueOf:sel for:view. - initialText isNil ifTrue:[initialText := '[:arg1 :arg2 | statements ]'] - ]. - - "show a box to enter thing" - - (t == #boolean) ifTrue:[ - val := Dialog confirmWithCancel:text. - (val == true or:[val == false]) ifTrue:[ - action value:val - ]. - ^ self - ]. - (t == #string) ifTrue:[ -"/ stringBox isNil ifTrue:[ - stringBox := EnterBox new. -"/ ]. - box := stringBox - ]. - (t == #list) ifTrue:[ -"/ listBox isNil ifTrue:[ - listBox := ListSelectionBox new. -"/ ]. - listBox list:initialList. - box := listBox - ]. - (t == #text) ifTrue:[ -"/ actionBox isNil ifTrue:[ - actionBox := TextBox new. -"/ ]. - actionBox initialText:initialText. - box := actionBox - ]. -" -Transcript show:'outlet: '. Transcript showCR:outlet. -Transcript show:'type: '. Transcript showCR:type. -Transcript show:'sel: '. Transcript showCR:sel. -Transcript show:'text: '. Transcript showCR:text. -" - - box isNil ifTrue:[ - self notify:'not yet implemented' - ] ifFalse:[ - box initialText:initialText. - box title:text. - box action:action. - box showAtPointer - ] - - "Modified: 6.9.1995 / 13:46:29 / claus" -! - -setColors - |fg bg| - - fg := (self aspectFor:#foregroundColor) value. - - (fg notNil and:[fg notEmpty]) ifTrue:[ - fg := Color readFrom:fg. - workView singleSelectionDo:[:selectedView | - selectedView foregroundColor:fg - ]. - ]. - bg := (self aspectFor:#backgroundColor) value. - - (bg notNil and:[bg notEmpty]) ifTrue:[ - bg := Color readFrom:bg. - workView singleSelectionDo:[:selectedView | - selectedView backgroundColor:bg - ]. - ]. -! - -setMiscAspects - "sent when apply is pressen in the misc-sub view" - - workView singleSelectionDo:[:selectedView | - selectedView ~~ workView ifTrue:[ - workView changeVariableNameOf:selectedView to:nameChannel value - ] - ]. -! - -setModelAspects - "sent when apply is pressen in the model-sub view" - - |aspectSymbol| - - aspectSymbol := (self aspectFor:#aspectChannel) value. - (aspectSymbol notNil and:[aspectSymbol notEmpty]) ifTrue:[ - aspectSymbol := aspectSymbol asSymbol. - workView singleSelectionDo:[:selectedView | - selectedView ~~ workView ifTrue:[ - workView setAspectSelector:aspectSymbol forView:selectedView - ]. - ]. - ]. -! - -setOutlet:outletSymbol type:type to:outletValue in:aView - |block val messageSymbol| - - messageSymbol := outletSymbol. - val := outletValue. - (type == #block) ifTrue:[ - block := Compiler evaluate:val. - (block == #Error) ifTrue:[ - self warn:'action will not work in test-mode'. - workView addOutletDefinitionFor:outletSymbol - type:type - value:outletValue - for:aView. - ^ self - ]. - val := block - ]. - (type == #number) ifTrue:[ - val := Number readFromString:outletValue onError:0 - ]. - (type == #numberOrNil) ifTrue:[ - val := Number readFromString:outletValue onError:nil - ]. - (type == #text) ifTrue:[ - val := outletValue asString - ]. - (type == #strings) ifTrue:[ - val := outletValue asText - ]. - (type == #symbol) ifTrue:[ - val := outletValue asSymbol. - ]. - (type == #fieldTypeSymbol) ifTrue:[ - val := outletValue asSymbol. - val == #password ifTrue:[ - aView passwordCharacter:$* - ] ifFalse:[ - aView passwordCharacter:nil - ]. - val := (PrintConverter new initFor:val). - messageSymbol := #converter: - ]. - (type == #color) ifTrue:[ - val := Color name:outletValue. - val isNil ifTrue:[ - self warn:('no such color:' , outletValue). - ^ self - ] - ]. -Transcript show:(val printString). -Transcript showCR:('(' , val class printString , ')'). - - workView selectionHiddenDo:[ - aView perform:messageSymbol with:val. - workView elementChanged:aView. - aView redraw. - ]. - workView addOutletDefinitionFor:outletSymbol - type:type - value:outletValue - for:aView - - "Modified: 6.9.1995 / 13:44:46 / claus" -! - -showPropertyView - |v l spec shown possibleProperties slices specIndex slice specSymbol| - - shown := whichProperty selection. - - workView singleSelectionDo:[:selectedView | - |aViewsSpec| - - aViewsSpec := workView generateSpecFor:selectedView. - aViewsSpec := aViewsSpec first. - - slices := selectedView specClass slices. - possibleProperties := slices collect:[:slice | slice first asString]. - possibleProperties := possibleProperties, #('dimension' 'colors' 'model' 'misc' 'attribute list'). - possibleProperties ~= whichProperty list ifTrue:[ - whichProperty list:possibleProperties. - - (possibleProperties includes:shown) ifFalse:[ - shown := nil. - ]. - ]. - - specIndex := slices findFirst:[:slice | slice first = shown]. - specIndex ~~ 0 ifTrue:[ - slice := slices at:specIndex. - specSymbol := slice at:2. - (selectedView specClass respondsTo:specSymbol) ifTrue:[ - spec := selectedView specClass perform:specSymbol. - ^ self setupPropertyFromSpec:spec for:aViewsSpec - ] - ]. - - (shown = 'dimension' or:[shown = 'Position']) ifTrue:[ - (l := selectedView geometryLayout) notNil ifTrue:[ - l isLayout ifTrue:[ - l isAlignmentOrigin ifTrue:[ - spec := self class geometrySpecForAlignmentOrigin - ] ifFalse:[ - l isLayoutFrame ifFalse:[ - spec := self class geometrySpecForLayoutOrigin - ] - ] - ] - ]. - spec isNil ifTrue:[ - spec := self class geometrySpecForLayoutFrame - ]. - ^ self setupPropertyFromSpec:spec for:aViewsSpec - ]. - - shown = 'colors' ifTrue:[ - ^ self setupPropertyFromSpec:(self class colorSpec) for:aViewsSpec - ]. - - shown = 'model' ifTrue:[ - ^ self setupPropertyFromSpec:(self class modelSpec) for:aViewsSpec - ]. - - shown = 'misc' ifTrue:[ - ^ self setupPropertyFromSpec:(self class miscSpec) for:aViewsSpec - ]. - - shown = 'attribute list' ifTrue:[ - specShown ~~ #attributeList ifTrue:[ - propertyFrame destroySubViews. - specSpecificAspectHolders := IdentityDictionary new. - - v := ScrollableView for:SelectionInListView in:propertyFrame. - v origin:(0.0 @ 0.0) corner:(1.0 @ 1.0). - outletView := v scrolledView. - outletView action:[:lineNr | lineNr notNil ifTrue:[self selectOutlet:lineNr]]. - propertyFrame realizeAllSubViews. - specShown := #attributeList. - ]. - self showOutletsFor:(workView selection). - ^ self - ]. - ]. - - propertyFrame destroySubViews. - outletView := nil. - specShown := nil. - specSpecificAspectHolders := IdentityDictionary new. - -! ! - -!UIPainter methodsFor:'user interaction - dialogs'! - -checkClassAndSelector - "check for class & superclass" - - |superclass cls| - - specClass isNil ifTrue:[^ false]. - - specClass isBehavior ifFalse:[ - cls := Smalltalk at:specClass asSymbol - ] ifTrue:[ - cls := specClass - ]. - cls isNil ifTrue:[ - (superclass := Smalltalk at:specSuperclass asSymbol) isNil ifTrue:[ - self warn:'no class named ' , specSuperclass , ' exists.'. - ^ false. - ]. - (self confirm:'create ' , specClass , ' ?') ifTrue:[ - superclass subclass:(specClass asSymbol) - instanceVariableNames:'' - classVariableNames:'' - poolDictionaries:'' - category:'New-Applications'. - ^ true. - ]. - ^ false. - ]. - cls isBehavior ifFalse:[ - self warn:'a global named ' , specClass , ' exists, but is no class.'. - ^ false. - ]. - - specSuperclass isBehavior ifFalse:[ - superclass := Smalltalk at:specSuperclass asSymbol - ] ifTrue:[ - superclass := specSuperclass - ]. - specSuperclass notNil ifTrue:[ - superclass isNil ifTrue:[ - self warn:'no class named ' , specSuperclass , ' exists.'. - ^ false. - ]. - - (cls isSubclassOf:superclass) ifFalse:[ - self warn:'a global named ' , specClass , ' exists, but is not a subclass of ' , superclass name , '.'. - ^ false. - ] - ]. - ^ true -! - -defineClassAndSelector - "launch a dialog to define class, superclass and method" - - |again| - - [ - again := false. - (self openDialogInterface:#nameAndSelectorSpec) ifTrue:[ - - specClass := (self aspectFor:#classNameChannel) value. - specSelector := (self aspectFor:#methodNameChannel) value. - specSuperclass := (self aspectFor:#superclassNameChannel) value. - - again := self checkClassAndSelector not. - again ifFalse:[ - workView className:specClass superclassName:specSuperclass selector:specSelector. - ]. - ] - ] doWhile:[again] - -! ! - -!UIPainter methodsFor:'user interaction - menu'! - -doFinish - self closeRequest -! - -doFromClass - |className methodName cls sel accepted failed spec s| - - className := '' asValue. - methodName := '' asValue. - (s := workView className) notNil ifTrue:[ - className value:s - ]. - (s := workView methodName) notNil ifTrue:[ - methodName value:s - ]. - - failed := false. - [ - accepted := - (DialogBox new - addTextLabel:'Classes name:'; - addInputFieldOn:className; - addVerticalSpace; - addTextLabel:'methods name:'; - addInputFieldOn:methodName; - addAbortButton; - addOkButton; - open - ) accepted. - - accepted ifTrue:[ - cls := Smalltalk classNamed:className value. - cls isNil ifTrue:[ - failed := true. - self warn:'no such class'. - ] ifFalse:[ - sel := methodName value asSymbol. - (cls respondsTo:sel ) ifFalse:[ - failed := true. - self warn:'no such method' - ] ifTrue:[ - spec := cls perform:sel. - spec isArray ifFalse:[ - failed := true. - self warn:'not a windowSpec method' - ]. - "/ ok, got it - workView className:className value. - workView methodName:methodName value. - workView setupFromSpec:spec. - ^ self - ] - ] - ] - ] doWhile:[accepted and:[failed]]. - - "Modified: 5.9.1995 / 18:47:57 / claus" -! - -doInstall - |code| - - (specClass isNil or:[specSelector isNil]) ifTrue:[ - self defineClassAndSelector - ]. - - self checkClassAndSelector ifFalse:[ - ^ self - ]. - - workView className:specClass superclassName:specSuperclass selector:specSelector. - - code := workView generateCode. - (ReadStream on:code) fileIn. - - "Modified: 4.9.1995 / 17:06:10 / claus" -! - -doNew - workView removeAll. - ^ self - - "Modified: 5.9.1995 / 20:52:21 / claus" -! - -doOpen - fileBox isNil ifTrue:[ - fileBox := FileSelectionBox - title:'' - "pattern:'*.sib'" - okText:'' - abortText:(Resource name:'BUILDER_ABORT_LABEL' - fromFile:'Builder.rs') - action:[nil] - ]. - fileBox title:(Resource name:'BUILDER_OPEN_TITLE' fromFile:'Builder.rs'). - fileBox action:[:fileName | self openFile:fileName]. - fileBox okText:(Resource name:'BUILDER_OPEN_OK_LABEL' fromFile:'Builder.rs'). - fileBox showAtPointer -! - -doPickAView - |view className methodName cls sel accepted spec s| - - view := Display viewFromUser. - view isNil ifTrue:[^ self]. - - spec := UISpecification fromView:view topView. - self halt. - - "/ ok, got it - workView setupFromSpec:spec. - workView className:view class name. - workView methodName:#newSpec. - ^ self - - "Modified: 5.9.1995 / 23:25:53 / claus" -! - -doPrint - ^ self -! - -doSave - currentFileName notNil ifTrue:[ - self saveAs:currentFileName - ] ifFalse:[ - self doSaveAs - ] -! - -doSaveAs - fileBox isNil ifTrue:[ - fileBox := FileSelectionBox - title:'' - "pattern:'*.draw'" - okText:'' - abortText:(Resource name:'BUILDER_ABORT_LABEL' - fromFile:'Builder.rs') - action:[nil] - ]. - fileBox title:(Resource name:'BUILDER_SAVE_TITLE' fromFile:'Builder.rs'). - fileBox action:[:fileName | self saveAs:fileName]. - fileBox okText:(Resource name:'BUILDER_SAVE_OK_LABEL' fromFile:'Builder.rs'). - fileBox showAtPointer -! ! - -!UIPainter ignoredMethodsFor:'user interaction - menu'! - -doSource - |code v| - - code := workView generateCode. - v := CodeView open. - v contents:code. - v label:(workView applicationName). - ^ self - - "Modified: 5.9.1995 / 21:02:05 / claus" -! ! - -!UIPainter methodsFor:'user interaction - menu'! - -doWindowSpec - |code v| - - code := workView generateWindowSpecMethodSource. - v := CodeView open. - v contents:code. - v label:'windowSpec'. - ^ self - - "Modified: 5.9.1995 / 21:04:14 / claus" -! - -toggleTest - |m t| - - m := menu menuAt:#test. - t := workView testMode not. - - t ifTrue:[ - m labelAt:#toggleTest put:(resources string:'test off') - ] ifFalse:[ - m labelAt:#toggleTest put:(resources string:'test on') - ]. - workView testMode:t -! ! - !UIPainter::ButtonPanel methodsFor:'accessing'! receiver @@ -2984,8 +114,3 @@ ^ menu ! ! -!UIPainter class methodsFor:'documentation'! - -version - ^ '$Header$' -! !