comparison src/preferences.c @ 2860:b20a96b979a3

Fix #437: Delete to standard Trash directory https://github.com/BestImageViewer/geeqie/issues/437 The method of file deletion is changed. The Preferences/Behaviour option "Safe delete" is removed. The user has the option to choose Geeqie-defined trash bin or system-defined trash bin as the normal mode - set in Preferences/Behaviour. Menus have two entries: Move to trash and Permanent delete. The Delete key moves to trash; shift-Delete deletes permanently. Both Move to trash and Permanent delete have user-selectable confirmation, set in Preferences/Behaviour. This means the function of the Delete key is changed from Permanent delete to Move to trash, which is a fail-safe change.
author Colin Clark <colin.clark@cclark.uk>
date Sat, 03 Nov 2018 17:53:31 +0000
parents bb44bd76f857
children 87242753ed2c
comparison
equal deleted inserted replaced
2859:1656d2341e2f 2860:b20a96b979a3
259 if (options->file_filter.disable_file_extension_checks != c_options->file_filter.disable_file_extension_checks) refresh = TRUE; 259 if (options->file_filter.disable_file_extension_checks != c_options->file_filter.disable_file_extension_checks) refresh = TRUE;
260 if (options->file_filter.disable != c_options->file_filter.disable) refresh = TRUE; 260 if (options->file_filter.disable != c_options->file_filter.disable) refresh = TRUE;
261 261
262 options->file_ops.confirm_delete = c_options->file_ops.confirm_delete; 262 options->file_ops.confirm_delete = c_options->file_ops.confirm_delete;
263 options->file_ops.enable_delete_key = c_options->file_ops.enable_delete_key; 263 options->file_ops.enable_delete_key = c_options->file_ops.enable_delete_key;
264 options->file_ops.safe_delete_enable = c_options->file_ops.safe_delete_enable; 264 options->file_ops.confirm_move_to_trash = c_options->file_ops.confirm_move_to_trash;
265 options->file_ops.use_system_trash = c_options->file_ops.use_system_trash;
265 options->file_ops.safe_delete_folder_maxsize = c_options->file_ops.safe_delete_folder_maxsize; 266 options->file_ops.safe_delete_folder_maxsize = c_options->file_ops.safe_delete_folder_maxsize;
266 options->tools_restore_state = c_options->tools_restore_state; 267 options->tools_restore_state = c_options->tools_restore_state;
267 options->save_window_positions = c_options->save_window_positions; 268 options->save_window_positions = c_options->save_window_positions;
268 options->use_saved_window_positions_for_new_windows = c_options->use_saved_window_positions_for_new_windows; 269 options->use_saved_window_positions_for_new_windows = c_options->use_saved_window_positions_for_new_windows;
269 options->save_dialog_window_positions = c_options->save_dialog_window_positions; 270 options->save_dialog_window_positions = c_options->save_dialog_window_positions;
3079 3080
3080 gtk_widget_show(tabcomp); 3081 gtk_widget_show(tabcomp);
3081 } 3082 }
3082 3083
3083 /* advanced entry tab */ 3084 /* advanced entry tab */
3085 static void use_geeqie_trash_cb(GtkWidget *widget, gpointer data)
3086 {
3087 if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(widget)))
3088 {
3089 c_options->file_ops.use_system_trash = FALSE;
3090 }
3091 }
3092
3093 static void use_system_trash_cb(GtkWidget *widget, gpointer data)
3094 {
3095 if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(widget)))
3096 {
3097 c_options->file_ops.use_system_trash = TRUE;
3098 }
3099 }
3100
3084 static void config_tab_behavior(GtkWidget *notebook) 3101 static void config_tab_behavior(GtkWidget *notebook)
3085 { 3102 {
3086 GtkWidget *hbox; 3103 GtkWidget *hbox;
3087 GtkWidget *vbox; 3104 GtkWidget *vbox;
3088 GtkWidget *group; 3105 GtkWidget *group;
3097 3114
3098 vbox = scrolled_notebook_page(notebook, _("Behavior")); 3115 vbox = scrolled_notebook_page(notebook, _("Behavior"));
3099 3116
3100 group = pref_group_new(vbox, FALSE, _("Delete"), GTK_ORIENTATION_VERTICAL); 3117 group = pref_group_new(vbox, FALSE, _("Delete"), GTK_ORIENTATION_VERTICAL);
3101 3118
3102 pref_checkbox_new_int(group, _("Confirm file delete"), 3119 pref_checkbox_new_int(group, _("Confirm permanent file delete"),
3103 options->file_ops.confirm_delete, &c_options->file_ops.confirm_delete); 3120 options->file_ops.confirm_delete, &c_options->file_ops.confirm_delete);
3121 pref_checkbox_new_int(group, _("Confirm move file to Trash"),
3122 options->file_ops.confirm_move_to_trash, &c_options->file_ops.confirm_move_to_trash);
3104 pref_checkbox_new_int(group, _("Enable Delete key"), 3123 pref_checkbox_new_int(group, _("Enable Delete key"),
3105 options->file_ops.enable_delete_key, &c_options->file_ops.enable_delete_key); 3124 options->file_ops.enable_delete_key, &c_options->file_ops.enable_delete_key);
3106 3125
3107 ct_button = pref_checkbox_new_int(group, _("Safe delete"), 3126 ct_button = pref_radiobutton_new(group, NULL, _("Use Geeqie trash location"),
3108 options->file_ops.safe_delete_enable, &c_options->file_ops.safe_delete_enable); 3127 !options->file_ops.use_system_trash, G_CALLBACK(use_geeqie_trash_cb),NULL);
3109 3128
3110 hbox = pref_box_new(group, FALSE, GTK_ORIENTATION_HORIZONTAL, PREF_PAD_SPACE); 3129 hbox = pref_box_new(group, FALSE, GTK_ORIENTATION_HORIZONTAL, PREF_PAD_SPACE);
3111 pref_checkbox_link_sensitivity(ct_button, hbox); 3130 pref_checkbox_link_sensitivity(ct_button, hbox);
3112 3131
3113 pref_spacer(hbox, PREF_PAD_INDENT - PREF_PAD_SPACE); 3132 pref_spacer(hbox, PREF_PAD_INDENT - PREF_PAD_SPACE);
3131 gtk_widget_show(button); 3150 gtk_widget_show(button);
3132 3151
3133 button = pref_button_new(NULL, GTK_STOCK_CLEAR, NULL, FALSE, 3152 button = pref_button_new(NULL, GTK_STOCK_CLEAR, NULL, FALSE,
3134 G_CALLBACK(safe_delete_clear_cb), NULL); 3153 G_CALLBACK(safe_delete_clear_cb), NULL);
3135 gtk_box_pack_end(GTK_BOX(hbox), button, FALSE, FALSE, 0); 3154 gtk_box_pack_end(GTK_BOX(hbox), button, FALSE, FALSE, 0);
3155 pref_radiobutton_new(group, ct_button, _("Use system Trash bin"),
3156 options->file_ops.use_system_trash, G_CALLBACK(use_system_trash_cb), NULL);
3136 gtk_widget_show(button); 3157 gtk_widget_show(button);
3158
3159 pref_spacer(group, PREF_PAD_GROUP);
3137 3160
3138 3161
3139 group = pref_group_new(vbox, FALSE, _("Behavior"), GTK_ORIENTATION_VERTICAL); 3162 group = pref_group_new(vbox, FALSE, _("Behavior"), GTK_ORIENTATION_VERTICAL);
3140 3163
3141 pref_checkbox_new_int(group, _("Descend folders in tree view"), 3164 pref_checkbox_new_int(group, _("Descend folders in tree view"),
3165 pref_spin_new_int(group, _("Drag'n drop icon size"), NULL, 3188 pref_spin_new_int(group, _("Drag'n drop icon size"), NULL,
3166 16, 256, 16, options->dnd_icon_size, &c_options->dnd_icon_size); 3189 16, 256, 16, options->dnd_icon_size, &c_options->dnd_icon_size);
3167 3190
3168 table = pref_table_new(group, 2, 1, FALSE, FALSE); 3191 table = pref_table_new(group, 2, 1, FALSE, FALSE);
3169 add_clipboard_selection_menu(table, 0, 0, _("Copy path clipboard selection:"), options->clipboard_selection, &c_options->clipboard_selection); 3192 add_clipboard_selection_menu(table, 0, 0, _("Copy path clipboard selection:"), options->clipboard_selection, &c_options->clipboard_selection);
3193
3194 pref_spacer(group, PREF_PAD_GROUP);
3170 3195
3171 group = pref_group_new(vbox, FALSE, _("Navigation"), GTK_ORIENTATION_VERTICAL); 3196 group = pref_group_new(vbox, FALSE, _("Navigation"), GTK_ORIENTATION_VERTICAL);
3172 3197
3173 pref_checkbox_new_int(group, _("Progressive keyboard scrolling"), 3198 pref_checkbox_new_int(group, _("Progressive keyboard scrolling"),
3174 options->progressive_key_scrolling, &c_options->progressive_key_scrolling); 3199 options->progressive_key_scrolling, &c_options->progressive_key_scrolling);
3183 table = pref_table_new(group, 2, 1, FALSE, FALSE); 3208 table = pref_table_new(group, 2, 1, FALSE, FALSE);
3184 add_video_menu(table, 0, 0, _("Play with:"), options->image_l_click_video_editor, &c_options->image_l_click_video_editor); 3209 add_video_menu(table, 0, 0, _("Play with:"), options->image_l_click_video_editor, &c_options->image_l_click_video_editor);
3185 3210
3186 3211
3187 #ifdef DEBUG 3212 #ifdef DEBUG
3213 pref_spacer(group, PREF_PAD_GROUP);
3214
3188 group = pref_group_new(vbox, FALSE, _("Debugging"), GTK_ORIENTATION_VERTICAL); 3215 group = pref_group_new(vbox, FALSE, _("Debugging"), GTK_ORIENTATION_VERTICAL);
3189 3216
3190 pref_spin_new_int(group, _("Debug level:"), NULL, 3217 pref_spin_new_int(group, _("Debug level:"), NULL,
3191 DEBUG_LEVEL_MIN, DEBUG_LEVEL_MAX, 1, get_debug_level(), &debug_c); 3218 DEBUG_LEVEL_MIN, DEBUG_LEVEL_MAX, 1, get_debug_level(), &debug_c);
3192 3219