Jelajahi Sumber

More action display localized and missing tool stuff

Krzysztof Krysiński 2 tahun lalu
induk
melakukan
9549ac8276
19 mengubah file dengan 94 tambahan dan 34 penghapusan
  1. 46 2
      src/PixiEditor/Data/Localization/Languages/en.json
  2. 1 1
      src/PixiEditor/ViewModels/SubViewModels/Tools/ToolSettings/Settings/EnumSetting.cs
  3. 4 3
      src/PixiEditor/ViewModels/SubViewModels/Tools/ToolViewModel.cs
  4. 3 2
      src/PixiEditor/ViewModels/SubViewModels/Tools/Tools/BrightnessToolViewModel.cs
  5. 4 3
      src/PixiEditor/ViewModels/SubViewModels/Tools/Tools/ColorPickerToolViewModel.cs
  6. 3 2
      src/PixiEditor/ViewModels/SubViewModels/Tools/Tools/EllipseToolViewModel.cs
  7. 2 1
      src/PixiEditor/ViewModels/SubViewModels/Tools/Tools/EraserToolViewModel.cs
  8. 3 2
      src/PixiEditor/ViewModels/SubViewModels/Tools/Tools/FloodFillToolViewModel.cs
  9. 5 4
      src/PixiEditor/ViewModels/SubViewModels/Tools/Tools/LassoToolViewModel.cs
  10. 3 2
      src/PixiEditor/ViewModels/SubViewModels/Tools/Tools/LineToolViewModel.cs
  11. 2 1
      src/PixiEditor/ViewModels/SubViewModels/Tools/Tools/MagicWandToolViewModel.cs
  12. 3 1
      src/PixiEditor/ViewModels/SubViewModels/Tools/Tools/MoveToolViewModel.cs
  13. 1 0
      src/PixiEditor/ViewModels/SubViewModels/Tools/Tools/MoveViewportToolViewModel.cs
  14. 1 0
      src/PixiEditor/ViewModels/SubViewModels/Tools/Tools/PenToolViewModel.cs
  15. 1 0
      src/PixiEditor/ViewModels/SubViewModels/Tools/Tools/RectangleToolViewModel.cs
  16. 1 0
      src/PixiEditor/ViewModels/SubViewModels/Tools/Tools/RotateViewportToolViewModel.cs
  17. 3 3
      src/PixiEditor/ViewModels/SubViewModels/Tools/Tools/SelectToolViewModel.cs
  18. 1 0
      src/PixiEditor/ViewModels/SubViewModels/Tools/Tools/ZoomToolViewModel.cs
  19. 7 7
      src/PixiEditor/Views/MainWindow.xaml

+ 46 - 2
src/PixiEditor/Data/Localization/Languages/en.json

@@ -117,18 +117,50 @@
   "SELECT_TOOL_TOOLTIP": "Selects area. ({0})",
   "SELECT_TOOL_ACTION_DISPLAY_DEFAULT": "Click and move to select an area. Hold Shift to add to existing selection. Hold Ctrl to subtract from it.",
   "SELECT_TOOL_ACTION_DISPLAY_SHIFT": "Click and move to add to the current selection.",
-  "SELECT_TOOL_ACTION_DISPLAY_ALT": "Click and move to subtract from the current selection.",
+  "SELECT_TOOL_ACTION_DISPLAY_CTRL": "Click and move to subtract from the current selection.",
   "ZOOM_TOOL_TOOLTIP": "Zooms viewport ({0}). Click to zoom in, hold alt and click to zoom out.",
   "ZOOM_TOOL_ACTION_DISPLAY_DEFAULT": "Click and move to zoom. Click to zoom in, hold ctrl and click to zoom out.",
   "ZOOM_TOOL_ACTION_DISPLAY_CTRL": "Click and move to zoom. Click to zoom out, release ctrl and click to zoom in.",
   "BRIGHTNESS_TOOL_TOOLTIP": "Makes pixels brighter or darker ({0}). Hold Ctrl to make pixels darker.",
+  "BRIGHTNESS_TOOL_ACTION_DISPLAY_DEFAULT": "Draw on pixels to make them brighter. Hold Ctrl to darken.",
+  "BRIGHTNESS_TOOL_ACTION_DISPLAY_CTRL": "Draw on pixels to make them darker. Release Ctrl to brighten.",
   "COLOR_PICKER_TOOLTIP": "Picks the primary color from the canvas. ({0})",
