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