diff options
Diffstat (limited to 'src/fs/gnunet-fs-gtk_publish-edit-dialog.c')
-rw-r--r-- | src/fs/gnunet-fs-gtk_publish-edit-dialog.c | 184 |
1 files changed, 150 insertions, 34 deletions
diff --git a/src/fs/gnunet-fs-gtk_publish-edit-dialog.c b/src/fs/gnunet-fs-gtk_publish-edit-dialog.c index 43e8db14..9cf1eac4 100644 --- a/src/fs/gnunet-fs-gtk_publish-edit-dialog.c +++ b/src/fs/gnunet-fs-gtk_publish-edit-dialog.c | |||
@@ -30,6 +30,99 @@ | |||
30 | 30 | ||
31 | 31 | ||
32 | /** | 32 | /** |
33 | * Columns in the publication metadata model. | ||
34 | */ | ||
35 | enum PUBLISH_MetadataModelColumns | ||
36 | { | ||
37 | /** | ||
38 | * A guint. | ||
39 | */ | ||
40 | PUBLISH_METADATA_MC_TYPE = 0, | ||
41 | |||
42 | /** | ||
43 | * A guint. | ||
44 | */ | ||
45 | PUBLISH_METADATA_MC_FORMAT = 1, | ||
46 | |||
47 | /** | ||
48 | * A gchararray. | ||
49 | */ | ||
50 | PUBLISH_METADATA_MC_TYPE_NAME = 2, | ||
51 | |||
52 | /** | ||
53 | * A gchararray. | ||
54 | */ | ||
55 | PUBLISH_METADATA_MC_VALUE = 3, | ||
56 | |||
57 | /** | ||
58 | * A gchararray. | ||
59 | */ | ||
60 | PUBLISH_METADATA_MC_DESCRIPTION = 4, | ||
61 | }; | ||
62 | |||
63 | |||
64 | /** | ||
65 | * Columns in the publication metadata types model. | ||
66 | */ | ||
67 | enum PUBLISH_MetadataTypesModelColumns | ||
68 | { | ||
69 | /** | ||
70 | * A gint. | ||
71 | */ | ||
72 | PUBLISH_METADATA_TYPES_MC_TYPE = 0, | ||
73 | |||
74 | /** | ||
75 | * A gint. | ||
76 | */ | ||
77 | PUBLISH_METADATA_TYPES_MC_FORMAT = 1, | ||
78 | |||
79 | /** | ||
80 | * A gchararray. | ||
81 | */ | ||
82 | PUBLISH_METADATA_TYPES_MC_TYPE_NAME = 2, | ||
83 | |||
84 | /** | ||
85 | * A gchararray. | ||
86 | */ | ||
87 | PUBLISH_METADATA_TYPES_MC_DESCRIPTION = 3, | ||
88 | }; | ||
89 | |||
90 | |||
91 | /** | ||
92 | * Columns in the publication types model. | ||
93 | */ | ||
94 | enum PUBLISH_TypesModelColumns | ||
95 | { | ||
96 | /** | ||
97 | * A gint. | ||
98 | */ | ||
99 | PUBLISH_TYPES_MC_TYPE = 0, | ||
100 | |||
101 | /** | ||
102 | * A gchararray. | ||
103 | */ | ||
104 | PUBLISH_TYPES_MC_TYPE_NAME = 1, | ||
105 | }; | ||
106 | |||
107 | |||
108 | /** | ||
109 | * Columns in the publication keywords model. | ||
110 | */ | ||
111 | enum PUBLISH_KeywordsModelColumns | ||
112 | { | ||
113 | /** | ||
114 | * A gchararray. | ||
115 | */ | ||
116 | PUBLISH_TYPES_MC_KEYWORD = 0, | ||
117 | |||
118 | /** | ||
119 | * A gboolean. | ||
120 | */ | ||
121 | PUBLISH_TYPES_MC_ADDED = 1, | ||
122 | }; | ||
123 | |||
124 | |||
125 | /** | ||
33 | * Internal state kept for each "edit" dialog where the user can edit | 126 | * Internal state kept for each "edit" dialog where the user can edit |
34 | * publishing information for a file. | 127 | * publishing information for a file. |
35 | */ | 128 | */ |
@@ -215,12 +308,18 @@ change_metatypes (struct EditPublicationDialogContext *ctx, gint code) | |||
215 | for (i = 0; types[code][i] != EXTRACTOR_METATYPE_RESERVED; i++) | 308 | for (i = 0; types[code][i] != EXTRACTOR_METATYPE_RESERVED; i++) |
216 | if ( (types[code][i] < max_type) && (types[code][i] > 0) ) | 309 | if ( (types[code][i] < max_type) && (types[code][i] > 0) ) |
217 | gtk_list_store_insert_with_values (ctx->metatypes_liststore, | 310 | gtk_list_store_insert_with_values (ctx->metatypes_liststore, |
218 | &iter, G_MAXINT, | 311 | &iter, G_MAXINT, |
219 | 0, types[code][i], | 312 | PUBLISH_METADATA_TYPES_MC_TYPE, |
220 | 1, EXTRACTOR_METAFORMAT_UTF8, | 313 | types[code][i], |
221 | 2, EXTRACTOR_metatype_to_string (types [code][i]), | 314 | PUBLISH_METADATA_TYPES_MC_FORMAT, |
222 | 3, EXTRACTOR_metatype_to_description (types[code][i]), | 315 | EXTRACTOR_METAFORMAT_UTF8, |
223 | -1); | 316 | PUBLISH_METADATA_TYPES_MC_TYPE_NAME, |
317 | EXTRACTOR_metatype_to_string | ||
318 | (types [code][i]), | ||
319 | PUBLISH_METADATA_TYPES_MC_DESCRIPTION, | ||
320 | EXTRACTOR_metatype_to_description | ||
321 | (types[code][i]), | ||
322 | -1); | ||
224 | } | 323 | } |
225 | 324 | ||
226 | 325 | ||
@@ -241,7 +340,8 @@ GNUNET_GTK_edit_publication_type_combo_changed_cb (GtkComboBox * widget, | |||
241 | 340 | ||
242 | if (! gtk_combo_box_get_active_iter (widget, &iter)) | 341 | if (! gtk_combo_box_get_active_iter (widget, &iter)) |
243 | return; | 342 | return; |
244 | gtk_tree_model_get (GTK_TREE_MODEL (ctx->pubtypes_liststore), &iter, 0, &code, -1); | 343 | gtk_tree_model_get (GTK_TREE_MODEL (ctx->pubtypes_liststore), &iter, |
344 | PUBLISH_TYPES_MC_TYPE, &code, -1); | ||
245 | change_metatypes (ctx, code); | 345 | change_metatypes (ctx, code); |
246 | } | 346 | } |
247 | 347 | ||
@@ -301,11 +401,13 @@ GNUNET_GTK_edit_publication_metadata_tree_view_type_renderer_edited_cb (GtkCellR | |||
301 | } | 401 | } |
302 | type_id = ctx->meta_combo_selected_type_id; | 402 | type_id = ctx->meta_combo_selected_type_id; |
303 | ctx->meta_combo_selected_type_id = -1; | 403 | ctx->meta_combo_selected_type_id = -1; |
304 | gtk_list_store_set (ctx->meta_liststore, &iter, | 404 | gtk_list_store_set (ctx->meta_liststore, &iter, |
305 | 0, type_id, | 405 | PUBLISH_METADATA_MC_TYPE, type_id, |
306 | 1, EXTRACTOR_METAFORMAT_UTF8, | 406 | PUBLISH_METADATA_MC_FORMAT, EXTRACTOR_METAFORMAT_UTF8, |
307 | 2, EXTRACTOR_metatype_to_string (type_id), | 407 | PUBLISH_METADATA_MC_TYPE_NAME, |
308 | 4, EXTRACTOR_metatype_to_description (type_id), | 408 | EXTRACTOR_metatype_to_string (type_id), |
409 | PUBLISH_METADATA_MC_DESCRIPTION, | ||
410 | EXTRACTOR_metatype_to_description (type_id), | ||
309 | -1); | 411 | -1); |
310 | } | 412 | } |
311 | 413 | ||
@@ -334,8 +436,8 @@ GNUNET_GTK_edit_publication_metadata_tree_view_type_renderer_changed_cb (GtkCell | |||
334 | g_object_get (combo, | 436 | g_object_get (combo, |
335 | "model", &combo_model, NULL); | 437 | "model", &combo_model, NULL); |
336 | gtk_tree_model_get (combo_model, new_iter, | 438 | gtk_tree_model_get (combo_model, new_iter, |
337 | 0, &type_id, | 439 | PUBLISH_METADATA_MC_TYPE, &type_id, |
338 | -1); | 440 | -1); |
339 | ctx->meta_combo_selected_type_id = type_id; | 441 | ctx->meta_combo_selected_type_id = type_id; |
340 | } | 442 | } |
341 | 443 | ||
@@ -373,7 +475,7 @@ GNUNET_GTK_edit_publication_metadata_tree_view_value_renderer_edited_cb (GtkCell | |||
373 | } | 475 | } |
374 | 476 | ||
375 | gtk_tree_model_get (GTK_TREE_MODEL (ctx->meta_liststore), &iter, | 477 | gtk_tree_model_get (GTK_TREE_MODEL (ctx->meta_liststore), &iter, |
376 | 0, &metatype, -1); | 478 | PUBLISH_METADATA_MC_TYPE, &metatype, -1); |
377 | if (metatype == EXTRACTOR_METATYPE_GNUNET_ORIGINAL_FILENAME) | 479 | if (metatype == EXTRACTOR_METATYPE_GNUNET_ORIGINAL_FILENAME) |
378 | { | 480 | { |
379 | /* apply filename rules */ | 481 | /* apply filename rules */ |
@@ -413,8 +515,8 @@ GNUNET_GTK_edit_publication_metadata_tree_view_value_renderer_edited_cb (GtkCell | |||
413 | avalue = NULL; | 515 | avalue = NULL; |
414 | } | 516 | } |
415 | gtk_list_store_set (ctx->meta_liststore, &iter, | 517 | gtk_list_store_set (ctx->meta_liststore, &iter, |
416 | 3, ivalue, | 518 | PUBLISH_METADATA_MC_VALUE, ivalue, |
417 | -1); | 519 | -1); |
418 | GNUNET_free_non_null (avalue); | 520 | GNUNET_free_non_null (avalue); |
419 | } | 521 | } |
420 | 522 | ||
@@ -434,13 +536,16 @@ GNUNET_GTK_edit_publication_add_button_clicked_cb (GtkButton * button, | |||
434 | GtkTreeIter iter; | 536 | GtkTreeIter iter; |
435 | 537 | ||
436 | gtk_list_store_insert_with_values (ctx->meta_liststore, | 538 | gtk_list_store_insert_with_values (ctx->meta_liststore, |
437 | &iter, 0, | 539 | &iter, 0, |
438 | 0, 0, | 540 | PUBLISH_METADATA_MC_TYPE, 0, |
439 | 1, EXTRACTOR_METAFORMAT_UTF8, | 541 | PUBLISH_METADATA_MC_FORMAT, |
440 | 2, _("Select a type"), | 542 | EXTRACTOR_METAFORMAT_UTF8, |
441 | 3, _("Specify a value"), | 543 | PUBLISH_METADATA_MC_TYPE_NAME, |
442 | 4, NULL, | 544 | _("Select a type"), |
443 | -1); | 545 | PUBLISH_METADATA_MC_VALUE, |
546 | _("Specify a value"), | ||
547 | PUBLISH_METADATA_MC_DESCRIPTION, NULL, | ||
548 | -1); | ||
444 | } | 549 | } |
445 | 550 | ||
446 | 551 | ||
@@ -608,10 +713,10 @@ GNUNET_GTK_edit_publication_keyword_list_add_button_clicked_cb (GtkButton * | |||
608 | if (strlen (keyword) == 0) | 713 | if (strlen (keyword) == 0) |
609 | return; | 714 | return; |
610 | gtk_list_store_insert_with_values (ctx->keywords_liststore, | 715 | gtk_list_store_insert_with_values (ctx->keywords_liststore, |
611 | &iter, G_MAXINT, | 716 | &iter, G_MAXINT, |
612 | 0, keyword, | 717 | PUBLISH_TYPES_MC_KEYWORD, keyword, |
613 | 1, TRUE, | 718 | PUBLISH_TYPES_MC_ADDED, TRUE, |
614 | -1); | 719 | -1); |
615 | gtk_entry_set_text (ctx->keyword_entry, ""); | 720 | gtk_entry_set_text (ctx->keyword_entry, ""); |
616 | update_confirm_sensitivity (ctx); | 721 | update_confirm_sensitivity (ctx); |
617 | } | 722 | } |
@@ -731,7 +836,11 @@ preserve_meta_items (void *cls, const char *plugin_name, | |||
731 | { | 836 | { |
732 | do | 837 | do |
733 | { | 838 | { |
734 | gtk_tree_model_get (GTK_TREE_MODEL (ctx->meta_liststore), &iter, 0, &ntype, 1, &nformat, 3, &value, -1); | 839 | gtk_tree_model_get (GTK_TREE_MODEL (ctx->meta_liststore), &iter, |
840 | PUBLISH_METADATA_MC_TYPE, &ntype, | ||
841 | PUBLISH_METADATA_MC_FORMAT, &nformat, | ||
842 | PUBLISH_METADATA_MC_VALUE, &value, | ||
843 | -1); | ||
735 | if ((ntype == type) && (nformat == format) && | 844 | if ((ntype == type) && (nformat == format) && |
736 | (0 == strcmp (value, data))) | 845 | (0 == strcmp (value, data))) |
737 | { | 846 | { |
@@ -809,7 +918,9 @@ file_information_update (void *cls, struct GNUNET_FS_FileInformation *fi, | |||
809 | { | 918 | { |
810 | gchar *value; | 919 | gchar *value; |
811 | 920 | ||
812 | gtk_tree_model_get (GTK_TREE_MODEL (ctx->keywords_liststore), &iter, 0, &value, -1); | 921 | gtk_tree_model_get (GTK_TREE_MODEL (ctx->keywords_liststore), &iter, |
922 | PUBLISH_TYPES_MC_KEYWORD, &value, | ||
923 | -1); | ||
813 | if (NULL == *uri) | 924 | if (NULL == *uri) |
814 | *uri = GNUNET_FS_uri_ksk_create_from_args (1, (const char **) &value); | 925 | *uri = GNUNET_FS_uri_ksk_create_from_args (1, (const char **) &value); |
815 | else | 926 | else |
@@ -840,7 +951,11 @@ file_information_update (void *cls, struct GNUNET_FS_FileInformation *fi, | |||
840 | guint nformat; | 951 | guint nformat; |
841 | gchar *value; | 952 | gchar *value; |
842 | 953 | ||
843 | gtk_tree_model_get (GTK_TREE_MODEL (ctx->meta_liststore), &iter, 0, &ntype, 1, &nformat, 3, &value, -1); | 954 | gtk_tree_model_get (GTK_TREE_MODEL (ctx->meta_liststore), &iter, |
955 | PUBLISH_METADATA_MC_TYPE, &ntype, | ||
956 | PUBLISH_METADATA_MC_FORMAT, &nformat, | ||
957 | PUBLISH_METADATA_MC_VALUE, &value, | ||
958 | -1); | ||
844 | if (ntype > 0) | 959 | if (ntype > 0) |
845 | { | 960 | { |
846 | GNUNET_CONTAINER_meta_data_insert (meta, "<user>", ntype, nformat, | 961 | GNUNET_CONTAINER_meta_data_insert (meta, "<user>", ntype, nformat, |
@@ -941,8 +1056,8 @@ add_keyword (void *cls, const char *keyword, int is_mandatory) | |||
941 | 1056 | ||
942 | ls = GTK_LIST_STORE (cls); | 1057 | ls = GTK_LIST_STORE (cls); |
943 | gtk_list_store_insert_with_values (ls, &iter, G_MAXINT, | 1058 | gtk_list_store_insert_with_values (ls, &iter, G_MAXINT, |
944 | 0, keyword, | 1059 | PUBLISH_TYPES_MC_KEYWORD, keyword, |
945 | 1, FALSE, | 1060 | PUBLISH_TYPES_MC_ADDED, FALSE, |
946 | -1); | 1061 | -1); |
947 | return GNUNET_OK; | 1062 | return GNUNET_OK; |
948 | } | 1063 | } |
@@ -1154,7 +1269,8 @@ GNUNET_FS_GTK_edit_publish_dialog (GtkWindow * parent, | |||
1154 | (ctx->builder, "GNUNET_GTK_edit_publication_type_combo")); | 1269 | (ctx->builder, "GNUNET_GTK_edit_publication_type_combo")); |
1155 | if (gtk_combo_box_get_active_iter (pubtypes_combo, &iter)) | 1270 | if (gtk_combo_box_get_active_iter (pubtypes_combo, &iter)) |
1156 | { | 1271 | { |
1157 | gtk_tree_model_get (GTK_TREE_MODEL (ctx->pubtypes_liststore), &iter, 0, &code, -1); | 1272 | gtk_tree_model_get (GTK_TREE_MODEL (ctx->pubtypes_liststore), &iter, |
1273 | PUBLISH_TYPES_MC_TYPE, &code, -1); | ||
1158 | change_metatypes (ctx, 0); | 1274 | change_metatypes (ctx, 0); |
1159 | } | 1275 | } |
1160 | else | 1276 | else |