+  "COLOR_PICKER_ACTION_DISPLAY_DEFAULT": "Click to pick colors. Hold Ctrl to hide the canvas. Hold Shift to hide the reference layer",
+  "COLOR_PICKER_ACTION_DISPLAY_CTRL": "Click to pick colors from the reference layer.",
+  "COLOR_PICKER_ACTION_DISPLAY_SHIFT": "Click to pick colors from the canvas.",
   "ELLIPSE_TOOL_TOOLTIP": "Draws an ellipse on canvas ({0}). Hold Shift to draw a circle.",
+  "ELLIPSE_TOOL_ACTION_DISPLAY_DEFAULT": "Click and move mouse to draw an ellipse. Hold Shift to draw a circle.",
+  "ELLIPSE_TOOL_ACTION_DISPLAY_SHIFT": "Click and move mouse to draw a circle.",
   "ERASER_TOOL_TOOLTIP": "Erasers color from pixel. ({0})",
+  "ERASER_TOOL_ACTION_DISPLAY": "Click and move to erase.",
   "FLOOD_FILL_TOOL_TOOLTIP": "Fills area with color. ({0})",
+  "FLOOD_FILL_TOOL_ACTION_DISPLAY_DEFAULT": "Press on an area to fill it. Hold down Ctrl to consider all layers.",
+  "FLOOD_FILL_TOOL_ACTION_DISPLAY_CTRL": "Press on an area to fill it. Release Ctrl to only consider the current layers.",
   "LASSO_TOOL_TOOLTIP": "Lasso. ({0})",
+  "LASSO_TOOL_ACTION_DISPLAY_DEFAULT": "Click and move to select pixels inside of the lasso. Hold Shift to add to existing selection. Hold Ctrl to subtract from it.",
+  "LASSO_TOOL_ACTION_DISPLAY_SHIFT": "Click and move to add pixels inside of the lasso to the selection.",
+  "LASSO_TOOL_ACTION_DISPLAY_CTRL": "Click and move to subtract pixels inside of the lasso from the selection.",
   "LINE_TOOL_TOOLTIP": "Draws line on canvas ({0}). Hold Shift to enable snapping.",
+  "LINE_TOOL_ACTION_DISPLAY_DEFAULT": "Click and move to draw a line. Hold Shift to enable snapping.",
+  "LINE_TOOL_ACTION_DISPLAY_SHIFT": "Click and move mouse to draw a line with snapping enabled.",
   "MAGIC_WAND_TOOL_TOOLTIP": "Magic Wand ({0}). Flood's the selection",
+  "MAGIC_WAND_ACTION_DISPLAY": "Click to flood the selection.",
+
+  "PEN_TOOL": "Pen",
+  "BRIGHTNESS_TOOL": "Brightness",
+  "COLOR_PICKER_TOOL": "Color Picker",
+  "ELLIPSE_TOOL": "Ellipse",
+  "ERASER_TOOL": "Eraser",
+  "FLOOD_FILL_TOOL": "Flood Fill",
+  "LASSO_TOOL": "Lasso",
+  "LINE_TOOL": "Line",
+  "MAGIC_WAND_TOOL": "Magic Wand",
+  "MOVE_TOOL": "Move",
+  "MOVE_VIEWPORT_TOOL": "Move Viewport",
+  "RECTANGLE_TOOL": "Rectangle",
+  "ROTATE_VIEWPORT_TOOL": "Rotate Viewport",
+  "SELECT_TOOL_NAME": "Select",
+  "ZOOM_TOOL": "Zoom",
 
   "SHAPE_LABEL": "Shape",
   "MODE_LABEL": "Mode",
@@ -137,6 +169,12 @@
   "FILL_COLOR_LABEL": "Fill color",
   "TOOL_SIZE_LABEL": "Tool size",
   "STRENGTH_LABEL": "Strength",
