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