[Xfce4-commits] [apps/ristretto] 03/03: Added option to "not ask again for this session" when sending files to the trash. Image deletions still require confirmation.
noreply at xfce.org
noreply at xfce.org
Sun Jul 3 14:01:22 CEST 2016
This is an automated email from the git hooks/post-receive script.
eric pushed a commit to branch master
in repository apps/ristretto.
commit d78bfb7048bdc4a26ac2b65b15d3f75efd975ebe
Author: cricketer <cricketer at users.noreply.github.com>
Date: Sun Jul 3 17:17:23 2016 +0700
Added option to "not ask again for this session" when sending files to the trash. Image deletions still require confirmation.
Signed-off-by: Eric Koegel <eric.koegel at gmail.com>
---
src/main_window.c | 143 +++++++++++++++++++++++++++++++++---------------------
1 file changed, 89 insertions(+), 54 deletions(-)
diff --git a/src/main_window.c b/src/main_window.c
index ef91281..b01254d 100644
--- a/src/main_window.c
+++ b/src/main_window.c
@@ -3349,6 +3349,67 @@ cb_rstto_main_window_edit (
}
/**
+ * rstto_confirm_deletion:
+ * @window: Ristretto main window
+ * @file: Ristretto file to delete
+ * @to_trash: File is to be trashed (TRUE) or deleted (FALSE)
+ *
+ * Show dialog to confirm deletion/trashing.
+ * Use can choose not be be asked again if the file is to be trashed.
+ */
+static int
+rstto_confirm_deletion(
+ RsttoMainWindow *window,
+ RsttoFile *file,
+ gboolean to_trash )
+{
+ static gboolean dont_ask_trash = FALSE;
+ gchar *prompt = NULL;
+ const gchar *file_basename = rstto_file_get_display_name(file);
+ GtkWidget *dialog;
+ GtkWidget* dont_ask_checkbox = NULL;
+
+ if ( to_trash )
+ {
+ if ( dont_ask_trash )
+ {
+ return GTK_RESPONSE_OK;
+ }
+ prompt = g_strdup_printf( _("Are you sure you want to send image '%s' to trash?"), file_basename );
+ }
+ else
+ {
+ prompt = g_strdup_printf( _("Are you sure you want to delete image '%s' from disk?"), file_basename );
+ }
+ dialog = gtk_message_dialog_new(
+ GTK_WINDOW(window),
+ GTK_DIALOG_DESTROY_WITH_PARENT,
+ GTK_MESSAGE_WARNING,
+ GTK_BUTTONS_OK_CANCEL,
+ "%s",
+ prompt);
+
+ if ( to_trash ) {
+ dont_ask_checkbox = gtk_check_button_new_with_mnemonic (_("_Do not ask again for this session"));
+ gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (dont_ask_checkbox), FALSE);
+ gtk_box_pack_end (GTK_BOX (gtk_dialog_get_content_area (GTK_DIALOG (dialog))), dont_ask_checkbox, TRUE, TRUE, 0);
+ gtk_widget_show( dont_ask_checkbox );
+ gtk_widget_grab_focus(gtk_dialog_get_widget_for_response(GTK_DIALOG(dialog), GTK_RESPONSE_CANCEL));
+ }
+
+ int response = gtk_dialog_run( GTK_DIALOG( dialog ) );
+ if ( to_trash && (response == GTK_RESPONSE_OK) )
+ {
+ dont_ask_trash = gtk_toggle_button_get_active( GTK_TOGGLE_BUTTON(dont_ask_checkbox) );
+ }
+ gtk_widget_destroy(dialog);
+
+ g_free( prompt );
+
+ return response;
+}
+
+/**
* cb_rstto_main_window_delete:
* @widget:
* @window:
@@ -3365,6 +3426,8 @@ cb_rstto_main_window_delete (
GtkWidget *dialog;
GdkModifierType state;
gboolean delete_file = FALSE;
+ gboolean success = FALSE;
+ gchar *prompt = NULL;
GError *error = NULL;
g_return_if_fail (rstto_image_list_get_n_images (window->priv->image_list) > 0);
@@ -3377,72 +3440,44 @@ cb_rstto_main_window_delete (
}
}
- if (delete_file)
+ int response = rstto_confirm_deletion( window, file, !delete_file );
+ if ( response == GTK_RESPONSE_OK )
{
- dialog = gtk_message_dialog_new (
- GTK_WINDOW (window),
- GTK_DIALOG_DESTROY_WITH_PARENT,
- GTK_MESSAGE_WARNING,
- GTK_BUTTONS_OK_CANCEL,
- _("Are you sure you want to delete image '%s' from disk?"),
- file_basename);
-
g_object_ref (file);
- if (gtk_dialog_run (GTK_DIALOG (dialog)) == GTK_RESPONSE_OK)
+ if (delete_file)
{
- if (g_file_delete (rstto_file_get_file(file), NULL, &error) == TRUE)
- {
- rstto_image_list_remove_file (window->priv->image_list, file);
- }
- else
- {
- gtk_widget_destroy (dialog);
- dialog = gtk_message_dialog_new (
- GTK_WINDOW (window),
- GTK_DIALOG_DESTROY_WITH_PARENT,
- GTK_MESSAGE_ERROR,
- GTK_BUTTONS_OK,
- _("An error occurred when deleting image '%s' from disk.\n\n%s"),
- file_basename,
- error->message);
- gtk_dialog_run (GTK_DIALOG (dialog));
- }
+ success = g_file_delete (rstto_file_get_file(file), NULL, &error);
+ }
+ else
+ {
+ success = g_file_trash (rstto_file_get_file(file), NULL, &error);
}
- gtk_widget_destroy (dialog);
- g_object_unref (file);
- }
- else
- {
- dialog = gtk_message_dialog_new (
- GTK_WINDOW (window),
- GTK_DIALOG_DESTROY_WITH_PARENT,
- GTK_MESSAGE_WARNING,
- GTK_BUTTONS_OK_CANCEL,
- _("Are you sure you want to send image '%s' to trash?"),
- file_basename);
- g_object_ref (file);
- if (gtk_dialog_run (GTK_DIALOG (dialog)) == GTK_RESPONSE_OK)
+ if ( success )
+ {
+ rstto_image_list_remove_file (window->priv->image_list, file);
+ }
+ else
{
- if (g_file_trash (rstto_file_get_file(file), NULL, &error) == TRUE)
+ if ( delete_file )
{
- rstto_image_list_remove_file (window->priv->image_list, file);
+ prompt = g_strdup_printf( _("An error occurred when deleting image '%s' from disk.\n\n%s"), file_basename, error->message );
}
else
{
- gtk_widget_destroy (dialog);
- dialog = gtk_message_dialog_new (
- GTK_WINDOW (window),
- GTK_DIALOG_DESTROY_WITH_PARENT,
- GTK_MESSAGE_ERROR,
- GTK_BUTTONS_OK,
- _("An error occurred when sending image '%s' to trash.\n\n%s"),
- file_basename,
- error->message);
- gtk_dialog_run (GTK_DIALOG (dialog));
+ prompt = g_strdup_printf( _("An error occurred when sending image '%s' to trash.\n\n%s"), file_basename, error->message );
}
+ dialog = gtk_message_dialog_new (
+ GTK_WINDOW (window),
+ GTK_DIALOG_DESTROY_WITH_PARENT,
+ GTK_MESSAGE_ERROR,
+ GTK_BUTTONS_OK,
+ "%s",
+ prompt);
+ gtk_dialog_run (GTK_DIALOG (dialog));
+ gtk_widget_destroy (dialog);
+ g_free( prompt );
}
- gtk_widget_destroy (dialog);
g_object_unref (file);
}
}
--
To stop receiving notification emails like this one, please contact
the administrator of this repository.
More information about the Xfce4-commits
mailing list