~ubuntu-branches/ubuntu/vivid/brasero/vivid-proposed

« back to all changes in this revision

Viewing changes to src/brasero-filter-option.c

  • Committer: Bazaar Package Importer
  • Author(s): Michael Biebl, Laurent Bigonville, Michael Biebl
  • Date: 2011-10-13 20:13:30 UTC
  • mfrom: (1.4.5 experimental)
  • mto: (1.4.7 experimental)
  • mto: This revision was merged to the branch mainline in revision 96.
  • Revision ID: james.westby@ubuntu.com-20111013201330-r1rg6r6uof0cwpsp
Tags: 3.0.0-4
[ Laurent Bigonville ]
* debian/control.in: Update Vcs-* fields

[ Michael Biebl ]
* Upload to unstable.
* debian/patches/02_gcc-format-security.patch
  - Fix format string vulnerabilities.
* debian/watch:
  - Switch to .xz tarballs.

Show diffs side-by-side

added added

removed removed

Lines of Context:
26
26
 
27
27
#include <glib.h>
28
28
#include <glib/gi18n-lib.h>
29
 
#include <glib/gstdio.h>
 
29
#include <gio/gio.h>
30
30
 
31
31
#include <gtk/gtk.h>
32
32
 
33
 
#include <gconf/gconf-client.h>
34
 
 
35
33
#include "brasero-misc.h"
36
34
 
37
35
#include "brasero-filter-option.h"
40
38
typedef struct _BraseroFilterOptionPrivate BraseroFilterOptionPrivate;
41
39
struct _BraseroFilterOptionPrivate
42
40
{
43
 
        GConfClient *client;
44
 
        guint broken_sym_notify;
45
 
        guint sym_notify;
46
 
        guint hidden_notify;
 
41
        GSettings *settings;
47
42
};
48
43
 
49
44
#define BRASERO_FILTER_OPTION_PRIVATE(o)  (G_TYPE_INSTANCE_GET_PRIVATE ((o), BRASERO_TYPE_FILTER_OPTION, BraseroFilterOptionPrivate))
51
46
G_DEFINE_TYPE (BraseroFilterOption, brasero_filter_option, GTK_TYPE_VBOX);
52
47
 
53
48
static void
54
 
brasero_file_filtered_filter_hidden_cb (GtkToggleButton *button,
55
 
                                        BraseroFilterOption *self)
56
 
{
57
 
        BraseroFilterOptionPrivate *priv;
58
 
 
59
 
        priv = BRASERO_FILTER_OPTION_PRIVATE (self);
60
 
        gconf_client_set_bool (priv->client,
61
 
                               BRASERO_FILTER_HIDDEN_KEY,
62
 
                               gtk_toggle_button_get_active (button),
63
 
                               NULL);
64
 
}
65
 
 
66
 
static void
67
 
brasero_file_filtered_filter_broken_sym_cb (GtkToggleButton *button,
68
 
                                            BraseroFilterOption *self)
69
 
{
70
 
        BraseroFilterOptionPrivate *priv;
71
 
 
72
 
        priv = BRASERO_FILTER_OPTION_PRIVATE (self);
73
 
        gconf_client_set_bool (priv->client,
74
 
                               BRASERO_FILTER_BROKEN_SYM_KEY,
75
 
                               gtk_toggle_button_get_active (button),
76
 
                               NULL);
77
 
}
78
 
 
79
 
static void
80
 
brasero_file_filtered_replace_sym_cb (GtkToggleButton *button,
81
 
                                      BraseroFilterOption *self)
82
 
{
83
 
        BraseroFilterOptionPrivate *priv;
84
 
 
85
 
        priv = BRASERO_FILTER_OPTION_PRIVATE (self);
86
 
        gconf_client_set_bool (priv->client,
87
 
                               BRASERO_REPLACE_SYMLINK_KEY,
88
 
                               gtk_toggle_button_get_active (button),
89
 
                               NULL);
90
 
}
91
 
 
92
 
static void
93
 
brasero_file_filtered_gconf_notify_cb (GConfClient *client,
94
 
                                       guint cnxn_id,
95
 
                                       GConfEntry *entry,
96
 
                                       gpointer user_data)
97
 
{
98
 
        GConfValue *value;
99
 
        GtkToggleButton *button = user_data;
100
 
 
101
 
        value = gconf_entry_get_value (entry);
102
 
        gtk_toggle_button_set_active (button, gconf_value_get_bool (value));
103
 
}
104
 
 
105
 
static void
106
49
brasero_filter_option_init (BraseroFilterOption *object)
107
50
{
108
51
        gchar *string;
109
 
        gboolean active;
110
52
        GtkWidget *frame;
111
 
        GError *error = NULL;
112
53
        GtkWidget *button_sym;
113
54
        GtkWidget *button_broken;
114
55
        GtkWidget *button_hidden;
116
57
 
117
58
        priv = BRASERO_FILTER_OPTION_PRIVATE (object);
118
59
 
119
 
        priv->client = gconf_client_get_default ();
 
60
        priv->settings = g_settings_new (BRASERO_SCHEMA_FILTER);
120
61
 
121
62
        /* filter hidden files */
122
 
        active = gconf_client_get_bool (priv->client,
123
 
                                        BRASERO_FILTER_HIDDEN_KEY,
124
 
                                        NULL);
125
 
 
126
63
        button_hidden = gtk_check_button_new_with_mnemonic (_("Filter _hidden files"));
 
64
        g_settings_bind (priv->settings, BRASERO_PROPS_FILTER_HIDDEN,
 
65
                         button_hidden, "active",
 
66
                         G_SETTINGS_BIND_DEFAULT);
127
67
        gtk_widget_show (button_hidden);
128
 
        gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (button_hidden), active);
