~noskcaj/ubuntu/trusty/gthumb/3.2.5

« back to all changes in this revision

Viewing changes to extensions/desktop_background/actions.c

  • Committer: Package Import Robot
  • Author(s): David Paleino
  • Date: 2011-12-22 22:40:29 UTC
  • mfrom: (5.2.19 sid)
  • Revision ID: package-import@ubuntu.com-20111222224029-l58g65u1nfa6ojtg
Tags: 3:2.14.1-1
* New upstream version (Closes: #652692)
* Patches refreshed
* Bump build-dependencies requirements
* Fix FTBFS, added missing #include
* debian/watch fixed to point to new location (.xz tarballs)

Show diffs side-by-side

added added

removed removed

Lines of Context:
26
26
#include <extensions/image_viewer/gth-image-viewer-page.h>
27
27
 
28
28
 
 
29
#ifdef HAVE_GNOME_3
 
30
 
 
31
 
 
32
#define DESKTOP_BACKGROUND_PROPERTIES_COMMAND "gnome-control-center background"
 
33
#define DESKTOP_BACKGROUND_SCHEMA "org.gnome.desktop.background"
 
34
#define DESKTOP_BACKGROUND_KEY "picture-uri"
 
35
 
 
36
 
 
37
static GFile *
 
38
get_current_wallpaper (void)
 
39
{
 
40
        GFile     *file = NULL;
 
41
        GSettings *settings;
 
42
        char      *uri;
 
43
 
 
44
        settings = g_settings_new (DESKTOP_BACKGROUND_SCHEMA);
 
45
        uri = g_settings_get_string (settings, DESKTOP_BACKGROUND_KEY);
 
46
        if (uri != NULL)
 
47
                file = g_file_new_for_uri (uri);
 
48
 
 
49
        g_free (uri);
 
50
        g_object_unref (settings);
 
51
 
 
52
        return file;
 
53
}
 
54
 
 
55
 
 
56
static void
 
57
set_current_wallpaper_file (GFile *file)
 
58
{
 
59
        char *uri;
 
60
 
 
61
        uri = g_file_get_uri (file);
 
62
        if (uri != NULL) {
 
63
                GSettings *settings;
 
64
 
 
65
                settings = g_settings_new (DESKTOP_BACKGROUND_SCHEMA);
 
66
                g_settings_set_string (settings, DESKTOP_BACKGROUND_KEY, uri);
 
67
                g_object_unref (settings);
 
68
        }
 
69
 
 
70
        g_free (uri);
 
71
}
 
72
 
 
73
 
 
74
#else /* ! HAVE_GNOME_DESKTOP_3 */
 
75
 
 
76
 
 
77
#define DESKTOP_BACKGROUND_PROPERTIES_COMMAND "gnome-appearance-properties --show-page=background"
 
78
 
 
79
 
 
80
static GFile *
 
81
get_current_wallpaper (void)
 
82
{
 
83
        GFile *file = NULL;
 
84
        char  *path;
 
85
 
 
86
        path = eel_gconf_get_string ("/desktop/gnome/background/picture_filename", NULL);
 
87
        if (path != NULL) {
 
88
                file = g_file_new_for_path (path);
 
89
                g_free (path);
 
90
        }
 
91
 
 
92
        return file;
 
93
}
 
94
 
 
95
 
 
96
static void
 
97
set_current_wallpaper_file (GFile *file)
 
98
{
 
99
        char *path;
 
100
 
 
101
        path = g_file_get_path (file);
 
102
        if (path != NULL)
 
103
                eel_gconf_set_string ("/desktop/gnome/background/picture_filename", path);
 
104
 
 
105
        g_free (path);
 
106
}
 
107
 
 
108
 
 
109
#endif
 
110
 
 
111
 
29
112
typedef struct {
30
113
        GthBrowser *browser;
31
114
        GFile      *old_file;
77
160
wallpaper_data_new (GthBrowser *browser)
78
161
{
79
162
        WallpaperData *wdata;
80
 
        char          *path;
 
163
 
81
164
 
82
165
        wdata = g_new0 (WallpaperData, 1);
83
166
        wdata->browser = browser;
84
 
 
85
 
        path = eel_gconf_get_string ("/desktop/gnome/background/picture_filename", NULL);
86
 
        if (path != NULL) {
87
 
                wdata->old_file = g_file_new_for_path (path);
88
 
                g_free (path);
89
 
        }
90
 
 
 
167
        wdata->old_file = get_current_wallpaper ();
91
168
        wdata->new_file = get_wallpaper_file ();
92
169
 
93
170
        return wdata;
111
188
 
112
189
 
113
190
static void
114
 
set_wallpaper_file (GFile *file)
115
 
{
116
 
        char *path;
117
 
 
118
 
        path = g_file_get_path (file);
119
 
        if (path != NULL)
120
 
                eel_gconf_set_string ("/desktop/gnome/background/picture_filename", path);
121
 
 
122
 
        g_free (path);
123
 
}
124
 
 
125
 
 
126
 
static void
127
191
infobar_response_cb (GtkInfoBar *info_bar,
128
192
                     int         response_id,
129
193
                     gpointer    user_data)
135
199
 
136
200
        switch (response_id) {
137
201
        case _RESPONSE_PREFERENCES:
138
 
                if (! g_spawn_command_line_async ("gnome-appearance-properties --show-page=background", &error))
139
 
                        _gtk_error_dialog_from_gerror_run (GTK_WINDOW (wdata->browser), _("Could not show the desktop background properties"), &error);
 
202
                if (! g_spawn_command_line_async (DESKTOP_BACKGROUND_PROPERTIES_COMMAND, &error)) {
 
203
                        _gtk_error_dialog_from_gerror_run (GTK_WINDOW (wdata->browser), _("Could not show the desktop background properties"), error);
 
204
                        g_clear_error (&error);
 
205
                }
140
206
                break;
141
207
 
142
208
        case _RESPONSE_UNDO:
143
209
                if (wdata->old_file != NULL)
144
 
                        set_wallpaper_file (wdata->old_file);
 
210
                        set_current_wallpaper_file (wdata->old_file);
145
211
                break;
146
212
        }
147
213
 
155
221
{
156
222
        GtkWidget *infobar;
157
223
 
158
 
        set_wallpaper_file (wdata->new_file);
 
224
        set_current_wallpaper_file (wdata->new_file);
159
225
 
160
226
        infobar = gth_browser_get_infobar (wdata->browser);
161
227
        gth_info_bar_set_icon (GTH_INFO_BAR (infobar), GTK_STOCK_DIALOG_INFO);
200
266
        WallpaperData *wdata = user_data;
201
267
 
202
268
        if (error != NULL) {
203
 
                _gtk_error_dialog_from_gerror_run (GTK_WINDOW (wdata->browser), _("Could not set the desktop background"), &error);
 
269
                _gtk_error_dialog_from_gerror_run (GTK_WINDOW (wdata->browser), _("Could not set the desktop background"), error);
204
270
                wallpaper_data_free (wdata);
205
271
                return;
206
272
        }
218
284
        GError        *error = NULL;
219
285
 
220
286
        if (! g_file_copy_finish (G_FILE (source_object), res, &error)) {
221
 
                _gtk_error_dialog_from_gerror_run (GTK_WINDOW (wdata->browser), _("Could not set the desktop background"), &error);
 
287
                _gtk_error_dialog_from_gerror_run (GTK_WINDOW (wdata->browser), _("Could not set the desktop background"), error);
 
288
                g_clear_error (&error);
222
289
                wallpaper_data_free (wdata);
223
290
                return;
224
291
        }
246
313
                if (viewer_page != NULL) {
247
314
                        GdkPixbuf *pixbuf;
248
315
 
249
 
                        pixbuf = g_object_ref (gth_image_viewer_page_get_pixbuf (GTH_IMAGE_VIEWER_PAGE (viewer_page)));
 
316
                        pixbuf = gth_image_viewer_page_get_pixbuf (GTH_IMAGE_VIEWER_PAGE (viewer_page));
250
317
                        file_data = gth_file_data_new (wdata->new_file, NULL);
251
318
                        _gdk_pixbuf_save_async (pixbuf,
252
319
                                                file_data,