aboutsummaryrefslogtreecommitdiff
path: root/src/fs/gnunet-fs-gtk_publish-edit-dialog.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/fs/gnunet-fs-gtk_publish-edit-dialog.c')
-rw-r--r--src/fs/gnunet-fs-gtk_publish-edit-dialog.c184
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 */
35enum 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 */
67enum 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 */
94enum 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 */
111enum 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