gnunet-svn
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[GNUnet-SVN] r1299 - gnunet-gtk/src/plugins/fs


From: grothoff
Subject: [GNUnet-SVN] r1299 - gnunet-gtk/src/plugins/fs
Date: Wed, 6 Jul 2005 14:43:07 -0700 (PDT)

Author: grothoff
Date: 2005-07-06 14:43:05 -0700 (Wed, 06 Jul 2005)
New Revision: 1299

Modified:
   gnunet-gtk/src/plugins/fs/namespace.c
Log:
more code for namespaces and collections

Modified: gnunet-gtk/src/plugins/fs/namespace.c
===================================================================
--- gnunet-gtk/src/plugins/fs/namespace.c       2005-07-06 21:40:56 UTC (rev 
1298)
+++ gnunet-gtk/src/plugins/fs/namespace.c       2005-07-06 21:43:05 UTC (rev 
1299)
@@ -38,7 +38,7 @@
 typedef struct NL {
   struct NL * next;
   GtkWidget * treeview;
-  GtkWidget * searchpage;
+  GtkWidget * namespacepage;
   GtkTreeModel * model;
   GtkWidget * anonymityButton;
   char * name;
@@ -48,6 +48,8 @@
 
 static NamespaceList * head;
 
+static GladeXML * metaXML;
+
 static GtkWidget * makeNamespaceFrame(GtkWidget ** treeview,
                                      GtkWidget ** anonSpin) {
   GtkWidget * window;
@@ -340,7 +342,7 @@
   list->name = STRDUP(namespaceName);
   list->id = *namespaceId;
   list->meta = ECRS_dupMetaData(md);
-  list->searchpage
+  list->namespacepage
     = makeNamespaceFrame(&list->treeview,
                         &spin);
   list->anonymityButton
@@ -357,7 +359,7 @@
     = glade_xml_get_widget(getMainXML(),
                           "localNamespacesNotebook");
   gtk_notebook_append_page(GTK_NOTEBOOK(notebook),
-                          list->searchpage,
+                          list->namespacepage,
                           label);
   gtk_widget_show(notebook);
 
@@ -370,13 +372,92 @@
 }
 
 /**
- * FIXME: refactor code to share keyword/metadata list 
+ * FIXME: somehow this function is not called
+ * when the button is clicked.
+ */
+void 
+on_namespacemetaDataDialogKeywordAddButton_clicked(gpointer dummy,
+                                                  GtkWidget * uploadButton) {
+  GtkWidget * keywordList;
+  GtkWidget * entryLine;
+  const char * keyword;
+  GtkListStore * keymodel;
+  GtkTreeIter iter;
+
+  keywordList = glade_xml_get_widget(metaXML,
+                                    "namespaceMetaDataDialogKeywordList");
+  keymodel
+    = GTK_LIST_STORE(gtk_tree_view_get_model(GTK_TREE_VIEW(keywordList)));
+
+  entryLine = glade_xml_get_widget(metaXML,
+                                  "namespaceKeywordEntry"); 
+  keyword = gtk_entry_get_text(GTK_ENTRY(entryLine));
+  gtk_list_store_append(keymodel,
+                       &iter);
+  gtk_list_store_set(keymodel,
+                    &iter,
+                    0, keyword,
+                    -1); 
+  gtk_entry_set_text(GTK_ENTRY(entryLine), "");
+}
+
+/**
+ * FIXME: somehow this function is not called
+ * when the button is clicked.
+ */
+void 
+on_namespacemetaDataDialogMetaDataAddButton_clicked(gpointer dummy,
+                                                   GtkWidget * uploadButton) {
+  GtkWidget * metaList;
+  GtkWidget * entryLine;
+  GtkWidget * typeCB;
+  const char * value;
+  EXTRACTOR_KeywordType type;
+  GtkListStore * metamodel;
+  GtkListStore * typemodel;
+  GtkTreeIter iter;
+  char * stype;
+  
+  metaList = glade_xml_get_widget(metaXML,
+                                 "namespaceMetaDataDialogMetaDataList");
+  metamodel
+    = GTK_LIST_STORE(gtk_tree_view_get_model(GTK_TREE_VIEW(metaList)));
+
+  entryLine = glade_xml_get_widget(metaXML,
+                                  "namespaceMetaDataValueEntry"); 
+  value = gtk_entry_get_text(GTK_ENTRY(entryLine));
+  typeCB = glade_xml_get_widget(metaXML,
+                               "namespaceMetaDataDialogMetaTypeComboBox"); 
+  typemodel
+    = GTK_LIST_STORE(gtk_combo_box_get_model(GTK_COMBO_BOX(typeCB)));
+  if (! gtk_combo_box_get_active_iter(GTK_COMBO_BOX(typeCB),
+                                     &iter))
+    return; /* oops */
+  gtk_tree_model_get(GTK_TREE_MODEL(typemodel),
+                    &iter,
+                    META_STYPE, &stype,
+                    META_TYPE, &type,
+                    -1);  
+  gtk_list_store_append(metamodel,
+                       &iter);
+  gtk_list_store_set(metamodel,
+                    &iter,
+                    META_TYPE, type,
+                    META_STYPE, stype,
+                    META_VALUE, value,
+                    -1); 
+  gtk_entry_set_text(GTK_ENTRY(entryLine), "");
+}
+
+
+
+/**
+ * CLEANUP: refactor code to share keyword/metadata list 
  * and model creation with upload and collection!
  */
 void create_namespace_clicked(GtkWidget * dummy1,
                              GtkWidget * dummy2) {
   const char * namespaceName;
-  GladeXML * metaXML;
   GtkWidget * nameLine;
   GtkWidget * metaList;
   GtkWidget * keywordList;
@@ -432,7 +513,7 @@
                          GTK_TREE_MODEL(metamodel));
   keymodel
     = gtk_list_store_new(1,
-                       G_TYPE_STRING);
+                        G_TYPE_STRING);
   keywordList = glade_xml_get_widget(metaXML,
                                     "namespaceMetaDataDialogKeywordList");
   renderer = gtk_cell_renderer_text_new();