+  "NEW": "New",
+  "ADD": "Add",
+  "SUBTRACT": "Subtract",
+  "INTERSECT": "Intersect",
+  "RECTANGLE": "Rectangle",
+  "CIRCLE": "Circle",
 
   "PATH_DOES_NOT_EXIST": "{0} does not exist.",
   "LOCATION_DOES_NOT_EXIST": "Location does not exist.",
@@ -163,7 +201,12 @@
   "MEMBER_SINCE": "DISCORD MEMBER SINCE",
   "DISCORD_PLAYING": "PLAYING A \"GAME\"",
   "DISCORD_ELAPSED": "00:00 elapsed",
-  
+
+  "MINIMIZE": "Minimize",
+  "RESTORE": "Restore",
+  "MAXIMIZE": "Maximize",
+  "CLOSE": "Close",
+
   "NOTHING_FOUND": "Nothing found",
   "EXPORT": "Export",
   "EXPORT_IMAGE": "Export image",
@@ -345,6 +388,7 @@
   "INTERSECT_WITH_MASK": "intersect with mask",
 
   "STYLUS": "Stylus",
+  "PEN_MODE": "Pen mode",
   "TOGGLE_PEN_MODE": "Toggle pen mode",
 
   "UNDO": "Undo",

+ 1 - 1
src/PixiEditor/ViewModels/SubViewModels/Tools/ToolSettings/Settings/EnumSetting.cs

