From 1a98f689b54479cefab61765a3c9a8a3778f005e Mon Sep 17 00:00:00 2001 From: Laszlo Balazs-Csiki Date: Mon, 11 Apr 2022 10:35:53 +0200 Subject: [PATCH] bugfixes --- .../java/pixelitor/filters/ChannelInvert.java | 13 ++++++++----- .../pixelitor/filters/ChannelToTransparency.java | 15 ++++++++------- src/main/java/pixelitor/filters/ShapeFilter.java | 9 +++++---- .../java/pixelitor/filters/gui/FilterWithGUI.java | 3 ++- .../pixelitor/layers/MaskFromColorRangePanel.java | 2 +- src/main/java/pixelitor/menus/MenuBar.java | 4 ++-- src/main/java/pixelitor/tools/Tool.java | 3 +++ .../pixelitor/tools/gradient/GradientTool.java | 6 ------ src/main/java/pixelitor/tools/pen/SubPath.java | 3 ++- .../java/pixelitor/tools/shapes/ShapesTool.java | 7 ------- .../java/pixelitor/guitest/AssertJSwingTest.java | 2 +- 11 files changed, 32 insertions(+), 35 deletions(-) diff --git a/src/main/java/pixelitor/filters/ChannelInvert.java b/src/main/java/pixelitor/filters/ChannelInvert.java index ca144a4f2..826bda24e 100644 --- a/src/main/java/pixelitor/filters/ChannelInvert.java +++ b/src/main/java/pixelitor/filters/ChannelInvert.java @@ -1,5 +1,5 @@ /* - * Copyright 2021 Laszlo Balazs-Csiki and Contributors + * Copyright 2022 Laszlo Balazs-Csiki and Contributors * * This file is part of Pixelitor. Pixelitor is free software: you * can redistribute it and/or modify it under the terms of the GNU @@ -19,7 +19,6 @@ import pixelitor.filters.gui.IntChoiceParam; import pixelitor.filters.gui.IntChoiceParam.Item; -import pixelitor.gui.GUIText; import pixelitor.utils.ImageUtils; import java.awt.Color; @@ -54,9 +53,13 @@ public class ChannelInvert extends ParametrizedFilter { private final Item[] invertChoices = { new Item("Nothing", NOTHING), - new Item(GUIText.HUE, HUE_ONLY), - new Item(GUIText.SATURATION, SATURATION_ONLY), - new Item(GUIText.BRIGHTNESS, BRI_ONLY), +// new Item(GUIText.HUE, HUE_ONLY), +// new Item(GUIText.SATURATION, SATURATION_ONLY), +// new Item(GUIText.BRIGHTNESS, BRI_ONLY), + + new Item("Hue", HUE_ONLY), + new Item("Saturation", SATURATION_ONLY), + new Item("Brightness", BRI_ONLY), new Item("Hue and Saturation", HUE_SAT), new Item("Hue and Brightness", HUE_BRI), diff --git a/src/main/java/pixelitor/filters/ChannelToTransparency.java b/src/main/java/pixelitor/filters/ChannelToTransparency.java index 2ddb6dc16..42a449885 100644 --- a/src/main/java/pixelitor/filters/ChannelToTransparency.java +++ b/src/main/java/pixelitor/filters/ChannelToTransparency.java @@ -22,12 +22,9 @@ import pixelitor.filters.gui.IntChoiceParam; import pixelitor.filters.gui.IntChoiceParam.Item; import pixelitor.filters.lookup.LuminanceLookup; -import pixelitor.gui.GUIText; import java.awt.image.BufferedImage; -import static pixelitor.utils.Texts.i18n; - /** * Makes pixels transparent proportionally to a channel value */ @@ -40,10 +37,14 @@ public class ChannelToTransparency extends ParametrizedFilter { private static final int BLUE = 4; private final IntChoiceParam channel = new IntChoiceParam("Channel", new Item[]{ - new Item(GUIText.BRIGHTNESS, LUMINOSITY), - new Item(i18n("red"), RED), - new Item(i18n("green"), GREEN), - new Item(i18n("blue"), BLUE) +// new Item(GUIText.BRIGHTNESS, LUMINOSITY), +// new Item(i18n("red"), RED), +// new Item(i18n("green"), GREEN), +// new Item(i18n("blue"), BLUE) + new Item("Brightness", LUMINOSITY), + new Item("Red", RED), + new Item("Green", GREEN), + new Item("Blue", BLUE) }); private final BooleanParam invertParam = new BooleanParam("Invert", false); private final BooleanParam keepParam = new BooleanParam("Keep Existing Transparency", true); diff --git a/src/main/java/pixelitor/filters/ShapeFilter.java b/src/main/java/pixelitor/filters/ShapeFilter.java index 662044b79..6dd2d2a05 100644 --- a/src/main/java/pixelitor/filters/ShapeFilter.java +++ b/src/main/java/pixelitor/filters/ShapeFilter.java @@ -1,5 +1,5 @@ /* - * Copyright 2021 Laszlo Balazs-Csiki and Contributors + * Copyright 2022 Laszlo Balazs-Csiki and Contributors * * This file is part of Pixelitor. Pixelitor is free software: you * can redistribute it and/or modify it under the terms of the GNU @@ -24,7 +24,6 @@ import pixelitor.filters.gui.*; import pixelitor.filters.gui.IntChoiceParam.Item; import pixelitor.filters.painters.AreaEffects; -import pixelitor.gui.GUIText; import pixelitor.io.IO; import pixelitor.utils.ImageUtils; @@ -64,14 +63,16 @@ public abstract class ShapeFilter extends ParametrizedFilter { new Item("Black", BG_BLACK), new Item("Original Image", BG_ORIGINAL), new Item("Transparent", BG_TRANSPARENT), - new Item(GUIText.BG_COLOR, BG_TOOL), +// new Item(GUIText.BG_COLOR, BG_TOOL), + new Item("Background Color", BG_TOOL), }, IGNORE_RANDOMIZE); private final IntChoiceParam foreground = new IntChoiceParam("Foreground", new Item[]{ new Item("White", FG_WHITE), new Item("Black", FG_BLACK), new Item("Radial Gradient", FG_GRADIENT), - new Item(GUIText.FG_COLOR, FG_TOOL), +// new Item(GUIText.FG_COLOR, FG_TOOL), + new Item("Foreground Color", FG_TOOL), new Item("Transparent", FG_TRANSPARENT), }, IGNORE_RANDOMIZE); diff --git a/src/main/java/pixelitor/filters/gui/FilterWithGUI.java b/src/main/java/pixelitor/filters/gui/FilterWithGUI.java index eb5978c17..6ff8fc718 100644 --- a/src/main/java/pixelitor/filters/gui/FilterWithGUI.java +++ b/src/main/java/pixelitor/filters/gui/FilterWithGUI.java @@ -22,6 +22,7 @@ import pixelitor.gui.utils.DialogBuilder; import pixelitor.layers.Drawable; import pixelitor.menus.view.ZoomMenu; +import pixelitor.tools.Tools; import javax.swing.*; import java.io.Serial; @@ -85,7 +86,7 @@ public String getHelpURL() { public boolean startOn(Drawable dr, boolean reset) { dr.startPreviewing(); -// Tools.editingTargetChanged(dr.getLayer()); + Tools.forceFinish(); FilterGUI gui = createGUI(dr, reset); diff --git a/src/main/java/pixelitor/layers/MaskFromColorRangePanel.java b/src/main/java/pixelitor/layers/MaskFromColorRangePanel.java index 5f8ed4e9d..374fbb0c9 100644 --- a/src/main/java/pixelitor/layers/MaskFromColorRangePanel.java +++ b/src/main/java/pixelitor/layers/MaskFromColorRangePanel.java @@ -45,7 +45,7 @@ * The GUI for "Mask from Color Range" */ public class MaskFromColorRangePanel extends JPanel { - private static final String NAME = "Mask from Color Range"; + public static final String NAME = "Mask from Color Range"; private static final int DEFAULT_THUMB_SIZE = 512; private static final String HELP_TEXT = "Select a color by clicking or dragging on the image"; diff --git a/src/main/java/pixelitor/menus/MenuBar.java b/src/main/java/pixelitor/menus/MenuBar.java index 735c4c149..71e8ca238 100644 --- a/src/main/java/pixelitor/menus/MenuBar.java +++ b/src/main/java/pixelitor/menus/MenuBar.java @@ -472,7 +472,7 @@ public void onActiveLayer(Layer layer) { } }); - sub.add(new OpenViewEnabledAction("Add/Replace from Color Range...") { + sub.add(new OpenViewEnabledAction(MaskFromColorRangePanel.NAME + "...") { @Override protected void onClick() { MaskFromColorRangePanel.showInDialog(); @@ -499,7 +499,7 @@ public void onActiveLayer(Layer layer) { ((ImageLayer) layer).applyLayerMask(true); // not necessary, as the result looks the same, but still - // useful because eventual problems would be spotted early + // useful because bugs would be spotted early layer.getComp().update(); } }); diff --git a/src/main/java/pixelitor/tools/Tool.java b/src/main/java/pixelitor/tools/Tool.java index 124b856ed..38d7e5566 100644 --- a/src/main/java/pixelitor/tools/Tool.java +++ b/src/main/java/pixelitor/tools/Tool.java @@ -257,6 +257,9 @@ public void editingTargetChanged(Layer layer) { // empty by default } + /** + * A modal dialog, such as a filter or the color selector, was shown. + */ public void firstModalDialogShown() { // empty by default } diff --git a/src/main/java/pixelitor/tools/gradient/GradientTool.java b/src/main/java/pixelitor/tools/gradient/GradientTool.java index b7f2af71f..b337196c0 100644 --- a/src/main/java/pixelitor/tools/gradient/GradientTool.java +++ b/src/main/java/pixelitor/tools/gradient/GradientTool.java @@ -597,12 +597,6 @@ public boolean allowOnlyDrawables() { return true; } - @Override - public void firstModalDialogShown() { - // hide the handles when a filter with dialog starts - hideHandles(false); - } - @Override public void saveStateTo(UserPreset preset) { preset.put("Type", getType().toString()); diff --git a/src/main/java/pixelitor/tools/pen/SubPath.java b/src/main/java/pixelitor/tools/pen/SubPath.java index 73804869e..13dafa4a6 100644 --- a/src/main/java/pixelitor/tools/pen/SubPath.java +++ b/src/main/java/pixelitor/tools/pen/SubPath.java @@ -18,6 +18,7 @@ package pixelitor.tools.pen; import com.bric.geom.ShapeUtils; +import pixelitor.AppContext; import pixelitor.Composition; import pixelitor.gui.View; import pixelitor.history.History; @@ -119,7 +120,7 @@ public void addPoint(double x, double y) { } public void setMovingPoint(MovingPoint p) { - if (finished && p != null) { + if (finished && p != null && AppContext.isDevelopment()) { throw new IllegalStateException(); } moving = p; diff --git a/src/main/java/pixelitor/tools/shapes/ShapesTool.java b/src/main/java/pixelitor/tools/shapes/ShapesTool.java index 396cfded1..30a3df20f 100644 --- a/src/main/java/pixelitor/tools/shapes/ShapesTool.java +++ b/src/main/java/pixelitor/tools/shapes/ShapesTool.java @@ -961,13 +961,6 @@ public String getStateInfo() { + ", state=" + state; } - @Override - public void firstModalDialogShown() { - // Rasterize when a filter with dialog starts. This comes too - // late to influence the filter's image for an ImagePositionParam - rasterizeBox(); - } - @Override public DebugNode createDebugNode(String key) { var node = super.createDebugNode(key); diff --git a/src/test/java/pixelitor/guitest/AssertJSwingTest.java b/src/test/java/pixelitor/guitest/AssertJSwingTest.java index 55a966a4f..c0f6f6e3c 100644 --- a/src/test/java/pixelitor/guitest/AssertJSwingTest.java +++ b/src/test/java/pixelitor/guitest/AssertJSwingTest.java @@ -581,7 +581,7 @@ private void testMaskFromColorRange() { } log(1, "mask from color range"); - runMenuCommand("Add/Replace from Color Range..."); + runMenuCommand("Mask from Color Range..."); var dialog = findDialogByTitle("Mask from Color Range");