# HG changeset patch # User tz # Date 888345875 -3600 # Node ID 738210a2fa065e086b4221ebc152afe29ba63da9 # Parent 3e3d7f16802470c98e6aff30c6a4ce55b861c7f7 revised version diff -r 3e3d7f168024 -r 738210a2fa06 ImageEditor.st --- a/ImageEditor.st Mon Feb 23 23:53:02 1998 +0100 +++ b/ImageEditor.st Tue Feb 24 19:44:35 1998 +0100 @@ -216,9 +216,6 @@ #fileSaveAs 'Opens dialog to save the image on a file.' -#fileSaveFile -'Saves current image on current file name.' - #fileSaveMaskAs 'Opens dialog to save the mask of the image on a file.' @@ -228,15 +225,6 @@ #fileSaveMethodAs 'Opens dialog to save the image on a class and a selector.' -#inputFieldFileName -'File name of the image.' - -#inputFieldOfClass -'Class implementing the image method.' - -#inputFieldOfSelector -'Selector of the class returning the image.' - #magnificationNumber 'Shows current number of magnification.' @@ -274,258 +262,163 @@ ^ #(#FullSpec - #'window:' + #window: #(#WindowSpec - #'name:' 'Image Editor' - #'layout:' #(#LayoutFrame 69 0 265 0 568 0 610 0) - #'label:' 'Image Editor' - #'min:' #(#Point 400 320) - #'max:' #(#Point 1152 900) - #'bounds:' #(#Rectangle 69 265 569 611) - #'menu:' #menu - #'usePreferredExtent:' false + #name: 'Image Editor' + #layout: #(#LayoutFrame 197 0 172 0 696 0 517 0) + #label: 'Image Editor' + #min: #(#Point 400 320) + #max: #(#Point 1152 900) + #bounds: #(#Rectangle 197 172 697 518) + #menu: #menu + #usePreferredExtent: false ) - #'component:' + #component: #(#SpecCollection - #'collection:' + #collection: #( #(#MenuPanelSpec - #'name:' 'menuToolbarView' - #'layout:' #(#LayoutFrame 0 0.0 0 0 0 1.0 32 0) - #'menu:' #menuToolbar - #'style:' #(#FontDescription #helvetica #medium #roman 10) - #'showSeparatingLines:' true + #name: 'menuToolbarView' + #layout: #(#LayoutFrame 0 0.0 0 0 0 1.0 32 0) + #menu: #menuToolbar + #style: #(#FontDescription #helvetica #medium #roman 10) + #showSeparatingLines: true ) #(#VariableHorizontalPanelSpec - #'name:' 'variableHorizontalPanel1' - #'layout:' #(#LayoutFrame 0 0.0 34 0.0 0 1.0 -26 1.0) - #'component:' + #name: 'variableHorizontalPanel1' + #layout: #(#LayoutFrame 0 0.0 34 0.0 0 1.0 -26 1.0) + #component: #(#SpecCollection - #'collection:' + #collection: #( #(#ViewSpec - #'name:' 'view1' - #'component:' + #name: 'view1' + #component: #(#SpecCollection - #'collection:' + #collection: #( - #(#FramedBoxSpec - #'name:' 'framedBox1' - #'layout:' #(#LayoutFrame 1 0.0 3 0.0 110 0 65 0) - #'component:' + #(#VariableVerticalPanelSpec + #name: 'VariableVerticalPanel1' + #layout: #(#LayoutFrame 0 0.0 0 0.0 0 1.0 0 1.0) + #component: #(#SpecCollection - #'collection:' + #collection: #( - #(#ArrowButtonSpec - #'name:' 'magnifyDownButton' - #'layout:' #(#LayoutFrame 13 0 20 0 35 0 42 0) - #'activeHelpKey:' #magnifyImageDown - #'model:' #magnifyDown - #'enableChannel:' #imageIsLoaded - #'isTriggerOnDown:' true - #'direction:' #left + #(#ArbitraryComponentSpec + #name: 'imagePreView' + #activeHelpKey: #previewView + #hasHorizontalScrollBar: true + #hasVerticalScrollBar: true + #miniScrollerHorizontal: true + #miniScrollerVertical: true + #component: #ImageView + #hasBorder: true ) - #(#ArrowButtonSpec - #'name:' 'magnifyUpButton' - #'layout:' #(#LayoutFrame 73 0 20 0 95 0 42 0) - #'activeHelpKey:' #magnifyImageUp - #'model:' #magnifyUp - #'enableChannel:' #imageIsLoaded - #'isTriggerOnDown:' true - #'direction:' #right - ) - #(#InputFieldSpec - #'name:' 'magnificationInputField' - #'layout:' #(#LayoutFrame 36 0 20 0.0 72 0 42 0) - #'activeHelpKey:' #magnificationNumber - #'enableChannel:' #imageIsLoaded - #'model:' #valueOfMagnification - #'type:' #number - #'acceptOnReturn:' false - #'acceptOnTab:' false - #'numChars:' 2 + #(#DataSetSpec + #name: 'colorDataSetView' + #activeHelpKey: #colorMapTable + #model: #selectionOfColor + #style: #(#FontDescription #helvetica #medium #roman 10) + #hasHorizontalScrollBar: true + #hasVerticalScrollBar: true + #miniScrollerHorizontal: true + #miniScrollerVertical: true + #dataList: #listOfColors + #level: -1 + #has3Dsepartors: true + #verticalSpacing: 1 + #columns: + #( + #(#DataSetColumnSpec + #rendererType: #rowSelector + #backgroundSelector: #yourself + ) + #(#DataSetColumnSpec + #label: 'R' + #model: #rowRedByte + #canSelect: false + ) + #(#DataSetColumnSpec + #label: 'G' + #model: #rowGreenByte + #canSelect: false + ) + #(#DataSetColumnSpec + #label: 'B' + #model: #rowBlueByte + #canSelect: false + ) + ) ) ) ) - #'label:' 'Magnification' - #'labelPosition:' #topLeft - #'style:' #(#FontDescription #helvetica #medium #roman 12) - ) - #(#ArbitraryComponentSpec - #'name:' 'imagePreView' - #'layout:' #(#LayoutFrame 111 0.0 9 0.0 -6 1 60 0) - #'activeHelpKey:' #previewView - #'hasHorizontalScrollBar:' true - #'hasVerticalScrollBar:' true - #'miniScrollerHorizontal:' true - #'miniScrollerVertical:' true - #'component:' #ImageView - #'hasBorder:' true - ) - #(#FramedBoxSpec - #'name:' 'framedBox2' - #'layout:' #(#LayoutFrame 1 0.0 68 0 0 1.0 -66 1) - #'component:' - #(#SpecCollection - #'collection:' - #( - #(#DataSetSpec - #'name:' 'colorDataSetView' - #'layout:' #(#LayoutFrame 11 0.0 19 0.0 20 1.0 -10 1.0) - #'activeHelpKey:' #colorMapTable - #'model:' #selectionOfColor - #'style:' #(#FontDescription #helvetica #medium #roman 12) - #'hasHorizontalScrollBar:' true - #'hasVerticalScrollBar:' true - #'miniScrollerHorizontal:' true - #'miniScrollerVertical:' true - #'dataList:' #listOfColors - #'level:' -1 - #'has3Dsepartors:' true - #'verticalSpacing:' 1 - #'columns:' - #( - #(#DataSetColumnSpec - #'rendererType:' #rowSelector - #'backgroundSelector:' #yourself - ) - #(#DataSetColumnSpec - #'label:' 'Red' - #'model:' #rowRedByte - #'canSelect:' false - ) - #(#DataSetColumnSpec - #'label:' 'Green' - #'model:' #rowGreenByte - #'canSelect:' false - ) - #(#DataSetColumnSpec - #'label:' 'Blue' - #'model:' #rowBlueByte - #'canSelect:' false - ) - ) - ) - #(#MenuPanelSpec - #'name:' 'menuColorAssignmentPanel' - #'layout:' #(#LayoutFrame 11 0 -10 1 18 1 17 1) - #'activeHelpKey:' #mouseKeyColorMode - #'enableChannel:' #imageIsLoaded - #'menu:' #menuColorAssignment - #'style:' #(#FontDescription #helvetica #medium #roman 10) - ) - ) - ) - #'label:' 'Color Map' - #'labelPosition:' #topLeft - #'style:' #(#FontDescription #helvetica #medium #roman 12) - ) - #(#VerticalPanelViewSpec - #'name:' 'verticalPanelView1' - #'layout:' #(#LayoutFrame 1 0.0 -68 1 83 0 0 1.0) - #'component:' - #(#SpecCollection - #'collection:' - #( - #(#LabelSpec - #'name:' 'classNameLabel' - #'label:' 'Class:' - #'adjust:' #right - #'extent:' #(#Point 82 21) - ) - #(#LabelSpec - #'name:' 'selectorLabel' - #'label:' 'Selector:' - #'adjust:' #right - #'extent:' #(#Point 82 20) - ) - #(#LabelSpec - #'name:' 'fileNameLabel' - #'label:' 'File Name:' - #'adjust:' #right - #'extent:' #(#Point 82 21) - ) - ) - ) - #'horizontalLayout:' #fit - #'verticalLayout:' #fit - #'horizontalSpace:' 3 - #'verticalSpace:' 3 - ) - #(#VerticalPanelViewSpec - #'name:' 'verticalPanelView2' - #'layout:' #(#LayoutFrame 85 0.0 -68 1 -6 1 0 1.0) - #'component:' - #(#SpecCollection - #'collection:' - #( - #(#InputFieldSpec - #'name:' 'resourceClassInputField' - #'activeHelpKey:' #inputFieldOfClass - #'model:' #valueOfResourceClass - #'immediateAccept:' false - #'extent:' #(#Point 107 21) - ) - #(#InputFieldSpec - #'name:' 'resourceSelectorInputField' - #'activeHelpKey:' #inputFieldOfSelector - #'model:' #valueOfResourceSelector - #'immediateAccept:' false - #'acceptOnTab:' false - #'extent:' #(#Point 107 20) - ) - #(#InputFieldSpec - #'name:' 'fileNameInputField' - #'activeHelpKey:' #inputFieldFileName - #'model:' #valueOfFileName - #'immediateAccept:' false - #'acceptOnTab:' false - #'extent:' #(#Point 107 21) - ) - ) - ) - #'horizontalLayout:' #fit - #'verticalLayout:' #fit - #'horizontalSpace:' 3 - #'verticalSpace:' 3 + #handles: #(#Any 0.285211 1.0) ) ) ) - #'level:' -1 ) #(#ViewSpec - #'name:' 'view2' - #'component:' + #name: 'view2' + #component: #(#SpecCollection - #'collection:' + #collection: #( #(#ArbitraryComponentSpec - #'name:' 'imageEditView' - #'layout:' #(#LayoutFrame 2 0.0 2 0.0 -2 1.0 -24 1.0) - #'hasHorizontalScrollBar:' true - #'hasVerticalScrollBar:' true - #'component:' #ImageEditView - #'hasBorder:' false + #name: 'imageEditView' + #layout: #(#LayoutFrame 2 0.0 2 0.0 -2 1.0 -24 1.0) + #hasHorizontalScrollBar: true + #hasVerticalScrollBar: true + #component: #ImageEditView + #hasBorder: false ) #(#LabelSpec - #'name:' 'coordLabel' - #'layout:' #(#LayoutFrame 2 0.0 -22 1 -4 1.0 0 1.0) - #'level:' -1 - #'adjust:' #left + #name: 'coordLabel' + #layout: #(#LayoutFrame 2 0.0 -22 1 -83 1.0 0 1.0) + #level: -1 + #adjust: #left + ) + #(#ArrowButtonSpec + #name: 'magnifyDownButton' + #layout: #(#LayoutFrame -80 1 -22 1 -58 1 0 1) + #activeHelpKey: #magnifyImageDown + #model: #magnifyDown + #enableChannel: #imageIsLoaded + #isTriggerOnDown: true + #direction: #left + ) + #(#ArrowButtonSpec + #name: 'magnifyUpButton' + #layout: #(#LayoutFrame -24 1 -22 1 -2 1 0 1) + #activeHelpKey: #magnifyImageUp + #model: #magnifyUp + #enableChannel: #imageIsLoaded + #isTriggerOnDown: true + #direction: #right + ) + #(#InputFieldSpec + #name: 'magnificationInputField' + #layout: #(#LayoutFrame -57 1 -22 1 -26 1 0 1) + #activeHelpKey: #magnificationNumber + #enableChannel: #imageIsLoaded + #model: #valueOfMagnification + #type: #number + #acceptOnReturn: false + #acceptOnTab: false + #numChars: 2 ) ) ) - #'level:' -1 + #level: -1 ) ) ) - #'handles:' #(#Any 0.404 1.0) + #handles: #(#Any 0.286 1.0) ) #(#UISubSpecification - #'name:' 'infoBarSubSpec' - #'layout:' #(#LayoutFrame 0 0.0 -24 1 0 1.0 0 1.0) - #'majorKey:' #ToolApplicationModel - #'minorKey:' #windowSpecForInfoBarWithClock + #name: 'infoBarSubSpec' + #layout: #(#LayoutFrame 0 0.0 -24 1 0 1.0 0 1.0) + #majorKey: #ToolApplicationModel + #minorKey: #windowSpecForInfoBarWithClock ) ) ) @@ -548,97 +441,76 @@ ^ #(#FullSpec - #'window:' + #window: #(#WindowSpec - #'name:' 'New Image' - #'layout:' #(#LayoutFrame 194 0 152 0 461 0 248 0) - #'label:' 'New Image' - #'min:' #(#Point 10 10) - #'max:' #(#Point 1152 900) - #'bounds:' #(#Rectangle 194 152 462 249) - #'usePreferredExtent:' false + #name: 'New Image' + #layout: #(#LayoutFrame 197 0 172 0 497 0 276 0) + #label: 'New Image' + #min: #(#Point 10 10) + #max: #(#Point 1152 900) + #bounds: #(#Rectangle 197 172 498 277) + #usePreferredExtent: false ) - #'component:' + #component: #(#SpecCollection - #'collection:' + #collection: #( #(#ViewSpec - #'name:' 'View' - #'layout:' #(#LayoutFrame 0 0.0 0 0.0 0 1.0 -38 1.0) - #'component:' + #name: 'View' + #layout: #(#LayoutFrame 0 0.0 0 0.0 0 1.0 -37 1.0) + #component: #(#SpecCollection - #'collection:' + #collection: #( #(#FramedBoxSpec - #'name:' 'framedBox1' - #'layout:' #(#LayoutFrame 1 0.0 1 0.0 0 0.4 55 0) - #'component:' + #name: 'framedBox1' + #layout: #(#LayoutFrame 1 0.0 1 0.0 0 0.4 60 0) + #component: #(#SpecCollection - #'collection:' + #collection: #( #(#ComboBoxSpec - #'name:' 'defaultSizesComboBox' - #'layout:' #(#LayoutFrame 15 0.0 16 0.0 15 1.0 16 1.0) - #'model:' #selectionOfSize - #'type:' #string - #'comboList:' #listOfDefaultSizes + #name: 'defaultSizesComboBox' + #layout: #(#LayoutFrame 15 0.0 20 0.0 17 1.0 16 1.0) + #model: #selectionOfSize + #type: #string + #comboList: #listOfDefaultSizes ) ) ) - #'label:' 'Size' - #'labelPosition:' #topLeft - #'style:' #(#FontDescription #helvetica #medium #roman 12) + #label: 'Size' + #labelPosition: #topLeft + #style: #(#FontDescription #helvetica #medium #roman 12) ) #(#FramedBoxSpec - #'name:' 'framedBox2' - #'layout:' #(#LayoutFrame 0 0.4 1 0.0 -1 1.0 55 0) - #'component:' + #name: 'framedBox2' + #layout: #(#LayoutFrame 0 0.4 1 0.0 -1 1.0 60 0) + #component: #(#SpecCollection - #'collection:' + #collection: #( #(#ComboListSpec - #'name:' 'colorMapComboBox' - #'layout:' #(#LayoutFrame 15 0.0 16 0.0 15 1.0 16 1.0) - #'model:' #selectionOfColorMap - #'comboList:' #listOfColorMaps - #'useIndex:' false + #name: 'colorMapComboBox' + #layout: #(#LayoutFrame 15 0.0 20 0.0 18 1.0 16 1.0) + #model: #selectionOfColorMap + #comboList: #listOfColorMaps + #useIndex: false ) ) ) - #'label:' 'Color Map' - #'labelPosition:' #topLeft - #'style:' #(#FontDescription #helvetica #medium #roman 12) + #label: 'Color Map' + #labelPosition: #topLeft + #style: #(#FontDescription #helvetica #medium #roman 12) ) ) ) - #'level:' 1 + #level: 1 ) - #(#HorizontalPanelViewSpec - #'name:' 'horizontalPanelView1' - #'layout:' #(#LayoutFrame 0 0.0 -38 1 0 1.0 0 1.0) - #'component:' - #(#SpecCollection - #'collection:' - #( - #(#ActionButtonSpec - #'name:' 'actionButton2' - #'label:' 'Cancel' - #'model:' #cancel - #'extent:' #(#Point 100 22) - ) - #(#ActionButtonSpec - #'name:' 'actionButton1' - #'label:' 'OK' - #'model:' #accept - #'isDefault:' true - #'extent:' #(#Point 100 22) - ) - ) - ) - #'horizontalLayout:' #center - #'verticalLayout:' #center - #'horizontalSpace:' 2 - #'verticalSpace:' 1 + #(#UISubSpecification + #name: 'UISubSpecification1' + #layout: #(#LayoutFrame 0 0.0 -30 1 0 1.0 -6 1.0) + #majorKey: #ToolApplicationModel + #minorKey: #windowSpecForCommitWithoutChannels ) ) ) @@ -666,234 +538,249 @@ #( #(#MenuItem - #'label:' 'About' - #'activeHelpKey:' #about - #'labelImage:' #(#ResourceRetriever nil #menuIcon) - #'submenuChannel:' #menuAbout + #label: 'About' + #activeHelpKey: #about + #labelImage: #(#ResourceRetriever nil #menuIcon) + #submenuChannel: #menuAbout ) #(#MenuItem - #'label:' 'File' - #'translateLabel:' true - #'activeHelpKey:' #file - #'submenu:' + #label: 'File' + #translateLabel: true + #activeHelpKey: #file + #submenu: #(#Menu #( #(#MenuItem - #'label:' 'New...' - #'value:' #newImage - #'activeHelpKey:' #fileNewImage - ) - #(#MenuItem - #'label:' '-' + #label: 'New...' + #value: #newImage + #activeHelpKey: #fileNewImage ) #(#MenuItem - #'label:' 'Load From File...' - #'value:' #loadFromFile - #'activeHelpKey:' #fileLoadFromFile + #label: '-' ) #(#MenuItem - #'label:' 'Load From Class...' - #'value:' #loadFromClass - #'activeHelpKey:' #fileLoadFromClass + #label: 'Load...' + #value: #loadFromClass + #activeHelpKey: #fileLoadFromClass ) #(#MenuItem - #'label:' '-' + #label: 'Load From File...' + #value: #loadFromFile + #activeHelpKey: #fileLoadFromFile ) #(#MenuItem - #'label:' 'Save' - #'value:' #saveImageFile - #'activeHelpKey:' #fileSaveFile - #'enabled:' #imageIsLoaded + #label: '-' ) #(#MenuItem - #'label:' 'Save As...' - #'value:' #saveImageFileAs - #'activeHelpKey:' #fileSaveAs - #'enabled:' #imageIsLoaded + #label: 'Save' + #value: #saveMethod + #activeHelpKey: #fileSaveMethod + #enabled: #imageIsLoaded ) #(#MenuItem - #'label:' 'Save Mask As...' - #'value:' #saveImageMaskFileAs - #'activeHelpKey:' #fileSaveMaskAs - #'enabled:' #imageIsLoaded + #label: 'Save As...' + #value: #saveMethodAs + #activeHelpKey: #fileSaveMethodAs + #enabled: #imageIsLoaded + ) + #(#MenuItem + #label: '-' ) #(#MenuItem - #'label:' '-' + #label: 'Save To File...' + #value: #saveImageFileAs + #activeHelpKey: #fileSaveAs + #enabled: #imageIsLoaded ) #(#MenuItem - #'label:' 'Save Method' - #'value:' #saveMethod - #'activeHelpKey:' #fileSaveMethod - #'enabled:' #imageIsLoaded + #label: 'Save Mask To File...' + #value: #saveImageMaskFileAs + #activeHelpKey: #fileSaveMaskAs + #enabled: #imageIsLoaded ) #(#MenuItem - #'label:' 'Save Method As...' - #'value:' #saveMethodAs - #'activeHelpKey:' #fileSaveMethodAs - #'enabled:' #imageIsLoaded - ) - #(#MenuItem - #'label:' '-' + #label: '-' ) #(#MenuItem - #'label:' 'Print' - #'value:' #print - #'activeHelpKey:' #filePrint - #'enabled:' #imageIsLoaded + #label: 'Print' + #value: #print + #activeHelpKey: #filePrint + #enabled: #imageIsLoaded ) #(#MenuItem - #'label:' '-' + #label: '-' ) #(#MenuItem - #'label:' 'Browse Image Class' - #'value:' #browseClass - #'activeHelpKey:' #fileBrowseClass - #'enabled:' #imageIsLoaded + #label: 'Browse Class' + #value: #browseClass + #activeHelpKey: #fileBrowseClass + #enabled: #imageIsLoaded ) #(#MenuItem - #'label:' '-' + #label: '-' ) #(#MenuItem - #'label:' 'Exit' - #'translateLabel:' true - #'value:' #closeRequest - #'activeHelpKey:' #fileExit + #label: 'Exit' + #translateLabel: true + #value: #closeRequest + #activeHelpKey: #fileExit ) ) nil nil ) ) #(#MenuItem - #'label:' 'Edit' - #'activeHelpKey:' #edit - #'enabled:' #imageIsLoaded - #'submenu:' + #label: 'Edit' + #activeHelpKey: #edit + #enabled: #imageIsLoaded + #submenu: #(#Menu #( #(#MenuItem - #'label:' 'Undo' - #'value:' #undo - #'activeHelpKey:' #editUndo - #'enabled:' #valueOfCanUndo + #label: 'Undo' + #value: #undo + #activeHelpKey: #editUndo + #enabled: #valueOfCanUndo ) #(#MenuItem - #'label:' '-' + #label: '-' ) #(#MenuItem - #'label:' 'Flip - Vertical' - #'value:' #flipVertical - #'activeHelpKey:' #editFlipVertical + #label: 'Flip - Vertical' + #value: #flipVertical + #activeHelpKey: #editFlipVertical ) #(#MenuItem - #'label:' 'Flip - Horizontal' - #'value:' #flipHorizontal - #'activeHelpKey:' #editFlipHorizontal + #label: 'Flip - Horizontal' + #value: #flipHorizontal + #activeHelpKey: #editFlipHorizontal ) #(#MenuItem - #'label:' '-' + #label: '-' ) #(#MenuItem - #'label:' 'Resize...' - #'value:' #resizeImage - #'activeHelpKey:' #editResize + #label: 'Resize...' + #value: #resizeImage + #activeHelpKey: #editResize ) #(#MenuItem - #'label:' 'Magnify...' - #'value:' #magnifyImage - #'activeHelpKey:' #editMagnifyImage + #label: 'Magnify...' + #value: #magnifyImage + #activeHelpKey: #editMagnifyImage ) #(#MenuItem - #'label:' 'Rotate...' - #'value:' #rotateImage - #'activeHelpKey:' #editRotate + #label: 'Rotate...' + #value: #rotateImage + #activeHelpKey: #editRotate ) #(#MenuItem - #'label:' '-' + #label: '-' ) #(#MenuItem - #'label:' 'Negative' - #'value:' #negativeImage - #'activeHelpKey:' #editNegate + #label: 'Negative' + #value: #negativeImage + #activeHelpKey: #editNegate ) ) nil nil ) ) #(#MenuItem - #'label:' 'Color Map' - #'activeHelpKey:' #colorMap - #'enabled:' #imageIsLoaded - #'submenu:' + #label: 'Color Map' + #activeHelpKey: #colorMap + #enabled: #imageIsLoaded + #submenu: #(#Menu #( #(#MenuItem - #'label:' '8-Plane' - #'activeHelpKey:' #colorMap - #'argument:' '8-plane' - #'indication:' #'colorMapMode:value:' + #label: '8-Plane' + #activeHelpKey: #colorMap + #argument: '8-plane' + #indication: #colorMapMode:value: + ) + #(#MenuItem + #label: '4-Plane' + #activeHelpKey: #colorMap + #argument: '4-plane' + #indication: #colorMapMode:value: ) #(#MenuItem - #'label:' '4-Plane' - #'activeHelpKey:' #colorMap - #'argument:' '4-plane' - #'indication:' #'colorMapMode:value:' + #label: '2-Plane' + #activeHelpKey: #colorMap + #argument: '2-plane' + #indication: #colorMapMode:value: ) #(#MenuItem - #'label:' '2-Plane' - #'activeHelpKey:' #colorMap - #'argument:' '2-plane' - #'indication:' #'colorMapMode:value:' + #label: '1-Plane' + #activeHelpKey: #colorMap + #argument: '1-plane' + #indication: #colorMapMode:value: ) #(#MenuItem - #'label:' '1-Plane' - #'activeHelpKey:' #colorMap - #'argument:' '1-plane' - #'indication:' #'colorMapMode:value:' + #label: '-' + ) + #(#MenuItem + #label: '8-Plane + Mask' + #activeHelpKey: #colorMap + #argument: '8-plane + mask' + #indication: #colorMapMode:value: ) #(#MenuItem - #'label:' '-' + #label: '4-Plane + Mask' + #activeHelpKey: #colorMap + #argument: '4-plane + mask' + #indication: #colorMapMode:value: ) #(#MenuItem - #'label:' '8-Plane + Mask' - #'activeHelpKey:' #colorMap - #'argument:' '8-plane + mask' - #'indication:' #'colorMapMode:value:' + #label: '2-Plane + Mask' + #activeHelpKey: #colorMap + #argument: '2-plane + mask' + #indication: #colorMapMode:value: + ) + #(#MenuItem + #label: '1-Plane + Mask' + #activeHelpKey: #colorMap + #argument: '1-plane + mask' + #indication: #colorMapMode:value: ) #(#MenuItem - #'label:' '4-Plane + Mask' - #'activeHelpKey:' #colorMap - #'argument:' '4-plane + mask' - #'indication:' #'colorMapMode:value:' + #label: '-' ) #(#MenuItem - #'label:' '2-Plane + Mask' - #'activeHelpKey:' #colorMap - #'argument:' '2-plane + mask' - #'indication:' #'colorMapMode:value:' + #label: 'Left Mouse Button' + #nameKey: #leftMouseKeyButton + #value: #'Left Mouse Button' + #activeHelpKey: #mouseKeyColorMode + #argument: '1' + #labelImage: #(#ResourceRetriever nil #leftMouseKeyIcon 'Left Mouse Button') + #indication: #mouseKeyColorMode:value: ) #(#MenuItem - #'label:' '1-Plane + Mask' - #'activeHelpKey:' #colorMap - #'argument:' '1-plane + mask' - #'indication:' #'colorMapMode:value:' + #label: 'Right Mouse Button' + #nameKey: #rightMouseKeyButton + #value: #'Right Mouse Button' + #activeHelpKey: #mouseKeyColorMode + #argument: '2' + #labelImage: #(#ResourceRetriever nil #rightMouseKeyIcon 'Right Mouse Button') + #indication: #mouseKeyColorMode:value: ) ) nil nil ) ) #(#MenuItem - #'label:' 'History' - #'activeHelpKey:' #history - #'submenuChannel:' #menuHistory + #label: 'History' + #activeHelpKey: #history + #submenuChannel: #menuHistory ) #(#MenuItem - #'label:' 'Help' - #'startGroup:' #right - #'activeHelpKey:' #help - #'submenuChannel:' #menuHelp + #label: 'Help' + #startGroup: #right + #activeHelpKey: #help + #submenuChannel: #menuHelp ) ) nil nil @@ -956,89 +843,83 @@ #( #(#MenuItem - #'label:' 'newImage' - #'isButton:' true - #'value:' #newImage - #'activeHelpKey:' #fileNewImage - #'labelImage:' #(#ResourceRetriever nil #newImageIcon) + #label: 'newImage' + #isButton: true + #value: #newImage + #activeHelpKey: #fileNewImage + #labelImage: #(#ResourceRetriever nil #newIcon) ) #(#MenuItem - #'label:' 'loadFromClass' - #'isButton:' true - #'value:' #loadFromClass - #'activeHelpKey:' #fileLoadFromClass - #'labelImage:' #(#ResourceRetriever nil #loadFromClassIcon) + #label: 'loadFromClass' + #isButton: true + #value: #loadFromClass + #activeHelpKey: #fileLoadFromClass + #labelImage: #(#ResourceRetriever nil #loadIcon) + ) + #(#MenuItem + #label: '' ) #(#MenuItem - #'label:' 'loadFromFile' - #'isButton:' true - #'value:' #loadFromFile - #'activeHelpKey:' #fileLoadFromFile - #'labelImage:' #(#ResourceRetriever nil #loadFromFileIcon) - ) - #(#MenuItem - #'label:' '' + #label: 'saveMethod' + #isButton: true + #value: #saveMethod + #activeHelpKey: #fileSaveMethod + #enabled: #imageIsLoaded + #labelImage: #(#ResourceRetriever nil #saveIcon) ) #(#MenuItem - #'label:' 'saveMethod' - #'isButton:' true - #'value:' #saveMethod - #'activeHelpKey:' #fileSaveMethod - #'enabled:' #imageIsLoaded - #'labelImage:' #(#ResourceRetriever nil #saveAsMethodIcon) + #label: '' ) #(#MenuItem - #'label:' 'saveFile' - #'isButton:' true - #'value:' #saveImageFile - #'activeHelpKey:' #fileSaveFile - #'enabled:' #imageIsLoaded - #'labelImage:' #(#ResourceRetriever nil #saveIcon) + #label: '' + ) + #(#MenuItem + #label: '' + ) + #(#MenuItem + #label: '' ) #(#MenuItem - #'label:' '' + #label: 'Point' + #activeHelpKey: #drawModePoint + #enabled: #imageIsLoaded + #argument: 'point' + #indication: #editMode:value: ) #(#MenuItem - #'label:' 'Point' - #'activeHelpKey:' #drawModePoint - #'enabled:' #imageIsLoaded - #'argument:' 'point' - #'indication:' #'editMode:value:' - ) - #(#MenuItem - #'label:' 'Box' - #'activeHelpKey:' #drawModeBox - #'enabled:' #imageIsLoaded - #'argument:' 'box' - #'indication:' #'editMode:value:' + #label: 'Box' + #activeHelpKey: #drawModeBox + #enabled: #imageIsLoaded + #argument: 'box' + #indication: #editMode:value: ) #(#MenuItem - #'label:' 'Filled Box' - #'activeHelpKey:' #drawModeFilledBox - #'enabled:' #imageIsLoaded - #'argument:' 'filledBox' - #'indication:' #'editMode:value:' + #label: 'Filled Box' + #activeHelpKey: #drawModeFilledBox + #enabled: #imageIsLoaded + #argument: 'filledBox' + #indication: #editMode:value: ) #(#MenuItem - #'label:' 'Fill' - #'activeHelpKey:' #drawModeFill - #'enabled:' #imageIsLoaded - #'argument:' 'fill' - #'indication:' #'editMode:value:' + #label: 'Fill' + #activeHelpKey: #drawModeFill + #enabled: #imageIsLoaded + #argument: 'fill' + #indication: #editMode:value: ) #(#MenuItem - #'label:' 'Copy' - #'activeHelpKey:' #drawModeCopy - #'enabled:' #imageIsLoaded - #'argument:' 'copy' - #'indication:' #'editMode:value:' + #label: 'Copy' + #activeHelpKey: #drawModeCopy + #enabled: #imageIsLoaded + #argument: 'copy' + #indication: #editMode:value: ) #(#MenuItem - #'label:' 'Paste' - #'activeHelpKey:' #drawModePaste - #'enabled:' #imageIsLoaded - #'argument:' 'paste' - #'indication:' #'editMode:value:' + #label: 'Paste' + #activeHelpKey: #drawModePaste + #enabled: #imageIsLoaded + #argument: 'paste' + #indication: #editMode:value: ) ) nil nil @@ -1057,43 +938,7 @@ ^Icon constantNamed:#'ImageEditor leftMouseKeyIcon' - ifAbsentPut:[(Depth2Image new) width: 16; height: 16; photometric:(#palette); bitsPerSample:(#(2 )); samplesPerPixel:(1); bits:(ByteArray fromPackedString:'@@@@@@@@@@@@@@@@@JEE@@B!!QP@@(TT@@@@@@@AUUP@@UUT@@EUU@@AUUP@@UUT@@EUU@@@UU@@@@@@@@@@@@@@a'); colorMap:((OrderedCollection new add:(Color black); add:(Color white); add:(Color red:100.0 green:0.0 blue:0.0); add:(Color red:0.0 green:100.0 blue:0.0); yourself)); mask:((Depth1Image new) width: 16; height: 16; photometric:(#blackIs0); bitsPerSample:(#(1 )); samplesPerPixel:(1); bits:(ByteArray fromPackedString:'@@@@@@?0G? _>A?8G? _>A?8G? _>A?8G? O<@_ @@@b'); yourself); yourself]! - -loadFromClassIcon - "Generated by the Image Editor" - " - ImageEditor openOnClass:self andSelector:#loadFromClassIcon - " - - - - ^Icon - constantNamed:#'ImageEditor loadFromClassIcon' - ifAbsentPut:[(Depth4Image new) width: 22; height: 22; photometric:(#palette); bitsPerSample:(#(4 )); samplesPerPixel:(1); bits:(ByteArray fromPackedString:'DQDQDQDQDQDQDQDQ@@@@@@@@@ADQDQDO????????G!!DQDP????????<^8QDQC4QG]4)G51DQDQDOQD]7)J5=??8QDP=DQ7]JQ=_??!!DQC3L6Y#$61/?>DQDOL3Y&$91,??8QDP<3M&X9M,[??!!DQC2H%UR %-_?>DQDOH"UU (-[??8QDP<"IUT(I[W??!!DQC??????????>DQDOD_G?G?D_D_8QDP<_<_G1<_<_?!!DQC1?1DQDOG?G1<_<_<_8QDPDQG>;.;.;.;.;.8QDQDQDQDQDQDQDQDb'); colorMap:((OrderedCollection new add:(Color white); add:(Color black); add:(Color red:100.0 green:0.0 blue:0.0); add:(Color red:0.0 green:100.0 blue:0.0); add:(Color red:0.0 green:0.0 blue:100.0); add:(Color red:0.0 green:100.0 blue:100.0); add:(Color red:100.0 green:100.0 blue:0.0); add:(Color red:100.0 green:0.0 blue:100.0); add:(Color red:49.9962 green:0.0 blue:0.0); add:(Color red:0.0 green:49.9962 blue:0.0); add:(Color red:0.0 green:0.0 blue:49.9962); add:(Color red:0.0 green:49.9962 blue:49.9962); add:(Color red:49.9962 green:49.9962 blue:0.0); add:(Color red:49.9962 green:0.0 blue:49.9962); add:(Color grey:49.9962); add:(Color grey:66.9978); add:(Color black); yourself)); mask:((Depth1Image new) width: 22; height: 22; photometric:(#blackIs0); bitsPerSample:(#(1 )); samplesPerPixel:(1); bits:(ByteArray fromPackedString:'_?>@_??@_?? _??0_??8_??8_??8_??8_??8_??8_??8_??8_??8_??8_??8_??8_??8_??8_??8_??8_??8_??8'); yourself); yourself]! - -loadFromFileIcon - "Generated by the Image Editor" - " - ImageEditor openOnClass:self andSelector:#loadFromFileIcon - " - - - - ^Icon - constantNamed:#'ImageEditor loadFromFileIcon' - ifAbsentPut:[(Depth4Image new) width: 22; height: 22; photometric:(#palette); bitsPerSample:(#(4 )); samplesPerPixel:(1); bits:(ByteArray fromPackedString:'DQDQDQDQDQDQDQDQ@@@@@@@@@ADQDQDO????????G!!DQDP????????<^8QDQC4QG]4)G51DQDQDOQD]7)J5=??8QDP=DQ7]JQ=_??!!DQC3L6Y#$61/?>DQDOL3Y&$91,??8QDP<3M&X9M,[??!!DQC2H%UR %-_?>DQDOH"UU (-[??8QDP<"IUT(I[W??!!DQC??????????>DQDODQ<_<_?1D_8QDP<_?1?1??G??!!DQC1G?G?G?DQDOG?<_<_?1??8QDP<_?1?1D_DQ?!!DQC??????????>DQG>;.;.;.;.;.8QDQDQDQDQDQDQDQDb'); colorMap:((OrderedCollection new add:(Color white); add:(Color black); add:(Color red:100.0 green:0.0 blue:0.0); add:(Color red:0.0 green:100.0 blue:0.0); add:(Color red:0.0 green:0.0 blue:100.0); add:(Color red:0.0 green:100.0 blue:100.0); add:(Color red:100.0 green:100.0 blue:0.0); add:(Color red:100.0 green:0.0 blue:100.0); add:(Color red:49.9962 green:0.0 blue:0.0); add:(Color red:0.0 green:49.9962 blue:0.0); add:(Color red:0.0 green:0.0 blue:49.9962); add:(Color red:0.0 green:49.9962 blue:49.9962); add:(Color red:49.9962 green:49.9962 blue:0.0); add:(Color red:49.9962 green:0.0 blue:49.9962); add:(Color grey:49.9962); add:(Color grey:66.9978); add:(Color black); yourself)); mask:((Depth1Image new) width: 22; height: 22; photometric:(#blackIs0); bitsPerSample:(#(1 )); samplesPerPixel:(1); bits:(ByteArray fromPackedString:'_?>@_??@_?? _??0_??8_??8_??8_??8_??8_??8_??8_??8_??8_??8_??8_??8_??8_??8_??8_??8_??8_??8'); yourself); yourself]! - -newImageIcon - "Generated by the Image Editor" - " - ImageEditor openOnClass:self andSelector:#newImageIcon - " - - - - ^Icon - constantNamed:#'ImageEditor newImageIcon' - ifAbsentPut:[(Depth4Image new) width: 22; height: 22; photometric:(#palette); bitsPerSample:(#(4 )); samplesPerPixel:(1); bits:(ByteArray fromPackedString:'DQDQDQDQDQDQDQDQ@@@@@@@@@ADQDQDO????????G!!DQDP????????<^8QDQC4QG]4)G51DQDQDOQD]7)J5=??8QDP=DQ7]JQ=_??!!DQC3L6Y#$61/?>DQDOL3Y&$91,??8QDP<3M&X9M,[??!!DQC2H%UR %-_?>DQDOH"UU (-[??8QDP<"IUT(I[W??!!DQC??????????>DQDOG?G1D_G1<_8QDPDQDOG1G1??G1<_8QDP<_<_DQ?1<_?!!DQC??????????>DQG>;.;.;.;.;.8QDQDQDQDQDQDQDQDb'); colorMap:((OrderedCollection new add:(Color white); add:(Color black); add:(Color red:100.0 green:0.0 blue:0.0); add:(Color red:0.0 green:100.0 blue:0.0); add:(Color red:0.0 green:0.0 blue:100.0); add:(Color red:0.0 green:100.0 blue:100.0); add:(Color red:100.0 green:100.0 blue:0.0); add:(Color red:100.0 green:0.0 blue:100.0); add:(Color red:49.9962 green:0.0 blue:0.0); add:(Color red:0.0 green:49.9962 blue:0.0); add:(Color red:0.0 green:0.0 blue:49.9962); add:(Color red:0.0 green:49.9962 blue:49.9962); add:(Color red:49.9962 green:49.9962 blue:0.0); add:(Color red:49.9962 green:0.0 blue:49.9962); add:(Color grey:49.9962); add:(Color grey:66.9978); add:(Color black); yourself)); mask:((Depth1Image new) width: 22; height: 22; photometric:(#blackIs0); bitsPerSample:(#(1 )); samplesPerPixel:(1); bits:(ByteArray fromPackedString:'_?>@_??@_?? _??0_??8_??8_??8_??8_??8_??8_??8_??8_??8_??8_??8_??8_??8_??8_??8_??8_??8_??8'); yourself); yourself]! + ifAbsentPut:[(Depth2Image new) width: 16; height: 16; photometric:(#palette); bitsPerSample:(#(2 )); samplesPerPixel:(1); bits:(ByteArray fromPackedString:'@@@@@@@@@@@@@@@@@JEE@@B!!QP@@(TT@@@@@@@AUUP@@UUT@@EUU@@AUUP@@UUT@@EUU@@@UU@@@@@@@@@@@@@@a') ; colorMapFromArray:#[0 0 0 255 255 255 255 0 0 0 255 0]; mask:((Depth1Image new) width: 16; height: 16; photometric:(#blackIs0); bitsPerSample:(#(1 )); samplesPerPixel:(1); bits:(ByteArray fromPackedString:'@@@@@@?0G? _>A?8G? _>A?8G? _>A?8G? O<@_ @@@b') ; yourself); yourself]! rightMouseKeyIcon "Generated by the Image Editor" @@ -1105,19 +950,7 @@ ^Icon constantNamed:#'ImageEditor rightMouseKeyIcon' - ifAbsentPut:[(Depth2Image new) width: 16; height: 16; photometric:(#palette); bitsPerSample:(#(2 )); samplesPerPixel:(1); bits:(ByteArray fromPackedString:'@@@@@@@@@@@@@@@@@EJJ@@AR" @@T((@@@@@@@AUUP@@UUT@@EUU@@AUUP@@UUT@@EUU@@@UU@@@@@@@@@@@@@@a'); colorMap:((OrderedCollection new add:(Color black); add:(Color white); add:(Color red:100.0 green:0.0 blue:0.0); add:(Color red:0.0 green:100.0 blue:0.0); yourself)); mask:((Depth1Image new) width: 16; height: 16; photometric:(#blackIs0); bitsPerSample:(#(1 )); samplesPerPixel:(1); bits:(ByteArray fromPackedString:'@@@@@@?0G? _>A?8G? _>A?8G? _>A?8G? O<@_ @@@b'); yourself); yourself]! - -saveAsMethodIcon - "Generated by the Image Editor" - " - ImageEditor openOnClass:self andSelector:#saveAsMethodIcon - " - - - - ^Icon - constantNamed:#'ImageEditor saveAsMethodIcon' - ifAbsentPut:[(Depth4Image new) width: 22; height: 22; photometric:(#palette); bitsPerSample:(#(4 )); samplesPerPixel:(1); bits:(ByteArray fromPackedString:'DQDQDQDQDQDQDQDQDQDQDQDQDQDQDQDQDQDQDQDQDQDQDQDQDQDQDQDQDQDQDQDQDQDQDQDQDQDQDQDQDQDQDQDQDQDQDQDQDQDQDQDQDQDQDQDQDQDQDQDQDQDQDQDQDQDQDQD^8QDQDQDQDQDQDQDQDQDQDQDQDQDQDQDQDQDQDQDQDQDQDQDQDQDQDQDQDQDTQG]4)G5>G!!DQDQQD]7)J5=G!!DQDQEDQ7]JQ=_!!8QDQDSL6Y#$61 A?8G? _>A?8G? _>A?8G? O<@_ @@@b') ; yourself); yourself]! ! !ImageEditor methodsFor:'accessing'! @@ -1138,11 +971,6 @@ ^builder componentAt: #coordLabel ! -fileNameInputField - - ^builder componentAt: #fileNameInputField -! - imageEditView ^(builder componentAt: #imageEditView) subViews first @@ -1151,32 +979,6 @@ imagePreView ^(builder componentAt: #imagePreView) subViews first -! - -resourceClassInputField - - ^builder componentAt: #resourceClassInputField -! - -resourceSelectorInputField - - ^builder componentAt: #resourceSelectorInputField -! ! - -!ImageEditor methodsFor:'active help'! - -defaultInfoLabel - - |usedColors| - self image isNil ifTrue: [^'No image loaded.']. - self image colorMap isNil ifTrue: [usedColors := '?'] ifFalse: [usedColors := self image usedColors size]. - ^self image width printString, 'x', - self image height printString, 'x', - (2 raisedTo: self image depth) printString, - (self image mask notNil ifTrue: [' (mask + '] ifFalse: ['(']), - usedColors printString, - ' used colors)' - ! ! !ImageEditor methodsFor:'aspects'! @@ -1218,16 +1020,6 @@ ^ holder ! -valueOfFileName - - |holder| - (holder := builder bindingAt:#valueOfFileName) isNil ifTrue:[ - builder aspectAt:#valueOfFileName put:(holder := '' asValue). - holder addDependent: self - ]. - ^ holder -! - valueOfMagnification |holder| @@ -1236,26 +1028,6 @@ holder := AspectAdaptor new subject:self; forAspect:#magnification) ]. ^ holder -! - -valueOfResourceClass - - |holder| - (holder := builder bindingAt:#valueOfResourceClass) isNil ifTrue:[ - builder aspectAt:#valueOfResourceClass put: (holder := '' asValue). - holder addDependent: self - ]. - ^ holder -! - -valueOfResourceSelector - - |holder| - (holder := builder bindingAt:#valueOfResourceSelector) isNil ifTrue:[ - builder aspectAt:#valueOfResourceSelector put: (holder := '' asValue). - holder addDependent: self - ]. - ^ holder ! ! !ImageEditor methodsFor:'change & update'! @@ -1292,6 +1064,18 @@ ! ! +!ImageEditor methodsFor:'help'! + +defaultInfoLabel + + (self imageEditView resourceClass isSymbol and: [(Smalltalk at: self imageEditView resourceClass) isClass]) + ifTrue: + [ + ^self imageEditView resourceClass, ' >> ', self imageEditView resourceSelector + ]. + ^'No class defined' +! ! + !ImageEditor methodsFor:'menu modes'! colorMapMode: aMode @@ -1429,20 +1213,6 @@ ! -updateInputFields - - self valueOfResourceSelector removeDependent: self. - self valueOfResourceSelector value: self imageEditView resourceSelector. - self valueOfResourceSelector addDependent: self. - - self valueOfResourceClass removeDependent: self. - self imageEditView resourceClass notNil - ifTrue: [self valueOfResourceClass value: self imageEditView resourceClass] - ifFalse: [self valueOfResourceClass value: '']. - self valueOfResourceClass addDependent: self. - -! - updateInputFieldsAndLabelsAndHistory self imageIsLoaded value: self image notNil. @@ -1451,12 +1221,6 @@ self updateInfoLabel. - self valueOfFileName removeDependent: self. - self valueOfFileName value: self image fileName. - self valueOfFileName addDependent: self. - - self updateInputFields. - self imageEditView resourceMessage asCollectionOfWords size = 2 ifTrue: [self addToHistory: self imageEditView resourceMessage -> #loadFromMessage:]. @@ -1516,17 +1280,7 @@ super open. - self imageEditView masterApplication: self. - - self resourceClassInputField entryCompletionBlock: - [:value| - |what| - what := Smalltalk classnameCompletion: value withoutSpaces. - self resourceClassInputField contents:what first. - (what at:2) size ~~ 1 ifTrue:[ - Display beep - ] - ] + self imageEditView masterApplication: self ! postOpenWith:aBuilder @@ -1769,7 +1523,7 @@ saveImageFile - self imageEditView saveImageFileAs: self fileNameInputField contents + self imageEditView save ! saveImageFileAs @@ -1785,10 +1539,7 @@ saveMethod - (self imageEditView - resourceSelector: self resourceSelectorInputField contents; - resourceClass: self resourceClassInputField contents; - saveMethod) notNil + self imageEditView saveMethod notNil ifTrue: [ self updateInputFieldsAndLabelsAndHistory