@@ -474,7 +555,7 @@
                           0);
   gtk_dialog_set_default_response(GTK_DIALOG(dialog),
                                  GTK_RESPONSE_OK);
-  if (gtk_dialog_run(GTK_DIALOG(dialog)) != GTK_RESPONSE_CANCEL) {
+  if (gtk_dialog_run(GTK_DIALOG(dialog)) == GTK_RESPONSE_OK) {
     meta = ECRS_createMetaData();
     if (gtk_tree_model_get_iter_first(GTK_TREE_MODEL(metamodel),
                                      &iter)) {
@@ -519,12 +600,19 @@
     GROW(keywords,
         ksize,
         0);
-    spin = glade_xml_get_widget(getMainXML(),
+    spin = glade_xml_get_widget(metaXML,
                                "namespaceAnonymityspinbutton");    
-    nameLine = glade_xml_get_widget(getMainXML(),
+    nameLine = glade_xml_get_widget(metaXML,
+                                   "namespaceRootEntry");
+    namespaceName = gtk_entry_get_text(GTK_ENTRY(nameLine));
+    if (namespaceName == NULL) 
+      namespaceName = "root"; /* do NOT translate "root"! */
+    hash(namespaceName,
+        strlen(namespaceName),
+        &rootEntry);    
+    nameLine = glade_xml_get_widget(metaXML,
                                    "namespaceNameEntry");
     namespaceName = gtk_entry_get_text(GTK_ENTRY(nameLine));
-    hash("FIXME", 5, &rootEntry); /* FIXME: need to fix glade file! */
     root = NULL;
     if (OK == FSUI_createNamespace(ctx,
                                   gtk_spin_button_get_value_as_int
@@ -542,7 +630,20 @@
                         meta,
                         0);
     } else {
-      /* FIXME: give user feedback on failure! */
+      GtkWidget * dialog;
+      
+      dialog = gtk_message_dialog_new 
+       (NULL,
+        GTK_DIALOG_MODAL,
+        GTK_MESSAGE_ERROR,
+        GTK_BUTTONS_CLOSE,
+        _("Failed to create namespace '%s'."
+          "Consult logs, most likely error is"
+          " that a namespace with that name "
+          "already exists."),
+        namespaceName);
+      gtk_dialog_run(GTK_DIALOG(dialog));
+      gtk_widget_destroy(dialog);  
     }
     ECRS_freeUri(root);
     ECRS_freeMetaData(meta);
@@ -555,13 +656,166 @@
 
 void namespaceDelete_clicked(GtkWidget * dummy1,
                             GtkWidget * dummy2) {
+  GtkWidget * notebook;
+  NamespaceList * list;
+  NamespaceList * prev;
+  gint num;
+  GtkWidget * page;
+  GtkWidget * dialog;    
+  gint ret;
+
+  notebook
+    = glade_xml_get_widget(getMainXML(),
+                          "localNamespacesNotebook");
+  num 
+    = gtk_notebook_get_current_page(GTK_NOTEBOOK(notebook));
+  if (num == -1) {
+    /* IMPROVE-ME: disable the menu item
+       as long as this may happen! */
+    dialog = gtk_message_dialog_new 
+      (NULL,
+       GTK_DIALOG_MODAL,
+       GTK_MESSAGE_ERROR,
+       GTK_BUTTONS_CLOSE,
+       _("No local namespaces available that could be deleted!"));
+    gtk_dialog_run(GTK_DIALOG(dialog));
+    gtk_widget_destroy(dialog);      
+    return;
+  }
+  page
+    = gtk_notebook_get_nth_page(GTK_NOTEBOOK(notebook),
+                               num);
+  list 
+    = head;
+  prev
+    = NULL;
+  while ( (list != NULL) &&
+         (list->namespacepage != page) ) {
+    prev = list;
+    list = list->next;
+  }
+  if (list == NULL) {
+    BREAK();
+    return;
+  }
+  /* open window to ask for confirmation,
+     only then delete */
+  
+  dialog = gtk_message_dialog_new 
+    (NULL,
+     GTK_DIALOG_MODAL,
+     GTK_MESSAGE_ERROR,
+     GTK_BUTTONS_YES_NO,
+     _("Should the namespace '%s' really be deleted?"),
+     list->name);
+  ret = gtk_dialog_run(GTK_DIALOG(dialog));
+  gtk_widget_destroy(dialog);      
+  if (GTK_RESPONSE_YES != ret)
+    return;
+
+  gtk_notebook_remove_page(GTK_NOTEBOOK(notebook),
+                          num);
+  if (prev == NULL)
+    head = list->next;
+  else
+    prev->next = list->next;
+  FSUI_deleteNamespace(list->name);
+  FREE(list->name);
+  ECRS_freeMetaData(list->meta);
+  FREE(list);
+}
+
+
+
+void on_namespaceInsertButton_clicked(GtkWidget * dummy1,
+                                     GtkWidget * dummy2) {
+  const char * identifierName;
+  GtkWidget * nameLine;
+  GtkWidget * metaList;
+  GtkWidget * dialog;
+  GtkWidget * spin;
+  GtkListStore * metamodel;
+  GtkCellRenderer * renderer;
+  GtkTreeIter iter;
+  struct ECRS_MetaData * meta;
+  EXTRACTOR_KeywordType type;
+  char * mvalue;
+  HashCode512 identifier;
+
   /* FIXME */
-  /* find currently active namespace,
-     open window to ask for confirmation,
-     then delete */
+  metaXML
+    = glade_xml_new(getGladeFileName(),
+                   "namespaceMetaDataDialog",
+                   NULL);
+  connectGladeWithPlugins(metaXML);
+  dialog = glade_xml_get_widget(metaXML,
+                               "namespaceMetaDataDialog");
+  metamodel
+    = gtk_list_store_new(META_NUM,
+                        G_TYPE_INT,
+                        G_TYPE_STRING,
+                        G_TYPE_STRING);
+  metaList = glade_xml_get_widget(metaXML,
+                                 "namespaceMetaDataDialogMetaDataList");
+  renderer = gtk_cell_renderer_text_new();
+  gtk_tree_view_insert_column_with_attributes(GTK_TREE_VIEW(metaList),
+                                             -1,
+                                             _("Category"),
+                                             renderer,
+                                             "text", META_STYPE,
+                                             NULL);
+  renderer = gtk_cell_renderer_text_new();
+  gtk_tree_view_insert_column_with_attributes(GTK_TREE_VIEW(metaList),
+                                             -1,
+                                             _("Value"),
+                                             renderer,
+                                             "text", META_VALUE,
+                                             NULL);
+  gtk_tree_view_set_model(GTK_TREE_VIEW(metaList),
+                         GTK_TREE_MODEL(metamodel));
+  gtk_dialog_set_default_response(GTK_DIALOG(dialog),
+                                 GTK_RESPONSE_OK);
+  if (gtk_dialog_run(GTK_DIALOG(dialog)) == GTK_RESPONSE_OK) {
+    meta = ECRS_createMetaData();
+    if (gtk_tree_model_get_iter_first(GTK_TREE_MODEL(metamodel),
+                                     &iter)) {
+      do {     
+       gtk_tree_model_get(GTK_TREE_MODEL(metamodel),
+                          &iter,
+                          META_TYPE, &type,
+                          META_VALUE, &mvalue,
+                          -1);
+       ECRS_addToMetaData(meta,
+                          type,
+                          mvalue);
+      } while (gtk_tree_model_iter_next(GTK_TREE_MODEL(metamodel),
+                                       &iter));
+    }
+    spin = glade_xml_get_widget(metaXML,
+                               "namespaceAnonymityspinbutton");    
+    nameLine = glade_xml_get_widget(metaXML,
+                                   "namespaceContentIdentifierEntry");
+    identifierName = gtk_entry_get_text(GTK_ENTRY(nameLine));
+    if (identifierName == NULL)
+      identifierName = "";
+    hash(identifierName,
+        strlen(identifierName),
+        &identifier);
+
+
+  }
+  gtk_widget_destroy(dialog);
+  UNREF(metaXML);
+  metaXML = NULL;
 }
 
+void on_namespaceUpdateButton_clicked(GtkWidget * dummy1,
+                                     GtkWidget * dummy2) {
+  /* FIXME */
+}
 
+
+
 void fs_namespace_start() {
   GtkWidget * contentList;
   GtkListStore * model;





reply via email to

[Prev in Thread] Current Thread [Next in Thread]