comparison src/preferences.c @ 1216:d9082eeb0392

file class made configurable in preferences
author nadvornik
date Mon, 22 Dec 2008 23:25:15 +0000
parents bbec86370ef4
children 878718372aca
comparison
equal deleted inserted replaced
1215:2b57c3d43f72 1216:d9082eeb0392
70 }; 70 };
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 }; 77 };
78
79
80 static gchar *format_class_list[] = {
81 N_("Unknown"),
82 N_("Image"),
83 N_("RAW Image"),
84 N_("Metadata")
85 };
86
77 87
78 /* config memory values */ 88 /* config memory values */
79 static ConfOptions *c_options = NULL; 89 static ConfOptions *c_options = NULL;
80 90
81 91
657 667
658 gtk_tree_path_free(tpath); 668 gtk_tree_path_free(tpath);
659 filter_rebuild(); 669 filter_rebuild();
660 } 670 }
661 671
672 static void filter_store_class_edit_cb(GtkCellRendererText *cell, gchar *path_str,
673 gchar *new_text, gpointer data)
674 {
675
676 GtkWidget *model = data;
677 FilterEntry *fe = data;
678 GtkTreePath *tpath;
679 GtkTreeIter iter;
680 gint i;
681
682 if (!new_text || strlen(new_text) < 1) return;
683
684 tpath = gtk_tree_path_new_from_string(path_str);
685 gtk_tree_model_get_iter(GTK_TREE_MODEL(model), &iter, tpath);
686 gtk_tree_model_get(GTK_TREE_MODEL(model), &iter, 0, &fe, -1);
687
688 for (i = 0; i < FILE_FORMAT_CLASSES; i++)
689 {
690 if (strcmp(new_text, _(format_class_list[i])) == 0)
691 {
692 fe->file_class = i;
693 break;
694 }
695 }
696
697 gtk_tree_path_free(tpath);
698 filter_rebuild();
699 }
700
662 static void filter_store_desc_edit_cb(GtkCellRendererText *cell, gchar *path_str, 701 static void filter_store_desc_edit_cb(GtkCellRendererText *cell, gchar *path_str,
663 gchar *new_text, gpointer data) 702 gchar *new_text, gpointer data)
664 { 703 {
665 GtkWidget *model = data; 704 GtkWidget *model = data;
666 FilterEntry *fe; 705 FilterEntry *fe;
715 "text", fe->extensions, NULL); 754 "text", fe->extensions, NULL);
716 break; 755 break;
717 case FE_DESCRIPTION: 756 case FE_DESCRIPTION:
718 g_object_set(GTK_CELL_RENDERER(cell), 757 g_object_set(GTK_CELL_RENDERER(cell),
719 "text", fe->description, NULL); 758 "text", fe->description, NULL);
759 break;
760 case FE_CLASS:
761 g_object_set(GTK_CELL_RENDERER(cell),
762 "text", _(format_class_list[fe->file_class]), NULL);
720 break; 763 break;
721 } 764 }
722 } 765 }
723 766
724 static void filter_add_cb(GtkWidget *widget, gpointer data) 767 static void filter_add_cb(GtkWidget *widget, gpointer data)
1126 layout_config_set(layout_widget, options->layout.style, options->layout.order); 1169 layout_config_set(layout_widget, options->layout.style, options->layout.order);
1127 gtk_box_pack_start(GTK_BOX(group), layout_widget, FALSE, FALSE, 0); 1170 gtk_box_pack_start(GTK_BOX(group), layout_widget, FALSE, FALSE, 0);
1128 gtk_widget_show(layout_widget); 1171 gtk_widget_show(layout_widget);
1129 } 1172 }
1130 1173
1174 static GtkTreeModel *create_class_model(void)
1175 {
1176 GtkListStore *model;
1177 GtkTreeIter iter;
1178 gint i;
1179
1180 /* create list store */
1181 model = gtk_list_store_new (1, G_TYPE_STRING);
1182 for (i = 0; i < FILE_FORMAT_CLASSES; i++)
1183 {
1184 gtk_list_store_append (model, &iter);
1185 gtk_list_store_set(model, &iter, 0, _(format_class_list[i]), -1);
1186 }
1187 return GTK_TREE_MODEL (model);
1188 }
1189
1190
1131 /* filtering tab */ 1191 /* filtering tab */
1132 static void config_tab_filtering(GtkWidget *notebook) 1192 static void config_tab_filtering(GtkWidget *notebook)
1133 { 1193 {
1134 GtkWidget *hbox; 1194 GtkWidget *hbox;
1135 GtkWidget *frame; 1195 GtkWidget *frame;
1215 g_object_set(G_OBJECT(renderer), "editable", (gboolean)TRUE, NULL); 1275 g_object_set(G_OBJECT(renderer), "editable", (gboolean)TRUE, NULL);
1216 gtk_tree_view_column_pack_start(column, renderer, FALSE); 1276 gtk_tree_view_column_pack_start(column, renderer, FALSE);
1217 gtk_tree_view_column_set_cell_data_func(column, renderer, filter_set_func, 1277 gtk_tree_view_column_set_cell_data_func(column, renderer, filter_set_func,
1218 GINT_TO_POINTER(FE_DESCRIPTION), NULL); 1278 GINT_TO_POINTER(FE_DESCRIPTION), NULL);
1219 gtk_tree_view_append_column(GTK_TREE_VIEW(filter_view), column); 1279 gtk_tree_view_append_column(GTK_TREE_VIEW(filter_view), column);
1280
1281 column = gtk_tree_view_column_new();
1282 gtk_tree_view_column_set_title(column, _("Class"));
1283 gtk_tree_view_column_set_resizable(column, TRUE);
1284 renderer = gtk_cell_renderer_combo_new();
1285 g_object_set(G_OBJECT(renderer), "editable", (gboolean)TRUE,
1286 "model", create_class_model(),
1287 "text-column", 0,
1288 "has-entry", FALSE,
1289 NULL);
1290
1291 g_signal_connect(G_OBJECT(renderer), "edited",
1292 G_CALLBACK(filter_store_class_edit_cb), filter_store);
1293 gtk_tree_view_column_pack_start(column, renderer, TRUE);
1294 gtk_tree_view_column_set_cell_data_func(column, renderer, filter_set_func,
1295 GINT_TO_POINTER(FE_CLASS), NULL);
1296 gtk_tree_view_append_column(GTK_TREE_VIEW(filter_view), column);
1297
1298
1220 1299
1221 filter_store_populate(); 1300 filter_store_populate();
1222 gtk_container_add(GTK_CONTAINER(scrolled), filter_view); 1301 gtk_container_add(GTK_CONTAINER(scrolled), filter_view);
1223 gtk_widget_show(filter_view); 1302 gtk_widget_show(filter_view);
1224 1303