# HG changeset patch # User Claus Gittinger # Date 1484932595 -3600 # Node ID c508738114fa745c0e09145087584e80edeee6c8 # Parent d2a64b772792149330c0fc54fb2ce3039cf66634 #UI_ENHANCEMENT by cg class: ImageEditor comment/format in: #imageEditView #openLoadingImageWith:modal: changed: #cropDialogSpec #helpSpec tooltips diff -r d2a64b772792 -r c508738114fa ImageEditor.st --- a/ImageEditor.st Fri Jan 20 17:00:03 2017 +0100 +++ b/ImageEditor.st Fri Jan 20 18:16:35 2017 +0100 @@ -62,7 +62,8 @@ !ImageEditor class methodsFor:'instance creation'! openLoadingImageWith:aBlock modal:modalBoolean - "opens an Image Editor on anImage" + "opens an Image Editor on anImage. + returns the editor (to access its attributes)" |editor| @@ -445,6 +446,18 @@ #fileSaveMethodAs 'Save the image as resource method in a class' +#gropBottom +'Cut off the specified number of pixels at the bottom' + +#gropLeft +'Cut off the specified number of pixels at the left' + +#gropRight +'Cut off the specified number of pixels at the right' + +#gropTop +'Cut off the specified number of pixels at the top' + #magnificationNumber 'Shows the current magnification' @@ -1587,161 +1600,185 @@ ^ - #(FullSpec - name: cropDialogSpec - window: - (WindowSpec - label: 'Crop Border(s)' - name: 'Crop Border(s)' - min: (Point 10 10) - bounds: (Rectangle 14 46 259 229) - ) - component: - (SpecCollection - collection: ( - (LabelSpec - label: 'Left:' - name: 'GropLeftLabel' - layout: (LayoutFrame 14 0 21 0 90 0 43 0) - translateLabel: true - adjust: right - ) - (InputFieldSpec - name: 'GropLeftEntryField' - layout: (LayoutFrame 95 0 21 0 132 0 43 0) - tabable: true - model: left - type: number - acceptChannel: acceptChannel - acceptOnPointerLeave: false - ) - (ActionButtonSpec - label: 'Now' - name: 'GropLeftNowButton' - layout: (LayoutFrame 148 0 21 0 221 0 43 0) - translateLabel: true - tabable: true - model: gropLeftNow - autoRepeat: true - ) - (LabelSpec - label: 'Right:' - name: 'GropRightLabel' - layout: (LayoutFrame 14 0 51 0 90 0 73 0) - translateLabel: true - adjust: right - ) - (InputFieldSpec - name: 'GropRightEntryField' - layout: (LayoutFrame 95 0 51 0 132 0 73 0) - tabable: true - model: right - type: number - acceptChannel: acceptChannel - acceptOnPointerLeave: false - ) - (ActionButtonSpec - label: 'Now' - name: 'GropRightButton' - layout: (LayoutFrame 148 0 51 0 221 0 73 0) - translateLabel: true - tabable: true - model: gropRightNow - autoRepeat: true - ) - (LabelSpec - label: 'Top:' - name: 'GropTopLabel' - layout: (LayoutFrame 14 0 81 0 90 0 103 0) - translateLabel: true - adjust: right - ) - (InputFieldSpec - name: 'GropTopEntryField' - layout: (LayoutFrame 95 0 81 0 132 0 103 0) - tabable: true - model: top - type: number - acceptChannel: acceptChannel - acceptOnPointerLeave: false - ) - (ActionButtonSpec - label: 'Now' - name: 'GropTopButton' - layout: (LayoutFrame 148 0 81 0 221 0 103 0) - translateLabel: true - tabable: true - model: gropTopNow - autoRepeat: true - ) - (LabelSpec - label: 'Bottom:' - name: 'GropBottomLabel' - layout: (LayoutFrame 14 0 111 0 90 0 133 0) - translateLabel: true - adjust: right - ) - (InputFieldSpec - name: 'GropBottomEntryField' - layout: (LayoutFrame 95 0 111 0 132 0 133 0) - tabable: true - model: bottom - type: number - acceptChannel: acceptChannel - acceptOnPointerLeave: false - ) - (ActionButtonSpec - label: 'Now' - name: 'GropBottomButton' - layout: (LayoutFrame 148 0 111 0 221 0 133 0) - translateLabel: true - tabable: true - model: gropBottomNow - autoRepeat: true - ) - (HorizontalPanelViewSpec - name: 'HorizontalPanel1' - layout: (LayoutFrame 0 0.0 -30 1 0 1.0 0 1) - horizontalLayout: fitSpace - verticalLayout: center - horizontalSpace: 3 - verticalSpace: 3 - reverseOrderIfOKAtLeft: true - component: - (SpecCollection - collection: ( - (ActionButtonSpec - label: 'Cancel' - name: 'Button1' - translateLabel: true - tabable: true - model: cancel - extent: (Point 77 22) - ) - (ActionButtonSpec - label: 'Apply' - name: 'Button3' - translateLabel: true - tabable: true - model: applyAction - extent: (Point 78 22) - ) - (ActionButtonSpec - label: 'OK' - name: 'Button2' - translateLabel: true - tabable: true - model: accept - extent: (Point 78 22) - ) + #(FullSpec + name: cropDialogSpec + window: + (WindowSpec + label: 'Crop Border(s)' + name: 'Crop Border(s)' + min: (Point 10 10) + bounds: (Rectangle 0 0 290 199) + ) + component: + (SpecCollection + collection: ( + (LabelSpec + label: 'Left:' + name: 'GropLeftLabel' + layout: (LayoutFrame 14 0 24 0 90 0 46 0) + activeHelpKey: gropLeft + translateLabel: true + adjust: right + ) + (InputFieldSpec + name: 'GropLeftEntryField' + layout: (LayoutFrame 95 0 24 0 132 0 46 0) + activeHelpKey: gropLeft + tabable: true + model: left + type: number + acceptChannel: acceptChannel + acceptOnPointerLeave: false + ) + (ActionButtonSpec + label: 'Now' + name: 'GropLeftNowButton' + layout: (LayoutFrame 148 0 21 0 221 0 50 0) + activeHelpKey: gropLeft + translateLabel: true + resizeForLabel: true + tabable: true + model: gropLeftNow + autoRepeat: true + usePreferredWidth: true + ) + (LabelSpec + label: 'Right:' + name: 'GropRightLabel' + layout: (LayoutFrame 14 0 55 0 90 0 77 0) + activeHelpKey: gropRight + translateLabel: true + adjust: right + ) + (InputFieldSpec + name: 'GropRightEntryField' + layout: (LayoutFrame 95 0 55 0 132 0 77 0) + activeHelpKey: gropRight + tabable: true + model: right + type: number + acceptChannel: acceptChannel + acceptOnPointerLeave: false + ) + (ActionButtonSpec + label: 'Now' + name: 'GropRightButton' + layout: (LayoutFrame 148 0 51 0 221 0 80 0) + activeHelpKey: gropRight + translateLabel: true + resizeForLabel: true + tabable: true + model: gropRightNow + autoRepeat: true + usePreferredWidth: true + ) + (LabelSpec + label: 'Top:' + name: 'GropTopLabel' + layout: (LayoutFrame 14 0 85 0 90 0 107 0) + activeHelpKey: gropTop + translateLabel: true + adjust: right + ) + (InputFieldSpec + name: 'GropTopEntryField' + layout: (LayoutFrame 95 0 85 0 132 0 107 0) + activeHelpKey: gropTop + tabable: true + model: top + type: number + acceptChannel: acceptChannel + acceptOnPointerLeave: false + ) + (ActionButtonSpec + label: 'Now' + name: 'GropTopButton' + layout: (LayoutFrame 148 0 81 0 221 0 110 0) + activeHelpKey: gropTop + translateLabel: true + resizeForLabel: true + tabable: true + model: gropTopNow + autoRepeat: true + usePreferredWidth: true + ) + (LabelSpec + label: 'Bottom:' + name: 'GropBottomLabel' + layout: (LayoutFrame 14 0 115 0 90 0 137 0) + activeHelpKey: gropBottom + translateLabel: true + adjust: right + ) + (InputFieldSpec + name: 'GropBottomEntryField' + layout: (LayoutFrame 95 0 115 0 132 0 137 0) + activeHelpKey: gropBottom + tabable: true + model: bottom + type: number + acceptChannel: acceptChannel + acceptOnPointerLeave: false + ) + (ActionButtonSpec + label: 'Now' + name: 'GropBottomButton' + layout: (LayoutFrame 148 0 111 0 221 0 140 0) + activeHelpKey: gropBottom + translateLabel: true + resizeForLabel: true + tabable: true + model: gropBottomNow + autoRepeat: true + usePreferredWidth: true + ) + (HorizontalPanelViewSpec + name: 'HorizontalPanel1' + layout: (LayoutFrame 0 0.0 -30 1 0 1.0 0 1) + horizontalLayout: fitSpace + verticalLayout: center + horizontalSpace: 3 + verticalSpace: 3 + reverseOrderIfOKAtLeft: true + component: + (SpecCollection + collection: ( + (ActionButtonSpec + label: 'Cancel' + name: 'Button1' + translateLabel: true + resizeForLabel: true + tabable: true + model: cancel + extent: (Point 91 22) ) - - ) - ) + (ActionButtonSpec + label: 'Apply' + name: 'Button3' + translateLabel: true + resizeForLabel: true + tabable: true + model: applyAction + extent: (Point 91 22) + ) + (ActionButtonSpec + label: 'OK' + name: 'Button2' + translateLabel: true + resizeForLabel: true + tabable: true + model: accept + extent: (Point 92 22) + ) + ) + + ) + keepSpaceForOSXResizeHandleH: true ) - - ) - ) + ) + + ) + ) ! dialogSpecForNewImage @@ -3934,7 +3971,7 @@ ! imageEditView - "returns the view of the image" + "returns the editor view of the image" imageEditView isNil ifTrue:[ imageEditView := (self componentAt: #imageEditView) scrolledView.