diff options
Diffstat (limited to 'src/uplanfahrprefs.c')
-rw-r--r-- | src/uplanfahrprefs.c | 79 |
1 files changed, 79 insertions, 0 deletions
diff --git a/src/uplanfahrprefs.c b/src/uplanfahrprefs.c new file mode 100644 index 0000000..49b5f05 --- /dev/null +++ b/src/uplanfahrprefs.c @@ -0,0 +1,79 @@ +#include <gtk/gtk.h> + +#include "uplanfahr.h" +#include "uplanfahrwin.h" +#include "uplanfahrprefs.h" + +struct _UPlanFahrPrefs +{ + GtkDialog parent; +}; + +struct _UPlanFahrPrefsClass +{ + GtkDialogClass parent_class; +}; + +typedef struct _UPlanFahrPrefsPrivate UPlanFahrPrefsPrivate; + +struct _UPlanFahrPrefsPrivate +{ + GSettings *settings; + GtkWidget *font; + GtkWidget *fullscreen; +}; + +G_DEFINE_TYPE_WITH_PRIVATE(UPlanFahrPrefs, u_plan_fahr_prefs, GTK_TYPE_DIALOG) + +static void +preferences_closed (GtkWidget *button) +{ + gtk_widget_destroy (gtk_widget_get_toplevel (button)); +} + +static void +u_plan_fahr_prefs_init (UPlanFahrPrefs *prefs) +{ + UPlanFahrPrefsPrivate *priv; + + priv = u_plan_fahr_prefs_get_instance_private (prefs); + gtk_widget_init_template (GTK_WIDGET (prefs)); + priv->settings = g_settings_new ("org.sigxcpu.uplanfahr"); + + g_settings_bind (priv->settings, "font", + priv->font, "font", + G_SETTINGS_BIND_DEFAULT); + g_settings_bind (priv->settings, "fullscreen", + priv->fullscreen, "active", + G_SETTINGS_BIND_DEFAULT); +} + +static void +u_plan_fahr_prefs_dispose (GObject *object) +{ + UPlanFahrPrefsPrivate *priv; + + priv = u_plan_fahr_prefs_get_instance_private (U_PLAN_FAHR_PREFS (object)); + g_clear_object (&priv->settings); + + G_OBJECT_CLASS (u_plan_fahr_prefs_parent_class)->dispose (object); +} + +static void +u_plan_fahr_prefs_class_init (UPlanFahrPrefsClass *class) +{ + G_OBJECT_CLASS (class)->dispose = u_plan_fahr_prefs_dispose; + + gtk_widget_class_set_template_from_resource (GTK_WIDGET_CLASS (class), + "/org/sigxcpu/uplanfahr/prefs.ui"); + gtk_widget_class_bind_template_child_private (GTK_WIDGET_CLASS (class), UPlanFahrPrefs, font); + gtk_widget_class_bind_template_child_private (GTK_WIDGET_CLASS (class), UPlanFahrPrefs, fullscreen); + + gtk_widget_class_bind_template_callback (GTK_WIDGET_CLASS (class), preferences_closed); +} + +UPlanFahrPrefs * +u_plan_fahr_prefs_new (UPlanFahrWindow *win) +{ + return g_object_new (U_PLAN_FAHR_PREFS_TYPE, "transient-for", win, NULL); +} |