aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChristian Grothoff <christian@grothoff.org>2010-08-02 14:09:14 +0000
committerChristian Grothoff <christian@grothoff.org>2010-08-02 14:09:14 +0000
commitf718bd2f53ad5ff259ac4f8ee35e9cfd40e8cc82 (patch)
treea87e19c1a12333b6785b2b7e7ab84935daff6995
parentcf478fc82697865a857fb2997ff59c978c53bef4 (diff)
downloadgnunet-gtk-f718bd2f53ad5ff259ac4f8ee35e9cfd40e8cc82.tar.gz
gnunet-gtk-f718bd2f53ad5ff259ac4f8ee35e9cfd40e8cc82.zip
adv pseudonym dialogs
-rw-r--r--contrib/advertise_pseudonym_dialog.glade99
-rw-r--r--src/Makefile.am1
-rw-r--r--src/edit_publish_dialog.c1
-rw-r--r--src/main_window_adv_pseudonym.c493
4 files changed, 564 insertions, 30 deletions
diff --git a/contrib/advertise_pseudonym_dialog.glade b/contrib/advertise_pseudonym_dialog.glade
index 43068cfe..0fa4186d 100644
--- a/contrib/advertise_pseudonym_dialog.glade
+++ b/contrib/advertise_pseudonym_dialog.glade
@@ -2,25 +2,21 @@
2<interface> 2<interface>
3 <requires lib="gtk+" version="2.20"/> 3 <requires lib="gtk+" version="2.20"/>
4 <!-- interface-naming-policy project-wide --> 4 <!-- interface-naming-policy project-wide -->
5 <object class="GtkListStore" id="GNUNET_GTK_metatype_list_store"> 5 <object class="GtkAdjustment" id="priority_adjustment">
6 <columns> 6 <property name="upper">10000000</property>
7 <!-- column-name description --> 7 <property name="value">1000</property>
8 <column type="gchararray"/> 8 <property name="step_increment">1</property>
9 <!-- column-name guint1 --> 9 <property name="page_increment">10</property>
10 <column type="guint"/>
11 <!-- column-name helptext -->
12 <column type="gchararray"/>
13 </columns>
14 </object> 10 </object>
15 <object class="GtkListStore" id="GNUNET_GTK_meta_data_list_store"> 11 <object class="GtkAdjustment" id="GNUNET_GTK_anonymity_adjustment">
12 <property name="upper">100000</property>
13 <property name="value">1</property>
14 <property name="step_increment">1</property>
15 <property name="page_increment">10</property>
16 </object>
17 <object class="GtkListStore" id="GNUNET_GTK_keyword_list_store">
16 <columns> 18 <columns>
17 <!-- column-name extractor_meta_type --> 19 <!-- column-name keyword -->
18 <column type="guint"/>
19 <!-- column-name extractor_meta_format -->
20 <column type="guint"/>
21 <!-- column-name extractor_meta_type_string -->
22 <column type="gchararray"/>
23 <!-- column-name extracotr_meta_value -->
24 <column type="gchararray"/> 20 <column type="gchararray"/>
25 </columns> 21 </columns>
26 </object> 22 </object>
@@ -520,6 +516,45 @@
520 <property name="position">4</property> 516 <property name="position">4</property>
521 </packing> 517 </packing>
522 </child> 518 </child>
519 <child>
520 <object class="GtkHSeparator" id="hseparator2">
521 <property name="visible">True</property>
522 </object>
523 <packing>
524 <property name="expand">False</property>
525 <property name="position">5</property>
526 </packing>
527 </child>
528 <child>
529 <object class="GtkHBox" id="hbox1">
530 <property name="visible">True</property>
531 <child>
532 <object class="GtkLabel" id="GNUNET_GTK_advertise_pseudonym_root_label">
533 <property name="visible">True</property>
534 <property name="label" translatable="yes">_Root</property>
535 <property name="use_underline">True</property>
536 <property name="selectable">True</property>
537 </object>
538 <packing>
539 <property name="position">0</property>
540 </packing>
541 </child>
542 <child>
543 <object class="GtkEntry" id="GNUNET_GTK_advertise_pseudonym_root_entry">
544 <property name="visible">True</property>
545 <property name="can_focus">True</property>
546 <property name="invisible_char">•</property>
547 <property name="text" translatable="yes">root</property>
548 </object>
549 <packing>
550 <property name="position">1</property>
551 </packing>
552 </child>
553 </object>
554 <packing>
555 <property name="position">6</property>
556 </packing>
557 </child>
523 </object> 558 </object>
524 <packing> 559 <packing>
525 <property name="expand">False</property> 560 <property name="expand">False</property>
@@ -582,22 +617,26 @@
582 <action-widget response="-5">GNUNET_GTK_advertise_pseudonym_confirm_button</action-widget> 617 <action-widget response="-5">GNUNET_GTK_advertise_pseudonym_confirm_button</action-widget>
583 </action-widgets> 618 </action-widgets>
584 </object> 619 </object>
585 <object class="GtkListStore" id="GNUNET_GTK_keyword_list_store"> 620 <object class="GtkListStore" id="GNUNET_GTK_meta_data_list_store">
586 <columns> 621 <columns>
587 <!-- column-name keyword --> 622 <!-- column-name extractor_meta_type -->
623 <column type="guint"/>
624 <!-- column-name extractor_meta_format -->
625 <column type="guint"/>
626 <!-- column-name extractor_meta_type_string -->
627 <column type="gchararray"/>
628 <!-- column-name extracotr_meta_value -->
588 <column type="gchararray"/> 629 <column type="gchararray"/>
589 </columns> 630 </columns>
590 </object> 631 </object>
591 <object class="GtkAdjustment" id="GNUNET_GTK_anonymity_adjustment"> 632 <object class="GtkListStore" id="GNUNET_GTK_metatype_list_store">
592 <property name="upper">100000</property> 633 <columns>
593 <property name="value">1</property> 634 <!-- column-name description -->
594 <property name="step_increment">1</property> 635 <column type="gchararray"/>
595 <property name="page_increment">10</property> 636 <!-- column-name guint1 -->
596 </object> 637 <column type="guint"/>
597 <object class="GtkAdjustment" id="priority_adjustment"> 638 <!-- column-name helptext -->
598 <property name="upper">10000000</property> 639 <column type="gchararray"/>
599 <property name="value">1000</property> 640 </columns>
600 <property name="step_increment">1</property>
601 <property name="page_increment">10</property>
602 </object> 641 </object>
603</interface> 642</interface>
diff --git a/src/Makefile.am b/src/Makefile.am
index 17ca76df..363f984e 100644
--- a/src/Makefile.am
+++ b/src/Makefile.am
@@ -20,6 +20,7 @@ gnunet_gtk_SOURCES = \
20 main_window_file_publish.c \ 20 main_window_file_publish.c \
21 main_window_file_search.c \ 21 main_window_file_search.c \
22 main_window_open_directory.c \ 22 main_window_open_directory.c \
23 main_window_adv_pseudonym.c \
23 main_window_view_toggles.c \ 24 main_window_view_toggles.c \
24 os_installation.c \ 25 os_installation.c \
25 peerinfo.c peerinfo.h 26 peerinfo.c peerinfo.h
diff --git a/src/edit_publish_dialog.c b/src/edit_publish_dialog.c
index abb6beb4..69f959f7 100644
--- a/src/edit_publish_dialog.c
+++ b/src/edit_publish_dialog.c
@@ -36,6 +36,7 @@ static GtkBuilder *builder;
36 */ 36 */
37static int is_directory; 37static int is_directory;
38 38
39
39void 40void
40GNUNET_GTK_edit_file_information_keyword_list_normalize_button_clicked_cb () 41GNUNET_GTK_edit_file_information_keyword_list_normalize_button_clicked_cb ()
41{ 42{
diff --git a/src/main_window_adv_pseudonym.c b/src/main_window_adv_pseudonym.c
new file mode 100644
index 00000000..238b937f
--- /dev/null
+++ b/src/main_window_adv_pseudonym.c
@@ -0,0 +1,493 @@
1/*
2 This file is part of GNUnet
3 (C) 2005, 2006, 2010 Christian Grothoff (and other contributing authors)
4
5 GNUnet is free software; you can redistribute it and/or modify
6 it under the terms of the GNU General Public License as published
7 by the Free Software Foundation; either version 2, or (at your
8 option) any later version.
9
10 GNUnet is distributed in the hope that it will be useful, but
11 WITHOUT ANY WARRANTY; without even the implied warranty of
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13 General Public License for more details.
14
15 You should have received a copy of the GNU General Public License
16 along with GNUnet; see the file COPYING. If not, write to the
17 Free Software Foundation, Inc., 59 Temple Place - Suite 330,
18 Boston, MA 02111-1307, USA.
19*/
20
21/**
22 * @file src/main_window_adv_pseudonym.c
23 * @author Christian Grothoff
24 */
25#include "common.h"
26
27static GtkBuilder *builder;
28
29
30
31void
32GNUNET_GTK_advertise_pseudonym_keyword_list_normalize_button_clicked_cb ()
33{
34 GNUNET_break (0);
35}
36
37void
38GNUNET_GTK_advertise_pseudonym_keyword_list_del_button_clicked_cb ()
39{
40 GtkTreeView *tv;
41 GtkTreeSelection *sel;
42 GtkTreeModel *tm;
43 GtkTreeIter iter;
44
45 tv = GTK_TREE_VIEW (gtk_builder_get_object (builder,
46 "GNUNET_GTK_advertise_pseudonym_keyword_list_tree_view"));
47 sel = gtk_tree_view_get_selection (tv);
48 if (TRUE != gtk_tree_selection_get_selected (sel, &tm, &iter))
49 {
50 GNUNET_break (0);
51 return;
52 }
53 gtk_list_store_remove (GTK_LIST_STORE (tm),
54 &iter);
55}
56
57void
58GNUNET_GTK_advertise_pseudonym_keyword_list_add_button_clicked_cb ()
59{
60 const char *keyword;
61 GtkEntry *entry;
62 GtkListStore *ls;
63 GtkTreeIter iter;
64
65 ls = GTK_LIST_STORE (gtk_builder_get_object (builder,
66 "GNUNET_GTK_keyword_list_store"));
67 entry = GTK_ENTRY (gtk_builder_get_object (builder,
68 "GNUNET_GTK_advertise_pseudonym_keyword_entry"));
69 keyword = gtk_entry_get_text (entry);
70 if (strlen (keyword) > 0)
71 gtk_list_store_insert_with_values (ls, &iter, G_MAXINT, 0, keyword, -1);
72 gtk_entry_set_text (entry, "");
73}
74
75
76void
77GNUNET_GTK_advertise_pseudonym_keyword_entry_changed_cb ()
78{
79 const char *keyword;
80 GtkEntry *entry;
81 GtkWidget *button;
82
83 button = GTK_WIDGET (gtk_builder_get_object (builder,
84 "GNUNET_GTK_advertise_pseudonym_keyword_list_add_button"));
85 entry = GTK_ENTRY (gtk_builder_get_object (builder,
86 "GNUNET_GTK_advertise_pseudonym_keyword_entry"));
87 keyword = gtk_entry_get_text (entry);
88 gtk_widget_set_sensitive (button,
89 (strlen (keyword) > 0) ? TRUE : FALSE);
90}
91
92
93static void
94metadata_selection_changed_cb (GtkTreeSelection *ts,
95 gpointer user_data)
96{
97 GtkTreeView *tv;
98 GtkTreeSelection *sel;
99 GtkWidget *button;
100
101 tv = GTK_TREE_VIEW (gtk_builder_get_object (builder,
102 "GNUNET_GTK_advertise_pseudonym_metadata_tree_view"));
103 sel = gtk_tree_view_get_selection (tv);
104 button = GTK_WIDGET (gtk_builder_get_object (builder,
105 "GNUNET_GTK_advertise_pseudonym_metadata_delete_button"));
106 gtk_widget_set_sensitive (button,
107 gtk_tree_selection_get_selected (sel, NULL, NULL));
108}
109
110
111static void
112keyword_selection_changed_cb (GtkTreeSelection *ts,
113 gpointer user_data)
114{
115 GtkTreeView *tv;
116 GtkTreeSelection *sel;
117 GtkWidget *button;
118
119 tv = GTK_TREE_VIEW (gtk_builder_get_object (builder,
120 "GNUNET_GTK_advertise_pseudonym_keyword_list_tree_view"));
121 sel = gtk_tree_view_get_selection (tv);
122 button = GTK_WIDGET (gtk_builder_get_object (builder,
123 "GNUNET_GTK_advertise_pseudonym_keyword_list_del_button"));
124
125 gtk_widget_set_sensitive (button,
126 gtk_tree_selection_get_selected (sel, NULL, NULL));
127 button = GTK_WIDGET (gtk_builder_get_object (builder,
128 "GNUNET_GTK_advertise_pseudonym_keyword_list_normalize_button"));
129 gtk_widget_set_sensitive (button,
130 gtk_tree_selection_get_selected (sel, NULL, NULL));
131}
132
133
134void
135GNUNET_GTK_advertise_pseudonym_metadata_value_entry_changed_cb ()
136{
137 GtkTreeView *tv;
138 GtkTreeSelection *sel;
139 const char *value;
140 GtkEntry *entry;
141 GtkWidget *button;
142
143 entry = GTK_ENTRY (gtk_builder_get_object (builder,
144 "GNUNET_GTK_advertise_pseudonym_metadata_value_entry"));
145 value = gtk_entry_get_text (entry);
146 tv = GTK_TREE_VIEW (gtk_builder_get_object (builder,
147 "GNUNET_GTK_advertise_pseudonym_metadata_type_tree_view"));
148 sel = gtk_tree_view_get_selection (tv);
149 button = GTK_WIDGET (gtk_builder_get_object (builder,
150 "GNUNET_GTK_advertise_pseudonym_metadata_add_button"));
151 gtk_widget_set_sensitive (button,
152 (strlen (value) > 0)
153 ? gtk_tree_selection_get_selected (sel, NULL, NULL)
154 : FALSE);
155}
156
157
158void
159GNUNET_GTK_advertise_pseudonym_keyword_entry_activate_cb ()
160{
161 GNUNET_GTK_advertise_pseudonym_keyword_list_add_button_clicked_cb ();
162}
163
164
165void
166GNUNET_GTK_advertise_pseudonym_metadata_preview_file_chooser_button_file_set_cb ()
167{
168 GNUNET_break (0);
169}
170
171void
172GNUNET_GTK_advertise_pseudonym_metadata_delete_button_clicked_cb()
173{
174 GtkTreeView *tv;
175 GtkTreeSelection *sel;
176 GtkTreeModel *tm;
177 GtkTreeIter iter;
178
179 tv = GTK_TREE_VIEW (gtk_builder_get_object (builder,
180 "GNUNET_GTK_advertise_pseudonym_metadata_tree_view"));
181 sel = gtk_tree_view_get_selection (tv);
182 if (TRUE != gtk_tree_selection_get_selected (sel, &tm, &iter))
183 {
184 GNUNET_break (0);
185 return;
186 }
187 gtk_list_store_remove (GTK_LIST_STORE (tm),
188 &iter);
189}
190
191
192void
193GNUNET_GTK_advertise_pseudonym_metadata_add_button_clicked_cb ()
194{
195 const char *value;
196 char *avalue;
197 const char *ivalue;
198 GtkEntry *entry;
199 GtkListStore *ls;
200 GtkTreeModel *tm;
201 GtkTreeView *tv;
202 GtkTreeSelection *sel;
203 GtkTreeIter iter;
204 guint type;
205 size_t slen;
206 char *pos;
207
208 entry = GTK_ENTRY (gtk_builder_get_object (builder,
209 "GNUNET_GTK_advertise_pseudonym_metadata_value_entry"));
210 value = gtk_entry_get_text (entry);
211 if ((value == NULL) || (strlen (value) == 0))
212 {
213 GNUNET_break (0);
214 return;
215 }
216 tv = GTK_TREE_VIEW (gtk_builder_get_object (builder,
217 "GNUNET_GTK_advertise_pseudonym_metadata_type_tree_view"));
218 tm = gtk_tree_view_get_model (tv);
219 sel = gtk_tree_view_get_selection (tv);
220 if (TRUE != gtk_tree_selection_get_selected (sel,
221 &tm,
222 &iter))
223 {
224 GNUNET_break (0);
225 return;
226 }
227 gtk_tree_model_get (tm,
228 &iter,
229 1, &type, -1);
230 ls = GTK_LIST_STORE (gtk_builder_get_object (builder,
231 "GNUNET_GTK_meta_data_list_store"));
232 if ( (type == EXTRACTOR_METATYPE_FILENAME) &&
233 (value[strlen(value)-1] != '/') )
234 {
235 GNUNET_asprintf (&avalue,
236 "%s/",
237 value);
238 /* if user typed '\' instead of '/', change it! */
239 slen = strlen (avalue);
240 while ( (slen > 1) &&
241 (avalue[slen-2] == '\\') )
242 {
243 avalue[slen-2] = '/';
244 avalue[slen-1] = '\0';
245 slen--;
246 }
247 while (NULL != (pos = strstr (avalue, "\\")))
248 *pos = '/';
249 /* remove '../' everywhere */
250 while (NULL != (pos = strstr (avalue, "../")))
251 {
252 pos[0] = '_';
253 pos[1] = '_';
254 pos[2] = '_';
255 }
256 ivalue = avalue;
257 }
258 else
259 {
260 ivalue = value;
261 avalue = NULL;
262 }
263
264 gtk_list_store_insert_with_values (ls, &iter, G_MAXINT,
265 0, type,
266 1, (guint) EXTRACTOR_METAFORMAT_UTF8,
267 2, EXTRACTOR_metatype_to_string (type),
268 3, ivalue,
269 -1);
270 GNUNET_free_non_null (avalue);
271 gtk_entry_set_text (GTK_ENTRY (entry), "");
272}
273
274
275/**
276 * Callback with information about local (!) namespaces.
277 * Contains the names of the local namespace and the global
278 * ID. Adds the to the list store.
279 *
280 * @param cls closure, the list store.
281 * @param name human-readable identifier of the namespace
282 * @param id hash identifier for the namespace
283 */
284static void
285add_to_list (void *cls,
286 const char *name,
287 const GNUNET_HashCode *id)
288{
289 GtkListStore *ls = cls;
290 GtkTreeIter iter;
291
292 gtk_list_store_insert_with_values (ls,
293 &iter,
294 -1,
295 0, name,
296 1, GNUNET_FS_namespace_create (GNUNET_GTK_get_fs_handle (),
297 name),
298 -1);
299
300}
301
302
303static void
304selection_changed_cb (GtkTreeSelection *ts,
305 gpointer user_data)
306{
307 GtkTreeIter iter;
308 GtkWidget *ok_button;
309
310 ok_button = GTK_WIDGET (gtk_builder_get_object (builder,
311 "GNUNET_GTK_select_pseudonym_dialog_ok_button"));
312 if (TRUE == gtk_tree_selection_get_selected (ts, NULL, &iter))
313 gtk_widget_set_sensitive (ok_button, TRUE);
314 else
315 gtk_widget_set_sensitive (ok_button, FALSE);
316}
317
318
319
320
321
322/**
323 * Advertise pseudonym selected.
324 */
325void
326GNUNET_GTK_main_menu_file_advertise_pseudonym_activate_cb (GtkWidget * dummy,
327 gpointer data)
328{
329 GtkWidget *ad;
330 struct GNUNET_FS_Namespace *ns;
331 GtkListStore *ls;
332 GtkTreeView *tv;
333 GtkTreeIter iter;
334 GtkTreeSelection *sel;
335 GtkTreeModel *tm;
336 uint32_t anonymity_level;
337 uint32_t priority;
338 struct GNUNET_FS_Uri *nxt;
339 struct GNUNET_FS_Uri *mrg;
340 struct GNUNET_FS_Uri *uri;
341 struct GNUNET_CONTAINER_MetaData *nm;
342 struct GNUNET_TIME_Absolute expiration;
343 const char *root;
344 char *value;
345 guint ntype;
346 guint nformat;
347
348 builder = GNUNET_GTK_get_new_builder ("select_pseudonym_dialog.glade");
349 if (builder == NULL)
350 {
351 GNUNET_break (0);
352 return;
353 }
354 ad = GTK_WIDGET (gtk_builder_get_object (builder,
355 "GNUNET_GTK_select_pseudonym_dialog"));
356 ls = GTK_LIST_STORE (gtk_builder_get_object (builder,
357 "GNUNET_GTK_select_pseudonym_liststore"));
358 GNUNET_FS_namespace_list (GNUNET_GTK_get_fs_handle (),
359 &add_to_list,
360 ls);
361 tv = GTK_TREE_VIEW (gtk_builder_get_object (builder,
362 "GNUNET_GTK_master_publish_dialog_file_information_tree_view"));
363 sel = gtk_tree_view_get_selection (tv);
364 g_signal_connect(G_OBJECT(sel), "changed",
365 G_CALLBACK(selection_changed_cb), NULL);
366 if (GTK_RESPONSE_OK != gtk_dialog_run (GTK_DIALOG (ad)))
367 {
368 gtk_widget_destroy (ad);
369 g_object_unref (G_OBJECT (builder));
370 builder = NULL;
371 return;
372 }
373 GNUNET_assert (TRUE == gtk_tree_selection_get_selected (sel,
374 &tm,
375 &iter));
376 gtk_tree_model_get (tm,
377 &iter,
378 1, &ns,
379 -1);
380 /* FIXME: free all namespaces from list store except "ns" */
381 gtk_widget_destroy (ad);
382 g_object_unref (G_OBJECT (builder));
383 builder = NULL;
384
385
386 builder = GNUNET_GTK_get_new_builder ("advertise_pseudonym_dialog.glade");
387 if (builder == NULL)
388 {
389 GNUNET_break (0);
390 return;
391 }
392 ad = GTK_WIDGET (gtk_builder_get_object (builder,
393 "GNUNET_GTK_advertise_pseudonym_dialog"));
394
395 tv = GTK_TREE_VIEW (gtk_builder_get_object (builder,
396 "GNUNET_GTK_advertise_pseudonym_metadata_type_tree_view"));
397 sel = gtk_tree_view_get_selection (tv);
398 g_signal_connect(G_OBJECT(sel), "changed",
399 G_CALLBACK(GNUNET_GTK_advertise_pseudonym_metadata_value_entry_changed_cb), NULL);
400
401 tv = GTK_TREE_VIEW (gtk_builder_get_object (builder,
402 "GNUNET_GTK_advertise_pseudonym_metadata_tree_view"));
403 sel = gtk_tree_view_get_selection (tv);
404 g_signal_connect(G_OBJECT(sel), "changed",
405 G_CALLBACK(metadata_selection_changed_cb), NULL);
406
407 tv = GTK_TREE_VIEW (gtk_builder_get_object (builder,
408 "GNUNET_GTK_advertise_pseudonym_keyword_list_tree_view"));
409 sel = gtk_tree_view_get_selection (tv);
410 g_signal_connect(G_OBJECT(sel), "changed",
411 G_CALLBACK(keyword_selection_changed_cb), NULL);
412 if (GTK_RESPONSE_OK != gtk_dialog_run (GTK_DIALOG (ad)))
413 {
414 gtk_widget_destroy (ad);
415 g_object_unref (G_OBJECT (builder));
416 builder = NULL;
417 return;
418 }
419 /* get keywords from list store */
420 nxt = NULL;
421 mrg = NULL;
422 uri = NULL;
423 tm = GTK_TREE_MODEL (gtk_builder_get_object (builder,
424 "GNUNET_GTK_keyword_list_store"));
425 if (TRUE ==
426 gtk_tree_model_get_iter_first (tm, &iter))
427 {
428 do
429 {
430 gtk_tree_model_get (tm, &iter,
431 0, &value,
432 -1);
433 nxt = GNUNET_FS_uri_ksk_create_from_args (1, (const char**) &value);
434 mrg = GNUNET_FS_uri_ksk_merge (nxt, uri);
435 GNUNET_FS_uri_destroy (nxt);
436 if (NULL != uri)
437 GNUNET_FS_uri_destroy (uri);
438 uri = mrg;
439 g_free (value);
440 }
441 while (TRUE == gtk_tree_model_iter_next (tm, &iter));
442 }
443 /* get meta */
444 nm = GNUNET_CONTAINER_meta_data_create ();
445 tm = GTK_TREE_MODEL (gtk_builder_get_object (builder,
446 "GNUNET_GTK_meta_data_list_store"));
447 if (TRUE ==
448 gtk_tree_model_get_iter_first (tm, &iter))
449 {
450 do
451 {
452 gtk_tree_model_get (tm, &iter,
453 0, &ntype,
454 1, &nformat,
455 3, &value,
456 -1);
457 GNUNET_CONTAINER_meta_data_insert (nm,
458 "<user>",
459 ntype,
460 nformat,
461 "text/plain",
462 value,
463 strlen (value)+1);
464 g_free (value);
465 }
466 while (TRUE == gtk_tree_model_iter_next (tm, &iter));
467 }
468 anonymity_level = gtk_spin_button_get_value (GTK_SPIN_BUTTON (gtk_builder_get_object (builder,
469 "GNUNET_GTK_advertise_pseudonym_anonymity_spin_button")));
470 priority = gtk_spin_button_get_value (GTK_SPIN_BUTTON (gtk_builder_get_object (builder,
471 "GNUNET_GTK_advertise_pseudonym_priority_spin_button")));
472 expiration = GNUNET_TIME_relative_to_absolute (GNUNET_TIME_UNIT_YEARS);
473 root = gtk_entry_get_text (GTK_ENTRY (gtk_builder_get_object (builder,
474 "GNUNET_GTK_advertise_pseudonym_root_entry")));
475 GNUNET_FS_namespace_advertise (GNUNET_GTK_get_fs_handle (),
476 uri,
477 ns,
478 nm,
479 anonymity_level,
480 priority,
481 expiration,
482 root,
483 NULL, NULL);
484 GNUNET_CONTAINER_meta_data_destroy (nm);
485 if (NULL != uri)
486 GNUNET_FS_uri_destroy (uri);
487 gtk_widget_destroy (ad);
488 g_object_unref (G_OBJECT (builder));
489 builder = NULL;
490}
491
492
493/* end of main_window_adv_pseudonym.c */