Mercurial > geeqie.yaz
comparison src/preferences.c @ 1239:254b09942e68
metadata write mode (direct or sidecar) made configurable for each file
format
author | nadvornik |
---|---|
date | Sun, 11 Jan 2009 12:13:30 +0000 |
parents | 878718372aca |
children | b2d98b7c26c1 |
comparison
equal
deleted
inserted
replaced
1238:947e603a52c6 | 1239:254b09942e68 |
---|---|
71 | 71 |
72 enum { | 72 enum { |
73 FE_ENABLE, | 73 FE_ENABLE, |
74 FE_EXTENSION, | 74 FE_EXTENSION, |
75 FE_DESCRIPTION, | 75 FE_DESCRIPTION, |
76 FE_CLASS | 76 FE_CLASS, |
77 FE_WRITABLE, | |
78 FE_ALLOW_SIDECAR | |
77 }; | 79 }; |
78 | 80 |
79 | 81 |
80 static gchar *format_class_list[] = { | 82 static gchar *format_class_list[] = { |
81 N_("Unknown"), | 83 N_("Unknown"), |
735 | 737 |
736 gtk_tree_path_free(tpath); | 738 gtk_tree_path_free(tpath); |
737 filter_rebuild(); | 739 filter_rebuild(); |
738 } | 740 } |
739 | 741 |
742 static void filter_store_writable_cb(GtkCellRendererToggle *renderer, | |
743 gchar *path_str, gpointer data) | |
744 { | |
745 GtkWidget *model = data; | |
746 FilterEntry *fe; | |
747 GtkTreePath *tpath; | |
748 GtkTreeIter iter; | |
749 | |
750 tpath = gtk_tree_path_new_from_string(path_str); | |
751 gtk_tree_model_get_iter(GTK_TREE_MODEL(model), &iter, tpath); | |
752 gtk_tree_model_get(GTK_TREE_MODEL(model), &iter, 0, &fe, -1); | |
753 | |
754 fe->writable = !fe->writable; | |
755 if (fe->writable) fe->allow_sidecar = FALSE; | |
756 | |
757 gtk_tree_path_free(tpath); | |
758 filter_rebuild(); | |
759 } | |
760 | |
761 static void filter_store_sidecar_cb(GtkCellRendererToggle *renderer, | |
762 gchar *path_str, gpointer data) | |
763 { | |
764 GtkWidget *model = data; | |
765 FilterEntry *fe; | |
766 GtkTreePath *tpath; | |
767 GtkTreeIter iter; | |
768 | |
769 tpath = gtk_tree_path_new_from_string(path_str); | |
770 gtk_tree_model_get_iter(GTK_TREE_MODEL(model), &iter, tpath); | |
771 gtk_tree_model_get(GTK_TREE_MODEL(model), &iter, 0, &fe, -1); | |
772 | |
773 fe->allow_sidecar = !fe->allow_sidecar; | |
774 if (fe->allow_sidecar) fe->writable = FALSE; | |
775 | |
776 gtk_tree_path_free(tpath); | |
777 filter_rebuild(); | |
778 } | |
779 | |
740 static void filter_set_func(GtkTreeViewColumn *tree_column, GtkCellRenderer *cell, | 780 static void filter_set_func(GtkTreeViewColumn *tree_column, GtkCellRenderer *cell, |
741 GtkTreeModel *tree_model, GtkTreeIter *iter, gpointer data) | 781 GtkTreeModel *tree_model, GtkTreeIter *iter, gpointer data) |
742 { | 782 { |
743 FilterEntry *fe; | 783 FilterEntry *fe; |
744 | 784 |
760 break; | 800 break; |
761 case FE_CLASS: | 801 case FE_CLASS: |
762 g_object_set(GTK_CELL_RENDERER(cell), | 802 g_object_set(GTK_CELL_RENDERER(cell), |
763 "text", _(format_class_list[fe->file_class]), NULL); | 803 "text", _(format_class_list[fe->file_class]), NULL); |
764 break; | 804 break; |
805 case FE_WRITABLE: | |
806 g_object_set(GTK_CELL_RENDERER(cell), | |
807 "active", fe->writable, NULL); | |
808 break; | |
809 case FE_ALLOW_SIDECAR: | |
810 g_object_set(GTK_CELL_RENDERER(cell), | |
811 "active", fe->allow_sidecar, NULL); | |
812 break; | |
765 } | 813 } |
766 } | 814 } |
767 | 815 |
768 static void filter_add_cb(GtkWidget *widget, gpointer data) | 816 static void filter_add_cb(GtkWidget *widget, gpointer data) |
769 { | 817 { |
770 filter_add_unique("description", ".new", FORMAT_CLASS_IMAGE, TRUE); | 818 filter_add_unique("description", ".new", FORMAT_CLASS_IMAGE, TRUE, FALSE, TRUE); |
771 filter_store_populate(); | 819 filter_store_populate(); |
772 | 820 |
773 /* FIXME: implement the scroll to/select row stuff for tree view */ | 821 /* FIXME: implement the scroll to/select row stuff for tree view */ |
774 } | 822 } |
775 | 823 |
1294 gtk_tree_view_column_pack_start(column, renderer, TRUE); | 1342 gtk_tree_view_column_pack_start(column, renderer, TRUE); |
1295 gtk_tree_view_column_set_cell_data_func(column, renderer, filter_set_func, | 1343 gtk_tree_view_column_set_cell_data_func(column, renderer, filter_set_func, |
1296 GINT_TO_POINTER(FE_CLASS), NULL); | 1344 GINT_TO_POINTER(FE_CLASS), NULL); |
1297 gtk_tree_view_append_column(GTK_TREE_VIEW(filter_view), column); | 1345 gtk_tree_view_append_column(GTK_TREE_VIEW(filter_view), column); |
1298 | 1346 |
1347 column = gtk_tree_view_column_new(); | |
1348 gtk_tree_view_column_set_title(column, _("Writable")); | |
1349 gtk_tree_view_column_set_resizable(column, FALSE); | |
1350 renderer = gtk_cell_renderer_toggle_new(); | |
1351 g_signal_connect(G_OBJECT(renderer), "toggled", | |
1352 G_CALLBACK(filter_store_writable_cb), filter_store); | |
1353 gtk_tree_view_column_pack_start(column, renderer, FALSE); | |
1354 gtk_tree_view_column_set_cell_data_func(column, renderer, filter_set_func, | |
1355 GINT_TO_POINTER(FE_WRITABLE), NULL); | |
1356 gtk_tree_view_append_column(GTK_TREE_VIEW(filter_view), column); | |
1357 | |
1358 column = gtk_tree_view_column_new(); | |
1359 gtk_tree_view_column_set_title(column, _("Sidecar is allowed")); | |
1360 gtk_tree_view_column_set_resizable(column, FALSE); | |
1361 renderer = gtk_cell_renderer_toggle_new(); | |
1362 g_signal_connect(G_OBJECT(renderer), "toggled", | |
1363 G_CALLBACK(filter_store_sidecar_cb), filter_store); | |
1364 gtk_tree_view_column_pack_start(column, renderer, FALSE); | |
1365 gtk_tree_view_column_set_cell_data_func(column, renderer, filter_set_func, | |
1366 GINT_TO_POINTER(FE_ALLOW_SIDECAR), NULL); | |
1367 gtk_tree_view_append_column(GTK_TREE_VIEW(filter_view), column); | |
1299 | 1368 |
1300 | 1369 |
1301 filter_store_populate(); | 1370 filter_store_populate(); |
1302 gtk_container_add(GTK_CONTAINER(scrolled), filter_view); | 1371 gtk_container_add(GTK_CONTAINER(scrolled), filter_view); |
1303 gtk_widget_show(filter_view); | 1372 gtk_widget_show(filter_view); |