UILayoutTool.st
changeset 1409 176ae89e0b31
parent 1343 7d97b214f2ac
child 1447 bf034d910b27
--- a/UILayoutTool.st	Sun Sep 03 18:43:57 2000 +0200
+++ b/UILayoutTool.st	Thu Sep 14 18:39:12 2000 +0200
@@ -13,6 +13,8 @@
 
 
 
+"{ Package: 'stx:libtool2' }"
+
 ApplicationModel subclass:#UILayoutTool
 	instanceVariableNames:'modifiedHolder aspects selection currentTool layoutView tabList
 		layoutSpec toolsDictionary'
@@ -28,21 +30,14 @@
 	privateIn:UILayoutTool
 !
 
-UILayoutTool::AnyLayout subclass:#AlignmentOrigin
+UILayoutTool::AnyLayout subclass:#LayoutFrame
 	instanceVariableNames:''
 	classVariableNames:''
 	poolDictionaries:''
 	privateIn:UILayoutTool
 !
 
-UILayoutTool::AnyLayout subclass:#LayoutOrigin
-	instanceVariableNames:''
-	classVariableNames:''
-	poolDictionaries:''
-	privateIn:UILayoutTool
-!
-
-UILayoutTool::AnyLayout subclass:#LayoutFrame
+UILayoutTool::AnyLayout subclass:#AlignmentOrigin
 	instanceVariableNames:''
 	classVariableNames:''
 	poolDictionaries:''
@@ -56,6 +51,13 @@
 	privateIn:UILayoutTool
 !
 
+UILayoutTool::AnyLayout subclass:#Extent
+	instanceVariableNames:''
+	classVariableNames:''
+	poolDictionaries:''
+	privateIn:UILayoutTool
+!
+
 UILayoutTool::AnyLayout subclass:#Rectangle
 	instanceVariableNames:''
 	classVariableNames:''
@@ -63,7 +65,7 @@
 	privateIn:UILayoutTool
 !
 
-UILayoutTool::AnyLayout subclass:#Extent
+UILayoutTool::AnyLayout subclass:#LayoutOrigin
 	instanceVariableNames:''
 	classVariableNames:''
 	poolDictionaries:''
@@ -1036,6 +1038,865 @@
         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::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'!
