ImageEditor.st
changeset 415 f792d83774b3
parent 405 8546da96ab11
child 420 7fd01e47c912
equal deleted inserted replaced
414:116cf2acebe3 415:f792d83774b3
    53 
    53 
    54 openModalOnClass: aClass andSelector: aSelector
    54 openModalOnClass: aClass andSelector: aSelector
    55 
    55 
    56     "self openModalOnClass: self andSelector: #newImageIcon"
    56     "self openModalOnClass: self andSelector: #newImageIcon"
    57 
    57 
    58     |imageEditor className resourceClassName resourceSelector|                          
    58     |imageEditor className resourceClassName resourceSelector|                      
    59     imageEditor := self new.
    59     imageEditor := self new.
    60     aClass isClass ifTrue: [className := aClass name].
    60     aClass isClass ifTrue: [className := aClass name].
    61     aClass isString ifTrue: [className := aClass].      
    61     aClass isString ifTrue: [className := aClass].      
    62 
    62 
    63     imageEditor postOpenAction: [imageEditor loadFromMessage: className printString, ' ', aSelector].
    63     imageEditor postOpenAction: [imageEditor loadFromOrPrepareForMessage: className, ' ', aSelector].
    64     imageEditor openModal.
    64     imageEditor openModal.
    65 
    65 
    66     resourceClassName := imageEditor valueOfResourceClass value.
    66     resourceClassName := imageEditor valueOfResourceClass value.
    67     resourceSelector := imageEditor valueOfResourceSelector value.
    67     resourceSelector := imageEditor valueOfResourceSelector value.
    68     ^resourceClassName, ' ', resourceSelector
    68 
       
    69     (className asString ~= resourceClassName) | (aSelector asString ~= resourceSelector)
       
    70         ifTrue: [^resourceClassName, ' ', resourceSelector]
       
    71         ifFalse:[^nil]
    69 !
    72 !
    70 
    73 
    71 openOnClass: aClass andSelector: aSelector
    74 openOnClass: aClass andSelector: aSelector
    72 
    75 
    73     "self openOnClass: self andSelector: #newImageIcon"
    76     "self openOnClass: self andSelector: #newImageIcon"
   522      
   525      
   523        #(#FullSpec
   526        #(#FullSpec
   524           #'window:' 
   527           #'window:' 
   525            #(#WindowSpec
   528            #(#WindowSpec
   526               #'name:' 'Image Editor'
   529               #'name:' 'Image Editor'
   527               #'layout:' #(#LayoutFrame 368 0 254 0 867 0 599 0)
   530               #'layout:' #(#LayoutFrame 109 0 301 0 608 0 646 0)
   528               #'label:' 'Image Editor'
   531               #'label:' 'Image Editor'
   529               #'min:' #(#Point 400 320)
   532               #'min:' #(#Point 400 320)
   530               #'max:' #(#Point 1152 900)
   533               #'max:' #(#Point 1152 900)
   531               #'bounds:' #(#Rectangle 368 254 868 600)
   534               #'bounds:' #(#Rectangle 109 301 609 647)
   532               #'menu:' #menu
   535               #'menu:' #menu
   533               #'usePreferredExtent:' false
   536               #'usePreferredExtent:' false
   534           )
   537           )
   535           #'component:' 
   538           #'component:' 
   536            #(#SpecCollection
   539            #(#SpecCollection
   537               #'collection:' 
   540               #'collection:' 
   538                #(
   541                #(
   539                  #(#MenuPanelSpec
   542                  #(#MenuPanelSpec
   540                     #'name:' 'menuToolbarView'
   543                     #'name:' 'menuToolbarView'
   541                     #'layout:' #(#LayoutFrame 0 0.0 0 0 0 1.0 34 0)
   544                     #'layout:' #(#LayoutFrame 0 0.0 0 0 0 1.0 32 0)
   542                     #'menu:' #menuToolbar
   545                     #'menu:' #menuToolbar
   543                     #'style:' #(#FontDescription #helvetica #medium #roman 10)
   546                     #'style:' #(#FontDescription #helvetica #medium #roman 10)
   544                     #'showSeparatingLines:' true
   547                     #'showSeparatingLines:' true
   545                 )
   548                 )
   546                  #(#VariableHorizontalPanelSpec
   549                  #(#VariableHorizontalPanelSpec
   547                     #'name:' 'variableHorizontalPanel1'
   550                     #'name:' 'variableHorizontalPanel1'
   548                     #'layout:' #(#LayoutFrame 0 0.0 36 0.0 0 1.0 -22 1.0)
   551                     #'layout:' #(#LayoutFrame 0 0.0 34 0.0 0 1.0 -22 1.0)
   549                     #'component:' 
   552                     #'component:' 
   550                      #(#SpecCollection
   553                      #(#SpecCollection
   551                         #'collection:' 
   554                         #'collection:' 
   552                          #(
   555                          #(
   553                            #(#ViewSpec
   556                            #(#ViewSpec
   619                                                      #(#DataSetColumnSpec
   622                                                      #(#DataSetColumnSpec
   620                                                         #'rendererType:' #rowSelector
   623                                                         #'rendererType:' #rowSelector
   621                                                         #'backgroundSelector:' #yourself
   624                                                         #'backgroundSelector:' #yourself
   622                                                     )
   625                                                     )
   623                                                      #(#DataSetColumnSpec
   626                                                      #(#DataSetColumnSpec
   624                                                         #'label:' ' Red'
   627                                                         #'label:' 'Red'
   625                                                         #'model:' #rowRedByte
   628                                                         #'model:' #rowRedByte
   626                                                         #'canSelect:' false
   629                                                         #'canSelect:' false
   627                                                     )
   630                                                     )
   628                                                      #(#DataSetColumnSpec
   631                                                      #(#DataSetColumnSpec
   629                                                         #'label:' ' Green'
   632                                                         #'label:' 'Green'
   630                                                         #'model:' #rowGreenByte
   633                                                         #'model:' #rowGreenByte
   631                                                         #'canSelect:' false
   634                                                         #'canSelect:' false
   632                                                     )
   635                                                     )
   633                                                      #(#DataSetColumnSpec
   636                                                      #(#DataSetColumnSpec
   634                                                         #'label:' ' Blue'
   637                                                         #'label:' 'Blue'
   635                                                         #'model:' #rowBlueByte
   638                                                         #'model:' #rowBlueByte
   636                                                         #'canSelect:' false
   639                                                         #'canSelect:' false
   637                                                     )
   640                                                     )
   638                                                   )
   641                                                   )
   639                                               )
   642                                               )
   690                                             #'collection:' 
   693                                             #'collection:' 
   691                                              #(
   694                                              #(
   692                                                #(#InputFieldSpec
   695                                                #(#InputFieldSpec
   693                                                   #'name:' 'resourceClassInputField'
   696                                                   #'name:' 'resourceClassInputField'
   694                                                   #'activeHelpKey:' #classNameInputField
   697                                                   #'activeHelpKey:' #classNameInputField
       
   698                                                   #'enableChannel:' #valueOfOpenedStandAlone
   695                                                   #'model:' #valueOfResourceClass
   699                                                   #'model:' #valueOfResourceClass
   696                                                   #'immediateAccept:' false
   700                                                   #'immediateAccept:' false
   697                                                   #'extent:' #(#Point 129 21)
   701                                                   #'extent:' #(#Point 129 21)
   698                                               )
   702                                               )
   699                                                #(#InputFieldSpec
   703                                                #(#InputFieldSpec
  1244         ' used colors)'
  1248         ' used colors)'
  1245 
  1249 
  1246 
  1250 
  1247 !
  1251 !
  1248 
  1252 
  1249 updateInputFieldsAndLabelsAndHistory
  1253 updateInputFields
  1250 
       
  1251     self imageIsLoaded value: self image notNil.
       
  1252 
       
  1253     self image isNil ifTrue: [^nil].
       
  1254 
       
  1255     self updateInfoLabel.
       
  1256     self imageEditView coordInfoBlock: [:value| self valueOfCoordLabel value: value].
       
  1257 
       
  1258     self valueOfFileName removeDependent: self.
       
  1259     self valueOfFileName value: self image fileName.
       
  1260     self valueOfFileName addDependent: self.
       
  1261 
  1254 
  1262     self valueOfResourceSelector removeDependent: self.
  1255     self valueOfResourceSelector removeDependent: self.
  1263     self valueOfResourceSelector value: self imageEditView resourceSelector.
  1256     self valueOfResourceSelector value: self imageEditView resourceSelector.
  1264     self valueOfResourceSelector addDependent: self.
  1257     self valueOfResourceSelector addDependent: self.
  1265 
  1258 
  1267     self imageEditView resourceClass notNil
  1260     self imageEditView resourceClass notNil
  1268         ifTrue: [self valueOfResourceClass value: self imageEditView resourceClass]
  1261         ifTrue: [self valueOfResourceClass value: self imageEditView resourceClass]
  1269         ifFalse: [self valueOfResourceClass value: ''].
  1262         ifFalse: [self valueOfResourceClass value: ''].
  1270     self valueOfResourceClass addDependent: self.
  1263     self valueOfResourceClass addDependent: self.
  1271 
  1264 
       
  1265 !
       
  1266 
       
  1267 updateInputFieldsAndLabelsAndHistory
       
  1268 
       
  1269     self imageIsLoaded value: self image notNil.
       
  1270 
       
  1271     self image isNil ifTrue: [^nil].
       
  1272 
       
  1273     self updateInfoLabel.
       
  1274     self imageEditView coordInfoBlock: [:value| self valueOfCoordLabel value: value].
       
  1275 
       
  1276     self valueOfFileName removeDependent: self.
       
  1277     self valueOfFileName value: self image fileName.
       
  1278     self valueOfFileName addDependent: self.
       
  1279 
       
  1280     self updateInputFields.
       
  1281 
  1272     self imageEditView resourceMessage asCollectionOfWords size = 2
  1282     self imageEditView resourceMessage asCollectionOfWords size = 2
  1273         ifTrue: [self addToHistory: self imageEditView resourceMessage -> #loadFromMessage:].
  1283         ifTrue: [self addToHistory: self imageEditView resourceMessage -> #loadFromMessage:].
  1274 
  1284 
  1275     self image fileName notNil
  1285     self image fileName notNil
  1276         ifTrue: [self addToHistory: self image fileName -> #loadFromFile:].
  1286         ifTrue: [self addToHistory: self image fileName -> #loadFromFile:].
  1316 !
  1326 !
  1317 
  1327 
  1318 open
  1328 open
  1319 
  1329 
  1320     super open.
  1330     super open.
  1321 
       
  1322     self imageEditView masterApplication: self.
       
  1323 
  1331 
  1324     self resourceClassInputField entryCompletionBlock:
  1332     self resourceClassInputField entryCompletionBlock:
  1325     [:value|
  1333     [:value|
  1326         |what|
  1334         |what|
  1327         what := Smalltalk classnameCompletion: value withoutSpaces.
  1335         what := Smalltalk classnameCompletion: value withoutSpaces.
  1356     ].
  1364     ].
  1357 !
  1365 !
  1358 
  1366 
  1359 postOpenWith:aBuilder
  1367 postOpenWith:aBuilder
  1360 
  1368 
       
  1369     self imageEditView masterApplication: self.
  1361     postOpenAction notNil ifTrue: [postOpenAction value].
  1370     postOpenAction notNil ifTrue: [postOpenAction value].
  1362     super postOpenWith:aBuilder.
  1371     super postOpenWith:aBuilder.
  1363 !
  1372 !
  1364 
  1373 
  1365 reOpen
  1374 reOpen
  1526         self findColorMapMode.
  1535         self findColorMapMode.
  1527         self updateInputFieldsAndLabelsAndHistory.
  1536         self updateInputFieldsAndLabelsAndHistory.
  1528     ]
  1537     ]
  1529 !
  1538 !
  1530 
  1539 
       
  1540 loadFromOrPrepareForMessage: aMessage
       
  1541 
       
  1542     (self imageEditView loadFromMessage: aMessage) notNil
       
  1543     ifTrue:
       
  1544     [
       
  1545         self listOfColors contents: self image usedColors asSet asOrderedCollection.
       
  1546         self findColorMapMode.
       
  1547         self updateInputFieldsAndLabelsAndHistory.
       
  1548     ]
       
  1549     ifFalse:
       
  1550     [
       
  1551         self imageEditView resourceMessage: aMessage.
       
  1552         self updateInputFields.
       
  1553     ]
       
  1554 !
       
  1555 
  1531 newImage
  1556 newImage
  1532 
  1557 
  1533     |aspects|
  1558     |aspects|
  1534     aspects  := IdentityDictionary new
  1559     aspects  := IdentityDictionary new
  1535         at:#listOfSizes put: self class listOfDefaultSizes asValue;
  1560         at:#listOfSizes put: self class listOfDefaultSizes asValue;