diff -r 2bfcf491429e -r 354ba46948b4 UIPainter.st --- a/UIPainter.st Thu Jul 17 11:52:41 1997 +0200 +++ b/UIPainter.st Thu Jul 17 12:02:57 1997 +0200 @@ -236,212 +236,297 @@ !UIPainter class methodsFor:'interface specs'! menuAlignment - ^ #(#Menu #( - #(#MenuItem - #'label:' 'align left' - #'value:' #alignSelectionLeft - #'labelImage:' #( ResourceRetriever nil iconAlignL ) - #'activeHelpKey:' #alignSelectionLeft - ) - #(#MenuItem - #'label:' 'align right' - #'value:' #alignSelectionRight - #'labelImage:' #( ResourceRetriever nil iconAlignR ) - #'activeHelpKey:' #alignSelectionRight - ) - #(#MenuItem - #'label:' 'align left & right' - #'value:' #alignSelectionLeftAndRight - #'labelImage:' #( ResourceRetriever nil iconAlignLR ) - #'activeHelpKey:' #alignSelectionLeftAndRight - ) - #(#MenuItem - #'label:' 'align top' - #'value:' #alignSelectionTop - #'labelImage:' #( ResourceRetriever nil iconAlignT ) - #'activeHelpKey:' #alignSelectionTop - ) - #(#MenuItem - #'label:' 'align bottom' - #'value:' #alignSelectionBottom - #'labelImage:' #( ResourceRetriever nil iconAlignB ) - #'activeHelpKey:' #alignSelectionBottom - ) - #(#MenuItem - #'label:' 'align top & bottom' - #'value:' #alignSelectionTopAndBottom - #'labelImage:' #( ResourceRetriever nil iconAlignTB ) - #'activeHelpKey:' #alignSelectionTopAndBottom - ) - #(#MenuItem - #'label:' 'align centered horizontal' - #'value:' #alignSelectionCenterHor - #'labelImage:' #( ResourceRetriever nil iconAlignCenterH ) - #'activeHelpKey:' #alignSelectionCenterHor - ) - #(#MenuItem - #'label:' 'align centered vertical' - #'value:' #alignSelectionCenterVer - #'labelImage:' #( ResourceRetriever nil iconAlignCenterV ) - #'activeHelpKey:' #alignSelectionCenterVer - ) + "this window spec was automatically generated by the ST/X MenuEditor" + + "do not manually edit this - the builder may not be able to + handle the specification if its corrupted." + + " + MenuEditor new openOnClass:UIPainter andSelector:#menuAlignment + (Menu new fromLiteralArrayEncoding:(UIPainter menuAlignment)) startUp + " + + + + ^ + + #(#Menu + + #( + #(#MenuItem + #'label:' 'align left' + #'value:' #alignSelectionLeft + #'enabled:' #enableChannel + #'activeHelpKey:' #alignSelectionLeft + #'labelImage:' + #(#ResourceRetriever + nil #iconAlignL + ) + ) + #(#MenuItem + #'label:' 'align right' + #'value:' #alignSelectionRight + #'enabled:' #enableChannel + #'activeHelpKey:' #alignSelectionRight + #'labelImage:' + #(#ResourceRetriever + nil #iconAlignR + ) + ) + #(#MenuItem + #'label:' 'align left & right' + #'value:' #alignSelectionLeftAndRight + #'enabled:' #enableChannel + #'activeHelpKey:' #alignSelectionLeftAndRight + #'labelImage:' + #(#ResourceRetriever + nil #iconAlignLR ) - #( 3 3 ) - nil - ) - + ) + #(#MenuItem + #'label:' 'align top' + #'value:' #alignSelectionTop + #'enabled:' #enableChannel + #'activeHelpKey:' #alignSelectionTop + #'labelImage:' + #(#ResourceRetriever + nil #iconAlignT + ) + ) + #(#MenuItem + #'label:' 'align bottom' + #'value:' #alignSelectionBottom + #'enabled:' #enableChannel + #'activeHelpKey:' #alignSelectionBottom + #'labelImage:' + #(#ResourceRetriever + nil #iconAlignB + ) + ) + #(#MenuItem + #'label:' 'align top & bottom' + #'value:' #alignSelectionTopAndBottom + #'enabled:' #enableChannel + #'activeHelpKey:' #alignSelectionTopAndBottom + #'labelImage:' + #(#ResourceRetriever + nil #iconAlignTB + ) + ) + #(#MenuItem + #'label:' 'align centered horizontal' + #'value:' #alignSelectionCenterHor + #'enabled:' #enableChannel + #'activeHelpKey:' #alignSelectionCenterHor + #'labelImage:' + #(#ResourceRetriever + nil #iconAlignCenterH + ) + ) + #(#MenuItem + #'label:' 'align centered vertical' + #'value:' #alignSelectionCenterVer + #'enabled:' #enableChannel + #'activeHelpKey:' #alignSelectionCenterVer + #'labelImage:' + #(#ResourceRetriever + nil #iconAlignCenterV + ) + ) + ) + #( 3 3 ) + nil + ) ! menuPullDown - ^ #(#Menu #( - #(#MenuItem + "this window spec was automatically generated by the ST/X MenuEditor" + + "do not manually edit this - the builder may not be able to + handle the specification if its corrupted." + + " + MenuEditor new openOnClass:UIPainter andSelector:#menuPullDown + (Menu new fromLiteralArrayEncoding:(UIPainter menuPullDown)) startUp + " + + + + ^ + + #(#Menu + + #( + #(#MenuItem #'label:' 'file' #'value:' #file - #'submenu:' - #(#Menu #( - #(#MenuItem - #'label:' 'new' - #'value:' #doNew - ) - #(#MenuItem - #'label:' 'from class ...' - #'value:' #doFromClass - ) - #(#MenuItem - #'label:' 'pick a view ' - #'value:' #doPickAView - ) - #(#MenuItem - #'label:' 'raise' - #'value:' #doRaise - ) - #(#MenuItem - #'label:' '=' - ) - #(#MenuItem - #'label:' 'quit' - #'value:' #closeRequest - ) - ) - #( 3 ) - nil - ) - ) - #(#MenuItem + #'enabled:' #enableChannel + #'submenu:' + #(#Menu + + #( + #(#MenuItem + #'label:' 'new' + #'value:' #doNew + ) + #(#MenuItem + #'label:' 'from class ...' + #'value:' #doFromClass + ) + #(#MenuItem + #'label:' 'pick a view ' + #'value:' #doPickAView + ) + #(#MenuItem + #'label:' '-' + ) + #(#MenuItem + #'label:' 'raise' + #'value:' #doRaise + ) + #(#MenuItem + #'label:' '=' + ) + #(#MenuItem + #'label:' 'quit' + #'value:' #closeRequest + ) + ) nil + nil + ) + ) + #(#MenuItem #'label:' 'misc' #'value:' #misc - #'submenu:' - #(#Menu #( - #(#MenuItem - #'label:' 'grid' - #'value:' #grid - #'submenu:' - #(#Menu #( - #(#MenuItem - #'label:' 'show' - #'indication:' #gridShown: - ) - #(#MenuItem - #'label:' 'align' - #'indication:' #gridAlign: - ) - ) - nil - nil - ) - ) - #(#MenuItem - #'label:' 'undo' - #'value:' #undo - #'submenu:' - #(#Menu #( - #(#MenuItem - #'label:' 'last' - #'value:' #undoLast - ) - #(#MenuItem - #'label:' 'menu' - #'value:' #openUndoMenu - ) - #(#MenuItem - #'label:' 'delete' - #'value:' #removeUndoHistory - ) - ) - #(2) - nil - ) - ) + #'enabled:' #enableChannel + #'submenu:' + #(#Menu + + #( + #(#MenuItem + #'label:' 'grid' + #'value:' #grid + #'submenu:' + #(#Menu + + #( + #(#MenuItem + #'label:' 'show' + #'indication:' #'gridShown:' + ) + #(#MenuItem + #'label:' 'align' + #'indication:' #'gridAlign:' ) - nil - nil - ) - ) - #(#MenuItem + ) nil + nil + ) + ) + #(#MenuItem + #'label:' 'undo' + #'value:' #undo + #'submenu:' + #(#Menu + + #( + #(#MenuItem + #'label:' 'last' + #'value:' #undoLast + ) + #(#MenuItem + #'label:' 'menu' + #'value:' #openUndoMenu + ) + #(#MenuItem + #'label:' '-' + ) + #(#MenuItem + #'label:' 'delete' + #'value:' #removeUndoHistory + ) + ) nil + nil + ) + ) + ) nil + nil + ) + ) + #(#MenuItem #'label:' 'code' #'value:' #code - #'submenu:' - #(#Menu #( - #(#MenuItem - #'label:' 'class && method ...' - #'value:' #defineClassAndSelector - ) - #(#MenuItem - #'label:' '=' - ) - #(#MenuItem - #'label:' 'install window spec.' - #'value:' #doInstallSpec - ) - #(#MenuItem - #'label:' 'install help spec.' - #'value:' #doInstallHelp - ) - #(#MenuItem - #'label:' 'install aspects' - #'value:' #doInstallAspects - ) - #(#MenuItem - #'label:' '=' - ) - #(#MenuItem - #'label:' 'show window spec.' - #'value:' #doWindowSpec - ) - #(#MenuItem - #'label:' '=' - ) - #(#MenuItem - #'label:' 'browse application' - #'value:' #doBrowseAppClass - ) - #(#MenuItem - #'label:' 'start application' - #'value:' #doStartApplication - ) - ) - #( 4 ) - nil - ) - ) - #(#MenuItem + #'enabled:' #enableChannel + #'submenu:' + #(#Menu + + #( + #(#MenuItem + #'label:' 'class && method ...' + #'value:' #defineClassAndSelector + ) + #(#MenuItem + #'label:' '=' + ) + #(#MenuItem + #'label:' 'install window spec.' + #'value:' #doInstallSpec + #'enabled:' #hasSpecClassAndSelector + ) + #(#MenuItem + #'label:' 'install help spec.' + #'value:' #doInstallHelp + #'enabled:' #hasSpecClass + ) + #(#MenuItem + #'label:' '-' + ) + #(#MenuItem + #'label:' 'install aspects' + #'value:' #doInstallAspects + #'enabled:' #hasSpecClass + ) + #(#MenuItem + #'label:' '=' + ) + #(#MenuItem + #'label:' 'show window spec.' + #'value:' #doWindowSpec + ) + #(#MenuItem + #'label:' '=' + ) + #(#MenuItem + #'label:' 'browse application' + #'value:' #doBrowseAppClass + #'enabled:' #hasSpecClass + ) + #(#MenuItem + #'label:' 'start application' + #'value:' #doStartApplication + #'enabled:' #hasSpecClass + ) + ) nil + nil + ) + ) + #(#MenuItem #'label:' 'test' #'nameKey:' #test #'value:' #test - #'submenu:' - #(#Menu #( - #(#MenuItem - #'label:' 'test mode' - #'indication:' #testMode: - ) - ) - nil - nil - ) - ) - ) - nil - nil + #'submenu:' + #(#Menu + + #( + #(#MenuItem + #'label:' 'test mode' + #'indication:' #'testMode:' + ) + ) nil + nil + ) + ) + ) nil + nil ) ! @@ -804,6 +889,32 @@ doubleClick objectList selectGroup +! + +openEditMenu + |cls aspect editor| + + specClass isNil ifTrue:[ + ^ self information:'no class yet'. + ]. + (cls := specClass) isBehavior ifFalse:[ + cls := Smalltalk at:specClass asSymbol. + cls isNil ifTrue:[ + ^ self information:'no class yet' + ] + ]. + + cls notNil ifTrue:[ + (aspect := specTool specification menu) notNil ifTrue:[ + aspect := aspect asSymbol + ]. + editor := MenuEditor new. + editor masterApplication:self. + editor activeHelpTool:(self activeHelpTool). + editor openModalOnClass:cls andSelector:aspect + ] + + ! ! !UIPainter methodsFor:'active help'! @@ -814,6 +925,7 @@ activeHelpTool isNil ifTrue:[ activeHelpTool := UIHelpTool new. activeHelpTool helpSpecFrom:specClass. + activeHelpTool masterApplication:self. ]. ^ activeHelpTool ! @@ -856,34 +968,6 @@ ! -menuAlignment - |menu channel| - - channel := self enableChannel. - - menu := Menu new. - menu fromLiteralArrayEncoding:(self class menuAlignment). - menu receiver:self. - menu menuItems do:[:anItem| anItem enabled:channel]. - ^ menu -! - -menuPullDown - |menu channel| - - channel := self enableChannel. - - menu := Menu new. - menu fromLiteralArrayEncoding:(self class menuPullDown). - menu receiver:self. - - menu menuItems do:[:anItem| - anItem nameKey ~~ #test ifTrue:[anItem enabled:channel] - ifFalse:[anItem value:channel]. - ]. - ^ menu -! - modifiedChannel |holder| @@ -1124,12 +1208,32 @@ !UIPainter methodsFor:'queries'! +hasSpecClass + + specClass notNil ifTrue:[ + ^ (specClass isBehavior or:[(Smalltalk at:specClass asSymbol) notNil]) + ]. + ^ false +! + +hasSpecClassAndSelector + + specSelector size > 1 ifTrue:[ + ^ self hasSpecClass + ]. + ^ false +! + isHelpToolSelected ^ tabSelection = 'Help' ! isLayoutToolSelected ^ tabSelection = layoutTool class label +! + +isPainterEnabled + ^ self painter enabled ! ! !UIPainter methodsFor:'selection'! @@ -1510,7 +1614,7 @@ doInstallAspects |code| - (specClass isNil or:[specSelector isNil]) ifTrue:[ + self hasSpecClassAndSelector ifFalse:[ self defineClassAndSelector ]. @@ -1540,7 +1644,7 @@ doInstallSpec |code painter| - (specClass isNil or:[specSelector isNil]) ifTrue:[ + self hasSpecClassAndSelector ifFalse:[ self defineClassAndSelector ]. @@ -1620,7 +1724,7 @@ doStartApplication |cls| - (specClass isNil or:[specSelector isNil]) ifTrue:[ + (specClass isNil or:[specSelector size < 2]) ifTrue:[ ^ self information:'no class or selector defined'. ].