Skip to content

Commit

Permalink
Implement sorting in ToolBoxWidget and update tool priorities.
Browse files Browse the repository at this point in the history
  • Loading branch information
jpobst committed Jan 2, 2021
1 parent 79057c0 commit c785eee
Show file tree
Hide file tree
Showing 23 changed files with 30 additions and 28 deletions.
6 changes: 3 additions & 3 deletions Pinta.Core/Classes/BaseTool.cs
Original file line number Diff line number Diff line change
Expand Up @@ -293,12 +293,12 @@ public void SetCursor (Cursor? cursor)
}

#region Toolbar
private ToggleToolButton? tool_item;
private ToolBoxButton? tool_item;
private ToolBarDropDownButton? antialiasing_button;
private ToolBarDropDownButton? alphablending_button;
private SeparatorToolItem? separator;

public virtual ToggleToolButton ToolItem => tool_item ??= CreateToolButton ();
public virtual ToolBoxButton ToolItem => tool_item ??= CreateToolButton ();

private SeparatorToolItem Separator => separator ??= new SeparatorToolItem ();

Expand Down Expand Up @@ -328,7 +328,7 @@ private ToolBarDropDownButton AntialiasingDropDown {
}
}

private ToggleToolButton CreateToolButton () => new ToolBoxButton (this);
private ToolBoxButton CreateToolButton () => new ToolBoxButton (this);
#endregion

#region Event Invokers
Expand Down
10 changes: 6 additions & 4 deletions Pinta.Gui.Widgets/Widgets/ToolBoxWidget.cs
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
using System;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
Expand All @@ -22,11 +22,13 @@ public ToolBoxWidget ()
ShowAll ();
}

// TODO: This should handle sorting the items
public void AddItem (ToolButton item)
public void AddItem (ToolBoxButton item)
{
item.IsImportant = false;
Add (item);

var index = PintaCore.Tools.ToList ().IndexOf (item.Tool);

Insert (item.Tool.ToolItem, index);
}

public void RemoveItem (ToolButton item)
Expand Down
2 changes: 1 addition & 1 deletion Pinta.Tools/Tools/CloneStampTool.cs
Original file line number Diff line number Diff line change
Expand Up @@ -46,7 +46,7 @@ public CloneStampTool (IServiceManager services) : base (services)
public override string StatusBarText => Translations.GetString ("Ctrl-left click to set origin, left click to paint.");
public override bool CursorChangesOnZoom => true;
public override Key ShortcutKey { get { return Key.L; } }
public override int Priority => 33;
public override int Priority => 47;
protected override bool ShowAntialiasingButton => true;

