Command refactor

This commit is contained in:
2022-05-15 21:42:01 +02:00
parent 9a99aad030
commit f99f90783f
42 changed files with 544 additions and 217 deletions

View File

@@ -1,37 +1,40 @@
using Avalonia.Input;
using FileTime.App.Core.Command;
namespace FileTime.GuiApp.Configuration;
public class CommandBindingConfiguration
{
public List<KeyConfig> Keys { get; set; } = new List<KeyConfig>();
public List<KeyConfig> Keys { get; set; }
public Command Command { get; set; } = Command.None;
public string Command { get; set; }
public string KeysDisplayText => GetKeysDisplayText();
public CommandBindingConfiguration() { }
public CommandBindingConfiguration()
{
Command = null!;
Keys = null!;
}
public CommandBindingConfiguration(Command command, IEnumerable<KeyConfig> keys)
public CommandBindingConfiguration(string command, IEnumerable<KeyConfig> keys)
{
Keys = new List<KeyConfig>(keys);
Command = command;
}
public CommandBindingConfiguration(Command command, KeyConfig key)
public CommandBindingConfiguration(string command, KeyConfig key)
{
Keys = new List<KeyConfig>() { key };
Command = command;
}
public CommandBindingConfiguration(Command command, IEnumerable<Key> keys)
public CommandBindingConfiguration(string command, IEnumerable<Key> keys)
{
Keys = keys.Select(k => new KeyConfig(k)).ToList();
Command = command;
}
public CommandBindingConfiguration(Command command, Key key)
public CommandBindingConfiguration(string command, Key key)
{
Keys = new List<KeyConfig>() { new KeyConfig(key) };
Command = command;
@@ -62,7 +65,7 @@ public class CommandBindingConfiguration
{
var s = "";
bool ctrlOrAlt = key.Ctrl || key.Alt;
var ctrlOrAlt = key.Ctrl || key.Alt;
if (ctrlOrAlt && currentText.Length > 0 && currentText.Last() != ' ') s += " ";

View File

@@ -1,7 +1,5 @@
using Avalonia.Input;
using FileTime.App.Core.Command;
using System;
using System.Collections.Generic;
using FileTime.App.Core.UserCommand;
namespace FileTime.GuiApp.Configuration;
@@ -42,66 +40,66 @@ public static class MainConfiguration
{
return new List<CommandBindingConfiguration>()
{
new CommandBindingConfiguration(Command.AutoRefresh, new KeyConfig(Key.R, shift: true)),
new CommandBindingConfiguration(Command.ChangeTimelineMode, new[] { Key.T, Key.M }),
new CommandBindingConfiguration(Command.CloseTab, Key.Q),
new CommandBindingConfiguration(Command.Compress, new[] { Key.Y, Key.C }),
new CommandBindingConfiguration(Command.Copy, new[] { Key.Y, Key.Y }),
new CommandBindingConfiguration(Command.CopyHash, new[] { Key.C, Key.H }),
new CommandBindingConfiguration(Command.CopyPath, new[] { Key.C, Key.P }),
new CommandBindingConfiguration(Command.CreateContainer, Key.F7),
new CommandBindingConfiguration(Command.CreateContainer, new[] { Key.C, Key.C }),
new CommandBindingConfiguration(Command.CreateElement, new[] { Key.C, Key.E }),
new CommandBindingConfiguration(Command.Cut, new[] { Key.D, Key.D }),
new CommandBindingConfiguration(Command.Edit, new KeyConfig(Key.F4)),
new CommandBindingConfiguration(Command.EnterRapidTravel, new KeyConfig(Key.OemComma, shift: true)),
new CommandBindingConfiguration(Command.FindByName, new[] { Key.F, Key.N }),
new CommandBindingConfiguration(Command.FindByNameRegex, new[] { Key.F, Key.R }),
new CommandBindingConfiguration(Command.GoToHome, new[] { Key.G, Key.H }),
new CommandBindingConfiguration(Command.GoToPath, new KeyConfig(Key.L, ctrl: true)),
new CommandBindingConfiguration(Command.GoToPath, new[] { Key.G, Key.P }),
new CommandBindingConfiguration(Command.GoToProvider, new[] { Key.G, Key.T }),
new CommandBindingConfiguration(Command.GoToRoot, new[] { Key.G, Key.R }),
new CommandBindingConfiguration(Command.HardDelete, new[] { new KeyConfig(Key.D,shift: true), new KeyConfig(Key.D, shift: true) }),
new CommandBindingConfiguration(Command.Mark, Key.Space),
new CommandBindingConfiguration(Command.MoveToLast, new KeyConfig(Key.G, shift: true)),
new CommandBindingConfiguration(Command.MoveToFirst, new[] { Key.G, Key.G }),
new CommandBindingConfiguration(Command.NextTimelineBlock, Key.L ),
new CommandBindingConfiguration(Command.NextTimelineCommand, Key.J ),
new CommandBindingConfiguration(Command.OpenInFileBrowser, new[] { Key.O, Key.E }),
new CommandBindingConfiguration(Command.PasteMerge, new[] { Key.P, Key.P }),
new CommandBindingConfiguration(Command.PasteOverwrite, new[] { Key.P, Key.O }),
new CommandBindingConfiguration(Command.PasteSkip, new[] { Key.P, Key.S }),
new CommandBindingConfiguration(Command.PinFavorite, new[] { Key.F, Key.P }),
new CommandBindingConfiguration(Command.PreviousTimelineBlock, Key.H ),
new CommandBindingConfiguration(Command.PreviousTimelineCommand, Key.K ),
new CommandBindingConfiguration(Command.Refresh, Key.R),
new CommandBindingConfiguration(Command.Rename, Key.F2),
new CommandBindingConfiguration(Command.Rename, new[] { Key.C, Key.W }),
new CommandBindingConfiguration(Command.RunCommand, new KeyConfig(Key.D4, shift: true)),
new CommandBindingConfiguration(Command.ScanContainerSize, new[] { Key.C, Key.S }),
new CommandBindingConfiguration(Command.ShowAllShortcut, Key.F1),
new CommandBindingConfiguration(Command.SoftDelete, new[] { new KeyConfig(Key.D), new KeyConfig(Key.D, shift: true) }),
new CommandBindingConfiguration(Command.SwitchToLastTab, Key.D9),
new CommandBindingConfiguration(Command.SwitchToTab1, Key.D1),
new CommandBindingConfiguration(Command.SwitchToTab2, Key.D2),
new CommandBindingConfiguration(Command.SwitchToTab3, Key.D3),
new CommandBindingConfiguration(Command.SwitchToTab4, Key.D4),
new CommandBindingConfiguration(Command.SwitchToTab5, Key.D5),
new CommandBindingConfiguration(Command.SwitchToTab6, Key.D6),
new CommandBindingConfiguration(Command.SwitchToTab7, Key.D7),
new CommandBindingConfiguration(Command.SwitchToTab8, Key.D8),
new CommandBindingConfiguration(Command.TimelinePause, new[] { Key.T, Key.P }),
new CommandBindingConfiguration(Command.TimelineRefresh, new[] { Key.T, Key.R }),
new CommandBindingConfiguration(Command.TimelineStart, new[] { Key.T, Key.S }),
new CommandBindingConfiguration(Command.ToggleAdvancedIcons, new[] { Key.Z, Key.I }),
new CommandBindingConfiguration(Command.GoUp, Key.Left),
new CommandBindingConfiguration(Command.Open, Key.Right),
new CommandBindingConfiguration(Command.OpenOrRun, Key.Enter),
new CommandBindingConfiguration(Command.MoveCursorUp, Key.Up),
new CommandBindingConfiguration(Command.MoveCursorDown, Key.Down),
new CommandBindingConfiguration(Command.MoveCursorUpPage, Key.PageUp),
new CommandBindingConfiguration(Command.MoveCursorDownPage, Key.PageDown),
//new CommandBindingConfiguration(ConfigCommand.AutoRefresh, new KeyConfig(Key.R, shift: true)),
//new CommandBindingConfiguration(ConfigCommand.ChangeTimelineMode, new[] { Key.T, Key.M }),
new CommandBindingConfiguration(CloseTabCommand.CommandName, Key.Q),
//new CommandBindingConfiguration(ConfigCommand.Compress, new[] { Key.Y, Key.C }),
new CommandBindingConfiguration(CopyCommand.CommandName, new[] { Key.Y, Key.Y }),
//new CommandBindingConfiguration(ConfigCommand.CopyHash, new[] { Key.C, Key.H }),
//new CommandBindingConfiguration(ConfigCommand.CopyPath, new[] { Key.C, Key.P }),
//new CommandBindingConfiguration(ConfigCommand.CreateContainer, Key.F7),
//new CommandBindingConfiguration(ConfigCommand.CreateContainer, new[] { Key.C, Key.C }),
//new CommandBindingConfiguration(ConfigCommand.CreateElement, new[] { Key.C, Key.E }),
//new CommandBindingConfiguration(ConfigCommand.Cut, new[] { Key.D, Key.D }),
//new CommandBindingConfiguration(ConfigCommand.Edit, new KeyConfig(Key.F4)),
new CommandBindingConfiguration(EnterRapidTravelCommand.CommandName, new KeyConfig(Key.OemComma, shift: true)),
//new CommandBindingConfiguration(ConfigCommand.FindByName, new[] { Key.F, Key.N }),
//new CommandBindingConfiguration(ConfigCommand.FindByNameRegex, new[] { Key.F, Key.R }),
//new CommandBindingConfiguration(ConfigCommand.GoToHome, new[] { Key.G, Key.H }),
//new CommandBindingConfiguration(ConfigCommand.GoToPath, new KeyConfig(Key.L, ctrl: true)),
//new CommandBindingConfiguration(ConfigCommand.GoToPath, new[] { Key.G, Key.P }),
//new CommandBindingConfiguration(ConfigCommand.GoToProvider, new[] { Key.G, Key.T }),
//new CommandBindingConfiguration(ConfigCommand.GoToRoot, new[] { Key.G, Key.R }),
//new CommandBindingConfiguration(ConfigCommand.HardDelete, new[] { new KeyConfig(Key.D,shift: true), new KeyConfig(Key.D, shift: true) }),
new CommandBindingConfiguration(MarkCommand.CommandName, Key.Space),
//new CommandBindingConfiguration(ConfigCommand.MoveToLast, new KeyConfig(Key.G, shift: true)),
//new CommandBindingConfiguration(ConfigCommand.MoveToFirst, new[] { Key.G, Key.G }),
//new CommandBindingConfiguration(ConfigCommand.NextTimelineBlock, Key.L ),
//new CommandBindingConfiguration(ConfigCommand.NextTimelineCommand, Key.J ),
//new CommandBindingConfiguration(ConfigCommand.OpenInFileBrowser, new[] { Key.O, Key.E }),
new CommandBindingConfiguration(PasteCommand.PasteMergeCommandName, new[] { Key.P, Key.P }),
new CommandBindingConfiguration(PasteCommand.PasteOverwriteCommandName, new[] { Key.P, Key.O }),
new CommandBindingConfiguration(PasteCommand.PasteSkipCommandName, new[] { Key.P, Key.S }),
//new CommandBindingConfiguration(ConfigCommand.PinFavorite, new[] { Key.F, Key.P }),
//new CommandBindingConfiguration(ConfigCommand.PreviousTimelineBlock, Key.H ),
//new CommandBindingConfiguration(ConfigCommand.PreviousTimelineCommand, Key.K ),
//new CommandBindingConfiguration(ConfigCommand.Refresh, Key.R),
//new CommandBindingConfiguration(ConfigCommand.Rename, Key.F2),
//new CommandBindingConfiguration(ConfigCommand.Rename, new[] { Key.C, Key.W }),
//new CommandBindingConfiguration(ConfigCommand.RunCommand, new KeyConfig(Key.D4, shift: true)),
//new CommandBindingConfiguration(ConfigCommand.ScanContainerSize, new[] { Key.C, Key.S }),
//new CommandBindingConfiguration(ConfigCommand.ShowAllShortcut, Key.F1),
//new CommandBindingConfiguration(ConfigCommand.SoftDelete, new[] { new KeyConfig(Key.D), new KeyConfig(Key.D, shift: true) }),
new CommandBindingConfiguration(SwitchToTabCommand.SwitchToLastTabCommandName, Key.D9),
new CommandBindingConfiguration(SwitchToTabCommand.SwitchToTab1CommandName, Key.D1),
new CommandBindingConfiguration(SwitchToTabCommand.SwitchToTab2CommandName, Key.D2),
new CommandBindingConfiguration(SwitchToTabCommand.SwitchToTab3CommandName, Key.D3),
new CommandBindingConfiguration(SwitchToTabCommand.SwitchToTab4CommandName, Key.D4),
new CommandBindingConfiguration(SwitchToTabCommand.SwitchToTab5CommandName, Key.D5),
new CommandBindingConfiguration(SwitchToTabCommand.SwitchToTab6CommandName, Key.D6),
new CommandBindingConfiguration(SwitchToTabCommand.SwitchToTab7CommandName, Key.D7),
new CommandBindingConfiguration(SwitchToTabCommand.SwitchToTab8CommandName, Key.D8),
//new CommandBindingConfiguration(ConfigCommand.TimelinePause, new[] { Key.T, Key.P }),
//new CommandBindingConfiguration(ConfigCommand.TimelineRefresh, new[] { Key.T, Key.R }),
//new CommandBindingConfiguration(ConfigCommand.TimelineStart, new[] { Key.T, Key.S }),
//new CommandBindingConfiguration(ConfigCommand.ToggleAdvancedIcons, new[] { Key.Z, Key.I }),
new CommandBindingConfiguration(GoUpCommand.CommandName, Key.Left),
new CommandBindingConfiguration(OpenSelectedCommand.CommandName, Key.Right),
//new CommandBindingConfiguration(ConfigCommand.OpenOrRun, Key.Enter),
new CommandBindingConfiguration(MoveCursorUpCommand.CommandName, Key.Up),
new CommandBindingConfiguration(MoveCursorDownCommand.CommandName, Key.Down),
//new CommandBindingConfiguration(ConfigCommand.MoveCursorUpPage, Key.PageUp),
//new CommandBindingConfiguration(ConfigCommand.MoveCursorDownPage, Key.PageDown),
};
}

View File

@@ -1,5 +1,3 @@
using System.Collections.Generic;
namespace FileTime.GuiApp.Configuration;
public class ProgramsConfiguration

View File

@@ -4,7 +4,7 @@ namespace FileTime.GuiApp.Services;
public interface IKeyboardConfigurationService
{
IReadOnlyList<CommandBindingConfiguration> CommandBindings { get; }
IReadOnlyList<CommandBindingConfiguration> UniversalCommandBindings { get; }
IReadOnlyList<CommandBindingConfiguration> AllShortcut { get; }
IReadOnlyDictionary<string, CommandBindingConfiguration> CommandBindings { get; }
IReadOnlyDictionary<string, CommandBindingConfiguration> UniversalCommandBindings { get; }
IReadOnlyDictionary<string, CommandBindingConfiguration> AllShortcut { get; }
}

View File

@@ -1,4 +1,3 @@
using System.Collections.ObjectModel;
using FileTime.App.Core.Models;
using FileTime.App.Core.ViewModels;
using FileTime.GuiApp.Configuration;