ca@163: " ca@163: COPYRIGHT (c) 1995 by eXept Software AG ca@163: All Rights Reserved ca@163: ca@163: This software is furnished under a license and may be used ca@163: only in accordance with the terms of that license and with the ca@163: inclusion of the above copyright notice. This software may not ca@163: be provided or otherwise made available to, or used by, any ca@163: other person. No title to or ownership of the software is ca@163: hereby transferred. ca@163: " cg@1409: "{ Package: 'stx:libtool2' }" cg@1409: cg@3176: "{ NameSpace: Smalltalk }" cg@3176: ca@163: ApplicationModel subclass:#UILayoutTool ca@1305: instanceVariableNames:'modifiedHolder aspects selection currentTool layoutView tabList ca@1305: layoutSpec toolsDictionary' ca@163: classVariableNames:'' ca@163: poolDictionaries:'' ca@163: category:'Interface-UIPainter' ca@163: ! ca@163: cg@1343: ApplicationModel subclass:#AnyLayout cg@1339: instanceVariableNames:'' cg@1339: classVariableNames:'' cg@1339: poolDictionaries:'' cg@1339: privateIn:UILayoutTool cg@1339: ! cg@1339: ca@1447: UILayoutTool::AnyLayout subclass:#AlignmentOrigin ca@1447: instanceVariableNames:'' ca@1447: classVariableNames:'' ca@1447: poolDictionaries:'' ca@1447: privateIn:UILayoutTool ca@1447: ! ca@1447: ca@1447: UILayoutTool::AnyLayout subclass:#Extent ca@1447: instanceVariableNames:'' ca@1447: classVariableNames:'' ca@1447: poolDictionaries:'' ca@1447: privateIn:UILayoutTool ca@1447: ! ca@1447: cg@1409: UILayoutTool::AnyLayout subclass:#LayoutFrame cg@1343: instanceVariableNames:'' werner@1826: classVariableNames:'DefaultFixPartHeight' cg@1343: poolDictionaries:'' cg@1343: privateIn:UILayoutTool cg@1343: ! cg@1343: ca@1447: UILayoutTool::AnyLayout subclass:#LayoutOrigin ca@1310: instanceVariableNames:'' ca@1310: classVariableNames:'' ca@1310: poolDictionaries:'' ca@1310: privateIn:UILayoutTool ca@1310: ! ca@1310: cg@1343: UILayoutTool::AnyLayout subclass:#Point ca@1310: instanceVariableNames:'' ca@1310: classVariableNames:'' ca@1310: poolDictionaries:'' ca@1310: privateIn:UILayoutTool ca@1310: ! ca@1310: cg@1343: UILayoutTool::AnyLayout subclass:#Rectangle ca@1304: instanceVariableNames:'' ca@1304: classVariableNames:'' ca@1304: poolDictionaries:'' ca@1304: privateIn:UILayoutTool ca@1304: ! ca@1304: ca@163: !UILayoutTool class methodsFor:'documentation'! ca@163: ca@163: copyright ca@163: " ca@163: COPYRIGHT (c) 1995 by eXept Software AG ca@163: All Rights Reserved ca@163: ca@163: This software is furnished under a license and may be used ca@163: only in accordance with the terms of that license and with the ca@163: inclusion of the above copyright notice. This software may not ca@163: be provided or otherwise made available to, or used by, any ca@163: other person. No title to or ownership of the software is ca@163: hereby transferred. ca@163: " ca@163: ca@163: ca@163: ca@163: ! ca@163: ca@163: documentation ca@163: " ca@163: used by the UIPainter to manipulate the layout of the selected component ca@163: ca@163: [author:] ca@163: Claus Atzkern ca@163: ca@163: [see also:] ca@163: UIPainter ca@163: UIHelpTool ca@163: UISpecificationTool ca@163: " ca@163: ca@163: ca@163: ! ! ca@163: ca@163: !UILayoutTool class methodsFor:'constants'! ca@163: ca@163: label ca@163: ^ 'Layout' ca@163: ! ! ca@163: ca@184: !UILayoutTool class methodsFor:'help specs'! ca@184: ca@184: helpSpec tz@741: "This resource specification was automatically generated tz@741: by the UIHelpTool of ST/X." tz@741: tz@741: "Do not manually edit this!! If it is corrupted, tz@741: the UIHelpTool may not be able to read the specification." ca@293: ca@184: " tz@741: UIHelpTool openOnClass:UILayoutTool ca@293: " ca@293: tz@741: tz@741: tz@741: ^super helpSpec addPairsFrom:#( tz@741: tz@741: #cornerX tz@741: 'Absolute corner x of the selected widget.' tz@741: tz@741: #cornerY tz@741: 'Absolute corner y of the selected widget.' tz@741: tz@741: #layoutTool tz@741: 'Tool to set the layout of the selected widget.' ca@184: ca@184: #leftAbsolute tz@714: 'Offset of the left edge; positive is to the right, negative to the left.' ca@184: tz@741: #leftRelative tz@741: 'Relative origin x of the selected widget.' ca@201: ca@201: #makeLeftAbsolute cg@1339: 'Compute pure-absolute x' ca@201: tz@741: #makeLeftRelative cg@1955: 'Compute pure-fractional x.' cg@1339: cg@1339: #makeLeftRelativeFromRight cg@1339: 'Compute fraction+offset for x relative to containers right.' tz@741: tz@741: #makeTopAbsolute cg@1339: 'Compute pure-absolute y.' tz@741: tz@741: #makeTopRelative cg@1955: 'Compute pure-fractional y.' cg@1339: cg@1339: #makeTopRelativeFromBottom cg@1339: 'Compute fraction+offset for y relative to containers bottom.' tz@741: tz@741: #originX tz@741: 'Absolute origin x of the selected widget.' tz@741: tz@741: #originY tz@741: 'Absolute origin y of the selected widget.' tz@741: ca@184: #topAbsolute tz@714: 'Offset of the top edge; positive is to the bottom, negative to the top.' ca@184: ca@201: #topRelative tz@714: 'Relative origin y of the selected widget.' ca@201: ca@184: ) ca@184: ! ! ca@184: ca@163: !UILayoutTool class methodsFor:'interface specs'! ca@163: ca@184: layoutOriginSpec tz@741: "This resource specification was automatically generated tz@741: by the UIPainter of ST/X." ca@184: tz@741: "Do not manually edit this!! If it is corrupted, tz@741: the UIPainter may not be able to read the specification." ca@184: ca@184: " cg@259: UIPainter new openOnClass:UILayoutTool andSelector:#layoutOriginSpec cg@259: UILayoutTool new openInterface:#layoutOriginSpec ca@184: " ca@184: ca@184: ca@184: ca@1304: ^ cg@3052: #(FullSpec cg@3052: name: layoutOriginSpec cg@3052: window: cg@3052: (WindowSpec cg@3052: label: 'UILayoutTool' cg@3052: name: 'UILayoutTool' cg@3052: min: (Point 10 10) cg@3052: bounds: (Rectangle 0 0 345 107) cg@3052: ) cg@3052: component: cg@3052: (SpecCollection cg@3052: collection: ( cg@3052: (FramedBoxSpec cg@3052: label: 'Origin' cg@3052: name: 'FramedBox' cg@3052: layout: (LayoutFrame 0 0.0 0 0.0 0 1.0 108 0) cg@3052: labelPosition: topLeft cg@3052: translateLabel: true cg@3052: component: cg@3052: (SpecCollection cg@3052: collection: ( cg@3052: (LabelSpec cg@3052: label: 'Relative:' cg@3052: name: 'labelRelative' cg@3240: layout: (Point 103 3) cg@3052: translateLabel: true cg@3052: ) cg@3052: (LabelSpec cg@3052: label: 'Offset:' cg@3052: name: 'labelAbsolute' cg@3240: layout: (Point 203 3) cg@3052: translateLabel: true cg@3052: ) cg@3052: (LabelSpec cg@3052: label: 'Left:' cg@3052: name: 'labelLeft' cg@3240: layout: (AlignmentOrigin 68 0 24 0 1 0) cg@3052: translateLabel: true cg@3052: ) cg@3052: (ActionButtonSpec cg@3052: label: 'imageFractX' cg@3052: name: 'actionRelativeLeft' cg@3240: layout: (LayoutFrame 77 0 21 0 99 0 43 0) cg@3052: activeHelpKey: makeLeftRelative cg@3052: hasCharacterOrientedLabel: false cg@3240: translateLabel: true cg@3052: tabable: true cg@3052: model: relativeLeft cg@3052: ) cg@3052: (InputFieldSpec cg@3052: name: 'fieldLeftFraction' cg@3240: layout: (LayoutFrame 102 0 22 0 152 0 44 0) cg@3052: activeHelpKey: leftRelative cg@3052: tabable: true cg@3052: model: leftFraction cg@3052: group: inputGroup cg@3052: type: numberOrNil cg@3052: acceptOnLostFocus: true cg@3052: acceptChannel: acceptChannel cg@3052: modifiedChannel: modifiedChannel cg@3052: acceptOnPointerLeave: true cg@3052: ) cg@3052: (ActionButtonSpec cg@3052: label: 'imageAbsX' cg@3052: name: 'actionAbsoluteLeft' cg@3240: layout: (LayoutFrame 178 0 21 0 200 0 43 0) cg@3052: activeHelpKey: makeLeftAbsolute cg@3052: hasCharacterOrientedLabel: false cg@3240: translateLabel: true cg@3052: tabable: true cg@3052: model: absoluteLeft ca@1304: ) cg@3052: (InputFieldSpec cg@3052: name: 'fieldLeftOffset' cg@3240: layout: (LayoutFrame 203 0 21 0 253 0 43 0) cg@3052: activeHelpKey: leftAbsolute cg@3052: tabable: true cg@3052: model: leftOffset cg@3052: group: inputGroup cg@3052: type: numberOrNil cg@3052: acceptOnLostFocus: true cg@3052: acceptChannel: acceptChannel cg@3052: modifiedChannel: modifiedChannel cg@3052: acceptOnPointerLeave: true cg@3052: ) cg@3052: (ActionButtonSpec cg@3052: label: 'imageAbsXFromRight' cg@3052: name: 'actionRightRelativeLeft' cg@3240: layout: (LayoutFrame 257 0 21 0 279 0 43 0) cg@3052: activeHelpKey: makeLeftRelativeFromRight cg@3052: hasCharacterOrientedLabel: false cg@3240: translateLabel: true cg@3052: tabable: true cg@3052: model: rightRelativeLeft cg@3052: ) cg@3052: (LabelSpec cg@3052: label: 'Top:' cg@3052: name: 'labelTop' cg@3240: layout: (AlignmentOrigin 68 0 51 0 1 0) cg@3052: translateLabel: true cg@3052: ) cg@3052: (ActionButtonSpec cg@3052: label: 'imageFractY' cg@3052: name: 'actionRelativeTop' cg@3240: layout: (LayoutFrame 77 0 48 0 99 0 70 0) cg@3052: activeHelpKey: makeTopRelative cg@3052: hasCharacterOrientedLabel: false cg@3240: translateLabel: true cg@3052: tabable: true cg@3052: model: relativeTop cg@3052: ) cg@3052: (InputFieldSpec cg@3052: name: 'fieldTopFraction' cg@3240: layout: (LayoutFrame 103 0 48 0 153 0 70 0) cg@3052: activeHelpKey: topRelative cg@3052: tabable: true cg@3052: model: topFraction cg@3052: group: inputGroup cg@3052: type: numberOrNil cg@3052: acceptOnLostFocus: true cg@3052: acceptChannel: acceptChannel cg@3052: modifiedChannel: modifiedChannel cg@3052: acceptOnPointerLeave: true cg@3052: ) cg@3052: (ActionButtonSpec cg@3052: label: 'imageAbsY' cg@3052: name: 'actionAbsoluteTop' cg@3240: layout: (LayoutFrame 178 0 48 0 200 0 70 0) cg@3052: activeHelpKey: makeTopAbsolute cg@3052: hasCharacterOrientedLabel: false cg@3240: translateLabel: true cg@3052: tabable: true cg@3052: model: absoluteTop cg@3052: ) cg@3052: (InputFieldSpec cg@3052: name: 'fieldTopOffset' cg@3240: layout: (LayoutFrame 203 0 48 0 253 0 70 0) cg@3052: activeHelpKey: topAbsolute cg@3052: tabable: true cg@3052: model: topOffset cg@3052: group: inputGroup cg@3052: type: numberOrNil cg@3052: acceptOnLostFocus: true cg@3052: acceptChannel: acceptChannel cg@3052: modifiedChannel: modifiedChannel cg@3052: acceptOnPointerLeave: true cg@3052: ) cg@3052: (ActionButtonSpec cg@3052: label: 'imageAbsYFromBottom' cg@3052: name: 'actionBottomRelativeTop' cg@3240: layout: (LayoutFrame 257 0 48 0 279 0 70 0) cg@3052: activeHelpKey: makeTopRelativeFromBottom cg@3052: hasCharacterOrientedLabel: false cg@3240: translateLabel: true cg@3052: tabable: true cg@3052: model: bottomRelativeTop cg@3052: ) cg@3052: ) cg@3052: cg@3052: ) ca@1304: ) cg@3052: ) cg@3052: cg@3052: ) cg@3052: ) ca@184: ! ca@184: ca@184: layoutPointSpec tz@741: "This resource specification was automatically generated tz@741: by the UIPainter of ST/X." ca@184: tz@741: "Do not manually edit this!! If it is corrupted, tz@741: the UIPainter may not be able to read the specification." ca@184: ca@184: " cg@259: UIPainter new openOnClass:UILayoutTool andSelector:#layoutPointSpec cg@259: UILayoutTool new openInterface:#layoutPointSpec ca@184: " cg@259: ca@184: ca@184: sv@1738: ^ cg@3052: #(FullSpec cg@3052: name: layoutPointSpec cg@3052: window: cg@3052: (WindowSpec cg@3052: label: 'UILayoutTool' cg@3052: name: 'UILayoutTool' cg@3052: min: (Point 10 10) cg@3052: bounds: (Rectangle 0 0 278 124) cg@3052: ) cg@3052: component: cg@3052: (SpecCollection cg@3052: collection: ( cg@3052: (FramedBoxSpec cg@3052: label: 'Origin' cg@3052: name: 'FramedBox' cg@3052: layout: (LayoutFrame 0 0.0 0 0.0 0 1.0 94 0) cg@3052: labelPosition: topLeft cg@3052: translateLabel: true cg@3052: component: cg@3052: (SpecCollection cg@3052: collection: ( cg@3052: (LabelSpec cg@3052: label: 'Left:' cg@3052: name: 'labelOriginY' cg@3240: layout: (AlignmentOrigin 83 0 12 0 1 0) cg@3052: translateLabel: true sv@1738: ) cg@3052: (InputFieldSpec cg@3052: name: 'fieldOriginX' cg@3240: layout: (LayoutFrame 85 0 9 0 135 0 31 0) cg@3052: activeHelpKey: originX cg@3052: tabable: true cg@3052: model: leftOffset cg@3052: group: inputGroup cg@3052: type: numberOrNil cg@3052: acceptOnLostFocus: true cg@3052: acceptChannel: acceptChannel cg@3052: modifiedChannel: modifiedChannel cg@3052: acceptOnPointerLeave: true cg@3052: ) cg@3052: (LabelSpec cg@3052: label: 'Top:' cg@3052: name: 'labelOriginX' cg@3240: layout: (AlignmentOrigin 83 0 37 0 1 0) cg@3052: translateLabel: true cg@3052: ) cg@3052: (InputFieldSpec cg@3052: name: 'fieldOriginY' cg@3240: layout: (LayoutFrame 85 0 34 0 135 0 56 0) cg@3052: activeHelpKey: originY cg@3052: tabable: true cg@3052: model: topOffset cg@3052: group: inputGroup cg@3052: type: numberOrNil cg@3052: acceptOnLostFocus: true cg@3052: acceptChannel: acceptChannel cg@3052: modifiedChannel: modifiedChannel cg@3052: acceptOnPointerLeave: true cg@3052: ) cg@3052: ) cg@3052: cg@3052: ) sv@1738: ) cg@3052: ) cg@3052: cg@3052: ) cg@3052: ) ca@184: ! ca@184: ca@163: slices ca@163: ^ #( ca@163: ( 'Frame' LayoutFrame) ca@163: ( 'Origin' LayoutOrigin) ca@163: ( 'Alig.Origin' AlignmentOrigin) ca@163: ( 'Point' Point) ca@163: ( 'Rectangle' Rectangle) ca@163: ( 'Extent' Extent) ca@163: ) ca@163: ca@163: ! ca@163: ca@163: windowSpec tz@741: "This resource specification was automatically generated tz@741: by the UIPainter of ST/X." ca@163: tz@741: "Do not manually edit this!! If it is corrupted, tz@741: the UIPainter may not be able to read the specification." ca@163: ca@163: " ca@163: UIPainter new openOnClass:UILayoutTool andSelector:#windowSpec ca@163: UILayoutTool new openInterface:#windowSpec tz@741: UILayoutTool open ca@163: " ca@163: ca@163: ca@163: ca@1305: ^ sv@1738: #(FullSpec sv@1738: name: windowSpec sv@1738: window: sv@1738: (WindowSpec sv@1738: label: 'UILayoutTool' sv@1738: name: 'UILayoutTool' sv@1738: min: (Point 10 10) ca@1790: bounds: (Rectangle 12 22 354 321) ca@1305: ) sv@1738: component: sv@1738: (SpecCollection sv@1738: collection: ( sv@1738: (NoteBookViewSpec sv@1738: name: 'NoteBook' sv@1738: layout: (LayoutFrame 0 0.0 0 0.0 0 1.0 0 1.0) sv@1738: activeHelpKey: layoutTool sv@1738: enableChannel: enableChannel sv@1738: tabable: true sv@1738: model: noteBookModel sv@1738: menu: noteBookList sv@1738: direction: bottom ca@1790: translateLabel: true sv@1738: canvas: layoutCanvasHolder sv@1738: tabTopMargin: 0 sv@1738: tabBottomMargin: 0 sv@1738: keepCanvasAlive: true sv@1738: tabLevel: 0 ca@1305: ) ca@1305: ) ca@1305: ca@1305: ) ca@163: ) ca@163: ! ! ca@163: cg@1781: !UILayoutTool class methodsFor:'resources'! cg@1781: cg@1781: classResources cg@1781: "my translations are found in the UIPainter classes resources" cg@1781: cg@1781: ^ UIPainter classResources cg@1781: ! ! cg@1781: ca@163: !UILayoutTool methodsFor:'accessing'! ca@163: ca@163: layout ca@163: "returns configued layout or nil ca@163: " ca@1305: ^ currentTool notNil ifTrue:[currentTool layout] ca@1305: ifFalse:[nil] ca@163: ! ca@163: ca@163: layoutType ca@163: "returns current layout type or nil ca@163: " ca@163: |slice| ca@163: ca@163: (slice := self selectedSlice) notNil ifTrue:[ ca@163: ^ slice last ca@163: ]. ca@163: ^ nil ca@163: ! ca@163: ca@163: layoutView ca@163: "returns current edited view ca@163: " ca@163: ^ layoutView ca@163: ! ca@163: cg@1072: layoutView:aView type:aTypeOrNil spec:aSpec ca@283: "change current edited view ca@283: " ca@163: |type name list| ca@163: ca@163: layoutView := aView. cg@1072: layoutSpec := aSpec. ca@163: cg@1074: (self aspectFor:#defaultExtentEnabled) value:(aSpec class == WindowSpec) not. cg@1074: werner@1826: aTypeOrNil notNil ifTrue:[ ca@163: self class slices findFirst:[:e| cg@2533: e last == aTypeOrNil cg@2533: ifTrue:[name := e first. true] cg@2533: ifFalse:[false]. ca@163: ]. werner@1826: list := Array with:name with: 'Frame'. ca@283: ] ifFalse:[ ca@283: (type := UIPainterView layoutType:layoutView) notNil ifTrue:[ ca@283: self class slices findFirst:[:e| cg@2533: e last == type ifTrue:[name := e first. true] ifFalse:[false] ca@283: ]. ca@283: list := tabList. werner@1826: type == #Extent ifTrue:[ ca@283: aView superView specClass isLayoutContainer ifTrue:[ ca@283: list := Array with:name ca@283: ] ifFalse:[ ca@283: list := list copyWith:name ca@283: ] ca@235: ] ca@235: ] ca@163: ]. ca@163: self noteBookList value:list. ca@163: self noteBookModel value:name. ca@163: self update. ca@163: ! ca@163: ca@163: modifiedHolder:aValueHolder ca@163: "set the value holder set to true in case of modifying attributes ca@163: " ca@163: modifiedHolder notNil ifTrue:[ ca@163: modifiedHolder removeDependent:self. ca@163: ]. ca@163: ca@163: (modifiedHolder := aValueHolder) notNil ifTrue:[ ca@163: modifiedHolder addDependent:self. ca@163: ]. ca@163: ca@163: ! ca@163: ca@163: update ca@163: "update from view ca@163: " ca@1305: |view| ca@163: ca@1305: (selection notNil and:[currentTool notNil]) ifTrue:[ cg@1072: (view := layoutView) notNil ifTrue:[ ca@1305: currentTool fetch:view spec:layoutSpec ca@163: ] ca@163: ]. ca@163: ca@163: ! ! ca@163: cg@3509: !UILayoutTool methodsFor:'accessing-channels'! cg@3509: cg@3509: acceptChannel cg@3509: "return the value of the instance variable 'acceptChannel' (automatically generated)" cg@3509: cg@3509: ^ masterApplication acceptChannel cg@3509: ! ! cg@3509: ca@163: !UILayoutTool methodsFor:'aspects'! ca@163: ca@163: aspectFor:aKey cg@2365: "returns the aspect for a aKey or nil" cg@2365: cg@2365: ^ aspects at:aKey ifAbsent:[ super aspectFor:aKey ] ca@163: ! ca@163: ca@1305: layoutCanvasHolder ca@1305: |holder| ca@1305: ca@1305: (holder := builder bindingAt:#layoutCanvasHolder) isNil ifTrue:[ ca@1305: holder := ValueHolder new. ca@1305: builder aspectAt:#layoutCanvasHolder put:holder ca@1305: ]. ca@1305: ^ holder ca@1305: ! ca@1305: cg@1072: notUsingDefaultExtent cg@1072: |holder| cg@1072: cg@1072: (holder := builder bindingAt:#notUsingDefaultExtent) isNil ifTrue:[ cg@1072: holder := BlockValue forLogicalNot:(self aspectFor:#useDefaultExtent). cg@1072: builder aspectAt:#notUsingDefaultExtent put:holder. cg@1072: ]. cg@1072: ^ holder cg@1072: cg@1072: ! cg@1072: ca@163: noteBookList cg@2322: "holds the list of tab labels" cg@2322: cg@2322: ^ builder valueAspectFor:#noteBookList initialValue:nil ca@163: ! ca@163: ca@163: noteBookModel ca@163: "automatically generated by UIPainter ..." ca@163: ca@163: |holder| ca@163: ca@163: (holder := builder bindingAt:#noteBookModel) isNil ifTrue:[ ca@163: holder := AspectAdaptor new subject:self; forAspect:#selection. ca@163: builder aspectAt:#noteBookModel put:holder. ca@163: ]. ca@163: ^ holder ca@163: ! ! ca@163: ca@163: !UILayoutTool methodsFor:'change & update'! ca@163: ca@163: update:something with:aParameter from:changedObject ca@163: "one of my models changed its value ca@163: " ca@163: changedObject ~~ modifiedHolder ifTrue:[ ca@163: modifiedHolder value ~~ true ifTrue:[ ca@163: modifiedHolder isNil ifFalse:[ ca@163: modifiedHolder value:true ca@163: ] ca@163: ] ca@163: ] ca@163: ca@163: ! ! ca@163: ca@163: !UILayoutTool methodsFor:'converting absolute'! ca@163: ca@163: absolute:what xOrY:xOrY cg@1339: "compute what as absolute (i.e. fraction=0, offset >= 0)" cg@1339: cg@1339: |extent fraction offset fractSymb offsetSymb cg@1339: newOffset newFraction fractHolder offsetHolder| cg@1339: cg@1339: extent := (self layoutView superView computeExtent) perform:xOrY. cg@1339: fractSymb := (what, 'Fraction') asSymbol. cg@1339: offsetSymb := (what, 'Offset') asSymbol. cg@1339: fractHolder := (self aspectFor:fractSymb). cg@1339: offsetHolder := (self aspectFor:offsetSymb). cg@1339: fraction := fractHolder value. cg@1339: offset := offsetHolder value. cg@1339: cg@1339: newOffset := offset + ((fraction * extent) asInteger). cg@1339: newFraction := 0. cg@1339: cg@1339: fractHolder value:newFraction. cg@1343: offsetHolder value:newOffset. cg@1339: ! cg@1339: cg@1339: absoluteBottom cg@1339: "compute bottom as absolute (i.e. fraction=0, offset >= 0)" cg@1339: cg@1339: self absolute:'bottom' xOrY:#y cg@1339: cg@1339: ! cg@1339: cg@1339: absoluteLeft cg@1339: "compute left as absolute (i.e. fraction=0, offset >= 0)" cg@1339: cg@1339: self absolute:'left' xOrY:#x cg@1339: cg@1339: ! cg@1339: cg@1339: absoluteRight cg@1339: "compute right as absolute (i.e. fraction=0, offset >= 0)" cg@1339: cg@1339: self absolute:'right' xOrY:#x cg@1339: cg@1339: ! cg@1339: cg@1339: absoluteTop cg@1339: "compute top as absolute (i.e. fraction=0, offset >= 0)" cg@1339: cg@1339: self absolute:'top' xOrY:#y cg@1339: cg@1339: ! ! cg@1339: cg@1339: !UILayoutTool methodsFor:'converting absolute from corner'! cg@1339: cg@1339: bottomRelativeBottom cg@1339: "compute bottom relative to containers bottom (fraction=1, offset negative)" cg@1339: cg@1339: self cornerRelative:'bottom' xOrY:#y cg@1339: cg@1339: ! cg@1339: cg@1339: bottomRelativeTop cg@1339: "compute top relative to containers bottom (fraction=1, offset negative)" cg@1339: cg@1339: self cornerRelative:'top' xOrY:#y cg@1339: cg@1339: ! cg@1339: cg@1339: cornerRelative:what xOrY:xOrY cg@1339: "compute what relative to the corner (i.e. fraction=1, offset negative)" cg@1339: cg@1339: |extent fraction offset fractSymb offsetSymb cg@1339: newFraction newOffset fractHolder offsetHolder| ca@163: ca@163: extent := (self layoutView superView computeExtent) perform:xOrY. ca@163: fractSymb := (what, 'Fraction') asSymbol. ca@163: offsetSymb := (what, 'Offset') asSymbol. cg@1198: fractHolder := (self aspectFor:fractSymb). cg@1198: offsetHolder := (self aspectFor:offsetSymb). cg@3501: fraction := fractHolder value ? 0. cg@3501: offset := offsetHolder value ? 0. cg@1339: cg@1339: newOffset := offset + ((fraction * extent) asInteger). cg@1339: newOffset := newOffset - extent. cg@1339: newFraction := 1. cg@1339: cg@1339: fractHolder value:newFraction. cg@1339: offsetHolder value:newOffset. ca@163: cg@3501: "Modified: / 15-11-2017 / 12:09:20 / cg" ca@163: ! ca@163: cg@1339: rightRelativeLeft cg@1339: "compute left relative to containers right (fraction=1, offset negative)" cg@1339: cg@1339: self cornerRelative:'left' xOrY:#x ca@163: ca@163: ! ca@163: cg@1339: rightRelativeRight cg@1339: "compute right relative to containers right (fraction=1, offset negative)" cg@1339: cg@1339: self cornerRelative:'right' xOrY:#x ca@163: ca@163: ! ! ca@163: ca@163: !UILayoutTool methodsFor:'converting relative'! ca@163: ca@163: relative:what xOrY:xOrY cg@1339: "compute what relative to the origin (i.e. fraction=0..1, offset 0)" cg@1339: cg@1339: |extent fraction offset fractSymb offsetSymb cg@1339: newFraction newOffset cg@1339: fractHolder offsetHolder| ca@163: ca@163: extent := (self layoutView superView computeExtent) perform:xOrY. ca@163: fractSymb := (what, 'Fraction') asSymbol. ca@163: offsetSymb := (what, 'Offset') asSymbol. cg@1198: fractHolder := (self aspectFor:fractSymb). cg@1198: offsetHolder := (self aspectFor:offsetSymb). cg@1198: fraction := fractHolder value. cg@1198: offset := offsetHolder value. cg@1339: cg@1339: newFraction := (fraction + (offset / extent)) asFloat. cg@1339: newOffset := 0. cg@1339: cg@1339: (newFraction > 1.0) ifTrue:[newFraction := 1.0]. cg@1339: (newFraction < 0.0) ifTrue:[newFraction := 0]. cg@1339: cg@1339: offsetHolder value:newOffset. cg@1339: fractHolder value:newFraction. ca@163: ca@163: ca@163: ca@163: ! ca@163: ca@163: relativeBottom cg@1339: "compute bottom relative to the origin (i.e. fraction=0..1, offset 0)" cg@1339: ca@163: self relative:'bottom' xOrY:#y ca@163: ca@163: ca@163: ! ca@163: ca@163: relativeLeft cg@1339: "compute left relative to the origin (i.e. fraction=0..1, offset 0)" cg@1339: ca@163: self relative:'left' xOrY:#x ca@163: ca@163: ! ca@163: ca@163: relativeRight cg@1339: "compute right relative to the origin (i.e. fraction=0..1, offset 0)" cg@1339: ca@163: self relative:'right' xOrY:#x ca@163: ca@163: ! ca@163: ca@163: relativeTop cg@1339: "compute top relative to the origin (i.e. fraction=0..1, offset 0)" cg@1339: ca@163: self relative:'top' xOrY:#y ca@163: ca@163: ! ! ca@163: ca@163: !UILayoutTool methodsFor:'initialization'! ca@163: ca@163: initialize ca@163: "initialize channels ca@163: " ca@221: |slices size| ca@221: ca@163: super initialize. ca@163: ca@163: aspects := IdentityDictionary new. ca@1305: toolsDictionary := IdentityDictionary new. ca@163: ca@163: #( bottomFraction bottomOffset ca@163: leftFraction leftOffset ca@163: topFraction topOffset ca@163: rightFraction rightOffset ca@163: leftAlignmentFraction topAlignmentFraction cg@1268: (useDefaultExtent false) cg@1268: (defaultExtentEnabled false) cg@2379: cg@2379: (usePreferredWidth false) cg@2379: (usePreferredHeight false) cg@2379: (useDynamicPreferredWidth false) cg@2379: (useDynamicPreferredHeight false) cg@2953: (keepSpaceForOSXResizeHandleV false) cg@2953: (keepSpaceForOSXResizeHandleH false) ca@163: ) ca@163: cg@1268: do:[:aKeyOrPair| |holder key val| cg@1268: (key := aKeyOrPair) isSymbol ifFalse:[ cg@1268: key := aKeyOrPair first. cg@1268: val := aKeyOrPair second cg@1268: ]. cg@1268: holder := val asValue. ca@163: holder addDependent:self. cg@1268: aspects at:key put:holder. ca@163: ]. ca@163: ca@221: slices := self class slices. ca@221: size := slices size - 1. ca@221: tabList := Array new:size. ca@163: ca@221: 1 to:size do:[:i| tabList at:i put:((slices at:i) first) ]. ca@163: ! ! ca@163: ca@163: !UILayoutTool methodsFor:'selection'! ca@163: ca@163: selectedSlice cg@2022: "returns the slice assigned to the selection or nil" cg@2022: cg@2022: selection isNil ifTrue:[^ nil]. cg@2022: ^ self class slices detect:[:aSlice | aSlice first = selection] ifNone:nil cg@2022: cg@2022: "/ selection notNil ifTrue:[ cg@2022: "/ self class slices do:[:aSlice| cg@2022: "/ aSlice first = selection ifTrue:[ cg@2022: "/ ^ aSlice cg@2022: "/ ] cg@2022: "/ ] cg@2022: "/ ]. cg@2022: "/ ^ nil ca@163: ! ca@163: ca@163: selection ca@163: ^ selection ca@163: ! ca@163: ca@163: selection:aSelection sv@1726: |appl slice sel key view| ca@163: ca@293: aSelection isNumber ifTrue:[ ca@293: aSelection ~~ 0 ifTrue:[sel := tabList at:aSelection] ca@293: ] ifFalse:[ ca@293: sel := aSelection ca@293: ]. ca@1305: ca@293: selection = sel ifFalse:[ ca@293: (selection := sel) notNil ifTrue:[ ca@1305: key := selection asSymbol. ca@1305: appl := toolsDictionary at:key ifAbsent:nil. ca@1305: ca@1305: appl isNil ifTrue:[ ca@1334: view := ApplicationSubView new. ca@1305: slice := self selectedSlice. ca@1305: appl := slice last asString. ca@1305: appl := Smalltalk classNamed:(self class name asString, '::', appl). ca@1305: appl := appl new. ca@1305: appl masterApplication:self. ca@1305: appl createBuilder. ca@1305: view client:appl. ca@1305: appl window:view. ca@1305: toolsDictionary at:key put:appl. ca@1305: ] ifFalse:[ ca@1305: view := appl window cg@1332: ]. cg@1332: modifiedHolder value:true. ca@163: ]. ca@1305: currentTool := appl. ca@1305: self layoutCanvasHolder value:view. ca@163: ]. ca@163: self update cg@1332: cg@1332: "Modified: / 4.2.2000 / 22:31:41 / cg" cg@1332: ! ! cg@1332: cg@1343: !UILayoutTool::AnyLayout class methodsFor:'image specs'! cg@1343: cg@1343: imageAbsX sv@3116: cg@1332: "This resource specification was automatically generated cg@1343: by the ImageEditor of ST/X." cg@1332: "Do not manually edit this!! If it is corrupted, cg@1343: the ImageEditor may not be able to read the specification." cg@1343: " cg@1343: self imageAbsX inspect cg@1343: ImageEditor openOnClass:self andSelector:#imageAbsX sv@3116: Icon flushCachedIcons" sv@3116: sv@3116: ^ Icon constantNamed:'UILayoutTool::AnyLayout class imageAbsX' sv@3116: ifAbsentPut:[ sv@3116: (Depth1Image new) sv@3116: width:16; sv@3116: height:16; sv@3116: photometric:(#palette); sv@3116: bitsPerSample:(#( 1 )); sv@3116: samplesPerPixel:(1); sv@3116: bits:(ByteArray sv@3116: fromPackedString:' cg@1343: <@BP@I@N$L*P*)BZ''8*@@(@B''8*P&)B*$L*PC)@@<@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ cg@1343: @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ sv@3116: @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@a'); sv@3116: colorMapFromArray:#[ 0 0 0 255 255 255 ]; sv@3116: mask:((ImageMask new) sv@3116: width:16; sv@3116: height:16; sv@3116: bits:(ByteArray sv@3116: fromPackedString:'<@C0@O@N??;??/?>??;0?/C. cg@1343: "This resource specification was automatically generated cg@1343: by the ImageEditor of ST/X." cg@1343: "Do not manually edit this!! If it is corrupted, cg@1343: the ImageEditor may not be able to read the specification." cg@1343: " cg@1343: self imageAbsXFromRight inspect cg@1343: ImageEditor openOnClass:self andSelector:#imageAbsXFromRight sv@3116: Icon flushCachedIcons" sv@3116: sv@3116: ^ Icon constantNamed:'UILayoutTool::AnyLayout class imageAbsXFromRight' sv@3116: ifAbsentPut:[ sv@3116: (Depth1Image new) sv@3116: width:16; sv@3116: height:16; sv@3116: photometric:(#palette); sv@3116: bitsPerSample:(#( 1 )); sv@3116: samplesPerPixel:(1); sv@3116: bits:(ByteArray sv@3116: fromPackedString:'@@<@BW@IT0%UBU$IT_%@@T@AT_%YBUTIT0%0BP@I@@ cg@1343: "This resource specification was automatically generated cg@1343: by the ImageEditor of ST/X." cg@1343: "Do not manually edit this!! If it is corrupted, cg@1343: the ImageEditor may not be able to read the specification." cg@1332: " cg@1343: self imageAbsY inspect cg@1343: ImageEditor openOnClass:self andSelector:#imageAbsY sv@3116: Icon flushCachedIcons" sv@3116: sv@3116: ^ Icon constantNamed:'UILayoutTool::AnyLayout class imageAbsY' sv@3116: ifAbsentPut:[ sv@3116: (Depth1Image new) sv@3116: width:16; sv@3116: height:16; sv@3116: photometric:(#palette); sv@3116: bitsPerSample:(#( 1 )); sv@3116: samplesPerPixel:(1); sv@3116: bits:(ByteArray sv@3116: fromPackedString:'??>@@X@A?'' cg@1343: "This resource specification was automatically generated cg@1343: by the ImageEditor of ST/X." cg@1343: "Do not manually edit this!! If it is corrupted, cg@1343: the ImageEditor may not be able to read the specification." cg@1343: " cg@1343: self imageAbsYFromBottom inspect cg@1343: ImageEditor openOnClass:self andSelector:#imageAbsYFromBottom sv@3116: Icon flushCachedIcons" sv@3116: sv@3116: ^ Icon constantNamed:'UILayoutTool::AnyLayout class imageAbsYFromBottom' sv@3116: ifAbsentPut:[ sv@3116: (Depth1Image new) sv@3116: width:16; sv@3116: height:16; sv@3116: photometric:(#palette); sv@3116: bitsPerSample:(#( 1 )); sv@3116: samplesPerPixel:(1); sv@3116: bits:(ByteArray sv@3116: fromPackedString:'@@@??B@DO''0DH@ PD@ ^^@I@@$@BP@I@?''>@@X@A??@O@@<@C0@O@?????????? cg@1343: "This resource specification was automatically generated cg@1343: by the ImageEditor of ST/X." cg@1343: "Do not manually edit this!! If it is corrupted, cg@1343: the ImageEditor may not be able to read the specification." cg@1343: " cg@1343: self imageFractX inspect cg@1343: ImageEditor openOnClass:self andSelector:#imageFractX sv@3116: Icon flushCachedIcons" sv@3116: sv@3116: ^ Icon constantNamed:'UILayoutTool::AnyLayout class imageFractX' sv@3116: ifAbsentPut:[ sv@3116: (Depth1Image new) sv@3116: width:16; sv@3116: height:16; sv@3116: photometric:(#palette); sv@3116: bitsPerSample:(#( 1 )); sv@3116: samplesPerPixel:(1); sv@3116: bits:(ByteArray sv@3116: fromPackedString:' cg@1343: <@>PBY@I&A&TJYII$X&@@X@A$X&RRYP)&A&PBY@I<@<@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ cg@1343: @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ sv@3116: @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@a'); sv@3116: colorMapFromArray:#[ 0 0 0 255 255 255 ]; sv@3116: mask:((ImageMask new) sv@3116: width:16; sv@3116: height:16; sv@3116: bits:(ByteArray sv@3116: fromPackedString:'<@?0C?@O>A?_?0?>A?0C?@O<@ cg@1343: "This resource specification was automatically generated cg@1343: by the ImageEditor of ST/X." cg@1343: "Do not manually edit this!! If it is corrupted, cg@1343: the ImageEditor may not be able to read the specification." cg@1332: " cg@1343: self imageFractY inspect cg@1343: ImageEditor openOnClass:self andSelector:#imageFractY sv@3116: Icon flushCachedIcons" sv@3116: sv@3116: ^ Icon constantNamed:'UILayoutTool::AnyLayout class imageFractY' sv@3116: ifAbsentPut:[ sv@3116: (Depth1Image new) sv@3116: width:16; sv@3116: height:16; sv@3116: photometric:(#palette); sv@3116: bitsPerSample:(#( 1 )); sv@3116: samplesPerPixel:(1); sv@3116: bits:(ByteArray sv@3116: fromPackedString:'??>@@X@A?''@@X@A??@?0A>@C0@O@A>@O ca@1447: ca@1447: ^super helpSpec addPairsFrom:#( ca@1447: ca@1447: #alignBottomCenter cg@2794: 'Aligns the widget''s bottomCenter to location.' ca@1447: ca@1447: #alignBottomLeft cg@2794: 'Aligns the widget''s bottomLeft to location.' ca@1447: ca@1447: #alignBottomRight cg@2794: 'Aligns the widget''s bottomRight to location.' ca@1447: ca@1447: #alignCenter cg@2794: 'Aligns the widget''s center to location.' ca@1447: ca@1447: #alignHorizontal cg@2794: 'Horizontal relative position of the alignment point of the widget (that point is aligned with the above origin).' ca@1447: ca@1447: #alignLeftCenter cg@2794: 'Aligns the widget''s leftCenter to location.' ca@1447: ca@1447: #alignRightCenter cg@2794: 'Aligns the widget''s rightCenter to location.' ca@1447: ca@1447: #alignTopCenter cg@2794: 'Aligns the widget''s topCenter to location.' ca@1447: ca@1447: #alignTopLeft cg@2794: 'Aligns the widget''s topLeft to location.' ca@1447: ca@1447: #alignTopRight cg@2794: 'Aligns the widget''s topRight to location.' ca@1447: ca@1447: #alignVertical cg@2794: 'Vertical relative position of the alignment point of the widget (that point is aligned with the above origin).' ca@1447: ca@1447: ) cg@2794: cg@2794: "Modified: / 28-07-2010 / 10:05:41 / cg" ca@1447: ! ! ca@1447: ca@1447: !UILayoutTool::AlignmentOrigin class methodsFor:'interface specs'! ca@1447: ca@1447: windowSpec ca@1447: "This resource specification was automatically generated ca@1447: by the UIPainter of ST/X." ca@1447: ca@1447: "Do not manually edit this!! If it is corrupted, ca@1447: the UIPainter may not be able to read the specification." ca@1447: ca@1447: " ca@1447: UIPainter new openOnClass:UILayoutTool::AlignmentOrigin andSelector:#windowSpec ca@1447: UILayoutTool::AlignmentOrigin new openInterface:#windowSpec ca@1447: UILayoutTool::AlignmentOrigin open ca@1447: " ca@1447: ca@1447: ca@1447: ca@1447: ^ cg@3052: #(FullSpec cg@3052: name: windowSpec cg@3052: window: cg@3052: (WindowSpec cg@3052: label: 'UILayoutTool-AlignmentOrigin' cg@3052: name: 'UILayoutTool-AlignmentOrigin' cg@3052: min: (Point 10 10) cg@3052: bounds: (Rectangle 0 0 405 220) cg@3052: ) cg@3052: component: cg@3052: (SpecCollection cg@3052: collection: ( cg@3052: (UISubSpecification cg@3052: name: 'layoutOriginSpec' cg@3052: layout: (LayoutFrame 1 0.0 6 0 0 1.0 111 0) cg@3052: majorKey: UILayoutTool cg@3052: minorKey: layoutOriginSpec cg@3052: ) cg@3052: (FramedBoxSpec cg@3052: label: 'Alignment' cg@3052: name: 'FramedBox' cg@3052: layout: (LayoutFrame 1 0.0 113 0 0 1.0 215 0) cg@3052: labelPosition: topLeft cg@3052: translateLabel: true cg@3052: component: cg@3052: (SpecCollection cg@3052: collection: ( cg@3052: (LabelSpec cg@3052: label: 'Horizontal:' cg@3052: name: 'alignHLabel' cg@3052: layout: (AlignmentOrigin 88 0 17 0 1 0) cg@3052: translateLabel: true cg@3052: adjust: right cg@3052: ) cg@3052: (InputFieldSpec cg@3052: name: 'leftAlignmentFractionField' cg@3052: layout: (LayoutFrame 90 0 14 0 147 0 36 0) cg@3052: activeHelpKey: alignHorizontal cg@3052: tabable: true cg@3052: model: leftAlignmentFraction cg@3052: group: inputGroup cg@3052: type: numberOrNil cg@3052: acceptOnLostFocus: true cg@3052: acceptChannel: acceptChannel cg@3052: modifiedChannel: modifiedChannel cg@3052: acceptOnPointerLeave: true cg@3052: ) cg@3052: (LabelSpec cg@3052: label: 'Vertical:' cg@3052: name: 'alignVLabel' cg@3052: layout: (AlignmentOrigin 88 0 43 0 1 0) cg@3052: translateLabel: true cg@3052: adjust: right cg@3052: ) cg@3052: (InputFieldSpec cg@3052: name: 'topAlignmentFractionField' cg@3052: layout: (LayoutFrame 90 0 40 0 147 0 62 0) cg@3052: activeHelpKey: alignVertical cg@3052: tabable: true cg@3052: model: topAlignmentFraction cg@3052: group: inputGroup cg@3052: type: numberOrNil cg@3052: acceptOnLostFocus: true cg@3052: acceptChannel: acceptChannel cg@3052: modifiedChannel: modifiedChannel cg@3052: acceptOnPointerLeave: true cg@3052: ) cg@3052: (DividerSpec cg@3052: name: 'separator1' cg@3052: layout: (LayoutFrame 204 0 19 0 245 0 22 0) cg@3052: ) cg@3052: (DividerSpec cg@3052: name: 'separator2' cg@3052: layout: (LayoutFrame 204 0 55 0 245 0 58 0) ca@1447: ) cg@3052: (DividerSpec cg@3052: name: 'separator3' cg@3052: layout: (LayoutFrame 196 0 28 0 199 0 50 0) cg@3052: orientation: vertical cg@3052: ) cg@3052: (DividerSpec cg@3052: name: 'separator4' cg@3052: layout: (LayoutFrame 250 0 28 0 253 0 50 0) cg@3052: orientation: vertical cg@3052: ) cg@3052: (ActionButtonSpec cg@3052: name: 'alignTopLeft' cg@3052: layout: (LayoutFrame 190 0 14 0 204 0 28 0) cg@3052: activeHelpKey: alignTopLeft cg@3052: tabable: true cg@3052: model: alignTopLeft cg@3052: ) cg@3052: (ActionButtonSpec cg@3052: name: 'alignTopCenter' cg@3052: layout: (LayoutFrame 217 0 14 0 231 0 28 0) cg@3052: activeHelpKey: alignTopCenter cg@3052: tabable: true cg@3052: model: alignTopCenter cg@3052: ) cg@3052: (ActionButtonSpec cg@3052: name: 'alignTopRight' cg@3052: layout: (LayoutFrame 245 0 14 0 259 0 28 0) cg@3052: activeHelpKey: alignTopRight cg@3052: tabable: true cg@3052: model: alignTopRight cg@3052: ) cg@3052: (ActionButtonSpec cg@3052: name: 'alignLeftCenter' cg@3052: layout: (LayoutFrame 190 0 32 0 204 0 46 0) cg@3052: activeHelpKey: alignLeftCenter cg@3052: tabable: true cg@3052: model: alignLeftCenter cg@3052: ) cg@3052: (ActionButtonSpec cg@3052: name: 'alignCenter' cg@3052: layout: (LayoutFrame 217 0 32 0 231 0 46 0) cg@3052: activeHelpKey: alignCenter cg@3052: tabable: true cg@3052: model: alignCenter cg@3052: ) cg@3052: (ActionButtonSpec cg@3052: name: 'alignRightCenter' cg@3052: layout: (LayoutFrame 245 0 32 0 259 0 46 0) cg@3052: activeHelpKey: alignRightCenter cg@3052: tabable: true cg@3052: model: alignRightCenter cg@3052: ) cg@3052: (ActionButtonSpec cg@3052: name: 'alignBottomLeft' cg@3052: layout: (LayoutFrame 190 0 50 0 204 0 64 0) cg@3052: activeHelpKey: alignBottomLeft cg@3052: tabable: true cg@3052: model: alignBottomLeft cg@3052: ) cg@3052: (ActionButtonSpec cg@3052: name: 'alignBottomCenter' cg@3052: layout: (LayoutFrame 217 0 50 0 231 0 64 0) cg@3052: activeHelpKey: alignBottomCenter cg@3052: tabable: true cg@3052: model: alignBottomCenter cg@3052: ) cg@3052: (ActionButtonSpec cg@3052: name: 'alignBottomRight' cg@3052: layout: (LayoutFrame 245 0 50 0 259 0 64 0) cg@3052: activeHelpKey: alignBottomRight cg@3052: tabable: true cg@3052: model: alignBottomRight cg@3052: ) cg@3052: ) cg@3052: cg@3052: ) ca@1447: ) cg@3052: ) cg@3052: cg@3052: ) cg@3052: ) ca@1447: ! ! ca@1447: ca@1447: !UILayoutTool::AlignmentOrigin methodsFor:'accessing'! ca@1447: ca@1447: fetch:aView spec:aSpec ca@1447: "fetch alignmentOrigin ca@1447: " ca@1447: |layout type ca@1447: leftAlignmentFractionHolder topAlignmentFractionHolder ca@1447: leftOffsetHolder leftFractionHolder topOffsetHolder topFractionHolder| ca@1447: ca@1447: type := UIPainterView layoutType:aView. ca@1447: layout := aView geometryLayout. ca@1447: ca@1447: leftOffsetHolder := (self aspectFor:#leftOffset). ca@1447: leftFractionHolder := (self aspectFor:#leftFraction). ca@1447: topOffsetHolder := (self aspectFor:#topOffset). ca@1447: topFractionHolder := (self aspectFor:#topFraction). ca@1447: leftAlignmentFractionHolder := (self aspectFor:#leftAlignmentFraction). ca@1447: topAlignmentFractionHolder := (self aspectFor:#topAlignmentFraction). ca@1447: ca@1447: layout isLayout ifTrue:[ ca@1447: leftOffsetHolder value:(layout leftOffset). ca@1447: leftFractionHolder value:(layout leftFraction). ca@1447: topOffsetHolder value:(layout topOffset). ca@1447: topFractionHolder value:(layout topFraction). ca@1447: ca@1447: type == #AlignmentOrigin ifTrue:[ ca@1447: leftAlignmentFractionHolder value:(layout leftAlignmentFraction). ca@1447: topAlignmentFractionHolder value:(layout topAlignmentFraction). ca@1447: ^ self ca@1447: ] ca@1447: ] ifFalse:[ ca@1447: layout := aView computeOrigin. ca@1447: ca@1447: leftOffsetHolder value:(layout x). ca@1447: leftFractionHolder value:0. ca@1447: topOffsetHolder value:(layout y). ca@1447: topFractionHolder value:0. ca@1447: ]. ca@1447: leftAlignmentFractionHolder value:0. ca@1447: topAlignmentFractionHolder value:0. ca@1447: ca@1447: ca@1447: ! ca@1447: ca@1447: layout ca@1447: "returns current layout as alignmentOrigin ca@1447: " ca@1447: |layout| ca@1447: cg@3234: layout := (Smalltalk at:#AlignmentOrigin) new. ca@1447: cg@1581: layout cg@3235: leftFraction:(self aspectValueOr0For:#leftFraction) cg@3235: offset:(self aspectValueOr0For:#leftOffset) cg@3235: topFraction:(self aspectValueOr0For:#topFraction) cg@3235: offset:(self aspectValueOr0For:#topOffset). cg@1581: cg@1581: layout cg@3235: leftAlignmentFraction:(self aspectValueOr0For:#leftAlignmentFraction) cg@3235: topAlignmentFraction:(self aspectValueOr0For:#topAlignmentFraction). ca@1447: ca@1447: ^ layout ca@1447: ! ! ca@1447: ca@1447: !UILayoutTool::AlignmentOrigin methodsFor:'alignment'! ca@1447: ca@1447: alignBottomCenter ca@1447: self makeAlignLeft:0.5 top:1 ca@1447: ca@1447: ca@1447: ! ca@1447: ca@1447: alignBottomLeft ca@1447: self makeAlignLeft:0 top:1 ca@1447: ca@1447: ca@1447: ! ca@1447: ca@1447: alignBottomRight ca@1447: self makeAlignLeft:1 top:1 ca@1447: ca@1447: ca@1447: ! ca@1447: ca@1447: alignCenter ca@1447: self makeAlignLeft:0.5 top:0.5 ca@1447: ca@1447: ca@1447: ! ca@1447: ca@1447: alignLeftCenter ca@1447: self makeAlignLeft:0 top:0.5 ca@1447: ca@1447: ca@1447: ! ca@1447: ca@1447: alignRightCenter ca@1447: self makeAlignLeft:1 top:0.5 ca@1447: ca@1447: ca@1447: ! ca@1447: ca@1447: alignTopCenter ca@1447: self makeAlignLeft:0.5 top:0 ca@1447: ca@1447: ca@1447: ! ca@1447: ca@1447: alignTopLeft ca@1447: self makeAlignLeft:0 top:0 ca@1447: ca@1447: ca@1447: ! ca@1447: ca@1447: alignTopRight ca@1447: self makeAlignLeft:1 top:0 ca@1447: ca@1447: ca@1447: ! ca@1447: ca@1447: makeAlignLeft:leftAlignmentFraction top:topAlignmentFraction ca@1447: |lAF tAF lO tO ext lAHolder tAHolder lOHolder tOHolder| ca@1447: ca@1447: lAF := (lAHolder := self aspectFor:#leftAlignmentFraction) value ? 0. ca@1447: tAF := (tAHolder := self aspectFor:#topAlignmentFraction) value ? 0. ca@1447: ext := (self aspectFor:#layoutView) computeExtent. ca@1447: ca@1447: lAHolder value:leftAlignmentFraction. ca@1447: tAHolder value:topAlignmentFraction. ca@1447: ca@1447: lO := (lOHolder := self aspectFor:#leftOffset) value ? 0. ca@1447: tO := (tOHolder := self aspectFor:#topOffset) value ? 0. ca@1447: ca@1447: lO := lO + (ext x * (leftAlignmentFraction - lAF)). ca@1447: tO := tO + (ext y * (topAlignmentFraction - tAF)). ca@1447: ca@1447: lOHolder value:(lO rounded). ca@1447: tOHolder value:(tO rounded). ca@1447: ca@1447: ! ca@1447: ca@1447: makeAlignTopRight ca@1447: self makeAlignLeft:1 top:0 ca@1447: ca@1447: ca@1447: ! ! ca@1447: ca@1447: !UILayoutTool::Extent class methodsFor:'help specs'! ca@1447: ca@1447: helpSpec ca@1447: "This resource specification was automatically generated ca@1447: by the UIHelpTool of ST/X." ca@1447: ca@1447: "Do not manually edit this!! If it is corrupted, ca@1447: the UIHelpTool may not be able to read the specification." ca@1447: ca@1447: " ca@1447: UIHelpTool openOnClass:UILayoutTool::Extent ca@1447: " ca@1447: ca@1447: ca@1447: cg@2949: ^ super helpSpec addPairsFrom:#( ca@1447: ca@1447: #hrzExtent ca@1447: 'Horizontal extent of the selected widget.' ca@1447: cg@2949: #useDynamicPreferredWidth cg@2949: 'Dynamically adapt to any change of the widget''s preferred width' cg@2949: cg@2949: #useDynamicPreferredHeight cg@2949: 'Dynamically adapt to any change of the widget''s preferred height' cg@2949: cg@2949: #usePreferredHeight cg@2949: 'Use the widget''s preferred height as initial size' cg@2949: cg@2949: #usePreferredWidth cg@2949: 'Use the widget''s preferred width as initial size' cg@2949: cg@2949: #useDefaultExtent cg@2949: 'Use the widget''s default extent as initial size' cg@2949: ca@1447: #vrtExtent ca@1447: 'Vertical extent of the selected widget.' ca@1447: ca@1447: ) ca@1447: ! ! ca@1447: ca@1447: !UILayoutTool::Extent class methodsFor:'interface specs'! ca@1447: ca@1447: windowSpec ca@1447: "This resource specification was automatically generated ca@1447: by the UIPainter of ST/X." ca@1447: ca@1447: "Do not manually edit this!! If it is corrupted, ca@1447: the UIPainter may not be able to read the specification." ca@1447: ca@1447: " ca@1447: UIPainter new openOnClass:UILayoutTool::Extent andSelector:#windowSpec ca@1447: UILayoutTool::Extent new openInterface:#windowSpec ca@1447: UILayoutTool::Extent open ca@1447: " ca@1447: ca@1447: ca@1447: ca@1447: ^ cg@3052: #(FullSpec cg@3052: name: windowSpec cg@3662: uuid: 'aeb70aca-6d80-11e9-8727-b8f6b1108e05' cg@3052: window: cg@3052: (WindowSpec cg@3052: label: 'UILayoutTool-Extent' cg@3052: name: 'UILayoutTool-Extent' cg@3662: uuid: 'aeb70dcc-6d80-11e9-8727-b8f6b1108e05' cg@3052: min: (Point 10 10) cg@3052: bounds: (Rectangle 0 0 506 169) cg@3052: ) cg@3052: component: cg@3052: (SpecCollection cg@3052: collection: ( cg@3052: (FramedBoxSpec cg@3052: label: 'Extent' cg@3052: name: 'FramedBox' cg@3052: layout: (LayoutFrame 0 0.0 6 0.0 0 1.0 158 0) cg@3662: uuid: 'aeb710a6-6d80-11e9-8727-b8f6b1108e05' cg@3052: labelPosition: topLeft cg@3052: translateLabel: true cg@3052: component: cg@3052: (SpecCollection cg@3052: collection: ( cg@3052: (LabelSpec cg@3052: label: 'Width:' cg@3052: name: 'labelWidth' cg@3662: layout: (AlignmentOrigin 89 0 37 0 1 0.5) cg@3662: uuid: 'aeb712e0-6d80-11e9-8727-b8f6b1108e05' cg@3052: translateLabel: true cg@3052: adjust: right cg@3052: ) cg@3052: (InputFieldSpec cg@3052: name: 'fieldLeftOffset' cg@3662: layout: (LayoutFrame 90 0 26 0 140 0 48 0) cg@3052: activeHelpKey: hrzExtent cg@3662: uuid: 'aeb71466-6d80-11e9-8727-b8f6b1108e05' cg@3052: enableChannel: notUsingDefaultExtent cg@3052: tabable: true cg@3052: model: leftOffset cg@3052: group: inputGroup cg@3052: type: numberOrNil cg@3052: acceptOnLostFocus: true cg@3052: acceptChannel: acceptChannel cg@3052: modifiedChannel: modifiedChannel cg@3052: acceptOnPointerLeave: true cg@3052: ) cg@3052: (LabelSpec cg@3052: label: 'Height:' cg@3052: name: 'labelHeight' cg@3662: layout: (AlignmentOrigin 89 0 62 0 1 0.5) cg@3662: uuid: 'aeb71682-6d80-11e9-8727-b8f6b1108e05' cg@3052: translateLabel: true cg@3052: adjust: right ca@1447: ) cg@3052: (InputFieldSpec cg@3052: name: 'fieldRightOffset' cg@3662: layout: (LayoutFrame 90 0 51 0 140 0 73 0) cg@3052: activeHelpKey: vrtExtent cg@3662: uuid: 'aeb717ea-6d80-11e9-8727-b8f6b1108e05' cg@3052: enableChannel: notUsingDefaultExtent cg@3052: tabable: true cg@3052: model: topOffset cg@3052: group: inputGroup cg@3052: type: numberOrNil cg@3052: acceptOnLostFocus: true cg@3052: acceptChannel: acceptChannel cg@3052: modifiedChannel: modifiedChannel cg@3052: acceptOnPointerLeave: true cg@3052: ) cg@3052: (CheckBoxSpec cg@3052: label: 'Preferred' cg@3052: name: 'CheckBox1' cg@3662: layout: (LayoutFrame 158 0 26 0 284 0 48 0) cg@3052: activeHelpKey: usePreferredWidth cg@3662: uuid: 'aeb71a10-6d80-11e9-8727-b8f6b1108e05' cg@3052: model: usePreferredWidth cg@3052: translateLabel: true cg@3052: ) cg@3052: (CheckBoxSpec cg@3052: label: 'Dynamic' cg@3052: name: 'CheckBox3' cg@3662: layout: (LayoutFrame 284 0 26 0 404 0 48 0) cg@3052: activeHelpKey: useDynamicPreferredWidth cg@3662: uuid: 'aeb71c40-6d80-11e9-8727-b8f6b1108e05' cg@3052: model: useDynamicPreferredWidth cg@3052: translateLabel: true cg@3052: ) cg@3052: (CheckBoxSpec cg@3052: label: 'Preferred' cg@3052: name: 'CheckBox2' cg@3662: layout: (LayoutFrame 158 0 54 0 284 0 76 0) cg@3052: activeHelpKey: usePreferredHeight cg@3662: uuid: 'aeb71d9e-6d80-11e9-8727-b8f6b1108e05' cg@3052: model: usePreferredHeight cg@3052: translateLabel: true cg@3052: ) cg@3052: (CheckBoxSpec cg@3052: label: 'Dynamic' cg@3052: name: 'CheckBox4' cg@3662: layout: (LayoutFrame 284 0 54 0 404 0 76 0) cg@3052: activeHelpKey: useDynamicPreferredHeight cg@3662: uuid: 'aeb71ee8-6d80-11e9-8727-b8f6b1108e05' cg@3052: model: useDynamicPreferredHeight cg@3052: translateLabel: true cg@3052: ) cg@3052: (CheckBoxSpec cg@3052: label: 'Use Widget''s Default Extent' cg@3052: name: 'useDefaultExtentCheckBox' cg@3662: layout: (Point 5 80) cg@3052: activeHelpKey: useDefaultExtent cg@3662: uuid: 'aeb72032-6d80-11e9-8727-b8f6b1108e05' cg@3052: enableChannel: defaultExtentEnabled cg@3052: tabable: true cg@3052: model: useDefaultExtent cg@3052: translateLabel: true cg@3052: ) cg@3052: ) cg@3052: cg@3052: ) ca@1447: ) cg@3052: (PopUpListSpec cg@3052: label: 'Common Extents' cg@3052: name: 'CommonExtentsPopUpList' cg@3662: layout: (LayoutFrame 189 0 21 0 351 0 43 0) cg@3662: uuid: 'aeb721ae-6d80-11e9-8727-b8f6b1108e05' cg@3662: translateLabel: true cg@3052: tabable: true cg@3052: menu: listOfCommonExtents cg@3052: useIndex: true cg@3052: ignoreReselect: false cg@3052: stateChangeCallBackSelector: commonExtentSelected: cg@3052: ) cg@3052: ) cg@3052: cg@3052: ) cg@3052: ) ca@1447: ! ! ca@1447: ca@1447: !UILayoutTool::Extent methodsFor:'accessing'! ca@1447: ca@1447: fetch:aView spec:aSpec cg@2022: "fetch the extent from aView" cg@2022: ca@1447: |extent| ca@1447: ca@1447: extent := aView computeExtent. ca@1447: ca@1447: (self aspectFor:#leftOffset) value:(extent x). cg@2022: (self aspectFor:#topOffset) value:(extent y). cg@3176: aSpec notNil ifTrue:[ cg@3176: (self aspectFor:#usePreferredWidth) value:(aSpec usePreferredWidth). cg@3176: (self aspectFor:#usePreferredHeight) value:(aSpec usePreferredHeight). cg@3176: (self aspectFor:#useDynamicPreferredWidth) value:(aSpec useDynamicPreferredWidth). cg@3176: (self aspectFor:#useDynamicPreferredHeight) value:(aSpec useDynamicPreferredHeight). cg@3176: (self aspectFor:#useDefaultExtent) value:aSpec useDefaultExtent cg@3176: ]. ca@1447: ! ca@1447: ca@1447: layout cg@2022: "returns the current extent" cg@2022: cg@3235: ^ (self aspectValueOr0For:#leftOffset) @ (self aspectValueOr0For:#topOffset) cg@2022: ! ! cg@2022: cg@2022: !UILayoutTool::Extent methodsFor:'aspects'! cg@2022: cg@2022: commonExtentsSpec cg@2022: ^ #( cg@2022: ('200 x 100' (200 100) ) cg@2022: ('300 x 300' (300 300) ) cg@2022: ('640 x 400' (640 400) ) cg@2022: ('800 x 600' (800 600) ) cg@2214: ('1024 x 768' (1024 768) ) cg@2214: ('1200 x 800' (1200 800) ) cg@2022: ) cg@2022: ! cg@2022: cg@2022: listOfCommonExtents cg@2022: ^ self commonExtentsSpec collect:[:eachRow | eachRow first]. cg@2022: ! ! cg@2022: cg@2022: !UILayoutTool::Extent methodsFor:'user actions'! cg@2022: cg@2022: commonExtentSelected:index cg@2022: |xy x y| cg@2022: cg@2022: xy := (self commonExtentsSpec at:index) second. cg@2022: x := xy at:1. cg@2022: y := xy at:2. cg@2022: cg@2022: (self aspectFor:#leftOffset) value:x. cg@2022: (self aspectFor:#topOffset) value:y. cg@2022: cg@2022: (builder componentAt:#CommonExtentsPopUpList) cg@2022: label:(resources string:'Common Extents'). ca@1447: ! ! cg@1332: werner@1826: !UILayoutTool::LayoutFrame class methodsFor:'defaults'! werner@1826: werner@1826: defaultFixPartHeight werner@1826: ^ DefaultFixPartHeight ? 30 werner@1826: ! ! werner@1826: cg@1409: !UILayoutTool::LayoutFrame class methodsFor:'help specs'! cg@1409: cg@1409: helpSpec cg@1409: "This resource specification was automatically generated cg@1409: by the UIHelpTool of ST/X." cg@1409: cg@1409: "Do not manually edit this!! If it is corrupted, cg@1409: the UIHelpTool may not be able to read the specification." cg@1409: cg@1409: " cg@1409: UIHelpTool openOnClass:UILayoutTool::LayoutFrame cg@1409: " cg@1409: cg@1409: cg@1409: ca@1858: ^ super helpSpec addPairsFrom:#( cg@1409: cg@2949: #bigBottomFixPartLayout cg@2949: 'Set layout for a big fixed area at the bottom of the widgets container' cg@2949: cg@2949: #bigHorizontalFixPartLayout cg@2949: 'Set layout for a big fixed-height area centered vertically in the widgets container' cg@2949: cg@2949: #bigTopFixPartLayout cg@2949: 'Set layout for a big fixed area at the top of the widgets container' cg@2949: cg@1409: #bottomAbsolute cg@1409: 'Offset of the bottom edge; positive is to the bottom, negative to the top.' cg@1409: cg@1409: #bottomFixPartLayout ca@1858: 'Set layout for a small fixed area at the bottom of the widgets container' cg@1409: cg@1409: #bottomHalfLayout ca@1858: 'Set layout for the bottom half of the widgets container' cg@1409: cg@1409: #bottomLeftQuarterLayout ca@1858: 'Set layout for the bottom-left quarter of the widgets container' cg@1409: cg@1409: #bottomRelative cg@1409: 'Relative corner y of the selected widget.' cg@1409: cg@1409: #bottomRightQuarterLayout ca@1858: 'Set layout for the bottom-right quarter of the widgets container' ca@1858: ca@1858: #fullLayout ca@1858: 'Set layout to fill all of the widgets container' cg@1409: cg@1409: #horizontalFixPartLayout ca@1858: 'Set layout for a small fixed-height area centered vertically in the widgets container' ca@1858: cg@2953: #keepSpaceForOSXResizeHandleH cg@2949: 'Keep space at the right for the window resize handle under MAXOS-X; ignored when running on other systems' cg@1409: cg@2953: #keepSpaceForOSXResizeHandleV cg@2953: 'Keep space at the bottom for the window resize handle under MAXOS-X; ignored when running on other systems' cg@2953: cg@1409: #leftFixPartLayout ca@1858: 'Set layout for a small fixed area at the left of the widgets container' cg@1409: cg@1409: #leftHalfLayout ca@1858: 'Set layout for the left half of the widgets container' cg@1409: cg@1409: #makeBottomAbsolute cg@1409: 'Compute pure-absolute y.' cg@1409: cg@1409: #makeBottomRelative cg@1955: 'Compute pure-fractional y.' cg@1409: cg@1409: #makeBottomRelativeFromBottom cg@2022: 'Compute fraction+offset for y relative to containers bottom.' cg@1409: cg@1409: #makeRightAbsolute cg@1409: 'Compute pure-absolute x.' cg@1409: cg@1409: #makeRightRelative cg@1955: 'Compute pure-fractional x.' cg@1409: cg@1409: #makeRightRelativeFromRight cg@1409: 'Compute fraction+offset for x relative to containers right.' cg@1409: cg@1409: #rightAbsolute cg@1409: 'Offset of the right edge; positive is to the right, negative to the left.' cg@1409: cg@1409: #rightFixPartLayout ca@1858: 'Set layout for a small fixed area at the right of the widgets container' cg@1409: cg@1409: #rightHalfLayout ca@1858: 'Set layout for the right half of the widgets container' cg@1409: cg@1409: #rightRelative cg@1409: 'Relative corner x of the selected widget.' cg@1409: ca@1858: #screenFrameLayout ca@1858: '' ca@1858: cg@2949: #useDynamicPreferredWidth cg@2949: 'Dynamically adapt to any change of the widget''s preferred width' cg@2949: cg@2949: #useDynamicPreferredHeight cg@2949: 'Dynamically adapt to any change of the widget''s preferred height' cg@2949: cg@2949: #usePreferredHeight cg@2949: 'Use the widget''s preferred height as initial size' cg@2949: cg@2949: #usePreferredWidth cg@2949: 'Use the widget''s preferred width as initial size' cg@2949: cg@2949: cg@1409: #topFixPartLayout ca@1858: 'Set layout for a small fixed area at the top of the widgets container' ca@1858: cg@1409: #topHalfLayout ca@1858: 'Set layout for the top half of the widgets container' cg@1409: cg@1409: #topLeftQuarterLayout ca@1858: 'Set layout for the top-left quarter of the widgets container' cg@1409: cg@1409: #topRightQuarterLayout ca@1858: 'Set layout for the top-right quarter of the widgets container' cg@1409: cg@1409: #verticalFixPartLayout ca@1858: 'Set layout for a small fixed-width area centered horizontally in the widgets container' cg@1409: cg@1409: ) cg@1409: ! ! cg@1409: cg@1409: !UILayoutTool::LayoutFrame class methodsFor:'image specs'! cg@1409: cg@1706: setBigBottomFixPartIcon sv@3116: cg@1706: "This resource specification was automatically generated cg@1706: by the ImageEditor of ST/X." cg@1706: "Do not manually edit this!! If it is corrupted, cg@1706: the ImageEditor may not be able to read the specification." cg@1706: " cg@1706: self setBigBottomFixPartIcon inspect cg@1706: ImageEditor openOnClass:self andSelector:#setBigBottomFixPartIcon sv@3116: Icon flushCachedIcons" sv@3116: sv@3116: ^ Icon cg@2269: constantNamed:'UILayoutTool::LayoutFrame class setBigBottomFixPartIcon' sv@3116: ifAbsentPut:[ sv@3116: (Depth4Image new) sv@3116: width:16; sv@3116: height:16; sv@3116: photometric:(#palette); sv@3116: bitsPerSample:(#( 4 )); sv@3116: samplesPerPixel:(1); sv@3116: bits:(ByteArray sv@3116: fromPackedString:' cg@2022: @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@"H"H"H"H"@BDQDQDQDQH@HQDQDQDQD @!!DQDQDQDR@BDQDQDQDQH@HQ sv@3116: DQDQDQD @!!DQDQDQDR@BDQDQDQDQH@H"H"H"H"H @@@@@@@@@@@b'); sv@3116: colorMapFromArray:#[ 0 0 0 255 0 0 255 255 255 ]; sv@3116: mask:((ImageMask new) sv@3116: width:16; sv@3116: height:16; sv@3116: bits:(ByteArray sv@3116: fromPackedString:'??>A XFA XFA _???????????????????????????? cg@1706: "This resource specification was automatically generated cg@1706: by the ImageEditor of ST/X." cg@1706: "Do not manually edit this!! If it is corrupted, cg@1706: the ImageEditor may not be able to read the specification." cg@1706: " cg@1706: self setBigHorizontalFixPartIcon inspect cg@1706: ImageEditor openOnClass:self andSelector:#setBigHorizontalFixPartIcon sv@3116: Icon flushCachedIcons" sv@3116: sv@3116: ^ Icon cg@2269: constantNamed:'UILayoutTool::LayoutFrame class setBigHorizontalFixPartIcon' sv@3116: ifAbsentPut:[ sv@3116: (Depth4Image new) sv@3116: width:16; sv@3116: height:16; sv@3116: photometric:(#palette); sv@3116: bitsPerSample:(#( 4 )); sv@3116: samplesPerPixel:(1); sv@3116: bits:(ByteArray sv@3116: fromPackedString:' cg@2022: @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@BH"H"H"H"H@HQDQDQDQD @!!DQDQDQDR@BDQDQDQDQH@HQDQDQDQD @!!DQDQDQDR@BDQDQDQDQH@H" sv@3116: H"H"H"H @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@b'); sv@3116: colorMapFromArray:#[ 0 0 0 255 0 0 255 255 255 ]; sv@3116: mask:((ImageMask new) sv@3116: width:16; sv@3116: height:16; sv@3116: bits:(ByteArray sv@3116: fromPackedString:'??>A XFA??????????????????????????>A XFA?? cg@1706: "This resource specification was automatically generated cg@1706: by the ImageEditor of ST/X." cg@1706: "Do not manually edit this!! If it is corrupted, cg@1706: the ImageEditor may not be able to read the specification." cg@1706: " cg@1706: self setBigTopFixPartIcon inspect cg@1706: ImageEditor openOnClass:self andSelector:#setBigTopFixPartIcon sv@3116: Icon flushCachedIcons" sv@3116: sv@3116: ^ Icon cg@2269: constantNamed:'UILayoutTool::LayoutFrame class setBigTopFixPartIcon' sv@3116: ifAbsentPut:[ sv@3116: (Depth4Image new) sv@3116: width:16; sv@3116: height:16; sv@3116: photometric:(#palette); sv@3116: bitsPerSample:(#( 4 )); sv@3116: samplesPerPixel:(1); sv@3116: bits:(ByteArray sv@3116: fromPackedString:' cg@2022: @@@@@@@@@@@BH"H"H"H"H@HQDQDQDQD @!!DQDQDQDR@BDQDQDQDQH@HQDQDQDQD @!!DQDQDQDR@BDQDQDQDQH@HQDQDQDQD @"H"H"H"H"@@@@@@@@@@@@@@ sv@3116: @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@b'); sv@3116: colorMapFromArray:#[ 0 0 0 255 0 0 255 255 255 ]; sv@3116: mask:((ImageMask new) sv@3116: width:16; sv@3116: height:16; sv@3116: bits:(ByteArray sv@3116: fromPackedString:'?????????????????????????????8FA XFA XFA?? cg@1409: "This resource specification was automatically generated cg@1409: by the ImageEditor of ST/X." cg@1409: "Do not manually edit this!! If it is corrupted, cg@1409: the ImageEditor may not be able to read the specification." cg@1409: " cg@1409: self setBottomFixPartIcon inspect cg@1409: ImageEditor openOnClass:self andSelector:#setBottomFixPartIcon sv@3116: Icon flushCachedIcons" sv@3116: sv@3116: ^ Icon cg@2269: constantNamed:'UILayoutTool::LayoutFrame class setBottomFixPartIcon' sv@3116: ifAbsentPut:[ sv@3116: (Depth4Image new) sv@3116: width:16; sv@3116: height:16; sv@3116: photometric:(#palette); sv@3116: bitsPerSample:(#( 4 )); sv@3116: samplesPerPixel:(1); sv@3116: bits:(ByteArray sv@3116: fromPackedString:' cg@2269: @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@H" sv@3116: H"@BH"H @!!DQD@DQDR@BDQDP@QDQH@H"H"@BH"H @@@@@@@@@@@b'); sv@3116: colorMapFromArray:#[ 0 0 0 255 0 0 255 255 255 ]; sv@3116: mask:((ImageMask new) sv@3116: width:16; sv@3116: height:16; sv@3116: bits:(ByteArray sv@3116: fromPackedString:'??>@@X@A @F@@X@A @F@@X@A @G??????????????? cg@1409: "This resource specification was automatically generated cg@1409: by the ImageEditor of ST/X." cg@1409: "Do not manually edit this!! If it is corrupted, cg@1409: the ImageEditor may not be able to read the specification." cg@1409: " cg@1409: self setBottomHalfIcon inspect cg@1409: ImageEditor openOnClass:self andSelector:#setBottomHalfIcon sv@3116: Icon flushCachedIcons" sv@3116: sv@3116: ^ Icon constantNamed:'UILayoutTool::LayoutFrame class setBottomHalfIcon' sv@3116: ifAbsentPut:[ sv@3116: (Depth4Image new) sv@3116: width:16; sv@3116: height:16; sv@3116: photometric:(#palette); sv@3116: bitsPerSample:(#( 4 )); sv@3116: samplesPerPixel:(1); sv@3116: bits:(ByteArray sv@3116: fromPackedString:' cg@2269: @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@"H"H"H"H"@BDQDQDQDQH@HQ sv@3116: DQDQDQD @!!DQDQDQDR@BDQDQDQDQH@H"H"H"H"H @@@@@@@@@@@b'); sv@3116: colorMapFromArray:#[ 0 0 0 255 0 0 255 255 255 ]; sv@3116: mask:((ImageMask new) sv@3116: width:16; sv@3116: height:16; sv@3116: bits:(ByteArray sv@3116: fromPackedString:'??>@@X@A @F@@X@A @F@@_???????????????????? cg@1409: "This resource specification was automatically generated cg@1409: by the ImageEditor of ST/X." cg@1409: "Do not manually edit this!! If it is corrupted, cg@1409: the ImageEditor may not be able to read the specification." cg@1409: " cg@1409: self setBottomLeftQuarterIcon inspect cg@1409: ImageEditor openOnClass:self andSelector:#setBottomLeftQuarterIcon sv@3116: Icon flushCachedIcons" sv@3116: sv@3116: ^ Icon cg@2269: constantNamed:'UILayoutTool::LayoutFrame class setBottomLeftQuarterIcon' sv@3116: ifAbsentPut:[ sv@3116: (Depth4Image new) sv@3116: width:16; sv@3116: height:16; sv@3116: photometric:(#palette); sv@3116: bitsPerSample:(#( 4 )); sv@3116: samplesPerPixel:(1); sv@3116: bits:(ByteArray sv@3116: fromPackedString:' cg@2269: @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@H"H"@@@@@@@!!DQH@@@@@@BDQD @@@@@@HQ sv@3116: DR@@@@@@@!!DQH@@@@@@BDQD @@@@@@H"H"@@@@@@@@@@@@@@@@@b'); sv@3116: colorMapFromArray:#[ 0 0 0 255 0 0 255 255 255 ]; sv@3116: mask:((ImageMask new) sv@3116: width:16; sv@3116: height:16; sv@3116: bits:(ByteArray sv@3116: fromPackedString:'??>@@X@A @F@@X@A @G?@_ cg@1409: "This resource specification was automatically generated cg@1409: by the ImageEditor of ST/X." cg@1409: "Do not manually edit this!! If it is corrupted, cg@1409: the ImageEditor may not be able to read the specification." cg@1409: " cg@1409: self setBottomRightQuarterIcon inspect cg@1409: ImageEditor openOnClass:self andSelector:#setBottomRightQuarterIcon sv@3116: Icon flushCachedIcons" sv@3116: sv@3116: ^ Icon cg@2269: constantNamed:'UILayoutTool::LayoutFrame class setBottomRightQuarterIcon' sv@3116: ifAbsentPut:[ sv@3116: (Depth4Image new) sv@3116: width:16; sv@3116: height:16; sv@3116: photometric:(#palette); sv@3116: bitsPerSample:(#( 4 )); sv@3116: samplesPerPixel:(1); sv@3116: bits:(ByteArray sv@3116: fromPackedString:' cg@2269: @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@BH"H"@@@@@@HQDQH@@@ sv@3116: @@@!!DQD @@@@@BDQDR@@@@@@HQDQH@@@@@@"H"H @@@@@@@@@@@b'); sv@3116: colorMapFromArray:#[ 0 0 0 255 0 0 255 255 255 ]; sv@3116: mask:((ImageMask new) sv@3116: width:16; sv@3116: height:16; sv@3116: bits:(ByteArray sv@3116: fromPackedString:'??>@@X@A @F@@X@A @F@@XG? _>A?8G? _>A?8G??? cg@1680: "This resource specification was automatically generated cg@1680: by the ImageEditor of ST/X." cg@1680: "Do not manually edit this!! If it is corrupted, cg@1680: the ImageEditor may not be able to read the specification." cg@1680: " cg@1680: self setFullIcon inspect cg@1680: ImageEditor openOnClass:self andSelector:#setFullIcon sv@3116: Icon flushCachedIcons" sv@3116: sv@3116: ^ Icon constantNamed:'UILayoutTool::LayoutFrame class setFullIcon' sv@3116: ifAbsentPut:[ sv@3116: (Depth4Image new) sv@3116: width:16; sv@3116: height:16; sv@3116: photometric:(#palette); sv@3116: bitsPerSample:(#( 4 )); sv@3116: samplesPerPixel:(1); sv@3116: bits:(ByteArray sv@3116: fromPackedString:' cg@1680: @@@@@@@@@@@BH"H"H"H"H@HQDQDQDQD @!!DQDQDQDR@BDQDQDQDQH@HQDQDQDQD @!!DQDQDQDR@BDQDQDQDQH@HQDQDQDQD @!!DQDQDQDR@BDQDQDQDQH@HQ sv@3116: DQDQDQD @!!DQDQDQDR@BDQDQDQDQH@H"H"H"H"H @@@@@@@@@@@b'); sv@3116: colorMapFromArray:#[ 0 0 0 255 0 0 255 255 255 ]; sv@3116: mask:((ImageMask new) sv@3116: width:16; sv@3116: height:16; sv@3116: bits:(ByteArray sv@3116: fromPackedString:'?????????????????????????????????????????? cg@1409: "This resource specification was automatically generated cg@1409: by the ImageEditor of ST/X." cg@1409: "Do not manually edit this!! If it is corrupted, cg@1409: the ImageEditor may not be able to read the specification." cg@1409: " cg@1409: self setHorizontalFixPartIcon inspect cg@1409: ImageEditor openOnClass:self andSelector:#setHorizontalFixPartIcon sv@3116: Icon flushCachedIcons" sv@3116: sv@3116: ^ Icon cg@2269: constantNamed:'UILayoutTool::LayoutFrame class setHorizontalFixPartIcon' sv@3116: ifAbsentPut:[ sv@3116: (Depth4Image new) sv@3116: width:16; sv@3116: height:16; sv@3116: photometric:(#palette); sv@3116: bitsPerSample:(#( 4 )); sv@3116: samplesPerPixel:(1); sv@3116: bits:(ByteArray sv@3116: fromPackedString:' cg@1409: @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@"H"H@H"H"@BDQDP@QDQH@HQDQ@ADQD @"H"H@H"H"@@@@@@@@@@@@@@ sv@3116: @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@b'); sv@3116: colorMapFromArray:#[ 0 0 0 255 0 0 255 255 255 ]; sv@3116: mask:((ImageMask new) sv@3116: width:16; sv@3116: height:16; sv@3116: bits:(ByteArray sv@3116: fromPackedString:'??>@@X@A @F@@_???????????????8@A @F@@X@A?? cg@1409: "This resource specification was automatically generated cg@1409: by the ImageEditor of ST/X." cg@1409: "Do not manually edit this!! If it is corrupted, cg@1409: the ImageEditor may not be able to read the specification." cg@1409: " cg@1409: self setLeftFixPartIcon inspect cg@1409: ImageEditor openOnClass:self andSelector:#setLeftFixPartIcon sv@3116: Icon flushCachedIcons" sv@3116: sv@3116: ^ Icon constantNamed:'UILayoutTool::LayoutFrame class setLeftFixPartIcon' sv@3116: ifAbsentPut:[ sv@3116: (Depth4Image new) sv@3116: width:16; sv@3116: height:16; sv@3116: photometric:(#palette); sv@3116: bitsPerSample:(#( 4 )); sv@3116: samplesPerPixel:(1); sv@3116: bits:(ByteArray sv@3116: fromPackedString:' cg@1409: @@@@@@@@@@@BH"@@@@@@@@HQH@@@@@@@@!!D @@@@@@@BDR@@@@@@@@HQH@@@@@@@@!!D @@@@@@@@@@@@@@@@@@@@@@@@@@@@@!!D @@@@@@@BDR@@@@@@@@HQ sv@3116: H@@@@@@@@!!D @@@@@@@BDR@@@@@@@@H"H@@@@@@@@@@@@@@@@@@b'); sv@3116: colorMapFromArray:#[ 0 0 0 255 0 0 255 255 255 ]; sv@3116: mask:((ImageMask new) sv@3116: width:16; sv@3116: height:16; sv@3116: bits:(ByteArray sv@3116: fromPackedString:'???<@_0A?@G<@_0A?@G<@_0A?@G<@_0A?@G<@_0A?? cg@1409: "This resource specification was automatically generated cg@1409: by the ImageEditor of ST/X." cg@1409: "Do not manually edit this!! If it is corrupted, cg@1409: the ImageEditor may not be able to read the specification." cg@1409: " cg@1409: self setLeftHalfIcon inspect cg@1409: ImageEditor openOnClass:self andSelector:#setLeftHalfIcon sv@3116: Icon flushCachedIcons" sv@3116: sv@3116: ^ Icon constantNamed:'UILayoutTool::LayoutFrame class setLeftHalfIcon' sv@3116: ifAbsentPut:[ sv@3116: (Depth4Image new) sv@3116: width:16; sv@3116: height:16; sv@3116: photometric:(#palette); sv@3116: bitsPerSample:(#( 4 )); sv@3116: samplesPerPixel:(1); sv@3116: bits:(ByteArray sv@3116: fromPackedString:' cg@2269: @@@@@@@@@@@BH"H @@@@@@HQDR@@@@@@@!!DQH@@@@@@BDQD @@@@@@HQDR@@@@@@@!!DQH@@@@@@BDQD @@@@@@HQDR@@@@@@@!!DQH@@@@@@BDQD @@@@@@HQ sv@3116: DR@@@@@@@!!DQH@@@@@@BDQD @@@@@@H"H"@@@@@@@@@@@@@@@@@b'); sv@3116: colorMapFromArray:#[ 0 0 0 255 0 0 255 255 255 ]; sv@3116: mask:((ImageMask new) sv@3116: width:16; sv@3116: height:16; sv@3116: bits:(ByteArray sv@3116: fromPackedString:'????@_ cg@1409: "This resource specification was automatically generated cg@1409: by the ImageEditor of ST/X." cg@1409: "Do not manually edit this!! If it is corrupted, cg@1409: the ImageEditor may not be able to read the specification." cg@1409: " cg@1409: self setRightFixPartIcon inspect cg@1409: ImageEditor openOnClass:self andSelector:#setRightFixPartIcon sv@3116: Icon flushCachedIcons" sv@3116: sv@3116: ^ Icon cg@2269: constantNamed:'UILayoutTool::LayoutFrame class setRightFixPartIcon' sv@3116: ifAbsentPut:[ sv@3116: (Depth4Image new) sv@3116: width:16; sv@3116: height:16; sv@3116: photometric:(#palette); sv@3116: bitsPerSample:(#( 4 )); sv@3116: samplesPerPixel:(1); sv@3116: bits:(ByteArray sv@3116: fromPackedString:' cg@1409: @@@@@@@@@@@@@@@@@@H"H@@@@@@@@!!D @@@@@@@BDR@@@@@@@@HQH@@@@@@@@!!D @@@@@@@BDR@@@@@@@@@@@@@@@@@@@@@@@@@@@@@BDR@@@@@@@@HQH@@@ sv@3116: @@@@@!!D @@@@@@@BDR@@@@@@@@HQH@@@@@@@@"H @@@@@@@@@@@b'); sv@3116: colorMapFromArray:#[ 0 0 0 255 0 0 255 255 255 ]; sv@3116: mask:((ImageMask new) sv@3116: width:16; sv@3116: height:16; sv@3116: bits:(ByteArray sv@3116: fromPackedString:'??>@O8@? C>@O8@? C>@O8@? C>@O8@? C>@O8@??? cg@1409: "This resource specification was automatically generated cg@1409: by the ImageEditor of ST/X." cg@1409: "Do not manually edit this!! If it is corrupted, cg@1409: the ImageEditor may not be able to read the specification." cg@1409: " cg@1409: self setRightHalfIcon inspect cg@1409: ImageEditor openOnClass:self andSelector:#setRightHalfIcon sv@3116: Icon flushCachedIcons" sv@3116: sv@3116: ^ Icon constantNamed:'UILayoutTool::LayoutFrame class setRightHalfIcon' sv@3116: ifAbsentPut:[ sv@3116: (Depth4Image new) sv@3116: width:16; sv@3116: height:16; sv@3116: photometric:(#palette); sv@3116: bitsPerSample:(#( 4 )); sv@3116: samplesPerPixel:(1); sv@3116: bits:(ByteArray sv@3116: fromPackedString:' cg@2269: @@@@@@@@@@@@@@@@@"H"H@@@@@@BDQD @@@@@@HQDR@@@@@@@!!DQH@@@@@@BDQD @@@@@@HQDR@@@@@@@!!DQH@@@@@@BDQD @@@@@@HQDR@@@@@@@!!DQH@@@ sv@3116: @@@BDQD @@@@@@HQDR@@@@@@@!!DQH@@@@@@BH"H @@@@@@@@@@@b'); sv@3116: colorMapFromArray:#[ 0 0 0 255 0 0 255 255 255 ]; sv@3116: mask:((ImageMask new) sv@3116: width:16; sv@3116: height:16; sv@3116: bits:(ByteArray sv@3116: fromPackedString:'??>@?8C? O>@?8C? O>@?8C? O>@?8C? O>@?8C??? cg@1409: "This resource specification was automatically generated cg@1409: by the ImageEditor of ST/X." cg@1409: "Do not manually edit this!! If it is corrupted, cg@1409: the ImageEditor may not be able to read the specification." cg@1409: " cg@1409: self setToRightQuarterIcon inspect cg@1409: ImageEditor openOnClass:self andSelector:#setToRightQuarterIcon sv@3116: Icon flushCachedIcons" sv@3116: sv@3116: ^ Icon cg@2269: constantNamed:'UILayoutTool::LayoutFrame class setToRightQuarterIcon' sv@3116: ifAbsentPut:[ sv@3116: (Depth4Image new) sv@3116: width:16; sv@3116: height:16; sv@3116: photometric:(#palette); sv@3116: bitsPerSample:(#( 4 )); sv@3116: samplesPerPixel:(1); sv@3116: bits:(ByteArray sv@3116: fromPackedString:' cg@2269: @@@@@@@@@@@@@@@@@"H"H@@@@@@BDQD @@@@@@HQDR@@@@@@@!!DQH@@@@@@BDQD @@@@@@HQDR@@@@@@@"H"H@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ sv@3116: @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@b'); sv@3116: colorMapFromArray:#[ 0 0 0 255 0 0 255 255 255 ]; sv@3116: mask:((ImageMask new) sv@3116: width:16; sv@3116: height:16; sv@3116: bits:(ByteArray sv@3116: fromPackedString:'??>@?8C? O>@?8C? O>@?8C? @F@@X@A @F@@X@A?? cg@1409: "This resource specification was automatically generated cg@1409: by the ImageEditor of ST/X." cg@1409: "Do not manually edit this!! If it is corrupted, cg@1409: the ImageEditor may not be able to read the specification." cg@1409: " cg@1409: self setTopFixPartIcon inspect cg@1409: ImageEditor openOnClass:self andSelector:#setTopFixPartIcon sv@3116: Icon flushCachedIcons" sv@3116: sv@3116: ^ Icon constantNamed:'UILayoutTool::LayoutFrame class setTopFixPartIcon' sv@3116: ifAbsentPut:[ sv@3116: (Depth4Image new) sv@3116: width:16; sv@3116: height:16; sv@3116: photometric:(#palette); sv@3116: bitsPerSample:(#( 4 )); sv@3116: samplesPerPixel:(1); sv@3116: bits:(ByteArray sv@3116: fromPackedString:' cg@2269: @@@@@@@@@@@BH"H @"H"H@HQDQ@ADQD @!!DQD@DQDR@BH"H @"H"H@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ sv@3116: @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@b'); sv@3116: colorMapFromArray:#[ 0 0 0 255 0 0 255 255 255 ]; sv@3116: mask:((ImageMask new) sv@3116: width:16; sv@3116: height:16; sv@3116: bits:(ByteArray sv@3116: fromPackedString:'???????????????? @F@@X@A @F@@X@A @F@@X@A?? cg@1409: "This resource specification was automatically generated cg@1409: by the ImageEditor of ST/X." cg@1409: "Do not manually edit this!! If it is corrupted, cg@1409: the ImageEditor may not be able to read the specification." cg@1409: " cg@1409: self setTopHalfIcon inspect cg@1409: ImageEditor openOnClass:self andSelector:#setTopHalfIcon sv@3116: Icon flushCachedIcons" sv@3116: sv@3116: ^ Icon constantNamed:'UILayoutTool::LayoutFrame class setTopHalfIcon' sv@3116: ifAbsentPut:[ sv@3116: (Depth4Image new) sv@3116: width:16; sv@3116: height:16; sv@3116: photometric:(#palette); sv@3116: bitsPerSample:(#( 4 )); sv@3116: samplesPerPixel:(1); sv@3116: bits:(ByteArray sv@3116: fromPackedString:' cg@2269: @@@@@@@@@@@BH"H"H"H"H@HQDQDQDQD @!!DQDQDQDR@BDQDQDQDQH@HQDQDQDQD @"H"H"H"H"@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ sv@3116: @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@b'); sv@3116: colorMapFromArray:#[ 0 0 0 255 0 0 255 255 255 ]; sv@3116: mask:((ImageMask new) sv@3116: width:16; sv@3116: height:16; sv@3116: bits:(ByteArray sv@3116: fromPackedString:'?????????????????????8@A @F@@X@A @F@@X@A?? cg@1409: "This resource specification was automatically generated cg@1409: by the ImageEditor of ST/X." cg@1409: "Do not manually edit this!! If it is corrupted, cg@1409: the ImageEditor may not be able to read the specification." cg@1409: " cg@1409: self setTopLeftQuarterIcon inspect cg@1409: ImageEditor openOnClass:self andSelector:#setTopLeftQuarterIcon sv@3116: Icon flushCachedIcons" sv@3116: sv@3116: ^ Icon cg@2269: constantNamed:'UILayoutTool::LayoutFrame class setTopLeftQuarterIcon' sv@3116: ifAbsentPut:[ sv@3116: (Depth4Image new) sv@3116: width:16; sv@3116: height:16; sv@3116: photometric:(#palette); sv@3116: bitsPerSample:(#( 4 )); sv@3116: samplesPerPixel:(1); sv@3116: bits:(ByteArray sv@3116: fromPackedString:' cg@2269: @@@@@@@@@@@BH"H"@@@@@@HQDQH@@@@@@!!DQD @@@@@BDQDR@@@@@@HQDQH@@@@@@"H"H @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ sv@3116: @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@b'); sv@3116: colorMapFromArray:#[ 0 0 0 255 0 0 255 255 255 ]; sv@3116: mask:((ImageMask new) sv@3116: width:16; sv@3116: height:16; sv@3116: bits:(ByteArray sv@3116: fromPackedString:'???? _>A?8G? _>A?8G? X@A @F@@X@A @F@@X@A?? cg@1409: "This resource specification was automatically generated cg@1409: by the ImageEditor of ST/X." cg@1409: "Do not manually edit this!! If it is corrupted, cg@1409: the ImageEditor may not be able to read the specification." cg@1409: " cg@1409: self setVerticalFixPartIcon inspect cg@1409: ImageEditor openOnClass:self andSelector:#setVerticalFixPartIcon sv@3116: Icon flushCachedIcons" sv@3116: sv@3116: ^ Icon cg@2269: constantNamed:'UILayoutTool::LayoutFrame class setVerticalFixPartIcon' sv@3116: ifAbsentPut:[ sv@3116: (Depth4Image new) sv@3116: width:16; sv@3116: height:16; sv@3116: photometric:(#palette); sv@3116: bitsPerSample:(#( 4 )); sv@3116: samplesPerPixel:(1); sv@3116: bits:(ByteArray sv@3116: fromPackedString:' cg@1409: @@@@@@@@@@@@@@@"H @@@@@@@BDR@@@@@@@@HQH@@@@@@@@!!D @@@@@@@BDR@@@@@@@@HQH@@@@@@@@@@@@@@@@@@@@@@@@@@@@@HQH@@@@@@@@!!D @@@@@@ sv@3116: @BDR@@@@@@@@HQH@@@@@@@@!!D @@@@@@@BH"@@@@@@@@@@@@@@@b'); sv@3116: colorMapFromArray:#[ 0 0 0 255 0 0 255 255 255 ]; sv@3116: mask:((ImageMask new) sv@3116: width:16; sv@3116: height:16; sv@3116: bits:(ByteArray sv@3116: fromPackedString:'??>G8X_!!!!>FG8X_!!!!>FG8X_!!!!>FG8X_!!!!>FG8X_!!?? cg@1409: cg@1409: ^ cg@3052: #(FullSpec cg@3052: name: windowSpec cg@3052: window: cg@3052: (WindowSpec cg@3052: label: 'UILayoutTool-LayoutFrame' cg@3052: name: 'UILayoutTool-LayoutFrame' cg@3052: min: (Point 10 10) cg@3052: bounds: (Rectangle 0 0 527 393) cg@3052: ) cg@3052: component: cg@3052: (SpecCollection cg@3052: collection: ( cg@3052: (UISubSpecification cg@3052: name: 'layoutOriginSpec' cg@3240: layout: (LayoutFrame 1 0.0 6 0 0 1.0 112 0) cg@3052: majorKey: UILayoutTool cg@3052: minorKey: layoutOriginSpec cg@3052: ) cg@3052: (FramedBoxSpec cg@3052: label: 'Corner' cg@3052: name: 'FramedBox' cg@3052: layout: (LayoutFrame 1 0.0 113 0 0 1.0 266 0) cg@3052: labelPosition: topLeft cg@3052: translateLabel: true cg@3052: component: cg@3052: (SpecCollection cg@3052: collection: ( cg@3052: (LabelSpec cg@3052: label: 'Right:' cg@3052: name: 'labelRight' cg@3052: layout: (AlignmentOrigin 68 0 16 0 1 0) cg@3052: translateLabel: true cg@3052: ) cg@3052: (ActionButtonSpec cg@3052: label: 'imageFractX' cg@3052: name: 'actionRelativeRight' cg@3052: layout: (LayoutFrame 78 0 14 0 100 0 36 0) cg@3052: activeHelpKey: makeRightRelative cg@3052: hasCharacterOrientedLabel: false cg@3240: translateLabel: true cg@3052: tabable: true cg@3052: model: relativeRight cg@3052: ) cg@3052: (InputFieldSpec cg@3052: name: 'fieldRightFraction' cg@3052: layout: (LayoutFrame 103 0 14 0 153 0 36 0) cg@3052: activeHelpKey: rightRelative cg@3052: tabable: true cg@3052: model: rightFraction cg@3052: group: inputGroup cg@3052: type: numberOrNil cg@3052: acceptOnLostFocus: true cg@3052: acceptChannel: acceptChannel cg@3052: modifiedChannel: modifiedChannel cg@3052: acceptOnPointerLeave: true cg@3052: ) cg@3052: (ActionButtonSpec cg@3052: label: 'imageAbsX' cg@3052: name: 'actionAbsoluteRight' cg@3052: layout: (LayoutFrame 178 0 14 0 200 0 36 0) cg@3052: activeHelpKey: makeRightAbsolute cg@3052: hasCharacterOrientedLabel: false cg@3240: translateLabel: true cg@3052: tabable: true cg@3052: model: absoluteRight cg@3052: ) cg@3052: (InputFieldSpec cg@3052: name: 'fieldRightOffset' cg@3052: layout: (LayoutFrame 203 0 14 0 253 0 36 0) cg@3052: activeHelpKey: rightAbsolute cg@3052: tabable: true cg@3052: model: rightOffset cg@3052: group: inputGroup cg@3052: type: numberOrNil cg@3052: acceptOnLostFocus: true cg@3052: acceptChannel: acceptChannel cg@3052: modifiedChannel: modifiedChannel cg@3052: acceptOnPointerLeave: true cg@3052: ) cg@3052: (ActionButtonSpec cg@3052: label: 'imageAbsXFromRight' cg@3052: name: 'actionRightRelativeRight' cg@3052: layout: (LayoutFrame 257 0 14 0 279 0 36 0) cg@3052: activeHelpKey: makeRightRelativeFromRight cg@3052: hasCharacterOrientedLabel: false cg@3240: translateLabel: true cg@3052: tabable: true cg@3052: model: rightRelativeRight cg@3052: ) cg@3052: (LabelSpec cg@3052: label: 'Bottom:' cg@3052: name: 'labelBottom' cg@3052: layout: (AlignmentOrigin 68 0 44 0 1 0) cg@3052: translateLabel: true cg@3052: ) cg@3052: (ActionButtonSpec cg@3052: label: 'imageFractY' cg@3052: name: 'actionRelativeBottom' cg@3052: layout: (LayoutFrame 78 0 42 0 100 0 64 0) cg@3052: activeHelpKey: makeBottomRelative cg@3052: hasCharacterOrientedLabel: false cg@3240: translateLabel: true cg@3052: tabable: true cg@3052: model: relativeBottom cg@1409: ) cg@3052: (InputFieldSpec cg@3052: name: 'fieldBottomFraction' cg@3052: layout: (LayoutFrame 103 0 42 0 153 0 64 0) cg@3052: activeHelpKey: bottomRelative cg@3052: tabable: true cg@3052: model: bottomFraction cg@3052: group: inputGroup cg@3052: type: numberOrNil cg@3052: acceptOnLostFocus: true cg@3052: acceptChannel: acceptChannel cg@3052: modifiedChannel: modifiedChannel cg@3052: acceptOnPointerLeave: true cg@3052: ) cg@3052: (ActionButtonSpec cg@3052: label: 'imageAbsY' cg@3052: name: 'actionAbsoluteBottom' cg@3052: layout: (LayoutFrame 178 0 42 0 200 0 64 0) cg@3052: activeHelpKey: makeBottomAbsolute cg@3052: hasCharacterOrientedLabel: false cg@3240: translateLabel: true cg@3052: tabable: true cg@3052: model: absoluteBottom cg@3052: ) cg@3052: (InputFieldSpec cg@3052: name: 'fieldBottomOffset' cg@3052: layout: (LayoutFrame 203 0 42 0 253 0 64 0) cg@3052: activeHelpKey: bottomAbsolute cg@3052: tabable: true cg@3052: model: bottomOffset cg@3052: group: inputGroup cg@3052: type: numberOrNil cg@3052: acceptOnLostFocus: true cg@3052: acceptChannel: acceptChannel cg@3052: modifiedChannel: modifiedChannel cg@3052: acceptOnPointerLeave: true cg@3052: ) cg@3052: (ActionButtonSpec cg@3052: label: 'imageAbsYFromBottom' cg@3052: name: 'actionBottomRelativeBottom' cg@3052: layout: (LayoutFrame 257 0 42 0 279 0 64 0) cg@3052: activeHelpKey: makeBottomRelativeFromBottom cg@3052: hasCharacterOrientedLabel: false cg@3240: translateLabel: true cg@3052: tabable: true cg@3052: model: bottomRelativeBottom cg@3052: ) cg@3052: (CheckBoxSpec cg@3052: label: 'Preferred' cg@3052: name: 'CheckBox1' cg@3052: layout: (LayoutFrame 287 0 14 0 393 0 36 0) cg@3052: activeHelpKey: usePreferredWidth cg@3052: model: usePreferredWidth cg@3052: translateLabel: true cg@3052: ) cg@3052: (CheckBoxSpec cg@3052: label: 'Dynamic' cg@3052: name: 'CheckBox3' cg@3052: layout: (LayoutFrame 394 0 14 0 481 0 36 0) cg@3052: activeHelpKey: useDynamicPreferredWidth cg@3052: model: useDynamicPreferredWidth cg@3052: translateLabel: true cg@3052: ) cg@3052: (CheckBoxSpec cg@3240: label: 'Preferred' cg@3240: name: 'CheckBox2' cg@3240: layout: (LayoutFrame 287 0 40 0 393 0 62 0) cg@3240: activeHelpKey: usePreferredHeight cg@3240: model: usePreferredHeight cg@3240: translateLabel: true cg@3240: ) cg@3240: (CheckBoxSpec cg@3052: label: 'Dynamic' cg@3052: name: 'CheckBox4' cg@3240: layout: (LayoutFrame 394 0 40 0 481 0 62 0) cg@3052: activeHelpKey: useDynamicPreferredWidth cg@3052: model: useDynamicPreferredHeight cg@3052: translateLabel: true cg@3052: ) cg@3052: (CheckBoxSpec cg@3052: label: 'OSX-ResizeH' cg@3052: name: 'OSXResizeH Checkbox' cg@3052: layout: (LayoutFrame 287 0 70 0 480 0 92 0) cg@3052: activeHelpKey: keepSpaceForOSXResizeHandleH cg@3052: model: keepSpaceForOSXResizeHandleH cg@3052: translateLabel: true cg@3052: ) cg@3052: (CheckBoxSpec cg@3052: label: 'OSX-ResizeV' cg@3052: name: 'OSXResizeV Checkbox' cg@3240: layout: (LayoutFrame 287 0 96 0 480 0 118 0) cg@3052: activeHelpKey: keepSpaceForOSXResizeHandleV cg@3052: model: keepSpaceForOSXResizeHandleV cg@3052: translateLabel: true cg@3052: ) cg@3052: ) cg@3052: cg@3052: ) cg@1409: ) cg@3052: (MenuPanelSpec cg@3052: name: 'commonLayoutToolBar1' cg@3052: layout: (LayoutFrame 6 0.0 267 0 -4 1.0 299 0) cg@3052: level: 0 cg@3052: tabable: true cg@3052: menu: commonFrameLayoutsMenu1 cg@3052: textDefault: true cg@3052: ) cg@3052: (MenuPanelSpec cg@3052: name: 'commonLayoutToolBar2' cg@3052: layout: (LayoutFrame 6 0.0 299 0 -4 1.0 331 0) cg@3052: level: 0 cg@3052: tabable: true cg@3052: menu: commonFrameLayoutsMenu2 cg@3052: textDefault: true cg@3052: ) cg@3052: (MenuPanelSpec cg@3052: name: 'commonLayoutToolBar3' cg@3052: layout: (LayoutFrame 6 0.0 323 0 -4 1.0 355 0) cg@3052: level: 0 cg@3052: tabable: true cg@3052: menu: commonFrameLayoutsMenu3 cg@3052: textDefault: true cg@3052: ) cg@3052: ) cg@3052: cg@3052: ) cg@3052: ) cg@1409: ! ! cg@1409: cg@1409: !UILayoutTool::LayoutFrame class methodsFor:'menu specs'! cg@1409: cg@1680: commonFrameLayoutsMenu1 cg@1409: "This resource specification was automatically generated cg@1409: by the MenuEditor of ST/X." cg@1409: cg@1409: "Do not manually edit this!! If it is corrupted, cg@1409: the MenuEditor may not be able to read the specification." cg@1409: cg@1409: " cg@1680: MenuEditor new openOnClass:UILayoutTool::LayoutFrame andSelector:#commonFrameLayoutsMenu1 cg@1680: (Menu new fromLiteralArrayEncoding:(UILayoutTool::LayoutFrame commonFrameLayoutsMenu1)) startUp cg@1409: " cg@1409: cg@1409: cg@1409: cg@1680: ^ cg@1680: #(#Menu cg@1680: #( cg@1680: #(#MenuItem cg@1680: #activeHelpKey: #fullLayout cg@1680: #label: 'setFullFrame' cg@1680: #itemValue: #setFullFrame cg@1680: #nameKey: #setFullFrame cg@1680: #translateLabel: true cg@1680: #isButton: true cg@1680: #labelImage: #(#ResourceRetriever #'UILayoutTool::LayoutFrame' #setFullIcon) cg@1680: ) cg@1680: #(#MenuItem cg@1680: #label: '' cg@1680: ) cg@1680: #(#MenuItem cg@1680: #activeHelpKey: #topHalfLayout cg@1680: #label: 'setTopHalfFrame' cg@1680: #itemValue: #setTopHalfFrame cg@1680: #nameKey: #setTopHalfFrame cg@1680: #translateLabel: true cg@1680: #isButton: true cg@1680: #labelImage: #(#ResourceRetriever #'UILayoutTool::LayoutFrame' #setTopHalfIcon) cg@1680: ) cg@1680: #(#MenuItem cg@1680: #activeHelpKey: #bottomHalfLayout cg@1680: #label: 'setBottomHalfFrame' cg@1680: #itemValue: #setBottomHalfFrame cg@1680: #nameKey: #setBottomHalfFrame cg@1680: #translateLabel: true cg@1680: #isButton: true cg@1680: #labelImage: #(#ResourceRetriever nil #setBottomHalfIcon) cg@1680: ) cg@1680: #(#MenuItem cg@1680: #activeHelpKey: #leftHalfLayout cg@1680: #label: 'setLeftHalfFrame' cg@1680: #itemValue: #setLeftHalfFrame cg@1680: #nameKey: #setLeftHalfFrame cg@1680: #translateLabel: true cg@1680: #isButton: true cg@1680: #labelImage: #(#ResourceRetriever nil #setLeftHalfIcon) cg@1680: ) cg@1680: #(#MenuItem cg@1680: #activeHelpKey: #rightHalfLayout cg@1680: #label: 'setRightHalfFrame' cg@1680: #itemValue: #setRightHalfFrame cg@1680: #nameKey: #setRightHalfFrame cg@1680: #translateLabel: true cg@1680: #isButton: true cg@1680: #labelImage: #(#ResourceRetriever nil #setRightHalfIcon) cg@1680: ) cg@1680: #(#MenuItem cg@1680: #label: '' cg@1680: ) cg@1680: #(#MenuItem cg@1680: #activeHelpKey: #topLeftQuarterLayout cg@1680: #label: 'setTopLeftQuarterFrame' cg@1680: #itemValue: #setTopLeftQuarterFrame cg@1680: #nameKey: #setTopLeftQuarterFrame cg@1680: #translateLabel: true cg@1680: #isButton: true cg@1680: #labelImage: #(#ResourceRetriever nil #setTopLeftQuarterIcon) cg@1680: ) cg@1680: #(#MenuItem cg@1680: #activeHelpKey: #topRightQuarterLayout cg@1680: #label: 'setTopRightQuarterFrame' cg@1680: #itemValue: #setTopRightQuarterFrame cg@1680: #nameKey: #setTopRightQuarterFrame cg@1680: #translateLabel: true cg@1680: #isButton: true cg@1680: #labelImage: #(#ResourceRetriever nil #setToRightQuarterIcon) cg@1680: ) cg@1680: #(#MenuItem cg@1680: #activeHelpKey: #bottomRightQuarterLayout cg@1680: #label: 'setBottomRightQuarterFrame' cg@1680: #itemValue: #setBottomRightQuarterFrame cg@1680: #nameKey: #setBottomRightQuarterFrame cg@1680: #translateLabel: true cg@1680: #isButton: true cg@1680: #labelImage: #(#ResourceRetriever nil #setBottomRightQuarterIcon) cg@1680: ) cg@1680: #(#MenuItem cg@1680: #activeHelpKey: #bottomLeftQuarterLayout cg@1680: #label: 'setBottomLeftQuarterFrame' cg@1680: #itemValue: #setBottomLeftQuarterFrame cg@1680: #nameKey: #setBottomLeftQuarterFrame cg@1680: #translateLabel: true cg@1680: #isButton: true cg@1680: #labelImage: #(#ResourceRetriever nil #setBottomLeftQuarterIcon) cg@1680: ) cg@1680: ) cg@1680: nil cg@1680: nil cg@1680: ) cg@1680: ! cg@1680: cg@1680: commonFrameLayoutsMenu2 cg@1680: "This resource specification was automatically generated cg@1680: by the MenuEditor of ST/X." cg@1680: cg@1680: "Do not manually edit this!! If it is corrupted, cg@1680: the MenuEditor may not be able to read the specification." cg@1680: cg@1680: " cg@1680: MenuEditor new openOnClass:UILayoutTool::LayoutFrame andSelector:#commonFrameLayoutsMenu2 cg@1680: (Menu new fromLiteralArrayEncoding:(UILayoutTool::LayoutFrame commonFrameLayoutsMenu2)) startUp cg@1680: " cg@1680: cg@1680: cg@1680: cg@1680: ^ cg@1680: #(#Menu cg@1680: #( cg@1680: #(#MenuItem cg@1680: #activeHelpKey: #topFixPartLayout cg@1680: #label: 'setTopFixPartFrame' cg@1680: #itemValue: #setTopFixPartFrame cg@1680: #nameKey: #setTopFixPartFrame cg@1680: #translateLabel: true cg@1680: #isButton: true cg@1680: #labelImage: #(#ResourceRetriever nil #setTopFixPartIcon) cg@1680: ) cg@1680: #(#MenuItem cg@1680: #activeHelpKey: #horizontalFixPartLayout cg@1680: #label: 'setHorizontalFixPartFrame' cg@1680: #itemValue: #setHorizontalFixPartFrame cg@1680: #nameKey: #setHorizontalFixPartFrame cg@1680: #translateLabel: true cg@1680: #isButton: true cg@1680: #labelImage: #(#ResourceRetriever nil #setHorizontalFixPartIcon) cg@1680: ) cg@1680: #(#MenuItem cg@1680: #activeHelpKey: #bottomFixPartLayout cg@1680: #label: 'setBottomFixPartFrame' cg@1680: #itemValue: #setBottomFixPartFrame cg@1680: #nameKey: #setBottomFixPartFrame cg@1680: #translateLabel: true cg@1680: #isButton: true cg@1680: #labelImage: #(#ResourceRetriever nil #setBottomFixPartIcon) cg@1680: ) cg@1680: #(#MenuItem cg@1680: #label: '' cg@1680: ) cg@1680: #(#MenuItem cg@1680: #activeHelpKey: #leftFixPartLayout cg@1680: #label: 'setLeftFixPartFrame' cg@1680: #itemValue: #setLeftFixPartFrame cg@1680: #nameKey: #setLeftFixPartFrame cg@1680: #translateLabel: true cg@1680: #isButton: true cg@1680: #labelImage: #(#ResourceRetriever nil #setLeftFixPartIcon) cg@1680: ) cg@1680: #(#MenuItem cg@1680: #activeHelpKey: #verticalFixPartLayout cg@1680: #label: 'setVerticalFixPartFrame' cg@1680: #itemValue: #setVerticalFixPartFrame cg@1680: #nameKey: #setVerticalFixPartFrame cg@1680: #translateLabel: true cg@1680: #isButton: true cg@1680: #labelImage: #(#ResourceRetriever nil #setVerticalFixPartIcon) cg@1680: ) cg@1680: #(#MenuItem cg@1680: #activeHelpKey: #rightFixPartLayout cg@1680: #label: 'setRightFixPartFrame' cg@1680: #itemValue: #setRightFixPartFrame cg@1680: #nameKey: #setRightFixPartFrame cg@1680: #translateLabel: true cg@1680: #isButton: true cg@1680: #labelImage: #(#ResourceRetriever nil #setRightFixPartIcon) cg@1680: ) cg@1706: #(#MenuItem cg@1706: #label: '' cg@1706: ) cg@1706: #(#MenuItem cg@1709: #activeHelpKey: #bigTopFixPartLayout cg@1706: #label: 'setBigTopFixPartFrame' cg@1706: #itemValue: #setBigTopFixPartFrame cg@1706: #nameKey: #setBigTopFixPartFrame cg@1706: #translateLabel: true cg@1706: #isButton: true cg@1706: #labelImage: #(#ResourceRetriever nil #setBigTopFixPartIcon) cg@1706: ) cg@1706: #(#MenuItem cg@1709: #activeHelpKey: #bigHorizontalFixPartLayout cg@1706: #label: 'setBigHorizontalFixPartFrame' cg@1706: #itemValue: #setBigHorizontalFixPartFrame cg@1706: #nameKey: #setBigHorizontalFixPartFrame cg@1706: #translateLabel: true cg@1706: #isButton: true cg@1706: #labelImage: #(#ResourceRetriever nil #setBigHorizontalFixPartIcon) cg@1706: ) cg@1706: #(#MenuItem cg@1709: #activeHelpKey: #bigBottomFixPartLayout cg@1706: #label: 'setBigBottomFixPartFrame' cg@1706: #itemValue: #setBigBottomFixPartFrame cg@1706: #nameKey: #setBigBottomFixPartFrame cg@1706: #translateLabel: true cg@1706: #isButton: true cg@1706: #labelImage: #(#ResourceRetriever nil #setBigBottomFixPartIcon) cg@1706: ) cg@1680: ) cg@1680: nil cg@1680: nil cg@1409: ) werner@1826: ! werner@1826: werner@1826: commonFrameLayoutsMenu3 werner@1826: "This resource specification was automatically generated werner@1826: by the MenuEditor of ST/X." werner@1826: werner@1826: "Do not manually edit this!! If it is corrupted, werner@1826: the MenuEditor may not be able to read the specification." werner@1826: werner@1826: " ca@1858: MenuEditor new openOnClass:UILayoutTool::LayoutFrame andSelector:#commonFrameLayoutsMenu3 ca@1858: (Menu new fromLiteralArrayEncoding:(UILayoutTool::LayoutFrame commonFrameLayoutsMenu3)) startUp werner@1826: " werner@1826: werner@1826: werner@1826: werner@1826: ^ ca@1858: #(Menu ca@1858: ( ca@1858: (MenuItem ca@1858: activeHelpKey: screenFrameLayout ca@1858: label: 'setScreenFrame' ca@1858: itemValue: setScreenFrame ca@1858: nameKey: setScreenFrame ca@1858: translateLabel: true ca@1858: isButton: true ca@1858: isVisible: false ca@1858: labelImage: (ResourceRetriever #'UILayoutTool::LayoutFrame' setScreenIcon) werner@1826: ) werner@1826: ) werner@1826: nil werner@1826: nil werner@1826: ) cg@1409: ! ! cg@1409: cg@1409: !UILayoutTool::LayoutFrame methodsFor:'accessing'! cg@1409: cg@1409: fetch:aView spec:aSpec cg@1409: |layout| cg@1409: werner@1826: aSpec class == WindowSpec ifTrue:[ werner@1826: (layout := aSpec layout) isNil ifTrue:[ werner@1826: layout := aSpec bounds asLayout. werner@1826: ] werner@1826: ] ifFalse: [ werner@1826: layout := UIPainterView asLayoutFrameFromView:aView. werner@1826: ]. cg@1409: (self aspectFor:#leftOffset) value:(layout leftOffset). cg@1409: (self aspectFor:#leftFraction) value:(layout leftFraction). cg@1409: (self aspectFor:#topOffset) value:(layout topOffset). cg@1409: (self aspectFor:#topFraction) value:(layout topFraction). sv@2478: (self aspectFor:#rightOffset) value:(layout rightOffset value). "take care of blocks" sv@2478: (self aspectFor:#bottomOffset) value:(layout bottomOffset value). "take care of blocks" cg@1409: (self aspectFor:#rightFraction) value:(layout rightFraction). cg@1409: (self aspectFor:#bottomFraction) value:(layout bottomFraction). cg@1409: cg@2379: (self aspectFor:#usePreferredWidth) value:(aSpec usePreferredWidth). cg@2379: (self aspectFor:#usePreferredHeight) value:(aSpec usePreferredHeight). cg@2379: (self aspectFor:#useDynamicPreferredWidth) value:(aSpec useDynamicPreferredWidth). cg@2379: (self aspectFor:#useDynamicPreferredHeight) value:(aSpec useDynamicPreferredHeight). cg@2949: cg@2953: (self aspectFor:#keepSpaceForOSXResizeHandleV) value:(aSpec keepSpaceForOSXResizeHandleV). cg@2953: (self aspectFor:#keepSpaceForOSXResizeHandleH) value:(aSpec keepSpaceForOSXResizeHandleH). cg@1409: ! cg@1409: cg@1409: layout cg@2379: "returns the current layout as layoutFrame cg@1409: " cg@1409: |layout| cg@1409: cg@3239: layout := (Smalltalk at:#LayoutFrame) new. cg@1409: cg@1581: layout cg@3235: leftFraction:(self aspectValueOr0For:#leftFraction) cg@3235: offset:(self aspectValueOr0For:#leftOffset) cg@3235: rightFraction:(self aspectValueOr0For:#rightFraction) cg@3235: offset:(self aspectValueOr0For:#rightOffset) cg@3235: topFraction:(self aspectValueOr0For:#topFraction) cg@3235: offset:(self aspectValueOr0For:#topOffset) cg@3235: bottomFraction:(self aspectValueOr0For:#bottomFraction) cg@3235: offset:(self aspectValueOr0For:#bottomOffset). cg@1409: cg@1409: ^ layout cg@1409: ! ! cg@1409: cg@1409: !UILayoutTool::LayoutFrame methodsFor:'common frames'! cg@1409: cg@1706: setBigBottomFixPartFrame cg@1706: self cg@1706: setFrameLeft:0 offset:0 cg@1706: right:1 offset:0 werner@1826: top:0 offset:(self class defaultFixPartHeight) cg@1706: bottom:1 offset:0 cg@1706: ! cg@1706: cg@1706: setBigHorizontalFixPartFrame cg@1706: self cg@1706: setFrameLeft:0 offset:0 cg@1706: right:1 offset:0 werner@1826: top:0 offset:(self class defaultFixPartHeight) werner@1826: bottom:1 offset:(self class defaultFixPartHeight negated) cg@1706: ! cg@1706: cg@1706: setBigTopFixPartFrame cg@1706: self cg@1706: setFrameLeft:0 offset:0 cg@1706: right:1 offset:0 cg@1706: top:0 offset:0 werner@1826: bottom:1 offset:(self class defaultFixPartHeight negated) cg@1706: ! cg@1706: cg@1409: setBottomFixPartFrame cg@1409: self cg@1409: setFrameLeft:0 offset:0 cg@1409: right:1 offset:0 werner@1826: top:1 offset:(self class defaultFixPartHeight negated) cg@1409: bottom:1 offset:0 cg@1409: ! cg@1409: cg@1409: setBottomHalfFrame cg@1409: self cg@1409: setFrameLeft:0 offset:0 cg@1409: right:1 offset:0 cg@1409: top:0.5 offset:0 cg@1409: bottom:1 offset:0 cg@1409: ! cg@1409: cg@1409: setBottomLeftQuarterFrame cg@1409: self cg@1409: setFrameLeft:0 offset:0 cg@1409: right:0.5 offset:0 cg@1409: top:0.5 offset:0 cg@1409: bottom:1 offset:0 cg@1409: ! cg@1409: cg@1409: setBottomRightQuarterFrame cg@1409: self cg@1409: setFrameLeft:0.5 offset:0 cg@1409: right:1 offset:0 cg@1409: top:0.5 offset:0 cg@1409: bottom:1 offset:0 cg@1409: ! cg@1409: cg@1409: setFrameLeft:lF offset:lO right:rF offset:rO top:tF offset:tO bottom:bF offset:bO cg@1409: (self aspectFor:#leftOffset) value:lO. sv@2478: (self aspectFor:#rightOffset) value:rO value. cg@1409: (self aspectFor:#topOffset) value:tO. sv@2478: (self aspectFor:#bottomOffset) value:bO value. cg@1409: cg@1409: (self aspectFor:#leftFraction) value:lF. cg@1409: (self aspectFor:#rightFraction) value:rF. cg@1409: (self aspectFor:#topFraction) value:tF. cg@1409: (self aspectFor:#bottomFraction) value:bF. cg@1409: ! cg@1409: cg@1680: setFullFrame cg@1680: self cg@1680: setFrameLeft:0 offset:0 cg@1680: right:1 offset:0 cg@1680: top:0 offset:0 cg@1680: bottom:1 offset:0 cg@1680: ! cg@1680: cg@1409: setHorizontalFixPartFrame cg@1409: self cg@1409: setFrameLeft:0 offset:0 cg@1409: right:1 offset:0 werner@1826: top:0.5 offset:(self class defaultFixPartHeight negated // 2) werner@1826: bottom:0.5 offset:(self class defaultFixPartHeight // 2) cg@1409: ! cg@1409: cg@1409: setLeftFixPartFrame cg@1409: self cg@1409: setFrameLeft:0 offset:0 werner@1826: right:0 offset:(self class defaultFixPartHeight) cg@1409: top:0 offset:0 cg@1409: bottom:1 offset:0 cg@1409: ! cg@1409: cg@1409: setLeftHalfFrame cg@1409: self cg@1409: setFrameLeft:0 offset:0 cg@1409: right:0.5 offset:0 cg@1409: top:0 offset:0 cg@1409: bottom:1 offset:0 cg@1409: ! cg@1409: cg@1409: setRightFixPartFrame cg@1409: self werner@1826: setFrameLeft:1 offset:(self class defaultFixPartHeight negated) ca@1447: right:1 offset:0 cg@1409: top:0 offset:0 cg@1409: bottom:1 offset:0 cg@1409: ! cg@1409: cg@1409: setRightHalfFrame cg@1409: self cg@1409: setFrameLeft:0.5 offset:0 cg@1409: right:1 offset:0 cg@1409: top:0 offset:0 cg@1409: bottom:1 offset:0 cg@1409: ! cg@1409: cg@1409: setTopFixPartFrame cg@1409: self cg@1409: setFrameLeft:0 offset:0 cg@1409: right:1 offset:0 cg@1409: top:0 offset:0 werner@1826: bottom:0 offset:(self class defaultFixPartHeight) cg@1409: ! cg@1409: cg@1409: setTopHalfFrame cg@1409: self cg@1409: setFrameLeft:0 offset:0 cg@1409: right:1 offset:0 cg@1409: top:0 offset:0 cg@1409: bottom:0.5 offset:0 cg@1409: ! cg@1409: cg@1409: setTopLeftQuarterFrame cg@1409: self cg@1409: setFrameLeft:0 offset:0 cg@1409: right:0.5 offset:0 cg@1409: top:0 offset:0 cg@1409: bottom:0.5 offset:0 cg@1409: ! cg@1409: cg@1409: setTopRightQuarterFrame cg@1409: self cg@1409: setFrameLeft:0.5 offset:0 cg@1409: right:1 offset:0 cg@1409: top:0 offset:0 cg@1409: bottom:0.5 offset:0 cg@1409: ! cg@1409: cg@1409: setVerticalFixPartFrame cg@1409: self werner@1826: setFrameLeft:0.5 offset:(self class defaultFixPartHeight negated // 2 ) werner@1826: right:0.5 offset:(self class defaultFixPartHeight // 2 ) cg@1409: top:0 offset:0 cg@1409: bottom:1 offset:0 cg@1409: ! ! cg@1409: ca@1447: !UILayoutTool::LayoutOrigin class methodsFor:'interface specs'! cg@1332: cg@1332: windowSpec cg@1332: "This resource specification was automatically generated cg@1332: by the UIPainter of ST/X." cg@1332: cg@1332: "Do not manually edit this!! If it is corrupted, cg@1332: the UIPainter may not be able to read the specification." cg@1332: cg@1332: " ca@1447: UIPainter new openOnClass:UILayoutTool::LayoutOrigin andSelector:#windowSpec ca@1447: UILayoutTool::LayoutOrigin new openInterface:#windowSpec ca@1447: UILayoutTool::LayoutOrigin open cg@1332: " cg@1332: cg@1332: cg@1332: sv@1738: ^ sv@1738: #(FullSpec sv@1738: name: windowSpec sv@1738: window: sv@1738: (WindowSpec sv@1738: label: 'UILayoutTool-LayoutOrigin' sv@1738: name: 'UILayoutTool-LayoutOrigin' sv@1738: min: (Point 10 10) sv@1738: bounds: (Rectangle 14 46 372 192) sv@1738: ) sv@1738: component: sv@1738: (SpecCollection sv@1738: collection: ( sv@1738: (UISubSpecification sv@1738: name: 'layoutOriginSpec' sv@1738: layout: (LayoutFrame 1 0.0 6 0 0 1.0 110 0) sv@1738: majorKey: UILayoutTool sv@1738: minorKey: layoutOriginSpec sv@1738: ) sv@1738: ) sv@1738: sv@1738: ) cg@1332: ) cg@1332: ! ! cg@1332: ca@1447: !UILayoutTool::LayoutOrigin methodsFor:'accessing'! cg@1332: cg@1332: fetch:aView spec:aSpec ca@1447: "fetch layoutOrigin cg@1332: " ca@1447: |layout| ca@1447: ca@1447: layout := UIPainterView asLayoutFrameFromView:aView. ca@1447: ca@1447: (self aspectFor:#leftOffset) value:(layout leftOffset). ca@1447: (self aspectFor:#leftFraction) value:(layout leftFraction). ca@1447: (self aspectFor:#topOffset) value:(layout topOffset). ca@1447: (self aspectFor:#topFraction) value:(layout topFraction). cg@1332: cg@1332: cg@1332: ! cg@1332: cg@1332: layout ca@1447: "returns current layout as layoutOrigin cg@1332: " cg@1332: |layout| cg@1332: cg@3234: layout := (Smalltalk at:#LayoutOrigin) new. cg@1332: cg@1581: layout cg@3235: leftFraction:(self aspectValueOr0For:#leftFraction) cg@3235: offset:(self aspectValueOr0For:#leftOffset) cg@3235: topFraction:(self aspectValueOr0For:#topFraction) cg@3235: offset:(self aspectValueOr0For:#topOffset). cg@1332: cg@1332: ^ layout ca@1304: ! ! ca@1304: cg@1343: !UILayoutTool::Point class methodsFor:'interface specs'! cg@1343: cg@1343: windowSpec cg@1343: "This resource specification was automatically generated cg@1343: by the UIPainter of ST/X." cg@1343: cg@1343: "Do not manually edit this!! If it is corrupted, cg@1343: the UIPainter may not be able to read the specification." cg@1343: cg@1343: " cg@1343: UIPainter new openOnClass:UILayoutTool::Point andSelector:#windowSpec cg@1343: UILayoutTool::Point new openInterface:#windowSpec cg@1343: UILayoutTool::Point open cg@1343: " cg@1343: cg@1343: cg@1343: sv@1738: ^ sv@1738: #(FullSpec sv@1738: name: windowSpec sv@1738: window: sv@1738: (WindowSpec sv@1738: label: 'UILayoutTool-Point' sv@1738: name: 'UILayoutTool-Point' sv@1738: min: (Point 10 10) sv@1738: bounds: (Rectangle 14 46 309 184) sv@1738: ) sv@1738: component: sv@1738: (SpecCollection sv@1738: collection: ( sv@1738: (UISubSpecification sv@1738: name: 'layoutPointSpec' sv@1738: layout: (LayoutFrame 1 0.0 6 0 0 1.0 100 0) sv@1738: majorKey: UILayoutTool sv@1738: minorKey: layoutPointSpec sv@1738: ) sv@1738: ) sv@1738: sv@1738: ) cg@1343: ) cg@1343: ! ! cg@1343: cg@1343: !UILayoutTool::Point methodsFor:'accessing'! cg@1343: cg@1343: fetch:aView spec:aSpec cg@1343: "fetch point cg@1343: " cg@1343: |origin| cg@1343: cg@1343: origin := aView computeOrigin. cg@1343: cg@1343: (self aspectFor:#leftOffset) value:(origin x). cg@1343: (self aspectFor:#topOffset) value:(origin y). cg@1343: cg@1343: cg@1343: ! cg@1343: cg@1343: layout cg@1343: "returns current layout as point cg@1343: " cg@3235: ^ (self aspectValueOr0For:#leftOffset) @ (self aspectValueOr0For:#topOffset) cg@1343: ! ! cg@1343: cg@1409: !UILayoutTool::Rectangle class methodsFor:'interface specs'! cg@1409: cg@1409: windowSpec cg@1409: "This resource specification was automatically generated cg@1409: by the UIPainter of ST/X." cg@1409: cg@1409: "Do not manually edit this!! If it is corrupted, cg@1409: the UIPainter may not be able to read the specification." cg@1409: cg@1409: " cg@1409: UIPainter new openOnClass:UILayoutTool::Rectangle andSelector:#windowSpec cg@1409: UILayoutTool::Rectangle new openInterface:#windowSpec cg@1409: UILayoutTool::Rectangle open cg@1409: " cg@1409: cg@1409: cg@1409: sv@1738: ^ cg@3052: #(FullSpec cg@3052: name: windowSpec cg@3052: window: cg@3052: (WindowSpec cg@3052: label: 'UILayoutTool-Rectangle' cg@3052: name: 'UILayoutTool-Rectangle' cg@3052: min: (Point 10 10) cg@3052: bounds: (Rectangle 0 0 342 199) cg@3052: ) cg@3052: component: cg@3052: (SpecCollection cg@3052: collection: ( cg@3052: (UISubSpecification cg@3052: name: 'subSpecification' cg@3052: layout: (LayoutFrame 1 0.0 6 0 0 1.0 96 0) cg@3052: majorKey: UILayoutTool cg@3052: minorKey: layoutPointSpec cg@3052: ) cg@3052: (FramedBoxSpec cg@3052: label: 'Corner' cg@3052: name: 'FramedBox' cg@3052: layout: (LayoutFrame 1 0.0 99 0 0 1.0 194 0) cg@3052: labelPosition: topLeft cg@3052: translateLabel: true cg@3052: component: cg@3052: (SpecCollection cg@3052: collection: ( cg@3052: (LabelSpec cg@3052: label: 'Right:' cg@3052: name: 'labelCornerY' cg@3240: layout: (AlignmentOrigin 83 0 12 0 1 0) cg@3052: translateLabel: true cg@3052: adjust: left sv@1738: ) cg@3052: (InputFieldSpec cg@3052: name: 'fieldCornerX' cg@3240: layout: (LayoutFrame 85 0 9 0 135 0 31 0) cg@3052: activeHelpKey: cornerX cg@3052: tabable: true cg@3052: model: rightOffset cg@3052: group: inputGroup cg@3052: type: numberOrNil cg@3052: acceptOnLostFocus: true cg@3052: acceptChannel: acceptChannel cg@3052: modifiedChannel: modifiedChannel cg@3052: acceptOnPointerLeave: true cg@3052: ) cg@3052: (LabelSpec cg@3052: label: 'Bottom:' cg@3052: name: 'labelCornerX' cg@3240: layout: (AlignmentOrigin 83 0 37 0 1 0) cg@3052: translateLabel: true cg@3052: adjust: left cg@3052: ) cg@3052: (InputFieldSpec cg@3052: name: 'fieldCornerY' cg@3240: layout: (LayoutFrame 85 0 34 0 135 0 56 0) cg@3052: activeHelpKey: cornerY cg@3052: tabable: true cg@3052: model: bottomOffset cg@3052: group: inputGroup cg@3052: type: numberOrNil cg@3052: acceptOnLostFocus: true cg@3052: acceptChannel: acceptChannel cg@3052: modifiedChannel: modifiedChannel cg@3052: acceptOnPointerLeave: true cg@3052: ) cg@3052: ) cg@3052: cg@3052: ) sv@1738: ) cg@3052: ) cg@3052: cg@3052: ) cg@3052: ) cg@1409: ! ! cg@1409: cg@1409: !UILayoutTool::Rectangle methodsFor:'accessing'! cg@1409: cg@1409: fetch:aView spec:aSpec cg@1409: "fetch rectangle cg@1409: " cg@1409: |origin corner| cg@1409: cg@1409: origin := aView computeOrigin. cg@1409: corner := aView computeCorner. cg@1409: cg@1409: (self aspectFor:#leftOffset) value:(origin x). cg@1409: (self aspectFor:#rightOffset) value:(corner x). cg@1409: (self aspectFor:#topOffset) value:(origin y). cg@1409: (self aspectFor:#bottomOffset) value:(corner y). cg@1409: cg@1409: cg@1409: ! cg@1409: cg@1409: layout cg@2022: "returns current layout as rectangle" cg@2022: cg@3234: ^ (Smalltalk at:#Rectangle) cg@3235: left:(self aspectValueOr0For:#leftOffset) cg@3235: top:(self aspectValueOr0For:#topOffset) cg@3235: right:(self aspectValueOr0For:#rightOffset) cg@3235: bottom:(self aspectValueOr0For:#bottomOffset) cg@1409: ! ! cg@1409: ca@163: !UILayoutTool class methodsFor:'documentation'! ca@163: ca@163: version ca@163: ^ '$Header$' cg@2794: ! cg@2794: cg@2794: version_CVS cg@2794: ^ '$Header$' ca@163: ! ! cg@2949: