diff -r 8768bf518383 -r 2261aa2fa21d UIPainter.st --- a/UIPainter.st Mon Jun 16 18:54:03 1997 +0200 +++ b/UIPainter.st Mon Jun 16 18:56:52 1997 +0200 @@ -99,183 +99,6 @@ !UIPainter class methodsFor:'interface specs'! -XXwindowSpec - "this window spec was automatically generated by the ST/X UIPainter" - - "do not manually edit this - the painter/builder may not be able to - handle the specification if its corrupted." - - " - UIPainter new openOnClass:UIPainter andSelector:#windowSpec - UIPainter new openInterface:#windowSpec - " - "UIPainter open" - - - - ^ - - #(#FullSpec - #'window:' - #(#WindowSpec - #'name:' 'uIPainterView' - #'layout:' #(#LayoutFrame 0 0.0 0 0.0 0 1.0 0 1.0) - #'label:' 'Tree-View' - #'bounds:' #(#Rectangle 0 0 478 429) - ) - #'component:' - #(#SpecCollection - #'collection:' - #( - #(#MenuPanelSpec - #'name:' 'menuPullDown' - #'layout:' #(#LayoutFrame 0 0.0 0 0.0 0 1.0 24 0) - #'tabable:' true - #'menu:' #menuPullDown - ) - #(#MenuPanelSpec - #'name:' 'menuAlignment' - #'layout:' #(#LayoutFrame 0 0.0 29 0 233 0 54 0) - #'tabable:' true - #'menu:' #menuAlignment - #'showSeparatingLines:' true - ) - #(#PanelViewSpec - #'name:' 'panelViewButtons' - #'layout:' #(#LayoutFrame -125 1.0 25 0.0 0 1.0 57 0.0) - #'component:' - #(#SpecCollection - #'collection:' - #( - #(#ActionButtonSpec - #'name:' 'moveLeft' - #'label:' '' - #'translateLabel:' true - #'labelChannel:' #'LABELb_moveLeft.xbm' - #'tabable:' true - #'defaultable:' true - #'model:' #moveSelectionLeft - #'isTriggerOnDown:' true - #'enableChannel:' #enableChannel - #'autoRepeat:' false - #'extent:' #(#Point 26 24) - ) - #(#ActionButtonSpec - #'name:' 'moveRight' - #'label:' '' - #'translateLabel:' true - #'labelChannel:' #'LABELb_moveRight.xbm' - #'tabable:' true - #'defaultable:' true - #'model:' #moveSelectionRight - #'isTriggerOnDown:' true - #'enableChannel:' #enableChannel - #'autoRepeat:' false - #'extent:' #(#Point 26 24) - ) - #(#ActionButtonSpec - #'name:' 'moveUp' - #'label:' '' - #'translateLabel:' true - #'labelChannel:' #'LABELb_moveUp.xbm' - #'tabable:' true - #'defaultable:' true - #'model:' #moveSelectionUp - #'isTriggerOnDown:' true - #'enableChannel:' #enableChannel - #'autoRepeat:' false - #'extent:' #(#Point 26 24) - ) - #(#ActionButtonSpec - #'name:' 'moveDown' - #'label:' '' - #'translateLabel:' true - #'labelChannel:' #'LABELb_moveDown.xbm' - #'tabable:' true - #'defaultable:' true - #'model:' #moveSelectionDown - #'isTriggerOnDown:' true - #'enableChannel:' #enableChannel - #'autoRepeat:' false - #'extent:' #(#Point 26 24) - ) - ) - ) - #'level:' 1 - #'horizontalLayout:' #fitSpace - #'verticalLayout:' #fitSpace - #'horizontalSpace:' 4 - #'verticalSpace:' 4 - ) - #(#SequenceViewSpec - #'name:' 'objectTree' - #'layout:' #(#LayoutFrame 0 0.0 59 0.0 0 0.35 0 1.0) - #'enableChannel:' #enableChannel - #'tabable:' true - #'menu:' #objectListMenu - #'model:' #objectList - #'hasHorizontalScrollBar:' true - #'hasVerticalScrollBar:' true - #'miniScrollerHorizontal:' true - #'isMultiSelect:' true - #'doubleClickSelector:' #doubleClick - #'useIndex:' true - ) - #(#NoteBookViewSpec - #'name:' 'noteBook' - #'layout:' #(#LayoutFrame 0 0.35 59 0.0 0 1.0 -30 1.0) - #'enableChannel:' #enableChannel - #'tabable:' true - #'menu:' #tabList - #'style:' - #(#FontDescription - #helvetica #medium - #roman #'10' - ) - #'model:' #tabModel - #'tabWidget:' #Window - #'canvas:' #noteBookView - ) - #(#HorizontalPanelViewSpec - #'name:' 'modifyPanel' - #'layout:' #(#LayoutFrame 0 0.35 -30 1.0 0 1.0 0 1.0) - #'component:' - #(#SpecCollection - #'collection:' - #( - #(#ActionButtonSpec - #'name:' 'cancelButton' - #'label:' 'cancel' - #'tabable:' true - #'model:' #cancel - #'isTriggerOnDown:' false - #'enableChannel:' #modifiedChannel - #'autoRepeat:' false - #'extent:' #(#Point 151 24) - ) - #(#ActionButtonSpec - #'name:' 'acceptButton' - #'label:' 'ok' - #'tabable:' true - #'model:' #accept - #'isTriggerOnDown:' false - #'enableChannel:' #modifiedChannel - #'autoRepeat:' false - #'extent:' #(#Point 151 24) - ) - ) - ) - #'level:' 0 - #'horizontalLayout:' #fitSpace - #'verticalLayout:' #fitSpace - #'horizontalSpace:' 3 - #'verticalSpace:' 3 - ) - ) - ) - ) -! - menuAlignment ^ #(#Menu #( #(#MenuItem @@ -421,6 +244,10 @@ #'value:' #doInstallSpec ) #(#MenuItem + #'label:' 'install help spec' + #'value:' #doInstallHelp + ) + #(#MenuItem #'label:' 'install aspects' #'value:' #doInstallAspects ) @@ -437,7 +264,7 @@ #'value:' #doStartApplication ) ) - #( 1 2 1) + #( 1 3 1) nil ) ) @@ -773,8 +600,22 @@ activeHelpTool "automatically generated by UIPainter ..." + |cls| + activeHelpTool isNil ifTrue:[ - activeHelpTool := UIHelpTool new + activeHelpTool := UIHelpTool new. + + specClass notNil ifTrue:[ + specClass isBehavior ifFalse:[ + cls := Smalltalk at:specClass asSymbol + ] ifTrue:[ + cls := specClass + ]. + + (cls respondsTo:#helpSpec) ifTrue:[ + activeHelpTool dictionary:(cls helpSpec). + ] + ]. ]. ^ activeHelpTool ! @@ -789,8 +630,9 @@ |l| (l := self builder componentAt:#helpInfo) notNil ifTrue:[ + aHelpText replaceAll:(Character cr) by:(Character space). l label:aHelpText. - ^ true. + ^ true. ]. ^ false @@ -853,6 +695,8 @@ layoutTool := UIPropertyView for:#Dimension in:noteBook. specView := UIPropertyView for:#Specification in:noteBook. channel := self modifiedChannel. + layoutTool masterApplication:self. + specView masterApplication:self. layoutTool modifiedHolder:channel. specView modifiedHolder:channel. builder aspectAt:#noteBookView put:noteBook. @@ -1356,6 +1200,49 @@ ! +doInstallHelp + |dict cls src| + + specClass isNil ifTrue:[ + ^ self information:'no class defined' + ]. + specClass isBehavior ifFalse:[ + cls := Smalltalk at:specClass asSymbol + ] ifTrue:[ + cls := specClass + ]. + + cls isNil ifTrue:[ + ^ self information:'no class yet'. + ]. + + activeHelpTool isNil ifTrue:[ + ^ self information:'no help text defined' + ]. + dict := activeHelpTool dictionary. + + src := '' writeStream. + src nextPutAll:'helpSpec + "return a dictionary filled with helpKey -> helptext associations. + These are used by the activeHelp tool." + + |dict| + + dict := super helpSpec. +'. + + dict keysAndValuesDo:[:key :txt | + |t| + + t := txt asString. + (t endsWith:Character cr) ifTrue:[t := t copyWithoutLast:1]. + src nextPutLine:' dict at:' , key storeString , ' put:' , t storeString , '.'. + ]. + src nextPutLine:' ^ dict'. + src := src contents. + Compiler compile:src forClass:cls class inCategory:'help specs' +! + doInstallSpec |code|