129
 
        g_signal_connect (button_hidden,
130
 
                          "toggled",
131
 
                          G_CALLBACK (brasero_file_filtered_filter_hidden_cb),
132
 
                          object);
133
 
 
134
 
        priv->hidden_notify = gconf_client_notify_add (priv->client,
135
 
                                                       BRASERO_FILTER_HIDDEN_KEY,
136
 
                                                       brasero_file_filtered_gconf_notify_cb,
137
 
                                                       button_hidden, NULL, &error);
138
 
        if (error) {
139
 
                g_warning ("GConf : %s\n", error->message);
140
 
                g_error_free (error);
141
 
                error = NULL;
142
 
        }
143
68
 
144
69
        /* replace symlink */
145
 
        active = gconf_client_get_bool (priv->client,
146
 
                                        BRASERO_REPLACE_SYMLINK_KEY,
147
 
                                        NULL);
148
 
 
149
70
        button_sym = gtk_check_button_new_with_mnemonic (_("Re_place symbolic links"));
 
71
        g_settings_bind (priv->settings, BRASERO_PROPS_FILTER_REPLACE_SYMLINK,
 
72
                         button_sym, "active",
 
73
                         G_SETTINGS_BIND_DEFAULT);
150
74
        gtk_widget_show (button_sym);
151
 
        gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (button_sym), active);
152
 
        g_signal_connect (button_sym,
153
 
                          "toggled",
154
 
                          G_CALLBACK (brasero_file_filtered_replace_sym_cb),
155
 
                          object);
156
 
 
157
 
        priv->sym_notify = gconf_client_notify_add (priv->client,
158
 
                                                    BRASERO_REPLACE_SYMLINK_KEY,
159
 
                                                    brasero_file_filtered_gconf_notify_cb,
160
 
                                                    button_sym, NULL, &error);
161
 
        if (error) {
162
 
                g_warning ("GConf : %s\n", error->message);
163
 
                g_error_free (error);
164
 
                error = NULL;
165
 
        }
166
75
 
167
76
        /* filter broken symlink button */
168
 
        active = gconf_client_get_bool (priv->client,
169
 
                                        BRASERO_FILTER_BROKEN_SYM_KEY,
170
 
                                        NULL);
171
 
 
172
77
        button_broken = gtk_check_button_new_with_mnemonic (_("Filter _broken symbolic links"));
 
78
        g_settings_bind (priv->settings, BRASERO_PROPS_FILTER_BROKEN,
 
79
                         button_broken, "active",
 
80
                         G_SETTINGS_BIND_DEFAULT);
173
81
        gtk_widget_show (button_broken);
174
 
        gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (button_broken), active);
175
 
        g_signal_connect (button_broken,
176
 
                          "toggled",
177
 
                          G_CALLBACK (brasero_file_filtered_filter_broken_sym_cb),
178
 
                          object);
179
 
 
180
 
        priv->broken_sym_notify = gconf_client_notify_add (priv->client,
181
 
                                                           BRASERO_FILTER_BROKEN_SYM_KEY,
182
 
                                                           brasero_file_filtered_gconf_notify_cb,
183
 
                                                           button_broken, NULL, &error);
184
 
        if (error) {
185
 
                g_warning ("GConf : %s\n", error->message);
186
 
                g_error_free (error);
187
 
                error = NULL;
188
 
        }
189
82
 
190
83
        string = g_strdup_printf ("<b>%s</b>", _("Filtering options"));
191
84
        frame = brasero_utils_pack_properties (string,
209
102
 
210
103
        priv = BRASERO_FILTER_OPTION_PRIVATE (object);
211
104
 
212
 
        if (priv->sym_notify) {
213
 
                gconf_client_notify_remove (priv->client, priv->sym_notify);
214
 
                priv->sym_notify = 0;
215
 
        }
216
 
 
217
 
        if (priv->hidden_notify) {
218
 
                gconf_client_notify_remove (priv->client,
219
 
                                            priv->hidden_notify);
220
 
                priv->hidden_notify = 0;
221
 
        }
222
 
 
223
 
        if (priv->broken_sym_notify) {
224
 
                gconf_client_notify_remove (priv->client,
225
 
                                            priv->broken_sym_notify);
226
 
                priv->broken_sym_notify = 0;
227
 
        }
228
 
        
229
 
        if (priv->client) {
230
 
                g_object_unref (priv->client);
231
 
                priv->client = NULL;
 
105
        if (priv->settings) {
 
106
                g_object_unref (priv->settings);
 
107
                priv->settings = NULL;
232
108
        }
233
109
 
234
110
        G_OBJECT_CLASS (brasero_filter_option_parent_class)->finalize (object);