public override Cursor DefaultCursor {
Expand Down
2 changes: 1 addition & 1 deletion Pinta.Tools/Tools/ColorPickerTool.cs
Original file line number Diff line number Diff line change
Expand Up @@ -50,7 +50,7 @@ public ColorPickerTool (IServiceManager services) : base (services)
public override string StatusBarText => Translations.GetString ("Left click to set primary color. Right click to set secondary color.");
public override bool CursorChangesOnZoom => true;
public override Gdk.Key ShortcutKey => Gdk.Key.K;
public override int Priority => 31;
public override int Priority => 33;
private int SampleSize => SampleSizeDropDown.SelectedItem.GetTagOrDefault (1);
private bool SampleLayerOnly => SampleTypeDropDown.SelectedItem.GetTagOrDefault (false);

Expand Down
2 changes: 1 addition & 1 deletion Pinta.Tools/Tools/EllipseSelectTool.cs
Original file line number Diff line number Diff line change
Expand Up @@ -40,7 +40,7 @@ public EllipseSelectTool (IServiceManager services) : base (services)
public override string Icon => Pinta.Resources.Icons.ToolSelectEllipse;
public override string StatusBarText => Translations.GetString ("Click and drag to draw an elliptical selection. Hold Shift to constrain to a circle.");
public override Gdk.Cursor DefaultCursor => new Gdk.Cursor (Gdk.Display.Default, Resources.GetIcon ("Cursor.EllipseSelect.png"), 9, 18);
public override int Priority => 13;
public override int Priority => 15;

protected override void DrawShape (Document document, Rectangle r, Layer l)
{
Expand Down
2 changes: 1 addition & 1 deletion Pinta.Tools/Tools/EllipseTool.cs
Original file line number Diff line number Diff line change
Expand Up @@ -39,7 +39,7 @@ public EllipseTool (IServiceManager services) : base (services)
public override string Name => Translations.GetString ("Ellipse");
public override string Icon => Pinta.Resources.Icons.ToolEllipse;
public override Gdk.Cursor DefaultCursor => new Gdk.Cursor (Gdk.Display.Default, Resources.GetIcon ("Cursor.Ellipse.png"), 9, 18);
public override int Priority => 45;
public override int Priority => 43;

public override string StatusBarText {
get {
Expand Down
2 changes: 1 addition & 1 deletion Pinta.Tools/Tools/FreeformShapeTool.cs
Original file line number Diff line number Diff line change
Expand Up @@ -52,7 +52,7 @@ public FreeformShapeTool (IServiceManager services) : base (services)
public override string StatusBarText => Translations.GetString ("Left click to draw with primary color, right click to draw with secondary color.");
public override Gdk.Cursor DefaultCursor => new Gdk.Cursor (Gdk.Display.Default, Resources.GetIcon ("Cursor.FreeformShape.png"), 9, 18);
public override Gdk.Key ShortcutKey => Gdk.Key.O;
public override int Priority => 47;
public override int Priority => 45;

protected override void OnBuildToolBar (Toolbar tb)
{
Expand Down
2 changes: 1 addition & 1 deletion Pinta.Tools/Tools/GradientTool.cs
Original file line number Diff line number Diff line change
Expand Up @@ -50,7 +50,7 @@ public GradientTool (IServiceManager services) : base (services)
public override string StatusBarText => Translations.GetString ("Click and drag to draw gradient from primary to secondary color. Right click to reverse.");
public override Gdk.Key ShortcutKey => Gdk.Key.G;
public override Gdk.Cursor DefaultCursor => new Gdk.Cursor (Gdk.Display.Default, Resources.GetIcon ("Cursor.Gradient.png"), 9, 18);
public override int Priority => 23;
public override int Priority => 31;
private GradientType SelectedGradientType => GradientDropDown.SelectedItem.GetTagOrDefault (GradientType.Linear);

protected override void OnBuildToolBar (Gtk.Toolbar tb)
Expand Down
2 changes: 1 addition & 1 deletion Pinta.Tools/Tools/LassoSelectTool.cs
Original file line number Diff line number Diff line change
Expand Up @@ -55,7 +55,7 @@ public LassoSelectTool (IServiceManager services) : base (services)
public override string StatusBarText => Translations.GetString ("Click and drag to draw the outline for a selection area.");
public override Gdk.Key ShortcutKey => Gdk.Key.S;
public override Gdk.Cursor DefaultCursor => new Gdk.Cursor (Gdk.Display.Default, Resources.GetIcon ("Cursor.LassoSelect.png"), 9, 18);
public override int Priority => 9;
public override int Priority => 17;

protected override void OnBuildToolBar (Toolbar tb)
{
Expand Down
2 changes: 1 addition & 1 deletion Pinta.Tools/Tools/LineCurveTool.cs
Original file line number Diff line number Diff line change
Expand Up @@ -39,7 +39,7 @@ public LineCurveTool (IServiceManager services) : base (services)
public override string Name => Translations.GetString ("Line/Curve");
public override string Icon => Pinta.Resources.Icons.ToolLine;
public override Gdk.Cursor DefaultCursor => new Gdk.Cursor (Gdk.Display.Default, Resources.GetIcon ("Cursor.Line.png"), 9, 18);
public override int Priority => 39;
public override int Priority => 37;

public override string StatusBarText => Translations.GetString ("Left click to draw a shape with the primary color." +
"\nLeft click on a shape to add a control point." +
Expand Down
2 changes: 1 addition & 1 deletion Pinta.Tools/Tools/MagicWandTool.cs
Original file line number Diff line number Diff line change
Expand Up @@ -49,7 +49,7 @@ public MagicWandTool (IServiceManager services) : base (services)
public override string Icon => Pinta.Resources.Icons.ToolSelectMagicWand;
public override string StatusBarText => Translations.GetString ("Click to select region of similar color.");
public override Gdk.Cursor DefaultCursor => new Gdk.Cursor (Gdk.Display.Default, Resources.GetIcon ("Cursor.MagicWand.png"), 21, 10);
public override int Priority => 17;
public override int Priority => 19;

protected override void OnBuildToolBar (Gtk.Toolbar tb)
{
Expand Down
2 changes: 1 addition & 1 deletion Pinta.Tools/Tools/MoveSelectedTool.cs
Original file line number Diff line number Diff line change
Expand Up @@ -45,7 +45,7 @@ public MoveSelectedTool (IServiceManager services) : base (services)
public override string StatusBarText => Translations.GetString ("Left click and drag the selection to move selected content. Hold Ctrl to scale instead of move. Right click and drag the selection to rotate selected content. Hold Shift to rotate in steps. Use arrow keys to move selected content by a single pixel.");
public override Gdk.Cursor DefaultCursor => new Gdk.Cursor (Gdk.Display.Default, Gtk.IconTheme.Default.LoadIcon (Pinta.Resources.Icons.ToolMove, 16), 0, 0);
public override Gdk.Key ShortcutKey => Gdk.Key.M;
public override int Priority => 7;
public override int Priority => 5;

protected override Rectangle GetSourceRectangle (Document document)
{
Expand Down
2 changes: 1 addition & 1 deletion Pinta.Tools/Tools/MoveSelectionTool.cs
Original file line number Diff line number Diff line change
Expand Up @@ -44,7 +44,7 @@ public MoveSelectionTool (IServiceManager service) : base (service)
public override string StatusBarText => Translations.GetString ("Left click and drag the selection to move selection outline. Hold Ctrl to scale instead of move. Right click and drag the selection to rotate selection outline. Hold Shift to rotate in steps. Use arrow keys to move selection outline by a single pixel.");
public override Gdk.Cursor DefaultCursor => new Gdk.Cursor (Gdk.Display.Default, Gtk.IconTheme.Default.LoadIcon (Pinta.Resources.Icons.ToolMoveSelection, 16), 0, 0);
public override Gdk.Key ShortcutKey => Gdk.Key.M;
public override int Priority => 11;
public override int Priority => 7;

protected override Rectangle GetSourceRectangle (Document document)
{
Expand Down
2 changes: 1 addition & 1 deletion Pinta.Tools/Tools/PaintBrushTool.cs
Original file line number Diff line number Diff line change
Expand Up @@ -60,7 +60,7 @@ public PaintBrushTool (IServiceManager services) : base (services)
public override string StatusBarText => Translations.GetString ("Left click to draw with primary color, right click to draw with secondary color.");
public override bool CursorChangesOnZoom => true;
public override Gdk.Key ShortcutKey => Gdk.Key.B;
public override int Priority => 25;
public override int Priority => 21;

public override Gdk.Cursor DefaultCursor {
get {
Expand Down
2 changes: 1 addition & 1 deletion Pinta.Tools/Tools/PaintBucketTool.cs
Original file line number Diff line number Diff line change
Expand Up @@ -46,7 +46,7 @@ public PaintBucketTool (IServiceManager services) : base (services)
public override string StatusBarText => Translations.GetString ("Left click to fill a region with the primary color, right click to fill with the secondary color.");
public override Gdk.Cursor DefaultCursor => new Gdk.Cursor (Gdk.Display.Default, PintaCore.Resources.GetIcon ("Cursor.PaintBucket.png"), 21, 21);
public override Gdk.Key ShortcutKey => Gdk.Key.F;
public override int Priority => 21;
public override int Priority => 29;
protected override bool CalculatePolygonSet => false;

protected override void OnMouseDown (Document document, ToolMouseEventArgs e)
Expand Down
2 changes: 1 addition & 1 deletion Pinta.Tools/Tools/PanTool.cs
Original file line number Diff line number Diff line change
Expand Up @@ -44,7 +44,7 @@ public PanTool (IServiceManager services) : base (services)
public override string StatusBarText => Translations.GetString ("Click and drag to navigate image.");
public override Gdk.Cursor DefaultCursor => new Gdk.Cursor (Gdk.Display.Default, Resources.GetIcon ("Cursor.Pan.png"), 8, 8);
public override Gdk.Key ShortcutKey => Gdk.Key.H;
public override int Priority => 19;
public override int Priority => 11;

protected override void OnMouseDown (Document document, ToolMouseEventArgs e)
{
Expand Down
2 changes: 1 addition & 1 deletion Pinta.Tools/Tools/PencilTool.cs
Original file line number Diff line number Diff line change
Expand Up @@ -50,7 +50,7 @@ public PencilTool (IServiceManager services) : base (services)
public override string StatusBarText => Translations.GetString ("Left click to draw freeform one-pixel wide lines with the primary color. Right click to use the secondary color.");
public override Gdk.Cursor DefaultCursor => new Gdk.Cursor (Gdk.Display.Default, Resources.GetIcon ("Cursor.Pencil.png"), 7, 24);
public override Gdk.Key ShortcutKey => Gdk.Key.P;
public override int Priority => 29;
public override int Priority => 25;
protected override bool ShowAlphaBlendingButton => true;

protected override void OnMouseDown (Document document, ToolMouseEventArgs e)
Expand Down
2 changes: 1 addition & 1 deletion Pinta.Tools/Tools/RecolorTool.cs
Original file line number Diff line number Diff line change
Expand Up @@ -59,7 +59,7 @@ public RecolorTool (IServiceManager services) : base (services)
public override Gdk.Cursor DefaultCursor => new Gdk.Cursor (Gdk.Display.Default, Resources.GetIcon ("Cursor.Recolor.png"), 9, 18);
public override Gdk.Key ShortcutKey => Gdk.Key.R;
protected float Tolerance => (float) (ToleranceSlider.Slider.Value / 100);
public override int Priority => 35;
public override int Priority => 49;

protected override void OnBuildToolBar (Toolbar tb)
{
Expand Down
2 changes: 1 addition & 1 deletion Pinta.Tools/Tools/RectangleSelectTool.cs
Original file line number Diff line number Diff line change
Expand Up @@ -40,7 +40,7 @@ public RectangleSelectTool (IServiceManager services) : base (services)
public override string Icon => Pinta.Resources.Icons.ToolSelectRectangle;
public override string StatusBarText => Translations.GetString ("Click and drag to draw a rectangular selection. Hold Shift to constrain to a square.");
public override Gdk.Cursor DefaultCursor => new Gdk.Cursor (Gdk.Display.Default, Resources.GetIcon ("Cursor.RectangleSelect.png"), 9, 18);
public override int Priority => 5;
public override int Priority => 13;

protected override void DrawShape (Document document, Rectangle r, Layer l)
{
Expand Down
2 changes: 1 addition & 1 deletion Pinta.Tools/Tools/RectangleTool.cs
Original file line number Diff line number Diff line change
Expand Up @@ -39,7 +39,7 @@ public RectangleTool (IServiceManager services) : base (services)
public override string Name => Translations.GetString ("Rectangle");
public override string Icon => Pinta.Resources.Icons.ToolRectangle;
public override Gdk.Cursor DefaultCursor => new Gdk.Cursor (Gdk.Display.Default, Resources.GetIcon ("Cursor.Rectangle.png"), 9, 18);
public override int Priority => 41;
public override int Priority => 39;

public override string StatusBarText {
get {
Expand Down
2 changes: 1 addition & 1 deletion Pinta.Tools/Tools/RoundedRectangleTool.cs
Original file line number Diff line number Diff line change
Expand Up @@ -39,7 +39,7 @@ public RoundedRectangleTool (IServiceManager services) : base (services)
public override string Name => Translations.GetString ("Rounded Rectangle");
public override string Icon => Pinta.Resources.Icons.ToolRectangleRounded;
public override Gdk.Cursor DefaultCursor => new Gdk.Cursor (Gdk.Display.Default, Resources.GetIcon ("Cursor.RoundedRectangle.png"), 9, 18);
public override int Priority => 43;
public override int Priority => 41;

public override string StatusBarText {
get {
Expand Down
2 changes: 1 addition & 1 deletion Pinta.Tools/Tools/TextTool.cs
Original file line number Diff line number Diff line change
Expand Up @@ -91,7 +91,7 @@ private Pinta.Core.TextLayout CurrentTextLayout
private string FinalizeName { get { return Translations.GetString("Text - Finalize"); } }
public override string Icon { get { return Pinta.Resources.Icons.ToolText; } }
public override Gdk.Key ShortcutKey { get { return Gdk.Key.T; } }
public override int Priority { get { return 37; } }
public override int Priority { get { return 35; } }

public override string StatusBarText {
get { return Translations.GetString ("Left click to place cursor, then type desired text. Text color is primary color."); }
Expand Down
2 changes: 1 addition & 1 deletion Pinta.Tools/Tools/ZoomTool.cs
Original file line number Diff line number Diff line change
Expand Up @@ -58,7 +58,7 @@ public ZoomTool (IServiceManager services) : base (services)
public override string StatusBarText => Translations.GetString ("Left click to zoom in. Right click to zoom out. Click and drag to zoom in selection.");
public override Gdk.Cursor DefaultCursor => cursorZoom;
public override Gdk.Key ShortcutKey => Gdk.Key.Z;
public override int Priority => 15;
public override int Priority => 9;

protected override void OnMouseDown (Document document, ToolMouseEventArgs e)
{
Expand Down

0 comments on commit c785eee

Please sign in to comment.