--- a/UIPropertyView.st Fri Feb 28 10:20:51 1997 +0100
+++ b/UIPropertyView.st Fri Feb 28 10:22:30 1997 +0100
@@ -1,8 +1,6 @@
-'From Smalltalk/X, Version:3.1.4 on 25-feb-1997 at 2:17:33 pm' !
-
ApplicationModel subclass:#UIPropertyView
instanceVariableNames:'builderView modified propertyFrame propertyList propertySpecs
- currentView currentSpec propertyAspects staticAspects
+ currentView currentSpec propertyAspects layoutAspects layoutType
specBeingEdited userSelectedProperty currentSpecChannel'
classVariableNames:''
poolDictionaries:''
@@ -12,11 +10,11 @@
!UIPropertyView class methodsFor:'instance creation'!
-in:aTopView receiver:aReceiver
+in:aTopView builder:aBuilderView
|application|
application := self new.
- application in:aTopView receiver:aReceiver.
+ application in:aTopView builder:aBuilderView.
^ application
! !
@@ -26,20 +24,32 @@
^ 'Dimension'
! !
-!UIPropertyView class methodsFor:'specifications'!
+!UIPropertyView class methodsFor:'interface specs'!
specificationAlignmentOrigin
+ "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:#specificationAlignmentOrigin
+ UIPainter new openOnClass:UIPropertyView andSelector:#specificationAlignmentOrigin
+ UIPropertyView new openInterface:#specificationAlignmentOrigin
"
+
<resource: #canvas>
^
-
+
#(#FullSpec
+ #'name:' 'uIPainterView'
+ #'layout:' #(#LayoutFrame 0 0.0 0 0.0 0 1.0 0 1.0)
+ #'isOpaque:' true
#'window:'
#(#WindowSpec
+ #'name:' 'uIPainterView'
#'layout:' #(#LayoutFrame 0 0.0 0 0.0 0 1.0 0 1.0)
+ #'isOpaque:' true
#'label:' 'unnamed'
#'bounds:' #(#Rectangle 0 0 248 304)
)
@@ -48,382 +58,341 @@
#'collection:'
#(
#(#LabelSpec
- #'name:' 'label1'
- #'layout:' #(#LayoutFrame 5 0 42 0 48 0 60 0)
- #'label:' 'left'
+ #'name:' 'label9'
+ #'layout:' #(#LayoutFrame 5 0 7 0 48 0 30 0)
+ #'isOpaque:' true
+ #'label:' 'Layout:'
+ #'foregroundColor:' #(#Color 0.0 0.0 0.0)
+ #'backgroundColor:' #(#Color 66.9993 66.9993 66.9993)
+ #'initiallyInvisible:' false
+ #'level:' 0
+ #'adjust:' #center
+ #'hasCharacterOrientedLabel:' true
+ )
+ #(#PopUpListSpec
+ #'name:' 'popUpList1'
+ #'layout:' #(#LayoutFrame 58 0.0 7 0 -12 1.0 30 0)
+ #'isOpaque:' true
+ #'label:' 'popup'
+ #'foregroundColor:' #(#Color 0.0 0.0 0.0)
+ #'backgroundColor:' #(#Color 66.9993 66.9993 66.9993)
+ #'initiallyInvisible:' false
+ #'model:' #layoutType
+ #'menu:' #layoutTypeList
)
#(#LabelSpec
#'name:' 'label2'
- #'layout:' #(#LayoutFrame 5 0 69 0 48 0 87 0)
+ #'layout:' #(#LayoutFrame 5 0 103 0 48 0 121 0)
+ #'isOpaque:' true
#'label:' 'top'
+ #'foregroundColor:' #(#Color 0.0 0.0 0.0)
+ #'backgroundColor:' #(#Color 66.9993 66.9993 66.9993)
+ #'initiallyInvisible:' false
+ #'level:' 0
+ #'adjust:' #center
+ #'hasCharacterOrientedLabel:' true
)
#(#LabelSpec
#'name:' 'label3'
- #'layout:' #(#LayoutFrame 57 0 10 0 103 0 27 0)
+ #'layout:' #(#LayoutFrame 58 0 48 0 104 0 65 0)
+ #'isOpaque:' true
#'label:' 'relative'
+ #'foregroundColor:' #(#Color 0.0 0.0 0.0)
+ #'backgroundColor:' #(#Color 66.9993 66.9993 66.9993)
+ #'initiallyInvisible:' false
+ #'level:' 0
+ #'adjust:' #center
+ #'hasCharacterOrientedLabel:' true
)
#(#LabelSpec
#'name:' 'label4'
- #'layout:' #(#LayoutFrame 154 0 11 0 190 0 28 0)
+ #'layout:' #(#LayoutFrame 154 0 49 0 190 0 66 0)
+ #'isOpaque:' true
#'label:' 'offset'
+ #'foregroundColor:' #(#Color 0.0 0.0 0.0)
+ #'backgroundColor:' #(#Color 66.9993 66.9993 66.9993)
+ #'initiallyInvisible:' false
+ #'level:' 0
+ #'adjust:' #center
+ #'hasCharacterOrientedLabel:' true
)
#(#LabelSpec
#'name:' 'label5'
- #'layout:' #(#LayoutFrame 5 0 96 0 48 0 114 0)
+ #'layout:' #(#LayoutFrame 5 0 167 0 48 0 185 0)
+ #'isOpaque:' true
#'label:' 'align H'
+ #'foregroundColor:' #(#Color 0.0 0.0 0.0)
+ #'backgroundColor:' #(#Color 66.9993 66.9993 66.9993)
+ #'initiallyInvisible:' false
+ #'level:' 0
+ #'adjust:' #center
+ #'hasCharacterOrientedLabel:' true
)
#(#LabelSpec
#'name:' 'label6'
- #'layout:' #(#LayoutFrame 5 0 122 0 48 0 140 0)
+ #'layout:' #(#LayoutFrame 5 0 193 0 48 0 211 0)
+ #'isOpaque:' true
#'label:' 'align V'
+ #'foregroundColor:' #(#Color 0.0 0.0 0.0)
+ #'backgroundColor:' #(#Color 66.9993 66.9993 66.9993)
+ #'initiallyInvisible:' false
+ #'level:' 0
+ #'adjust:' #center
+ #'hasCharacterOrientedLabel:' true
)
#(#InputFieldSpec
#'name:' 'editField1'
+ #'layout:' #(#LayoutFrame 58 0 76 0 115 0 94 0)
+ #'isOpaque:' true
+ #'initiallyDisabled:' false
+ #'initiallyInvisible:' false
+ #'model:' #leftFraction
+ #'isReadOnly:' false
+ #'tabable:' true
#'type:' #numberOrNil
- #'layout:' #(#LayoutFrame 57 0 42 0 114 0 60 0)
- #'model:' #leftFraction
#'immediateAccept:' false
+ #'acceptOnLeave:' true
#'acceptOnReturn:' true
#'acceptOnTab:' true
- #tabable: true
+ #'acceptOnLostFocus:' true
+ #'hasBorder:' false
)
#(#InputFieldSpec
#'name:' 'editField2'
+ #'layout:' #(#LayoutFrame 58 0 103 0 115 0 121 0)
+ #'isOpaque:' true
+ #'initiallyDisabled:' false
+ #'initiallyInvisible:' false
+ #'model:' #topFraction
+ #'isReadOnly:' false
+ #'tabable:' true
#'type:' #numberOrNil
- #'layout:' #(#LayoutFrame 57 0 69 0 114 0 87 0)
- #'model:' #topFraction
#'immediateAccept:' false
+ #'acceptOnLeave:' true
#'acceptOnReturn:' true
#'acceptOnTab:' true
- #tabable: true
+ #'acceptOnLostFocus:' true
+ #'hasBorder:' false
)
#(#InputFieldSpec
#'name:' 'editField5'
+ #'layout:' #(#LayoutFrame 58 0 167 0 115 0 185 0)
+ #'isOpaque:' true
+ #'initiallyDisabled:' false
+ #'initiallyInvisible:' false
+ #'model:' #leftAlignmentFraction
+ #'isReadOnly:' false
+ #'tabable:' true
#'type:' #numberOrNil
- #'layout:' #(#LayoutFrame 57 0 96 0 114 0 114 0)
- #'model:' #leftAlignmentFraction
#'immediateAccept:' false
+ #'acceptOnLeave:' true
#'acceptOnReturn:' true
#'acceptOnTab:' true
- #tabable: true
+ #'acceptOnLostFocus:' true
+ #'hasBorder:' false
)
#(#InputFieldSpec
#'name:' 'editField6'
+ #'layout:' #(#LayoutFrame 58 0 193 0 115 0 211 0)
+ #'isOpaque:' true
+ #'initiallyDisabled:' false
+ #'initiallyInvisible:' false
+ #'model:' #topAlignmentFraction
+ #'isReadOnly:' false
+ #'tabable:' true
#'type:' #numberOrNil
- #'layout:' #(#LayoutFrame 56 0 122 0 113 0 140 0)
- #'model:' #topAlignmentFraction
#'immediateAccept:' false
+ #'acceptOnLeave:' true
#'acceptOnReturn:' true
#'acceptOnTab:' true
- #tabable: true
+ #'acceptOnLostFocus:' true
+ #'hasBorder:' false
)
#(#InputFieldSpec
#'name:' 'editField3'
+ #'layout:' #(#LayoutFrame 154 0 76 0 212 0 94 0)
+ #'isOpaque:' true
+ #'initiallyDisabled:' false
+ #'initiallyInvisible:' false
+ #'model:' #leftOffset
+ #'isReadOnly:' false
+ #'tabable:' true
#'type:' #numberOrNil
- #'layout:' #(#LayoutFrame 154 0 42 0 212 0 60 0)
- #'model:' #leftOffset
#'immediateAccept:' false
+ #'acceptOnLeave:' true
#'acceptOnReturn:' true
#'acceptOnTab:' true
- #tabable: true
+ #'acceptOnLostFocus:' true
+ #'hasBorder:' false
)
#(#InputFieldSpec
#'name:' 'editField4'
+ #'layout:' #(#LayoutFrame 154 0 103 0 212 0 121 0)
+ #'isOpaque:' true
+ #'initiallyDisabled:' false
+ #'initiallyInvisible:' false
+ #'model:' #topOffset
+ #'isReadOnly:' false
+ #'tabable:' true
#'type:' #numberOrNil
- #'layout:' #(#LayoutFrame 154 0 69 0 212 0 87 0)
- #'model:' #topOffset
#'immediateAccept:' false
+ #'acceptOnLeave:' true
#'acceptOnReturn:' true
#'acceptOnTab:' true
- #tabable: true
+ #'acceptOnLostFocus:' true
+ #'hasBorder:' false
)
#(#ActionButtonSpec
#'name:' 'button1'
- #'layout:' #(#LayoutFrame 119 0 42 0 138 0 60 0)
+ #'layout:' #(#LayoutFrame 119 0 76 0 138 0 94 0)
+ #'isOpaque:' true
#'label:' ''
+ #'foregroundColor:' #(#Color 0.0 0.0 0.0)
+ #'backgroundColor:' #(#Color 66.9993 66.9993 66.9993)
+ #'initiallyInvisible:' false
+ #'tabable:' false
+ #'isDefault:' false
+ #'defaultable:' false
#'model:' #makeRelativeLeft
+ #'hasCharacterOrientedLabel:' true
+ #'isDecorated:' false
+ #'initiallyDisabled:' false
)
#(#ActionButtonSpec
#'name:' 'button2'
- #'layout:' #(#LayoutFrame 119 0 69 0 138 0 87 0)
+ #'layout:' #(#LayoutFrame 119 0 103 0 138 0 121 0)
+ #'isOpaque:' true
#'label:' ''
+ #'foregroundColor:' #(#Color 0.0 0.0 0.0)
+ #'backgroundColor:' #(#Color 66.9993 66.9993 66.9993)
+ #'initiallyInvisible:' false
+ #'tabable:' false
+ #'isDefault:' false
+ #'defaultable:' false
#'model:' #makeRelativeTop
+ #'hasCharacterOrientedLabel:' true
+ #'isDecorated:' false
+ #'initiallyDisabled:' false
)
#(#ActionButtonSpec
#'name:' 'button3'
- #'layout:' #(#LayoutFrame 216 0 42 0 235 0 60 0)
+ #'layout:' #(#LayoutFrame 217 0 76 0 236 0 94 0)
+ #'isOpaque:' true
#'label:' ''
+ #'foregroundColor:' #(#Color 0.0 0.0 0.0)
+ #'backgroundColor:' #(#Color 66.9993 66.9993 66.9993)
+ #'initiallyInvisible:' false
+ #'tabable:' false
+ #'isDefault:' false
+ #'defaultable:' false
#'model:' #makeOffsetLeft
+ #'hasCharacterOrientedLabel:' true
+ #'isDecorated:' false
+ #'initiallyDisabled:' false
)
#(#ActionButtonSpec
#'name:' 'button4'
- #'layout:' #(#LayoutFrame 216 0 69 0 235 0 87 0)
+ #'layout:' #(#LayoutFrame 217 0 103 0 236 0 121 0)
+ #'isOpaque:' true
#'label:' ''
+ #'foregroundColor:' #(#Color 0.0 0.0 0.0)
+ #'backgroundColor:' #(#Color 66.9993 66.9993 66.9993)
+ #'initiallyInvisible:' false
+ #'tabable:' false
+ #'isDefault:' false
+ #'defaultable:' false
#'model:' #makeOffsetTop
+ #'hasCharacterOrientedLabel:' true
+ #'isDecorated:' false
+ #'initiallyDisabled:' false
)
-
-
- #(#ActionButtonSpec
- #'name:' 'button'
- #'layout:' #(#LayoutFrame 16 0 210 0 76 0 240 0)
- #'label:' 'frame'
- #'model:' #showLayoutFrame
+ #(#ActionButtonSpec
+ #'name:' 'button8'
+ #'layout:' #(#LayoutFrame 119 0 129 0 138 0 147 0)
+ #'isOpaque:' true
+ #'label:' ''
+ #'foregroundColor:' #(#Color 0.0 0.0 0.0)
+ #'backgroundColor:' #(#Color 66.9993 66.9993 66.9993)
+ #'initiallyInvisible:' false
+ #'tabable:' false
+ #'isDefault:' false
+ #'defaultable:' false
+ #'model:' #makeRelativeLeftTop
+ #'hasCharacterOrientedLabel:' true
+ #'isDecorated:' false
+ #'initiallyDisabled:' false
)
- #(#ActionButtonSpec
- #'name:' 'button'
- #'layout:' #(#LayoutFrame 96 0 210 0 156 0 240 0)
- #'label:' 'origin'
- #'model:' #showLayoutOrigin
+ #(#ActionButtonSpec
+ #'name:' 'button9'
+ #'layout:' #(#LayoutFrame 217 0 129 0 236 0 147 0)
+ #'isOpaque:' true
+ #'label:' ''
+ #'foregroundColor:' #(#Color 0.0 0.0 0.0)
+ #'backgroundColor:' #(#Color 66.9993 66.9993 66.9993)
+ #'initiallyInvisible:' false
+ #'tabable:' false
+ #'isDefault:' false
+ #'defaultable:' false
+ #'model:' #makeOffsetLeftTop
+ #'hasCharacterOrientedLabel:' true
+ #'isDecorated:' false
+ #'initiallyDisabled:' false
)
- #(#ActionButtonSpec
- #'name:' 'button'
- #'layout:' #(#LayoutFrame 176 0 210 0 236 0 240 0)
- #'label:' 'align'
- #'model:' #showAlignmentOrigin
- #'initiallyDisabled:' true
+ #(#LabelSpec
+ #'name:' 'label7'
+ #'layout:' #(#LayoutFrame 5 0 129 0 48 0 147 0)
+ #'isOpaque:' true
+ #'label:' 'all'
+ #'foregroundColor:' #(#Color 0.0 0.0 0.0)
+ #'backgroundColor:' #(#Color 66.9993 66.9993 66.9993)
+ #'initiallyInvisible:' false
+ #'level:' 0
+ #'adjust:' #center
+ #'hasCharacterOrientedLabel:' true
)
-
+ #(#LabelSpec
+ #'name:' 'label1'
+ #'layout:' #(#LayoutFrame 5 0 76 0 48 0 94 0)
+ #'isOpaque:' true
+ #'label:' 'left'
+ #'foregroundColor:' #(#Color 0.0 0.0 0.0)
+ #'backgroundColor:' #(#Color 66.9993 66.9993 66.9993)
+ #'initiallyInvisible:' false
+ #'level:' 0
+ #'adjust:' #center
+ #'hasCharacterOrientedLabel:' true
+ )
)
)
)
-
-
-
!
-specificationLayoutFrame
+specificationExtent
+ "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:#specificationLayoutFrame
+ UIPainter new openOnClass:UIPropertyView andSelector:#specificationExtent
+ UIPropertyView new openInterface:#specificationExtent
"
+
<resource: #canvas>
^
-
+
#(#FullSpec
+ #'name:' 'uIPainterView'
+ #'layout:' #(#LayoutFrame 0 0.0 0 0.0 0 1.0 0 1.0)
+ #'isOpaque:' true
#'window:'
#(#WindowSpec
+ #'name:' 'uIPainterView'
#'layout:' #(#LayoutFrame 0 0.0 0 0.0 0 1.0 0 1.0)
+ #'isOpaque:' true
#'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
- #'acceptOnReturn:' true
- #'acceptOnTab:' true
- )
- #(#InputFieldSpec
- #'name:' 'relative E2'
- #'layout:' #(#LayoutFrame 65 0 67 0 113 0 85 0)
- #'model:' #topFraction
- #'type:' #numberOrNil
- #'immediateAccept:' false
- #'acceptOnReturn:' true
- #'acceptOnTab:' true
- )
- #(#InputFieldSpec
- #'name:' 'relative E3'
- #'layout:' #(#LayoutFrame 65 0 95 0 113 0 113 0)
- #'model:' #rightFraction
- #'type:' #numberOrNil
- #'immediateAccept:' false
- #'acceptOnReturn:' true
- #'acceptOnTab:' true
- )
- #(#InputFieldSpec
- #'name:' 'relative E4'
- #'layout:' #(#LayoutFrame 65 0 123 0 113 0 141 0)
- #'model:' #bottomFraction
- #'type:' #numberOrNil
- #'immediateAccept:' false
- #'acceptOnReturn:' true
- #'acceptOnTab:' true
- )
- #(#InputFieldSpec
- #'name:' 'offset E1'
- #'layout:' #(#LayoutFrame 159 0 39 0 210 0 57 0)
- #'model:' #leftOffset
- #'type:' #numberOrNil
- #'immediateAccept:' false
- #'acceptOnReturn:' true
- #'acceptOnTab:' true
- )
- #(#InputFieldSpec
- #'name:' 'offset E2'
- #'layout:' #(#LayoutFrame 159 0 67 0 210 0 85 0)
- #'model:' #topOffset
- #'type:' #numberOrNil
- #'immediateAccept:' false
- #'acceptOnReturn:' true
- #'acceptOnTab:' true
- )
- #(#InputFieldSpec
- #'name:' 'offset E3'
- #'layout:' #(#LayoutFrame 159 0 95 0 210 0 113 0)
- #'model:' #rightOffset
- #'type:' #numberOrNil
- #'immediateAccept:' false
- #'acceptOnReturn:' true
- #'acceptOnTab:' true
- )
- #(#InputFieldSpec
- #'name:' 'offset E4'
- #'layout:' #(#LayoutFrame 159 0 123 0 210 0 141 0)
- #'model:' #bottomOffset
- #'type:' #numberOrNil
- #'immediateAccept:' false
- #'acceptOnReturn:' true
- #'acceptOnTab:' 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:' #showLayoutFrame
- #'initiallyDisabled:' true
- )
- #(#ActionButtonSpec
- #'name:' 'button10'
- #'layout:' #(#LayoutFrame 96 0 210 0 156 0 240 0)
- #'label:' 'origin'
- #'model:' #showLayoutOrigin
- )
- #(#ActionButtonSpec
- #'name:' 'button11'
- #'layout:' #(#LayoutFrame 176 0 210 0 236 0 240 0)
- #'label:' 'align'
- #'model:' #showAlignmentOrigin
- )
-
- )
- )
- )
-
-
-
-!
-
-specificationLayoutOrigin
- "
- UIPainter new openOnClass:self andSelector:#specificationLayoutOrigin
- "
- <resource: #canvas>
-
- ^
-
- #(#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)
+ #'bounds:' #(#Rectangle 0 0 238 303)
)
#'component:'
#(#SpecCollection
@@ -431,184 +400,1171 @@
#(
#(#LabelSpec
#'name:' 'label1'
- #'layout:' #(#LayoutFrame 16 0 42 0 44 0 60 0)
- #'label:' 'left'
+ #'layout:' #(#LayoutFrame 16 0 62 0 79 0 79 0)
+ #'isOpaque:' true
+ #'label:' 'horizontal:'
+ #'foregroundColor:' #(#Color 0.0 0.0 0.0)
+ #'backgroundColor:' #(#Color 66.9993 66.9993 66.9993)
+ #'initiallyInvisible:' false
+ #'level:' 0
+ #'adjust:' #left
+ #'hasCharacterOrientedLabel:' true
)
#(#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'
+ #'layout:' #(#LayoutFrame 16 0 89 0 79 0 107 0)
+ #'isOpaque:' true
+ #'label:' 'vertical:'
+ #'foregroundColor:' #(#Color 0.0 0.0 0.0)
+ #'backgroundColor:' #(#Color 66.9993 66.9993 66.9993)
+ #'initiallyInvisible:' false
+ #'level:' 0
+ #'adjust:' #left
+ #'hasCharacterOrientedLabel:' true
)
#(#InputFieldSpec
#'name:' 'editField1'
+ #'layout:' #(#LayoutFrame 86 0 62 0 179 0 80 0)
+ #'isOpaque:' true
+ #'initiallyDisabled:' false
+ #'initiallyInvisible:' false
+ #'model:' #leftOffset
+ #'isReadOnly:' false
+ #'tabable:' true
#'type:' #numberOrNil
- #'layout:' #(#LayoutFrame 57 0 42 0 114 0 60 0)
- #'model:' #leftFraction
#'immediateAccept:' false
+ #'acceptOnLeave:' true
#'acceptOnReturn:' true
#'acceptOnTab:' true
- #tabable: true
+ #'acceptOnLostFocus:' true
+ #'hasBorder:' false
)
#(#InputFieldSpec
#'name:' 'editField2'
+ #'layout:' #(#LayoutFrame 86 0 89 0 179 0 107 0)
+ #'isOpaque:' true
+ #'initiallyDisabled:' false
+ #'initiallyInvisible:' false
+ #'model:' #rightOffset
+ #'isReadOnly:' false
+ #'tabable:' true
#'type:' #numberOrNil
- #'layout:' #(#LayoutFrame 57 0 69 0 114 0 87 0)
+ #'immediateAccept:' false
+ #'acceptOnLeave:' true
+ #'acceptOnReturn:' true
+ #'acceptOnTab:' true
+ #'acceptOnLostFocus:' true
+ #'hasBorder:' false
+ )
+ #(#LabelSpec
+ #'name:' 'label0'
+ #'layout:' #(#LayoutFrame 16 0 15 0 79 0 32 0)
+ #'isOpaque:' true
+ #'label:' 'Extent:'
+ #'foregroundColor:' #(#Color 0.0 0.0 0.0)
+ #'backgroundColor:' #(#Color 66.9993 66.9993 66.9993)
+ #'initiallyInvisible:' false
+ #'level:' 0
+ #'adjust:' #left
+ #'hasCharacterOrientedLabel:' true
+ )
+ )
+ )
+ )
+!
+
+specificationLayoutFrame
+ "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:UIPropertyView andSelector:#specificationLayoutFrame
+ UIPropertyView new openInterface:#specificationLayoutFrame
+ "
+
+ <resource: #canvas>
+
+ ^
+
+ #(#FullSpec
+ #'name:' 'uIPainterView'
+ #'layout:' #(#LayoutFrame 0 0.0 0 0.0 0 1.0 0 1.0)
+ #'isOpaque:' true
+ #'window:'
+ #(#WindowSpec
+ #'name:' 'uIPainterView'
+ #'layout:' #(#LayoutFrame 0 0.0 0 0.0 0 1.0 0 1.0)
+ #'isOpaque:' true
+ #'label:' 'unnamed'
+ #'bounds:' #(#Rectangle 0 0 238 291)
+ )
+ #'component:'
+ #(#SpecCollection
+ #'collection:'
+ #(
+ #(#LabelSpec
+ #'name:' 'label0'
+ #'layout:' #(#LayoutFrame 5 0 7 0 48 0 30 0)
+ #'isOpaque:' true
+ #'label:' 'Layout:'
+ #'foregroundColor:' #(#Color 0.0 0.0 0.0)
+ #'backgroundColor:' #(#Color 66.9993 66.9993 66.9993)
+ #'initiallyInvisible:' false
+ #'level:' 0
+ #'adjust:' #center
+ #'hasCharacterOrientedLabel:' true
+ )
+ #(#PopUpListSpec
+ #'name:' 'popUpList1'
+ #'layout:' #(#LayoutFrame 58 0.0 7 0 -12 1.0 30 0)
+ #'isOpaque:' true
+ #'label:' 'popup'
+ #'foregroundColor:' #(#Color 0.0 0.0 0.0)
+ #'backgroundColor:' #(#Color 66.9993 66.9993 66.9993)
+ #'initiallyInvisible:' false
+ #'model:' #layoutType
+ #'menu:' #layoutTypeList
+ )
+
+ #(#LabelSpec
+ #'name:' 'label left'
+ #'layout:' #(#LayoutFrame 12 0 79 0 53 0 97 0)
+ #'isOpaque:' true
+ #'label:' 'left'
+ #'foregroundColor:' #(#Color 0.0 0.0 0.0)
+ #'backgroundColor:' #(#Color 66.9993 66.9993 66.9993)
+ #'initiallyInvisible:' false
+ #'level:' 0
+ #'adjust:' #center
+ #'hasCharacterOrientedLabel:' true
+ )
+ #(#LabelSpec
+ #'name:' 'label top'
+ #'layout:' #(#LayoutFrame 12 0 107 0 53 0 125 0)
+ #'isOpaque:' true
+ #'label:' 'top'
+ #'foregroundColor:' #(#Color 0.0 0.0 0.0)
+ #'backgroundColor:' #(#Color 66.9993 66.9993 66.9993)
+ #'initiallyInvisible:' false
+ #'level:' 0
+ #'adjust:' #center
+ #'hasCharacterOrientedLabel:' true
+ )
+ #(#LabelSpec
+ #'name:' 'label right'
+ #'layout:' #(#LayoutFrame 12 0 135 0 53 0 153 0)
+ #'isOpaque:' true
+ #'label:' 'right'
+ #'foregroundColor:' #(#Color 0.0 0.0 0.0)
+ #'backgroundColor:' #(#Color 66.9993 66.9993 66.9993)
+ #'initiallyInvisible:' false
+ #'level:' 0
+ #'adjust:' #center
+ #'hasCharacterOrientedLabel:' true
+ )
+ #(#LabelSpec
+ #'name:' 'label bottom'
+ #'layout:' #(#LayoutFrame 12 0 163 0 53 0 181 0)
+ #'isOpaque:' true
+ #'label:' 'bottom'
+ #'foregroundColor:' #(#Color 0.0 0.0 0.0)
+ #'backgroundColor:' #(#Color 66.9993 66.9993 66.9993)
+ #'initiallyInvisible:' false
+ #'level:' 0
+ #'adjust:' #center
+ #'hasCharacterOrientedLabel:' true
+ )
+ #(#LabelSpec
+ #'name:' 'label relative'
+ #'layout:' #(#LayoutFrame 65 0 50 0 110 0 68 0)
+ #'isOpaque:' true
+ #'label:' 'relative'
+ #'foregroundColor:' #(#Color 0.0 0.0 0.0)
+ #'backgroundColor:' #(#Color 66.9993 66.9993 66.9993)
+ #'initiallyInvisible:' false
+ #'level:' 0
+ #'adjust:' #center
+ #'hasCharacterOrientedLabel:' true
+ )
+ #(#LabelSpec
+ #'name:' 'label offset'
+ #'layout:' #(#LayoutFrame 159 0 50 0 190 0 68 0)
+ #'isOpaque:' true
+ #'label:' 'offset'
+ #'foregroundColor:' #(#Color 0.0 0.0 0.0)
+ #'backgroundColor:' #(#Color 66.9993 66.9993 66.9993)
+ #'initiallyInvisible:' false
+ #'level:' 0
+ #'adjust:' #center
+ #'hasCharacterOrientedLabel:' true
+ )
+ #(#LabelSpec
+ #'name:' 'label all relative'
+ #'layout:' #(#LayoutFrame 12 0 197 0 53 0 215 0)
+ #'isOpaque:' true
+ #'label:' 'all'
+ #'foregroundColor:' #(#Color 0.0 0.0 0.0)
+ #'backgroundColor:' #(#Color 66.9993 66.9993 66.9993)
+ #'initiallyInvisible:' false
+ #'level:' 0
+ #'adjust:' #center
+ #'hasCharacterOrientedLabel:' true
+ )
+ #(#LabelSpec
+ #'name:' 'label all absolute'
+ #'layout:' #(#LayoutFrame 159 0 197 0 210 0 215 0)
+ #'isOpaque:' true
+ #'label:' 'all'
+ #'foregroundColor:' #(#Color 0.0 0.0 0.0)
+ #'backgroundColor:' #(#Color 66.9993 66.9993 66.9993)
+ #'initiallyInvisible:' false
+ #'level:' 0
+ #'adjust:' #center
+ #'hasCharacterOrientedLabel:' true
+ )
+ #(#InputFieldSpec
+ #'name:' 'relative E1'
+ #'layout:' #(#LayoutFrame 65 0 79 0 113 0 97 0)
+ #'isOpaque:' true
+ #'initiallyDisabled:' false
+ #'initiallyInvisible:' false
+ #'model:' #leftFraction
+ #'isReadOnly:' false
+ #'tabable:' false
+ #'type:' #numberOrNil
+ #'immediateAccept:' false
+ #'acceptOnLeave:' true
+ #'acceptOnReturn:' true
+ #'acceptOnTab:' true
+ #'acceptOnLostFocus:' true
+ #'hasBorder:' false
+ )
+ #(#InputFieldSpec
+ #'name:' 'relative E2'
+ #'layout:' #(#LayoutFrame 65 0 107 0 113 0 125 0)
+ #'isOpaque:' true
+ #'initiallyDisabled:' false
+ #'initiallyInvisible:' false
#'model:' #topFraction
+ #'isReadOnly:' false
+ #'tabable:' false
+ #'type:' #numberOrNil
#'immediateAccept:' false
+ #'acceptOnLeave:' true
+ #'acceptOnReturn:' true
+ #'acceptOnTab:' true
+ #'acceptOnLostFocus:' true
+ #'hasBorder:' false
+ )
+ #(#InputFieldSpec
+ #'name:' 'relative E3'
+ #'layout:' #(#LayoutFrame 65 0 135 0 113 0 153 0)
+ #'isOpaque:' true
+ #'initiallyDisabled:' false
+ #'initiallyInvisible:' false
+ #'model:' #rightFraction
+ #'isReadOnly:' false
+ #'tabable:' false
+ #'type:' #numberOrNil
+ #'immediateAccept:' false
+ #'acceptOnLeave:' true
+ #'acceptOnReturn:' true
+ #'acceptOnTab:' true
+ #'acceptOnLostFocus:' true
+ #'hasBorder:' false
+ )
+ #(#InputFieldSpec
+ #'name:' 'relative E4'
+ #'layout:' #(#LayoutFrame 65 0 163 0 113 0 181 0)
+ #'isOpaque:' true
+ #'initiallyDisabled:' false
+ #'initiallyInvisible:' false
+ #'model:' #bottomFraction
+ #'isReadOnly:' false
+ #'tabable:' false
+ #'type:' #numberOrNil
+ #'immediateAccept:' false
+ #'acceptOnLeave:' true
+ #'acceptOnReturn:' true
+ #'acceptOnTab:' true
+ #'acceptOnLostFocus:' true
+ #'hasBorder:' false
+ )
+ #(#InputFieldSpec
+ #'name:' 'offset E1'
+ #'layout:' #(#LayoutFrame 159 0 79 0 210 0 97 0)
+ #'isOpaque:' true
+ #'initiallyDisabled:' false
+ #'initiallyInvisible:' false
+ #'model:' #leftOffset
+ #'isReadOnly:' false
+ #'tabable:' false
+ #'type:' #numberOrNil
+ #'immediateAccept:' false
+ #'acceptOnLeave:' true
+ #'acceptOnReturn:' true
+ #'acceptOnTab:' true
+ #'acceptOnLostFocus:' true
+ #'hasBorder:' false
+ )
+ #(#InputFieldSpec
+ #'name:' 'offset E2'
+ #'layout:' #(#LayoutFrame 159 0 107 0 210 0 125 0)
+ #'isOpaque:' true
+ #'initiallyDisabled:' false
+ #'initiallyInvisible:' false
+ #'model:' #topOffset
+ #'isReadOnly:' false
+ #'tabable:' false
+ #'type:' #numberOrNil
+ #'immediateAccept:' false
+ #'acceptOnLeave:' true
+ #'acceptOnReturn:' true
+ #'acceptOnTab:' true
+ #'acceptOnLostFocus:' true
+ #'hasBorder:' false
+ )
+ #(#InputFieldSpec
+ #'name:' 'offset E3'
+ #'layout:' #(#LayoutFrame 159 0 135 0 210 0 153 0)
+ #'isOpaque:' true
+ #'initiallyDisabled:' false
+ #'initiallyInvisible:' false
+ #'model:' #rightOffset
+ #'isReadOnly:' false
+ #'tabable:' false
+ #'type:' #numberOrNil
+ #'immediateAccept:' false
+ #'acceptOnLeave:' true
#'acceptOnReturn:' true
#'acceptOnTab:' true
- #tabable: true
+ #'acceptOnLostFocus:' true
+ #'hasBorder:' false
+ )
+ #(#InputFieldSpec
+ #'name:' 'offset E4'
+ #'layout:' #(#LayoutFrame 159 0 163 0 210 0 181 0)
+ #'isOpaque:' true
+ #'initiallyDisabled:' false
+ #'initiallyInvisible:' false
+ #'model:' #bottomOffset
+ #'isReadOnly:' false
+ #'tabable:' false
+ #'type:' #numberOrNil
+ #'immediateAccept:' false
+ #'acceptOnLeave:' true
+ #'acceptOnReturn:' true
+ #'acceptOnTab:' true
+ #'acceptOnLostFocus:' true
+ #'hasBorder:' false
+ )
+ #(#ActionButtonSpec
+ #'name:' 'relative B1'
+ #'layout:' #(#LayoutFrame 117 0 79 0 136 0 97 0)
+ #'isOpaque:' true
+ #'label:' ' '
+ #'foregroundColor:' #(#Color 0.0 0.0 0.0)
+ #'backgroundColor:' #(#Color 66.9993 66.9993 66.9993)
+ #'initiallyInvisible:' false
+ #'tabable:' false
+ #'isDefault:' false
+ #'defaultable:' false
+ #'model:' #makeRelativeLeft
+ #'hasCharacterOrientedLabel:' true
+ #'isDecorated:' false
+ #'initiallyDisabled:' false
+ )
+ #(#ActionButtonSpec
+ #'name:' 'relative B2'
+ #'layout:' #(#LayoutFrame 117 0 107 0 136 0 125 0)
+ #'isOpaque:' true
+ #'label:' ' '
+ #'foregroundColor:' #(#Color 0.0 0.0 0.0)
+ #'backgroundColor:' #(#Color 66.9993 66.9993 66.9993)
+ #'initiallyInvisible:' false
+ #'tabable:' false
+ #'isDefault:' false
+ #'defaultable:' false
+ #'model:' #makeRelativeTop
+ #'hasCharacterOrientedLabel:' true
+ #'isDecorated:' false
+ #'initiallyDisabled:' false
+ )
+ #(#ActionButtonSpec
+ #'name:' 'relative B3'
+ #'layout:' #(#LayoutFrame 117 0 135 0 136 0 153 0)
+ #'isOpaque:' true
+ #'label:' ' '
+ #'foregroundColor:' #(#Color 0.0 0.0 0.0)
+ #'backgroundColor:' #(#Color 66.9993 66.9993 66.9993)
+ #'initiallyInvisible:' false
+ #'tabable:' false
+ #'isDefault:' false
+ #'defaultable:' false
+ #'model:' #makeRelativeRight
+ #'hasCharacterOrientedLabel:' true
+ #'isDecorated:' false
+ #'initiallyDisabled:' false
+ )
+ #(#ActionButtonSpec
+ #'name:' 'relative B4'
+ #'layout:' #(#LayoutFrame 117 0 163 0 136 0 181 0)
+ #'isOpaque:' true
+ #'label:' ' '
+ #'foregroundColor:' #(#Color 0.0 0.0 0.0)
+ #'backgroundColor:' #(#Color 66.9993 66.9993 66.9993)
+ #'initiallyInvisible:' false
+ #'tabable:' false
+ #'isDefault:' false
+ #'defaultable:' false
+ #'model:' #makeRelativeBottom
+ #'hasCharacterOrientedLabel:' true
+ #'isDecorated:' false
+ #'initiallyDisabled:' false
+ )
+ #(#ActionButtonSpec
+ #'name:' 'relative BAll'
+ #'layout:' #(#LayoutFrame 117 0 197 0 136 0 215 0)
+ #'isOpaque:' true
+ #'label:' ' '
+ #'foregroundColor:' #(#Color 0.0 0.0 0.0)
+ #'backgroundColor:' #(#Color 66.9993 66.9993 66.9993)
+ #'initiallyInvisible:' false
+ #'tabable:' false
+ #'isDefault:' false
+ #'defaultable:' false
+ #'model:' #makeRelativeAll
+ #'hasCharacterOrientedLabel:' true
+ #'isDecorated:' false
+ #'initiallyDisabled:' false
+ )
+ #(#ActionButtonSpec
+ #'name:' 'offset B1'
+ #'layout:' #(#LayoutFrame 214 0 79 0 233 0 97 0)
+ #'isOpaque:' true
+ #'label:' ''
+ #'foregroundColor:' #(#Color 0.0 0.0 0.0)
+ #'backgroundColor:' #(#Color 66.9993 66.9993 66.9993)
+ #'initiallyInvisible:' false
+ #'tabable:' false
+ #'isDefault:' false
+ #'defaultable:' false
+ #'model:' #makeOffsetLeft
+ #'hasCharacterOrientedLabel:' true
+ #'isDecorated:' false
+ #'initiallyDisabled:' false
+ )
+ #(#ActionButtonSpec
+ #'name:' 'offset B2'
+ #'layout:' #(#LayoutFrame 214 0 107 0 233 0 125 0)
+ #'isOpaque:' true
+ #'label:' ''
+ #'foregroundColor:' #(#Color 0.0 0.0 0.0)
+ #'backgroundColor:' #(#Color 66.9993 66.9993 66.9993)
+ #'initiallyInvisible:' false
+ #'tabable:' false
+ #'isDefault:' false
+ #'defaultable:' false
+ #'model:' #makeOffsetTop
+ #'hasCharacterOrientedLabel:' true
+ #'isDecorated:' false
+ #'initiallyDisabled:' false
+ )
+ #(#ActionButtonSpec
+ #'name:' 'offset B3'
+ #'layout:' #(#LayoutFrame 214 0 135 0 233 0 153 0)
+ #'isOpaque:' true
+ #'label:' ''
+ #'foregroundColor:' #(#Color 0.0 0.0 0.0)
+ #'backgroundColor:' #(#Color 66.9993 66.9993 66.9993)
+ #'initiallyInvisible:' false
+ #'tabable:' false
+ #'isDefault:' false
+ #'defaultable:' false
+ #'model:' #makeOffsetRight
+ #'hasCharacterOrientedLabel:' true
+ #'isDecorated:' false
+ #'initiallyDisabled:' false
+ )
+ #(#ActionButtonSpec
+ #'name:' 'offset B4'
+ #'layout:' #(#LayoutFrame 214 0 163 0 233 0 181 0)
+ #'isOpaque:' true
+ #'label:' ''
+ #'foregroundColor:' #(#Color 0.0 0.0 0.0)
+ #'backgroundColor:' #(#Color 66.9993 66.9993 66.9993)
+ #'initiallyInvisible:' false
+ #'tabable:' false
+ #'isDefault:' false
+ #'defaultable:' false
+ #'model:' #makeOffsetBottom
+ #'hasCharacterOrientedLabel:' true
+ #'isDecorated:' false
+ #'initiallyDisabled:' false
+ )
+ #(#ActionButtonSpec
+ #'name:' 'offset BAll'
+ #'layout:' #(#LayoutFrame 214 0 197 0 233 0 215 0)
+ #'isOpaque:' true
+ #'label:' ' '
+ #'foregroundColor:' #(#Color 0.0 0.0 0.0)
+ #'backgroundColor:' #(#Color 66.9993 66.9993 66.9993)
+ #'initiallyInvisible:' false
+ #'tabable:' false
+ #'isDefault:' false
+ #'defaultable:' false
+ #'model:' #makeOffsetAll
+ #'hasCharacterOrientedLabel:' true
+ #'isDecorated:' false
+ #'initiallyDisabled:' false
+ )
+ )
+ )
+ )
+!
+
+specificationLayoutOrigin
+ "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:UIPropertyView andSelector:#specificationLayoutOrigin
+ UIPropertyView new openInterface:#specificationLayoutOrigin
+ "
+
+ <resource: #canvas>
+
+ ^
+
+ #(#FullSpec
+ #'name:' 'uIPainterView'
+ #'layout:' #(#LayoutFrame 0 0.0 0 0.0 0 1.0 0 1.0)
+ #'isOpaque:' true
+ #'window:'
+ #(#WindowSpec
+ #'name:' 'uIPainterView'
+ #'layout:' #(#LayoutFrame 0 0.0 0 0.0 0 1.0 0 1.0)
+ #'isOpaque:' true
+ #'label:' 'unnamed'
+ #'bounds:' #(#Rectangle 0 0 238 303)
+ )
+ #'component:'
+ #(#SpecCollection
+ #'collection:'
+ #(
+ #(#LabelSpec
+ #'name:' 'label0'
+ #'layout:' #(#LayoutFrame 5 0 7 0 48 0 30 0)
+ #'isOpaque:' true
+ #'label:' 'Layout:'
+ #'foregroundColor:' #(#Color 0.0 0.0 0.0)
+ #'backgroundColor:' #(#Color 66.9993 66.9993 66.9993)
+ #'initiallyInvisible:' false
+ #'level:' 0
+ #'adjust:' #center
+ #'hasCharacterOrientedLabel:' true
+ )
+ #(#PopUpListSpec
+ #'name:' 'popUpList1'
+ #'layout:' #(#LayoutFrame 58 0.0 7 0 -12 1.0 30 0)
+ #'isOpaque:' true
+ #'label:' 'popup'
+ #'foregroundColor:' #(#Color 0.0 0.0 0.0)
+ #'backgroundColor:' #(#Color 66.9993 66.9993 66.9993)
+ #'initiallyInvisible:' false
+ #'model:' #layoutType
+ #'menu:' #layoutTypeList
+ )
+
+ #(#LabelSpec
+ #'name:' 'label1'
+ #'layout:' #(#LayoutFrame 16 0 82 0 44 0 100 0)
+ #'isOpaque:' true
+ #'label:' 'left'
+ #'foregroundColor:' #(#Color 0.0 0.0 0.0)
+ #'backgroundColor:' #(#Color 66.9993 66.9993 66.9993)
+ #'initiallyInvisible:' false
+ #'level:' 0
+ #'adjust:' #center
+ #'hasCharacterOrientedLabel:' true
+ )
+ #(#LabelSpec
+ #'name:' 'label2'
+ #'layout:' #(#LayoutFrame 16 0 109 0 44 0 127 0)
+ #'isOpaque:' true
+ #'label:' 'top'
+ #'foregroundColor:' #(#Color 0.0 0.0 0.0)
+ #'backgroundColor:' #(#Color 66.9993 66.9993 66.9993)
+ #'initiallyInvisible:' false
+ #'level:' 0
+ #'adjust:' #center
+ #'hasCharacterOrientedLabel:' true
+ )
+ #(#LabelSpec
+ #'name:' 'label3'
+ #'layout:' #(#LayoutFrame 57 0 50 0 103 0 67 0)
+ #'isOpaque:' true
+ #'label:' 'relative'
+ #'foregroundColor:' #(#Color 0.0 0.0 0.0)
+ #'backgroundColor:' #(#Color 66.9993 66.9993 66.9993)
+ #'initiallyInvisible:' false
+ #'level:' 0
+ #'adjust:' #center
+ #'hasCharacterOrientedLabel:' true
+ )
+ #(#LabelSpec
+ #'name:' 'label4'
+ #'layout:' #(#LayoutFrame 154 0 51 0 190 0 68 0)
+ #'isOpaque:' true
+ #'label:' 'offset'
+ #'foregroundColor:' #(#Color 0.0 0.0 0.0)
+ #'backgroundColor:' #(#Color 66.9993 66.9993 66.9993)
+ #'initiallyInvisible:' false
+ #'level:' 0
+ #'adjust:' #center
+ #'hasCharacterOrientedLabel:' true
+ )
+ #(#InputFieldSpec
+ #'name:' 'editField1'
+ #'layout:' #(#LayoutFrame 57 0 82 0 114 0 100 0)
+ #'isOpaque:' true
+ #'initiallyDisabled:' false
+ #'initiallyInvisible:' false
+ #'model:' #leftFraction
+ #'isReadOnly:' false
+ #'tabable:' true
+ #'type:' #numberOrNil
+ #'immediateAccept:' false
+ #'acceptOnLeave:' true
+ #'acceptOnReturn:' true
+ #'acceptOnTab:' true
+ #'acceptOnLostFocus:' true
+ #'hasBorder:' false
+ )
+ #(#InputFieldSpec
+ #'name:' 'editField2'
+ #'layout:' #(#LayoutFrame 57 0 109 0 114 0 127 0)
+ #'isOpaque:' true
+ #'initiallyDisabled:' false
+ #'initiallyInvisible:' false
+ #'model:' #topFraction
+ #'isReadOnly:' false
+ #'tabable:' true
+ #'type:' #numberOrNil
+ #'immediateAccept:' false
+ #'acceptOnLeave:' true
+ #'acceptOnReturn:' true
+ #'acceptOnTab:' true
+ #'acceptOnLostFocus:' true
+ #'hasBorder:' false
)
#(#InputFieldSpec
#'name:' 'editField3'
+ #'layout:' #(#LayoutFrame 154 0 82 0 212 0 100 0)
+ #'isOpaque:' true
+ #'initiallyDisabled:' false
+ #'initiallyInvisible:' false
+ #'model:' #leftOffset
+ #'isReadOnly:' false
+ #'tabable:' true
#'type:' #numberOrNil
- #'layout:' #(#LayoutFrame 154 0 42 0 212 0 60 0)
- #'model:' #leftOffset
#'immediateAccept:' false
+ #'acceptOnLeave:' true
#'acceptOnReturn:' true
#'acceptOnTab:' true
- #tabable: true
+ #'acceptOnLostFocus:' true
+ #'hasBorder:' false
)
#(#InputFieldSpec
#'name:' 'editField4'
+ #'layout:' #(#LayoutFrame 154 0 109 0 212 0 127 0)
+ #'isOpaque:' true
+ #'initiallyDisabled:' false
+ #'initiallyInvisible:' false
+ #'model:' #topOffset
+ #'isReadOnly:' false
+ #'tabable:' true
#'type:' #numberOrNil
- #'layout:' #(#LayoutFrame 154 0 69 0 212 0 87 0)
- #'model:' #topOffset
#'immediateAccept:' false
+ #'acceptOnLeave:' true
#'acceptOnReturn:' true
#'acceptOnTab:' true
- #tabable: true
+ #'acceptOnLostFocus:' true
+ #'hasBorder:' false
)
#(#ActionButtonSpec
#'name:' 'button1'
- #'layout:' #(#LayoutFrame 119 0 42 0 138 0 60 0)
+ #'layout:' #(#LayoutFrame 119 0 82 0 138 0 100 0)
+ #'isOpaque:' true
#'label:' ''
+ #'foregroundColor:' #(#Color 0.0 0.0 0.0)
+ #'backgroundColor:' #(#Color 66.9993 66.9993 66.9993)
+ #'initiallyInvisible:' false
+ #'tabable:' false
+ #'isDefault:' false
+ #'defaultable:' false
#'model:' #makeRelativeLeft
+ #'hasCharacterOrientedLabel:' true
+ #'isDecorated:' false
+ #'initiallyDisabled:' false
)
#(#ActionButtonSpec
#'name:' 'button2'
- #'layout:' #(#LayoutFrame 119 0 69 0 138 0 87 0)
+ #'layout:' #(#LayoutFrame 119 0 109 0 138 0 127 0)
+ #'isOpaque:' true
#'label:' ''
+ #'foregroundColor:' #(#Color 0.0 0.0 0.0)
+ #'backgroundColor:' #(#Color 66.9993 66.9993 66.9993)
+ #'initiallyInvisible:' false
+ #'tabable:' false
+ #'isDefault:' false
+ #'defaultable:' false
#'model:' #makeRelativeTop
+ #'hasCharacterOrientedLabel:' true
+ #'isDecorated:' false
+ #'initiallyDisabled:' false
)
#(#ActionButtonSpec
#'name:' 'button3'
- #'layout:' #(#LayoutFrame 216 0 42 0 235 0 60 0)
+ #'layout:' #(#LayoutFrame 216 0 82 0 235 0 100 0)
+ #'isOpaque:' true
#'label:' ''
+ #'foregroundColor:' #(#Color 0.0 0.0 0.0)
+ #'backgroundColor:' #(#Color 66.9993 66.9993 66.9993)
+ #'initiallyInvisible:' false
+ #'tabable:' false
+ #'isDefault:' false
+ #'defaultable:' false
#'model:' #makeOffsetLeft
+ #'hasCharacterOrientedLabel:' true
+ #'isDecorated:' false
+ #'initiallyDisabled:' false
)
#(#ActionButtonSpec
#'name:' 'button4'
- #'layout:' #(#LayoutFrame 216 0 69 0 235 0 87 0)
+ #'layout:' #(#LayoutFrame 216 0 109 0 235 0 127 0)
+ #'isOpaque:' true
#'label:' ''
+ #'foregroundColor:' #(#Color 0.0 0.0 0.0)
+ #'backgroundColor:' #(#Color 66.9993 66.9993 66.9993)
+ #'initiallyInvisible:' false
+ #'tabable:' false
+ #'isDefault:' false
+ #'defaultable:' false
#'model:' #makeOffsetTop
+ #'hasCharacterOrientedLabel:' true
+ #'isDecorated:' false
+ #'initiallyDisabled:' false
)
-
-
- #(#ActionButtonSpec
- #'name:' 'button'
- #'layout:' #(#LayoutFrame 16 0 210 0 76 0 240 0)
- #'label:' 'frame'
- #'model:' #showLayoutFrame
+ #(#ActionButtonSpec
+ #'name:' 'button8'
+ #'layout:' #(#LayoutFrame 119 0 135 0 138 0 153 0)
+ #'isOpaque:' true
+ #'label:' ''
+ #'foregroundColor:' #(#Color 0.0 0.0 0.0)
+ #'backgroundColor:' #(#Color 66.9993 66.9993 66.9993)
+ #'initiallyInvisible:' false
+ #'tabable:' false
+ #'isDefault:' false
+ #'defaultable:' false
+ #'model:' #makeRelativeLeftTop
+ #'hasCharacterOrientedLabel:' true
+ #'isDecorated:' false
+ #'initiallyDisabled:' false
+ )
+ #(#ActionButtonSpec
+ #'name:' 'button9'
+ #'layout:' #(#LayoutFrame 216 0 135 0 235 0 153 0)
+ #'isOpaque:' true
+ #'label:' ''
+ #'foregroundColor:' #(#Color 0.0 0.0 0.0)
+ #'backgroundColor:' #(#Color 66.9993 66.9993 66.9993)
+ #'initiallyInvisible:' false
+ #'tabable:' false
+ #'isDefault:' false
+ #'defaultable:' false
+ #'model:' #makeOffsetLeftTop
+ #'hasCharacterOrientedLabel:' true
+ #'isDecorated:' false
+ #'initiallyDisabled:' false
+ )
+ #(#LabelSpec
+ #'name:' 'label5'
+ #'layout:' #(#LayoutFrame 16 0 135 0 44 0 153 0)
+ #'isOpaque:' true
+ #'label:' 'all'
+ #'foregroundColor:' #(#Color 0.0 0.0 0.0)
+ #'backgroundColor:' #(#Color 66.9993 66.9993 66.9993)
+ #'initiallyInvisible:' false
+ #'level:' 0
+ #'adjust:' #center
+ #'hasCharacterOrientedLabel:' true
)
- #(#ActionButtonSpec
- #'name:' 'button'
- #'layout:' #(#LayoutFrame 96 0 210 0 156 0 240 0)
- #'label:' 'origin'
- #'model:' #showLayoutOrigin
- #'initiallyDisabled:' true
+ )
+ )
+ )
+!
+
+specificationPoint
+ "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:UIPropertyView andSelector:#specificationPoint
+ UIPropertyView new openInterface:#specificationPoint
+ "
+
+ <resource: #canvas>
+
+ ^
+
+ #(#FullSpec
+ #'name:' 'uIPainterView'
+ #'layout:' #(#LayoutFrame 0 0.0 0 0.0 0 1.0 0 1.0)
+ #'isOpaque:' true
+ #'window:'
+ #(#WindowSpec
+ #'name:' 'uIPainterView'
+ #'layout:' #(#LayoutFrame 0 0.0 0 0.0 0 1.0 0 1.0)
+ #'isOpaque:' true
+ #'label:' 'unnamed'
+ #'bounds:' #(#Rectangle 0 0 238 303)
+ )
+ #'component:'
+ #(#SpecCollection
+ #'collection:'
+ #(
+ #(#LabelSpec
+ #'name:' 'label0'
+ #'layout:' #(#LayoutFrame 16 0 7 0 67 0 30 0)
+ #'isOpaque:' true
+ #'label:' 'Layout:'
+ #'foregroundColor:' #(#Color 0.0 0.0 0.0)
+ #'backgroundColor:' #(#Color 66.9993 66.9993 66.9993)
+ #'initiallyInvisible:' false
+ #'level:' 0
+ #'adjust:' #center
+ #'hasCharacterOrientedLabel:' true
+ )
+ #(#PopUpListSpec
+ #'name:' 'popUpList1'
+ #'layout:' #(#LayoutFrame 77 0.0 7 0 -68 1.0 30 0)
+ #'isOpaque:' true
+ #'label:' 'popup'
+ #'foregroundColor:' #(#Color 0.0 0.0 0.0)
+ #'backgroundColor:' #(#Color 66.9993 66.9993 66.9993)
+ #'initiallyInvisible:' false
+ #'model:' #layoutType
+ #'menu:' #layoutTypeList
)
- #(#ActionButtonSpec
- #'name:' 'button'
- #'layout:' #(#LayoutFrame 176 0 210 0 236 0 240 0)
- #'label:' 'align'
- #'model:' #showAlignmentOrigin
+ #(#LabelSpec
+ #'name:' 'label1'
+ #'layout:' #(#LayoutFrame 16 0 62 0 67 0 79 0)
+ #'isOpaque:' true
+ #'label:' 'origin x:'
+ #'foregroundColor:' #(#Color 0.0 0.0 0.0)
+ #'backgroundColor:' #(#Color 66.9993 66.9993 66.9993)
+ #'initiallyInvisible:' false
+ #'level:' 0
+ #'adjust:' #center
+ #'hasCharacterOrientedLabel:' true
+ )
+ #(#LabelSpec
+ #'name:' 'label2'
+ #'layout:' #(#LayoutFrame 16 0 89 0 67 0 107 0)
+ #'isOpaque:' true
+ #'label:' 'origin y:'
+ #'foregroundColor:' #(#Color 0.0 0.0 0.0)
+ #'backgroundColor:' #(#Color 66.9993 66.9993 66.9993)
+ #'initiallyInvisible:' false
+ #'level:' 0
+ #'adjust:' #center
+ #'hasCharacterOrientedLabel:' true
)
-
+ #(#InputFieldSpec
+ #'name:' 'editField1'
+ #'layout:' #(#LayoutFrame 77 0 62 0 170 0 80 0)
+ #'isOpaque:' true
+ #'initiallyDisabled:' false
+ #'initiallyInvisible:' false
+ #'model:' #leftOffset
+ #'isReadOnly:' false
+ #'tabable:' true
+ #'type:' #numberOrNil
+ #'immediateAccept:' false
+ #'acceptOnLeave:' true
+ #'acceptOnReturn:' true
+ #'acceptOnTab:' true
+ #'acceptOnLostFocus:' true
+ #'hasBorder:' false
+ )
+ #(#InputFieldSpec
+ #'name:' 'editField2'
+ #'layout:' #(#LayoutFrame 77 0 89 0 170 0 107 0)
+ #'isOpaque:' true
+ #'initiallyDisabled:' false
+ #'initiallyInvisible:' false
+ #'model:' #topOffset
+ #'isReadOnly:' false
+ #'tabable:' true
+ #'type:' #numberOrNil
+ #'immediateAccept:' false
+ #'acceptOnLeave:' true
+ #'acceptOnReturn:' true
+ #'acceptOnTab:' true
+ #'acceptOnLostFocus:' true
+ #'hasBorder:' false
+ )
)
)
)
+!
+specificationRectangle
+ "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:UIPropertyView andSelector:#specificationRectangle
+ UIPropertyView new openInterface:#specificationRectangle
+ "
+
+ <resource: #canvas>
-
+ ^
+
+ #(#FullSpec
+ #'name:' 'uIPainterView'
+ #'layout:' #(#LayoutFrame 0 0.0 0 0.0 0 1.0 0 1.0)
+ #'isOpaque:' true
+ #'window:'
+ #(#WindowSpec
+ #'name:' 'uIPainterView'
+ #'layout:' #(#LayoutFrame 0 0.0 0 0.0 0 1.0 0 1.0)
+ #'isOpaque:' true
+ #'label:' 'unnamed'
+ #'bounds:' #(#Rectangle 0 0 238 303)
+ )
+ #'component:'
+ #(#SpecCollection
+ #'collection:'
+ #(
+ #(#LabelSpec
+ #'name:' 'label0'
+ #'layout:' #(#LayoutFrame 16 0 7 0 67 0 30 0)
+ #'isOpaque:' true
+ #'label:' 'Layout:'
+ #'foregroundColor:' #(#Color 0.0 0.0 0.0)
+ #'backgroundColor:' #(#Color 66.9993 66.9993 66.9993)
+ #'initiallyInvisible:' false
+ #'level:' 0
+ #'adjust:' #center
+ #'hasCharacterOrientedLabel:' true
+ )
+ #(#PopUpListSpec
+ #'name:' 'popUpList1'
+ #'layout:' #(#LayoutFrame 77 0.0 7 0 -83 1.0 30 0)
+ #'isOpaque:' true
+ #'label:' 'popup'
+ #'foregroundColor:' #(#Color 0.0 0.0 0.0)
+ #'backgroundColor:' #(#Color 66.9993 66.9993 66.9993)
+ #'initiallyInvisible:' false
+ #'model:' #layoutType
+ #'menu:' #layoutTypeList
+ )
+ #(#LabelSpec
+ #'name:' 'label1'
+ #'layout:' #(#LayoutFrame 16 0 62 0 74 0 80 0)
+ #'isOpaque:' true
+ #'label:' 'origin x:'
+ #'foregroundColor:' #(#Color 0.0 0.0 0.0)
+ #'backgroundColor:' #(#Color 66.9993 66.9993 66.9993)
+ #'initiallyInvisible:' false
+ #'level:' 0
+ #'adjust:' #left
+ #'hasCharacterOrientedLabel:' true
+ )
+ #(#LabelSpec
+ #'name:' 'label2'
+ #'layout:' #(#LayoutFrame 16 0 89 0 74 0 107 0)
+ #'isOpaque:' true
+ #'label:' 'origin y:'
+ #'foregroundColor:' #(#Color 0.0 0.0 0.0)
+ #'backgroundColor:' #(#Color 66.9993 66.9993 66.9993)
+ #'initiallyInvisible:' false
+ #'level:' 0
+ #'adjust:' #left
+ #'hasCharacterOrientedLabel:' true
+ )
+ #(#InputFieldSpec
+ #'name:' 'editField1'
+ #'layout:' #(#LayoutFrame 81 0 62 0 174 0 80 0)
+ #'isOpaque:' true
+ #'initiallyDisabled:' false
+ #'initiallyInvisible:' false
+ #'model:' #leftOffset
+ #'isReadOnly:' false
+ #'tabable:' true
+ #'type:' #numberOrNil
+ #'immediateAccept:' false
+ #'acceptOnLeave:' true
+ #'acceptOnReturn:' true
+ #'acceptOnTab:' true
+ #'acceptOnLostFocus:' true
+ #'hasBorder:' false
+ )
+ #(#InputFieldSpec
+ #'name:' 'editField2'
+ #'layout:' #(#LayoutFrame 81 0 89 0 174 0 107 0)
+ #'isOpaque:' true
+ #'initiallyDisabled:' false
+ #'initiallyInvisible:' false
+ #'model:' #topOffset
+ #'isReadOnly:' false
+ #'tabable:' true
+ #'type:' #numberOrNil
+ #'immediateAccept:' false
+ #'acceptOnLeave:' true
+ #'acceptOnReturn:' true
+ #'acceptOnTab:' true
+ #'acceptOnLostFocus:' true
+ #'hasBorder:' false
+ )
+ #(#LabelSpec
+ #'name:' 'label4'
+ #'layout:' #(#LayoutFrame 16 0 117 0 74 0 135 0)
+ #'isOpaque:' true
+ #'label:' 'corner x:'
+ #'foregroundColor:' #(#Color 0.0 0.0 0.0)
+ #'backgroundColor:' #(#Color 66.9993 66.9993 66.9993)
+ #'initiallyInvisible:' false
+ #'level:' 0
+ #'adjust:' #left
+ #'hasCharacterOrientedLabel:' true
+ )
+ #(#LabelSpec
+ #'name:' 'label5'
+ #'layout:' #(#LayoutFrame 16 0 144 0 74 0 162 0)
+ #'isOpaque:' true
+ #'label:' 'corner y:'
+ #'foregroundColor:' #(#Color 0.0 0.0 0.0)
+ #'backgroundColor:' #(#Color 66.9993 66.9993 66.9993)
+ #'initiallyInvisible:' false
+ #'level:' 0
+ #'adjust:' #left
+ #'hasCharacterOrientedLabel:' true
+ )
+ #(#InputFieldSpec
+ #'name:' 'editField3'
+ #'layout:' #(#LayoutFrame 81 0 117 0 174 0 135 0)
+ #'isOpaque:' true
+ #'initiallyDisabled:' false
+ #'initiallyInvisible:' false
+ #'model:' #rightOffset
+ #'isReadOnly:' false
+ #'tabable:' true
+ #'type:' #numberOrNil
+ #'immediateAccept:' false
+ #'acceptOnLeave:' true
+ #'acceptOnReturn:' true
+ #'acceptOnTab:' true
+ #'acceptOnLostFocus:' true
+ #'hasBorder:' false
+ )
+ #(#InputFieldSpec
+ #'name:' 'editField4'
+ #'layout:' #(#LayoutFrame 81 0 144 0 174 0 162 0)
+ #'isOpaque:' true
+ #'initiallyDisabled:' false
+ #'initiallyInvisible:' false
+ #'model:' #bottomOffset
+ #'isReadOnly:' false
+ #'tabable:' true
+ #'type:' #numberOrNil
+ #'immediateAccept:' false
+ #'acceptOnLeave:' true
+ #'acceptOnReturn:' true
+ #'acceptOnTab:' true
+ #'acceptOnLostFocus:' true
+ #'hasBorder:' false
+ )
+ )
+ )
+ )
! !
-!UIPropertyView methodsFor:'accessing'!
+!UIPropertyView methodsFor:'event handling'!
-update:something
- |slices list view prevSpecClass|
+builderViewChanged:what
+ "something changed in the builder view
+ "
+ |slices list prevSpecClass|
- (something == #selection or:[something == #tree]) ifFalse:[
- (something == #layout and:[modified not and:[self isLayoutSpec]]) ifTrue:[
- self layoutRead.
+ (what == #selection or:[what == #tree]) ifFalse:[
+ (what == #layout and:[modified not and:[self isLayoutSpec]]) ifTrue:[
+ modified := true.
+ self perform:(('fetch', layoutType asString) asSymbol).
+ modified := false.
].
^ self
].
-
- view := builderView singleSelection.
-
+ currentView := builderView singleSelection.
propertyAspects := nil.
- currentView := view.
- self modified:false.
-
currentView isNil ifTrue:[
- "/ the workView itself.
-
propertyList selectionIndex:nil.
currentSpecChannel := nil.
-
propertyList list:#().
propertySpecs := nil.
"/ must setup for a WindowSpec (to allow entry of min- maxSize etc).
-"/ propertyList list:#('Basics' 'Detail').
- ^ self
+"/ propertyList list:#('Basics' 'Detail').
+ ^ self modified:false.
].
- prevSpecClass := specBeingEdited class.
-
+ prevSpecClass := specBeingEdited class.
specBeingEdited := (builderView generateSpecFor:currentView) first.
- (specBeingEdited class ~~ prevSpecClass
- or:[currentSpecChannel isNil]) ifTrue:[
- propertyList selectionIndex:nil.
- propertyAspects := IdentityDictionary new.
- propertySpecs := OrderedCollection new.
- slices := currentView specClass slices.
+ ( (specBeingEdited class == prevSpecClass)
+ and:[currentSpecChannel notNil]
+ ) ifTrue:[
+ "can keep current specifications plus current property selection
+ "
+ self reload.
+ ^ self.
+ ].
- list := slices collect:[:slice|
- propertySpecs add:(slice last).
- slice first asString
- ].
+ propertyList selectionIndex:nil.
+ propertyAspects := IdentityDictionary new.
+ propertySpecs := OrderedCollection new.
+ slices := currentView specClass slices.
- list := list, (Array with:(self class titleOfLayoutMenu)).
+ list := slices collect:[:slice|
+ propertySpecs add:(slice last).
+ slice first asString
+ ].
+ list := list, (Array with:(self class titleOfLayoutMenu)).
- currentSpecChannel := specBeingEdited asValue.
- specBeingEdited class addBindingsTo:propertyAspects
- for:specBeingEdited
- channel:currentSpecChannel.
- propertyAspects do:[:anAspect | anAspect addDependent:self ].
- propertyList list:list.
- propertyList selection:userSelectedProperty.
- ] ifFalse:[
- currentSpecChannel value:specBeingEdited
- ]
+ currentSpecChannel := specBeingEdited asValue.
+ specBeingEdited class addBindingsTo:propertyAspects
+ for:specBeingEdited
+ channel:currentSpecChannel.
+ propertyAspects do:[:anAspect | anAspect addDependent:self ].
+ propertyList list:list.
+ propertyList selection:userSelectedProperty.
+ self modified:false.
-! !
-!UIPropertyView methodsFor:'change & update'!
+!
modified:aState
"change state of modification flag
@@ -625,11 +1581,12 @@
!
propertySelectionChanged
- "called when the property selection changed
+ "property selection changed; switch to new property selection
"
|spec index sel|
sel := propertyList selection.
+ self modified:false.
(currentView isNil or:[sel isNil]) ifTrue:[
"/ must setup for a WindowSpec for workView (to allow entry of min- maxSize etc).
@@ -643,7 +1600,7 @@
index > propertySpecs size ifTrue:[ "/ one of my specifications
(sel == self class titleOfLayoutMenu) ifTrue:[
- spec := self specificationLayout
+ ^ self showAndFetchLayout
]
] ifFalse:[
spec := currentView specClass perform:(propertySpecs at:index).
@@ -652,16 +1609,20 @@
!
update:something with:aParameter from:changedObject
+ "any attribute changed its state in the current specification
+ "
self modified:true
! !
!UIPropertyView methodsFor:'initialization'!
-in:aTopView receiver:aBuilderView
+in:aTopView builder:aBuilderView
+ "setup property view in topview and that the builder view
+ "
|menu y cancelButton applyButton panel|
super initialize.
- self initializeStaticAspects.
+ self initializeLayoutAspects.
builderView := aBuilderView.
@@ -698,9 +1659,10 @@
self modified:false.
!
-initializeStaticAspects
-
- staticAspects := IdentityDictionary new.
+initializeLayoutAspects
+ "initialize all layout aspects
+ "
+ layoutAspects := IdentityDictionary new.
#( bottomFraction bottomOffset
leftFraction leftOffset
@@ -709,16 +1671,24 @@
leftAlignmentFraction topAlignmentFraction
)
do:[:aChannel|
- staticAspects at:aChannel put:(ValueHolder new).
+ layoutAspects at:aChannel put:(ValueHolder new).
].
- staticAspects do:[:anAspect | anAspect addDependent:self ].
+ layoutAspects do:[:anAspect | anAspect addDependent:self ].
+ layoutAspects at:#layoutType put:(
+ AspectAdaptor new
+ subject:self;
+ accessWith:#layoutType
+ assignWith:#layoutType:
+ ).
! !
!UIPropertyView methodsFor:'private'!
aspectFor:aKey
+ "returns aspect for a key
+ "
|aspect|
propertyAspects notNil ifTrue:[
@@ -728,11 +1698,11 @@
]
].
- ^ staticAspects at:aKey ifAbsent:[super aspectFor:aKey]
+ ^ layoutAspects at:aKey ifAbsent:[super aspectFor:aKey]
!
showSpec:aSpec
- "switch specification
+ "switch to specification
"
currentSpec ~= aSpec ifTrue:[
propertyFrame destroySubViews.
@@ -743,196 +1713,278 @@
]
].
currentSpec := aSpec.
- self modified:false.
! !
!UIPropertyView methodsFor:'private actions'!
apply
+ "apply current changes and write back to current view
+ "
modified ifTrue:[
self modified:false.
self isLayoutSpec ifFalse:[
builderView updateFromSpec:specBeingEdited
] ifTrue:[
- self layoutWrite
+ layoutType notNil ifTrue:[
+ self perform:(('write', layoutType asString) asSymbol)
+ ]
]
]
!
cancel
- |view|
-
+ "cancel all changes and read back attributes from current view
+ "
modified ifTrue:[
- self modified:false.
+ specBeingEdited := (builderView generateSpecFor:currentView) first.
+ self reload
+ ].
+!
- self isLayoutSpec ifFalse:[
- currentView := nil.
- self update:#selection
- ] ifTrue:[
- self layoutRead
+reload
+ "relaod all attributes from current specification and update values
+ "
+ |spec oldMod|
+
+ self modified:false.
+ modified := true. "supress notifications"
+
+ currentSpecChannel notNil ifTrue:[
+ currentSpecChannel value:specBeingEdited.
+
+ self isLayoutSpec ifTrue:[
+ self showAndFetchLayout.
]
- ]
-
+ ].
+ modified := false.
! !
!UIPropertyView methodsFor:'private layout'!
-layoutRead
- |layout extent|
-
- layout := currentView geometryLayout.
- layout isNil ifTrue:[^ self].
- modified := true. "supress event notifications"
-
- layout isLayout ifFalse:[
- (layout isRectangle or:[layout isPoint]) ifTrue:[
- (staticAspects at:#leftOffset) value:(layout left).
- (staticAspects at:#rightOffset) value:(layout right).
+layoutType
+ ^ layoutType
+!
- layout isRectangle ifTrue:[
- (staticAspects at:#topOffset) value:(layout top).
- (staticAspects at:#bottomOffset) value:(layout bottom).
- ].
- modified := false.
- ^ self
- ]
- ].
+layoutType:something
+ |spec|
- (staticAspects at:#leftOffset) value:(layout leftOffset).
- (staticAspects at:#leftFraction) value:(layout leftFraction).
- (staticAspects at:#topOffset) value:(layout topOffset).
- (staticAspects at:#topFraction) value:(layout topFraction).
+ layoutType ~~ something ifTrue:[
+ layoutType := something.
- layout isLayoutFrame ifTrue:[
- (staticAspects at:#rightOffset) value:(layout rightOffset).
- (staticAspects at:#bottomOffset) value:(layout bottomOffset).
-
- (staticAspects at:#rightFraction) value:(layout rightFraction).
- (staticAspects at:#bottomFraction) value:(layout bottomFraction).
-
- (staticAspects at:#leftAlignmentFraction) value:0.
- (staticAspects at:#topAlignmentFraction) value:0.
- ] ifFalse:[
- extent := currentView extent.
+ layoutType notNil ifTrue:[
+ self modified:true.
+ spec := ('specification', layoutType asString) asSymbol.
+ spec := self class perform:spec.
+ ].
+ self showSpec:spec
+ ].
+!
- (staticAspects at:#rightOffset) value:(layout leftOffset + extent x).
- (staticAspects at:#bottomOffset) value:(layout topOffset + extent y).
-
- (staticAspects at:#rightFraction) value:0.
- (staticAspects at:#bottomFraction) value:0.
-
- layout isAlignmentOrigin ifTrue:[
- (staticAspects at:#leftAlignmentFraction) value:(layout leftAlignmentFraction).
- (staticAspects at:#topAlignmentFraction) value:(layout topAlignmentFraction).
- ] ifFalse:[
- (staticAspects at:#leftAlignmentFraction) value:0.
- (staticAspects at:#topAlignmentFraction) value:0.
- ]
- ].
- modified := false.
+layoutTypeList
+ ^ #( #LayoutFrame #AlignmentOrigin #LayoutOrigin #Point #Rectangle )
!
-layoutWrite
- |layout|
+selectedLayoutType
+ ^ layoutType
+!
+
+showAndFetchLayout
+ "fetch and show layout specification assigned to current view
+ "
+ |type|
- currentView isNil ifTrue:[
- ^ self
+ self modified:false.
+ modified := true.
+
+ currentView notNil ifTrue:[
+ type := builderView class layoutType:currentView.
+
+ type notNil ifTrue:[
+ layoutAspects do:[:aValue| aValue value:nil ].
+ self perform:(('fetch', type asString) asSymbol)
+ ]
].
-
- (currentSpec == self class specificationLayoutFrame) ifTrue:[
- layout := LayoutFrame new.
+ self layoutType:type.
+ modified := false.
- layout leftOffset:((staticAspects at:#leftOffset) value) ? 0.
- layout rightOffset:((staticAspects at:#rightOffset) value) ? 0.
- layout topOffset:((staticAspects at:#topOffset) value) ? 0.
- layout bottomOffset:((staticAspects at:#bottomOffset) value) ? 0.
- layout leftFraction:((staticAspects at:#leftFraction) value) ? 0.
- layout rightFraction:((staticAspects at:#rightFraction) value) ? 0.
- layout topFraction:((staticAspects at:#topFraction) value) ? 0.
- layout bottomFraction:((staticAspects at:#bottomFraction) value) ? 0.
+! !
+
+!UIPropertyView methodsFor:'private layout fetch'!
+
+fetchAlignmentOrigin
+ "fetch alignmentOrigin
+ "
+ |aLayout|
+
+ aLayout := currentView geometryLayout.
- builderView setDimension:layout
- ].
+ (layoutAspects at:#leftOffset) value:(aLayout leftOffset).
+ (layoutAspects at:#leftFraction) value:(aLayout leftFraction).
+ (layoutAspects at:#topOffset) value:(aLayout topOffset).
+ (layoutAspects at:#topFraction) value:(aLayout topFraction).
+
+ (layoutAspects at:#leftAlignmentFraction) value:(aLayout leftAlignmentFraction).
+ (layoutAspects at:#topAlignmentFraction) value:(aLayout topAlignmentFraction).
+!
+
+fetchExtent
+ |extent|
- (currentSpec == self class specificationAlignmentOrigin) ifTrue:[
- layout := AlignmentOrigin new.
+ extent := currentView extent.
+ (layoutAspects at:#leftOffset) value:(extent x).
+ (layoutAspects at:#rightOffset) value:(extent y).
+!
+
+fetchLayoutFrame
+ "fetch layoutFrame
+ "
+ |aLayout|
- layout leftOffset:((staticAspects at:#leftOffset) value) ? 0.
- layout topOffset:((staticAspects at:#topOffset) value) ? 0.
- layout leftFraction:((staticAspects at:#leftFraction) value) ? 0.
- layout topFraction:((staticAspects at:#topFraction) value) ? 0.
+ aLayout := currentView geometryLayout.
- layout leftAlignmentFraction:((staticAspects at:#leftAlignmentFraction) value) ? 0.
- layout topAlignmentFraction:((staticAspects at:#topAlignmentFraction) value) ? 0.
+ (layoutAspects at:#leftOffset) value:(aLayout leftOffset).
+ (layoutAspects at:#leftFraction) value:(aLayout leftFraction).
+ (layoutAspects at:#topOffset) value:(aLayout topOffset).
+ (layoutAspects at:#topFraction) value:(aLayout topFraction).
+ (layoutAspects at:#rightOffset) value:(aLayout rightOffset).
+ (layoutAspects at:#bottomOffset) value:(aLayout bottomOffset).
+ (layoutAspects at:#rightFraction) value:(aLayout rightFraction).
+ (layoutAspects at:#bottomFraction) value:(aLayout bottomFraction).
+!
- ^ builderView setDimension:layout.
- ].
+fetchLayoutOrigin
+ "fetch layoutOrigin
+ "
+ |aLayout|
- (currentSpec == self class specificationLayoutOrigin) ifTrue:[
- layout := LayoutOrigin new.
+ aLayout := currentView geometryLayout.
+
+ (layoutAspects at:#leftOffset) value:(aLayout leftOffset).
+ (layoutAspects at:#leftFraction) value:(aLayout leftFraction).
+ (layoutAspects at:#topOffset) value:(aLayout topOffset).
+ (layoutAspects at:#topFraction) value:(aLayout topFraction).
+!
- layout leftOffset:((staticAspects at:#leftOffset) value) ? 0.
- layout topOffset:((staticAspects at:#topOffset) value) ? 0.
- layout leftFraction:((staticAspects at:#leftFraction) value) ? 0.
- layout topFraction:((staticAspects at:#topFraction) value) ? 0.
+fetchPoint
+ "fetch point
+ "
+ |e x y p|
- builderView setDimension:layout.
- ].
+ p := currentView geometryLayout.
+ x := p x.
+ y := p y.
+ e := currentView extent.
+
+ (layoutAspects at:#leftOffset) value:x.
+ (layoutAspects at:#topOffset) value:y.
+ (layoutAspects at:#rightOffset) value:(x + e x).
+ (layoutAspects at:#bottomOffset) value:(y + e y).
!
-showAlignmentOrigin
- self switchLayoutSpec:(self class specificationAlignmentOrigin)
+fetchRectangle
+ "fetch rectangle
+ "
+ |aRectangle|
+
+ aRectangle := currentView geometryLayout.
+
+ (layoutAspects at:#leftOffset) value:(aRectangle left).
+ (layoutAspects at:#rightOffset) value:(aRectangle right).
+ (layoutAspects at:#topOffset) value:(aRectangle top).
+ (layoutAspects at:#bottomOffset) value:(aRectangle bottom).
+! !
+
+!UIPropertyView methodsFor:'private layout write'!
+
+writeAlignmentOrigin
+ "write back as alignmentOrigin
+ "
+ |layout|
+
+ layout := AlignmentOrigin new.
+
+ layout leftOffset:((layoutAspects at:#leftOffset) value) ? 0.
+ layout topOffset:((layoutAspects at:#topOffset) value) ? 0.
+ layout leftFraction:((layoutAspects at:#leftFraction) value) ? 0.
+ layout topFraction:((layoutAspects at:#topFraction) value) ? 0.
+
+ layout leftAlignmentFraction:((layoutAspects at:#leftAlignmentFraction) value) ? 0.
+ layout topAlignmentFraction:((layoutAspects at:#topAlignmentFraction) value) ? 0.
+
+ builderView setDimension:layout.
!
-showLayoutFrame
- self switchLayoutSpec:(self class specificationLayoutFrame)
-!
+writeExtent
+ |extent|
-showLayoutOrigin
- self switchLayoutSpec:(self class specificationLayoutOrigin)
+ extent := Point x:(((layoutAspects at:#leftOffset) value) ? 0)
+ y:(((layoutAspects at:#rightOffset) value) ? 0).
+
+ builderView setExtent:extent
!
-specificationLayout
- "called from propertyChanged; returns specification assigned to
- current view
+writeLayoutFrame
+ "write back as layoutFrame
"
- |layout spec|
+ |layout|
- (currentView superView specClass basicNew isLayoutContainer) ifTrue:[
- ^ nil
- ].
- layout := currentView geometryLayout.
+ layout := LayoutFrame new.
- layout isLayout ifTrue:[
- layout isLayoutFrame ifTrue:[
- spec := self class specificationLayoutFrame
- ] ifFalse:[
- layout isAlignmentOrigin ifTrue:[
- spec := self class specificationAlignmentOrigin
- ] ifFalse:[
- layout isLayoutOrigin ifTrue:[
- spec := self class specificationLayoutOrigin
- ]
- ]
- ]
- ].
+ layout leftOffset:((layoutAspects at:#leftOffset) value) ? 0.
+ layout rightOffset:((layoutAspects at:#rightOffset) value) ? 0.
+ layout topOffset:((layoutAspects at:#topOffset) value) ? 0.
+ layout bottomOffset:((layoutAspects at:#bottomOffset) value) ? 0.
+ layout leftFraction:((layoutAspects at:#leftFraction) value) ? 0.
+ layout rightFraction:((layoutAspects at:#rightFraction) value) ? 0.
+ layout topFraction:((layoutAspects at:#topFraction) value) ? 0.
+ layout bottomFraction:((layoutAspects at:#bottomFraction) value) ? 0.
- spec notNil ifTrue:[
- self layoutRead
- ].
- ^ spec
+ builderView setDimension:layout
!
-switchLayoutSpec:aSpecification
- self layoutRead.
- self showSpec:aSpecification.
- self modified:true.
+writeLayoutOrigin
+ "write back as layoutOrigin
+ "
+ |layout|
+
+ layout := LayoutOrigin new.
+
+ layout leftOffset:((layoutAspects at:#leftOffset) value) ? 0.
+ layout topOffset:((layoutAspects at:#topOffset) value) ? 0.
+ layout leftFraction:((layoutAspects at:#leftFraction) value) ? 0.
+ layout topFraction:((layoutAspects at:#topFraction) value) ? 0.
+
+ builderView setDimension:layout.
+
+!
+writePoint
+ "write back as point
+ "
+ |point|
+
+ point := Point x:(((layoutAspects at:#leftOffset) value) ? 0)
+ y:(((layoutAspects at:#topOffset) value) ? 0).
+
+ builderView setDimension:point
+!
+
+writeRectangle
+ "write back as rectangle
+ "
+ |rectangle|
+
+ rectangle := Rectangle left:(((layoutAspects at:#leftOffset) value) ? 0)
+ top:(((layoutAspects at:#topOffset) value) ? 0)
+ right:(((layoutAspects at:#rightOffset) value) ? 0)
+ bottom:(((layoutAspects at:#bottomOffset) value) ? 0).
+
+ builderView setDimension:rectangle
! !
!UIPropertyView methodsFor:'private make layout'!
@@ -961,16 +2013,16 @@
aBool ifTrue:[
offset := offset + ((fraction * extent) asInteger).
- (staticAspects at:offsetSymb) value:offset.
- (staticAspects at:fractSymb) value:0.
+ (layoutAspects at:offsetSymb) value:offset.
+ (layoutAspects at:fractSymb) value:0.
] ifFalse:[
fraction := (fraction + (offset / extent)) asFloat.
(fraction > 1.0) ifTrue:[ fraction := 1.0 ].
(fraction < 0.0) ifTrue:[ fraction := 0.0 ].
- (staticAspects at:offsetSymb) value:0.
- (staticAspects at:fractSymb) value:fraction.
+ (layoutAspects at:offsetSymb) value:0.
+ (layoutAspects at:fractSymb) value:fraction.
]
]
@@ -995,6 +2047,11 @@
!
+makeOffsetLeftTop
+ self makeOffsetLeft.
+ self makeOffsetTop.
+!
+
makeOffsetRight
self makeLayout:'right' xOrY:#x offset:true.
@@ -1023,6 +2080,11 @@
!
+makeRelativeLeftTop
+ self makeRelativeLeft.
+ self makeRelativeTop.
+!
+
makeRelativeRight
self makeLayout:'right' xOrY:#x offset:false.
@@ -1036,7 +2098,7 @@
!UIPropertyView methodsFor:'queries'!
isLayoutSpec
- "returns true if current menu is layout
+ "returns true if current menu is a layout specification
"
^ propertyList selection == self class titleOfLayoutMenu
! !