Mercurial > geeqie
comparison src/utilops.c @ 924:96a1f535ce89
indicate check warnings and errors in delete and rename dialogs
author | nadvornik |
---|---|
date | Wed, 23 Jul 2008 22:19:16 +0000 |
parents | b416159a5820 |
children | 6a42ab7051f2 |
comparison
equal
deleted
inserted
replaced
923:893cd191db23 | 924:96a1f535ce89 |
---|---|
30 #include "ui_fileops.h" | 30 #include "ui_fileops.h" |
31 #include "ui_misc.h" | 31 #include "ui_misc.h" |
32 #include "ui_tabcomp.h" | 32 #include "ui_tabcomp.h" |
33 #include "editors.h" | 33 #include "editors.h" |
34 | 34 |
35 static GdkPixbuf *file_util_get_error_icon(FileData *fd, GtkWidget *widget); | |
36 | |
35 /* | 37 /* |
36 *-------------------------------------------------------------------------- | 38 *-------------------------------------------------------------------------- |
37 * Adds 1 or 2 images (if 2, side by side) to a GenericDialog | 39 * Adds 1 or 2 images (if 2, side by side) to a GenericDialog |
38 *-------------------------------------------------------------------------- | 40 *-------------------------------------------------------------------------- |
39 */ | 41 */ |
309 gpointer resume_data; | 311 gpointer resume_data; |
310 }; | 312 }; |
311 | 313 |
312 enum { | 314 enum { |
313 UTILITY_COLUMN_FD = 0, | 315 UTILITY_COLUMN_FD = 0, |
316 UTILITY_COLUMN_PIXBUF, | |
314 UTILITY_COLUMN_PATH, | 317 UTILITY_COLUMN_PATH, |
315 UTILITY_COLUMN_NAME, | 318 UTILITY_COLUMN_NAME, |
316 UTILITY_COLUMN_SIDECARS, | 319 UTILITY_COLUMN_SIDECARS, |
317 UTILITY_COLUMN_DEST_PATH, | 320 UTILITY_COLUMN_DEST_PATH, |
318 UTILITY_COLUMN_DEST_NAME, | 321 UTILITY_COLUMN_DEST_NAME, |
352 g_free(ud->dest_path); | 355 g_free(ud->dest_path); |
353 | 356 |
354 g_free(ud); | 357 g_free(ud); |
355 } | 358 } |
356 | 359 |
357 static GtkTreeViewColumn *file_util_dialog_add_list_column(GtkWidget *view, const gchar *text, gint n) | 360 static GtkTreeViewColumn *file_util_dialog_add_list_column(GtkWidget *view, const gchar *text, gboolean image, gint n) |
358 { | 361 { |
359 GtkTreeViewColumn *column; | 362 GtkTreeViewColumn *column; |
360 GtkCellRenderer *renderer; | 363 GtkCellRenderer *renderer; |
361 | 364 |
362 column = gtk_tree_view_column_new(); | 365 column = gtk_tree_view_column_new(); |
363 gtk_tree_view_column_set_title(column, text); | 366 gtk_tree_view_column_set_title(column, text); |
364 gtk_tree_view_column_set_min_width(column, 4); | 367 gtk_tree_view_column_set_min_width(column, 4); |
365 gtk_tree_view_column_set_sizing(column, GTK_TREE_VIEW_COLUMN_GROW_ONLY); | 368 if (image) |
366 renderer = gtk_cell_renderer_text_new(); | 369 { |
367 gtk_tree_view_column_pack_start(column, renderer, TRUE); | 370 gtk_tree_view_column_set_min_width(column, 20); |
368 gtk_tree_view_column_add_attribute(column, renderer, "text", n); | 371 gtk_tree_view_column_set_sizing(column, GTK_TREE_VIEW_COLUMN_FIXED); |
372 renderer = gtk_cell_renderer_pixbuf_new(); | |
373 gtk_tree_view_column_pack_start(column, renderer, TRUE); | |
374 gtk_tree_view_column_add_attribute(column, renderer, "pixbuf", n); | |
375 } | |
376 else | |
377 { | |
378 gtk_tree_view_column_set_sizing(column, GTK_TREE_VIEW_COLUMN_GROW_ONLY); | |
379 renderer = gtk_cell_renderer_text_new(); | |
380 gtk_tree_view_column_pack_start(column, renderer, TRUE); | |
381 gtk_tree_view_column_add_attribute(column, renderer, "text", n); | |
382 } | |
369 gtk_tree_view_append_column(GTK_TREE_VIEW(view), column); | 383 gtk_tree_view_append_column(GTK_TREE_VIEW(view), column); |
370 | 384 |
371 return column; | 385 return column; |
372 } | 386 } |
373 | 387 |
396 gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(scrolled), | 410 gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(scrolled), |
397 GTK_POLICY_AUTOMATIC, GTK_POLICY_ALWAYS); | 411 GTK_POLICY_AUTOMATIC, GTK_POLICY_ALWAYS); |
398 gtk_box_pack_start(GTK_BOX(box), scrolled, TRUE, TRUE, 0); | 412 gtk_box_pack_start(GTK_BOX(box), scrolled, TRUE, TRUE, 0); |
399 gtk_widget_show(scrolled); | 413 gtk_widget_show(scrolled); |
400 | 414 |
401 store = gtk_list_store_new(UTILITY_COLUMN_COUNT, G_TYPE_POINTER, G_TYPE_STRING, G_TYPE_STRING, G_TYPE_STRING, G_TYPE_STRING, G_TYPE_STRING); | 415 store = gtk_list_store_new(UTILITY_COLUMN_COUNT, G_TYPE_POINTER, GDK_TYPE_PIXBUF, G_TYPE_STRING, G_TYPE_STRING, G_TYPE_STRING, G_TYPE_STRING, G_TYPE_STRING); |
402 view = gtk_tree_view_new_with_model(GTK_TREE_MODEL(store)); | 416 view = gtk_tree_view_new_with_model(GTK_TREE_MODEL(store)); |
403 g_object_unref(store); | 417 g_object_unref(store); |
404 | 418 |
405 gtk_tree_view_set_headers_visible(GTK_TREE_VIEW(view), TRUE); | 419 gtk_tree_view_set_headers_visible(GTK_TREE_VIEW(view), TRUE); |
406 gtk_tree_view_set_enable_search(GTK_TREE_VIEW(view), FALSE); | 420 gtk_tree_view_set_enable_search(GTK_TREE_VIEW(view), FALSE); |
407 | 421 |
422 file_util_dialog_add_list_column(view, "", TRUE, UTILITY_COLUMN_PIXBUF); | |
423 | |
408 if (full_paths) | 424 if (full_paths) |
409 { | 425 { |
410 file_util_dialog_add_list_column(view, _("Location"), UTILITY_COLUMN_PATH); | 426 file_util_dialog_add_list_column(view, _("Location"), FALSE, UTILITY_COLUMN_PATH); |
411 } | 427 } |
412 else | 428 else |
413 { | 429 { |
414 file_util_dialog_add_list_column(view, _("Name"), UTILITY_COLUMN_NAME); | 430 file_util_dialog_add_list_column(view, _("Name"), FALSE, UTILITY_COLUMN_NAME); |
415 } | 431 } |
416 | 432 |
417 gtk_widget_set_size_request(view, UTILITY_LIST_MIN_WIDTH, UTILITY_LIST_MIN_HEIGHT); | 433 gtk_widget_set_size_request(view, UTILITY_LIST_MIN_WIDTH, UTILITY_LIST_MIN_HEIGHT); |
418 gtk_container_add(GTK_CONTAINER(scrolled), view); | 434 gtk_container_add(GTK_CONTAINER(scrolled), view); |
419 gtk_widget_show(view); | 435 gtk_widget_show(view); |
427 sidecars = file_data_sc_list_to_string(fd); | 443 sidecars = file_data_sc_list_to_string(fd); |
428 | 444 |
429 gtk_list_store_append(store, &iter); | 445 gtk_list_store_append(store, &iter); |
430 gtk_list_store_set(store, &iter, | 446 gtk_list_store_set(store, &iter, |
431 UTILITY_COLUMN_FD, fd, | 447 UTILITY_COLUMN_FD, fd, |
448 UTILITY_COLUMN_PIXBUF, file_util_get_error_icon(fd, view), | |
432 UTILITY_COLUMN_PATH, fd->path, | 449 UTILITY_COLUMN_PATH, fd->path, |
433 UTILITY_COLUMN_NAME, fd->name, | 450 UTILITY_COLUMN_NAME, fd->name, |
434 UTILITY_COLUMN_SIDECARS, sidecars, | 451 UTILITY_COLUMN_SIDECARS, sidecars, |
435 UTILITY_COLUMN_DEST_PATH, fd->change ? fd->change->dest : "error", | 452 UTILITY_COLUMN_DEST_PATH, fd->change ? fd->change->dest : "error", |
436 UTILITY_COLUMN_DEST_NAME, fd->change ? filename_from_path(fd->change->dest) : "error", | 453 UTILITY_COLUMN_DEST_NAME, fd->change ? filename_from_path(fd->change->dest) : "error", |
798 file_util_perform_ci_internal(ud); | 815 file_util_perform_ci_internal(ud); |
799 } | 816 } |
800 } | 817 } |
801 } | 818 } |
802 | 819 |
820 static GdkPixbuf *file_util_get_error_icon(FileData *fd, GtkWidget *widget) | |
821 { | |
822 static GdkPixbuf *pb_warning; | |
823 static GdkPixbuf *pb_error; | |
824 gint error; | |
825 | |
826 if (!pb_warning) | |
827 { | |
828 pb_warning = gtk_widget_render_icon(widget, GTK_STOCK_DIALOG_WARNING, GTK_ICON_SIZE_MENU, NULL); | |
829 } | |
830 | |
831 if (!pb_error) | |
832 { | |
833 pb_error = gtk_widget_render_icon(widget, GTK_STOCK_DIALOG_ERROR, GTK_ICON_SIZE_MENU, NULL); | |
834 } | |
835 | |
836 error = file_data_sc_check_ci_dest(fd); | |
837 | |
838 if (!error) return NULL; | |
839 | |
840 if (error & CHANGE_ERROR_MASK) | |
841 { | |
842 return pb_error; | |
843 } | |
844 else | |
845 { | |
846 return pb_warning; | |
847 } | |
848 } | |
803 | 849 |
804 static void file_util_check_resume_cb(GenericDialog *gd, gpointer data) | 850 static void file_util_check_resume_cb(GenericDialog *gd, gpointer data) |
805 { | 851 { |
806 UtilityData *ud = data; | 852 UtilityData *ud = data; |
807 ud->phase = UTILITY_PHASE_CHECKED; | 853 ud->phase = UTILITY_PHASE_CHECKED; |
1050 const gchar *dest = gtk_entry_get_text(GTK_ENTRY(ud->rename_entry)); | 1096 const gchar *dest = gtk_entry_get_text(GTK_ENTRY(ud->rename_entry)); |
1051 | 1097 |
1052 gtk_tree_model_get(store, &iter, UTILITY_COLUMN_FD, &fd, -1); | 1098 gtk_tree_model_get(store, &iter, UTILITY_COLUMN_FD, &fd, -1); |
1053 file_data_sc_update_ci_rename(fd, dest); | 1099 file_data_sc_update_ci_rename(fd, dest); |
1054 gtk_list_store_set(GTK_LIST_STORE(store), &iter, | 1100 gtk_list_store_set(GTK_LIST_STORE(store), &iter, |
1101 UTILITY_COLUMN_PIXBUF, file_util_get_error_icon(fd, ud->listview), | |
1055 UTILITY_COLUMN_DEST_PATH, fd->change->dest, | 1102 UTILITY_COLUMN_DEST_PATH, fd->change->dest, |
1056 UTILITY_COLUMN_DEST_NAME, filename_from_path(fd->change->dest), | 1103 UTILITY_COLUMN_DEST_NAME, filename_from_path(fd->change->dest), |
1057 -1); | 1104 -1); |
1058 } | 1105 } |
1059 return; | 1106 return; |
1093 dest = g_strdup_printf("%s%0*d%s", front, padding, n, end); | 1140 dest = g_strdup_printf("%s%0*d%s", front, padding, n, end); |
1094 } | 1141 } |
1095 | 1142 |
1096 file_data_sc_update_ci_rename(fd, dest); | 1143 file_data_sc_update_ci_rename(fd, dest); |
1097 gtk_list_store_set(GTK_LIST_STORE(store), &iter, | 1144 gtk_list_store_set(GTK_LIST_STORE(store), &iter, |
1098 UTILITY_COLUMN_DEST_PATH, fd->change->dest, | 1145 UTILITY_COLUMN_PIXBUF, file_util_get_error_icon(fd, ud->listview), |
1146 UTILITY_COLUMN_DEST_PATH, fd->change->dest, | |
1099 UTILITY_COLUMN_DEST_NAME, filename_from_path(fd->change->dest), | 1147 UTILITY_COLUMN_DEST_NAME, filename_from_path(fd->change->dest), |
1100 -1); | 1148 -1); |
1101 g_free(dest); | 1149 g_free(dest); |
1102 | 1150 |
1103 n++; | 1151 n++; |
1211 g_free(dir_msg); | 1259 g_free(dir_msg); |
1212 | 1260 |
1213 box = pref_group_new(box, TRUE, ud->messages.desc_flist, GTK_ORIENTATION_HORIZONTAL); | 1261 box = pref_group_new(box, TRUE, ud->messages.desc_flist, GTK_ORIENTATION_HORIZONTAL); |
1214 | 1262 |
1215 ud->listview = file_util_dialog_add_list(box, ud->flist, FALSE); | 1263 ud->listview = file_util_dialog_add_list(box, ud->flist, FALSE); |
1216 file_util_dialog_add_list_column(ud->listview, _("Sidecars"), UTILITY_COLUMN_SIDECARS); | 1264 file_util_dialog_add_list_column(ud->listview, _("Sidecars"), FALSE, UTILITY_COLUMN_SIDECARS); |
1217 | 1265 |
1218 selection = gtk_tree_view_get_selection(GTK_TREE_VIEW(ud->listview)); | 1266 selection = gtk_tree_view_get_selection(GTK_TREE_VIEW(ud->listview)); |
1219 gtk_tree_selection_set_mode(selection, GTK_SELECTION_SINGLE); | 1267 gtk_tree_selection_set_mode(selection, GTK_SELECTION_SINGLE); |
1220 gtk_tree_selection_set_select_function(selection, file_util_preview_cb, ud, NULL); | 1268 gtk_tree_selection_set_select_function(selection, file_util_preview_cb, ud, NULL); |
1221 | 1269 |
1300 generic_dialog_add_button(ud->gd, GTK_STOCK_OK, ud->messages.title, file_util_ok_cb, TRUE); | 1348 generic_dialog_add_button(ud->gd, GTK_STOCK_OK, ud->messages.title, file_util_ok_cb, TRUE); |
1301 | 1349 |
1302 box = pref_group_new(box, TRUE, ud->messages.desc_flist, GTK_ORIENTATION_HORIZONTAL); | 1350 box = pref_group_new(box, TRUE, ud->messages.desc_flist, GTK_ORIENTATION_HORIZONTAL); |
1303 | 1351 |
1304 ud->listview = file_util_dialog_add_list(box, ud->flist, FALSE); | 1352 ud->listview = file_util_dialog_add_list(box, ud->flist, FALSE); |
1305 file_util_dialog_add_list_column(ud->listview, _("Sidecars"), UTILITY_COLUMN_SIDECARS); | 1353 file_util_dialog_add_list_column(ud->listview, _("Sidecars"), FALSE, UTILITY_COLUMN_SIDECARS); |
1306 | 1354 |
1307 file_util_dialog_add_list_column(ud->listview, _("New name"), UTILITY_COLUMN_DEST_NAME); | 1355 file_util_dialog_add_list_column(ud->listview, _("New name"), FALSE, UTILITY_COLUMN_DEST_NAME); |
1308 | 1356 |
1309 selection = gtk_tree_view_get_selection(GTK_TREE_VIEW(ud->listview)); | 1357 selection = gtk_tree_view_get_selection(GTK_TREE_VIEW(ud->listview)); |
1310 gtk_tree_selection_set_mode(GTK_TREE_SELECTION(selection), GTK_SELECTION_SINGLE); | 1358 gtk_tree_selection_set_mode(GTK_TREE_SELECTION(selection), GTK_SELECTION_SINGLE); |
1311 gtk_tree_selection_set_select_function(selection, file_util_preview_cb, ud, NULL); | 1359 gtk_tree_selection_set_select_function(selection, file_util_preview_cb, ud, NULL); |
1312 | 1360 |