Add a button to increase water level

This commit is contained in:
Gergely Polonkai 2018-07-27 18:48:01 +02:00
parent 1ca33bdd9d
commit 1503eea2d2
3 changed files with 34 additions and 1 deletions

View File

@ -22,6 +22,7 @@
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="receives_default">True</property>
<property name="action_name">win.add</property>
<child>
<object class="GtkImage">
<property name="visible">True</property>

View File

@ -32,7 +32,19 @@ void
gwr_water_level_set_level(GwrWaterLevel *self,
gfloat level)
{
self->level = MAX(0, MIN(level, 1.0));
g_debug("Setting level to %.2f", level);
if (G_UNLIKELY(level > 1.0)) {
g_warning("Value (%.2f) is too large. Scaling down to 1.0", level);
level = 1.0;
} else if (G_UNLIKELY(level < 0.0)) {
g_warning("Value (%.2f) is too small. Scaling up to 0.0", level);
level = 0.0;
}
self->level = level;
gtk_widget_queue_draw(GTK_WIDGET(self));
g_object_notify_by_pspec(G_OBJECT(self), props[PROP_LEVEL]);
}

View File

@ -31,6 +31,14 @@ struct _GwrWindow
G_DEFINE_TYPE (GwrWindow, gwr_window, GTK_TYPE_APPLICATION_WINDOW)
static void gwr_window_add_action(GSimpleAction *action,
GVariant *parameter,
gpointer user_data);
static GActionEntry win_entries[] = {
{ "add", gwr_window_add_action, NULL, NULL, NULL },
};
static void
gwr_window_class_init (GwrWindowClass *klass)
{
@ -47,4 +55,16 @@ gwr_window_init (GwrWindow *self)
g_type_ensure(GWR_TYPE_WATER_LEVEL);
gtk_widget_init_template (GTK_WIDGET (self));
g_action_map_add_action_entries(G_ACTION_MAP(self), win_entries, G_N_ELEMENTS(win_entries), self);
}
static void
gwr_window_add_action(GSimpleAction *action,
GVariant *parameter,
gpointer user_data)
{
GwrWindow *self = GWR_WINDOW(user_data);
gwr_water_level_set_level (self->level, gwr_water_level_get_level (self->level) + 0.1);
}