"
COPYRIGHT (c) 1995 by eXept Software AG
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.
"
"{ Package: 'stx:libtool2' }"
ApplicationModel subclass:#UILayoutTool
instanceVariableNames:'modifiedHolder aspects selection currentTool layoutView tabList
layoutSpec toolsDictionary'
classVariableNames:''
poolDictionaries:''
category:'Interface-UIPainter'
!
ApplicationModel subclass:#AnyLayout
instanceVariableNames:''
classVariableNames:''
poolDictionaries:''
privateIn:UILayoutTool
!
UILayoutTool::AnyLayout subclass:#AlignmentOrigin
instanceVariableNames:''
classVariableNames:''
poolDictionaries:''
privateIn:UILayoutTool
!
UILayoutTool::AnyLayout subclass:#Extent
instanceVariableNames:''
classVariableNames:''
poolDictionaries:''
privateIn:UILayoutTool
!
UILayoutTool::AnyLayout subclass:#LayoutFrame
instanceVariableNames:''
classVariableNames:'DefaultFixPartHeight'
poolDictionaries:''
privateIn:UILayoutTool
!
UILayoutTool::AnyLayout subclass:#LayoutOrigin
instanceVariableNames:''
classVariableNames:''
poolDictionaries:''
privateIn:UILayoutTool
!
UILayoutTool::AnyLayout subclass:#Point
instanceVariableNames:''
classVariableNames:''
poolDictionaries:''
privateIn:UILayoutTool
!
UILayoutTool::AnyLayout subclass:#Rectangle
instanceVariableNames:''
classVariableNames:''
poolDictionaries:''
privateIn:UILayoutTool
!
!UILayoutTool class methodsFor:'documentation'!
copyright
"
COPYRIGHT (c) 1995 by eXept Software AG
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
"
used by the UIPainter to manipulate the layout of the selected component
[author:]
Claus Atzkern
[see also:]
UIPainter
UIHelpTool
UISpecificationTool
"
! !
!UILayoutTool class methodsFor:'constants'!
label
^ 'Layout'
! !
!UILayoutTool class methodsFor:'help specs'!
helpSpec
"This resource specification was automatically generated
by the UIHelpTool of ST/X."
"Do not manually edit this!! If it is corrupted,
the UIHelpTool may not be able to read the specification."
"
UIHelpTool openOnClass:UILayoutTool
"
<resource: #help>
^super helpSpec addPairsFrom:#(
#cornerX
'Absolute corner x of the selected widget.'
#cornerY
'Absolute corner y of the selected widget.'
#layoutTool
'Tool to set the layout of the selected widget.'
#leftAbsolute
'Offset of the left edge; positive is to the right, negative to the left.'
#leftRelative
'Relative origin x of the selected widget.'
#makeLeftAbsolute
'Compute pure-absolute x'
#makeLeftRelative
'Compute pure-fraction x.'
#makeLeftRelativeFromRight
'Compute fraction+offset for x relative to containers right.'
#makeTopAbsolute
'Compute pure-absolute y.'
#makeTopRelative
'Computes pure-fractional y.'
#makeTopRelativeFromBottom
'Compute fraction+offset for y relative to containers bottom.'
#originX
'Absolute origin x of the selected widget.'
#originY
'Absolute origin y of the selected widget.'
#topAbsolute
'Offset of the top edge; positive is to the bottom, negative to the top.'
#topRelative
'Relative origin y of the selected widget.'
)
! !
!UILayoutTool class methodsFor:'interface specs'!
layoutOriginSpec
"This resource specification was automatically generated
by the UIPainter of ST/X."
"Do not manually edit this!! If it is corrupted,
the UIPainter may not be able to read the specification."
"
UIPainter new openOnClass:UILayoutTool andSelector:#layoutOriginSpec
UILayoutTool new openInterface:#layoutOriginSpec
"
<resource: #canvas>
^
#(FullSpec
name: layoutOriginSpec
window:
(WindowSpec
label: 'UILayoutTool'
name: 'UILayoutTool'
min: (Point 10 10)
bounds: (Rectangle 14 46 359 228)
)
component:
(SpecCollection
collection: (
(FramedBoxSpec
label: 'Origin'
name: 'FramedBox'
layout: (LayoutFrame 0 0.0 0 0.0 0 1.0 108 0)
labelPosition: topLeft
component:
(SpecCollection
collection: (
(LabelSpec
label: 'Relative:'
name: 'labelRelative'
layout: (Point 103 6)
)
(LabelSpec
label: 'Offset:'
name: 'labelAbsolute'
layout: (Point 203 6)
)
(LabelSpec
label: 'Left:'
name: 'labelLeft'
layout: (AlignmentOrigin 68 0 27 0 1 0)
)
(ActionButtonSpec
label: 'imageFractX'
name: 'actionRelativeLeft'
layout: (LayoutFrame 77 0 24 0 99 0 46 0)
activeHelpKey: makeLeftRelative
hasCharacterOrientedLabel: false
tabable: true
model: relativeLeft
)
(InputFieldSpec
name: 'fieldLeftFraction'
layout: (LayoutFrame 103 0 24 0 153 0 46 0)
activeHelpKey: leftRelative
tabable: true
model: leftFraction
group: inputGroup
type: numberOrNil
acceptChannel: acceptChannel
modifiedChannel: modifiedChannel
acceptOnPointerLeave: false
)
(ActionButtonSpec
label: 'imageAbsXFromRight'
name: 'actionRightRelativeLeft'
layout: (LayoutFrame 257 0 24 0 279 0 46 0)
activeHelpKey: makeLeftRelativeFromRight
hasCharacterOrientedLabel: false
tabable: true
model: rightRelativeLeft
)
(InputFieldSpec
name: 'fieldLeftOffset'
layout: (LayoutFrame 203 0 24 0 253 0 46 0)
activeHelpKey: leftAbsolute
tabable: true
model: leftOffset
group: inputGroup
type: numberOrNil
acceptChannel: acceptChannel
modifiedChannel: modifiedChannel
acceptOnPointerLeave: false
)
(ActionButtonSpec
label: 'imageAbsX'
name: 'actionAbsoluteLeft'
layout: (LayoutFrame 178 0 24 0 200 0 46 0)
activeHelpKey: makeLeftAbsolute
hasCharacterOrientedLabel: false
tabable: true
model: absoluteLeft
)
(LabelSpec
label: 'Top:'
name: 'labelTop'
layout: (AlignmentOrigin 68 0 54 0 1 0)
)
(ActionButtonSpec
label: 'imageFractY'
name: 'actionRelativeTop'
layout: (LayoutFrame 77 0 51 0 99 0 73 0)
activeHelpKey: makeTopRelative
hasCharacterOrientedLabel: false
tabable: true
model: relativeTop
)
(InputFieldSpec
name: 'fieldTopFraction'
layout: (LayoutFrame 103 0 51 0 153 0 73 0)
activeHelpKey: topRelative
tabable: true
model: topFraction
group: inputGroup
type: numberOrNil
acceptChannel: acceptChannel
modifiedChannel: modifiedChannel
acceptOnPointerLeave: false
)
(ActionButtonSpec
label: 'imageAbsYFromBottom'
name: 'actionBottomRelativeTop'
layout: (LayoutFrame 257 0 51 0 279 0 73 0)
activeHelpKey: makeTopRelativeFromBottom
hasCharacterOrientedLabel: false
tabable: true
model: bottomRelativeTop
)
(InputFieldSpec
name: 'fieldTopOffset'
layout: (LayoutFrame 203 0 51 0 253 0 73 0)
activeHelpKey: topAbsolute
tabable: true
model: topOffset
group: inputGroup
type: numberOrNil
acceptChannel: acceptChannel
modifiedChannel: modifiedChannel
acceptOnPointerLeave: false
)
(ActionButtonSpec
label: 'imageAbsY'
name: 'actionAbsoluteTop'
layout: (LayoutFrame 178 0 51 0 200 0 73 0)
activeHelpKey: makeTopAbsolute
hasCharacterOrientedLabel: false
tabable: true
model: absoluteTop
)
)
)
)
)
)
)
!
layoutPointSpec
"This resource specification was automatically generated
by the UIPainter of ST/X."
"Do not manually edit this!! If it is corrupted,
the UIPainter may not be able to read the specification."
"
UIPainter new openOnClass:UILayoutTool andSelector:#layoutPointSpec
UILayoutTool new openInterface:#layoutPointSpec
"
<resource: #canvas>
^
#(FullSpec
name: layoutPointSpec
window:
(WindowSpec
label: 'UILayoutTool'
name: 'UILayoutTool'
min: (Point 10 10)
bounds: (Rectangle 14 46 292 170)
)
component:
(SpecCollection
collection: (
(FramedBoxSpec
label: 'Origin'
name: 'FramedBox'
layout: (LayoutFrame 0 0.0 0 0.0 0 1.0 94 0)
labelPosition: topLeft
component:
(SpecCollection
collection: (
(LabelSpec
label: 'Left:'
name: 'labelOriginY'
layout: (AlignmentOrigin 83 0 14 0 1 0)
)
(InputFieldSpec
name: 'fieldOriginX'
layout: (LayoutFrame 85 0 11 0 135 0 33 0)
activeHelpKey: originX
tabable: true
model: leftOffset
group: inputGroup
type: numberOrNil
acceptChannel: acceptChannel
modifiedChannel: modifiedChannel
acceptOnPointerLeave: false
)
(LabelSpec
label: 'Top:'
name: 'labelOriginX'
layout: (AlignmentOrigin 83 0 39 0 1 0)
)
(InputFieldSpec
name: 'fieldOriginY'
layout: (LayoutFrame 85 0 36 0 135 0 58 0)
activeHelpKey: originY
tabable: true
model: topOffset
group: inputGroup
type: numberOrNil
acceptChannel: acceptChannel
modifiedChannel: modifiedChannel
acceptOnPointerLeave: false
)
)
)
)
)
)
)
!
slices
^ #(
( 'Frame' LayoutFrame)
( 'Origin' LayoutOrigin)
( 'Alig.Origin' AlignmentOrigin)
( 'Point' Point)
( 'Rectangle' Rectangle)
( 'Extent' Extent)
)
!
windowSpec
"This resource specification was automatically generated
by the UIPainter of ST/X."
"Do not manually edit this!! If it is corrupted,
the UIPainter may not be able to read the specification."
"
UIPainter new openOnClass:UILayoutTool andSelector:#windowSpec
UILayoutTool new openInterface:#windowSpec
UILayoutTool open
"
<resource: #canvas>
^
#(FullSpec
name: windowSpec
window:
(WindowSpec
label: 'UILayoutTool'
name: 'UILayoutTool'
min: (Point 10 10)
bounds: (Rectangle 12 22 354 321)
)
component:
(SpecCollection
collection: (
(NoteBookViewSpec
name: 'NoteBook'
layout: (LayoutFrame 0 0.0 0 0.0 0 1.0 0 1.0)
activeHelpKey: layoutTool
enableChannel: enableChannel
tabable: true
model: noteBookModel
menu: noteBookList
direction: bottom
translateLabel: true
canvas: layoutCanvasHolder
tabTopMargin: 0
tabBottomMargin: 0
keepCanvasAlive: true
tabLevel: 0
)
)
)
)
! !
!UILayoutTool class methodsFor:'resources'!
classResources
"my translations are found in the UIPainter classes resources"
^ UIPainter classResources
! !
!UILayoutTool methodsFor:'accessing'!
acceptChannel
"return the value of the instance variable 'acceptChannel' (automatically generated)"
^ masterApplication acceptChannel
!
layout
"returns configued layout or nil
"
^ currentTool notNil ifTrue:[currentTool layout]
ifFalse:[nil]
!
layoutType
"returns current layout type or nil
"
|slice|
(slice := self selectedSlice) notNil ifTrue:[
^ slice last
].
^ nil
!
layoutView
"returns current edited view
"
^ layoutView
!
layoutView:aView type:aTypeOrNil spec:aSpec
"change current edited view
"
|type name list|
layoutView := aView.
layoutSpec := aSpec.
(self aspectFor:#defaultExtentEnabled) value:(aSpec class == WindowSpec) not.
aTypeOrNil notNil ifTrue:[
self class slices findFirst:[:e|
e last == aTypeOrNil ifTrue:[name := e first. true]
].
list := Array with:name with: 'Frame'.
] ifFalse:[
(type := UIPainterView layoutType:layoutView) notNil ifTrue:[
self class slices findFirst:[:e|
e last == type ifTrue:[name := e first. true]
].
list := tabList.
type == #Extent ifTrue:[
aView superView specClass isLayoutContainer ifTrue:[
list := Array with:name
] ifFalse:[
list := list copyWith:name
]
]
]
].
self noteBookList value:list.
self noteBookModel value:name.
self update.
!
modifiedHolder:aValueHolder
"set the value holder set to true in case of modifying attributes
"
modifiedHolder notNil ifTrue:[
modifiedHolder removeDependent:self.
].
(modifiedHolder := aValueHolder) notNil ifTrue:[
modifiedHolder addDependent:self.
].
!
update
"update from view
"
|view|
(selection notNil and:[currentTool notNil]) ifTrue:[
(view := layoutView) notNil ifTrue:[
currentTool fetch:view spec:layoutSpec
]
].
! !
!UILayoutTool methodsFor:'aspects'!
aspectFor:aKey
"returns aspect for a key or nil
"
^ aspects at:aKey ifAbsent:[ super aspectFor:aKey ]
!
layoutCanvasHolder
|holder|
(holder := builder bindingAt:#layoutCanvasHolder) isNil ifTrue:[
holder := ValueHolder new.
builder aspectAt:#layoutCanvasHolder put:holder
].
^ holder
!
notUsingDefaultExtent
|holder|
(holder := builder bindingAt:#notUsingDefaultExtent) isNil ifTrue:[
holder := BlockValue forLogicalNot:(self aspectFor:#useDefaultExtent).
builder aspectAt:#notUsingDefaultExtent put:holder.
].
^ holder
!
noteBookList
"returns list of tab labels
"
|holder|
(holder := builder bindingAt:#noteBookList) isNil ifTrue:[
holder := nil asValue.
builder aspectAt:#noteBookList put:holder
].
^ holder
!
noteBookModel
"automatically generated by UIPainter ..."
|holder|
(holder := builder bindingAt:#noteBookModel) isNil ifTrue:[
holder := AspectAdaptor new subject:self; forAspect:#selection.
builder aspectAt:#noteBookModel put:holder.
].
^ holder
! !
!UILayoutTool methodsFor:'change & update'!
update:something with:aParameter from:changedObject
"one of my models changed its value
"
changedObject ~~ modifiedHolder ifTrue:[
modifiedHolder value ~~ true ifTrue:[
modifiedHolder isNil ifFalse:[
modifiedHolder value:true
]
]
]
! !
!UILayoutTool methodsFor:'converting absolute'!
absolute:what xOrY:xOrY
"compute what as absolute (i.e. fraction=0, offset >= 0)"
|extent fraction offset fractSymb offsetSymb
newOffset newFraction fractHolder offsetHolder|
extent := (self layoutView superView computeExtent) perform:xOrY.
fractSymb := (what, 'Fraction') asSymbol.
offsetSymb := (what, 'Offset') asSymbol.
fractHolder := (self aspectFor:fractSymb).
offsetHolder := (self aspectFor:offsetSymb).
fraction := fractHolder value.
offset := offsetHolder value.
newOffset := offset + ((fraction * extent) asInteger).
newFraction := 0.
fractHolder value:newFraction.
offsetHolder value:newOffset.
!
absoluteBottom
"compute bottom as absolute (i.e. fraction=0, offset >= 0)"
self absolute:'bottom' xOrY:#y
!
absoluteLeft
"compute left as absolute (i.e. fraction=0, offset >= 0)"
self absolute:'left' xOrY:#x
!
absoluteRight
"compute right as absolute (i.e. fraction=0, offset >= 0)"
self absolute:'right' xOrY:#x
!
absoluteTop
"compute top as absolute (i.e. fraction=0, offset >= 0)"
self absolute:'top' xOrY:#y
! !
!UILayoutTool methodsFor:'converting absolute from corner'!
bottomRelativeBottom
"compute bottom relative to containers bottom (fraction=1, offset negative)"
self cornerRelative:'bottom' xOrY:#y
!
bottomRelativeTop
"compute top relative to containers bottom (fraction=1, offset negative)"
self cornerRelative:'top' xOrY:#y
!
cornerRelative:what xOrY:xOrY
"compute what relative to the corner (i.e. fraction=1, offset negative)"
|extent fraction offset fractSymb offsetSymb
newFraction newOffset fractHolder offsetHolder|
extent := (self layoutView superView computeExtent) perform:xOrY.
fractSymb := (what, 'Fraction') asSymbol.
offsetSymb := (what, 'Offset') asSymbol.
fractHolder := (self aspectFor:fractSymb).
offsetHolder := (self aspectFor:offsetSymb).
fraction := fractHolder value.
offset := offsetHolder value.
newOffset := offset + ((fraction * extent) asInteger).
newOffset := newOffset - extent.
newFraction := 1.
fractHolder value:newFraction.
offsetHolder value:newOffset.
!
rightRelativeLeft
"compute left relative to containers right (fraction=1, offset negative)"
self cornerRelative:'left' xOrY:#x
!
rightRelativeRight
"compute right relative to containers right (fraction=1, offset negative)"
self cornerRelative:'right' xOrY:#x
! !
!UILayoutTool methodsFor:'converting relative'!
relative:what xOrY:xOrY
"compute what relative to the origin (i.e. fraction=0..1, offset 0)"
|extent fraction offset fractSymb offsetSymb
newFraction newOffset
fractHolder offsetHolder|
extent := (self layoutView superView computeExtent) perform:xOrY.
fractSymb := (what, 'Fraction') asSymbol.
offsetSymb := (what, 'Offset') asSymbol.
fractHolder := (self aspectFor:fractSymb).
offsetHolder := (self aspectFor:offsetSymb).
fraction := fractHolder value.
offset := offsetHolder value.
newFraction := (fraction + (offset / extent)) asFloat.
newOffset := 0.
(newFraction > 1.0) ifTrue:[newFraction := 1.0].
(newFraction < 0.0) ifTrue:[newFraction := 0].
offsetHolder value:newOffset.
fractHolder value:newFraction.
!
relativeBottom
"compute bottom relative to the origin (i.e. fraction=0..1, offset 0)"
self relative:'bottom' xOrY:#y
!
relativeLeft
"compute left relative to the origin (i.e. fraction=0..1, offset 0)"
self relative:'left' xOrY:#x
!
relativeRight
"compute right relative to the origin (i.e. fraction=0..1, offset 0)"
self relative:'right' xOrY:#x
!
relativeTop
"compute top relative to the origin (i.e. fraction=0..1, offset 0)"
self relative:'top' xOrY:#y
! !
!UILayoutTool methodsFor:'initialization'!
initialize
"initialize channels
"
|slices size|
super initialize.
aspects := IdentityDictionary new.
toolsDictionary := IdentityDictionary new.
#( bottomFraction bottomOffset
leftFraction leftOffset
topFraction topOffset
rightFraction rightOffset
leftAlignmentFraction topAlignmentFraction
(useDefaultExtent false)
(defaultExtentEnabled false)
)
do:[:aKeyOrPair| |holder key val|
(key := aKeyOrPair) isSymbol ifFalse:[
key := aKeyOrPair first.
val := aKeyOrPair second
].
holder := val asValue.
holder addDependent:self.
aspects at:key put:holder.
].
slices := self class slices.
size := slices size - 1.
tabList := Array new:size.
1 to:size do:[:i| tabList at:i put:((slices at:i) first) ].
! !
!UILayoutTool methodsFor:'selection'!
selectedSlice
"returns slice assigned to selection or nil
"
selection notNil ifTrue:[
self class slices do:[:aSlice|
aSlice first = selection ifTrue:[
^ aSlice
]
]
].
^ nil
!
selection
^ selection
!
selection:aSelection
|appl slice sel key view|
aSelection isNumber ifTrue:[
aSelection ~~ 0 ifTrue:[sel := tabList at:aSelection]
] ifFalse:[
sel := aSelection
].
selection = sel ifFalse:[
(selection := sel) notNil ifTrue:[
key := selection asSymbol.
appl := toolsDictionary at:key ifAbsent:nil.
appl isNil ifTrue:[
view := ApplicationSubView new.
slice := self selectedSlice.
appl := slice last asString.
appl := Smalltalk classNamed:(self class name asString, '::', appl).
appl := appl new.
appl masterApplication:self.
appl createBuilder.
view client:appl.
appl window:view.
toolsDictionary at:key put:appl.
] ifFalse:[
view := appl window
].
modifiedHolder value:true.
].
currentTool := appl.
self layoutCanvasHolder value:view.
].
self update
"Modified: / 4.2.2000 / 22:31:41 / cg"
! !
!UILayoutTool::AnyLayout class methodsFor:'image specs'!
imageAbsX
"This resource specification was automatically generated
by the ImageEditor of ST/X."
"Do not manually edit this!! If it is corrupted,
the ImageEditor may not be able to read the specification."
"
self imageAbsX inspect
ImageEditor openOnClass:self andSelector:#imageAbsX
"
<resource: #image>
^Icon
constantNamed:#'UILayoutTool imageAbsX'
ifAbsentPut:[(Depth1Image new) width: 16; height: 16; photometric:(#palette); bitsPerSample:(#(1 )); samplesPerPixel:(1); bits:(ByteArray fromPackedString:'
<@BP@I@N$L*P*)BZ''8*@@(@B''8*P&)B*$L*PC)@@<@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@a') ; colorMapFromArray:#[0 0 0 255 255 255]; mask:((Depth1Image new) width: 16; height: 16; photometric:(#blackIs0); bitsPerSample:(#(1 )); samplesPerPixel:(1); bits:(ByteArray fromPackedString:'<@C0@O@N<L;0;/C>??;??/?>??;0?/C.<L;0C/@@<@@b') ; yourself); yourself]
!
imageAbsXFromRight
"This resource specification was automatically generated
by the ImageEditor of ST/X."
"Do not manually edit this!! If it is corrupted,
the ImageEditor may not be able to read the specification."
"
self imageAbsXFromRight inspect
ImageEditor openOnClass:self andSelector:#imageAbsXFromRight
"
<resource: #image>
^Icon
constantNamed:#'UILayoutTool imageAbsXFromRight'
ifAbsentPut:[(Depth1Image new) width: 16; height: 16; photometric:(#palette); bitsPerSample:(#(1 )); samplesPerPixel:(1); bits:(ByteArray fromPackedString:'@@<@BW@IT0%UBU$IT_%@@T@AT_%YBUTIT0%0BP@I@@<b') ; colorMapFromArray:#[0 0 0 255 255 255]; mask:((Depth1Image new) width: 16; height: 16; photometric:(#blackIs0); bitsPerSample:(#(1 )); samplesPerPixel:(1); bits:(ByteArray fromPackedString:'@@<@C7@O\0=7C7<O_?=??7??_?=?C7\O\0=0C0@O@@<b') ; yourself); yourself]
!
imageAbsY
"This resource specification was automatically generated
by the ImageEditor of ST/X."
"Do not manually edit this!! If it is corrupted,
the ImageEditor may not be able to read the specification."
"
self imageAbsY inspect
ImageEditor openOnClass:self andSelector:#imageAbsY
"
<resource: #image>
^Icon
constantNamed:#'UILayoutTool imageAbsY'
ifAbsentPut:[(Depth1Image new) width: 16; height: 16; photometric:(#palette); bitsPerSample:(#(1 )); samplesPerPixel:(1); bits:(ByteArray fromPackedString:'??>@@X@A?''<BP@I@@$@BPA98D@ HD@P O''0 AC?<@@@b') ; colorMapFromArray:#[0 0 0 255 255 255]; mask:((Depth1Image new) width: 16; height: 16; photometric:(#blackIs0); bitsPerSample:(#(1 )); samplesPerPixel:(1); bits:(ByteArray fromPackedString:'??????????<C0@O@@<@C0A?8G? O<@_ O?0??C?<@@@b') ; yourself); yourself]
!
imageAbsYFromBottom
"This resource specification was automatically generated
by the ImageEditor of ST/X."
"Do not manually edit this!! If it is corrupted,
the ImageEditor may not be able to read the specification."
"
self imageAbsYFromBottom inspect
ImageEditor openOnClass:self andSelector:#imageAbsYFromBottom
"
<resource: #image>
^Icon
constantNamed:#'UILayoutTool imageAbsYFromBottom'
ifAbsentPut:[(Depth1Image new) width: 16; height: 16; photometric:(#palette); bitsPerSample:(#(1 )); samplesPerPixel:(1); bits:(ByteArray fromPackedString:'@@@??B@DO''0DH@ PD@ ^^@I@@$@BP@I@?''>@@X@A??<b') ; colorMapFromArray:#[0 0 0 255 255 255]; mask:((Depth1Image new) width: 16; height: 16; photometric:(#blackIs0); bitsPerSample:(#(1 )); samplesPerPixel:(1); bits:(ByteArray fromPackedString:'@@@??C?<O?0G8@?0G? _>@O@@<@C0@O@??????????<b') ; yourself); yourself]
!
imageFractX
"This resource specification was automatically generated
by the ImageEditor of ST/X."
"Do not manually edit this!! If it is corrupted,
the ImageEditor may not be able to read the specification."
"
self imageFractX inspect
ImageEditor openOnClass:self andSelector:#imageFractX
"
<resource: #image>
^Icon
constantNamed:#'UILayoutTool::AnyLayout imageFractX'
ifAbsentPut:[(Depth1Image new) width: 16; height: 16; photometric:(#palette); bitsPerSample:(#(1 )); samplesPerPixel:(1); bits:(ByteArray fromPackedString:'
<@>PBY@I&A&TJYII$X&@@X@A$X&RRYP)&A&PBY@I<@<@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@a') ; colorMapFromArray:#[0 0 0 255 255 255]; mask:((Depth1Image new) width: 16; height: 16; photometric:(#blackIs0); bitsPerSample:(#(1 )); samplesPerPixel:(1); bits:(ByteArray fromPackedString:'<@?0C?@O>A?<O?9????????????>_?0?>A?0C?@O<@<b') ; yourself); yourself]
!
imageFractY
"This resource specification was automatically generated
by the ImageEditor of ST/X."
"Do not manually edit this!! If it is corrupted,
the ImageEditor may not be able to read the specification."
"
self imageFractY inspect
ImageEditor openOnClass:self andSelector:#imageFractY
"
<resource: #image>
^Icon
constantNamed:#'UILayoutTool::AnyLayout imageFractY'
ifAbsentPut:[(Depth1Image new) width: 16; height: 16; photometric:(#palette); bitsPerSample:(#(1 )); samplesPerPixel:(1); bits:(ByteArray fromPackedString:'??>@@X@A?''<PB@ PAB@BP@I@AB@HDA@H?''>@@X@A??<b') ; colorMapFromArray:#[0 0 0 255 255 255]; mask:((Depth1Image new) width: 16; height: 16; photometric:(#blackIs0); bitsPerSample:(#(1 )); samplesPerPixel:(1); bits:(ByteArray fromPackedString:'??????????<_>@?0A>@C0@O@A>@O<A?8??????????<b') ; yourself); yourself]
! !
!UILayoutTool::AlignmentOrigin class methodsFor:'help specs'!
helpSpec
"This resource specification was automatically generated
by the UIHelpTool of ST/X."
"Do not manually edit this!! If it is corrupted,
the UIHelpTool may not be able to read the specification."
"
UIHelpTool openOnClass:UILayoutTool::AlignmentOrigin
"
<resource: #help>
^super helpSpec addPairsFrom:#(
#alignBottomCenter
'Aligns the selected widget bottomCenter to location.'
#alignBottomLeft
'Aligns the selected widget bottomLeft to location.'
#alignBottomRight
'Aligns the selected widget bottomRight to location.'
#alignCenter
'Aligns the selected widget center to location.'
#alignHorizontal
'Horizontal inset to the location point of the selected widget.'
#alignLeftCenter
'Aligns the selected widget leftCenter to location.'
#alignRightCenter
'Aligns the selected widget rightCenter to location.'
#alignTopCenter
'Aligns the selected widget topCenter to location.'
#alignTopLeft
'Aligns the selected widget topLeft to location.'
#alignTopRight
'Aligns the selected widget topRight to location.'
#alignVertical
'Vertical inset to the location point of the widget.'
)
! !
!UILayoutTool::AlignmentOrigin class methodsFor:'interface specs'!
windowSpec
"This resource specification was automatically generated
by the UIPainter of ST/X."
"Do not manually edit this!! If it is corrupted,
the UIPainter may not be able to read the specification."
"
UIPainter new openOnClass:UILayoutTool::AlignmentOrigin andSelector:#windowSpec
UILayoutTool::AlignmentOrigin new openInterface:#windowSpec
UILayoutTool::AlignmentOrigin open
"
<resource: #canvas>
^
#(FullSpec
name: windowSpec
window:
(WindowSpec
label: 'UILayoutTool-AlignmentOrigin'
name: 'UILayoutTool-AlignmentOrigin'
min: (Point 10 10)
bounds: (Rectangle 14 46 419 253)
)
component:
(SpecCollection
collection: (
(UISubSpecification
name: 'layoutOriginSpec'
layout: (LayoutFrame 1 0.0 6 0 0 1.0 111 0)
majorKey: UILayoutTool
minorKey: layoutOriginSpec
)
(FramedBoxSpec
label: 'Alignment'
name: 'FramedBox'
layout: (LayoutFrame 1 0.0 113 0 0 1.0 208 0)
labelPosition: topLeft
component:
(SpecCollection
collection: (
(LabelSpec
label: 'Horizontal:'
name: 'alignHLabel'
layout: (AlignmentOrigin 88 0 17 0 1 0)
adjust: right
)
(InputFieldSpec
name: 'leftAlignmentFractionField'
layout: (LayoutFrame 90 0 14 0 147 0 36 0)
activeHelpKey: alignHorizontal
tabable: true
model: leftAlignmentFraction
group: inputGroup
type: numberOrNil
acceptOnLostFocus: true
acceptChannel: acceptChannel
modifiedChannel: modifiedChannel
acceptOnPointerLeave: false
)
(LabelSpec
label: 'Vertical:'
name: 'alignVLabel'
layout: (AlignmentOrigin 88 0 43 0 1 0)
adjust: right
)
(InputFieldSpec
name: 'topAlignmentFractionField'
layout: (LayoutFrame 90 0 40 0 147 0 62 0)
activeHelpKey: alignVertical
tabable: true
model: topAlignmentFraction
group: inputGroup
type: numberOrNil
acceptOnLostFocus: true
acceptChannel: acceptChannel
modifiedChannel: modifiedChannel
acceptOnPointerLeave: false
)
(DividerSpec
name: 'separator1'
layout: (LayoutFrame 204 0 19 0 245 0 22 0)
)
(DividerSpec
name: 'separator2'
layout: (LayoutFrame 204 0 55 0 245 0 58 0)
)
(DividerSpec
name: 'separator3'
layout: (LayoutFrame 196 0 28 0 199 0 50 0)
orientation: vertical
)
(DividerSpec
name: 'separator4'
layout: (LayoutFrame 250 0 28 0 253 0 50 0)
orientation: vertical
)
(ActionButtonSpec
name: 'alignTopLeft'
layout: (LayoutFrame 190 0 14 0 204 0 28 0)
activeHelpKey: alignTopLeft
tabable: true
model: alignTopLeft
)
(ActionButtonSpec
name: 'alignTopCenter'
layout: (LayoutFrame 217 0 14 0 231 0 28 0)
activeHelpKey: alignTopCenter
tabable: true
model: alignTopCenter
)
(ActionButtonSpec
name: 'alignTopRight'
layout: (LayoutFrame 245 0 14 0 259 0 28 0)
activeHelpKey: alignTopRight
tabable: true
model: alignTopRight
)
(ActionButtonSpec
name: 'alignLeftCenter'
layout: (LayoutFrame 190 0 32 0 204 0 46 0)
activeHelpKey: alignLeftCenter
tabable: true
model: alignLeftCenter
)
(ActionButtonSpec
name: 'alignCenter'
layout: (LayoutFrame 217 0 32 0 231 0 46 0)
activeHelpKey: alignCenter
tabable: true
model: alignCenter
)
(ActionButtonSpec
name: 'alignRightCenter'
layout: (LayoutFrame 245 0 32 0 259 0 46 0)
activeHelpKey: alignRightCenter
tabable: true
model: alignRightCenter
)
(ActionButtonSpec
name: 'alignBottomLeft'
layout: (LayoutFrame 190 0 50 0 204 0 64 0)
activeHelpKey: alignBottomLeft
tabable: true
model: alignBottomLeft
)
(ActionButtonSpec
name: 'alignBottomCenter'
layout: (LayoutFrame 217 0 50 0 231 0 64 0)
activeHelpKey: alignBottomCenter
tabable: true
model: alignBottomCenter
)
(ActionButtonSpec
name: 'alignBottomRight'
layout: (LayoutFrame 245 0 50 0 259 0 64 0)
activeHelpKey: alignBottomRight
tabable: true
model: alignBottomRight
)
)
)
)
)
)
)
! !
!UILayoutTool::AlignmentOrigin methodsFor:'accessing'!
fetch:aView spec:aSpec
"fetch alignmentOrigin
"
|layout type
leftAlignmentFractionHolder topAlignmentFractionHolder
leftOffsetHolder leftFractionHolder topOffsetHolder topFractionHolder|
type := UIPainterView layoutType:aView.
layout := aView geometryLayout.
leftOffsetHolder := (self aspectFor:#leftOffset).
leftFractionHolder := (self aspectFor:#leftFraction).
topOffsetHolder := (self aspectFor:#topOffset).
topFractionHolder := (self aspectFor:#topFraction).
leftAlignmentFractionHolder := (self aspectFor:#leftAlignmentFraction).
topAlignmentFractionHolder := (self aspectFor:#topAlignmentFraction).
layout isLayout ifTrue:[
leftOffsetHolder value:(layout leftOffset).
leftFractionHolder value:(layout leftFraction).
topOffsetHolder value:(layout topOffset).
topFractionHolder value:(layout topFraction).
type == #AlignmentOrigin ifTrue:[
leftAlignmentFractionHolder value:(layout leftAlignmentFraction).
topAlignmentFractionHolder value:(layout topAlignmentFraction).
^ self
]
] ifFalse:[
layout := aView computeOrigin.
leftOffsetHolder value:(layout x).
leftFractionHolder value:0.
topOffsetHolder value:(layout y).
topFractionHolder value:0.
].
leftAlignmentFractionHolder value:0.
topAlignmentFractionHolder value:0.
!
layout
"returns current layout as alignmentOrigin
"
|layout|
layout := Smalltalk::AlignmentOrigin new.
layout
leftFraction:(((self aspectFor:#leftFraction) value) ? 0)
offset:(((self aspectFor:#leftOffset) value) ? 0)
topFraction:(((self aspectFor:#topFraction) value) ? 0)
offset:(((self aspectFor:#topOffset) value) ? 0).
layout
leftAlignmentFraction:(((self aspectFor:#leftAlignmentFraction) value) ? 0)
topAlignmentFraction:(((self aspectFor:#topAlignmentFraction) value) ? 0).
^ layout
! !
!UILayoutTool::AlignmentOrigin methodsFor:'alignment'!
alignBottomCenter
self makeAlignLeft:0.5 top:1
!
alignBottomLeft
self makeAlignLeft:0 top:1
!
alignBottomRight
self makeAlignLeft:1 top:1
!
alignCenter
self makeAlignLeft:0.5 top:0.5
!
alignLeftCenter
self makeAlignLeft:0 top:0.5
!
alignRightCenter
self makeAlignLeft:1 top:0.5
!
alignTopCenter
self makeAlignLeft:0.5 top:0
!
alignTopLeft
self makeAlignLeft:0 top:0
!
alignTopRight
self makeAlignLeft:1 top:0
!
makeAlignLeft:leftAlignmentFraction top:topAlignmentFraction
|lAF tAF lO tO ext lAHolder tAHolder lOHolder tOHolder|
lAF := (lAHolder := self aspectFor:#leftAlignmentFraction) value ? 0.
tAF := (tAHolder := self aspectFor:#topAlignmentFraction) value ? 0.
ext := (self aspectFor:#layoutView) computeExtent.
lAHolder value:leftAlignmentFraction.
tAHolder value:topAlignmentFraction.
lO := (lOHolder := self aspectFor:#leftOffset) value ? 0.
tO := (tOHolder := self aspectFor:#topOffset) value ? 0.
lO := lO + (ext x * (leftAlignmentFraction - lAF)).
tO := tO + (ext y * (topAlignmentFraction - tAF)).
lOHolder value:(lO rounded).
tOHolder value:(tO rounded).
!
makeAlignTopRight
self makeAlignLeft:1 top:0
! !
!UILayoutTool::Extent class methodsFor:'help specs'!
helpSpec
"This resource specification was automatically generated
by the UIHelpTool of ST/X."
"Do not manually edit this!! If it is corrupted,
the UIHelpTool may not be able to read the specification."
"
UIHelpTool openOnClass:UILayoutTool::Extent
"
<resource: #help>
^super helpSpec addPairsFrom:#(
#hrzExtent
'Horizontal extent of the selected widget.'
#vrtExtent
'Vertical extent of the selected widget.'
)
! !
!UILayoutTool::Extent class methodsFor:'interface specs'!
windowSpec
"This resource specification was automatically generated
by the UIPainter of ST/X."
"Do not manually edit this!! If it is corrupted,
the UIPainter may not be able to read the specification."
"
UIPainter new openOnClass:UILayoutTool::Extent andSelector:#windowSpec
UILayoutTool::Extent new openInterface:#windowSpec
UILayoutTool::Extent open
"
<resource: #canvas>
^
#(FullSpec
name: windowSpec
window:
(WindowSpec
label: 'UILayoutTool-Extent'
name: 'UILayoutTool-Extent'
min: (Point 10 10)
bounds: (Rectangle 0 0 326 149)
)
component:
(SpecCollection
collection: (
(FramedBoxSpec
label: 'Extent'
name: 'FramedBox'
layout: (LayoutFrame 0 0.0 6 0.0 0 1.0 145 0)
labelPosition: topLeft
component:
(SpecCollection
collection: (
(LabelSpec
label: 'Width:'
name: 'labelWidth'
layout: (AlignmentOrigin 89 0 24 0 1 0.5)
adjust: right
)
(InputFieldSpec
name: 'fieldLeftOffset'
layout: (LayoutFrame 90 0 13 0 140 0 35 0)
activeHelpKey: hrzExtent
enableChannel: notUsingDefaultExtent
tabable: true
model: leftOffset
group: inputGroup
type: numberOrNil
acceptOnLostFocus: true
acceptChannel: acceptChannel
modifiedChannel: modifiedChannel
acceptOnPointerLeave: false
)
(LabelSpec
label: 'Height:'
name: 'labelHeight'
layout: (AlignmentOrigin 89 0 49 0 1 0.5)
adjust: right
)
(InputFieldSpec
name: 'fieldRightOffset'
layout: (LayoutFrame 90 0 38 0 140 0 60 0)
activeHelpKey: vrtExtent
enableChannel: notUsingDefaultExtent
tabable: true
model: rightOffset
group: inputGroup
type: numberOrNil
acceptOnLostFocus: true
acceptChannel: acceptChannel
modifiedChannel: modifiedChannel
acceptOnPointerLeave: false
)
(CheckBoxSpec
label: 'Use Widgets Default Extent'
name: 'useDefaultExtentCheckBox'
layout: (Point 5 67)
enableChannel: defaultExtentEnabled
tabable: true
model: useDefaultExtent
translateLabel: true
)
)
)
)
)
)
)
! !
!UILayoutTool::Extent methodsFor:'accessing'!
fetch:aView spec:aSpec
"fetch extent
"
|extent|
extent := aView computeExtent.
(self aspectFor:#leftOffset) value:(extent x).
(self aspectFor:#rightOffset) value:(extent y).
(self aspectFor:#useDefaultExtent) value:aSpec useDefaultExtent
!
layout
"returns current extent
"
^ Smalltalk::Point x:(((self aspectFor:#leftOffset) value) ? 0)
y:(((self aspectFor:#rightOffset) value) ? 0)
! !
!UILayoutTool::LayoutFrame class methodsFor:'defaults'!
defaultFixPartHeight
^ DefaultFixPartHeight ? 30
! !
!UILayoutTool::LayoutFrame class methodsFor:'help specs'!
helpSpec
"This resource specification was automatically generated
by the UIHelpTool of ST/X."
"Do not manually edit this!! If it is corrupted,
the UIHelpTool may not be able to read the specification."
"
UIHelpTool openOnClass:UILayoutTool::LayoutFrame
"
<resource: #help>
^super helpSpec addPairsFrom:#(
#bottomAbsolute
'Offset of the bottom edge; positive is to the bottom, negative to the top.'
#bottomFixPartLayout
'Set the layout for a fixed area at the bottom of the widgets containers space'
#bottomHalfLayout
'Set the layout for the bottom half of the widgets containers space'
#bottomLeftQuarterLayout
'Set the layout for the bottom-left quarter of the widgets containers space'
#bottomRelative
'Relative corner y of the selected widget.'
#bottomRightQuarterLayout
'Set the layout for the bottom-right quarter of the widgets containers space'
#horizontalFixPartLayout
'Set the layout for a fixed-height horizontal area'
#leftFixPartLayout
'Set the layout for a fixed area at the left of the widgets containers space'
#leftHalfLayout
'Set the layout for the left half of the widgets containers space'
#makeBottomAbsolute
'Compute pure-absolute y.'
#makeBottomRelative
'Computes pure-fractional y.'
#makeBottomRelativeFromBottom
'Compute fraction+offset for y relative to containers bottom.'
#makeRightAbsolute
'Compute pure-absolute x.'
#makeRightRelative
'Compute pure-fraction x.'
#makeRightRelativeFromRight
'Compute fraction+offset for x relative to containers right.'
#rightAbsolute
'Offset of the right edge; positive is to the right, negative to the left.'
#rightFixPartLayout
'Set the layout for a fixed area at the right of the widgets containers space'
#rightHalfLayout
'Set the layout for the right half of the widgets containers space'
#rightRelative
'Relative corner x of the selected widget.'
#topFixPartLayout
'Set the layout for a fixed area at the top of the widgets containers space'
#topHalfLayout
'Set the layout for the top half of the widgets containers space'
#topLeftQuarterLayout
'Set the layout for the top-left quarter of the widgets containers space'
#topRightQuarterLayout
'Set the layout for the top-right quarter of the widgets containers space'
#verticalFixPartLayout
'Set the layout for a fixed-height vertical area'
)
! !
!UILayoutTool::LayoutFrame class methodsFor:'image specs'!
setBigBottomFixPartIcon
"This resource specification was automatically generated
by the ImageEditor of ST/X."
"Do not manually edit this!! If it is corrupted,
the ImageEditor may not be able to read the specification."
"
self setBigBottomFixPartIcon inspect
ImageEditor openOnClass:self andSelector:#setBigBottomFixPartIcon
Icon flushCachedIcons
"
<resource: #image>
^Icon
constantNamed:#'UILayoutTool::LayoutFrame class setBigBottomFixPartIcon'
ifAbsentPut:[(Depth4Image new) width: 16; height: 16; photometric:(#palette); bitsPerSample:(#(4 )); samplesPerPixel:(1); bits:(ByteArray fromPackedString:'
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@"H"H@H"H"@BDQDP@QDQH@HQDQ@ADQD @!!DQD@DQDR@BDQDP@QDQH@HQ
DQ@ADQD @!!DQD@DQDR@BDQDP@QDQH@H"H"@BH"H @@@@@@@@@@@b') ; colorMapFromArray:#[0 0 0 255 0 0 255 255 255]; mask:((Depth1Image new) width: 16; height: 16; photometric:(#blackIs0); bitsPerSample:(#(1 )); samplesPerPixel:(1); bits:(ByteArray fromPackedString:'??>@@X@A @F@@_????????????????????????????<b') ; yourself); yourself]
!
setBigHorizontalFixPartIcon
"This resource specification was automatically generated
by the ImageEditor of ST/X."
"Do not manually edit this!! If it is corrupted,
the ImageEditor may not be able to read the specification."
"
self setBigHorizontalFixPartIcon inspect
ImageEditor openOnClass:self andSelector:#setBigHorizontalFixPartIcon
Icon flushCachedIcons
"
<resource: #image>
^Icon
constantNamed:#'UILayoutTool::LayoutFrame class setBigHorizontalFixPartIcon'
ifAbsentPut:[(Depth4Image new) width: 16; height: 16; photometric:(#palette); bitsPerSample:(#(4 )); samplesPerPixel:(1); bits:(ByteArray fromPackedString:'
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@BH"H @"H"H@HQDQ@ADQD @!!DQD@DQDR@BDQDP@QDQH@HQDQ@ADQD @!!DQD@DQDR@BDQDP@QDQH@H"
H"@BH"H @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@b') ; colorMapFromArray:#[0 0 0 255 0 0 255 255 255]; mask:((Depth1Image new) width: 16; height: 16; photometric:(#blackIs0); bitsPerSample:(#(1 )); samplesPerPixel:(1); bits:(ByteArray fromPackedString:'??>@@X@A??????????????????????????>@@X@A??<b') ; yourself); yourself]
!
setBigTopFixPartIcon
"This resource specification was automatically generated
by the ImageEditor of ST/X."
"Do not manually edit this!! If it is corrupted,
the ImageEditor may not be able to read the specification."
"
self setBigTopFixPartIcon inspect
ImageEditor openOnClass:self andSelector:#setBigTopFixPartIcon
Icon flushCachedIcons
"
<resource: #image>
^Icon
constantNamed:#'UILayoutTool::LayoutFrame class setBigTopFixPartIcon'
ifAbsentPut:[(Depth4Image new) width: 16; height: 16; photometric:(#palette); bitsPerSample:(#(4 )); samplesPerPixel:(1); bits:(ByteArray fromPackedString:'
@@@@@@@@@@@BH"H @"H"H@HQDQ@ADQD @!!DQD@DQDR@BDQDP@QDQH@HQDQ@ADQD @!!DQD@DQDR@BDQDP@QDQH@HQDQ@ADQD @"H"H@H"H"@@@@@@@@@@@@@@
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@b') ; colorMapFromArray:#[0 0 0 255 0 0 255 255 255]; mask:((Depth1Image new) width: 16; height: 16; photometric:(#blackIs0); bitsPerSample:(#(1 )); samplesPerPixel:(1); bits:(ByteArray fromPackedString:'?????????????????????????????8@A @F@@X@A??<b') ; yourself); yourself]
!
setBottomFixPartIcon
"This resource specification was automatically generated
by the ImageEditor of ST/X."
"Do not manually edit this!! If it is corrupted,
the ImageEditor may not be able to read the specification."
"
self setBottomFixPartIcon inspect
ImageEditor openOnClass:self andSelector:#setBottomFixPartIcon
"
<resource: #image>
^Icon
constantNamed:#'UILayoutTool::LayoutFrame setBottomFixPartIcon'
ifAbsentPut:[(Depth4Image new) width: 16; height: 16; photometric:(#palette); bitsPerSample:(#(4 )); samplesPerPixel:(1); bits:(ByteArray fromPackedString:'@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@H"H"@BH"H @!!DQD@DQDR@BDQDP@QDQH@H"H"@BH"H @@@@@@@@@@@b') ; colorMapFromArray:#[0 0 0 255 0 0 255 255 255]; mask:((Depth1Image new) width: 16; height: 16; photometric:(#blackIs0); bitsPerSample:(#(1 )); samplesPerPixel:(1); bits:(ByteArray fromPackedString:'??>@@X@A @F@@X@A @F@@X@A @G???????????????<b') ; yourself); yourself]
!
setBottomHalfIcon
"This resource specification was automatically generated
by the ImageEditor of ST/X."
"Do not manually edit this!! If it is corrupted,
the ImageEditor may not be able to read the specification."
"
self setBottomHalfIcon inspect
ImageEditor openOnClass:self andSelector:#setBottomHalfIcon
"
<resource: #image>
^Icon
constantNamed:#'UILayoutTool::LayoutFrame setBottomHalfIcon'
ifAbsentPut:[(Depth4Image new) width: 16; height: 16; photometric:(#palette); bitsPerSample:(#(4 )); samplesPerPixel:(1); bits:(ByteArray fromPackedString:'@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@"H"H"H"H"@BDQDQDQDQH@HQDQDQDQD @!!DQDQDQDR@BDQDQDQDQH@H"H"H"H"H @@@@@@@@@@@b') ; colorMapFromArray:#[0 0 0 255 0 0 255 255 255]; mask:((Depth1Image new) width: 16; height: 16; photometric:(#blackIs0); bitsPerSample:(#(1 )); samplesPerPixel:(1); bits:(ByteArray fromPackedString:'??>@@X@A @F@@X@A @F@@_????????????????????<b') ; yourself); yourself]
!
setBottomLeftQuarterIcon
"This resource specification was automatically generated
by the ImageEditor of ST/X."
"Do not manually edit this!! If it is corrupted,
the ImageEditor may not be able to read the specification."
"
self setBottomLeftQuarterIcon inspect
ImageEditor openOnClass:self andSelector:#setBottomLeftQuarterIcon
"
<resource: #image>
^Icon
constantNamed:#'UILayoutTool::LayoutFrame setBottomLeftQuarterIcon'
ifAbsentPut:[(Depth4Image new) width: 16; height: 16; photometric:(#palette); bitsPerSample:(#(4 )); samplesPerPixel:(1); bits:(ByteArray fromPackedString:'@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@H"H"@@@@@@@!!DQH@@@@@@BDQD @@@@@@HQDR@@@@@@@!!DQH@@@@@@BDQD @@@@@@H"H"@@@@@@@@@@@@@@@@@b') ; colorMapFromArray:#[0 0 0 255 0 0 255 255 255]; mask:((Depth1Image new) width: 16; height: 16; photometric:(#blackIs0); bitsPerSample:(#(1 )); samplesPerPixel:(1); bits:(ByteArray fromPackedString:'??>@@X@A @F@@X@A @G?@_<A?0G?@_<A?0G?@_<A??<b') ; yourself); yourself]
!
setBottomRightQuarterIcon
"This resource specification was automatically generated
by the ImageEditor of ST/X."
"Do not manually edit this!! If it is corrupted,
the ImageEditor may not be able to read the specification."
"
self setBottomRightQuarterIcon inspect
ImageEditor openOnClass:self andSelector:#setBottomRightQuarterIcon
"
<resource: #image>
^Icon
constantNamed:#'UILayoutTool::LayoutFrame setBottomRightQuarterIcon'
ifAbsentPut:[(Depth4Image new) width: 16; height: 16; photometric:(#palette); bitsPerSample:(#(4 )); samplesPerPixel:(1); bits:(ByteArray fromPackedString:'@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@BH"H"@@@@@@HQDQH@@@@@@!!DQD @@@@@BDQDR@@@@@@HQDQH@@@@@@"H"H @@@@@@@@@@@b') ; colorMapFromArray:#[0 0 0 255 0 0 255 255 255]; mask:((Depth1Image new) width: 16; height: 16; photometric:(#blackIs0); bitsPerSample:(#(1 )); samplesPerPixel:(1); bits:(ByteArray fromPackedString:'??>@@X@A @F@@X@A @F@@XG? _>A?8G? _>A?8G???<b') ; yourself); yourself]
!
setFullIcon
"This resource specification was automatically generated
by the ImageEditor of ST/X."
"Do not manually edit this!! If it is corrupted,
the ImageEditor may not be able to read the specification."
"
self setFullIcon inspect
ImageEditor openOnClass:self andSelector:#setFullIcon
Icon flushCachedIcons
"
<resource: #image>
^Icon
constantNamed:#'UILayoutTool::LayoutFrame class setFullIcon'
ifAbsentPut:[(Depth4Image new) width: 16; height: 16; photometric:(#palette); bitsPerSample:(#(4 )); samplesPerPixel:(1); bits:(ByteArray fromPackedString:'
@@@@@@@@@@@BH"H"H"H"H@HQDQDQDQD @!!DQDQDQDR@BDQDQDQDQH@HQDQDQDQD @!!DQDQDQDR@BDQDQDQDQH@HQDQDQDQD @!!DQDQDQDR@BDQDQDQDQH@HQ
DQDQDQD @!!DQDQDQDR@BDQDQDQDQH@H"H"H"H"H @@@@@@@@@@@b') ; colorMapFromArray:#[0 0 0 255 0 0 255 255 255]; mask:((Depth1Image new) width: 16; height: 16; photometric:(#blackIs0); bitsPerSample:(#(1 )); samplesPerPixel:(1); bits:(ByteArray fromPackedString:'??????????????????????????????????????????<b') ; yourself); yourself]
!
setHorizontalFixPartIcon
"This resource specification was automatically generated
by the ImageEditor of ST/X."
"Do not manually edit this!! If it is corrupted,
the ImageEditor may not be able to read the specification."
"
self setHorizontalFixPartIcon inspect
ImageEditor openOnClass:self andSelector:#setHorizontalFixPartIcon
"
<resource: #image>
^Icon
constantNamed:#'UILayoutTool::LayoutFrame setHorizontalFixPartIcon'
ifAbsentPut:[(Depth4Image new) width: 16; height: 16; photometric:(#palette); bitsPerSample:(#(4 )); samplesPerPixel:(1); bits:(ByteArray fromPackedString:'
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@"H"H@H"H"@BDQDP@QDQH@HQDQ@ADQD @"H"H@H"H"@@@@@@@@@@@@@@
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@b') ; colorMapFromArray:#[0 0 0 255 0 0 255 255 255]; mask:((Depth1Image new) width: 16; height: 16; photometric:(#blackIs0); bitsPerSample:(#(1 )); samplesPerPixel:(1); bits:(ByteArray fromPackedString:'??>@@X@A @F@@_???????????????8@A @F@@X@A??<b') ; yourself); yourself]
!
setLeftFixPartIcon
"This resource specification was automatically generated
by the ImageEditor of ST/X."
"Do not manually edit this!! If it is corrupted,
the ImageEditor may not be able to read the specification."
"
self setLeftFixPartIcon inspect
ImageEditor openOnClass:self andSelector:#setLeftFixPartIcon
"
<resource: #image>
^Icon
constantNamed:#'UILayoutTool::LayoutFrame setLeftFixPartIcon'
ifAbsentPut:[(Depth4Image new) width: 16; height: 16; photometric:(#palette); bitsPerSample:(#(4 )); samplesPerPixel:(1); bits:(ByteArray fromPackedString:'
@@@@@@@@@@@BH"@@@@@@@@HQH@@@@@@@@!!D @@@@@@@BDR@@@@@@@@HQH@@@@@@@@!!D @@@@@@@@@@@@@@@@@@@@@@@@@@@@@!!D @@@@@@@BDR@@@@@@@@HQ
H@@@@@@@@!!D @@@@@@@BDR@@@@@@@@H"H@@@@@@@@@@@@@@@@@@b') ; colorMapFromArray:#[0 0 0 255 0 0 255 255 255]; mask:((Depth1Image new) width: 16; height: 16; photometric:(#blackIs0); bitsPerSample:(#(1 )); samplesPerPixel:(1); bits:(ByteArray fromPackedString:'???<@_0A?@G<@_0A?@G<@_0A?@G<@_0A?@G<@_0A??<b') ; yourself); yourself]
!
setLeftHalfIcon
"This resource specification was automatically generated
by the ImageEditor of ST/X."
"Do not manually edit this!! If it is corrupted,
the ImageEditor may not be able to read the specification."
"
self setLeftHalfIcon inspect
ImageEditor openOnClass:self andSelector:#setLeftHalfIcon
"
<resource: #image>
^Icon
constantNamed:#'UILayoutTool::LayoutFrame setLeftHalfIcon'
ifAbsentPut:[(Depth4Image new) width: 16; height: 16; photometric:(#palette); bitsPerSample:(#(4 )); samplesPerPixel:(1); bits:(ByteArray fromPackedString:'@@@@@@@@@@@BH"H @@@@@@HQDR@@@@@@@!!DQH@@@@@@BDQD @@@@@@HQDR@@@@@@@!!DQH@@@@@@BDQD @@@@@@HQDR@@@@@@@!!DQH@@@@@@BDQD @@@@@@HQDR@@@@@@@!!DQH@@@@@@BDQD @@@@@@H"H"@@@@@@@@@@@@@@@@@b') ; colorMapFromArray:#[0 0 0 255 0 0 255 255 255]; mask:((Depth1Image new) width: 16; height: 16; photometric:(#blackIs0); bitsPerSample:(#(1 )); samplesPerPixel:(1); bits:(ByteArray fromPackedString:'????@_<A?0G?@_<A?0G?@_<A?0G?@_<A?0G?@_<A??<b') ; yourself); yourself]
!
setRightFixPartIcon
"This resource specification was automatically generated
by the ImageEditor of ST/X."
"Do not manually edit this!! If it is corrupted,
the ImageEditor may not be able to read the specification."
"
self setRightFixPartIcon inspect
ImageEditor openOnClass:self andSelector:#setRightFixPartIcon
"
<resource: #image>
^Icon
constantNamed:#'UILayoutTool::LayoutFrame setRightFixPartIcon'
ifAbsentPut:[(Depth4Image new) width: 16; height: 16; photometric:(#palette); bitsPerSample:(#(4 )); samplesPerPixel:(1); bits:(ByteArray fromPackedString:'
@@@@@@@@@@@@@@@@@@H"H@@@@@@@@!!D @@@@@@@BDR@@@@@@@@HQH@@@@@@@@!!D @@@@@@@BDR@@@@@@@@@@@@@@@@@@@@@@@@@@@@@BDR@@@@@@@@HQH@@@
@@@@@!!D @@@@@@@BDR@@@@@@@@HQH@@@@@@@@"H @@@@@@@@@@@b') ; colorMapFromArray:#[0 0 0 255 0 0 255 255 255]; mask:((Depth1Image new) width: 16; height: 16; photometric:(#blackIs0); bitsPerSample:(#(1 )); samplesPerPixel:(1); bits:(ByteArray fromPackedString:'??>@O8@? C>@O8@? C>@O8@? C>@O8@? C>@O8@???<b') ; yourself); yourself]
!
setRightHalfIcon
"This resource specification was automatically generated
by the ImageEditor of ST/X."
"Do not manually edit this!! If it is corrupted,
the ImageEditor may not be able to read the specification."
"
self setRightHalfIcon inspect
ImageEditor openOnClass:self andSelector:#setRightHalfIcon
"
<resource: #image>
^Icon
constantNamed:#'UILayoutTool::LayoutFrame setRightHalfIcon'
ifAbsentPut:[(Depth4Image new) width: 16; height: 16; photometric:(#palette); bitsPerSample:(#(4 )); samplesPerPixel:(1); bits:(ByteArray fromPackedString:'@@@@@@@@@@@@@@@@@"H"H@@@@@@BDQD @@@@@@HQDR@@@@@@@!!DQH@@@@@@BDQD @@@@@@HQDR@@@@@@@!!DQH@@@@@@BDQD @@@@@@HQDR@@@@@@@!!DQH@@@@@@BDQD @@@@@@HQDR@@@@@@@!!DQH@@@@@@BH"H @@@@@@@@@@@b') ; colorMapFromArray:#[0 0 0 255 0 0 255 255 255]; mask:((Depth1Image new) width: 16; height: 16; photometric:(#blackIs0); bitsPerSample:(#(1 )); samplesPerPixel:(1); bits:(ByteArray fromPackedString:'??>@?8C? O>@?8C? O>@?8C? O>@?8C? O>@?8C???<b') ; yourself); yourself]
!
setToRightQuarterIcon
"This resource specification was automatically generated
by the ImageEditor of ST/X."
"Do not manually edit this!! If it is corrupted,
the ImageEditor may not be able to read the specification."
"
self setToRightQuarterIcon inspect
ImageEditor openOnClass:self andSelector:#setToRightQuarterIcon
"
<resource: #image>
^Icon
constantNamed:#'UILayoutTool::LayoutFrame setToRightQuarterIcon'
ifAbsentPut:[(Depth4Image new) width: 16; height: 16; photometric:(#palette); bitsPerSample:(#(4 )); samplesPerPixel:(1); bits:(ByteArray fromPackedString:'@@@@@@@@@@@@@@@@@"H"H@@@@@@BDQD @@@@@@HQDR@@@@@@@!!DQH@@@@@@BDQD @@@@@@HQDR@@@@@@@"H"H@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@b') ; colorMapFromArray:#[0 0 0 255 0 0 255 255 255]; mask:((Depth1Image new) width: 16; height: 16; photometric:(#blackIs0); bitsPerSample:(#(1 )); samplesPerPixel:(1); bits:(ByteArray fromPackedString:'??>@?8C? O>@?8C? O>@?8C? @F@@X@A @F@@X@A??<b') ; yourself); yourself]
!
setTopFixPartIcon
"This resource specification was automatically generated
by the ImageEditor of ST/X."
"Do not manually edit this!! If it is corrupted,
the ImageEditor may not be able to read the specification."
"
self setTopFixPartIcon inspect
ImageEditor openOnClass:self andSelector:#setTopFixPartIcon
"
<resource: #image>
^Icon
constantNamed:#'UILayoutTool::LayoutFrame setTopFixPartIcon'
ifAbsentPut:[(Depth4Image new) width: 16; height: 16; photometric:(#palette); bitsPerSample:(#(4 )); samplesPerPixel:(1); bits:(ByteArray fromPackedString:'@@@@@@@@@@@BH"H @"H"H@HQDQ@ADQD @!!DQD@DQDR@BH"H @"H"H@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@b') ; colorMapFromArray:#[0 0 0 255 0 0 255 255 255]; mask:((Depth1Image new) width: 16; height: 16; photometric:(#blackIs0); bitsPerSample:(#(1 )); samplesPerPixel:(1); bits:(ByteArray fromPackedString:'???????????????? @F@@X@A @F@@X@A @F@@X@A??<b') ; yourself); yourself]
!
setTopHalfIcon
"This resource specification was automatically generated
by the ImageEditor of ST/X."
"Do not manually edit this!! If it is corrupted,
the ImageEditor may not be able to read the specification."
"
self setTopHalfIcon inspect
ImageEditor openOnClass:self andSelector:#setTopHalfIcon
"
<resource: #image>
^Icon
constantNamed:#'UILayoutTool::LayoutFrame setTopHalfIcon'
ifAbsentPut:[(Depth4Image new) width: 16; height: 16; photometric:(#palette); bitsPerSample:(#(4 )); samplesPerPixel:(1); bits:(ByteArray fromPackedString:'@@@@@@@@@@@BH"H"H"H"H@HQDQDQDQD @!!DQDQDQDR@BDQDQDQDQH@HQDQDQDQD @"H"H"H"H"@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@b') ; colorMapFromArray:#[0 0 0 255 0 0 255 255 255]; mask:((Depth1Image new) width: 16; height: 16; photometric:(#blackIs0); bitsPerSample:(#(1 )); samplesPerPixel:(1); bits:(ByteArray fromPackedString:'?????????????????????8@A @F@@X@A @F@@X@A??<b') ; yourself); yourself]
!
setTopLeftQuarterIcon
"This resource specification was automatically generated
by the ImageEditor of ST/X."
"Do not manually edit this!! If it is corrupted,
the ImageEditor may not be able to read the specification."
"
self setTopLeftQuarterIcon inspect
ImageEditor openOnClass:self andSelector:#setTopLeftQuarterIcon
"
<resource: #image>
^Icon
constantNamed:#'UILayoutTool::LayoutFrame setTopLeftQuarterIcon'
ifAbsentPut:[(Depth4Image new) width: 16; height: 16; photometric:(#palette); bitsPerSample:(#(4 )); samplesPerPixel:(1); bits:(ByteArray fromPackedString:'@@@@@@@@@@@BH"H"@@@@@@HQDQH@@@@@@!!DQD @@@@@BDQDR@@@@@@HQDQH@@@@@@"H"H @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@b') ; colorMapFromArray:#[0 0 0 255 0 0 255 255 255]; mask:((Depth1Image new) width: 16; height: 16; photometric:(#blackIs0); bitsPerSample:(#(1 )); samplesPerPixel:(1); bits:(ByteArray fromPackedString:'???? _>A?8G? _>A?8G? X@A @F@@X@A @F@@X@A??<b') ; yourself); yourself]
!
setVerticalFixPartIcon
"This resource specification was automatically generated
by the ImageEditor of ST/X."
"Do not manually edit this!! If it is corrupted,
the ImageEditor may not be able to read the specification."
"
self setVerticalFixPartIcon inspect
ImageEditor openOnClass:self andSelector:#setVerticalFixPartIcon
"
<resource: #image>
^Icon
constantNamed:#'UILayoutTool::LayoutFrame setVerticalFixPartIcon'
ifAbsentPut:[(Depth4Image new) width: 16; height: 16; photometric:(#palette); bitsPerSample:(#(4 )); samplesPerPixel:(1); bits:(ByteArray fromPackedString:'
@@@@@@@@@@@@@@@"H @@@@@@@BDR@@@@@@@@HQH@@@@@@@@!!D @@@@@@@BDR@@@@@@@@HQH@@@@@@@@@@@@@@@@@@@@@@@@@@@@@HQH@@@@@@@@!!D @@@@@@
@BDR@@@@@@@@HQH@@@@@@@@!!D @@@@@@@BH"@@@@@@@@@@@@@@@b') ; colorMapFromArray:#[0 0 0 255 0 0 255 255 255]; mask:((Depth1Image new) width: 16; height: 16; photometric:(#blackIs0); bitsPerSample:(#(1 )); samplesPerPixel:(1); bits:(ByteArray fromPackedString:'??>G8X_!!!!>FG8X_!!!!>FG8X_!!!!>FG8X_!!!!>FG8X_!!??<b') ; yourself); yourself]
! !
!UILayoutTool::LayoutFrame class methodsFor:'interface specs'!
windowSpec
"This resource specification was automatically generated
by the UIPainter of ST/X."
"Do not manually edit this!! If it is corrupted,
the UIPainter may not be able to read the specification."
"
UIPainter new openOnClass:UILayoutTool::LayoutFrame andSelector:#windowSpec
UILayoutTool::LayoutFrame new openInterface:#windowSpec
UILayoutTool::LayoutFrame open
"
<resource: #canvas>
^
#(FullSpec
name: windowSpec
window:
(WindowSpec
label: 'UILayoutTool-LayoutFrame'
name: 'UILayoutTool-LayoutFrame'
min: (Point 10 10)
bounds: (Rectangle 14 46 413 349)
forceRecursiveBackground: false
)
component:
(SpecCollection
collection: (
(UISubSpecification
name: 'layoutOriginSpec'
layout: (LayoutFrame 1 0.0 6 0 0 1.0 110 0)
majorKey: UILayoutTool
minorKey: layoutOriginSpec
)
(FramedBoxSpec
label: 'Corner'
name: 'FramedBox'
layout: (LayoutFrame 1 0.0 113 0 0 1.0 214 0)
labelPosition: topLeft
component:
(SpecCollection
collection: (
(LabelSpec
label: 'Right:'
name: 'labelRight'
layout: (AlignmentOrigin 68 0 25 0 1 0.5)
)
(ActionButtonSpec
label: 'imageFractX'
name: 'actionRelativeRight'
layout: (LayoutFrame 78 0 14 0 100 0 36 0)
activeHelpKey: makeRightRelative
hasCharacterOrientedLabel: false
tabable: true
model: relativeRight
)
(InputFieldSpec
name: 'fieldRightFraction'
layout: (LayoutFrame 103 0 14 0 153 0 36 0)
activeHelpKey: rightRelative
tabable: true
model: rightFraction
group: inputGroup
type: numberOrNil
acceptOnLostFocus: true
acceptChannel: acceptChannel
modifiedChannel: modifiedChannel
acceptOnPointerLeave: false
)
(ActionButtonSpec
label: 'imageAbsXFromRight'
name: 'actionRightRelativeRight'
layout: (LayoutFrame 257 0 14 0 279 0 36 0)
activeHelpKey: makeRightRelativeFromRight
hasCharacterOrientedLabel: false
tabable: true
model: rightRelativeRight
)
(InputFieldSpec
name: 'fieldRightOffset'
layout: (LayoutFrame 203 0 14 0 253 0 36 0)
activeHelpKey: rightAbsolute
tabable: true
model: rightOffset
group: inputGroup
type: numberOrNil
acceptOnLostFocus: true
acceptChannel: acceptChannel
modifiedChannel: modifiedChannel
acceptOnPointerLeave: false
)
(ActionButtonSpec
label: 'imageAbsX'
name: 'actionAbsoluteRight'
layout: (LayoutFrame 178 0 14 0 200 0 36 0)
activeHelpKey: makeRightAbsolute
hasCharacterOrientedLabel: false
tabable: true
model: absoluteRight
)
(LabelSpec
label: 'Bottom:'
name: 'labelBottom'
layout: (AlignmentOrigin 68 0 53 0 1 0.5)
)
(ActionButtonSpec
label: 'imageFractY'
name: 'actionRelativeBottom'
layout: (LayoutFrame 78 0 42 0 100 0 64 0)
activeHelpKey: makeBottomRelative
hasCharacterOrientedLabel: false
tabable: true
model: relativeBottom
)
(InputFieldSpec
name: 'fieldBottomFraction'
layout: (LayoutFrame 103 0 42 0 153 0 64 0)
activeHelpKey: bottomRelative
tabable: true
model: bottomFraction
group: inputGroup
type: numberOrNil
acceptOnLostFocus: true
acceptChannel: acceptChannel
modifiedChannel: modifiedChannel
acceptOnPointerLeave: false
)
(ActionButtonSpec
label: 'imageAbsYFromBottom'
name: 'actionBottomRelativeBottom'
layout: (LayoutFrame 257 0 42 0 279 0 64 0)
activeHelpKey: makeBottomRelativeFromBottom
hasCharacterOrientedLabel: false
tabable: true
model: bottomRelativeBottom
)
(InputFieldSpec
name: 'fieldBottomOffset'
layout: (LayoutFrame 203 0 42 0 253 0 64 0)
activeHelpKey: bottomAbsolute
tabable: true
model: bottomOffset
group: inputGroup
type: numberOrNil
acceptOnLostFocus: true
acceptChannel: acceptChannel
modifiedChannel: modifiedChannel
acceptOnPointerLeave: false
)
(ActionButtonSpec
label: 'imageAbsY'
name: 'actionAbsoluteBottom'
layout: (LayoutFrame 178 0 42 0 200 0 64 0)
activeHelpKey: makeBottomAbsolute
hasCharacterOrientedLabel: false
tabable: true
model: absoluteBottom
)
)
)
)
(MenuPanelSpec
name: 'commonLayoutToolBar1'
layout: (LayoutFrame 6 0.0 215 0 -4 1.0 247 0)
level: 0
tabable: true
menu: commonFrameLayoutsMenu1
textDefault: true
)
(MenuPanelSpec
name: 'commonLayoutToolBar2'
layout: (LayoutFrame 6 0.0 255 0 -4 1.0 287 0)
level: 0
tabable: true
menu: commonFrameLayoutsMenu2
textDefault: true
)
#(#MenuPanelSpec
#name: 'commonLayoutToolBar3'
#layout: #(LayoutFrame 6 0.0 295 0 -4 1.0 327 0)
#level: 0
#tabable: true
#menu: #commonFrameLayoutsMenu3
#textDefault: true
)
)
)
)
! !
!UILayoutTool::LayoutFrame class methodsFor:'menu specs'!
commonFrameLayoutsMenu1
"This resource specification was automatically generated
by the MenuEditor of ST/X."
"Do not manually edit this!! If it is corrupted,
the MenuEditor may not be able to read the specification."
"
MenuEditor new openOnClass:UILayoutTool::LayoutFrame andSelector:#commonFrameLayoutsMenu1
(Menu new fromLiteralArrayEncoding:(UILayoutTool::LayoutFrame commonFrameLayoutsMenu1)) startUp
"
<resource: #menu>
^
#(#Menu
#(
#(#MenuItem
#activeHelpKey: #fullLayout
#label: 'setFullFrame'
#itemValue: #setFullFrame
#nameKey: #setFullFrame
#translateLabel: true
#isButton: true
#labelImage: #(#ResourceRetriever #'UILayoutTool::LayoutFrame' #setFullIcon)
)
#(#MenuItem
#label: ''
)
#(#MenuItem
#activeHelpKey: #topHalfLayout
#label: 'setTopHalfFrame'
#itemValue: #setTopHalfFrame
#nameKey: #setTopHalfFrame
#translateLabel: true
#isButton: true
#labelImage: #(#ResourceRetriever #'UILayoutTool::LayoutFrame' #setTopHalfIcon)
)
#(#MenuItem
#activeHelpKey: #bottomHalfLayout
#label: 'setBottomHalfFrame'
#itemValue: #setBottomHalfFrame
#nameKey: #setBottomHalfFrame
#translateLabel: true
#isButton: true
#labelImage: #(#ResourceRetriever nil #setBottomHalfIcon)
)
#(#MenuItem
#activeHelpKey: #leftHalfLayout
#label: 'setLeftHalfFrame'
#itemValue: #setLeftHalfFrame
#nameKey: #setLeftHalfFrame
#translateLabel: true
#isButton: true
#labelImage: #(#ResourceRetriever nil #setLeftHalfIcon)
)
#(#MenuItem
#activeHelpKey: #rightHalfLayout
#label: 'setRightHalfFrame'
#itemValue: #setRightHalfFrame
#nameKey: #setRightHalfFrame
#translateLabel: true
#isButton: true
#labelImage: #(#ResourceRetriever nil #setRightHalfIcon)
)
#(#MenuItem
#label: ''
)
#(#MenuItem
#activeHelpKey: #topLeftQuarterLayout
#label: 'setTopLeftQuarterFrame'
#itemValue: #setTopLeftQuarterFrame
#nameKey: #setTopLeftQuarterFrame
#translateLabel: true
#isButton: true
#labelImage: #(#ResourceRetriever nil #setTopLeftQuarterIcon)
)
#(#MenuItem
#activeHelpKey: #topRightQuarterLayout
#label: 'setTopRightQuarterFrame'
#itemValue: #setTopRightQuarterFrame
#nameKey: #setTopRightQuarterFrame
#translateLabel: true
#isButton: true
#labelImage: #(#ResourceRetriever nil #setToRightQuarterIcon)
)
#(#MenuItem
#activeHelpKey: #bottomRightQuarterLayout
#label: 'setBottomRightQuarterFrame'
#itemValue: #setBottomRightQuarterFrame
#nameKey: #setBottomRightQuarterFrame
#translateLabel: true
#isButton: true
#labelImage: #(#ResourceRetriever nil #setBottomRightQuarterIcon)
)
#(#MenuItem
#activeHelpKey: #bottomLeftQuarterLayout
#label: 'setBottomLeftQuarterFrame'
#itemValue: #setBottomLeftQuarterFrame
#nameKey: #setBottomLeftQuarterFrame
#translateLabel: true
#isButton: true
#labelImage: #(#ResourceRetriever nil #setBottomLeftQuarterIcon)
)
)
nil
nil
)
!
commonFrameLayoutsMenu2
"This resource specification was automatically generated
by the MenuEditor of ST/X."
"Do not manually edit this!! If it is corrupted,
the MenuEditor may not be able to read the specification."
"
MenuEditor new openOnClass:UILayoutTool::LayoutFrame andSelector:#commonFrameLayoutsMenu2
(Menu new fromLiteralArrayEncoding:(UILayoutTool::LayoutFrame commonFrameLayoutsMenu2)) startUp
"
<resource: #menu>
^
#(#Menu
#(
#(#MenuItem
#activeHelpKey: #topFixPartLayout
#label: 'setTopFixPartFrame'
#itemValue: #setTopFixPartFrame
#nameKey: #setTopFixPartFrame
#translateLabel: true
#isButton: true
#labelImage: #(#ResourceRetriever nil #setTopFixPartIcon)
)
#(#MenuItem
#activeHelpKey: #horizontalFixPartLayout
#label: 'setHorizontalFixPartFrame'
#itemValue: #setHorizontalFixPartFrame
#nameKey: #setHorizontalFixPartFrame
#translateLabel: true
#isButton: true
#labelImage: #(#ResourceRetriever nil #setHorizontalFixPartIcon)
)
#(#MenuItem
#activeHelpKey: #bottomFixPartLayout
#label: 'setBottomFixPartFrame'
#itemValue: #setBottomFixPartFrame
#nameKey: #setBottomFixPartFrame
#translateLabel: true
#isButton: true
#labelImage: #(#ResourceRetriever nil #setBottomFixPartIcon)
)
#(#MenuItem
#label: ''
)
#(#MenuItem
#activeHelpKey: #leftFixPartLayout
#label: 'setLeftFixPartFrame'
#itemValue: #setLeftFixPartFrame
#nameKey: #setLeftFixPartFrame
#translateLabel: true
#isButton: true
#labelImage: #(#ResourceRetriever nil #setLeftFixPartIcon)
)
#(#MenuItem
#activeHelpKey: #verticalFixPartLayout
#label: 'setVerticalFixPartFrame'
#itemValue: #setVerticalFixPartFrame
#nameKey: #setVerticalFixPartFrame
#translateLabel: true
#isButton: true
#labelImage: #(#ResourceRetriever nil #setVerticalFixPartIcon)
)
#(#MenuItem
#activeHelpKey: #rightFixPartLayout
#label: 'setRightFixPartFrame'
#itemValue: #setRightFixPartFrame
#nameKey: #setRightFixPartFrame
#translateLabel: true
#isButton: true
#labelImage: #(#ResourceRetriever nil #setRightFixPartIcon)
)
#(#MenuItem
#label: ''
)
#(#MenuItem
#activeHelpKey: #bigTopFixPartLayout
#label: 'setBigTopFixPartFrame'
#itemValue: #setBigTopFixPartFrame
#nameKey: #setBigTopFixPartFrame
#translateLabel: true
#isButton: true
#labelImage: #(#ResourceRetriever nil #setBigTopFixPartIcon)
)
#(#MenuItem
#activeHelpKey: #bigHorizontalFixPartLayout
#label: 'setBigHorizontalFixPartFrame'
#itemValue: #setBigHorizontalFixPartFrame
#nameKey: #setBigHorizontalFixPartFrame
#translateLabel: true
#isButton: true
#labelImage: #(#ResourceRetriever nil #setBigHorizontalFixPartIcon)
)
#(#MenuItem
#activeHelpKey: #bigBottomFixPartLayout
#label: 'setBigBottomFixPartFrame'
#itemValue: #setBigBottomFixPartFrame
#nameKey: #setBigBottomFixPartFrame
#translateLabel: true
#isButton: true
#labelImage: #(#ResourceRetriever nil #setBigBottomFixPartIcon)
)
)
nil
nil
)
!
commonFrameLayoutsMenu3
"This resource specification was automatically generated
by the MenuEditor of ST/X."
"Do not manually edit this!! If it is corrupted,
the MenuEditor may not be able to read the specification."
"
MenuEditor new openOnClass:UILayoutTool::LayoutFrame andSelector:#commonFrameLayoutsMenu2
(Menu new fromLiteralArrayEncoding:(UILayoutTool::LayoutFrame commonFrameLayoutsMenu2)) startUp
"
<resource: #menu>
^
#(#Menu
#(
#(#MenuItem
#label: 'setScreenFrame'
#translateLabel: true
#isButton: true
#nameKey: #setScreenFrame
#value: #setScreenFrame
#activeHelpKey: #screenFrameLayout
#enabled: true
#labelImage: #(#ResourceRetriever #'UILayoutTool::LayoutFrame' #setScreenIcon)
)
)
nil
nil
)
! !
!UILayoutTool::LayoutFrame methodsFor:'accessing'!
fetch:aView spec:aSpec
|layout|
aSpec class == WindowSpec ifTrue:[
(layout := aSpec layout) isNil ifTrue:[
layout := aSpec bounds asLayout.
]
] ifFalse: [
layout := UIPainterView asLayoutFrameFromView:aView.
].
(self aspectFor:#leftOffset) value:(layout leftOffset).
(self aspectFor:#leftFraction) value:(layout leftFraction).
(self aspectFor:#topOffset) value:(layout topOffset).
(self aspectFor:#topFraction) value:(layout topFraction).
(self aspectFor:#rightOffset) value:(layout rightOffset).
(self aspectFor:#bottomOffset) value:(layout bottomOffset).
(self aspectFor:#rightFraction) value:(layout rightFraction).
(self aspectFor:#bottomFraction) value:(layout bottomFraction).
!
layout
"returns current layout as layoutFrame
"
|layout|
layout := Smalltalk::LayoutFrame new.
layout
leftFraction:(((self aspectFor:#leftFraction) value) ? 0)
offset:(((self aspectFor:#leftOffset) value) ? 0)
rightFraction:(((self aspectFor:#rightFraction) value) ? 0)
offset:(((self aspectFor:#rightOffset) value) ? 0)
topFraction:(((self aspectFor:#topFraction) value) ? 0)
offset:(((self aspectFor:#topOffset) value) ? 0)
bottomFraction:(((self aspectFor:#bottomFraction) value) ? 0)
offset:(((self aspectFor:#bottomOffset) value) ? 0).
^ layout
! !
!UILayoutTool::LayoutFrame methodsFor:'common frames'!
setBigBottomFixPartFrame
self
setFrameLeft:0 offset:0
right:1 offset:0
top:0 offset:(self class defaultFixPartHeight)
bottom:1 offset:0
!
setBigHorizontalFixPartFrame
self
setFrameLeft:0 offset:0
right:1 offset:0
top:0 offset:(self class defaultFixPartHeight)
bottom:1 offset:(self class defaultFixPartHeight negated)
!
setBigTopFixPartFrame
self
setFrameLeft:0 offset:0
right:1 offset:0
top:0 offset:0
bottom:1 offset:(self class defaultFixPartHeight negated)
!
setBottomFixPartFrame
self
setFrameLeft:0 offset:0
right:1 offset:0
top:1 offset:(self class defaultFixPartHeight negated)
bottom:1 offset:0
!
setBottomHalfFrame
self
setFrameLeft:0 offset:0
right:1 offset:0
top:0.5 offset:0
bottom:1 offset:0
!
setBottomLeftQuarterFrame
self
setFrameLeft:0 offset:0
right:0.5 offset:0
top:0.5 offset:0
bottom:1 offset:0
!
setBottomRightQuarterFrame
self
setFrameLeft:0.5 offset:0
right:1 offset:0
top:0.5 offset:0
bottom:1 offset:0
!
setFrameLeft:lF offset:lO right:rF offset:rO top:tF offset:tO bottom:bF offset:bO
(self aspectFor:#leftOffset) value:lO.
(self aspectFor:#rightOffset) value:rO.
(self aspectFor:#topOffset) value:tO.
(self aspectFor:#bottomOffset) value:bO.
(self aspectFor:#leftFraction) value:lF.
(self aspectFor:#rightFraction) value:rF.
(self aspectFor:#topFraction) value:tF.
(self aspectFor:#bottomFraction) value:bF.
!
setFullFrame
self
setFrameLeft:0 offset:0
right:1 offset:0
top:0 offset:0
bottom:1 offset:0
!
setHorizontalFixPartFrame
self
setFrameLeft:0 offset:0
right:1 offset:0
top:0.5 offset:(self class defaultFixPartHeight negated // 2)
bottom:0.5 offset:(self class defaultFixPartHeight // 2)
!
setLeftFixPartFrame
self
setFrameLeft:0 offset:0
right:0 offset:(self class defaultFixPartHeight)
top:0 offset:0
bottom:1 offset:0
!
setLeftHalfFrame
self
setFrameLeft:0 offset:0
right:0.5 offset:0
top:0 offset:0
bottom:1 offset:0
!
setRightFixPartFrame
self
setFrameLeft:1 offset:(self class defaultFixPartHeight negated)
right:1 offset:0
top:0 offset:0
bottom:1 offset:0
!
setRightHalfFrame
self
setFrameLeft:0.5 offset:0
right:1 offset:0
top:0 offset:0
bottom:1 offset:0
!
setTopFixPartFrame
self
setFrameLeft:0 offset:0
right:1 offset:0
top:0 offset:0
bottom:0 offset:(self class defaultFixPartHeight)
!
setTopHalfFrame
self
setFrameLeft:0 offset:0
right:1 offset:0
top:0 offset:0
bottom:0.5 offset:0
!
setTopLeftQuarterFrame
self
setFrameLeft:0 offset:0
right:0.5 offset:0
top:0 offset:0
bottom:0.5 offset:0
!
setTopRightQuarterFrame
self
setFrameLeft:0.5 offset:0
right:1 offset:0
top:0 offset:0
bottom:0.5 offset:0
!
setVerticalFixPartFrame
self
setFrameLeft:0.5 offset:(self class defaultFixPartHeight negated // 2 )
right:0.5 offset:(self class defaultFixPartHeight // 2 )
top:0 offset:0
bottom:1 offset:0
! !
!UILayoutTool::LayoutOrigin class methodsFor:'interface specs'!
windowSpec
"This resource specification was automatically generated
by the UIPainter of ST/X."
"Do not manually edit this!! If it is corrupted,
the UIPainter may not be able to read the specification."
"
UIPainter new openOnClass:UILayoutTool::LayoutOrigin andSelector:#windowSpec
UILayoutTool::LayoutOrigin new openInterface:#windowSpec
UILayoutTool::LayoutOrigin open
"
<resource: #canvas>
^
#(FullSpec
name: windowSpec
window:
(WindowSpec
label: 'UILayoutTool-LayoutOrigin'
name: 'UILayoutTool-LayoutOrigin'
min: (Point 10 10)
bounds: (Rectangle 14 46 372 192)
)
component:
(SpecCollection
collection: (
(UISubSpecification
name: 'layoutOriginSpec'
layout: (LayoutFrame 1 0.0 6 0 0 1.0 110 0)
majorKey: UILayoutTool
minorKey: layoutOriginSpec
)
)
)
)
! !
!UILayoutTool::LayoutOrigin methodsFor:'accessing'!
fetch:aView spec:aSpec
"fetch layoutOrigin
"
|layout|
layout := UIPainterView asLayoutFrameFromView:aView.
(self aspectFor:#leftOffset) value:(layout leftOffset).
(self aspectFor:#leftFraction) value:(layout leftFraction).
(self aspectFor:#topOffset) value:(layout topOffset).
(self aspectFor:#topFraction) value:(layout topFraction).
!
layout
"returns current layout as layoutOrigin
"
|layout|
layout := Smalltalk::LayoutOrigin new.
layout
leftFraction:(((self aspectFor:#leftFraction) value) ? 0)
offset:(((self aspectFor:#leftOffset) value) ? 0)
topFraction:(((self aspectFor:#topFraction) value) ? 0)
offset:(((self aspectFor:#topOffset) value) ? 0).
^ layout
! !
!UILayoutTool::Point class methodsFor:'interface specs'!
windowSpec
"This resource specification was automatically generated
by the UIPainter of ST/X."
"Do not manually edit this!! If it is corrupted,
the UIPainter may not be able to read the specification."
"
UIPainter new openOnClass:UILayoutTool::Point andSelector:#windowSpec
UILayoutTool::Point new openInterface:#windowSpec
UILayoutTool::Point open
"
<resource: #canvas>
^
#(FullSpec
name: windowSpec
window:
(WindowSpec
label: 'UILayoutTool-Point'
name: 'UILayoutTool-Point'
min: (Point 10 10)
bounds: (Rectangle 14 46 309 184)
)
component:
(SpecCollection
collection: (
(UISubSpecification
name: 'layoutPointSpec'
layout: (LayoutFrame 1 0.0 6 0 0 1.0 100 0)
majorKey: UILayoutTool
minorKey: layoutPointSpec
)
)
)
)
! !
!UILayoutTool::Point methodsFor:'accessing'!
fetch:aView spec:aSpec
"fetch point
"
|origin|
origin := aView computeOrigin.
(self aspectFor:#leftOffset) value:(origin x).
(self aspectFor:#topOffset) value:(origin y).
!
layout
"returns current layout as point
"
^ Smalltalk::Point x:(((self aspectFor:#leftOffset) value) ? 0)
y:(((self aspectFor:#topOffset) value) ? 0)
! !
!UILayoutTool::Rectangle class methodsFor:'interface specs'!
windowSpec
"This resource specification was automatically generated
by the UIPainter of ST/X."
"Do not manually edit this!! If it is corrupted,
the UIPainter may not be able to read the specification."
"
UIPainter new openOnClass:UILayoutTool::Rectangle andSelector:#windowSpec
UILayoutTool::Rectangle new openInterface:#windowSpec
UILayoutTool::Rectangle open
"
<resource: #canvas>
^
#(FullSpec
name: windowSpec
window:
(WindowSpec
label: 'UILayoutTool-Rectangle'
name: 'UILayoutTool-Rectangle'
min: (Point 10 10)
bounds: (Rectangle 14 46 356 245)
)
component:
(SpecCollection
collection: (
(UISubSpecification
name: 'subSpecification'
layout: (LayoutFrame 1 0.0 6 0 0 1.0 96 0)
majorKey: UILayoutTool
minorKey: layoutPointSpec
)
(FramedBoxSpec
label: 'Corner'
name: 'FramedBox'
layout: (LayoutFrame 1 0.0 99 0 0 1.0 194 0)
labelPosition: topLeft
component:
(SpecCollection
collection: (
(LabelSpec
label: 'Right:'
name: 'labelCornerY'
layout: (AlignmentOrigin 83 0 16 0 1 0)
adjust: left
)
(InputFieldSpec
name: 'fieldCornerX'
layout: (LayoutFrame 85 0 13 0 135 0 35 0)
activeHelpKey: cornerX
tabable: true
model: rightOffset
group: inputGroup
type: numberOrNil
acceptOnLostFocus: true
acceptChannel: acceptChannel
modifiedChannel: modifiedChannel
acceptOnPointerLeave: false
)
(LabelSpec
label: 'Bottom:'
name: 'labelCornerX'
layout: (AlignmentOrigin 83 0 41 0 1 0)
adjust: left
)
(InputFieldSpec
name: 'fieldCornerY'
layout: (LayoutFrame 85 0 38 0 135 0 60 0)
activeHelpKey: cornerY
tabable: true
model: bottomOffset
group: inputGroup
type: numberOrNil
acceptOnLostFocus: true
acceptChannel: acceptChannel
modifiedChannel: modifiedChannel
acceptOnPointerLeave: false
)
)
)
)
)
)
)
! !
!UILayoutTool::Rectangle methodsFor:'accessing'!
fetch:aView spec:aSpec
"fetch rectangle
"
|origin corner|
origin := aView computeOrigin.
corner := aView computeCorner.
(self aspectFor:#leftOffset) value:(origin x).
(self aspectFor:#rightOffset) value:(corner x).
(self aspectFor:#topOffset) value:(origin y).
(self aspectFor:#bottomOffset) value:(corner y).
!
layout
"returns current layout as rectangle
"
^ Smalltalk::Rectangle left:(((self aspectFor:#leftOffset) value) ? 0)
top:(((self aspectFor:#topOffset) value) ? 0)
right:(((self aspectFor:#rightOffset) value) ? 0)
bottom:(((self aspectFor:#bottomOffset) value) ? 0)
! !
!UILayoutTool class methodsFor:'documentation'!
version
^ '$Header$'
! !