소스 검색

Fixed tooltips of tools and added path action display

flabbet 8 달 전
부모
커밋
7528cc5952

+ 5 - 1
src/PixiEditor/Data/Localization/Languages/en.json

@@ -765,5 +765,9 @@
   "LOW_RES_PREVIEW": "Document Resolution Preview",
   "TOGGLE_HIGH_RES_PREVIEW": "Toggle high resolution preview",
   "FACTOR": "Factor",
-  "PATH_TOOL": "Path"
+  "PATH_TOOL": "Path",
+  "PATH_TOOL_TOOLTIP": "Create vector paths and curves ({0}).",
+  "PATH_TOOL_ACTION_DISPLAY": "Click to add a point.",
+  "PATH_TOOL_ACTION_DISPLAY_CTRL": "Click on existing point and drag to make it a curve.", 
+  "PATH_TOOL_ACTION_DISPLAY_ALT": "Click on a control point and move to adjust only one side of the curve."
 }

+ 1 - 1
src/PixiEditor/Models/Handlers/IToolsHandler.cs

@@ -21,7 +21,7 @@ internal interface IToolsHandler : IHandler
     public bool EnableSharedToolbar { get; set; }
     public event EventHandler<SelectedToolEventArgs> SelectedToolChanged;
     public void SetupTools(IServiceProvider services, ToolSetsConfig toolSetConfig);
-    public void SetupToolsTooltipShortcuts(IServiceProvider services);
+    public void SetupToolsTooltipShortcuts();
     public void SetActiveTool<T>(bool transient) where T : IToolHandler;
     public void SetActiveTool(Type toolType, bool transient);
     public void ConvertedKeyDownInlet(FilteredKeyEventArgs args);

+ 6 - 3
src/PixiEditor/ViewModels/SubViewModels/ToolsViewModel.cs

@@ -135,11 +135,14 @@ internal class ToolsViewModel : SubViewModel<ViewModelMain>, IToolsHandler
         UpdateEnabledState();
     }
 
-    public void SetupToolsTooltipShortcuts(IServiceProvider services)
+    public void SetupToolsTooltipShortcuts()
     {
-        foreach (ToolViewModel tool in ActiveToolSet.Tools!)
+        foreach (IToolHandler tool in allTools)
         {
-            tool.Shortcut = Owner.ShortcutController.GetToolShortcut(tool.GetType());
+            if (tool is ToolViewModel toolVm)
+            {
+                toolVm.Shortcut = Owner.ShortcutController.GetToolShortcut(tool.GetType());
+            }
         }
     }
 

+ 24 - 0
src/PixiEditor/ViewModels/Tools/Tools/VectorPathToolViewModel.cs

@@ -24,6 +24,10 @@ internal class VectorPathToolViewModel : ShapeTool, IVectorPathToolHandler
 
     private bool isActivated;
 
+    private LocalizedString actionDisplayDefault;
+    private LocalizedString actionDisplayCtrl;
+    private LocalizedString actionDisplayAlt;
+
     public VectorPathToolViewModel()
     {
         var fillSetting = Toolbar.GetSetting(nameof(BasicShapeToolbar.Fill));
@@ -31,6 +35,10 @@ internal class VectorPathToolViewModel : ShapeTool, IVectorPathToolHandler
         {
             fillSetting.Value = false;
         }
+        
+        actionDisplayDefault = new LocalizedString("PATH_TOOL_ACTION_DISPLAY");
+        actionDisplayCtrl = new LocalizedString("PATH_TOOL_ACTION_DISPLAY_CTRL");
+        actionDisplayAlt = new LocalizedString("PATH_TOOL_ACTION_DISPLAY_ALT");
     }
 
     public override void UseTool(VecD pos)
@@ -47,6 +55,22 @@ internal class VectorPathToolViewModel : ShapeTool, IVectorPathToolHandler
         }
     }
 
+    public override void ModifierKeyChanged(bool ctrlIsDown, bool shiftIsDown, bool altIsDown)
+    {
+        if (ctrlIsDown)
+        {
+            ActionDisplay = actionDisplayCtrl;
+        }
+        else if (altIsDown)
+        {
+            ActionDisplay = actionDisplayAlt;
+        }
+        else
+        {
+            ActionDisplay = actionDisplayDefault;
+        }
+    }
+
     public override void OnSelected(bool restoring)
     {
         if (restoring) return;

+ 1 - 1
src/PixiEditor/ViewModels/ViewModelMain.cs

@@ -148,7 +148,7 @@ internal partial class ViewModelMain : ViewModelBase, ICommandsHandler
 
         ShortcutController = new ShortcutController();
 
-        ToolsSubViewModel?.SetupToolsTooltipShortcuts(services);
+        ToolsSubViewModel?.SetupToolsTooltipShortcuts();
 
         SearchSubViewModel = services.GetService<SearchViewModel>();