UIPainter.st
changeset 217 354ba46948b4
parent 206 1c3fb15ffd62
child 222 dd2688307d90
equal deleted inserted replaced
216:2bfcf491429e 217:354ba46948b4
   234 ! !
   234 ! !
   235 
   235 
   236 !UIPainter class methodsFor:'interface specs'!
   236 !UIPainter class methodsFor:'interface specs'!
   237 
   237 
   238 menuAlignment
   238 menuAlignment
   239     ^ #(#Menu #(
   239     "this window spec was automatically generated by the ST/X MenuEditor"
   240                 #(#MenuItem
   240 
   241                         #'label:' 'align left'
   241     "do not manually edit this - the builder may not be able to
   242                         #'value:' #alignSelectionLeft
   242      handle the specification if its corrupted."
   243                         #'labelImage:' #( ResourceRetriever nil iconAlignL )
   243 
   244                         #'activeHelpKey:' #alignSelectionLeft
   244     "
   245                  )
   245      MenuEditor new openOnClass:UIPainter andSelector:#menuAlignment
   246                 #(#MenuItem
   246      (Menu new fromLiteralArrayEncoding:(UIPainter menuAlignment)) startUp
   247                         #'label:' 'align right'
   247     "
   248                         #'value:' #alignSelectionRight
   248 
   249                         #'labelImage:' #( ResourceRetriever nil iconAlignR )
   249     <resource: #menu>
   250                         #'activeHelpKey:' #alignSelectionRight
   250 
   251                  )
   251     ^
   252                 #(#MenuItem
   252      
   253                         #'label:' 'align left & right'
   253        #(#Menu
   254                         #'value:' #alignSelectionLeftAndRight
   254           
   255                         #'labelImage:' #( ResourceRetriever nil iconAlignLR )
   255            #(
   256                         #'activeHelpKey:' #alignSelectionLeftAndRight
   256              #(#MenuItem
   257                  )
   257                 #'label:' 'align left'
   258                 #(#MenuItem
   258                 #'value:' #alignSelectionLeft
   259                         #'label:' 'align top'
   259                 #'enabled:' #enableChannel
   260                         #'value:' #alignSelectionTop
   260                 #'activeHelpKey:' #alignSelectionLeft
   261                         #'labelImage:' #( ResourceRetriever nil iconAlignT )
   261                 #'labelImage:' 
   262                         #'activeHelpKey:' #alignSelectionTop
   262                  #(#ResourceRetriever
   263                  )
   263                     nil #iconAlignL
   264                 #(#MenuItem
   264                 )
   265                         #'label:' 'align bottom'
   265             )
   266                         #'value:' #alignSelectionBottom
   266              #(#MenuItem
   267                         #'labelImage:' #( ResourceRetriever nil iconAlignB )
   267                 #'label:' 'align right'
   268                         #'activeHelpKey:' #alignSelectionBottom
   268                 #'value:' #alignSelectionRight
   269                  )
   269                 #'enabled:' #enableChannel
   270                 #(#MenuItem
   270                 #'activeHelpKey:' #alignSelectionRight
   271                         #'label:' 'align top & bottom'
   271                 #'labelImage:' 
   272                         #'value:' #alignSelectionTopAndBottom
   272                  #(#ResourceRetriever
   273                         #'labelImage:' #( ResourceRetriever nil iconAlignTB )
   273                     nil #iconAlignR
   274                         #'activeHelpKey:' #alignSelectionTopAndBottom
   274                 )
   275                  )
   275             )
   276                 #(#MenuItem
   276              #(#MenuItem
   277                         #'label:' 'align centered horizontal'
   277                 #'label:' 'align left & right'
   278                         #'value:' #alignSelectionCenterHor
   278                 #'value:' #alignSelectionLeftAndRight
   279                         #'labelImage:' #( ResourceRetriever nil iconAlignCenterH )
   279                 #'enabled:' #enableChannel
   280                         #'activeHelpKey:' #alignSelectionCenterHor
   280                 #'activeHelpKey:' #alignSelectionLeftAndRight
   281                  )
   281                 #'labelImage:' 
   282                 #(#MenuItem
   282                  #(#ResourceRetriever
   283                         #'label:' 'align centered vertical'
   283                     nil #iconAlignLR
   284                         #'value:' #alignSelectionCenterVer
   284                 )
   285                         #'labelImage:' #( ResourceRetriever nil iconAlignCenterV )
   285             )
   286                         #'activeHelpKey:' #alignSelectionCenterVer
   286              #(#MenuItem
   287                  )
   287                 #'label:' 'align top'
   288                 )
   288                 #'value:' #alignSelectionTop
   289                #( 3 3 )
   289                 #'enabled:' #enableChannel
   290                nil
   290                 #'activeHelpKey:' #alignSelectionTop
   291         )
   291                 #'labelImage:' 
   292 
   292                  #(#ResourceRetriever
       
   293                     nil #iconAlignT
       
   294                 )
       
   295             )
       
   296              #(#MenuItem
       
   297                 #'label:' 'align bottom'
       
   298                 #'value:' #alignSelectionBottom
       
   299                 #'enabled:' #enableChannel
       
   300                 #'activeHelpKey:' #alignSelectionBottom
       
   301                 #'labelImage:' 
       
   302                  #(#ResourceRetriever
       
   303                     nil #iconAlignB
       
   304                 )
       
   305             )
       
   306              #(#MenuItem
       
   307                 #'label:' 'align top & bottom'
       
   308                 #'value:' #alignSelectionTopAndBottom
       
   309                 #'enabled:' #enableChannel
       
   310                 #'activeHelpKey:' #alignSelectionTopAndBottom
       
   311                 #'labelImage:' 
       
   312                  #(#ResourceRetriever
       
   313                     nil #iconAlignTB
       
   314                 )
       
   315             )
       
   316              #(#MenuItem
       
   317                 #'label:' 'align centered horizontal'
       
   318                 #'value:' #alignSelectionCenterHor
       
   319                 #'enabled:' #enableChannel
       
   320                 #'activeHelpKey:' #alignSelectionCenterHor
       
   321                 #'labelImage:' 
       
   322                  #(#ResourceRetriever
       
   323                     nil #iconAlignCenterH
       
   324                 )
       
   325             )
       
   326              #(#MenuItem
       
   327                 #'label:' 'align centered vertical'
       
   328                 #'value:' #alignSelectionCenterVer
       
   329                 #'enabled:' #enableChannel
       
   330                 #'activeHelpKey:' #alignSelectionCenterVer
       
   331                 #'labelImage:' 
       
   332                  #(#ResourceRetriever
       
   333                     nil #iconAlignCenterV
       
   334                 )
       
   335             )
       
   336           )
       
   337           #( 3 3 )
       
   338           nil
       
   339       )
   293 !
   340 !
   294 
   341 
   295 menuPullDown
   342 menuPullDown
   296     ^ #(#Menu #(
   343     "this window spec was automatically generated by the ST/X MenuEditor"
   297         #(#MenuItem
   344 
       
   345     "do not manually edit this - the builder may not be able to
       
   346      handle the specification if its corrupted."
       
   347 
       
   348     "
       
   349      MenuEditor new openOnClass:UIPainter andSelector:#menuPullDown
       
   350      (Menu new fromLiteralArrayEncoding:(UIPainter menuPullDown)) startUp
       
   351     "
       
   352 
       
   353     <resource: #menu>
       
   354 
       
   355     ^
       
   356      
       
   357        #(#Menu
       
   358           
       
   359            #(
       
   360              #(#MenuItem
   298                 #'label:' 'file'
   361                 #'label:' 'file'
   299                 #'value:' #file
   362                 #'value:' #file
   300                 #'submenu:'
   363                 #'enabled:' #enableChannel
   301                         #(#Menu #(
   364                 #'submenu:' 
   302                                  #(#MenuItem
   365                  #(#Menu
   303                                         #'label:' 'new'
   366                     
   304                                         #'value:' #doNew
   367                      #(
   305                                   )
   368                        #(#MenuItem
   306                                  #(#MenuItem
   369                           #'label:' 'new'
   307                                         #'label:' 'from class ...'
   370                           #'value:' #doNew
   308                                         #'value:' #doFromClass
   371                       )
   309                                   )
   372                        #(#MenuItem
   310                                  #(#MenuItem
   373                           #'label:' 'from class ...'
   311                                         #'label:' 'pick a view '
   374                           #'value:' #doFromClass
   312                                         #'value:' #doPickAView
   375                       )
   313                                   )
   376                        #(#MenuItem
   314                                  #(#MenuItem
   377                           #'label:' 'pick a view '
   315                                         #'label:' 'raise'
   378                           #'value:' #doPickAView
   316                                         #'value:' #doRaise
   379                       )
   317                                   )
   380                        #(#MenuItem
   318                                  #(#MenuItem
   381                           #'label:' '-'
   319                                         #'label:' '='
   382                       )
   320                                   )
   383                        #(#MenuItem
   321                                  #(#MenuItem
   384                           #'label:' 'raise'
   322                                         #'label:' 'quit'
   385                           #'value:' #doRaise
   323                                         #'value:' #closeRequest
   386                       )
   324                                   )
   387                        #(#MenuItem
   325                                  )
   388                           #'label:' '='
   326                                 #( 3 )
   389                       )
   327                                 nil
   390                        #(#MenuItem
   328                        )
   391                           #'label:' 'quit'
   329          )
   392                           #'value:' #closeRequest
   330         #(#MenuItem
   393                       )
       
   394                     ) nil
       
   395                     nil
       
   396                 )
       
   397             )
       
   398              #(#MenuItem
   331                 #'label:' 'misc'
   399                 #'label:' 'misc'
   332                 #'value:' #misc
   400                 #'value:' #misc
   333                 #'submenu:'
   401                 #'enabled:' #enableChannel
   334                         #(#Menu #(
   402                 #'submenu:' 
   335                                 #(#MenuItem
   403                  #(#Menu
   336                                         #'label:' 'grid'
   404                     
   337                                         #'value:' #grid
   405                      #(
   338                                         #'submenu:'
   406                        #(#MenuItem
   339                                                 #(#Menu #(
   407                           #'label:' 'grid'
   340                                                         #(#MenuItem
   408                           #'value:' #grid
   341                                                                 #'label:' 'show'
   409                           #'submenu:' 
   342                                                                 #'indication:' #gridShown:
   410                            #(#Menu
   343                                                          )
   411                               
   344                                                         #(#MenuItem
   412                                #(
   345                                                                 #'label:' 'align'
   413                                  #(#MenuItem
   346                                                                 #'indication:' #gridAlign:
   414                                     #'label:' 'show'
   347                                                          )
   415                                     #'indication:' #'gridShown:'
   348                                                         )
       
   349                                                         nil
       
   350                                                         nil
       
   351                                                  )
       
   352                                  )
       
   353                                 #(#MenuItem
       
   354                                         #'label:' 'undo'
       
   355                                         #'value:' #undo
       
   356                                         #'submenu:'
       
   357                                                 #(#Menu #(
       
   358                                                         #(#MenuItem
       
   359                                                                 #'label:' 'last'
       
   360                                                                 #'value:' #undoLast
       
   361                                                          )
       
   362                                                         #(#MenuItem
       
   363                                                                 #'label:' 'menu'
       
   364                                                                 #'value:' #openUndoMenu
       
   365                                                          )
       
   366                                                         #(#MenuItem
       
   367                                                                 #'label:' 'delete'
       
   368                                                                 #'value:' #removeUndoHistory
       
   369                                                          )
       
   370                                                         )
       
   371                                                         #(2)
       
   372                                                         nil
       
   373                                                  )
       
   374                                   )
       
   375                                 )
   416                                 )
   376                                 nil
   417                                  #(#MenuItem
   377                                 nil
   418                                     #'label:' 'align'
   378                                )
   419                                     #'indication:' #'gridAlign:'
   379          )
   420                                 )
   380         #(#MenuItem
   421                               ) nil
       
   422                               nil
       
   423                           )
       
   424                       )
       
   425                        #(#MenuItem
       
   426                           #'label:' 'undo'
       
   427                           #'value:' #undo
       
   428                           #'submenu:' 
       
   429                            #(#Menu
       
   430                               
       
   431                                #(
       
   432                                  #(#MenuItem
       
   433                                     #'label:' 'last'
       
   434                                     #'value:' #undoLast
       
   435                                 )
       
   436                                  #(#MenuItem
       
   437                                     #'label:' 'menu'
       
   438                                     #'value:' #openUndoMenu
       
   439                                 )
       
   440                                  #(#MenuItem
       
   441                                     #'label:' '-'
       
   442                                 )
       
   443                                  #(#MenuItem
       
   444                                     #'label:' 'delete'
       
   445                                     #'value:' #removeUndoHistory
       
   446                                 )
       
   447                               ) nil
       
   448                               nil
       
   449                           )
       
   450                       )
       
   451                     ) nil
       
   452                     nil
       
   453                 )
       
   454             )
       
   455              #(#MenuItem
   381                 #'label:' 'code'
   456                 #'label:' 'code'
   382                 #'value:' #code
   457                 #'value:' #code
   383                 #'submenu:'
   458                 #'enabled:' #enableChannel
   384                         #(#Menu #(
   459                 #'submenu:' 
   385                                 #(#MenuItem
   460                  #(#Menu
   386                                         #'label:' 'class && method ...'
   461                     
   387                                         #'value:' #defineClassAndSelector
   462                      #(
   388                                  )
   463                        #(#MenuItem
   389                                  #(#MenuItem
   464                           #'label:' 'class && method ...'
   390                                         #'label:' '='
   465                           #'value:' #defineClassAndSelector
   391                                   )
   466                       )
   392                                  #(#MenuItem
   467                        #(#MenuItem
   393                                         #'label:' 'install window spec.'
   468                           #'label:' '='
   394                                         #'value:' #doInstallSpec
   469                       )
   395                                   )
   470                        #(#MenuItem
   396                                  #(#MenuItem
   471                           #'label:' 'install window spec.'
   397                                         #'label:' 'install help spec.'
   472                           #'value:' #doInstallSpec
   398                                         #'value:' #doInstallHelp
   473                           #'enabled:' #hasSpecClassAndSelector
   399                                   )
   474                       )
   400                                  #(#MenuItem
   475                        #(#MenuItem
   401                                         #'label:' 'install aspects'
   476                           #'label:' 'install help spec.'
   402                                         #'value:' #doInstallAspects
   477                           #'value:' #doInstallHelp
   403                                   )
   478                           #'enabled:' #hasSpecClass
   404                                  #(#MenuItem
   479                       )
   405                                         #'label:' '='
   480                        #(#MenuItem
   406                                   )
   481                           #'label:' '-'
   407                                  #(#MenuItem
   482                       )
   408                                         #'label:' 'show window spec.'
   483                        #(#MenuItem
   409                                         #'value:' #doWindowSpec
   484                           #'label:' 'install aspects'
   410                                    )
   485                           #'value:' #doInstallAspects
   411                                  #(#MenuItem
   486                           #'enabled:' #hasSpecClass
   412                                         #'label:' '='
   487                       )
   413                                   )
   488                        #(#MenuItem
   414                                  #(#MenuItem
   489                           #'label:' '='
   415                                         #'label:' 'browse application'
   490                       )
   416                                         #'value:' #doBrowseAppClass
   491                        #(#MenuItem
   417                                   )
   492                           #'label:' 'show window spec.'
   418                                  #(#MenuItem
   493                           #'value:' #doWindowSpec
   419                                          #'label:' 'start  application'
   494                       )
   420                                          #'value:' #doStartApplication
   495                        #(#MenuItem
   421                                   )
   496                           #'label:' '='
   422                                 )
   497                       )
   423                                 #( 4 )
   498                        #(#MenuItem
   424                                 nil
   499                           #'label:' 'browse application'
   425                           )
   500                           #'value:' #doBrowseAppClass
   426          )
   501                           #'enabled:' #hasSpecClass
   427         #(#MenuItem
   502                       )
       
   503                        #(#MenuItem
       
   504                           #'label:' 'start  application'
       
   505                           #'value:' #doStartApplication
       
   506                           #'enabled:' #hasSpecClass
       
   507                       )
       
   508                     ) nil
       
   509                     nil
       
   510                 )
       
   511             )
       
   512              #(#MenuItem
   428                 #'label:' 'test'
   513                 #'label:' 'test'
   429                 #'nameKey:' #test
   514                 #'nameKey:' #test
   430                 #'value:' #test
   515                 #'value:' #test
   431                 #'submenu:'
   516                 #'submenu:' 
   432                         #(#Menu #(
   517                  #(#Menu
   433                                 #(#MenuItem
   518                     
   434                                         #'label:' 'test mode'
   519                      #(
   435                                         #'indication:' #testMode:
   520                        #(#MenuItem
   436                                  )
   521                           #'label:' 'test mode'
   437                                 )
   522                           #'indication:' #'testMode:'
   438                                 nil
   523                       )
   439                                 nil
   524                     ) nil
   440                           )
   525                     nil
   441          )
   526                 )
   442         )
   527             )
   443         nil
   528           ) nil
   444         nil
   529           nil
   445       )
   530       )
   446 !
   531 !
   447 
   532 
   448 nameAndSelectorSpec
   533 nameAndSelectorSpec
   449     "this window spec was automatically generated by the ST/X UIPainter"
   534     "this window spec was automatically generated by the ST/X UIPainter"
   802     ]
   887     ]
   803 !
   888 !
   804 
   889 
   805 doubleClick
   890 doubleClick
   806     objectList selectGroup
   891     objectList selectGroup
       
   892 !
       
   893 
       
   894 openEditMenu
       
   895     |cls aspect editor|
       
   896 
       
   897     specClass isNil ifTrue:[
       
   898         ^ self information:'no class yet'.
       
   899     ].
       
   900     (cls := specClass) isBehavior ifFalse:[
       
   901         cls := Smalltalk at:specClass asSymbol.
       
   902         cls isNil ifTrue:[
       
   903             ^ self information:'no class yet'
       
   904         ]
       
   905     ].
       
   906 
       
   907     cls notNil ifTrue:[
       
   908         (aspect := specTool specification menu) notNil ifTrue:[
       
   909             aspect := aspect asSymbol
       
   910         ].
       
   911         editor := MenuEditor new.
       
   912         editor masterApplication:self.
       
   913         editor activeHelpTool:(self activeHelpTool).
       
   914         editor openModalOnClass:cls andSelector:aspect
       
   915     ]
       
   916 
       
   917 
   807 ! !
   918 ! !
   808 
   919 
   809 !UIPainter methodsFor:'active help'!
   920 !UIPainter methodsFor:'active help'!
   810 
   921 
   811 activeHelpTool
   922 activeHelpTool
   812     "setup help tool
   923     "setup help tool
   813     "
   924     "
   814     activeHelpTool isNil ifTrue:[
   925     activeHelpTool isNil ifTrue:[
   815         activeHelpTool := UIHelpTool new.
   926         activeHelpTool := UIHelpTool new.
   816         activeHelpTool helpSpecFrom:specClass.
   927         activeHelpTool helpSpecFrom:specClass.
       
   928         activeHelpTool masterApplication:self.
   817     ].
   929     ].
   818     ^ activeHelpTool
   930     ^ activeHelpTool
   819 !
   931 !
   820 
   932 
   821 showHelp:aHelpText for:view
   933 showHelp:aHelpText for:view
   852         builder aspectAt:#galleryShown put:(holder :=  true asValue).
   964         builder aspectAt:#galleryShown put:(holder :=  true asValue).
   853         holder addDependent:self
   965         holder addDependent:self
   854     ].
   966     ].
   855     ^ holder
   967     ^ holder
   856 
   968 
   857 !
       
   858 
       
   859 menuAlignment
       
   860     |menu channel|
       
   861 
       
   862     channel := self enableChannel.
       
   863 
       
   864     menu := Menu new.
       
   865     menu fromLiteralArrayEncoding:(self class menuAlignment).
       
   866     menu receiver:self.
       
   867     menu menuItems do:[:anItem| anItem enabled:channel].
       
   868   ^ menu
       
   869 !
       
   870 
       
   871 menuPullDown
       
   872     |menu channel|
       
   873 
       
   874     channel := self enableChannel.
       
   875 
       
   876     menu := Menu new.
       
   877     menu fromLiteralArrayEncoding:(self class menuPullDown).
       
   878     menu receiver:self.
       
   879 
       
   880     menu menuItems do:[:anItem| 
       
   881         anItem nameKey ~~ #test ifTrue:[anItem enabled:channel]
       
   882                                ifFalse:[anItem value:channel].
       
   883     ].
       
   884   ^ menu
       
   885 !
   969 !
   886 
   970 
   887 modifiedChannel
   971 modifiedChannel
   888 
   972 
   889     |holder|
   973     |holder|
  1122     "Modified: 24.6.1997 / 19:07:01 / cg"
  1206     "Modified: 24.6.1997 / 19:07:01 / cg"
  1123 ! !
  1207 ! !
  1124 
  1208 
  1125 !UIPainter methodsFor:'queries'!
  1209 !UIPainter methodsFor:'queries'!
  1126 
  1210 
       
  1211 hasSpecClass
       
  1212 
       
  1213     specClass notNil ifTrue:[
       
  1214         ^ (specClass isBehavior or:[(Smalltalk at:specClass asSymbol) notNil])
       
  1215     ].
       
  1216   ^ false
       
  1217 !
       
  1218 
       
  1219 hasSpecClassAndSelector
       
  1220 
       
  1221     specSelector size > 1 ifTrue:[
       
  1222         ^ self hasSpecClass
       
  1223     ].
       
  1224   ^ false
       
  1225 !
       
  1226 
  1127 isHelpToolSelected
  1227 isHelpToolSelected
  1128     ^ tabSelection = 'Help'
  1228     ^ tabSelection = 'Help'
  1129 !
  1229 !
  1130 
  1230 
  1131 isLayoutToolSelected
  1231 isLayoutToolSelected
  1132     ^ tabSelection = layoutTool class label
  1232     ^ tabSelection = layoutTool class label
       
  1233 !
       
  1234 
       
  1235 isPainterEnabled
       
  1236     ^ self painter enabled
  1133 ! !
  1237 ! !
  1134 
  1238 
  1135 !UIPainter methodsFor:'selection'!
  1239 !UIPainter methodsFor:'selection'!
  1136 
  1240 
  1137 tabSelection
  1241 tabSelection
  1508 !
  1612 !
  1509 
  1613 
  1510 doInstallAspects
  1614 doInstallAspects
  1511     |code|
  1615     |code|
  1512 
  1616 
  1513     (specClass isNil or:[specSelector isNil]) ifTrue:[
  1617     self hasSpecClassAndSelector ifFalse:[
  1514         self defineClassAndSelector
  1618         self defineClassAndSelector
  1515     ].
  1619     ].
  1516 
  1620 
  1517     self checkClassAndSelector ifFalse:[
  1621     self checkClassAndSelector ifFalse:[
  1518         ^ self
  1622         ^ self
  1538 !
  1642 !
  1539 
  1643 
  1540 doInstallSpec
  1644 doInstallSpec
  1541     |code painter|
  1645     |code painter|
  1542 
  1646 
  1543     (specClass isNil or:[specSelector isNil]) ifTrue:[
  1647     self hasSpecClassAndSelector ifFalse:[
  1544         self defineClassAndSelector
  1648         self defineClassAndSelector
  1545     ].
  1649     ].
  1546 
  1650 
  1547     self checkClassAndSelector ifFalse:[
  1651     self checkClassAndSelector ifFalse:[
  1548         ^ self
  1652         ^ self
  1618 !
  1722 !
  1619 
  1723 
  1620 doStartApplication
  1724 doStartApplication
  1621     |cls|
  1725     |cls|
  1622 
  1726 
  1623     (specClass isNil or:[specSelector isNil]) ifTrue:[
  1727     (specClass isNil or:[specSelector size < 2]) ifTrue:[
  1624         ^ self information:'no class or selector defined'.
  1728         ^ self information:'no class or selector defined'.
  1625     ].
  1729     ].
  1626 
  1730 
  1627     specClass isBehavior ifFalse:[
  1731     specClass isBehavior ifFalse:[
  1628         cls := Smalltalk at:specClass asSymbol
  1732         cls := Smalltalk at:specClass asSymbol