summaryrefslogtreecommitdiff
path: root/examples/application6/exampleappprefs.c
diff options
context:
space:
mode:
Diffstat (limited to 'examples/application6/exampleappprefs.c')
-rw-r--r--examples/application6/exampleappprefs.c71
1 files changed, 71 insertions, 0 deletions
diff --git a/examples/application6/exampleappprefs.c b/examples/application6/exampleappprefs.c
new file mode 100644
index 0000000000..75f2ccb164
--- /dev/null
+++ b/examples/application6/exampleappprefs.c
@@ -0,0 +1,71 @@
+#include <gtk/gtk.h>
+
+#include "exampleapp.h"
+#include "exampleappwin.h"
+#include "exampleappprefs.h"
+
+struct ExampleAppPrefs {
+ GtkDialog parent;
+};
+
+struct ExampleAppPrefsClass {
+ GtkDialogClass parent_class;
+};
+
+typedef struct ExampleAppPrefsPrivate ExampleAppPrefsPrivate;
+struct ExampleAppPrefsPrivate {
+ GSettings *settings;
+ GtkWidget *font;
+ GtkWidget *transition;
+ GtkWidget *close;
+};
+
+G_DEFINE_TYPE_WITH_PRIVATE(ExampleAppPrefs, example_app_prefs, GTK_TYPE_DIALOG)
+
+static void
+example_app_prefs_init (ExampleAppPrefs *prefs)
+{
+ ExampleAppPrefsPrivate *priv;
+
+ priv = example_app_prefs_get_instance_private (prefs);
+ gtk_widget_init_template (GTK_WIDGET (prefs));
+ priv->settings = g_settings_new ("org.gtk.exampleapp");
+
+ g_settings_bind (priv->settings, "font",
+ priv->font, "font",
+ G_SETTINGS_BIND_DEFAULT);
+ g_settings_bind (priv->settings, "transition",
+ priv->transition, "active-id",
+ G_SETTINGS_BIND_DEFAULT);
+ g_signal_connect_swapped (priv->close, "clicked",
+ G_CALLBACK (gtk_widget_destroy), prefs);
+}
+
+static void
+example_app_prefs_dispose (GObject *object)
+{
+ ExampleAppPrefsPrivate *priv;
+
+ priv = example_app_prefs_get_instance_private (EXAMPLE_APP_PREFS (object));
+ g_clear_object (&priv->settings);
+
+ G_OBJECT_CLASS (example_app_prefs_parent_class)->dispose (object);
+}
+
+static void
+example_app_prefs_class_init (ExampleAppPrefsClass *class)
+{
+ G_OBJECT_CLASS (class)->dispose = example_app_prefs_dispose;
+
+ gtk_widget_class_set_template_from_resource (GTK_WIDGET_CLASS (class),
+ "/org/gtk/exampleapp/prefs.ui");
+ gtk_widget_class_bind_child (GTK_WIDGET_CLASS (class), ExampleAppPrefsPrivate, font);
+ gtk_widget_class_bind_child (GTK_WIDGET_CLASS (class), ExampleAppPrefsPrivate, transition);
+ gtk_widget_class_bind_child (GTK_WIDGET_CLASS (class), ExampleAppPrefsPrivate, close);
+}
+
+ExampleAppPrefs *
+example_app_prefs_new (ExampleAppWindow *win)
+{
+ return g_object_new (EXAMPLE_APP_PREFS_TYPE, "transient-for", win, NULL);
+}