[#31] AdministrationWindow: Add shortcuts

This commit is contained in:
2024-03-24 21:53:18 +01:00
parent 555ce228d4
commit dd408ca40e
9 changed files with 279 additions and 49 deletions

View File

@ -11,6 +11,7 @@ using System.Windows;
using System.Windows.Controls; using System.Windows.Controls;
using System.Windows.Threading; using System.Windows.Threading;
using Xceed.Wpf.Toolkit; using Xceed.Wpf.Toolkit;
using System.Windows.Input;
namespace Elwig.Windows { namespace Elwig.Windows {
public abstract class AdministrationWindow : ContextWindow { public abstract class AdministrationWindow : ContextWindow {
@ -48,7 +49,18 @@ namespace Elwig.Windows {
private readonly Dictionary<Control, int?> OriginalValues; private readonly Dictionary<Control, int?> OriginalValues;
private readonly Dictionary<Control, int?> DefaultValues; private readonly Dictionary<Control, int?> DefaultValues;
private readonly RoutedCommand AltInsert = new("AltInsert", typeof(AdministrationWindow), [new KeyGesture(Key.Insert, ModifierKeys.Alt)]);
private readonly RoutedCommand AltDelete = new("AltDelete", typeof(AdministrationWindow), [new KeyGesture(Key.Delete, ModifierKeys.Alt)]);
private readonly RoutedCommand CtrlZ = new("CtrlZ", typeof(AdministrationWindow), [new KeyGesture(Key.Z, ModifierKeys.Control)]);
private readonly RoutedCommand CtrlS = new("CtrlS", typeof(AdministrationWindow), [new KeyGesture(Key.S, ModifierKeys.Control)]);
private readonly RoutedCommand CtrlB = new("CtrlB", typeof(AdministrationWindow), [new KeyGesture(Key.B, ModifierKeys.Control)]);
public AdministrationWindow() : base() { public AdministrationWindow() : base() {
CommandBindings.Add(new CommandBinding(AltInsert, ShortcutNew));
CommandBindings.Add(new CommandBinding(AltDelete, ShortcutDelete));
CommandBindings.Add(new CommandBinding(CtrlZ, ShortcutReset));
CommandBindings.Add(new CommandBinding(CtrlS, ShortcutSave));
CommandBindings.Add(new CommandBinding(CtrlB, ShortcutEdit));
IsEditing = false; IsEditing = false;
IsCreating = false; IsCreating = false;
ExemptInputs = []; ExemptInputs = [];
@ -69,6 +81,18 @@ namespace Elwig.Windows {
Loaded += base.OnLoaded; Loaded += base.OnLoaded;
} }
abstract protected void ShortcutNew();
abstract protected void ShortcutDelete();
abstract protected void ShortcutReset();
abstract protected void ShortcutSave();
abstract protected void ShortcutEdit();
private void ShortcutNew(object sender, EventArgs evt) { ShortcutNew(); }
private void ShortcutDelete(object sender, EventArgs evt) { ShortcutDelete(); }
private void ShortcutReset(object sender, EventArgs evt) { ShortcutReset(); }
private void ShortcutSave(object sender, EventArgs evt) { ShortcutSave(); }
private void ShortcutEdit(object sender, EventArgs evt) { ShortcutEdit(); }
private new void OnLoaded(object sender, RoutedEventArgs evt) { private new void OnLoaded(object sender, RoutedEventArgs evt) {
TextBoxInputs = ControlUtils.FindAllChildren<TextBox>(this, ExemptInputs).ToArray(); TextBoxInputs = ControlUtils.FindAllChildren<TextBox>(this, ExemptInputs).ToArray();
ComboBoxInputs = ControlUtils.FindAllChildren<ComboBox>(this, ExemptInputs).ToArray(); ComboBoxInputs = ControlUtils.FindAllChildren<ComboBox>(this, ExemptInputs).ToArray();

View File

@ -95,18 +95,42 @@
</DataGrid> </DataGrid>
<Button x:Name="NewAreaCommitmentButton" Content="Neu" Click="NewAreaCommitmentButton_Click" <Button x:Name="NewAreaCommitmentButton" Content="Neu" Click="NewAreaCommitmentButton_Click"
HorizontalAlignment="Stretch" VerticalAlignment="Bottom" Margin="5,5,2.5,10" Grid.Column="0" Grid.Row="2"/> HorizontalAlignment="Stretch" VerticalAlignment="Bottom" Margin="5,5,2.5,10" Grid.Column="0" Grid.Row="2">
<Button.ToolTip>
<TextBlock FontWeight="Bold">Alt+Einfg</TextBlock>
</Button.ToolTip>
</Button>
<Button x:Name="EditAreaCommitmentButton" Content="Bearbeiten" Click="EditAreaCommitmentButton_Click" IsEnabled="False" <Button x:Name="EditAreaCommitmentButton" Content="Bearbeiten" Click="EditAreaCommitmentButton_Click" IsEnabled="False"
HorizontalAlignment="Stretch" VerticalAlignment="Bottom" Margin="2.5,5,2.5,10" Grid.Column="1" Grid.Row="2"/> HorizontalAlignment="Stretch" VerticalAlignment="Bottom" Margin="2.5,5,2.5,10" Grid.Column="1" Grid.Row="2">
<Button.ToolTip>
<TextBlock FontWeight="Bold">Strg+B</TextBlock>
</Button.ToolTip>
</Button>
<Button x:Name="DeleteAreaCommitmentButton" Content="Löschen" Click="DeleteAreaCommitmentButton_Click" IsEnabled="False" <Button x:Name="DeleteAreaCommitmentButton" Content="Löschen" Click="DeleteAreaCommitmentButton_Click" IsEnabled="False"
HorizontalAlignment="Stretch" VerticalAlignment="Bottom" Margin="2.5,5,5,10" Grid.Column="2" Grid.Row="2"/> HorizontalAlignment="Stretch" VerticalAlignment="Bottom" Margin="2.5,5,5,10" Grid.Column="2" Grid.Row="2">
<Button.ToolTip>
<TextBlock FontWeight="Bold">Alt+Entf</TextBlock>
</Button.ToolTip>
</Button>
<Button x:Name="AreaCommitmentSaveButton" Content="Speichern" Click="AreaCommitmentSaveButton_Click" IsEnabled="False" Visibility="Hidden" <Button x:Name="AreaCommitmentSaveButton" Content="Speichern" Click="AreaCommitmentSaveButton_Click" IsEnabled="False" Visibility="Hidden"
HorizontalAlignment="Stretch" VerticalAlignment="Bottom" Margin="5,5,2.5,10" Grid.Column="0" Grid.Row="2"/> HorizontalAlignment="Stretch" VerticalAlignment="Bottom" Margin="5,5,2.5,10" Grid.Column="0" Grid.Row="2">
<Button.ToolTip>
<TextBlock FontWeight="Bold">Strg+S</TextBlock>
</Button.ToolTip>
</Button>
<Button x:Name="AreaCommitmentResetButton" Content="Zurücksetzen" Click="AreaCommitmentResetButton_Click" IsEnabled="False" Visibility="Hidden" <Button x:Name="AreaCommitmentResetButton" Content="Zurücksetzen" Click="AreaCommitmentResetButton_Click" IsEnabled="False" Visibility="Hidden"
HorizontalAlignment="Stretch" VerticalAlignment="Bottom" Margin="2.5,5,2.5,10" Grid.Column="1" Grid.Row="2"/> HorizontalAlignment="Stretch" VerticalAlignment="Bottom" Margin="2.5,5,2.5,10" Grid.Column="1" Grid.Row="2">
<Button.ToolTip>
<TextBlock FontWeight="Bold">Strg+Z</TextBlock>
</Button.ToolTip>
</Button>
<Button x:Name="AreaCommitmentCancelButton" Content="Abbrechen" Click="AreaCommitmentCancelButton_Click" IsEnabled="False" Visibility="Hidden" IsCancel="True" <Button x:Name="AreaCommitmentCancelButton" Content="Abbrechen" Click="AreaCommitmentCancelButton_Click" IsEnabled="False" Visibility="Hidden" IsCancel="True"
HorizontalAlignment="Stretch" VerticalAlignment="Bottom" Margin="2.5,5,5,10" Grid.Column="2" Grid.Row="2"/> HorizontalAlignment="Stretch" VerticalAlignment="Bottom" Margin="2.5,5,5,10" Grid.Column="2" Grid.Row="2">
<Button.ToolTip>
<TextBlock FontWeight="Bold">Esc</TextBlock>
</Button.ToolTip>
</Button>
</Grid> </Grid>
<GridSplitter Grid.Column="1" Grid.Row="0" HorizontalAlignment="Stretch" VerticalAlignment="Stretch"/> <GridSplitter Grid.Column="1" Grid.Row="0" HorizontalAlignment="Stretch" VerticalAlignment="Stretch"/>

View File

@ -209,7 +209,13 @@ namespace Elwig.Windows {
await RefreshAreaCommitmentList(); await RefreshAreaCommitmentList();
} }
private void NewAreaCommitmentButton_Click(object sender, RoutedEventArgs evt) { protected override void ShortcutNew() {
if (!NewAreaCommitmentButton.IsEnabled || NewAreaCommitmentButton.Visibility != Visibility.Visible)
return;
NewAreaCommitmentButton_Click(null, null);
}
private void NewAreaCommitmentButton_Click(object? sender, RoutedEventArgs? evt) {
IsCreating = true; IsCreating = true;
AreaCommitmentList.IsEnabled = false; AreaCommitmentList.IsEnabled = false;
AreaCommitmentList.SelectedItem = null; AreaCommitmentList.SelectedItem = null;
@ -220,7 +226,14 @@ namespace Elwig.Windows {
LockSearchInputs(); LockSearchInputs();
} }
private void EditAreaCommitmentButton_Click(object sender, RoutedEventArgs evt) {
protected override void ShortcutEdit() {
if (!EditAreaCommitmentButton.IsEnabled || EditAreaCommitmentButton.Visibility != Visibility.Visible)
return;
EditAreaCommitmentButton_Click(null, null);
}
private void EditAreaCommitmentButton_Click(object? sender, RoutedEventArgs? evt) {
if (AreaCommitmentList.SelectedItem == null) if (AreaCommitmentList.SelectedItem == null)
return; return;
@ -233,14 +246,20 @@ namespace Elwig.Windows {
LockSearchInputs(); LockSearchInputs();
} }
private async void DeleteAreaCommitmentButton_Click(object sender, RoutedEventArgs evt) { protected override void ShortcutDelete() {
if (!DeleteAreaCommitmentButton.IsEnabled || DeleteAreaCommitmentButton.Visibility != Visibility.Visible)
return;
DeleteAreaCommitmentButton_Click(null, null);
}
private async void DeleteAreaCommitmentButton_Click(object? sender, RoutedEventArgs? evt) {
AreaCom a = (AreaCom)AreaCommitmentList.SelectedItem; AreaCom a = (AreaCom)AreaCommitmentList.SelectedItem;
if (a == null) return; if (a == null) return;
var r = MessageBox.Show( var r = MessageBox.Show(
$"Soll die Flächenbindung {a.GstNr} ({a.Area} m²) wirklich unwiderruflich gelöscht werden?", $"Soll die Flächenbindung {a.GstNr} ({a.Area} m²) wirklich unwiderruflich gelöscht werden?",
"Flächenbindung löschen", MessageBoxButton.YesNo, MessageBoxImage.Warning, MessageBoxResult.No); "Flächenbindung löschen", MessageBoxButton.OKCancel, MessageBoxImage.Warning, MessageBoxResult.Cancel);
if (r == MessageBoxResult.Yes) { if (r == MessageBoxResult.OK) {
using var ctx = new AppDbContext(); using var ctx = new AppDbContext();
ctx.Remove(a); ctx.Remove(a);
await ctx.SaveChangesAsync(); await ctx.SaveChangesAsync();
@ -291,7 +310,13 @@ namespace Elwig.Windows {
return newFbNr; return newFbNr;
} }
private async void AreaCommitmentSaveButton_Click(object sender, RoutedEventArgs evt) { protected override void ShortcutSave() {
if (!AreaCommitmentSaveButton.IsEnabled || AreaCommitmentSaveButton.Visibility != Visibility.Visible)
return;
AreaCommitmentSaveButton_Click(null, null);
}
private async void AreaCommitmentSaveButton_Click(object? sender, RoutedEventArgs? evt) {
int? fbnr = null; int? fbnr = null;
try { try {
fbnr = await UpdateAreaCom((AreaCommitmentList.SelectedItem as AreaCom)?.FbNr); fbnr = await UpdateAreaCom((AreaCommitmentList.SelectedItem as AreaCom)?.FbNr);
@ -314,7 +339,13 @@ namespace Elwig.Windows {
ControlUtils.SelectItem(AreaCommitmentList, AreaCommitmentList.ItemsSource.Cast<AreaCom>().Where(a => a.FbNr == fbnr).FirstOrDefault()); ControlUtils.SelectItem(AreaCommitmentList, AreaCommitmentList.ItemsSource.Cast<AreaCom>().Where(a => a.FbNr == fbnr).FirstOrDefault());
} }
private void AreaCommitmentResetButton_Click(object sender, RoutedEventArgs evt) { protected override void ShortcutReset() {
if (!AreaCommitmentResetButton.IsEnabled || AreaCommitmentResetButton.Visibility != Visibility.Visible)
return;
AreaCommitmentResetButton_Click(null, null);
}
private void AreaCommitmentResetButton_Click(object? sender, RoutedEventArgs? evt) {
if (IsEditing) { if (IsEditing) {
RefreshInputs(); RefreshInputs();
} else if (IsCreating) { } else if (IsCreating) {

View File

@ -559,15 +559,31 @@
<Button x:Name="EditButton" Content="Bearbeiten" <Button x:Name="EditButton" Content="Bearbeiten"
HorizontalAlignment="Center" VerticalAlignment="Bottom" Margin="0,0,0,10" Width="120" HorizontalAlignment="Center" VerticalAlignment="Bottom" Margin="0,0,0,10" Width="120"
Click="EditButton_Click"/> Click="EditButton_Click">
<Button.ToolTip>
<TextBlock FontWeight="Bold">Strg+B</TextBlock>
</Button.ToolTip>
</Button>
<Button x:Name="SaveButton" Content="Speichern" IsEnabled="False" <Button x:Name="SaveButton" Content="Speichern" IsEnabled="False"
HorizontalAlignment="Center" VerticalAlignment="Bottom" Margin="0,0,250,10" Width="120" HorizontalAlignment="Center" VerticalAlignment="Bottom" Margin="0,0,250,10" Width="120"
Click="SaveButton_Click"/> Click="SaveButton_Click">
<Button.ToolTip>
<TextBlock FontWeight="Bold">Strg+S</TextBlock>
</Button.ToolTip>
</Button>
<Button x:Name="ResetButton" Content="Zurücksetzen" IsEnabled="False" Visibility="Hidden" <Button x:Name="ResetButton" Content="Zurücksetzen" IsEnabled="False" Visibility="Hidden"
HorizontalAlignment="Center" VerticalAlignment="Bottom" Margin="0,0,0,10" Width="120" HorizontalAlignment="Center" VerticalAlignment="Bottom" Margin="0,0,0,10" Width="120"
Click="ResetButton_Click"/> Click="ResetButton_Click">
<Button.ToolTip>
<TextBlock FontWeight="Bold">Strg+Z</TextBlock>
</Button.ToolTip>
</Button>
<Button x:Name="CancelButton" Content="Abbrechen" IsEnabled="False" IsCancel="True" <Button x:Name="CancelButton" Content="Abbrechen" IsEnabled="False" IsCancel="True"
HorizontalAlignment="Center" VerticalAlignment="Bottom" Margin="250,0,0,10" Width="120" HorizontalAlignment="Center" VerticalAlignment="Bottom" Margin="250,0,0,10" Width="120"
Click="CancelButton_Click"/> Click="CancelButton_Click">
<Button.ToolTip>
<TextBlock FontWeight="Bold">Esc</TextBlock>
</Button.ToolTip>
</Button>
</Grid> </Grid>
</local:AdministrationWindow> </local:AdministrationWindow>

View File

@ -37,6 +37,10 @@ namespace Elwig.Windows {
WineAttributeFillLowerLabel.Visibility = Visibility.Hidden; WineAttributeFillLowerLabel.Visibility = Visibility.Hidden;
} }
protected override void ShortcutNew() { }
protected override void ShortcutDelete() { }
new protected void LockInputs() { new protected void LockInputs() {
base.LockInputs(); base.LockInputs();
@ -228,7 +232,14 @@ namespace Elwig.Windows {
await ModifiersFinishEditing(ctx); await ModifiersFinishEditing(ctx);
} }
private async void EditButton_Click(object sender, RoutedEventArgs evt) {
protected override void ShortcutEdit() {
if (!EditButton.IsEnabled || EditButton.Visibility != Visibility.Visible)
return;
EditButton_Click(null, null);
}
private async void EditButton_Click(object? sender, RoutedEventArgs? evt) {
IsEditing = true; IsEditing = true;
EditButton.Visibility = Visibility.Hidden; EditButton.Visibility = Visibility.Hidden;
ResetButton.Visibility = Visibility.Visible; ResetButton.Visibility = Visibility.Visible;
@ -255,7 +266,13 @@ namespace Elwig.Windows {
LockInputs(); LockInputs();
} }
private async void ResetButton_Click(object sender, RoutedEventArgs evt) { protected override void ShortcutReset() {
if (!ResetButton.IsEnabled || ResetButton.Visibility != Visibility.Visible)
return;
ResetButton_Click(null, null);
}
private async void ResetButton_Click(object? sender, RoutedEventArgs? evt) {
_branchChanged = false; _branchChanged = false;
_attrChanged = false; _attrChanged = false;
_cultChanged = false; _cultChanged = false;
@ -268,7 +285,13 @@ namespace Elwig.Windows {
UpdateButtons(); UpdateButtons();
} }
private async void SaveButton_Click(object sender, RoutedEventArgs evt) { protected override void ShortcutSave() {
if (!SaveButton.IsEnabled || SaveButton.Visibility != Visibility.Visible)
return;
SaveButton_Click(null, null);
}
private async void SaveButton_Click(object? sender, RoutedEventArgs? evt) {
try { try {
await Save(); await Save();
} catch (Exception exc) { } catch (Exception exc) {

View File

@ -185,31 +185,59 @@
Click="NewDeliveryPartButton_Click"/> Click="NewDeliveryPartButton_Click"/>
<Button x:Name="CancelCreatingButton" Content="Abbrechen" IsEnabled="False" Visibility="Hidden" <Button x:Name="CancelCreatingButton" Content="Abbrechen" IsEnabled="False" Visibility="Hidden"
HorizontalAlignment="Stretch" VerticalAlignment="Bottom" Margin="2.5,5,5,10" Grid.Column="2" Grid.Row="2" HorizontalAlignment="Stretch" VerticalAlignment="Bottom" Margin="2.5,5,5,10" Grid.Column="2" Grid.Row="2"
Click="CancelCreatingButton_Click"/> Click="CancelCreatingButton_Click">
<Button.ToolTip>
<TextBlock FontWeight="Bold">Esc</TextBlock>
</Button.ToolTip>
</Button>
<Button x:Name="NewDeliveryButton" Content="Neu" IsEnabled="False" Visibility="Hidden" <Button x:Name="NewDeliveryButton" Content="Neu" IsEnabled="False" Visibility="Hidden"
HorizontalAlignment="Stretch" VerticalAlignment="Bottom" Margin="5,5,2.5,10" Grid.Column="0" Grid.Row="2" HorizontalAlignment="Stretch" VerticalAlignment="Bottom" Margin="5,5,2.5,10" Grid.Column="0" Grid.Row="2"
Click="NewDeliveryButton_Click"/> Click="NewDeliveryButton_Click">
<Button.ToolTip>
<TextBlock FontWeight="Bold">Alt+Einfg</TextBlock>
</Button.ToolTip>
</Button>
<Button x:Name="AbwertenButton" Content="Abwerten" IsEnabled="False" <Button x:Name="AbwertenButton" Content="Abwerten" IsEnabled="False"
ToolTip="Ausgewählte Teillieferung vollständig oder teilweise abwerten" ToolTip="Ausgewählte Teillieferung vollständig oder teilweise abwerten"
HorizontalAlignment="Stretch" VerticalAlignment="Bottom" Margin="5,5,2.5,10" Grid.Column="0" Grid.Row="2" HorizontalAlignment="Stretch" VerticalAlignment="Bottom" Margin="5,5,2.5,10" Grid.Column="0" Grid.Row="2"
Click="AbwertenButton_Click"/> Click="AbwertenButton_Click"/>
<Button x:Name="EditDeliveryButton" Content="Bearbeiten" IsEnabled="False" <Button x:Name="EditDeliveryButton" Content="Bearbeiten" IsEnabled="False"
HorizontalAlignment="Stretch" VerticalAlignment="Bottom" Margin="2.5,5,2.5,10" Grid.Column="1" Grid.Row="2" HorizontalAlignment="Stretch" VerticalAlignment="Bottom" Margin="2.5,5,2.5,10" Grid.Column="1" Grid.Row="2"
Click="EditDeliveryButton_Click"/> Click="EditDeliveryButton_Click">
<Button.ToolTip>
<TextBlock FontWeight="Bold">Strg+B</TextBlock>
</Button.ToolTip>
</Button>
<Button x:Name="DeleteDeliveryButton" Content="Löschen" IsEnabled="False" <Button x:Name="DeleteDeliveryButton" Content="Löschen" IsEnabled="False"
HorizontalAlignment="Stretch" VerticalAlignment="Bottom" Margin="2.5,5,5,10" Grid.Column="2" Grid.Row="2" HorizontalAlignment="Stretch" VerticalAlignment="Bottom" Margin="2.5,5,5,10" Grid.Column="2" Grid.Row="2"
Click="DeleteDeliveryButton_Click"/> Click="DeleteDeliveryButton_Click">
<Button.ToolTip>
<TextBlock FontWeight="Bold">Alt+Entf</TextBlock>
</Button.ToolTip>
</Button>
<Button x:Name="SaveButton" Content="Speichern" IsEnabled="False" Visibility="Hidden" <Button x:Name="SaveButton" Content="Speichern" IsEnabled="False" Visibility="Hidden"
HorizontalAlignment="Stretch" VerticalAlignment="Bottom" Margin="5,5,2.5,10" Grid.Column="0" Grid.Row="2" HorizontalAlignment="Stretch" VerticalAlignment="Bottom" Margin="5,5,2.5,10" Grid.Column="0" Grid.Row="2"
Click="SaveButton_Click"/> Click="SaveButton_Click">
<Button.ToolTip>
<TextBlock FontWeight="Bold">Strg+S</TextBlock>
</Button.ToolTip>
</Button>
<Button x:Name="ResetButton" Content="Zurücksetzen" IsEnabled="False" Visibility="Hidden" <Button x:Name="ResetButton" Content="Zurücksetzen" IsEnabled="False" Visibility="Hidden"
HorizontalAlignment="Stretch" VerticalAlignment="Bottom" Margin="2.5,5,2.5,10" Grid.Column="1" Grid.Row="2" HorizontalAlignment="Stretch" VerticalAlignment="Bottom" Margin="2.5,5,2.5,10" Grid.Column="1" Grid.Row="2"
Click="ResetButton_Click"/> Click="ResetButton_Click">
<Button.ToolTip>
<TextBlock FontWeight="Bold">Strg+Z</TextBlock>
</Button.ToolTip>
</Button>
<Button x:Name="CancelButton" Content="Abbrechen" IsEnabled="False" Visibility="Hidden" IsCancel="True" <Button x:Name="CancelButton" Content="Abbrechen" IsEnabled="False" Visibility="Hidden" IsCancel="True"
HorizontalAlignment="Stretch" VerticalAlignment="Bottom" Margin="2.5,5,5,10" Grid.Column="2" Grid.Row="2" HorizontalAlignment="Stretch" VerticalAlignment="Bottom" Margin="2.5,5,5,10" Grid.Column="2" Grid.Row="2"
Click="CancelButton_Click"/> Click="CancelButton_Click">
<Button.ToolTip>
<TextBlock FontWeight="Bold">Esc</TextBlock>
</Button.ToolTip>
</Button>
</Grid> </Grid>
<GridSplitter Grid.Column="1" Grid.Row="1" HorizontalAlignment="Stretch" VerticalAlignment="Stretch"/> <GridSplitter Grid.Column="1" Grid.Row="1" HorizontalAlignment="Stretch" VerticalAlignment="Stretch"/>

View File

@ -1276,6 +1276,12 @@ namespace Elwig.Windows {
} }
} }
protected override void ShortcutNew() {
if (!NewDeliveryButton.IsEnabled || NewDeliveryButton.Visibility != Visibility.Visible)
return;
NewDeliveryButton_Click(null, null);
}
private async void NewDeliveryButton_Click(object? sender, RoutedEventArgs? evt) { private async void NewDeliveryButton_Click(object? sender, RoutedEventArgs? evt) {
TodayOnlyInput.IsChecked = true; TodayOnlyInput.IsChecked = true;
SearchInput.Text = ""; SearchInput.Text = "";
@ -1357,7 +1363,13 @@ namespace Elwig.Windows {
WeighingId = null; WeighingId = null;
} }
private void EditDeliveryButton_Click(object sender, RoutedEventArgs evt) { protected override void ShortcutEdit() {
if (!EditDeliveryButton.IsEnabled || EditDeliveryButton.Visibility != Visibility.Visible)
return;
EditDeliveryButton_Click(null, null);
}
private void EditDeliveryButton_Click(object? sender, RoutedEventArgs? evt) {
if (DeliveryPartList.SelectedItem == null) if (DeliveryPartList.SelectedItem == null)
return; return;
@ -1375,14 +1387,20 @@ namespace Elwig.Windows {
DeleteDeliveryPartButton.IsEnabled = false; DeleteDeliveryPartButton.IsEnabled = false;
} }
private async void DeleteDeliveryButton_Click(object sender, RoutedEventArgs evt) { protected override void ShortcutDelete() {
if (!DeleteDeliveryButton.IsEnabled || DeleteDeliveryButton.Visibility != Visibility.Visible)
return;
DeleteDeliveryButton_Click(null, null);
}
private async void DeleteDeliveryButton_Click(object? sender, RoutedEventArgs? evt) {
if (DeliveryList.SelectedItem is not Delivery d) if (DeliveryList.SelectedItem is not Delivery d)
return; return;
var r = MessageBox.Show( var r = MessageBox.Show(
$"Soll die Lieferung {d.LsNr} ({d.Member.AdministrativeName}, MgNr. {d.Member.MgNr}) wirklich unwiderruflich gelöscht werden?", $"Soll die Lieferung {d.LsNr} ({d.Member.AdministrativeName}, MgNr. {d.Member.MgNr}) wirklich unwiderruflich gelöscht werden?",
"Lieferung löschen", MessageBoxButton.YesNo, MessageBoxImage.Warning, MessageBoxResult.No); "Lieferung löschen", MessageBoxButton.OKCancel, MessageBoxImage.Warning, MessageBoxResult.Cancel);
if (r == MessageBoxResult.Yes) { if (r == MessageBoxResult.OK) {
Mouse.OverrideCursor = Cursors.AppStarting; Mouse.OverrideCursor = Cursors.AppStarting;
using (var ctx = new AppDbContext()) { using (var ctx = new AppDbContext()) {
ctx.Remove(d); ctx.Remove(d);
@ -1394,7 +1412,13 @@ namespace Elwig.Windows {
} }
} }
private async void SaveButton_Click(object sender, RoutedEventArgs evt) { protected override void ShortcutSave() {
if (!SaveButton.IsEnabled || SaveButton.Visibility != Visibility.Visible)
return;
SaveButton_Click(null, null);
}
private async void SaveButton_Click(object? sender, RoutedEventArgs? evt) {
SaveButton.IsEnabled = false; SaveButton.IsEnabled = false;
SaveButton.Cursor = Cursors.Wait; SaveButton.Cursor = Cursors.Wait;
@ -1425,7 +1449,13 @@ namespace Elwig.Windows {
DeleteDeliveryPartButton.IsEnabled = DeliveryList.SelectedItem is Delivery { Parts.Count: > 1 } && !IsCreating; DeleteDeliveryPartButton.IsEnabled = DeliveryList.SelectedItem is Delivery { Parts.Count: > 1 } && !IsCreating;
} }
private void ResetButton_Click(object sender, RoutedEventArgs evt) { protected override void ShortcutReset() {
if (!ResetButton.IsEnabled || ResetButton.Visibility != Visibility.Visible)
return;
ResetButton_Click(null, null);
}
private void ResetButton_Click(object? sender, RoutedEventArgs? evt) {
if (IsEditing) { if (IsEditing) {
RefreshInputs(); RefreshInputs();
} else if (IsCreating) { } else if (IsCreating) {
@ -1522,8 +1552,8 @@ namespace Elwig.Windows {
var r = MessageBox.Show( var r = MessageBox.Show(
$"Soll die Teillieferung Nr. {p.DPNr} wirklich unwiderruflich gelöscht werden?", $"Soll die Teillieferung Nr. {p.DPNr} wirklich unwiderruflich gelöscht werden?",
"Lieferung löschen", MessageBoxButton.YesNo, MessageBoxImage.Warning, MessageBoxResult.No); "Lieferung löschen", MessageBoxButton.OKCancel, MessageBoxImage.Warning, MessageBoxResult.Cancel);
if (r == MessageBoxResult.Yes) { if (r == MessageBoxResult.OK) {
Mouse.OverrideCursor = Cursors.AppStarting; Mouse.OverrideCursor = Cursors.AppStarting;
using (var ctx = new AppDbContext()) { using (var ctx = new AppDbContext()) {
ctx.Remove(p); ctx.Remove(p);

View File

@ -164,23 +164,47 @@
<Button x:Name="NewMemberButton" Content="Neu" <Button x:Name="NewMemberButton" Content="Neu"
HorizontalAlignment="Stretch" VerticalAlignment="Bottom" Margin="5,5,2.5,10" Grid.Column="0" Grid.Row="2" HorizontalAlignment="Stretch" VerticalAlignment="Bottom" Margin="5,5,2.5,10" Grid.Column="0" Grid.Row="2"
Click="NewMemberButton_Click"/> Click="NewMemberButton_Click">
<Button.ToolTip>
<TextBlock FontWeight="Bold">Alt+Einfg</TextBlock>
</Button.ToolTip>
</Button>
<Button x:Name="EditMemberButton" Content="Bearbeiten" IsEnabled="False" <Button x:Name="EditMemberButton" Content="Bearbeiten" IsEnabled="False"
HorizontalAlignment="Stretch" VerticalAlignment="Bottom" Margin="2.5,5,2.5,10" Grid.Column="1" Grid.Row="2" HorizontalAlignment="Stretch" VerticalAlignment="Bottom" Margin="2.5,5,2.5,10" Grid.Column="1" Grid.Row="2"
Click="EditMemberButton_Click"/> Click="EditMemberButton_Click">
<Button.ToolTip>
<TextBlock FontWeight="Bold">Strg+B</TextBlock>
</Button.ToolTip>
</Button>
<Button x:Name="DeleteMemberButton" Content="Löschen" IsEnabled="False" <Button x:Name="DeleteMemberButton" Content="Löschen" IsEnabled="False"
HorizontalAlignment="Stretch" VerticalAlignment="Bottom" Margin="2.5,5,5,10" Grid.Column="2" Grid.Row="2" HorizontalAlignment="Stretch" VerticalAlignment="Bottom" Margin="2.5,5,5,10" Grid.Column="2" Grid.Row="2"
Click="DeleteMemberButton_Click"/> Click="DeleteMemberButton_Click">
<Button.ToolTip>
<TextBlock FontWeight="Bold">Alt+Entf</TextBlock>
</Button.ToolTip>
</Button>
<Button x:Name="SaveButton" Content="Speichern" IsEnabled="False" Visibility="Hidden" <Button x:Name="SaveButton" Content="Speichern" IsEnabled="False" Visibility="Hidden"
HorizontalAlignment="Stretch" VerticalAlignment="Bottom" Margin="5,5,2.5,10" Grid.Column="0" Grid.Row="2" HorizontalAlignment="Stretch" VerticalAlignment="Bottom" Margin="5,5,2.5,10" Grid.Column="0" Grid.Row="2"
Click="SaveButton_Click"/> Click="SaveButton_Click">
<Button.ToolTip>
<TextBlock FontWeight="Bold">Strg+S</TextBlock>
</Button.ToolTip>
</Button>
<Button x:Name="ResetButton" Content="Zurücksetzen" IsEnabled="False" Visibility="Hidden" <Button x:Name="ResetButton" Content="Zurücksetzen" IsEnabled="False" Visibility="Hidden"
HorizontalAlignment="Stretch" VerticalAlignment="Bottom" Margin="2.5,5,2.5,10" Grid.Column="1" Grid.Row="2" HorizontalAlignment="Stretch" VerticalAlignment="Bottom" Margin="2.5,5,2.5,10" Grid.Column="1" Grid.Row="2"
Click="ResetButton_Click"/> Click="ResetButton_Click">
<Button.ToolTip>
<TextBlock FontWeight="Bold">Strg+Z</TextBlock>
</Button.ToolTip>
</Button>
<Button x:Name="CancelButton" Content="Abbrechen" IsEnabled="False" Visibility="Hidden" IsCancel="True" <Button x:Name="CancelButton" Content="Abbrechen" IsEnabled="False" Visibility="Hidden" IsCancel="True"
HorizontalAlignment="Stretch" VerticalAlignment="Bottom" Margin="2.5,5,5,10" Grid.Column="2" Grid.Row="2" HorizontalAlignment="Stretch" VerticalAlignment="Bottom" Margin="2.5,5,5,10" Grid.Column="2" Grid.Row="2"
Click="CancelButton_Click"/> Click="CancelButton_Click">
<Button.ToolTip>
<TextBlock FontWeight="Bold">Esc</TextBlock>
</Button.ToolTip>
</Button>
</Grid> </Grid>
<GridSplitter Grid.Column="1" Grid.Row="1" HorizontalAlignment="Stretch" VerticalAlignment="Stretch"/> <GridSplitter Grid.Column="1" Grid.Row="1" HorizontalAlignment="Stretch" VerticalAlignment="Stretch"/>

View File

@ -369,7 +369,13 @@ namespace Elwig.Windows {
await RefreshMemberListQuery(); await RefreshMemberListQuery();
} }
private void NewMemberButton_Click(object sender, RoutedEventArgs evt) { protected override void ShortcutNew() {
if (!NewMemberButton.IsEnabled || NewMemberButton.Visibility != Visibility.Visible)
return;
NewMemberButton_Click(null, null);
}
private void NewMemberButton_Click(object? sender, RoutedEventArgs? evt) {
IsCreating = true; IsCreating = true;
MemberList.IsEnabled = false; MemberList.IsEnabled = false;
MemberList.SelectedItem = null; MemberList.SelectedItem = null;
@ -383,7 +389,13 @@ namespace Elwig.Windows {
LockSearchInputs(); LockSearchInputs();
} }
private void EditMemberButton_Click(object sender, RoutedEventArgs evt) { protected override void ShortcutEdit() {
if (!EditMemberButton.IsEnabled || EditMemberButton.Visibility != Visibility.Visible)
return;
EditMemberButton_Click(null, null);
}
private void EditMemberButton_Click(object? sender, RoutedEventArgs? evt) {
if (MemberList.SelectedItem == null) if (MemberList.SelectedItem == null)
return; return;
@ -399,15 +411,21 @@ namespace Elwig.Windows {
LockSearchInputs(); LockSearchInputs();
} }
private async void DeleteMemberButton_Click(object sender, RoutedEventArgs evt) { protected override void ShortcutDelete() {
if (!DeleteMemberButton.IsEnabled || DeleteMemberButton.Visibility != Visibility.Visible)
return;
DeleteMemberButton_Click(null, null);
}
private async void DeleteMemberButton_Click(object? sender, RoutedEventArgs? evt) {
if (MemberList.SelectedItem is not Member m) if (MemberList.SelectedItem is not Member m)
return; return;
var r = MessageBox.Show( var r = MessageBox.Show(
$"Soll das Mitglied \"{m.AdministrativeName}\" (MgNr. {m.MgNr}) wirklich unwiderruflich gelöscht werden?\n" + $"Soll das Mitglied \"{m.AdministrativeName}\" (MgNr. {m.MgNr}) wirklich unwiderruflich gelöscht werden?\n" +
$"Sämtliche Lieferungen und Flächenbindungen dieses Mitglieds werden auch gelöscht!", $"Sämtliche Lieferungen und Flächenbindungen dieses Mitglieds werden auch gelöscht!",
"Mitglied löschen", MessageBoxButton.YesNo, MessageBoxImage.Warning, MessageBoxResult.No); "Mitglied löschen", MessageBoxButton.OKCancel, MessageBoxImage.Warning, MessageBoxResult.Cancel);
if (r == MessageBoxResult.Yes) { if (r == MessageBoxResult.OK) {
using var ctx = new AppDbContext(); using var ctx = new AppDbContext();
ctx.Remove(m); ctx.Remove(m);
await ctx.SaveChangesAsync(); await ctx.SaveChangesAsync();
@ -415,7 +433,13 @@ namespace Elwig.Windows {
} }
} }
private async void SaveButton_Click(object sender, RoutedEventArgs evt) { protected override void ShortcutSave() {
if (!SaveButton.IsEnabled || SaveButton.Visibility != Visibility.Visible)
return;
SaveButton_Click(null, null);
}
private async void SaveButton_Click(object? sender, RoutedEventArgs? evt) {
int? mgnr = null; int? mgnr = null;
try { try {
mgnr = await UpdateMember((MemberList.SelectedItem as Member)?.MgNr); mgnr = await UpdateMember((MemberList.SelectedItem as Member)?.MgNr);
@ -440,7 +464,13 @@ namespace Elwig.Windows {
FocusMember(m); FocusMember(m);
} }
private void ResetButton_Click(object sender, RoutedEventArgs evt) { protected override void ShortcutReset() {
if (!ResetButton.IsEnabled || ResetButton.Visibility != Visibility.Visible)
return;
ResetButton_Click(null, null);
}
private void ResetButton_Click(object? sender, RoutedEventArgs? evt) {
TransferPredecessorAreaComs = false; TransferPredecessorAreaComs = false;
CancelAreaComs = false; CancelAreaComs = false;
if (IsEditing) { if (IsEditing) {