aboutsummaryrefslogtreecommitdiff
path: root/src/uplanfahrprefs.c
blob: 49b5f05eee7b298806f6294e5d134b428e2a6be9 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
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);
}