Mercurial > hg > forks > geeqie
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 |