Base data editing page in GTK client.

This commit is contained in:
2020-03-05 21:06:58 +01:00
parent d8035452d8
commit 118c15f6c9
13 changed files with 620 additions and 229 deletions

View File

@@ -2,14 +2,144 @@
<!-- Generated with glade 3.22.1 -->
<interface>
<requires lib="gtk+" version="3.20"/>
<object class="GtkDialog" id="PlayerEditorDialog">
<object class="GtkAdjustment" id="DrinkVolAdjustment">
<property name="upper">100</property>
<property name="step_increment">0.10000000000000001</property>
<property name="page_increment">10</property>
</object>
<object class="GtkDialog" id="DrinkEditorDialog">
<property name="can_focus">False</property>
<property name="title" translatable="yes">Drink</property>
<property name="resizable">False</property>
<property name="modal">True</property>
<property name="window_position">center-on-parent</property>
<property name="destroy_with_parent">True</property>
<property name="type_hint">dialog</property>
<property name="gravity">center</property>
<child>
<placeholder/>
</child>
<child internal-child="vbox">
<object class="GtkBox">
<property name="can_focus">False</property>
<property name="orientation">vertical</property>
<property name="spacing">2</property>
<child internal-child="action_area">
<object class="GtkButtonBox">
<property name="can_focus">False</property>
<property name="layout_style">end</property>
<child>
<object class="GtkButton" id="SaveDrinkButton">
<property name="label">gtk-save</property>
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="receives_default">True</property>
<property name="use_stock">True</property>
<accelerator key="Return" signal="clicked"/>
</object>
<packing>
<property name="expand">True</property>
<property name="fill">True</property>
<property name="position">0</property>
</packing>
</child>
<child>
<object class="GtkButton" id="CancelDrinkEditorButton">
<property name="label">gtk-cancel</property>
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="receives_default">True</property>
<property name="use_stock">True</property>
</object>
<packing>
<property name="expand">True</property>
<property name="fill">True</property>
<property name="position">1</property>
</packing>
</child>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">False</property>
<property name="position">0</property>
</packing>
</child>
<child>
<object class="GtkGrid">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="margin_top">10</property>
<property name="margin_bottom">10</property>
<property name="row_spacing">5</property>
<property name="column_spacing">7</property>
<child>
<object class="GtkLabel">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="halign">end</property>
<property name="label" translatable="yes">Name</property>
</object>
<packing>
<property name="left_attach">0</property>
<property name="top_attach">0</property>
</packing>
</child>
<child>
<object class="GtkLabel">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="halign">end</property>
<property name="label" translatable="yes">Vol. Alcohol</property>
</object>
<packing>
<property name="left_attach">0</property>
<property name="top_attach">1</property>
</packing>
</child>
<child>
<object class="GtkEntry" id="DrinkNameEntry">
<property name="visible">True</property>
<property name="can_focus">True</property>
</object>
<packing>
<property name="left_attach">1</property>
<property name="top_attach">0</property>
</packing>
</child>
<child>
<object class="GtkSpinButton" id="DinkVolEntry">
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="placeholder_text" translatable="yes">%</property>
<property name="input_purpose">number</property>
<property name="adjustment">DrinkVolAdjustment</property>
<property name="climb_rate">0.10000000000000001</property>
<property name="digits">1</property>
<property name="numeric">True</property>
</object>
<packing>
<property name="left_attach">1</property>
<property name="top_attach">1</property>
</packing>
</child>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">1</property>
</packing>
</child>
</object>
</child>
</object>
<object class="GtkDialog" id="PlayerEditorDialog">
<property name="can_focus">False</property>
<property name="title" translatable="yes">Player</property>
<property name="resizable">False</property>
<property name="modal">True</property>
<property name="window_position">center-on-parent</property>
<property name="destroy_with_parent">True</property>
<property name="type_hint">dialog</property>
<property name="deletable">False</property>
<property name="gravity">center</property>
<child>
<placeholder/>
@@ -76,7 +206,7 @@
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="halign">end</property>
<property name="label" translatable="yes">Name:</property>
<property name="label" translatable="yes">Name</property>
</object>
<packing>
<property name="left_attach">0</property>
@@ -88,7 +218,7 @@
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="halign">end</property>
<property name="label" translatable="yes">Alias:</property>
<property name="label" translatable="yes">Alias</property>
</object>
<packing>
<property name="left_attach">0</property>
@@ -133,7 +263,7 @@
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="halign">end</property>
<property name="label" translatable="yes">Hex ID:</property>
<property name="label" translatable="yes">Hex ID</property>
</object>
<packing>
<property name="left_attach">0</property>

View File

@@ -0,0 +1,63 @@
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;
}
}
}

View File

@@ -20,11 +20,9 @@ namespace EstusShots.Gtk.Dialogs
public class PlayerEditor
{
private Builder _builder;
private Player _player;
private readonly Player _player;
[UI] private readonly Dialog PlayerEditorDialog = null;
[UI] private readonly Overlay PlayerEditorOverlay = null;
[UI] private readonly Entry PlayerNameEntry = null;
[UI] private readonly Entry PlayerAliasEntry = null;
[UI] private readonly Entry PlayerHexIdEntry = null;
@@ -38,8 +36,8 @@ namespace EstusShots.Gtk.Dialogs
{
_player = player;
_builder = new Builder("Dialogs.glade");
_builder.Autoconnect(this);
var builder = new Builder("Dialogs.glade");
builder.Autoconnect(this);
SavePlayerButton.Clicked += SavePlayerButtonOnClicked;
CancelPlayerEditorButton.Clicked += (sender, args) =>