diff options
Diffstat (limited to 'src/plugins/fs/namespace.c')
-rw-r--r-- | src/plugins/fs/namespace.c | 231 |
1 files changed, 28 insertions, 203 deletions
diff --git a/src/plugins/fs/namespace.c b/src/plugins/fs/namespace.c index aeaf0a79..cd8238d4 100644 --- a/src/plugins/fs/namespace.c +++ b/src/plugins/fs/namespace.c | |||
@@ -27,6 +27,7 @@ | |||
27 | #include "platform.h" | 27 | #include "platform.h" |
28 | #include "gnunetgtk_common.h" | 28 | #include "gnunetgtk_common.h" |
29 | #include "fs.h" | 29 | #include "fs.h" |
30 | #include "meta.h" | ||
30 | #include "namespace.h" | 31 | #include "namespace.h" |
31 | #include <extractor.h> | 32 | #include <extractor.h> |
32 | 33 | ||
@@ -372,112 +373,29 @@ static int addTabForNamespace(void * unused, | |||
372 | return OK; | 373 | return OK; |
373 | } | 374 | } |
374 | 375 | ||
375 | /** | 376 | void on_namespacemetaDataDialogKeywordAddButton_clicked(gpointer dummy, |
376 | * FIXME: somehow this function is not called | 377 | GtkWidget * uploadButton) { |
377 | * when the button is clicked. | 378 | handleKeywordListUpdate(metaXML, |
378 | */ | 379 | "namespaceKeywordEntry", |
379 | void | 380 | "namespaceMetaDataDialogKeywordList"); |
380 | on_namespacemetaDataDialogKeywordAddButton_clicked(gpointer dummy, | ||
381 | GtkWidget * uploadButton) { | ||
382 | GtkWidget * keywordList; | ||
383 | GtkWidget * entryLine; | ||
384 | const char * keyword; | ||
385 | GtkListStore * keymodel; | ||
386 | GtkTreeIter iter; | ||
387 | |||
388 | keywordList = glade_xml_get_widget(metaXML, | ||
389 | "namespaceMetaDataDialogKeywordList"); | ||
390 | keymodel | ||
391 | = GTK_LIST_STORE(gtk_tree_view_get_model(GTK_TREE_VIEW(keywordList))); | ||
392 | |||
393 | entryLine = glade_xml_get_widget(metaXML, | ||
394 | "namespaceKeywordEntry"); | ||
395 | keyword = gtk_entry_get_text(GTK_ENTRY(entryLine)); | ||
396 | gtk_list_store_append(keymodel, | ||
397 | &iter); | ||
398 | gtk_list_store_set(keymodel, | ||
399 | &iter, | ||
400 | 0, keyword, | ||
401 | -1); | ||
402 | gtk_entry_set_text(GTK_ENTRY(entryLine), ""); | ||
403 | } | 381 | } |
404 | 382 | ||
405 | /** | 383 | void on_namespacemetaDataDialogMetaDataAddButton_clicked(gpointer dummy, |
406 | * FIXME: somehow this function is not called | 384 | GtkWidget * uploadButton) { |
407 | * when the button is clicked. | 385 | handleMetaDataListUpdate(metaXML, |
408 | */ | 386 | "namespaceMetaDataDialogMetaTypeComboBox", |
409 | void | 387 | "namespaceMetaDataValueEntry", |
410 | on_namespacemetaDataDialogMetaDataAddButton_clicked(gpointer dummy, | 388 | "namespaceMetaDataDialogMetaDataList"); |
411 | GtkWidget * uploadButton) { | ||
412 | GtkWidget * metaList; | ||
413 | GtkWidget * entryLine; | ||
414 | GtkWidget * typeCB; | ||
415 | const char * value; | ||
416 | EXTRACTOR_KeywordType type; | ||
417 | GtkListStore * metamodel; | ||
418 | GtkListStore * typemodel; | ||
419 | GtkTreeIter iter; | ||
420 | char * stype; | ||
421 | |||
422 | metaList = glade_xml_get_widget(metaXML, | ||
423 | "namespaceMetaDataDialogMetaDataList"); | ||
424 | metamodel | ||
425 | = GTK_LIST_STORE(gtk_tree_view_get_model(GTK_TREE_VIEW(metaList))); | ||
426 | |||
427 | entryLine = glade_xml_get_widget(metaXML, | ||
428 | "namespaceMetaDataValueEntry"); | ||
429 | value = gtk_entry_get_text(GTK_ENTRY(entryLine)); | ||
430 | typeCB = glade_xml_get_widget(metaXML, | ||
431 | "namespaceMetaDataDialogMetaTypeComboBox"); | ||
432 | typemodel | ||
433 | = GTK_LIST_STORE(gtk_combo_box_get_model(GTK_COMBO_BOX(typeCB))); | ||
434 | if (! gtk_combo_box_get_active_iter(GTK_COMBO_BOX(typeCB), | ||
435 | &iter)) | ||
436 | return; /* oops */ | ||
437 | gtk_tree_model_get(GTK_TREE_MODEL(typemodel), | ||
438 | &iter, | ||
439 | KTYPE_STRING, &stype, | ||
440 | KTYPE_TYPE, &type, | ||
441 | -1); | ||
442 | gtk_list_store_append(metamodel, | ||
443 | &iter); | ||
444 | gtk_list_store_set(metamodel, | ||
445 | &iter, | ||
446 | META_TYPE, type, | ||
447 | META_STYPE, stype, | ||
448 | META_VALUE, value, | ||
449 | -1); | ||
450 | gtk_entry_set_text(GTK_ENTRY(entryLine), ""); | ||
451 | } | 389 | } |
452 | 390 | ||
453 | |||
454 | |||
455 | /** | ||
456 | * CLEANUP: refactor code to share keyword/metadata list | ||
457 | * and model creation with upload and collection! | ||
458 | */ | ||
459 | void create_namespace_clicked(GtkWidget * dummy1, | 391 | void create_namespace_clicked(GtkWidget * dummy1, |
460 | GtkWidget * dummy2) { | 392 | GtkWidget * dummy2) { |
461 | const char * namespaceName; | 393 | const char * namespaceName; |
462 | GtkWidget * nameLine; | 394 | GtkWidget * nameLine; |
463 | GtkWidget * metaList; | ||
464 | GtkWidget * keywordList; | ||
465 | GtkWidget * dialog; | 395 | GtkWidget * dialog; |
466 | GtkWidget * metaType; | ||
467 | GtkWidget * spin; | 396 | GtkWidget * spin; |
468 | GtkListStore * metamodel; | ||
469 | GtkListStore * keymodel; | ||
470 | GtkCellRenderer * renderer; | ||
471 | GtkListStore * keywordTypeModel; | ||
472 | GtkTreeIter iter; | ||
473 | struct ECRS_MetaData * meta; | 397 | struct ECRS_MetaData * meta; |
474 | EXTRACTOR_KeywordType type; | ||
475 | struct ECRS_URI * keywordURI; | 398 | struct ECRS_URI * keywordURI; |
476 | const char * stype; | ||
477 | char * mvalue; | ||
478 | char ** keywords; | ||
479 | unsigned int kpos; | ||
480 | unsigned int ksize; | ||
481 | struct ECRS_URI * root; | 399 | struct ECRS_URI * root; |
482 | HashCode512 namespaceId; | 400 | HashCode512 namespaceId; |
483 | HashCode512 rootEntry; | 401 | HashCode512 rootEntry; |
@@ -489,118 +407,25 @@ void create_namespace_clicked(GtkWidget * dummy1, | |||
489 | connectGladeWithPlugins(metaXML); | 407 | connectGladeWithPlugins(metaXML); |
490 | dialog = glade_xml_get_widget(metaXML, | 408 | dialog = glade_xml_get_widget(metaXML, |
491 | "namespaceMetaDataDialog"); | 409 | "namespaceMetaDataDialog"); |
492 | metamodel | 410 | createMetaDataListTreeView(metaXML, |
493 | = gtk_list_store_new(META_NUM, | 411 | "namespaceMetaDataDialogMetaDataList", |
494 | G_TYPE_INT, | 412 | NULL, |
495 | G_TYPE_STRING, | 413 | NULL); |
496 | G_TYPE_STRING); | 414 | createKeywordListTreeView(metaXML, |
497 | metaList = glade_xml_get_widget(metaXML, | 415 | "namespaceMetaDataDialogKeywordList", |
498 | "namespaceMetaDataDialogMetaDataList"); | 416 | NULL); |
499 | renderer = gtk_cell_renderer_text_new(); | 417 | createMetaTypeComboBox(metaXML, |
500 | gtk_tree_view_insert_column_with_attributes(GTK_TREE_VIEW(metaList), | 418 | "namespaceMetaDataDialogMetaTypeComboBox"); |
501 | -1, | ||
502 | _("Category"), | ||
503 | renderer, | ||
504 | "text", META_STYPE, | ||
505 | NULL); | ||
506 | renderer = gtk_cell_renderer_text_new(); | ||
507 | gtk_tree_view_insert_column_with_attributes(GTK_TREE_VIEW(metaList), | ||
508 | -1, | ||
509 | _("Value"), | ||
510 | renderer, | ||
511 | "text", META_VALUE, | ||
512 | NULL); | ||
513 | gtk_tree_view_set_model(GTK_TREE_VIEW(metaList), | ||
514 | GTK_TREE_MODEL(metamodel)); | ||
515 | keymodel | ||
516 | = gtk_list_store_new(1, | ||
517 | G_TYPE_STRING); | ||
518 | keywordList = glade_xml_get_widget(metaXML, | ||
519 | "namespaceMetaDataDialogKeywordList"); | ||
520 | renderer = gtk_cell_renderer_text_new(); | ||
521 | gtk_tree_view_insert_column_with_attributes(GTK_TREE_VIEW(keywordList), | ||
522 | -1, | ||
523 | _("Keyword"), | ||
524 | renderer, | ||
525 | "text", 0, | ||
526 | NULL); | ||
527 | gtk_tree_view_set_model(GTK_TREE_VIEW(keywordList), | ||
528 | GTK_TREE_MODEL(keymodel)); | ||
529 | keywordTypeModel | ||
530 | = gtk_list_store_new(KTYPE_NUM, | ||
531 | G_TYPE_STRING, | ||
532 | G_TYPE_INT); | ||
533 | metaType | ||
534 | = glade_xml_get_widget(metaXML, | ||
535 | "namespaceMetaDataDialogMetaTypeComboBox"); | ||
536 | gtk_combo_box_set_model(GTK_COMBO_BOX(metaType), | ||
537 | GTK_TREE_MODEL(keywordTypeModel)); | ||
538 | for (type=0;type<EXTRACTOR_getHighestKeywordTypeNumber();type++) { | ||
539 | stype = EXTRACTOR_getKeywordTypeAsString(type); | ||
540 | gtk_list_store_append(keywordTypeModel, | ||
541 | &iter); | ||
542 | gtk_list_store_set(keywordTypeModel, | ||
543 | &iter, | ||
544 | KTYPE_STRING, stype, | ||
545 | KTYPE_TYPE, type, | ||
546 | -1); | ||
547 | } | ||
548 | renderer = gtk_cell_renderer_text_new(); | ||
549 | gtk_cell_layout_pack_start(GTK_CELL_LAYOUT(metaType), | ||
550 | renderer, | ||
551 | FALSE); | ||
552 | gtk_cell_layout_add_attribute(GTK_CELL_LAYOUT(metaType), | ||
553 | renderer, | ||
554 | "text", KTYPE_STRING); | ||
555 | gtk_combo_box_set_active(GTK_COMBO_BOX(metaType), | ||
556 | 0); | ||
557 | gtk_dialog_set_default_response(GTK_DIALOG(dialog), | 419 | gtk_dialog_set_default_response(GTK_DIALOG(dialog), |
558 | GTK_RESPONSE_OK); | 420 | GTK_RESPONSE_OK); |
559 | if (gtk_dialog_run(GTK_DIALOG(dialog)) == GTK_RESPONSE_OK) { | 421 | if (gtk_dialog_run(GTK_DIALOG(dialog)) == GTK_RESPONSE_OK) { |
560 | meta = ECRS_createMetaData(); | 422 | meta |
561 | if (gtk_tree_model_get_iter_first(GTK_TREE_MODEL(metamodel), | 423 | = getMetaDataFromList(metaXML, |
562 | &iter)) { | 424 | "namespaceMetaDataDialogMetaDataList", |
563 | do { | 425 | NULL); |
564 | gtk_tree_model_get(GTK_TREE_MODEL(metamodel), | 426 | keywordURI |
565 | &iter, | 427 | = getKeywordURIFromList(metaXML, |
566 | META_TYPE, &type, | 428 | "namespaceMetaDataDialogKeywordList"); |
567 | META_VALUE, &mvalue, | ||
568 | -1); | ||
569 | ECRS_addToMetaData(meta, | ||
570 | type, | ||
571 | mvalue); | ||
572 | } while (gtk_tree_model_iter_next(GTK_TREE_MODEL(metamodel), | ||
573 | &iter)); | ||
574 | } | ||
575 | keywords = NULL; | ||
576 | ksize = 0; | ||
577 | GROW(keywords, | ||
578 | ksize, | ||
579 | 64); | ||
580 | kpos = 0; | ||
581 | if (gtk_tree_model_get_iter_first(GTK_TREE_MODEL(keymodel), | ||
582 | &iter)) { | ||
583 | do { | ||
584 | gtk_tree_model_get(GTK_TREE_MODEL(keymodel), | ||
585 | &iter, | ||
586 | 0, &mvalue, | ||
587 | -1); | ||
588 | keywords[kpos++] = mvalue; | ||
589 | if (kpos == ksize) | ||
590 | GROW(keywords, | ||
591 | ksize, | ||
592 | kpos*2); | ||
593 | } while (gtk_tree_model_iter_next(GTK_TREE_MODEL(keymodel), | ||
594 | &iter)); | ||
595 | } | ||
596 | keywords[kpos] = NULL; | ||
597 | |||
598 | keywordURI = ECRS_keywordsToUri((const char**)keywords); | ||
599 | while (kpos > 0) | ||
600 | FREE(keywords[--kpos]); | ||
601 | GROW(keywords, | ||
602 | ksize, | ||
603 | 0); | ||
604 | spin = glade_xml_get_widget(metaXML, | 429 | spin = glade_xml_get_widget(metaXML, |
605 | "namespaceAnonymityspinbutton"); | 430 | "namespaceAnonymityspinbutton"); |
606 | nameLine = glade_xml_get_widget(metaXML, | 431 | nameLine = glade_xml_get_widget(metaXML, |