static void extension_switch_activated_cb (GObject *gobject, GParamSpec *pspec, gpointer user_data) { RowData *row_data = user_data; BrowserData *browser_data = row_data->browser_data; GthExtensionDescription *description = row_data->description; GError *error = NULL; if (! gth_extension_description_is_active (description)) { if (! gth_extension_manager_activate (gth_main_get_default_extension_manager (), description->id, &error)) { _gtk_error_dialog_from_gerror_run (GTK_WINDOW (browser_data->dialog), _("Could not activate the extension"), error); g_clear_error (&error); g_signal_handlers_block_by_data (gobject, user_data); gtk_switch_set_active (GTK_SWITCH (gobject), FALSE); g_signal_handlers_unblock_by_data (gobject, user_data); } else browser_data->enabled_disabled_cardinality_changed = TRUE; } else { if (! gth_extension_manager_deactivate (gth_main_get_default_extension_manager (), description->id, &error)) { _gtk_error_dialog_from_gerror_run (GTK_WINDOW (browser_data->dialog), _("Could not deactivate the extension"), error); g_clear_error (&error); g_signal_handlers_block_by_data (gobject, user_data); gtk_switch_set_active (GTK_SWITCH (gobject), TRUE); g_signal_handlers_unblock_by_data (gobject, user_data); } else browser_data->enabled_disabled_cardinality_changed = TRUE; } }
static void infobar_response_cb (GtkInfoBar *info_bar, int response_id, gpointer user_data) { WallpaperData *wdata = user_data; const gchar *control_center_command = NULL; GError *error = NULL; g_return_if_fail (GTH_IS_BROWSER (wdata->browser)); switch (response_id) { case _RESPONSE_PREFERENCES: if (g_strcmp0 (g_getenv ("XDG_CURRENT_DESKTOP"), "Cinnamon") == 0 || g_strcmp0 (g_getenv ("XDG_CURRENT_DESKTOP"), "X-Cinnamon") == 0) control_center_command = "cinnamon-settings backgrounds"; else if (g_strcmp0 (g_getenv ("XDG_CURRENT_DESKTOP"), "MATE") == 0) control_center_command = "mate-appearance-properties -p background"; else if (g_strcmp0 (g_getenv ("XDG_CURRENT_DESKTOP"), "GNOME") == 0) control_center_command = "gnome-control-center appearance"; else if (g_strcmp0 (g_getenv ("XDG_CURRENT_DESKTOP"), "Unity") == 0) control_center_command = "unity-control-center appearance"; if (control_center_command != NULL && ! g_spawn_command_line_async (control_center_command, &error)) { _gtk_error_dialog_from_gerror_run (GTK_WINDOW (wdata->browser), _("Could not show the desktop background properties"), error); g_clear_error (&error); } break; case _RESPONSE_UNDO: wallpaper_style_set_as_current (&wdata->old_style); break; } gtk_widget_hide (GTK_WIDGET (info_bar)); wallpaper_data_free (wdata); }
static void infobar_response_cb (GtkInfoBar *info_bar, int response_id, gpointer user_data) { WallpaperData *wdata = user_data; GError *error = NULL; g_return_if_fail (GTH_IS_BROWSER (wdata->browser)); switch (response_id) { case _RESPONSE_PREFERENCES: if (! g_spawn_command_line_async (DESKTOP_BACKGROUND_PROPERTIES_COMMAND, &error)) { _gtk_error_dialog_from_gerror_run (GTK_WINDOW (wdata->browser), _("Could not show the desktop background properties"), error); g_clear_error (&error); } break; case _RESPONSE_UNDO: wallpaper_style_set_as_current (&wdata->old_style); break; } gtk_widget_hide (GTK_WIDGET (info_bar)); wallpaper_data_free (wdata); }
void gth_browser_activate_folder_context_open_in_file_manager (GSimpleAction *action, GVariant *parameter, gpointer user_data) { GthBrowser *browser = GTH_BROWSER (user_data); GthFileData *file_data; char *uri; GError *error = NULL; file_data = gth_browser_get_folder_popup_file_data (browser); if (file_data == NULL) return; uri = g_file_get_uri (file_data->file); if (! gtk_show_uri_on_window (GTK_WINDOW (browser), uri, GDK_CURRENT_TIME, &error)) { _gtk_error_dialog_from_gerror_run (GTK_WINDOW (browser), _("Could not open the location"), error); g_clear_error (&error); } g_free (uri); g_object_unref (file_data); }
static void completed_messagedialog_response_cb (GtkDialog *dialog, int response_id, gpointer user_data) { DialogData *data = user_data; switch (response_id) { case GTK_RESPONSE_DELETE_EVENT: case GTK_RESPONSE_CLOSE: gtk_widget_destroy (GTK_WIDGET (dialog)); gtk_dialog_response (GTK_DIALOG (data->dialog), GTK_RESPONSE_DELETE_EVENT); break; case _OPEN_IN_BROWSER_RESPONSE: { OAuthAccount *account; GdkScreen *screen; char *url = NULL; GError *error = NULL; account = web_service_get_current_account (WEB_SERVICE (data->service)); screen = gtk_widget_get_screen (GTK_WIDGET (dialog)); gtk_widget_destroy (GTK_WIDGET (dialog)); if (data->album != NULL) { if (data->album->alternate_url != NULL) url = g_strdup (data->album->alternate_url); else url = g_strconcat ("http://picasaweb.google.com/", account->id, "/", data->album->id, NULL); } else url = g_strconcat ("http://picasaweb.google.com/", account->id, NULL); if ((url != NULL) && ! gtk_show_uri (screen, url, 0, &error)) { gth_task_dialog (GTH_TASK (data->service), TRUE, NULL); _gtk_error_dialog_from_gerror_run (GTK_WINDOW (data->browser), _("Could not connect to the server"), error); g_clear_error (&error); } gtk_dialog_response (GTK_DIALOG (data->dialog), GTK_RESPONSE_DELETE_EVENT); g_free (url); } break; default: break; } }
static void save_wallpaper_task_completed_cb (GthTask *task, GError *error, gpointer user_data) { WallpaperData *wdata = user_data; if (error != NULL) { _gtk_error_dialog_from_gerror_run (GTK_WINDOW (wdata->browser), _("Could not set the desktop background"), error); wallpaper_data_free (wdata); return; } wallpaper_data_set (wdata); }
static void photoset_list_ready_cb (GObject *source_object, GAsyncResult *res, gpointer user_data) { DialogData *data = user_data; GError *error = NULL; GList *scan; _g_object_list_unref (data->photosets); data->photosets = flickr_service_list_photosets_finish (FLICKR_SERVICE (source_object), res, &error); if (error != NULL) { if (data->service != NULL) gth_task_dialog (GTH_TASK (data->service), TRUE, NULL); _gtk_error_dialog_from_gerror_run (GTK_WINDOW (data->browser), _("Could not connect to the server"), error); g_clear_error (&error); gtk_dialog_response (GTK_DIALOG (data->dialog), GTK_RESPONSE_DELETE_EVENT); return; } gtk_list_store_clear (GTK_LIST_STORE (GET_WIDGET ("photoset_liststore"))); for (scan = data->photosets; scan; scan = scan->next) { FlickrPhotoset *photoset = scan->data; char *n_photos; GtkTreeIter iter; n_photos = g_strdup_printf ("(%d)", photoset->n_photos); gtk_list_store_append (GTK_LIST_STORE (GET_WIDGET ("photoset_liststore")), &iter); gtk_list_store_set (GTK_LIST_STORE (GET_WIDGET ("photoset_liststore")), &iter, PHOTOSET_DATA_COLUMN, photoset, PHOTOSET_ICON_COLUMN, "file-catalog-symbolic", PHOTOSET_TITLE_COLUMN, photoset->title, PHOTOSET_N_PHOTOS_COLUMN, n_photos, -1); g_free (n_photos); } gtk_dialog_set_response_sensitive (GTK_DIALOG (data->dialog), GTK_RESPONSE_OK, TRUE); gth_task_dialog (GTH_TASK (data->service), TRUE, NULL); gtk_window_set_transient_for (GTK_WINDOW (data->dialog), GTK_WINDOW (data->browser)); gtk_window_set_modal (GTK_WINDOW (data->dialog), FALSE); gtk_window_present (GTK_WINDOW (data->dialog)); }
static void copy_wallpaper_ready_cb (GObject *source_object, GAsyncResult *res, gpointer user_data) { WallpaperData *wdata = user_data; GError *error = NULL; if (! g_file_copy_finish (G_FILE (source_object), res, &error)) { _gtk_error_dialog_from_gerror_run (GTK_WINDOW (wdata->browser), _("Could not set the desktop background"), error); g_clear_error (&error); wallpaper_data_free (wdata); return; } wallpaper_data_set (wdata); }
static void get_albums_ready_cb (GObject *source_object, GAsyncResult *res, gpointer user_data) { DialogData *data = user_data; GError *error = NULL; GList *scan; _g_object_list_unref (data->albums); data->albums = facebook_service_get_albums_finish (data->service, res, &error); if (error != NULL) { if (data->service != NULL) gth_task_dialog (GTH_TASK (data->service), TRUE, NULL); _gtk_error_dialog_from_gerror_run (GTK_WINDOW (data->browser), _("Could not connect to the server"), error); g_clear_error (&error); gtk_widget_destroy (data->dialog); return; } gtk_list_store_clear (GTK_LIST_STORE (GET_WIDGET ("album_liststore"))); for (scan = data->albums; scan; scan = scan->next) { FacebookAlbum *album = scan->data; char *n_photos; GtkTreeIter iter; n_photos = g_strdup_printf ("(%d)", album->count); gtk_list_store_append (GTK_LIST_STORE (GET_WIDGET ("album_liststore")), &iter); gtk_list_store_set (GTK_LIST_STORE (GET_WIDGET ("album_liststore")), &iter, ALBUM_DATA_COLUMN, album, ALBUM_ICON_COLUMN, "file-catalog-symbolic", ALBUM_NAME_COLUMN, album->name, ALBUM_SIZE_COLUMN, n_photos, -1); g_free (n_photos); } gth_task_dialog (GTH_TASK (data->service), TRUE, NULL); gtk_window_set_transient_for (GTK_WINDOW (data->dialog), GTK_WINDOW (data->browser)); gtk_window_set_modal (GTK_WINDOW (data->dialog), FALSE); gtk_window_present (GTK_WINDOW (data->dialog)); }
static void completed_messagedialog_response_cb (GtkDialog *dialog, int response_id, gpointer user_data) { DialogData *data = user_data; switch (response_id) { case GTK_RESPONSE_DELETE_EVENT: case GTK_RESPONSE_CLOSE: gtk_widget_destroy (GTK_WIDGET (dialog)); gtk_dialog_response (GTK_DIALOG (data->dialog), GTK_RESPONSE_DELETE_EVENT); break; case _OPEN_IN_BROWSER_RESPONSE: { GdkScreen *screen; OAuthAccount *account; char *url = NULL; GError *error = NULL; screen = gtk_widget_get_screen (GTK_WIDGET (dialog)); gtk_widget_destroy (GTK_WIDGET (dialog)); account = web_service_get_current_account (WEB_SERVICE (data->service)); if (data->photoset == NULL) { GString *ids; GList *scan; ids = g_string_new (""); for (scan = data->photos_ids; scan; scan = scan->next) { if (scan != data->photos_ids) g_string_append (ids, ","); g_string_append (ids, (char *) scan->data); } url = g_strconcat (data->server->url, "/photos/upload/edit/?ids=", ids->str, NULL); g_string_free (ids, TRUE); } else if (data->photoset->url != NULL) url = g_strdup (data->photoset->url); else if (data->photoset->id != NULL) url = g_strconcat (data->server->url, "/photos/", account->id, "/sets/", data->photoset->id, NULL); if ((url != NULL) && ! gtk_show_uri (screen, url, 0, &error)) { if (data->service != NULL) gth_task_dialog (GTH_TASK (data->service), TRUE, NULL); _gtk_error_dialog_from_gerror_run (GTK_WINDOW (data->browser), _("Could not connect to the server"), error); g_clear_error (&error); } gtk_dialog_response (GTK_DIALOG (data->dialog), GTK_RESPONSE_DELETE_EVENT); g_free (url); } break; default: break; } }