--- 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
+ "
+
+ <resource: #menu>
+
+ ^
+
+ #(#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
+ "
+
+ <resource: #menu>
+
+ ^
+
+ #(#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'.
].