aboutsummaryrefslogtreecommitdiff
path: root/src/uplanfahrprefs.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/uplanfahrprefs.c')
-rw-r--r--src/uplanfahrprefs.c79
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);
+}