Browse Source

Mapped some more commands

Krzysztof Krysiński 2 years ago
parent
commit
7f578b35f0

+ 5 - 5
src/PixiEditor/Data/ShortcutActionMaps/AsepriteShortcutMap.json

@@ -663,15 +663,15 @@
       },
       "Parameters": []
     },
-    "": {
+    "Clear": {
       "Command": "PixiEditor.Document.DeletePixels",
       "DefaultShortcut": {
-        "key": "None",
+        "key": "Delete",
         "modifiers": null
       },
       "Parameters": []
     },
-    "": {
+    "SpriteSize": {
       "Command": "PixiEditor.Document.ResizeDocument",
       "DefaultShortcut": {
         "key": "None",
@@ -679,10 +679,10 @@
       },
       "Parameters": []
     },
-    "": {
+    "CanvasSize": {
       "Command": "PixiEditor.Document.ResizeCanvas",
       "DefaultShortcut": {
-        "key": "None",
+        "key": "C",
         "modifiers": null
       },
       "Parameters": []

+ 23 - 1
src/PixiEditor/Models/Commands/Templates/Providers/Parsers/KeyDefinition.cs

@@ -26,7 +26,7 @@ public record HumanReadableKeyCombination(string key, string[] modifiers = null)
     {
         Key parsedKey = Key.None;
         ModifierKeys parsedModifiers = ModifierKeys.None;
-        if (Enum.TryParse(key, out parsedKey))
+        if (TryParseSpecial(key, out parsedKey) || Enum.TryParse(key, true, out parsedKey))
         {
             parsedModifiers = ParseModifiers(modifiers);
         }
@@ -38,6 +38,28 @@ public record HumanReadableKeyCombination(string key, string[] modifiers = null)
         return new KeyCombination(parsedKey, parsedModifiers);
     }
 
+    private bool TryParseSpecial(string key, out Key parsed)
+    {
+        switch (key.ToLower())
+        {
+            case "shift":
+                parsed = Key.LeftShift;
+                return true;
+            case "ctrl":
+                parsed = Key.LeftCtrl;
+                return true;
+            case "alt":
+                parsed = Key.LeftAlt;
+                return true;
+            case "win":
+                parsed = Key.LWin;
+                return true;
+            default:
+                parsed = Key.None;
+                return false;
+        }
+    }
+
     private ModifierKeys ParseModifiers(string[] strings)
     {
         if(strings == null || strings.Length == 0)

+ 27 - 0
src/PixiEditor/ViewModels/SubViewModels/Main/DebugViewModel.cs

@@ -103,6 +103,33 @@ internal class DebugViewModel : SubViewModel<ViewModelMain>
         }
     }
 
+    [Command.Debug("PixiEditor.Debug.ValidateShortcutMap", "Validate Shortcut Map", "Validates shortcut map")]
+    public void ValidateShortcutMap()
+    {
+        OpenFileDialog dialog = new OpenFileDialog();
+        dialog.Filter = "Json files (*.json)|*.json";
+        dialog.InitialDirectory = Path.Combine(Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location)!, "Data", "ShortcutActionMaps");
+        var dialogResult = dialog.ShowDialog();
+        
+        if (dialogResult.HasValue && dialogResult.Value)
+        {
+            string file = File.ReadAllText(dialog.FileName);
+            var keyDefinitions = JsonConvert.DeserializeObject<Dictionary<string, KeyDefinition>>(file);
+            int emptyKeys = file.Split("\"\":").Length - 1;
+            int unknownCommands = 0;
+            
+            foreach (var keyDefinition in keyDefinitions)
+            {
+                if (!Owner.CommandController.Commands.ContainsKey(keyDefinition.Value.Command))
+                {
+                    unknownCommands++;
+                }
+            }
+
+            NoticeDialog.Show($"Empty keys: {emptyKeys}\nUnknown Commands: {unknownCommands}", "Result");
+        }
+    }
+
     [Command.Debug("PixiEditor.Debug.OpenInstallDirectory", "Open Installation Directory", "Open Installation Directory")]
     public static void OpenInstallLocation()
     {