26
26
#include <extensions/image_viewer/gth-image-viewer-page.h>
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"
38
get_current_wallpaper (void)
44
settings = g_settings_new (DESKTOP_BACKGROUND_SCHEMA);
45
uri = g_settings_get_string (settings, DESKTOP_BACKGROUND_KEY);
47
file = g_file_new_for_uri (uri);
50
g_object_unref (settings);
57
set_current_wallpaper_file (GFile *file)
61
uri = g_file_get_uri (file);
65
settings = g_settings_new (DESKTOP_BACKGROUND_SCHEMA);
66
g_settings_set_string (settings, DESKTOP_BACKGROUND_KEY, uri);
67
g_object_unref (settings);
74
#else /* ! HAVE_GNOME_DESKTOP_3 */
77
#define DESKTOP_BACKGROUND_PROPERTIES_COMMAND "gnome-appearance-properties --show-page=background"
81
get_current_wallpaper (void)
86
path = eel_gconf_get_string ("/desktop/gnome/background/picture_filename", NULL);
88
file = g_file_new_for_path (path);
97
set_current_wallpaper_file (GFile *file)
101
path = g_file_get_path (file);
103
eel_gconf_set_string ("/desktop/gnome/background/picture_filename", path);
30
113
GthBrowser *browser;
77
160
wallpaper_data_new (GthBrowser *browser)
79
162
WallpaperData *wdata;
82
165
wdata = g_new0 (WallpaperData, 1);
83
166
wdata->browser = browser;
85
path = eel_gconf_get_string ("/desktop/gnome/background/picture_filename", NULL);
87
wdata->old_file = g_file_new_for_path (path);
167
wdata->old_file = get_current_wallpaper ();
91
168
wdata->new_file = get_wallpaper_file ();
114
set_wallpaper_file (GFile *file)
118
path = g_file_get_path (file);
120
eel_gconf_set_string ("/desktop/gnome/background/picture_filename", path);
127
191
infobar_response_cb (GtkInfoBar *info_bar,
129
193
gpointer user_data)
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);
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);
156
222
GtkWidget *infobar;
158
set_wallpaper_file (wdata->new_file);
224
set_current_wallpaper_file (wdata->new_file);
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;
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);
218
284
GError *error = NULL;
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);
246
313
if (viewer_page != NULL) {
247
314
GdkPixbuf *pixbuf;
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,