#include #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); }