63 lines
1.8 KiB
C#
63 lines
1.8 KiB
C#
using System;
|
|
using EstusShots.Shared.Dto;
|
|
using Gtk;
|
|
using UI = Gtk.Builder.ObjectAttribute;
|
|
|
|
namespace EstusShots.Gtk.Dialogs
|
|
{
|
|
public class DrinkEditor
|
|
{
|
|
[UI] private readonly Dialog DrinkEditorDialog = null;
|
|
[UI] private readonly Entry DrinkNameEntry = null;
|
|
[UI] private readonly Adjustment DrinkVolAdjustment = null;
|
|
[UI] private readonly Button SaveDrinkButton = null;
|
|
[UI] private readonly Button CancelDrinkEditorButton = null;
|
|
|
|
private readonly Drink _drink;
|
|
|
|
public event DialogClosedEventHandler OnDialogClosed;
|
|
|
|
public DrinkEditor(Window parent, Drink drink)
|
|
{
|
|
_drink = drink;
|
|
|
|
var builder = new Builder("Dialogs.glade");
|
|
builder.Autoconnect(this);
|
|
|
|
SaveDrinkButton.Clicked += SaveDrinkButtonOnClicked;
|
|
CancelDrinkEditorButton.Clicked += (sender, args) =>
|
|
{
|
|
OnDialogClosed?.Invoke(this, new DialogClosedEventArgs(false, null));
|
|
DrinkEditorDialog.Dispose();
|
|
};
|
|
|
|
ReadFromModel();
|
|
|
|
DrinkEditorDialog.TransientFor = parent;
|
|
DrinkEditorDialog.Show();
|
|
}
|
|
|
|
// Events
|
|
|
|
private void SaveDrinkButtonOnClicked(object sender, EventArgs e)
|
|
{
|
|
ReadToModel();
|
|
OnDialogClosed?.Invoke(this, new DialogClosedEventArgs(true, _drink));
|
|
DrinkEditorDialog.Dispose();
|
|
}
|
|
|
|
// Private Methods
|
|
|
|
private void ReadToModel()
|
|
{
|
|
_drink.Name = DrinkNameEntry.Text;
|
|
_drink.Vol = DrinkVolAdjustment.Value;
|
|
}
|
|
|
|
private void ReadFromModel()
|
|
{
|
|
DrinkNameEntry.Text = _drink.Name;
|
|
DrinkVolAdjustment.Value = _drink.Vol;
|
|
}
|
|
}
|
|
} |