diff options
author | sr55 <[email protected]> | 2012-07-08 11:25:45 +0000 |
---|---|---|
committer | sr55 <[email protected]> | 2012-07-08 11:25:45 +0000 |
commit | da44aa82136fb9423f041b200b3e40632b8287e7 (patch) | |
tree | 3488aa667e0bcb0b8a54eec8c11fd8f98e3c2c41 /win/CS | |
parent | 7746907bf0ae4ef3f02aaa28a34a493dade912a2 (diff) |
WinGui: Add support for keyboard shortcuts. These are slightly different to the old UI. See Below.
// Start Encode (Ctrl+S)
// Stop Encode (Ctrl+K)
// Open Log Window (Ctrl+L)
// Open Queue Window (Ctrl+Q)
// Add to Queue (Ctrl+A)
// Scan a File (Ctrl+F)
// Scan a Folder (Ctrl+R)
git-svn-id: svn://svn.handbrake.fr/HandBrake/trunk@4820 b64f7644-9d1e-0410-96f1-a4d463321fa5
Diffstat (limited to 'win/CS')
-rw-r--r-- | win/CS/HandBrakeWPF/Commands/ProcessShortcutCommand.cs | 111 | ||||
-rw-r--r-- | win/CS/HandBrakeWPF/HandBrakeWPF.csproj | 1 | ||||
-rw-r--r-- | win/CS/HandBrakeWPF/ViewModels/Interfaces/IMainViewModel.cs | 35 | ||||
-rw-r--r-- | win/CS/HandBrakeWPF/Views/MainView.xaml.cs | 2 | ||||
-rw-r--r-- | win/CS/HandBrakeWPF/Views/ShellView.xaml.cs | 20 |
5 files changed, 168 insertions, 1 deletions
diff --git a/win/CS/HandBrakeWPF/Commands/ProcessShortcutCommand.cs b/win/CS/HandBrakeWPF/Commands/ProcessShortcutCommand.cs new file mode 100644 index 000000000..cc5b546a2 --- /dev/null +++ b/win/CS/HandBrakeWPF/Commands/ProcessShortcutCommand.cs @@ -0,0 +1,111 @@ +// --------------------------------------------------------------------------------------------------------------------
+// <copyright file="ProcessShortcutCommand.cs" company="HandBrake Project (http://handbrake.fr)">
+// This file is part of the HandBrake source code - It may be used under the terms of the GNU General Public License.
+// </copyright>
+// <summary>
+// Keyboard Shortcut Processor
+// </summary>
+// --------------------------------------------------------------------------------------------------------------------
+
+namespace HandBrakeWPF.Commands
+{
+ using System;
+ using System.Windows.Input;
+
+ using Caliburn.Micro;
+
+ using HandBrakeWPF.ViewModels.Interfaces;
+
+ /// <summary>
+ /// Keyboard Shortcut Processor
+ /// </summary>
+ public class ProcessShortcutCommand : ICommand
+ {
+ /// <summary>
+ /// The Gesture
+ /// </summary>
+ private readonly KeyGesture gesture;
+
+ /// <summary>
+ /// Initializes a new instance of the <see cref="ProcessShortcutCommand"/> class.
+ /// </summary>
+ /// <param name="gesture">
+ /// The gesture.
+ /// </param>
+ public ProcessShortcutCommand(KeyGesture gesture)
+ {
+ this.gesture = gesture;
+ }
+
+ /// <summary>
+ /// Defines the method to be called when the command is invoked.
+ /// </summary>
+ /// <param name="parameter">Data used by the command. If the command does not require data to be passed, this object can be set to null.</param>
+ public void Execute(object parameter)
+ {
+ if (gesture != null)
+ {
+ IMainViewModel mainViewModel = IoC.Get<IMainViewModel>();
+
+ // Start Encode (Ctrl+S)
+ if (gesture.Modifiers == ModifierKeys.Control && gesture.Key == Key.S)
+ {
+ mainViewModel.StartEncode();
+ }
+
+ // Stop Encode (Ctrl+K)
+ if (gesture.Modifiers == ModifierKeys.Control && gesture.Key == Key.K)
+ {
+ mainViewModel.StopEncode();
+ }
+
+ // Open Log Window (Ctrl+L)
+ if (gesture.Modifiers == ModifierKeys.Control && gesture.Key == Key.L)
+ {
+ mainViewModel.OpenLogWindow();
+ }
+
+ // Open Queue Window (Ctrl+Q)
+ if (gesture.Modifiers == ModifierKeys.Control && gesture.Key == Key.Q)
+ {
+ mainViewModel.OpenQueueWindow();
+ }
+
+ // Add to Queue (Ctrl+A)
+ if (gesture.Modifiers == ModifierKeys.Control && gesture.Key == Key.A)
+ {
+ mainViewModel.AddToQueue();
+ }
+
+ // Scan a File (Ctrl+F)
+ if (gesture.Modifiers == ModifierKeys.Control && gesture.Key == Key.F)
+ {
+ mainViewModel.FileScan();
+ }
+
+ // Scan a Folder (Ctrl+R)
+ if (gesture.Modifiers == ModifierKeys.Control && gesture.Key == Key.R)
+ {
+ mainViewModel.FolderScan();
+ }
+ }
+ }
+
+ /// <summary>
+ /// Defines the method that determines whether the command can execute in its current state.
+ /// </summary>
+ /// <returns>
+ /// true if this command can be executed; otherwise, false.
+ /// </returns>
+ /// <param name="parameter">Data used by the command. If the command does not require data to be passed, this object can be set to null.</param>
+ public bool CanExecute(object parameter)
+ {
+ return true;
+ }
+
+ /// <summary>
+ /// Can Execute Changed
+ /// </summary>
+ public event EventHandler CanExecuteChanged;
+ }
+}
diff --git a/win/CS/HandBrakeWPF/HandBrakeWPF.csproj b/win/CS/HandBrakeWPF/HandBrakeWPF.csproj index e8e57eb23..7ef57cd74 100644 --- a/win/CS/HandBrakeWPF/HandBrakeWPF.csproj +++ b/win/CS/HandBrakeWPF/HandBrakeWPF.csproj @@ -111,6 +111,7 @@ <SubType>Designer</SubType>
</ApplicationDefinition>
<Compile Include="AttachedProperties\MenuItemExtensions.cs" />
+ <Compile Include="Commands\ProcessShortcutCommand.cs" />
<Compile Include="Controls\Loading.xaml.cs">
<DependentUpon>Loading.xaml</DependentUpon>
</Compile>
diff --git a/win/CS/HandBrakeWPF/ViewModels/Interfaces/IMainViewModel.cs b/win/CS/HandBrakeWPF/ViewModels/Interfaces/IMainViewModel.cs index e9e2c4901..8f1f6e5a6 100644 --- a/win/CS/HandBrakeWPF/ViewModels/Interfaces/IMainViewModel.cs +++ b/win/CS/HandBrakeWPF/ViewModels/Interfaces/IMainViewModel.cs @@ -25,5 +25,40 @@ namespace HandBrakeWPF.ViewModels.Interfaces /// Shutdown the Application
/// </summary>
void ExitApplication();
+
+ /// <summary>
+ /// Open the Log Window
+ /// </summary>
+ void OpenLogWindow();
+
+ /// <summary>
+ /// Open the Queue Window.
+ /// </summary>
+ void OpenQueueWindow();
+
+ /// <summary>
+ /// Add the current task to the queue.
+ /// </summary>
+ void AddToQueue();
+
+ /// <summary>
+ /// File Scan
+ /// </summary>
+ void FileScan();
+
+ /// <summary>
+ /// Folder Scan
+ /// </summary>
+ void FolderScan();
+
+ /// <summary>
+ /// Stop an Encode.
+ /// </summary>
+ void StopEncode();
+
+ /// <summary>
+ /// Start an Encode
+ /// </summary>
+ void StartEncode();
}
}
\ No newline at end of file diff --git a/win/CS/HandBrakeWPF/Views/MainView.xaml.cs b/win/CS/HandBrakeWPF/Views/MainView.xaml.cs index 8b21e2d40..c6bb63568 100644 --- a/win/CS/HandBrakeWPF/Views/MainView.xaml.cs +++ b/win/CS/HandBrakeWPF/Views/MainView.xaml.cs @@ -9,8 +9,10 @@ namespace HandBrakeWPF.Views
{
+ using System;
using System.Windows;
using System.Windows.Controls;
+ using System.Windows.Input;
/// <summary>
/// Interaction logic for MainView.xaml
diff --git a/win/CS/HandBrakeWPF/Views/ShellView.xaml.cs b/win/CS/HandBrakeWPF/Views/ShellView.xaml.cs index 6b291702d..9a24120e1 100644 --- a/win/CS/HandBrakeWPF/Views/ShellView.xaml.cs +++ b/win/CS/HandBrakeWPF/Views/ShellView.xaml.cs @@ -4,13 +4,15 @@ // </copyright>
// <summary>
// Interaction logic for ShellView.xaml
-// </summary>
+// </summary>
// --------------------------------------------------------------------------------------------------------------------
namespace HandBrakeWPF.Views
{
using System.Windows;
+ using System.Windows.Input;
+ using HandBrakeWPF.Commands;
using HandBrakeWPF.ViewModels.Interfaces;
/// <summary>
@@ -24,6 +26,22 @@ namespace HandBrakeWPF.Views public ShellView()
{
this.InitializeComponent();
+
+ // Start Encode (Ctrl+S)
+ // Stop Encode (Ctrl+K)
+ // Open Log Window (Ctrl+L)
+ // Open Queue Window (Ctrl+Q)
+ // Add to Queue (Ctrl+A)
+ // Scan a File (Ctrl+F)
+ // Scan a Folder (Ctrl+R)
+
+ this.InputBindings.Add(new InputBinding(new ProcessShortcutCommand(new KeyGesture(Key.S, ModifierKeys.Control)), new KeyGesture(Key.S, ModifierKeys.Control)));
+ this.InputBindings.Add(new InputBinding(new ProcessShortcutCommand(new KeyGesture(Key.K, ModifierKeys.Control)), new KeyGesture(Key.K, ModifierKeys.Control)));
+ this.InputBindings.Add(new InputBinding(new ProcessShortcutCommand(new KeyGesture(Key.L, ModifierKeys.Control)), new KeyGesture(Key.L, ModifierKeys.Control)));
+ this.InputBindings.Add(new InputBinding(new ProcessShortcutCommand(new KeyGesture(Key.Q, ModifierKeys.Control)), new KeyGesture(Key.Q, ModifierKeys.Control)));
+ this.InputBindings.Add(new InputBinding(new ProcessShortcutCommand(new KeyGesture(Key.A, ModifierKeys.Control)), new KeyGesture(Key.A, ModifierKeys.Control)));
+ this.InputBindings.Add(new InputBinding(new ProcessShortcutCommand(new KeyGesture(Key.F, ModifierKeys.Control)), new KeyGesture(Key.F, ModifierKeys.Control)));
+ this.InputBindings.Add(new InputBinding(new ProcessShortcutCommand(new KeyGesture(Key.R, ModifierKeys.Control)), new KeyGesture(Key.R, ModifierKeys.Control)));
}
/// <summary>
|