@@ -94,7 +94,7 @@ internal sealed class EnumSetting<TEnum> : Setting<TEnum, ComboBox>
         {
             var item = new ComboBoxItem
             {
-                Content = value.GetDescription(),
+                Content = new LocalizedString(value.GetDescription().ToUpper()),
                 Tag = value
             };
 

+ 4 - 3
src/PixiEditor/ViewModels/SubViewModels/Tools/ToolViewModel.cs

@@ -18,7 +18,8 @@ internal abstract class ToolViewModel : NotifyableObject
 
     public virtual string ToolName => GetType().Name.Replace("Tool", string.Empty).Replace("ViewModel", string.Empty);
 
-    public virtual string DisplayName => ToolName.AddSpacesBeforeUppercaseLetters();
+    public abstract string ToolNameLocalizationKey { get; }
+    public virtual LocalizedString DisplayName => new LocalizedString(ToolNameLocalizationKey);
 
     public virtual string ImagePath => $"/Images/Tools/{ToolName}Image.png";
 
@@ -28,8 +29,8 @@ internal abstract class ToolViewModel : NotifyableObject
 
     public abstract LocalizedString Tooltip { get; }
 
-    private string actionDisplay = string.Empty;
-    public string ActionDisplay
+    private LocalizedString actionDisplay = string.Empty;
+    public LocalizedString ActionDisplay
     {
         get => actionDisplay;
         set

+ 3 - 2
src/PixiEditor/ViewModels/SubViewModels/Tools/Tools/BrightnessToolViewModel.cs

@@ -13,7 +13,8 @@ namespace PixiEditor.ViewModels.SubViewModels.Tools.Tools;
 [Command.Tool(Key = Key.U)]
 internal class BrightnessToolViewModel : ToolViewModel
 {
-    private readonly string defaultActionDisplay = "Draw on pixels to make them brighter. Hold Ctrl to darken.";
+    private readonly LocalizedString defaultActionDisplay = "BRIGHTNESS_TOOL_ACTION_DISPLAY_DEFAULT";
+    public override string ToolNameLocalizationKey => "BRIGHTNESS_TOOL";
 
     public BrightnessToolViewModel()
     {
@@ -45,7 +46,7 @@ internal class BrightnessToolViewModel : ToolViewModel
         }
         else
         {
-            ActionDisplay = "Draw on pixels to make them darker. Release Ctrl to brighten.";
+            ActionDisplay = "BRIGHTNESS_TOOL_ACTION_DISPLAY_CTRL";
             Darken = true;
         }
     }

+ 4 - 3
src/PixiEditor/ViewModels/SubViewModels/Tools/Tools/ColorPickerToolViewModel.cs

@@ -12,10 +12,11 @@ namespace PixiEditor.ViewModels.SubViewModels.Tools.Tools;
 [Command.Tool(Key = Key.O, Transient = Key.LeftAlt)]
 internal class ColorPickerToolViewModel : ToolViewModel
 {
-    private readonly string defaultActionDisplay = "Click to pick colors. Hold Ctrl to hide the canvas. Hold Shift to hide the reference layer";
+    private readonly LocalizedString defaultActionDisplay = "COLOR_PICKER_ACTION_DISPLAY_DEFAULT";
 
     public override bool HideHighlight => true;
 
+    public override string ToolNameLocalizationKey => "COLOR_PICKER_TOOL";
     public override BrushShape BrushShape => BrushShape.Pixel;
 
     public override LocalizedString Tooltip => new("COLOR_PICKER_TOOLTIP", Shortcut);
@@ -54,13 +55,13 @@ internal class ColorPickerToolViewModel : ToolViewModel
         {
             PickFromCanvas = false;
             PickFromReferenceLayer = true;
-            ActionDisplay = "Click to pick colors from the reference layer.";
+            ActionDisplay = "COLOR_PICKER_ACTION_DISPLAY_CTRL";
         }
         else if (shiftIsDown)
         {
             PickFromCanvas = true;
             PickFromReferenceLayer = false;
-            ActionDisplay = "Click to pick colors from the canvas.";
+            ActionDisplay = "COLOR_PICKER_ACTION_DISPLAY_SHIFT";
             return;
         }
         else

+ 3 - 2
src/PixiEditor/ViewModels/SubViewModels/Tools/Tools/EllipseToolViewModel.cs

@@ -9,7 +9,8 @@ namespace PixiEditor.ViewModels.SubViewModels.Tools.Tools;
 [Command.Tool(Key = Key.C)]
 internal class EllipseToolViewModel : ShapeTool
 {
-    private string defaultActionDisplay = "Click and move mouse to draw an ellipse. Hold Shift to draw a circle.";
+    private LocalizedString defaultActionDisplay = "ELLIPSE_TOOL_ACTION_DISPLAY_DEFAULT";
+    public override string ToolNameLocalizationKey => "ELLIPSE_TOOL";
 
     public EllipseToolViewModel()
     {
@@ -23,7 +24,7 @@ internal class EllipseToolViewModel : ShapeTool
     {
         if (shiftIsDown)
         {
-            ActionDisplay = "Click and move mouse to draw a circle.";
+            ActionDisplay = "ELLIPSE_TOOL_ACTION_DISPLAY_SHIFT";
             DrawCircle = true;
         }
         else

+ 2 - 1
src/PixiEditor/ViewModels/SubViewModels/Tools/Tools/EraserToolViewModel.cs

@@ -13,13 +13,14 @@ internal class EraserToolViewModel : ToolViewModel
 {
     public EraserToolViewModel()
     {
-        ActionDisplay = "Draw to remove color from a pixel.";
+        ActionDisplay = "ERASER_TOOL_ACTION_DISPLAY";
         Toolbar = ToolbarFactory.Create<EraserToolViewModel, BasicToolbar>();
     }
 
     [Settings.Inherited]
     public int ToolSize => GetValue<int>();
 
+    public override string ToolNameLocalizationKey => "ERASER_TOOL";
     public override BrushShape BrushShape => BrushShape.Circle;
 
     public override LocalizedString Tooltip => new LocalizedString("ERASER_TOOL_TOOLTIP", Shortcut);

+ 3 - 2
src/PixiEditor/ViewModels/SubViewModels/Tools/Tools/FloodFillToolViewModel.cs

@@ -10,8 +10,9 @@ namespace PixiEditor.ViewModels.SubViewModels.Tools.Tools;
 [Command.Tool(Key = Key.G)]
 internal class FloodFillToolViewModel : ToolViewModel
 {
-    private readonly string defaultActionDisplay = "Press on an area to fill it. Hold down Ctrl to consider all layers.";
+    private readonly LocalizedString defaultActionDisplay = "FLOOD_FILL_TOOL_ACTION_DISPLAY_DEFAULT";
 
+    public override string ToolNameLocalizationKey => "FLOOD_FILL_TOOL";
     public override BrushShape BrushShape => BrushShape.Pixel;
 
     public override LocalizedString Tooltip => new LocalizedString("FLOOD_FILL_TOOL_TOOLTIP", Shortcut);
@@ -28,7 +29,7 @@ internal class FloodFillToolViewModel : ToolViewModel
         if (ctrlIsDown)
         {
             ConsiderAllLayers = true;
-            ActionDisplay = "Press on an area to fill it. Release Ctrl to only consider the current layers.";
+            ActionDisplay = "FLOOD_FILL_TOOL_ACTION_DISPLAY_CTRL";
         }
         else
         {

+ 5 - 4
src/PixiEditor/ViewModels/SubViewModels/Tools/Tools/LassoToolViewModel.cs

@@ -11,7 +11,7 @@ namespace PixiEditor.ViewModels.SubViewModels.Tools.Tools;
 [Command.ToolAttribute(Key = Key.Q)]
 internal class LassoToolViewModel : ToolViewModel
 {
-    private string defaultActionDisplay = "Click and move to select pixels inside of the lasso. Hold Shift to add to existing selection. Hold Ctrl to subtract from it.";
+    private LocalizedString defaultActionDisplay = "LASSO_TOOL_ACTION_DISPLAY_DEFAULT";
 
     public LassoToolViewModel()
     {
@@ -26,12 +26,12 @@ internal class LassoToolViewModel : ToolViewModel
     {
         if (shiftIsDown)
         {
-            ActionDisplay = "Click and move to add pixels inside of the lasso to the selection.";
+            ActionDisplay = "LASSO_TOOL_ACTION_DISPLAY_SHIFT";
             modifierKeySelectionMode = SelectionMode.Add;
         }
         else if (ctrlIsDown)
         {
-            ActionDisplay = "Click and move to subtract pixels inside of the lasso from the selection.";
+            ActionDisplay = "LASSO_TOOL_ACTION_DISPLAY_CTRL";
             modifierKeySelectionMode = SelectionMode.Subtract;
         }
         else
@@ -42,7 +42,8 @@ internal class LassoToolViewModel : ToolViewModel
     }
 
     public override LocalizedString Tooltip => new LocalizedString("LASSO_TOOL_TOOLTIP", Shortcut);
-    
+
+    public override string ToolNameLocalizationKey => "LASSO_TOOL";
     public override BrushShape BrushShape => BrushShape.Pixel;
 
     [Settings.Enum("MODE_LABEL")]

+ 3 - 2
src/PixiEditor/ViewModels/SubViewModels/Tools/Tools/LineToolViewModel.cs

@@ -10,7 +10,7 @@ namespace PixiEditor.ViewModels.SubViewModels.Tools.Tools;
 [Command.Tool(Key = Key.L)]
 internal class LineToolViewModel : ShapeTool
 {
-    private string defaultActionDisplay = "Click and move to draw a line. Hold Shift to enable snapping.";
+    private LocalizedString defaultActionDisplay = "LINE_TOOL_ACTION_DISPLAY_DEFAULT";
 
     public LineToolViewModel()
     {
@@ -18,6 +18,7 @@ internal class LineToolViewModel : ShapeTool
         Toolbar = ToolbarFactory.Create<LineToolViewModel, BasicToolbar>();
     }
 
+    public override string ToolNameLocalizationKey => "LINE_TOOL";
     public override LocalizedString Tooltip => new LocalizedString("LINE_TOOL_TOOLTIP", Shortcut);
 
     [Settings.Inherited]
@@ -29,7 +30,7 @@ internal class LineToolViewModel : ShapeTool
     {
         if (shiftIsDown)
         {
-            ActionDisplay = "Click and move mouse to draw a line with snapping enabled.";
+            ActionDisplay = "LINE_TOOL_ACTION_DISPLAY_SHIFT";
             Snap = true;
         }
         else

+ 2 - 1
src/PixiEditor/ViewModels/SubViewModels/Tools/Tools/MagicWandToolViewModel.cs

@@ -14,6 +14,7 @@ internal class MagicWandToolViewModel : ToolViewModel
 {
     public override LocalizedString Tooltip => new LocalizedString("MAGIC_WAND_TOOL_TOOLTIP", Shortcut);
 
+    public override string ToolNameLocalizationKey => "MAGIC_WAND_TOOL";
     public override BrushShape BrushShape => BrushShape.Pixel;
 
     [Settings.Enum("MODE_LABEL")]
@@ -25,7 +26,7 @@ internal class MagicWandToolViewModel : ToolViewModel
     public MagicWandToolViewModel()
     {
         Toolbar = ToolbarFactory.Create<MagicWandToolViewModel>();
-        ActionDisplay = "Click to flood the selection.";
+        ActionDisplay = "MAGIC_WAND_ACTION_DISPLAY";
     }
     
     public override void OnLeftMouseButtonDown(VecD pos)

+ 3 - 1
src/PixiEditor/ViewModels/SubViewModels/Tools/Tools/MoveToolViewModel.cs

@@ -13,6 +13,8 @@ internal class MoveToolViewModel : ToolViewModel
 {
     private string defaultActionDisplay = new LocalizedString("MOVE_TOOL_ACTION_DISPLAY");
 
+    public override string ToolNameLocalizationKey => "MOVE_TOOL";
+
     public MoveToolViewModel()
     {
         ActionDisplay = defaultActionDisplay;
@@ -24,7 +26,7 @@ internal class MoveToolViewModel : ToolViewModel
 
     [Settings.Bool("KEEP_ORIGINAL_IMAGE_SETTING")]
     public bool KeepOriginalImage => GetValue<bool>();
-    
+
     public override BrushShape BrushShape => BrushShape.Hidden;
     public override bool HideHighlight => true;
 

+ 1 - 0
src/PixiEditor/ViewModels/SubViewModels/Tools/Tools/MoveViewportToolViewModel.cs

@@ -8,6 +8,7 @@ namespace PixiEditor.ViewModels.SubViewModels.Tools.Tools;
 [Command.Tool(Key = Key.H, Transient = Key.Space)]
 internal class MoveViewportToolViewModel : ToolViewModel
 {
+    public override string ToolNameLocalizationKey => "MOVE_VIEWPORT_TOOL";
     public override BrushShape BrushShape => BrushShape.Hidden;
     public override bool HideHighlight => true;
     public override LocalizedString Tooltip => new LocalizedString("MOVE_VIEWPORT_TOOLTIP", Shortcut);

+ 1 - 0
src/PixiEditor/ViewModels/SubViewModels/Tools/Tools/PenToolViewModel.cs

@@ -13,6 +13,7 @@ namespace PixiEditor.ViewModels.SubViewModels.Tools.Tools
     [Command.Tool(Key = Key.B)]
     internal class PenToolViewModel : ShapeTool
     {
+        public override string ToolNameLocalizationKey => "PEN_TOOL";
         public override BrushShape BrushShape => BrushShape.Circle;
         public PenToolViewModel()
         {

+ 1 - 0
src/PixiEditor/ViewModels/SubViewModels/Tools/Tools/RectangleToolViewModel.cs

@@ -15,6 +15,7 @@ internal class RectangleToolViewModel : ShapeTool
         ActionDisplay = defaultActionDisplay;
     }
 
+    public override string ToolNameLocalizationKey => "RECTANGLE_TOOL";
     public override LocalizedString Tooltip => new LocalizedString("RECTANGLE_TOOL_TOOLTIP", Shortcut);
 
     public bool Filled { get; set; } = false;

+ 1 - 0
src/PixiEditor/ViewModels/SubViewModels/Tools/Tools/RotateViewportToolViewModel.cs

@@ -13,6 +13,7 @@ namespace PixiEditor.ViewModels.SubViewModels.Tools.Tools;
 [Command.Tool(Key = Key.N)]
 internal class RotateViewportToolViewModel : ToolViewModel
 {
+    public override string ToolNameLocalizationKey => "ROTATE_VIEWPORT_TOOL";
     public override BrushShape BrushShape => BrushShape.Hidden;
     public override bool HideHighlight => true;
     public override LocalizedString Tooltip => new LocalizedString("ROTATE_VIEWPORT_TOOLTIP", Shortcut);

+ 3 - 3
src/PixiEditor/ViewModels/SubViewModels/Tools/Tools/SelectToolViewModel.cs

@@ -14,7 +14,7 @@ namespace PixiEditor.ViewModels.SubViewModels.Tools.Tools;
 internal class SelectToolViewModel : ToolViewModel
 {
     private string defaultActionDisplay = new LocalizedString("SELECT_TOOL_ACTION_DISPLAY_DEFAULT");
-
+    public override string ToolNameLocalizationKey => "SELECT_TOOL_NAME";
     public SelectToolViewModel()
     {
         ActionDisplay = defaultActionDisplay;
@@ -34,7 +34,7 @@ internal class SelectToolViewModel : ToolViewModel
         }
         else if (ctrlIsDown)
         {
-            ActionDisplay = new LocalizedString("SELECT_TOOL_ACTION_DISPLAY_ALT");
+            ActionDisplay = new LocalizedString("SELECT_TOOL_ACTION_DISPLAY_CTRL");
             modifierKeySelectionMode = SelectionMode.Subtract;
         }
         else
@@ -49,7 +49,7 @@ internal class SelectToolViewModel : ToolViewModel
 
     [Settings.Enum("SHAPE_LABEL")]
     public SelectionShape SelectShape => GetValue<SelectionShape>();
-    
+
     public override BrushShape BrushShape => BrushShape.Pixel;
 
     public override LocalizedString Tooltip => new LocalizedString("SELECT_TOOL_TOOLTIP", Shortcut);

+ 1 - 0
src/PixiEditor/ViewModels/SubViewModels/Tools/Tools/ZoomToolViewModel.cs

@@ -17,6 +17,7 @@ internal class ZoomToolViewModel : ToolViewModel
 
     private string defaultActionDisplay = new LocalizedString("ZOOM_TOOL_ACTION_DISPLAY_DEFAULT");
 
+    public override string ToolNameLocalizationKey => "ZOOM_TOOL";
     public override BrushShape BrushShape => BrushShape.Hidden;
 
     public ZoomToolViewModel()

+ 7 - 7
src/PixiEditor/Views/MainWindow.xaml

@@ -428,7 +428,7 @@
                     <Button
                         Style="{StaticResource MinimizeButtonStyle}"
                         WindowChrome.IsHitTestVisibleInChrome="True"
-                        ToolTip="Minimize"
+                        views:Translator.TooltipKey="MINIMIZE"
                         Command="{x:Static SystemCommands.MinimizeWindowCommand}" />
                     <Button
                         x:Name="RestoreButton"
@@ -436,18 +436,18 @@
                         Style="{StaticResource RestoreButtonStyle}"
                         Command="{x:Static SystemCommands.RestoreWindowCommand}"
                         WindowChrome.IsHitTestVisibleInChrome="True"
-                        ToolTip="Restore" />
+                        views:Translator.TooltipKey="RESTORE" />
                     <Button
                         x:Name="MaximizeButton"
                         Visibility="Collapsed"
                         Style="{StaticResource MaximizeButtonStyle}"
                         Command="{x:Static SystemCommands.MaximizeWindowCommand}"
                         WindowChrome.IsHitTestVisibleInChrome="True"
-                        ToolTip="Maximize" />
+                        views:Translator.TooltipKey="MAXIMIZE" />
                     <Button
                         Style="{StaticResource CloseButtonStyle}"
                         WindowChrome.IsHitTestVisibleInChrome="True"
-                        ToolTip="Close"
+                        views:Translator.TooltipKey="CLOSE"
                         Command="{x:Static SystemCommands.CloseWindowCommand}" />
                 </StackPanel>
             </DockPanel>
@@ -460,18 +460,18 @@
                 <Button
                     Margin="1,0,0,0"
                     Command="{cmds:Command PixiEditor.Undo.Undo}"
-                    ToolTip="Undo"
+                    views:Translator.TooltipKey="UNDO"
                     Style="{StaticResource ToolSettingsGlyphButton}" 
 					Content="&#xE7A7;"/>
                 <Button 
 				Command="{cmds:Command PixiEditor.Undo.Redo}" 
-				ToolTip="Redo"
+				views:Translator.TooltipKey="REDO"
                 Style="{StaticResource ToolSettingsGlyphButton}" 
 				Content="&#xE7A6;"/>
                 <ToggleButton 
 				Width="30" 
 				BorderThickness="0"
-				ToolTip="Pen Mode" 
+				views:Translator.TooltipKey="PEN_MODE"
 				Focusable="False"
                 IsChecked="{Binding StylusSubViewModel.IsPenModeEnabled}">
                     <ToggleButton.Style>