+
+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]!
+
+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)
+          #max: #(#Point 1152 900)
+          #bounds: #(#Rectangle 12 22 411 325)
+          #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: 'commonLayoutToolBar'
+              #layout: #(#LayoutFrame 6 0.0 231 0 -4 1.0 263 0)
+              #level: 0
+              #tabable: true
+              #menu: #commonFrameLayoutsMenu
+              #textDefault: true
+            )
+           )
+         
+        )
+      )
+! !
+
+!UILayoutTool::LayoutFrame class methodsFor:'menu specs'!
+
+commonFrameLayoutsMenu
+    "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:#commonFrameLayoutsMenu
+     (Menu new fromLiteralArrayEncoding:(UILayoutTool::LayoutFrame commonFrameLayoutsMenu)) startUp
+    "
+
+    <resource: #menu>
+
+    ^
+     
+       #(#Menu
+          
+           #(
+             #(#MenuItem
+                #label: 'setTopHalfFrame'
+                #translateLabel: true
+                #isButton: true
+                #nameKey: #setTopHalfFrame
+                #value: #setTopHalfFrame
+                #activeHelpKey: #topHalfLayout
+                #labelImage: #(#ResourceRetriever #'UILayoutTool::LayoutFrame' #setTopHalfIcon)
+            )
+             #(#MenuItem
+                #label: 'setBottomHalfFrame'
+                #translateLabel: true
+                #isButton: true
+                #nameKey: #setBottomHalfFrame
+                #value: #setBottomHalfFrame
+                #activeHelpKey: #bottomHalfLayout
+                #labelImage: #(#ResourceRetriever nil #setBottomHalfIcon)
+            )
+             #(#MenuItem
+                #label: 'setLeftHalfFrame'
+                #translateLabel: true
+                #isButton: true
+                #nameKey: #setLeftHalfFrame
+                #value: #setLeftHalfFrame
+                #activeHelpKey: #leftHalfLayout
+                #labelImage: #(#ResourceRetriever nil #setLeftHalfIcon)
+            )
+             #(#MenuItem
+                #label: 'setRightHalfFrame'
+                #translateLabel: true
+                #isButton: true
+                #nameKey: #setRightHalfFrame
+                #value: #setRightHalfFrame
+                #activeHelpKey: #rightHalfLayout
+                #labelImage: #(#ResourceRetriever nil #setRightHalfIcon)
+            )
+             #(#MenuItem
+                #label: ''
+            )
+             #(#MenuItem
+                #label: 'setTopLeftQuarterFrame'
+                #translateLabel: true
+                #isButton: true
+                #activeHelpKey: #topLeftQuarterLayout
+                #nameKey: #setTopLeftQuarterFrame
+                #value: #setTopLeftQuarterFrame
+                #labelImage: #(#ResourceRetriever nil #setTopLeftQuarterIcon)
+            )
+             #(#MenuItem
+                #label: 'setTopRightQuarterFrame'
+                #translateLabel: true
+                #isButton: true
+                #activeHelpKey: #topRightQuarterLayout
+                #nameKey: #setTopRightQuarterFrame
+                #value: #setTopRightQuarterFrame
+                #labelImage: #(#ResourceRetriever nil #setToRightQuarterIcon)
+            )
+             #(#MenuItem
+                #label: 'setBottomRightQuarterFrame'
+                #translateLabel: true
+                #isButton: true
+                #activeHelpKey: #bottomRightQuarterLayout
+                #nameKey: #setBottomRightQuarterFrame
+                #value: #setBottomRightQuarterFrame
+                #labelImage: #(#ResourceRetriever nil #setBottomRightQuarterIcon)
+            )
+             #(#MenuItem
+                #label: 'setBottomLeftQuarterFrame'
+                #translateLabel: true
+                #activeHelpKey: #bottomLeftQuarterLayout
+                #isButton: true
+                #nameKey: #setBottomLeftQuarterFrame
+                #value: #setBottomLeftQuarterFrame
+                #labelImage: #(#ResourceRetriever nil #setBottomLeftQuarterIcon)
+            )
+             #(#MenuItem
+                #label: ''
+            )
+             #(#MenuItem
+                #label: 'setTopFixPartFrame'
+                #translateLabel: true
+                #isButton: true
+                #nameKey: #setTopFixPartFrame
+                #value: #setTopFixPartFrame
+                #activeHelpKey: #topFixPartLayout
+                #labelImage: #(#ResourceRetriever nil #setTopFixPartIcon)
+            )
+             #(#MenuItem
+                #label: 'setHorizontalFixPartFrame'
+                #translateLabel: true
+                #isButton: true
+                #nameKey: #setHorizontalFixPartFrame
+                #value: #setHorizontalFixPartFrame
+                #activeHelpKey: #horizontalFixPartLayout
+                #labelImage: #(#ResourceRetriever nil #setHorizontalFixPartIcon)
+            )
+             #(#MenuItem
+                #label: 'setBottomFixPartFrame'
+                #translateLabel: true
+                #isButton: true
+                #nameKey: #setBottomFixPartFrame
+                #value: #setBottomFixPartFrame
+                #activeHelpKey: #bottomFixPartLayout
+                #labelImage: #(#ResourceRetriever nil #setBottomFixPartIcon)
+            )
+             #(#MenuItem
+                #label: ''
+            )
+             #(#MenuItem
+                #label: 'setLeftFixPartFrame'
+                #translateLabel: true
+                #isButton: true
+                #nameKey: #setLeftFixPartFrame
+                #value: #setLeftFixPartFrame
+                #activeHelpKey: #leftFixPartLayout
+                #labelImage: #(#ResourceRetriever nil #setLeftFixPartIcon)
+            )
+             #(#MenuItem
+                #label: 'setVerticalFixPartFrame'
+                #translateLabel: true
+                #isButton: true
+                #nameKey: #setVerticalFixPartFrame
+                #value: #setVerticalFixPartFrame
+                #activeHelpKey: #verticalFixPartLayout
+                #labelImage: #(#ResourceRetriever nil #setVerticalFixPartIcon)
+            )
+             #(#MenuItem
+                #label: 'setRightFixPartFrame'
+                #translateLabel: true
+                #isButton: true
+                #nameKey: #setRightFixPartFrame
+                #value: #setRightFixPartFrame
+                #activeHelpKey: #rightFixPartLayout
+                #labelImage: #(#ResourceRetriever nil #setRightFixPartIcon)
+            )
+          ) nil
+          nil
+      )
+! !
+
+!UILayoutTool::LayoutFrame methodsFor:'accessing'!
+
+fetch:aView spec:aSpec
+    |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).
+    (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     leftOffset:((self aspectFor:#leftOffset)     value) ? 0.
+    layout    rightOffset:((self aspectFor:#rightOffset)    value) ? 0.
+    layout      topOffset:((self aspectFor:#topOffset)      value) ? 0.
+    layout   bottomOffset:((self aspectFor:#bottomOffset)   value) ? 0.
+    layout   leftFraction:((self aspectFor:#leftFraction)   value) ? 0.
+    layout  rightFraction:((self aspectFor:#rightFraction)  value) ? 0.
+    layout    topFraction:((self aspectFor:#topFraction)    value) ? 0.
+    layout bottomFraction:((self aspectFor:#bottomFraction) value) ? 0.
+
+  ^ layout
+
+! !
+
+!UILayoutTool::LayoutFrame methodsFor:'common frames'!
+
+setBottomFixPartFrame
+    self
+        setFrameLeft:0   offset:0 
+        right:1          offset:0 
+        top:1            offset:-30 
+        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.
+!
+
+setHorizontalFixPartFrame
+    self
+        setFrameLeft:0   offset:0 
+        right:1          offset:0 
+        top:0.5          offset:-15 
+        bottom:0.5       offset:15
+!
+
+setLeftFixPartFrame
+    self
+        setFrameLeft:0   offset:0 
+        right:0          offset:30 
+        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:0 
+        right:1          offset:-30 
+        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:30
+!
+
+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:-15 
+        right:0.5          offset:15 
+        top:0          offset:0 
+        bottom:1       offset:0
+! !
+
 !UILayoutTool::AlignmentOrigin class methodsFor:'help specs'!
 
 helpSpec
@@ -1452,780 +2313,6 @@
 
 ! !
 
-!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
-          #window: 
-           #(#WindowSpec
-              #name: 'UILayoutTool-LayoutOrigin'
-              #layout: #(#LayoutFrame 290 0 420 0 647 0 565 0)
-              #label: 'UILayoutTool-LayoutOrigin'
-              #min: #(#Point 10 10)
-              #max: #(#Point 1152 900)
-              #bounds: #(#Rectangle 290 420 648 566)
-              #usePreferredExtent: false
-          )
-          #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   leftOffset:((self aspectFor:#leftOffset)   value) ? 0.
-    layout    topOffset:((self aspectFor:#topOffset)    value) ? 0.
-    layout leftFraction:((self aspectFor:#leftFraction) value) ? 0.
-    layout  topFraction:((self aspectFor:#topFraction)  value) ? 0.
-
-  ^ layout
-
-! !
-
-!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'
-
-#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.'
-
-#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'
-
-)
-! !
-
-!UILayoutTool::LayoutFrame class methodsFor:'image specs'!
-
-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]!
-
-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]!
-
-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]! !
-
-!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)
-          #max: #(#Point 1152 900)
-          #bounds: #(#Rectangle 12 22 411 325)
-          #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: 'commonLayoutToolBar'
-              #layout: #(#LayoutFrame 6 0.0 231 0 -4 1.0 263 0)
-              #level: 0
-              #tabable: true
-              #menu: #commonFrameLayoutsMenu
-              #textDefault: true
-            )
-           )
-         
-        )
-      )
-! !
-
-!UILayoutTool::LayoutFrame class methodsFor:'menu specs'!
-
-commonFrameLayoutsMenu
-    "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:#commonFrameLayoutsMenu
-     (Menu new fromLiteralArrayEncoding:(UILayoutTool::LayoutFrame commonFrameLayoutsMenu)) startUp
-    "
-
-    <resource: #menu>
-
-    ^
-     
-       #(#Menu
-          
-           #(
-             #(#MenuItem
-                #label: 'setTopHalfFrame'
-                #translateLabel: true
-                #isButton: true
-                #nameKey: #setTopHalfFrame
-                #value: #setTopHalfFrame
-                #activeHelpKey: #topHalfLayout
-                #labelImage: #(#ResourceRetriever #'UILayoutTool::LayoutFrame' #setTopHalfIcon)
-            )
-             #(#MenuItem
-                #label: 'setBottomHalfFrame'
-                #translateLabel: true
-                #isButton: true
-                #nameKey: #setBottomHalfFrame
-                #value: #setBottomHalfFrame
-                #activeHelpKey: #bottomHalfLayout
-                #labelImage: #(#ResourceRetriever nil #setBottomHalfIcon)
-            )
-             #(#MenuItem
-                #label: 'setLeftHalfFrame'
-                #translateLabel: true
-                #isButton: true
-                #nameKey: #setLeftHalfFrame
-                #value: #setLeftHalfFrame
-                #activeHelpKey: #leftHalfLayout
-                #labelImage: #(#ResourceRetriever nil #setLeftHalfIcon)
-            )
-             #(#MenuItem
-                #label: 'setRightHalfFrame'
-                #translateLabel: true
-                #isButton: true
-                #nameKey: #setRightHalfFrame
-                #value: #setRightHalfFrame
-                #activeHelpKey: #rightHalfLayout
-                #labelImage: #(#ResourceRetriever nil #setRightHalfIcon)
-            )
-             #(#MenuItem
-                #label: ''
-            )
-             #(#MenuItem
-                #label: 'setTopLeftQuarterFrame'
-                #translateLabel: true
-                #isButton: true
-                #activeHelpKey: #topLeftQuarterLayout
-                #nameKey: #setTopLeftQuarterFrame
-                #value: #setTopLeftQuarterFrame
-                #labelImage: #(#ResourceRetriever nil #setTopLeftQuarterIcon)
-            )
-             #(#MenuItem
-                #label: 'setTopRightQuarterFrame'
-                #translateLabel: true
-                #isButton: true
-                #activeHelpKey: #topRightQuarterLayout
-                #nameKey: #setTopRightQuarterFrame
-                #value: #setTopRightQuarterFrame
-                #labelImage: #(#ResourceRetriever nil #setToRightQuarterIcon)
-            )
-             #(#MenuItem
-                #label: 'setBottomRightQuarterFrame'
-                #translateLabel: true
-                #isButton: true
-                #activeHelpKey: #bottomRightQuarterLayout
-                #nameKey: #setBottomRightQuarterFrame
-                #value: #setBottomRightQuarterFrame
-                #labelImage: #(#ResourceRetriever nil #setBottomRightQuarterIcon)
-            )
-             #(#MenuItem
-                #label: 'setBottomLeftQuarterFrame'
-                #translateLabel: true
-                #activeHelpKey: #bottomLeftQuarterLayout
-                #isButton: true
-                #nameKey: #setBottomLeftQuarterFrame
-                #value: #setBottomLeftQuarterFrame
-                #labelImage: #(#ResourceRetriever nil #setBottomLeftQuarterIcon)
-            )
-             #(#MenuItem
-                #label: ''
-            )
-             #(#MenuItem
-                #label: 'setTopFixPartFrame'
-                #translateLabel: true
-                #isButton: true
-                #nameKey: #setTopFixPartFrame
-                #value: #setTopFixPartFrame
-                #activeHelpKey: #topFixPartLayout
-                #labelImage: #(#ResourceRetriever nil #setTopFixPartIcon)
-            )
-             #(#MenuItem
-                #label: 'setBottomFixPartFrame'
-                #translateLabel: true
-                #isButton: true
-                #nameKey: #setBottomFixPartFrame
-                #value: #setBottomFixPartFrame
-                #activeHelpKey: #bottomFixPartLayout
-                #labelImage: #(#ResourceRetriever nil #setBottomFixPartIcon)
-            )
-          ) nil
-          nil
-      )
-! !
-
-!UILayoutTool::LayoutFrame methodsFor:'accessing'!
-
-fetch:aView spec:aSpec
-    |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).
-    (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     leftOffset:((self aspectFor:#leftOffset)     value) ? 0.
-    layout    rightOffset:((self aspectFor:#rightOffset)    value) ? 0.
-    layout      topOffset:((self aspectFor:#topOffset)      value) ? 0.
-    layout   bottomOffset:((self aspectFor:#bottomOffset)   value) ? 0.
-    layout   leftFraction:((self aspectFor:#leftFraction)   value) ? 0.
-    layout  rightFraction:((self aspectFor:#rightFraction)  value) ? 0.
-    layout    topFraction:((self aspectFor:#topFraction)    value) ? 0.
-    layout bottomFraction:((self aspectFor:#bottomFraction) value) ? 0.
-
-  ^ layout
-
-! !
-
-!UILayoutTool::LayoutFrame methodsFor:'common frames'!
-
-setBottomFixPartFrame
-    self
-        setFrameLeft:0   offset:0 
-        right:1          offset:0 
-        top:1            offset:-30 
-        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.
-!
-
-setLeftHalfFrame
-    self
-        setFrameLeft:0  offset:0 
-        right:0.5       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:30
-!
-
-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
-! !
-
 !UILayoutTool::Point class methodsFor:'interface specs'!
 
 windowSpec
@@ -2294,130 +2381,6 @@
 
 ! !
 
-!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
-          #window: 
-           #(#WindowSpec
-              #name: 'UILayoutTool-Rectangle'
-              #layout: #(#LayoutFrame 291 0 130 0 632 0 328 0)
-              #label: 'UILayoutTool-Rectangle'
-              #min: #(#Point 10 10)
-              #max: #(#Point 1152 900)
-              #bounds: #(#Rectangle 291 130 633 329)
-              #usePreferredExtent: false
-          )
-          #component: 
-           #(#SpecCollection
-              #collection: 
-               #(
-                 #(#UISubSpecification
-                    #name: 'subSpecification'
-                    #layout: #(#LayoutFrame 1 0.0 6 0 0 1.0 96 0)
-                    #majorKey: #UILayoutTool
-                    #minorKey: #layoutPointSpec
-                )
-                 #(#FramedBoxSpec
-                    #name: 'FramedBox'
-                    #layout: #(#LayoutFrame 1 0.0 99 0 0 1.0 194 0)
-                    #component: 
-                     #(#SpecCollection
-                        #collection: 
-                         #(
-                           #(#LabelSpec
-                              #name: 'labelCornerY'
-                              #layout: #(#AlignmentOrigin 83 0 16 0 1 0)
-                              #label: 'Right:'
-                              #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
-                          )
-                           #(#LabelSpec
-                              #name: 'labelCornerX'
-                              #layout: #(#AlignmentOrigin 83 0 41 0 1 0)
-                              #label: 'Bottom:'
-                              #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
-                          )
-                        )
-                    )
-                    #label: 'Corner'
-                    #labelPosition: #topLeft
-                )
-              )
-          )
-      )
-
-    "Modified: / 13.8.1998 / 19:59:16 / cg"
-! !
-
-!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::Extent class methodsFor:'help specs'!
 
 helpSpec
@@ -2577,6 +2540,208 @@
 
 ! !
 
+!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
+          #window: 
+           #(#WindowSpec
+              #name: 'UILayoutTool-Rectangle'
+              #layout: #(#LayoutFrame 291 0 130 0 632 0 328 0)
+              #label: 'UILayoutTool-Rectangle'
+              #min: #(#Point 10 10)
+              #max: #(#Point 1152 900)
+              #bounds: #(#Rectangle 291 130 633 329)
+              #usePreferredExtent: false
+          )
+          #component: 
+           #(#SpecCollection
+              #collection: 
+               #(
+                 #(#UISubSpecification
+                    #name: 'subSpecification'
+                    #layout: #(#LayoutFrame 1 0.0 6 0 0 1.0 96 0)
+                    #majorKey: #UILayoutTool
+                    #minorKey: #layoutPointSpec
+                )
+                 #(#FramedBoxSpec
+                    #name: 'FramedBox'
+                    #layout: #(#LayoutFrame 1 0.0 99 0 0 1.0 194 0)
+                    #component: 
+                     #(#SpecCollection
+                        #collection: 
+                         #(
+                           #(#LabelSpec
+                              #name: 'labelCornerY'
+                              #layout: #(#AlignmentOrigin 83 0 16 0 1 0)
+                              #label: 'Right:'
+                              #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
+                          )
+                           #(#LabelSpec
+                              #name: 'labelCornerX'
+                              #layout: #(#AlignmentOrigin 83 0 41 0 1 0)
+                              #label: 'Bottom:'
+                              #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
+                          )
+                        )
+                    )
+                    #label: 'Corner'
+                    #labelPosition: #topLeft
+                )
+              )
+          )
+      )
+
+    "Modified: / 13.8.1998 / 19:59:16 / cg"
+! !
+
+!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::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
+          #window: 
+           #(#WindowSpec
+              #name: 'UILayoutTool-LayoutOrigin'
+              #layout: #(#LayoutFrame 290 0 420 0 647 0 565 0)
+              #label: 'UILayoutTool-LayoutOrigin'
+              #min: #(#Point 10 10)
+              #max: #(#Point 1152 900)
+              #bounds: #(#Rectangle 290 420 648 566)
+              #usePreferredExtent: false
+          )
+          #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   leftOffset:((self aspectFor:#leftOffset)   value) ? 0.
+    layout    topOffset:((self aspectFor:#topOffset)    value) ? 0.
+    layout leftFraction:((self aspectFor:#leftFraction) value) ? 0.
+    layout  topFraction:((self aspectFor:#topFraction)  value) ? 0.
+
+  ^ layout
+
+! !
+
 !UILayoutTool class methodsFor:'documentation'!
 
 version