|
3 | 3 | using Microsoft.Win32; |
4 | 4 | using MzLibUtil; |
5 | 5 | using Nett; |
6 | | -using Proteomics; |
7 | 6 | using System; |
8 | 7 | using System.Collections.Generic; |
9 | 8 | using System.Collections.ObjectModel; |
|
14 | 13 | using System.Threading.Tasks; |
15 | 14 | using System.Windows; |
16 | 15 | using System.Windows.Controls; |
| 16 | +using System.Windows.Controls.Primitives; |
17 | 17 | using System.Windows.Documents; |
18 | 18 | using System.Windows.Input; |
19 | 19 | using System.Windows.Navigation; |
@@ -1058,34 +1058,91 @@ private void OpenOutputFolder_Click(object sender, RoutedEventArgs e) |
1058 | 1058 | OpenFolder(outputFolder); |
1059 | 1059 | } |
1060 | 1060 |
|
| 1061 | + |
| 1062 | + |
| 1063 | + // This is designed for the entire window |
| 1064 | + private void Window_PreviewKeyDown(object sender, KeyEventArgs e) |
| 1065 | + { |
| 1066 | + if (!RunTasksButton.IsEnabled) return; |
| 1067 | + switch (e.Key) |
| 1068 | + { |
| 1069 | + // run all tasks |
| 1070 | + case Key.Enter when (Keyboard.Modifiers & ModifierKeys.Control) == ModifierKeys.Control: |
| 1071 | + RunTasksButton.RaiseEvent(new RoutedEventArgs(ButtonBase.ClickEvent)); |
| 1072 | + e.Handled = true; |
| 1073 | + break; |
| 1074 | + |
| 1075 | + default: |
| 1076 | + e.Handled = false; break; |
| 1077 | + } |
| 1078 | + } |
| 1079 | + |
| 1080 | + private MetaMorpheusTask? _clipboard; |
| 1081 | + |
1061 | 1082 | /// <summary> |
1062 | 1083 | /// Handles keyboard input. |
| 1084 | + /// Note: This is designed for all boxes which contain lists of items such as database, tasks, or spectra files. |
1063 | 1085 | /// Note: Window_KeyDown is NOT used because it does not seem to capture keyboard input from a DataGrid. |
1064 | 1086 | /// </summary> |
1065 | | - private void Window_PreviewKeyDown(object sender, KeyEventArgs e) |
| 1087 | + private void BoxWithList_PreviewKeyDown(object sender, KeyEventArgs e) |
1066 | 1088 | { |
1067 | | - if (RunTasksButton.IsEnabled) |
| 1089 | + if (!RunTasksButton.IsEnabled) return; |
| 1090 | + |
| 1091 | + switch (e.Key) |
1068 | 1092 | { |
1069 | 1093 | // delete selected task/db/spectra |
1070 | | - if (e.Key == Key.Delete || e.Key == Key.Back) |
1071 | | - { |
| 1094 | + case Key.Delete: |
| 1095 | + case Key.Back: |
1072 | 1096 | Delete_Click(sender, e); |
1073 | 1097 | e.Handled = true; |
1074 | | - } |
| 1098 | + break; |
1075 | 1099 |
|
1076 | 1100 | // move task down |
1077 | | - if (e.Key == Key.Add || e.Key == Key.OemPlus) |
1078 | | - { |
| 1101 | + case Key.Add: |
| 1102 | + case Key.OemPlus: |
1079 | 1103 | MoveSelectedTask_Click(sender, e, false); |
1080 | 1104 | e.Handled = true; |
1081 | | - } |
| 1105 | + break; |
1082 | 1106 |
|
1083 | 1107 | // move task up |
1084 | | - if (e.Key == Key.Subtract || e.Key == Key.OemMinus) |
1085 | | - { |
| 1108 | + case Key.Subtract: |
| 1109 | + case Key.OemMinus: |
1086 | 1110 | MoveSelectedTask_Click(sender, e, true); |
1087 | 1111 | e.Handled = true; |
1088 | | - } |
| 1112 | + break; |
| 1113 | + |
| 1114 | + // copy selected task |
| 1115 | + case Key.C when (Keyboard.Modifiers & ModifierKeys.Control) == ModifierKeys.Control: |
| 1116 | + if (sender is TreeView { SelectedItem: PreRunTask preRunTask }) |
| 1117 | + { |
| 1118 | + _clipboard = preRunTask.metaMorpheusTask; |
| 1119 | + } |
| 1120 | + e.Handled = true; |
| 1121 | + |
| 1122 | + break; |
| 1123 | + |
| 1124 | + // paste selected task |
| 1125 | + case Key.V when (Keyboard.Modifiers & ModifierKeys.Control) == ModifierKeys.Control: |
| 1126 | + if (sender is TreeView && _clipboard != null) |
| 1127 | + { |
| 1128 | + PreRunTasks.Add(new PreRunTask(_clipboard)); |
| 1129 | + UpdateGuiOnPreRunChange(); |
| 1130 | + } |
| 1131 | + e.Handled = true; |
| 1132 | + break; |
| 1133 | + |
| 1134 | + // Duplicate Selected Task |
| 1135 | + case Key.D when (Keyboard.Modifiers & ModifierKeys.Control) == ModifierKeys.Control: |
| 1136 | + if (sender is TreeView { SelectedItem: PreRunTask task }) |
| 1137 | + { |
| 1138 | + PreRunTasks.Add(task); |
| 1139 | + UpdateGuiOnPreRunChange(); |
| 1140 | + } |
| 1141 | + e.Handled = true; |
| 1142 | + break; |
| 1143 | + |
| 1144 | + default: |
| 1145 | + e.Handled = false; break; |
1089 | 1146 | } |
1090 | 1147 | } |
1091 | 1148 |
|
|
0 commit comments