static void save_file_failed_error (ScreenshotDialog *dialog, GError *error) { GtkWidget *toplevel; GtkWidget *error_dialog; char *folder; toplevel = screenshot_dialog_get_toplevel (dialog); screenshot_dialog_set_busy (dialog, FALSE); /* we had an error, display a dialog to the user and let him choose * another name/location to save the screenshot. */ folder = screenshot_dialog_get_folder (dialog); error_dialog = gtk_message_dialog_new (GTK_WINDOW (toplevel), GTK_DIALOG_DESTROY_WITH_PARENT, GTK_MESSAGE_ERROR, GTK_BUTTONS_OK, _("Error while saving screenshot")); /* translators: first %s is the folder URI, second %s is the VFS error */ gtk_message_dialog_format_secondary_text (GTK_MESSAGE_DIALOG (error_dialog), _("Impossible to save the screenshot " "to %s.\n Error was %s.\n Please choose another " "location and retry."), folder, error->message); gtk_widget_show (error_dialog); g_signal_connect (error_dialog, "response", G_CALLBACK (error_dialog_response_cb), dialog); g_free (folder); }
static void save_folder_to_settings (ScreenshotDialog *dialog) { char *folder; folder = screenshot_dialog_get_folder (dialog); g_settings_set_string (settings, LAST_SAVE_DIRECTORY_KEY, folder); g_free (folder); }
static void save_folder_to_settings (ScreenshotApplication *self) { char *folder; folder = screenshot_dialog_get_folder (self->priv->dialog); g_settings_set_string (screenshot_config->settings, LAST_SAVE_DIRECTORY_KEY, folder); g_free (folder); }
static void save_folder_to_gconf (ScreenshotDialog *dialog) { GConfClient *gconf_client; char *folder; gconf_client = gconf_client_get_default (); folder = screenshot_dialog_get_folder (dialog); /* Error is NULL, as there's nothing we can do */ gconf_client_set_string (gconf_client, LAST_SAVE_DIRECTORY_KEY, folder, NULL); g_free (folder); g_object_unref (gconf_client); }
static void save_pixbuf_handle_error (ScreenshotApplication *self, GError *error) { if (!g_strcmp0 (g_getenv ("XDG_CURRENT_DESKTOP"), "Unity") || screenshot_config->interactive) { ScreenshotDialog *dialog = self->priv->dialog; screenshot_dialog_set_busy (dialog, FALSE); if (g_error_matches (error, G_IO_ERROR, G_IO_ERROR_EXISTS) && !self->priv->should_overwrite) { gchar *folder = screenshot_dialog_get_folder (dialog); gchar *folder_uri = g_path_get_basename (folder); gchar *folder_name = g_uri_unescape_string (folder_uri, NULL); gchar *file_name = screenshot_dialog_get_filename (dialog); gchar *detail = g_strdup_printf (_("A file named \"%s\" already exists in \"%s\""), file_name, folder_name); gint response; response = screenshot_show_dialog (GTK_WINDOW (dialog->dialog), GTK_MESSAGE_WARNING, GTK_BUTTONS_YES_NO, _("Overwrite existing file?"), detail); g_free (folder); g_free (folder_name); g_free (folder_uri); g_free (file_name); g_free (detail); if (response == GTK_RESPONSE_YES) { self->priv->should_overwrite = TRUE; screenshot_save_to_file (self); return; } } else { screenshot_show_dialog (GTK_WINDOW (dialog->dialog), GTK_MESSAGE_ERROR, GTK_BUTTONS_OK, _("Unable to capture a screenshot"), _("Error creating file. Please choose another location and retry.")); } gtk_widget_grab_focus (dialog->filename_entry); } else { g_critical ("Unable to save the screenshot: %s", error->message); screenshot_play_sound_effect ("dialog-error", _("Unable to capture a screenshot")); g_application_release (G_APPLICATION (self)); if (screenshot_config->file != NULL) exit (EXIT_FAILURE); } }