gnunet-svn
[Top][All Lists]
Advanced

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

[GNUnet-SVN] r22230 - gnunet-gtk/src/setup


From: gnunet
Subject: [GNUnet-SVN] r22230 - gnunet-gtk/src/setup
Date: Sat, 23 Jun 2012 22:54:26 +0200

Author: grothoff
Date: 2012-06-23 22:54:26 +0200 (Sat, 23 Jun 2012)
New Revision: 22230

Added:
   gnunet-gtk/src/setup/gnunet-setup-gns.h
Modified:
   gnunet-gtk/src/setup/Makefile.am
   gnunet-gtk/src/setup/gnunet-setup-gns.c
   gnunet-gtk/src/setup/gnunet-setup.c
Log:
-towards integrating gnunet-gns-gtk with gnunet-setup

Modified: gnunet-gtk/src/setup/Makefile.am
===================================================================
--- gnunet-gtk/src/setup/Makefile.am    2012-06-23 18:57:21 UTC (rev 22229)
+++ gnunet-gtk/src/setup/Makefile.am    2012-06-23 20:54:26 UTC (rev 22230)
@@ -29,13 +29,14 @@
   gnunet-setup-datacache-config.c \
   gnunet-setup-namestore-plugins.c \
   gnunet-setup-namestore-config.c \
+  gnunet-setup-gns.c gnunet-setup-gns.h \
   gnunet-setup-hostlist-editing.c \
   gnunet-setup-hostlist-server.c 
 gnunet_setup_LDADD = \
   $(top_builddir)/src/lib/libgnunetgtk.la \
   @GTK_LIBS@ @GNUNET_LIBS@ @GLADE_LIBS@ \
   $(WINLIBS) \
-  -lgnunetutil -lgnunetnat \
+  -lgnunetutil -lgnunetnat -lgnunetnamestore \
   $(INTLLIBS) 
 gnunet_setup_LDFLAGS = \
   -export-dynamic 

Modified: gnunet-gtk/src/setup/gnunet-setup-gns.c
===================================================================
--- gnunet-gtk/src/setup/gnunet-setup-gns.c     2012-06-23 18:57:21 UTC (rev 
22229)
+++ gnunet-gtk/src/setup/gnunet-setup-gns.c     2012-06-23 20:54:26 UTC (rev 
22230)
@@ -24,10 +24,42 @@
  * @brief everything releated to the main GNS zone tree view
  */
 #include "gnunet_gtk.h"
-#include "gnunet-gns-gtk.h"
+#include "gnunet-setup-gns.h"
+#include <gnunet/gnunet_namestore_service.h>
 
+/**
+ * FIXME.  Also: i18n?
+ */
+#define NEW_NAME_STR "<new name>"
 
 /**
+ * FIXME.  Also: i18n?
+ */
+#define NEW_RECORD_STR "<new record>"
+
+/**
+ * FIXME.  Also: i18n?
+ */
+#define ROOT_STR "+"
+
+/**
+ * FIXME.  Also: i18n?
+ */
+#define EXPIRE_NEVER_STRING "never"
+
+/**
+ * FIXME.  Also: i18n?
+ */
+#define EXPIRE_INVALID_STRING "invalid"
+
+/**
+ * FIXME.  Also: i18n?
+ */
+#define PSEU_EMPTY_STR "<empty>"
+
+
+
+/**
  * Columns in the gns model.
  */
 enum GNSTreestoreColumn
@@ -128,10 +160,6 @@
  */
 struct UpdateContext
 {
-  /**
-   *
-   */
-  struct GNUNET_GNS_Context *gns;
 
   /**
    *
@@ -160,29 +188,54 @@
  */
 static char *zonekey_directory;
 
+/**
+ * Handle to the namestore.
+ */
+static struct GNUNET_NAMESTORE_Handle *namestore;
 
-struct GNUNET_GNS_Context
-{
-  /**
-   * Handle to the namestore.
-   */
-  struct GNUNET_NAMESTORE_Handle *ns;
+/**
+ * FIXME...
+ */
+static GtkTreeStore *ts;
 
-  GtkCheckMenuItem *shorten_menu;
+/**
+ * FIXME...
+ */
+static GtkListStore *ls;
 
-  GtkTreeStore *ts;
-  GtkListStore *ls;
-  GtkTreeModel *tm;
-  GtkTreeView *tv;
+/**
+ * FIXME...
+ */
+static GtkTreeModel *tm;
 
-  struct GNUNET_CRYPTO_RsaPrivateKey *pkey;
-  struct GNUNET_CRYPTO_RsaPublicKeyBinaryEncoded pubkey;
+/**
+ * FIXME...
+ */
+static GtkTreeView *tv;
 
-  struct GNUNET_CRYPTO_ShortHashCode zone;
-  int iteration;
-};
+/**
+ * FIXME: not good for multi-zone system we have right now...
+ */ 
+static struct GNUNET_CRYPTO_RsaPrivateKey *pkey;
 
+/**
+ * FIXME: not good for multi-zone system we have right now...
+ */ 
+static struct GNUNET_CRYPTO_RsaPublicKeyBinaryEncoded pubkey;
 
+/**
+ * FIXME: not good for multi-zone system we have right now...
+ */ 
+static struct GNUNET_CRYPTO_ShortHashCode zone;
+
+/**
+ * FIXME...
+ */
+static int iteration;
+
+
+
+
 static void
 check_name_validity_and_commit_remove_proc (void *cls,
                                             int32_t success,
@@ -190,11 +243,12 @@
 {
   struct UpdateContext * uc = cls;
   unsigned int c;
+
   if ((GNUNET_OK == success) || (GNUNET_NO == success))
   {
      for (c = 0; c < uc->rd_count; c++)
      {
-       GNUNET_NAMESTORE_record_create(uc->gns->ns, uc->gns->pkey,
+       GNUNET_NAMESTORE_record_create(namestore, pkey,
            uc->name, &uc->rd[c],NULL, NULL);
        GNUNET_free ((void *) uc->rd[c].data);
      }
@@ -219,7 +273,7 @@
 
 
 static void
-check_name_validity_and_commit (struct GNUNET_GNS_Context *gns, gchar *path, 
char * oldname)
+check_name_validity_and_commit (gchar *path, char * oldname)
 {
   GtkTreeIter it;
   GtkTreeIter parent;
@@ -244,18 +298,18 @@
   char          *n_value_color;
 
 
-  gtk_tree_model_get_iter_from_string(gns->tm, &it, path);
+  gtk_tree_model_get_iter_from_string(tm, &it, path);
 
-  if (FALSE == gtk_tree_model_iter_parent (gns->tm, &parent, &it))
+  if (FALSE == gtk_tree_model_iter_parent (tm, &parent, &it))
     parent = it;
 
-  children = gtk_tree_model_iter_n_children (gns->tm, &parent);
+  children = gtk_tree_model_iter_n_children (tm, &parent);
   if (children < 1)
   {
     return;
   }
 
-  gtk_tree_model_get(gns->tm, &parent,
+  gtk_tree_model_get(tm, &parent,
                      GNS_TREESTORE_COL_NAME, &name,
                      -1);
 
@@ -273,12 +327,12 @@
 
   struct GNUNET_NAMESTORE_RecordData *rd = GNUNET_malloc (records * sizeof 
(struct GNUNET_NAMESTORE_RecordData));
 
-  if (FALSE == gtk_tree_model_iter_children (gns->tm, &it, &parent))
+  if (FALSE == gtk_tree_model_iter_children (tm, &it, &parent))
     return;
 
   for (c = 0; c < children; c++)
   {
-    gtk_tree_model_get(gns->tm, &it,
+    gtk_tree_model_get(tm, &it,
                        GNS_TREESTORE_COL_NAME, &n_name,
                        GNS_TREESTORE_COL_RECORD_TYPE, &n_type,
                        GNS_TREESTORE_COL_IS_PUBLIC, &n_public,
@@ -333,7 +387,7 @@
     g_free (n_value);
     g_free (n_value_color);
 
-    if (FALSE == gtk_tree_model_iter_next (gns->tm, &it))
+    if (FALSE == gtk_tree_model_iter_next (tm, &it))
       break;
   }
 
@@ -351,7 +405,7 @@
       GNUNET_assert (children == (records -1));
 
       /* Append PSEU record */
-      GtkEntry * entry = GTK_ENTRY (gtk_builder_get_object (gns->builder, 
"GNUNET_GNS_GTK_pseu_entry"));
+      GtkEntry * entry = GTK_ENTRY (GNUNET_SETUP_get_object 
("GNUNET_SETUP_gns_pseu_entry"));
       pseu = gtk_entry_get_text (GTK_ENTRY(entry));
       if ((NULL != pseu) && (0 != strcmp (PSEU_EMPTY_STR, pseu)) && (0 != 
strcmp ("", pseu)))
       {
@@ -377,14 +431,13 @@
 
     /* Remove old entries */
     struct UpdateContext * uc = GNUNET_malloc (sizeof (struct UpdateContext));
-    uc->gns = gns;
     uc->rd = rd;
     uc->rd_count = records;
     uc->name = strdup (name);
     if (oldname != NULL)
-      GNUNET_NAMESTORE_record_remove(gns->ns, gns->pkey, oldname, NULL, 
&check_name_validity_and_commit_remove_proc, uc);
+      GNUNET_NAMESTORE_record_remove (namestore, pkey, oldname, NULL, 
&check_name_validity_and_commit_remove_proc, uc);
     else
-      GNUNET_NAMESTORE_record_remove(gns->ns, gns->pkey, name, NULL, 
&check_name_validity_and_commit_remove_proc, uc);
+      GNUNET_NAMESTORE_record_remove (namestore, pkey, name, NULL, 
&check_name_validity_and_commit_remove_proc, uc);
     g_free (name);
   }
 }
@@ -399,11 +452,6 @@
   /**
    *
    */
-  struct GNUNET_GNS_Context *gns;
-
-  /**
-   *
-   */
   char *path;
 };
 
@@ -416,10 +464,14 @@
   struct Remove_Context *rcc = cls;
   GtkDialog *dialog;
   GtkTreeIter it;
+
   if (GNUNET_SYSERR == success)
   {
-    char * message = _("Record could not be deleted:");
-    dialog = GTK_DIALOG(gtk_message_dialog_new (GTK_WINDOW 
(rcc->gns->main_window),
+    const char * message = _("Record could not be deleted:");
+    GtkWindow *main_window;
+  
+    main_window = GTK_WINDOW (GNUNET_SETUP_get_object ("GNUNET_setup_dialog"));
+    dialog = GTK_DIALOG(gtk_message_dialog_new (main_window,
                                      GTK_DIALOG_DESTROY_WITH_PARENT,
                                      GTK_MESSAGE_ERROR,
                                      GTK_BUTTONS_CLOSE,
@@ -427,13 +479,13 @@
                                      message,
                                      emsg));
 
-    g_signal_connect (dialog, "response", G_CALLBACK (gtk_widget_destroy), 
rcc->gns);
+    g_signal_connect (dialog, "response", G_CALLBACK (gtk_widget_destroy), 
NULL);
     gtk_widget_show_all (GTK_WIDGET(dialog));
   }
   else
   {
-    gtk_tree_model_get_iter_from_string(rcc->gns->tm, &it, rcc->path);
-    gtk_tree_store_remove (rcc->gns->ts, &it);
+    gtk_tree_model_get_iter_from_string(tm, &it, rcc->path);
+    gtk_tree_store_remove (ts, &it);
   }
   GNUNET_free (rcc->path);
   GNUNET_free (rcc);
@@ -441,7 +493,7 @@
 
 
 static void
-check_name_validity_and_remove (struct GNUNET_GNS_Context *gns, gchar *path)
+check_name_validity_and_remove (gchar *path)
 {
   GtkTreeIter it;
   GtkTreeIter parent;
@@ -460,18 +512,18 @@
   char          *n_value;
   char          *n_value_color;
 
-  gtk_tree_model_get_iter_from_string(gns->tm, &it, path);
-  gtk_tree_model_get(gns->tm, &it,
+  gtk_tree_model_get_iter_from_string(tm, &it, path);
+  gtk_tree_model_get(tm, &it,
                      GNS_TREESTORE_COL_NAME, &name,
                      -1);
 
-  if (TRUE == gtk_tree_model_iter_parent (gns->tm, &parent, &it))
+  if (TRUE == gtk_tree_model_iter_parent (tm, &parent, &it))
   {
     /* Removing a single record */
     GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
         "Removing single record for name `%s'\n", name);
 
-    gtk_tree_model_get(gns->tm, &it,
+    gtk_tree_model_get(tm, &it,
                        GNS_TREESTORE_COL_NAME, &n_name,
                        GNS_TREESTORE_COL_RECORD_TYPE, &n_type,
                        GNS_TREESTORE_COL_IS_PUBLIC, &n_public,
@@ -512,15 +564,14 @@
       memcpy ((void *) rd.data, n_value, rd.data_size);
 
       rcc = GNUNET_malloc(sizeof (struct Remove_Context));
-      rcc->gns = gns;
       rcc->path = strdup (path);
-      GNUNET_NAMESTORE_record_remove(gns->ns, gns->pkey, name, &rd, 
&check_name_validity_and_remove_proc, rcc);
+      GNUNET_NAMESTORE_record_remove (namestore, pkey, name, &rd, 
&check_name_validity_and_remove_proc, rcc);
       GNUNET_free ((void *) rd.data);
     }
     else
     {
-      gtk_tree_model_get_iter_from_string(gns->tm, &it, path);
-      gtk_tree_store_remove (gns->ts, &it);
+      gtk_tree_model_get_iter_from_string(tm, &it, path);
+      gtk_tree_store_remove (ts, &it);
     }
     g_free (n_name);
     g_free (n_exp_color);
@@ -532,9 +583,8 @@
   {
     /* Removing the whole name record */
     rcc = GNUNET_malloc(sizeof (struct Remove_Context));
-    rcc->gns = gns;
     rcc->path = strdup (path);
-    GNUNET_NAMESTORE_record_remove(gns->ns, gns->pkey, name, NULL, 
&check_name_validity_and_remove_proc, rcc);
+    GNUNET_NAMESTORE_record_remove (namestore, pkey, name, NULL, 
&check_name_validity_and_remove_proc, rcc);
   }
   g_free (name);
 }
@@ -551,12 +601,11 @@
  * @param user_data unused
  */
 void
-GNUNET_GNS_GTK_type_cellrenderercombo_changed_cb (GtkCellRendererCombo *combo,
+GNUNET_SETUP_gns_type_cellrenderercombo_changed_cb (GtkCellRendererCombo 
*combo,
                                                  gchar *path,
                                                  GtkTreeIter *new_iter,
                                                  gpointer user_data)
 {
-  struct GNUNET_GNS_Context *gns = user_data;
   GtkTreeIter it;
   GtkTreeIter child;
   guint type;
@@ -567,19 +616,19 @@
   void *data;
   size_t data_size;
 
-  gtk_tree_model_get(GTK_TREE_MODEL(gns->ls), new_iter, 0, &type, -1);
-  gtk_tree_model_get(GTK_TREE_MODEL(gns->ls), new_iter, 
GNS_TYPE_TO_NAME_LISTSTORE_COLUMN_TYPENAME, &type_str, -1);
+  gtk_tree_model_get(GTK_TREE_MODEL(ls), new_iter, 0, &type, -1);
+  gtk_tree_model_get(GTK_TREE_MODEL(ls), new_iter, 
GNS_TYPE_TO_NAME_LISTSTORE_COLUMN_TYPENAME, &type_str, -1);
 
 
   /* check if this is a new record */
-  gtk_tree_model_get_iter_from_string(gns->tm, &it, path);
-  gtk_tree_model_get(gns->tm, &it, GNS_TREESTORE_COL_IS_RECORD_ROW, 
&record_row, -1);
-  gtk_tree_model_get(gns->tm, &it, GNS_TREESTORE_COL_NAME, &name_str, -1);
+  gtk_tree_model_get_iter_from_string(tm, &it, path);
+  gtk_tree_model_get(tm, &it, GNS_TREESTORE_COL_IS_RECORD_ROW, &record_row, 
-1);
+  gtk_tree_model_get(tm, &it, GNS_TREESTORE_COL_NAME, &name_str, -1);
 
   if (GNUNET_YES == record_row)
   {
     /* Updating an existing record */
-    gtk_tree_store_set(gns->ts, &it,
+    gtk_tree_store_set(ts, &it,
                        GNS_TREESTORE_COL_RECORD_TYPE, type,
                        GNS_TREESTORE_COL_RECORD_TYPE_AS_STR, type_str,
                        -1);
@@ -588,7 +637,7 @@
   {
     /* Adding a new record */
 
-    gtk_tree_store_insert_with_values(gns->ts, &child , &it, 0,
+    gtk_tree_store_insert_with_values(ts, &child , &it, 0,
         GNS_TREESTORE_COL_NAME, name_str,
         GNS_TREESTORE_COL_NAME_IS_VISIBLE, FALSE,
         GNS_TREESTORE_COL_RECORD_TYPE, type,
@@ -599,34 +648,34 @@
         GNS_TREESTORE_COL_IS_RECORD_ROW, GNUNET_YES,
         GNS_TREESTORE_COL_NOT_DUMMY_ROW, GNUNET_YES,
         -1);
-    gtk_tree_view_expand_row (gns->tv, gtk_tree_model_get_path(gns->tm, &it), 
0);
+    gtk_tree_view_expand_row (tv, gtk_tree_model_get_path(tm, &it), 0);
 
   }
   GNUNET_free (type_str);
 
   /* check if value is still valid */
-  gtk_tree_model_get(gns->tm, &it, GNS_TREESTORE_COL_VAL_AS_STR, &value_str, 
-1);
+  gtk_tree_model_get(tm, &it, GNS_TREESTORE_COL_VAL_AS_STR, &value_str, -1);
   if (NULL != value_str)
   {
     if (GNUNET_OK != GNUNET_NAMESTORE_string_to_value (type,
-                                      value_str,
-                                      &data,
-                                      &data_size))
-      gtk_tree_store_set (gns->ts, &it, GNS_TREESTORE_COL_VAL_COLOR, "red", 
-1);
+                                                      value_str,
+                                                      &data,
+                                                      &data_size))
+      gtk_tree_store_set (ts, &it, GNS_TREESTORE_COL_VAL_COLOR, "red", -1);
     else
-      gtk_tree_store_set (gns->ts, &it, GNS_TREESTORE_COL_VAL_COLOR, NULL, -1);
+      gtk_tree_store_set (ts, &it, GNS_TREESTORE_COL_VAL_COLOR, NULL, -1);
     GNUNET_free (value_str);
   }
   else if (NULL == value_str)
   {
     /* Empty value field */
     if (GNUNET_YES == record_row)
-      gtk_tree_store_set (gns->ts, &it, GNS_TREESTORE_COL_VAL_COLOR, "red", 
-1);
+      gtk_tree_store_set (ts, &it, GNS_TREESTORE_COL_VAL_COLOR, "red", -1);
     else
-      gtk_tree_store_set (gns->ts, &child, GNS_TREESTORE_COL_VAL_COLOR, "red", 
-1);
+      gtk_tree_store_set (ts, &child, GNS_TREESTORE_COL_VAL_COLOR, "red", -1);
   }
 
-  check_name_validity_and_commit (gns, path, NULL);
+  check_name_validity_and_commit (path, NULL);
   GNUNET_free_non_null (name_str);
 }
 
@@ -640,19 +689,18 @@
  * @param user_data unused
  */
 void
-GNUNET_GNS_GTK_ispublic_cellrenderertoggle_toggled_cb (GtkCellRendererToggle 
*cell_renderer,
+GNUNET_SETUP_gns_ispublic_cellrenderertoggle_toggled_cb (GtkCellRendererToggle 
*cell_renderer,
                                                       gchar *path,
                                                       gpointer user_data)
 {
-  struct GNUNET_GNS_Context *gns = user_data;
   GtkTreeIter it;
   gboolean value;
 
-  gtk_tree_model_get_iter_from_string(gns->tm, &it, path);
-  gtk_tree_model_get(gns->tm, &it, GNS_TREESTORE_COL_IS_PUBLIC, &value, -1);
-  gtk_tree_store_set(gns->ts, &it, GNS_TREESTORE_COL_IS_PUBLIC, !value, -1);
+  gtk_tree_model_get_iter_from_string(tm, &it, path);
+  gtk_tree_model_get(tm, &it, GNS_TREESTORE_COL_IS_PUBLIC, &value, -1);
+  gtk_tree_store_set(ts, &it, GNS_TREESTORE_COL_IS_PUBLIC, !value, -1);
 
-  check_name_validity_and_commit (gns, path, NULL);
+  check_name_validity_and_commit (path, NULL);
 }
 
 
@@ -757,12 +805,11 @@
  * @param user_data unused
  */
 void
-GNUNET_GNS_GTK_expiration_cellrenderertext_edited_cb (GtkCellRendererText 
*renderer,
+GNUNET_SETUP_gns_expiration_cellrenderertext_edited_cb (GtkCellRendererText 
*renderer,
                                                      gchar *path,
                                                      gchar *new_text,
                                                      gpointer user_data)
 {
-  struct GNUNET_GNS_Context * gns = user_data;
   GtkTreeIter it;
   struct GNUNET_TIME_Absolute abstime;
   gboolean is_rel;
@@ -770,8 +817,8 @@
 
   if ((NULL != new_text))
   {
-    gtk_tree_model_get_iter_from_string(gns->tm, &it, path);
-    gtk_tree_model_get(gns->tm, &it,
+    gtk_tree_model_get_iter_from_string(tm, &it, path);
+    gtk_tree_model_get(tm, &it,
                        GNS_TREESTORE_COL_EXP_TIME_AS_STR, &old_text,
                        GNS_TREESTORE_COL_EXP_TIME_IS_REL, &is_rel,
                        -1);
@@ -787,7 +834,7 @@
     {
       if (GNUNET_SYSERR == check_time(new_text))
       {
-        gtk_tree_store_set (gns->ts, &it,
+        gtk_tree_store_set (ts, &it,
                             GNS_TREESTORE_COL_EXP_TIME_AS_STR, new_text,
                             GNS_TREESTORE_COL_EXP_TIME_COLOR, "red",
                             GNS_TREESTORE_COL_EXP_TIME, 0,
@@ -805,12 +852,12 @@
         abstime = convert_string_to_abs_time(new_text);
       }
     }
-    gtk_tree_store_set (gns->ts, &it,
+    gtk_tree_store_set (ts, &it,
                         GNS_TREESTORE_COL_EXP_TIME_AS_STR, new_text,
                         GNS_TREESTORE_COL_EXP_TIME, abstime.abs_value,
                         GNS_TREESTORE_COL_EXP_TIME_COLOR, NULL,
                         -1);
-    check_name_validity_and_commit (gns, path, NULL);
+    check_name_validity_and_commit (path, NULL);
   }
 }
 
@@ -826,13 +873,12 @@
  * @param user_data unused
  */
 void
-GNUNET_GNS_GTK_value_cellrenderertext_edited_cb (GtkCellRendererText *renderer,
+GNUNET_SETUP_gns_value_cellrenderertext_edited_cb (GtkCellRendererText 
*renderer,
                                                 gchar *path,
                                                 gchar *new_text,
                                                 gpointer user_data)
 {
-  struct GNUNET_GNS_Context *gns = user_data;
-  GtkTreeModel *tm = GTK_TREE_MODEL(gns->ts);
+  GtkTreeModel *tm = GTK_TREE_MODEL(ts);
   GtkTreeIter it;
   size_t data_size;
   void * data;
@@ -858,18 +904,18 @@
     }
 
     if (GNUNET_OK == GNUNET_NAMESTORE_string_to_value (type,
-                                      new_text,
-                                      &data,
-                                      &data_size))
+                                                      new_text,
+                                                      &data,
+                                                      &data_size))
     {
-      gtk_tree_store_set (gns->ts, &it, GNS_TREESTORE_COL_VAL_COLOR, NULL, -1);
-      gtk_tree_store_set (gns->ts, &it, GNS_TREESTORE_COL_VAL_AS_STR, 
new_text, -1);
-      check_name_validity_and_commit (gns, path, NULL);
+      gtk_tree_store_set (ts, &it, GNS_TREESTORE_COL_VAL_COLOR, NULL, -1);
+      gtk_tree_store_set (ts, &it, GNS_TREESTORE_COL_VAL_AS_STR, new_text, -1);
+      check_name_validity_and_commit (path, NULL);
     }
     else
     {
-      gtk_tree_store_set (gns->ts, &it, GNS_TREESTORE_COL_VAL_COLOR, "red", 
-1);
-      gtk_tree_store_set (gns->ts, &it, GNS_TREESTORE_COL_VAL_AS_STR, 
new_text, -1);
+      gtk_tree_store_set (ts, &it, GNS_TREESTORE_COL_VAL_COLOR, "red", -1);
+      gtk_tree_store_set (ts, &it, GNS_TREESTORE_COL_VAL_AS_STR, new_text, -1);
     }
   }
 }
@@ -885,15 +931,14 @@
  * @param user_data unused
  */
 void
-GNUNET_GNS_GTK_name_cellrenderertext_edited_cb (GtkCellRendererText *renderer,
+GNUNET_SETUP_gns_name_cellrenderertext_edited_cb (GtkCellRendererText 
*renderer,
                                                gchar *path,
                                                gchar *new_text,
                                                gpointer user_data)
 {
-  struct GNUNET_GNS_Context *gns = user_data;
   GtkTreeIter it;
   GtkTreeIter child;
-  GtkTreeModel *tm = GTK_TREE_MODEL(gns->ts);
+  GtkTreeModel *tm = GTK_TREE_MODEL(ts);
   int not_dummy;
   char *name;
 
@@ -908,16 +953,16 @@
   if (not_dummy == GNUNET_NO)
   {
     /* update name */
-    gtk_tree_store_set (gns->ts, &it,
+    gtk_tree_store_set (ts, &it,
                         GNS_TREESTORE_COL_NAME, new_text,
                         GNS_TREESTORE_COL_RECORD_TYPE, 0,
                         GNS_TREESTORE_COL_RECORD_TYPE_AS_STR, 
_(NEW_RECORD_STR),
                         GNS_TREESTORE_COL_NOT_DUMMY_ROW, GNUNET_YES,
                         -1);
-    check_name_validity_and_commit (gns, 
gtk_tree_model_get_string_from_iter(gns->tm, &it), name);
+    check_name_validity_and_commit (gtk_tree_model_get_string_from_iter(tm, 
&it), name);
 
     /* add a new dummy line */
-    gtk_tree_store_insert_with_values (gns->ts, &it,NULL, 0,
+    gtk_tree_store_insert_with_values (ts, &it,NULL, 0,
         GNS_TREESTORE_COL_NAME, _(NEW_NAME_STR),
         GNS_TREESTORE_COL_NAME_IS_VISIBLE, TRUE,
         GNS_TREESTORE_COL_RECORD_TYPE, 1,
@@ -928,32 +973,32 @@
   else
   {
     /* update name */
-    gtk_tree_store_set (gns->ts, &it, GNS_TREESTORE_COL_NAME, new_text, -1);
+    gtk_tree_store_set (ts, &it, GNS_TREESTORE_COL_NAME, new_text, -1);
 
-    if (TRUE == gtk_tree_model_iter_children (gns->tm, &child, &it))
+    if (TRUE == gtk_tree_model_iter_children (tm, &child, &it))
     {
       do
       {
-        gtk_tree_store_set (gns->ts, &child,
+        gtk_tree_store_set (ts, &child,
                            GNS_TREESTORE_COL_NAME, &new_text,
                            -1);
         GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, "New text for `%s' is `%s'\n", 
path, new_text);
       }
-      while (TRUE == gtk_tree_model_iter_next (gns->tm, &child));
+      while (TRUE == gtk_tree_model_iter_next (tm, &child));
     }
 
-    check_name_validity_and_commit (gns, 
gtk_tree_model_get_string_from_iter(gns->tm, &it), name);
+    check_name_validity_and_commit (gtk_tree_model_get_string_from_iter(tm, 
&it), name);
   }
 
   if (GNUNET_SYSERR == GNUNET_NAMESTORE_check_name (new_text))
   {
-    gtk_tree_store_set (gns->ts, &it,
+    gtk_tree_store_set (ts, &it,
                         GNS_TREESTORE_COL_NAME_COLOR, "red",
                         -1);
   }
   else
   {
-    gtk_tree_store_set (gns->ts, &it,
+    gtk_tree_store_set (ts, &it,
                         GNS_TREESTORE_COL_NAME_COLOR, NULL,
                         -1);
   }
@@ -971,24 +1016,23 @@
  * @return TRUE if a menu was activated
  */
 gboolean
-GNUNET_GNS_GTK_main_treeview_popup_menu_cb (GtkWidget *widget,
+GNUNET_SETUP_gns_main_treeview_popup_menu_cb (GtkWidget *widget,
                                            gpointer user_data)
 {  
-  struct GNUNET_GNS_Context *gns = user_data;
   GtkTreeModel *tm;
   GtkTreeIter it;
   GtkMenu *popup;
   GtkTreeSelection * ts;
   int not_dummy;
 
-  ts = gtk_tree_view_get_selection(gns->tv);
+  ts = gtk_tree_view_get_selection(tv);
   if (! gtk_tree_selection_get_selected (ts, &tm, &it))
     return TRUE;
-  gtk_tree_model_get(gns->tm, &it, GNS_TREESTORE_COL_NOT_DUMMY_ROW, 
&not_dummy, -1);
+  gtk_tree_model_get(tm, &it, GNS_TREESTORE_COL_NOT_DUMMY_ROW, &not_dummy, -1);
   if (GNUNET_NO == not_dummy)
     return TRUE;
 
-  popup  = GTK_MENU(gtk_builder_get_object (gns->builder, 
"GNUNET_GNS_GTK_delete_popup_menu"));
+  popup  = GTK_MENU (GNUNET_SETUP_get_object 
("GNUNET_SETUP_gns_delete_popup_menu"));
   gtk_widget_show_all (GTK_WIDGET(popup));
   gtk_menu_popup(popup, NULL, NULL, NULL, NULL, 0, 0);
   return TRUE;
@@ -996,13 +1040,13 @@
 
 
 static void
-set_relative_expiration_time (struct GNUNET_GNS_Context *gns, struct 
GNUNET_TIME_Relative reltime)
+set_relative_expiration_time (struct GNUNET_TIME_Relative reltime)
 {
   GtkTreeIter it;
   GtkTreeIter parent;
   GtkCellRendererText *renderer;
   GtkTreeModel *tm;
-  GtkTreeSelection * ts = gtk_tree_view_get_selection(gns->tv);
+  GtkTreeSelection * ts = gtk_tree_view_get_selection(tv);
   gboolean has_parent;
   struct GNUNET_TIME_Absolute abstime;
   char *path;
@@ -1024,76 +1068,75 @@
   abstime = GNUNET_TIME_absolute_add(GNUNET_TIME_absolute_get(), reltime);
 
   /* this is a single record */
-  renderer = GTK_CELL_RENDERER_TEXT((gtk_builder_get_object (gns->builder, 
"GNUNET_GNS_GTK_name_cellrenderertext")));
+  renderer = GTK_CELL_RENDERER_TEXT((GNUNET_SETUP_get_object 
("GNUNET_SETUP_gns_name_cellrenderertext")));
   path = gtk_tree_model_get_string_from_iter (tm, &it);
-  GNUNET_GNS_GTK_expiration_cellrenderertext_edited_cb (renderer,
+  GNUNET_SETUP_gns_expiration_cellrenderertext_edited_cb (renderer,
                                                         path,
                                                         convert_time_to_string 
(abstime),
-                                                        gns);
+                                                        NULL);
 }
 
 
 gboolean
-GNUNET_GNS_GTK_main_treeview_popup_menu_exp1d_cb (GtkWidget *widget,
+GNUNET_SETUP_gns_main_treeview_popup_menu_exp1d_cb (GtkWidget *widget,
                                             gpointer user_data)
 {
-  set_relative_expiration_time (user_data, GNUNET_TIME_UNIT_DAYS);
+  set_relative_expiration_time (GNUNET_TIME_UNIT_DAYS);
   return TRUE;
 }
 
 
 gboolean
-GNUNET_GNS_GTK_main_treeview_popup_menu_exp1w_cb (GtkWidget *widget,
+GNUNET_SETUP_gns_main_treeview_popup_menu_exp1w_cb (GtkWidget *widget,
                                             gpointer user_data)
 {
-  set_relative_expiration_time (user_data, GNUNET_TIME_UNIT_WEEKS);
+  set_relative_expiration_time (GNUNET_TIME_UNIT_WEEKS);
   return TRUE;
 }
 
 
 gboolean
-GNUNET_GNS_GTK_main_treeview_popup_menu_exp1y_cb (GtkWidget *widget,
+GNUNET_SETUP_gns_main_treeview_popup_menu_exp1y_cb (GtkWidget *widget,
                                             gpointer user_data)
 {
-  set_relative_expiration_time (user_data, GNUNET_TIME_UNIT_YEARS);
+  set_relative_expiration_time (GNUNET_TIME_UNIT_YEARS);
   return TRUE;
 }
 
 
 gboolean
-GNUNET_GNS_GTK_main_treeview_popup_menu_expinf_cb (GtkWidget *widget,
+GNUNET_SETUP_gns_main_treeview_popup_menu_expinf_cb (GtkWidget *widget,
                                             gpointer user_data)
 {
-  set_relative_expiration_time (user_data, GNUNET_TIME_UNIT_FOREVER_REL);
+  set_relative_expiration_time (GNUNET_TIME_UNIT_FOREVER_REL);
   return TRUE;
 }
 
 
 gboolean
-GNUNET_GNS_GTK_main_treeview_button_press_popup_menu_cb (GtkWidget *widget, 
GdkEventButton *event, gpointer user_data)
+GNUNET_SETUP_gns_main_treeview_button_press_popup_menu_cb (GtkWidget *widget, 
GdkEventButton *event, gpointer user_data)
 {
   /* Check for right click*/
   if (NULL == widget)
     return FALSE;
   if (event->type == GDK_BUTTON_PRESS  &&  event->button == 3)
-    GNUNET_GNS_GTK_main_treeview_popup_menu_cb (widget, user_data);
+    GNUNET_SETUP_gns_main_treeview_popup_menu_cb (widget, user_data);
   return FALSE;
 }
 
 
 gboolean
-GNUNET_GNS_GTK_main_treeview_key_press_popup_menu_cb (GtkWidget *widget, 
GdkEventKey  *event, gpointer user_data)
+GNUNET_SETUP_gns_main_treeview_key_press_popup_menu_cb (GtkWidget *widget, 
GdkEventKey  *event, gpointer user_data)
 {
   /* Check for delete key */
   if ((event->type == GDK_KEY_PRESS) && (GDK_KEY_Delete == event->keyval))
-    GNUNET_GNS_GTK_main_treeview_popup_menu_cb (widget, user_data);
+    GNUNET_SETUP_gns_main_treeview_popup_menu_cb (widget, user_data);
   return FALSE;
 }
 
 
 struct ZoneIteration_Context
 {
-  struct GNUNET_GNS_Context *gns;
   struct GNUNET_CRYPTO_ShortHashCode zone;
   struct GNUNET_NAMESTORE_ZoneIterator * it;
   char *label;
@@ -1101,25 +1144,24 @@
 
 
 void
-GNUNET_GNS_GTK_delete_popup_menu_delete_cb (GtkMenuItem *menuitem,
+GNUNET_SETUP_gns_delete_popup_menu_delete_cb (GtkMenuItem *menuitem,
                                                  gpointer user_data)
 {
-  struct GNUNET_GNS_Context *gns = user_data;
   GtkTreeIter it;
   GtkTreeModel *tm;
   GtkTreeSelection * ts;
   int not_dummy;
   char *path;
 
-  ts = gtk_tree_view_get_selection(gns->tv);
+  ts = gtk_tree_view_get_selection(tv);
   if (gtk_tree_selection_get_selected (ts, &tm, &it))
   {
     gtk_tree_model_get(tm, &it, GNS_TREESTORE_COL_NOT_DUMMY_ROW, &not_dummy, 
-1);
     if (GNUNET_NO == not_dummy)
       return; /* do not delete the dummy line */
 
-    path = gtk_tree_model_get_string_from_iter (gns->tm, &it);
-    check_name_validity_and_remove(gns, path);
+    path = gtk_tree_model_get_string_from_iter (tm, &it);
+    check_name_validity_and_remove(path);
     g_free (path);
   }
 }
@@ -1140,7 +1182,7 @@
   GtkEntry *pseu_entry;
   int c;
   int time_is_relative;
-
+  struct GNUNET_CRYPTO_ShortHashAsciiEncoded shenc;
   char *exp;
   char *val;
   char * type_str;
@@ -1150,28 +1192,27 @@
   GNUNET_assert (zc_ctx != NULL);
   if ((NULL == zone_key) && (NULL == name))
   {
-    struct GNUNET_CRYPTO_ShortHashAsciiEncoded shenc;
     GNUNET_CRYPTO_short_hash_to_enc(&zc_ctx->zone, &shenc);
     GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, "Zone `%s 'iteration done\n", &shenc);
-    pseu_entry = GTK_ENTRY((gtk_builder_get_object (zc_ctx->gns->builder, 
"GNUNET_GNS_GTK_pseu_entry")));
+    pseu_entry = GTK_ENTRY((GNUNET_SETUP_get_object 
("GNUNET_SETUP_gns_pseu_entry")));
     if (zc_ctx->label == NULL)
       GNUNET_asprintf(&zc_ctx->label, "%s", PSEU_EMPTY_STR);
     gtk_entry_set_text (pseu_entry, zc_ctx->label);
-    zc_ctx->gns->iteration = GNUNET_NO;
+    iteration = GNUNET_NO;
     GNUNET_free (zc_ctx->label);
     GNUNET_free (zc_ctx);
+
+    /* FIXME: hide message 'loading' and make tree view visible! */
+
     return;
   }
 
 
-  struct GNUNET_CRYPTO_ShortHashAsciiEncoded shenc;
   GNUNET_CRYPTO_short_hash_to_enc(&zc_ctx->zone, &shenc);
   GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, "Zone `%s' iteration result `%s', %u 
records\n",
       &shenc, name, rd_count);
-
-  GNUNET_assert(GTK_IS_TREE_STORE(zc_ctx->gns->ts));
-  gtk_tree_store_append(zc_ctx->gns->ts, &iter_name, NULL);
-  gtk_tree_store_set(zc_ctx->gns->ts, &iter_name,
+  gtk_tree_store_append (ts, &iter_name, NULL);
+  gtk_tree_store_set(ts, &iter_name,
                      GNS_TREESTORE_COL_NAME, name,
                      GNS_TREESTORE_COL_NAME_IS_VISIBLE, TRUE,
                      GNS_TREESTORE_COL_RECORD_TYPE, 0,
@@ -1182,7 +1223,7 @@
 
   if (GNUNET_SYSERR == GNUNET_NAMESTORE_check_name (name))
   {
-    gtk_tree_store_set (zc_ctx->gns->ts, &iter_name,
+    gtk_tree_store_set (ts, &iter_name,
                         GNS_TREESTORE_COL_NAME_COLOR, "red",
                         -1);
   }
@@ -1237,22 +1278,22 @@
     if ((0 ==strcmp (name, ROOT_STR)) && (GNUNET_NAMESTORE_TYPE_PSEU == 
rd[c].record_type))
     {
         zc_ctx->label = strdup(val);
-        zc_ctx->gns->iteration = GNUNET_YES;
+        iteration = GNUNET_YES;
     }
     else
     {
-      gtk_tree_store_insert_with_values(zc_ctx->gns->ts, &iter_record , 
&iter_name, 0,
-                                         GNS_TREESTORE_COL_NAME, name,
-                                         GNS_TREESTORE_COL_NAME_IS_VISIBLE, 
FALSE,
-                                         GNS_TREESTORE_COL_RECORD_TYPE, 
rd[c].record_type,
-                                         GNS_TREESTORE_COL_RECORD_TYPE_AS_STR, 
type_str,
-                                         GNS_TREESTORE_COL_IS_PUBLIC, public,
-                                         GNS_TREESTORE_COL_EXP_TIME, exp_t,
-                                         GNS_TREESTORE_COL_EXP_TIME_AS_STR, 
exp,
-                                         GNS_TREESTORE_COL_EXP_TIME_IS_REL, 
time_is_relative,
-                                         GNS_TREESTORE_COL_VAL_AS_STR, val,
+      gtk_tree_store_insert_with_values (ts, &iter_record , &iter_name, 0,
+                                        GNS_TREESTORE_COL_NAME, name,
+                                        GNS_TREESTORE_COL_NAME_IS_VISIBLE, 
FALSE,
+                                        GNS_TREESTORE_COL_RECORD_TYPE, 
rd[c].record_type,
+                                        GNS_TREESTORE_COL_RECORD_TYPE_AS_STR, 
type_str,
+                                        GNS_TREESTORE_COL_IS_PUBLIC, public,
+                                        GNS_TREESTORE_COL_EXP_TIME, exp_t,
+                                        GNS_TREESTORE_COL_EXP_TIME_AS_STR, exp,
+                                        GNS_TREESTORE_COL_EXP_TIME_IS_REL, 
time_is_relative,
+                                        GNS_TREESTORE_COL_VAL_AS_STR, val,
                                          GNS_TREESTORE_COL_IS_RECORD_ROW, 
GNUNET_YES,
-                                         GNS_TREESTORE_COL_NOT_DUMMY_ROW, 
GNUNET_YES,
+                                        GNS_TREESTORE_COL_NOT_DUMMY_ROW, 
GNUNET_YES,
                                          -1);
     }
     GNUNET_free (type_str);
@@ -1264,57 +1305,24 @@
 }
 
 
-/**
- * The zone treeview was realized.   Setup the model.
- *
- * @param widget the widget
- * @param user_data unused
- */
-void
-GNUNET_GNS_GTK_main_treeview_realize_cb (GtkWidget *widget,
-                                        gpointer user_data)
-{
-  struct GNUNET_GNS_Context *gns = user_data;
-  struct ZoneIteration_Context *zc_ctx;
-  GtkTreeIter toplevel;
-
-  /* Append a top level row and leave it empty */
-  gtk_tree_store_insert_with_values(gns->ts, &toplevel, NULL, 0,
-                                     GNS_TREESTORE_COL_NAME, _(NEW_NAME_STR),
-                                     GNS_TREESTORE_COL_NAME_IS_VISIBLE, TRUE,
-                                     GNS_TREESTORE_COL_RECORD_TYPE, 1,
-                                     GNS_TREESTORE_COL_IS_RECORD_ROW, 
GNUNET_NO,
-                                     GNS_TREESTORE_COL_NOT_DUMMY_ROW, 
GNUNET_NO,
-                                     -1);
-
-  zc_ctx = GNUNET_malloc (sizeof (struct ZoneIteration_Context));
-  zc_ctx->gns = user_data;
-  zc_ctx->zone = gns->zone;
-  zc_ctx->it = GNUNET_NAMESTORE_zone_iteration_start(gns->ns, &gns->zone,
-      GNUNET_NAMESTORE_RF_NONE,
-      GNUNET_NAMESTORE_RF_NONE,
-      &zone_iteration_proc,
-      zc_ctx);
-}
-
-
-
 static void 
 pseu_change_cont (void *cls,
                  int32_t success,
                  const char *emsg)
 {
-  struct GNUNET_GNS_Context *gns = cls;
   GtkWidget *dialog;
   if (GNUNET_SYSERR == success)
   {
-  GNUNET_log (GNUNET_ERROR_TYPE_ERROR, _("New Pseudonym could not be set: 
`%s'\n"), emsg);
-  dialog = gtk_message_dialog_new (GTK_WINDOW (gns->main_window),
-                                   GTK_DIALOG_DESTROY_WITH_PARENT,
-                                   GTK_MESSAGE_ERROR,
-                                   GTK_BUTTONS_CLOSE,
-                                   _("New Pseudonym could not be set: `%s'\n"),
-                                   emsg);
+    GtkWindow *main_window;
+  
+    main_window = GTK_WINDOW (GNUNET_SETUP_get_object ("GNUNET_setup_dialog"));
+    GNUNET_log (GNUNET_ERROR_TYPE_ERROR, _("New Pseudonym could not be set: 
`%s'\n"), emsg);
+    dialog = gtk_message_dialog_new (main_window,
+                                    GTK_DIALOG_DESTROY_WITH_PARENT,
+                                    GTK_MESSAGE_ERROR,
+                                    GTK_BUTTONS_CLOSE,
+                                    _("New Pseudonym could not be set: 
`%s'\n"),
+                                    emsg);
     g_signal_connect_swapped (dialog, "response",
                               G_CALLBACK (gtk_widget_destroy),
                               dialog);
@@ -1323,41 +1331,8 @@
 }
 
 
-/**
- * Task run on shutdown.
- *
- * @param cls unused
- * @param tc scheduler context, unused
- */
-static void
-shutdown_task (void *cls, const struct GNUNET_SCHEDULER_TaskContext *tc)
-{
-
-  struct GNUNET_GNS_Context *gns = cls;
-  if (NULL == gns)
-    return;
-  if (NULL != gns->ns)
-  {
-    GNUNET_NAMESTORE_disconnect (gns->ns, GNUNET_NO);
-    gns->ns = NULL;
-  }
-  if (NULL != gns->pkey)
-  {
-    GNUNET_CRYPTO_rsa_key_free (gns->pkey);
-    gns->pkey = NULL;
-  }
-  if (NULL != zonekey_directory)
-  {
-    GNUNET_free (zonekey_directory);
-    zonekey_directory = NULL;
-  }
-  GNUNET_free (gns);
-}
-
-
-
 gboolean
-GNUNET_GNS_GTK_pseu_entry_enter_cb (GtkWidget *widget,
+GNUNET_SETUP_gns_pseu_entry_enter_cb (GtkWidget *widget,
                                     GdkEvent  *event,
                                     gpointer   user_data)
 {
@@ -1383,15 +1358,14 @@
  * @param user_data unused
  */
 void
-GNUNET_GNS_GTK_pseu_entry_changed_cb (GtkEditable *editable,
+GNUNET_SETUP_gns_pseu_entry_changed_cb (GtkEditable *editable,
                                      gpointer user_data)
 {
-  struct GNUNET_GNS_Context *gns = user_data;
   struct GNUNET_NAMESTORE_RecordData rd;
   const gchar * pseu;
 
   pseu = gtk_entry_get_text (GTK_ENTRY(editable));
-  if ((pseu != NULL) && (0 != strcmp (pseu, PSEU_EMPTY_STR)) && (0 != strcmp 
("", pseu)) && (GNUNET_NO == gns->iteration))
+  if ((pseu != NULL) && (0 != strcmp (pseu, PSEU_EMPTY_STR)) && (0 != strcmp 
("", pseu)) && (GNUNET_NO == iteration))
   {
 
     rd.record_type = GNUNET_NAMESTORE_TYPE_PSEU;
@@ -1399,7 +1373,7 @@
     rd.flags = GNUNET_NAMESTORE_RF_AUTHORITY;
     rd.data_size = strlen (pseu) + 1;
     rd.data = strdup (pseu);
-    GNUNET_NAMESTORE_record_create(gns->ns, gns->pkey, "+", &rd, 
pseu_change_cont, gns);
+    GNUNET_NAMESTORE_record_create (namestore, pkey, "+", &rd, 
&pseu_change_cont, NULL);
     GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, "New Pseudonym is `%s' %u\n", (char 
*) rd.data, rd.data_size);
   }
   else if ((0 != strcmp (pseu, PSEU_EMPTY_STR)) && ((pseu == NULL) || (0 == 
strcmp ("", pseu))))
@@ -1409,138 +1383,8 @@
 
 }
 
-/**
- * The user toggled the 'autoshort' option.  Update the configuration.
- *
- * @param checkmenuitem the menu item
- * @param user_data unused
- */
-void
-GNUNET_GNS_GTK_autoshort_imagemenuitem_toggled_cb (GtkCheckMenuItem 
*checkmenuitem,
-                                                  gpointer user_data)
-{
-  struct GNUNET_GNS_Context *gns = user_data;
-  GtkWidget *dialog;
-  struct GNUNET_CONFIGURATION_Handle *cfg = (struct 
GNUNET_CONFIGURATION_Handle *) get_configuration();
 
-  gboolean state = gtk_check_menu_item_get_active (gns->shorten_menu);
-  if (TRUE == state)
-    GNUNET_CONFIGURATION_set_value_string(cfg,"gns", "AUTO_IMPORT_PKEY","YES");
-  else
-    GNUNET_CONFIGURATION_set_value_string(cfg,"gns", "AUTO_IMPORT_PKEY","NO");
-
-  char * cfgfile = strdup (GNUNET_GTK_main_loop_get_configuration_file(ml));
-  if (GNUNET_SYSERR == GNUNET_CONFIGURATION_write(cfg, cfgfile))
-  {
-    GNUNET_log (GNUNET_ERROR_TYPE_ERROR, _("Changes to autoshorten could not 
be written to configuration file: `%s'\n"), cfgfile);
-    dialog = gtk_message_dialog_new (GTK_WINDOW (gns->main_window),
-                                     GTK_DIALOG_DESTROY_WITH_PARENT,
-                                     GTK_MESSAGE_ERROR,
-                                     GTK_BUTTONS_CLOSE,
-                                     _("Changes to autoshorten option could 
not be written to configuration file: `%s'\n"),
-                                     cfgfile);
-    g_signal_connect_swapped (dialog, "response",
-                              G_CALLBACK (gtk_widget_destroy),
-                              dialog);
-    gtk_widget_show_all (dialog);
-  }
-  GNUNET_free (cfgfile);
-}
-
-
 /**
- * The user selected 'NEW' in the menu.  Open a dialog to enter a filename
- * to create a new zone (for editing).
- *
- * @param checkmenuitem the menu item
- * @param user_data unused
- */
-void
-GNUNET_GNS_GTK_new_imagemenuitem_activate_cb (GtkMenuItem *menuitem,
-                                             gpointer user_data)
-{
-  GNUNET_break (0); // FIXME, not implemented
-}
-
-
-/**
- * Function called from the open-directory dialog upon completion.
- *
- * @param dialog the pseudonym selection dialog
- * @param response_id response code from the dialog
- * @param user_data the builder of the dialog
- */
-void
-GNUNET_GNS_GTK_zone_open_dialog_response_cb (GtkDialog * dialog,
-                                            gint response_id,
-                                            gpointer user_data)
-{
-  char *filename;
-
-  if (GTK_RESPONSE_OK != response_id)
-  {
-    gtk_widget_destroy (GTK_WIDGET (dialog));
-    g_object_unref (G_OBJECT (dialog));
-    return;
-  }
-  filename = GNUNET_GTK_filechooser_get_filename_utf8 (GTK_FILE_CHOOSER 
(dialog));
-  gtk_widget_destroy (GTK_WIDGET (dialog));
-  g_object_unref (G_OBJECT (dialog));
-
-  /* FIXME: move to new zone 'filename' */
-  fprintf (stderr, "Got zone `%s'\n", filename);
-  GNUNET_free (filename);  
-}
-
-
-/**
- * The user selected 'OPEN' in the menu.  Open a dialog to select
- * a different zonefile (for editing).
- *
- * @param checkmenuitem the menu item
- * @param user_data unused
- */
-void
-GNUNET_GNS_GTK_open_imagemenuitem_activate_cb (GtkMenuItem *menuitem,
-                                              gpointer user_data)
-{
-  GtkWidget *ad;
-  GtkBuilder *builder;
-  GtkWidget *toplevel;
-  GtkFileFilter *ff;
-  GtkFileChooser *fc;
-
-  builder =
-    GNUNET_GTK_get_new_builder ("gnunet_gns_gtk_zone_open.glade", NULL);
-  if (NULL == builder)
-  {
-    GNUNET_break (0);
-    return;
-  }
-  /* This file filter could be set with glade if we use gtk3
-   * With gtk2 we have to set it manually */
-  ff = GTK_FILE_FILTER (gtk_builder_get_object
-      (builder, "GNUNET_GNS_GTK_zone_open_filefilter"));
-  gtk_file_filter_add_pattern (ff, "*.zkey");
-
-  ad = GTK_WIDGET (gtk_builder_get_object
-                   (builder, "GNUNET_GNS_GTK_zone_open_filechooserdialog"));
-
-  if (GTK_IS_FILE_CHOOSER(ad))
-  {
-    fc = GTK_FILE_CHOOSER(ad);
-    if (NULL != fc)
-      gtk_file_chooser_set_current_folder(fc, zonekey_directory);
-  }
-
-  toplevel = gtk_widget_get_toplevel (GTK_WIDGET (menuitem));
-  if (GTK_IS_WINDOW (toplevel))
-    gtk_window_set_transient_for (GTK_WINDOW (ad), GTK_WINDOW (toplevel));
-  gtk_window_present (GTK_WINDOW (ad));
-}
-
-
-/**
  * The user clicked on the 'copy' button.  Copy the full string
  * with the hash of our public key to the clipboard.
  *
@@ -1548,7 +1392,7 @@
  * @param user_data unused
  */
 void
-GNUNET_GNS_GTK_public_key_copy_button_clicked_cb (GtkButton *button,
+GNUNET_SETUP_gns_public_key_copy_button_clicked_cb (GtkButton *button,
                                                  gpointer user_data)
 {
   GtkClipboard *cb;
@@ -1558,161 +1402,128 @@
 }
 
 
-
 /**
- * Callback invoked if the application is supposed to exit (via menu).
- *
- * @param menuitem the quit menu
- * @param user_data unused
+ * Connect to the namestore and initialize the main
+ * GNS tree view.
  */
 void
-GNUNET_GNS_GTK_quit_imagemenuitem_activate_cb (GtkMenuItem *menuitem,
-                                              gpointer user_data)
+GNUNET_SETUP_gns_init ()
 {
-  GNUNET_GTK_tray_icon_destroy ();
-  GNUNET_GTK_main_loop_quit (ml);
-  GNUNET_SCHEDULER_add_now (&shutdown_task, user_data);
-}
-
-
-/**
- * Callback invoked if the application is supposed to exit (via window-close).
- *
- * @param widget the main window
- * @param event deletion event
- * @param user_data unused
- */
-void
-GNUNET_GNS_GTK_main_window_delete_event_cb (GtkWidget *widget,
-                                           GdkEvent *event,
-                                           gpointer user_data)
-{
-  GNUNET_GTK_tray_icon_destroy ();
-  GNUNET_GTK_main_loop_quit (ml);
-  GNUNET_SCHEDULER_add_now (&shutdown_task, user_data);
-}
-
-
-static void
-close_error_box (GtkDialog *dialog,
-                gint       response_id,
-                gpointer   user_data)
-{
-  gtk_widget_destroy (GTK_WIDGET(dialog));
-  GNUNET_GNS_GTK_shutdown (user_data);
-}
-
-
-static void
-namestore_service_check (void *cls, const struct GNUNET_SCHEDULER_TaskContext 
*tc)
-{
-  struct GNUNET_GNS_Context *gns = NULL;
   struct GNUNET_CRYPTO_ShortHashAsciiEncoded shenc;
-  GtkWidget *dialog;
   char *label;
   char *keyfile;
   char *servicehome;
+  struct ZoneIteration_Context *zc_ctx;
+  GtkTreeIter toplevel;
 
-  gns = GNUNET_malloc (sizeof (struct GNUNET_GNS_Context));
-
-  if ((tc->reason & GNUNET_SCHEDULER_REASON_TIMEOUT) != 0)
-  {
-   char * message = _("Namestore service is not running!\n");
-   GNUNET_log (GNUNET_ERROR_TYPE_ERROR, message);
-   dialog = gtk_message_dialog_new (GTK_WINDOW (gns->main_window),
-                                    GTK_DIALOG_DESTROY_WITH_PARENT,
-                                    GTK_MESSAGE_ERROR,
-                                    GTK_BUTTONS_CLOSE,
-                                    "%s",
-                                    message);
-
-   g_signal_connect (dialog, "response", G_CALLBACK(close_error_box), gns);
-   gtk_widget_show_all (dialog);
-   return;
-  }
-
-  if (GNUNET_OK != GNUNET_CONFIGURATION_get_value_filename (get_configuration 
(),
+  if (GNUNET_OK != GNUNET_CONFIGURATION_get_value_filename (cfg,
                                                             "PATHS",
                                                             "SERVICEHOME",
                                                             &servicehome))
   {
-    GNUNET_asprintf(&zonekey_directory, "");
+    GNUNET_asprintf (&zonekey_directory, "");
   }
   else
   {
-    GNUNET_asprintf(&zonekey_directory, "%s%s%s",servicehome, 
DIR_SEPARATOR_STR, "gns");
+    GNUNET_asprintf (&zonekey_directory, "%s%s%s",servicehome, 
DIR_SEPARATOR_STR, "gns");
     GNUNET_free (servicehome);
   }
 
   /* setup crypto keys */
-  if (GNUNET_OK != GNUNET_CONFIGURATION_get_value_filename (get_configuration 
(),
+  if (GNUNET_OK != GNUNET_CONFIGURATION_get_value_filename (cfg,
                                                             "gns",
                                                             "ZONEKEY",
                                                             &keyfile))
   {
     GNUNET_log (GNUNET_ERROR_TYPE_ERROR,
                 _("Option `%s' missing in section `%s'\n"), "ZONEKEY", "gns");
+    /* FIXME: display error message in GNS tab! */
     return;
   }
   else
     GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, "Using `%s'\n", keyfile);
-  gns->pkey = GNUNET_CRYPTO_rsa_key_create_from_file (keyfile);
+  pkey = GNUNET_CRYPTO_rsa_key_create_from_file (keyfile);
   GNUNET_free (keyfile);
   keyfile = NULL;
-  if (NULL == gns->pkey)
+  if (NULL == pkey)
   {
     GNUNET_log (GNUNET_ERROR_TYPE_ERROR,
                 _("Failed to read or create private zone key\n"));
+    /* FIXME: display error message in GNS tab! */
     return;
   }
-  GNUNET_CRYPTO_rsa_key_get_public (gns->pkey, &gns->pubkey);
-  GNUNET_CRYPTO_short_hash (&gns->pubkey,
+  GNUNET_CRYPTO_rsa_key_get_public (pkey, &pubkey);
+  GNUNET_CRYPTO_short_hash (&pubkey,
                             sizeof (struct 
GNUNET_CRYPTO_RsaPublicKeyBinaryEncoded),
-                            &gns->zone);
-  GNUNET_CRYPTO_short_hash_to_enc(&gns->zone, &shenc);
+                            &zone);
+  GNUNET_CRYPTO_short_hash_to_enc(&zone, &shenc);
 
   /* connect to namestore */
-  gns->ns = GNUNET_NAMESTORE_connect (get_configuration ());
-  if (NULL == gns->ns)
+  namestore = GNUNET_NAMESTORE_connect (cfg);
+  if (NULL == namestore)
   {
     GNUNET_log (GNUNET_ERROR_TYPE_ERROR,
                 _("Failed to connect to namestore\n"));
+    /* FIXME: display error message in GNS tab! */
     return;
   }
-
-  /* setup gui */
-  if (GNUNET_OK != GNUNET_GTK_main_loop_build_window (ml, gns))
-  {
-    GNUNET_break (0);
-    GNUNET_SCHEDULER_add_now (&shutdown_task, gns);
-    return;
-  }
-  gns->builder = GNUNET_GTK_main_loop_get_builder(ml);
-  gns->main_window = GTK_WIDGET (get_object ("GNUNET_GNS_GTK_main_window"));
-  gns->ts  = GTK_TREE_STORE (gtk_builder_get_object (gns->builder, 
"GNUNET_GNS_GTK_treestore"));
-  gns->ls =  GTK_LIST_STORE (gtk_builder_get_object (gns->builder, 
"GNUNET_GNS_GTK_type_liststore"));
-  gns->tv =  GTK_TREE_VIEW (gtk_builder_get_object (gns->builder, 
"GNUNET_GNS_GTK_main_treeview"));
-  gns->tm = GTK_TREE_MODEL(gns->ts);
-  gns->shorten_menu =  GTK_CHECK_MENU_ITEM(gtk_builder_get_object 
(gns->builder, "GNUNET_GNS_GTK_autoshort_imagemenuitem"));
-  if (GNUNET_YES == GNUNET_CONFIGURATION_get_value_yesno (get_configuration (),
-                                                            "gns",
-                                                            
"AUTO_IMPORT_PKEY"))
-    gtk_check_menu_item_set_active (gns->shorten_menu, TRUE);
-  else
-    gtk_check_menu_item_set_active (gns->shorten_menu, FALSE);
-
-  /* TODO: implements menus */
-  gtk_widget_set_visible (GTK_WIDGET (gtk_builder_get_object (gns->builder, 
"GNUNET_GNS_GTK_new_imagemenuitem")), FALSE);
-  gtk_widget_set_visible (GTK_WIDGET (gtk_builder_get_object (gns->builder, 
"GNUNET_GNS_GTK_open_imagemenuitem")), FALSE);
-
+  /* FIXME: adjust names below... */
+  ts  = GTK_TREE_STORE (GNUNET_SETUP_get_object 
("GNUNET_SETUP_gns_treestore"));
+  ls =  GTK_LIST_STORE (GNUNET_SETUP_get_object 
("GNUNET_SETUP_gns_type_liststore"));
+  tv =  GTK_TREE_VIEW (GNUNET_SETUP_get_object 
("GNUNET_SETUP_gns_main_treeview"));
+  tm = GTK_TREE_MODEL(ts);  
   zone_as_string = GNUNET_strdup ((char *) &shenc);
   label = g_markup_printf_escaped (_("<b>Editing zone %s</b>"),
                                   zone_as_string);
-  gtk_label_set_markup (GTK_LABEL (get_object ("GNUNET_GNS_GTK_zone_label")),
+  gtk_label_set_markup (GTK_LABEL (GNUNET_SETUP_get_object 
("GNUNET_SETUP_gns_zone_label")),
                        label);
   g_free (label);
 
+  /* Load zone from namestore! */
+
+  /* Append a top level row and leave it empty */
+  gtk_tree_store_insert_with_values (ts, &toplevel, NULL, 0,
+                                     GNS_TREESTORE_COL_NAME, _(NEW_NAME_STR),
+                                     GNS_TREESTORE_COL_NAME_IS_VISIBLE, TRUE,
+                                     GNS_TREESTORE_COL_RECORD_TYPE, 1,
+                                     GNS_TREESTORE_COL_IS_RECORD_ROW, 
GNUNET_NO,
+                                     GNS_TREESTORE_COL_NOT_DUMMY_ROW, 
GNUNET_NO,
+                                     -1);
+
+  zc_ctx = GNUNET_malloc (sizeof (struct ZoneIteration_Context));
+  zc_ctx->zone = zone;
+  zc_ctx->it = GNUNET_NAMESTORE_zone_iteration_start (namestore, &zone,
+                                                     GNUNET_NAMESTORE_RF_NONE,
+                                                     GNUNET_NAMESTORE_RF_NONE,
+                                                     &zone_iteration_proc,
+                                                     zc_ctx);
+  /* FIXME: show message 'loading', when done make tree view visible! */
 }
 
 
+/**
+ * Disconnect from the namestore and clean up the main
+ * GNS tree view.
+ */
+void
+GNUNET_SETUP_gns_done ()
+{
+  if (NULL != namestore)
+  {
+    GNUNET_NAMESTORE_disconnect (namestore, GNUNET_NO);
+    namestore = NULL;
+  }
+  if (NULL != pkey)
+  {
+    GNUNET_CRYPTO_rsa_key_free (pkey);
+    pkey = NULL;
+  }
+  if (NULL != zonekey_directory)
+  {
+    GNUNET_free (zonekey_directory);
+    zonekey_directory = NULL;
+  }
+}
+
+
 /* end of gnunet-setup-gns.c */

Added: gnunet-gtk/src/setup/gnunet-setup-gns.h
===================================================================
--- gnunet-gtk/src/setup/gnunet-setup-gns.h                             (rev 0)
+++ gnunet-gtk/src/setup/gnunet-setup-gns.h     2012-06-23 20:54:26 UTC (rev 
22230)
@@ -0,0 +1,47 @@
+/*
+     This file is part of GNUnet.
+     (C) 2012 Christian Grothoff (and other contributing authors)
+
+     GNUnet is free software; you can redistribute it and/or modify
+     it under the terms of the GNU General Public License as published
+     by the Free Software Foundation; either version 2, or (at your
+     option) any later version.
+
+     GNUnet is distributed in the hope that it will be useful, but
+     WITHOUT ANY WARRANTY; without even the implied warranty of
+     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+     General Public License for more details.
+
+     You should have received a copy of the GNU General Public License
+     along with GNUnet; see the file COPYING.  If not, write to the
+     Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+     Boston, MA 02111-1307, USA.
+*/
+
+/**
+ * @file src/setup/gnunet-setup-gns.h
+ * @brief gns interaction management
+ * @author Christian Grothoff
+ */
+#ifndef GNUNET_SETUP_GNS_H
+#define GNUNET_SETUP_GNS_H
+
+#include "gnunet-setup.h"
+
+
+/**
+ * Connect to the namestore and initialize the main
+ * GNS tree view.
+ */
+void
+GNUNET_SETUP_gns_init (void);
+
+
+/**
+ * Disconnect from the namestore and clean up the main
+ * GNS tree view.
+ */
+void
+GNUNET_SETUP_gns_done (void);
+
+#endif

Modified: gnunet-gtk/src/setup/gnunet-setup.c
===================================================================
--- gnunet-gtk/src/setup/gnunet-setup.c 2012-06-23 18:57:21 UTC (rev 22229)
+++ gnunet-gtk/src/setup/gnunet-setup.c 2012-06-23 20:54:26 UTC (rev 22230)
@@ -28,6 +28,7 @@
 #endif
 #include "gnunet-setup.h"
 #include "gnunet-setup-options.h"
+#include "gnunet-setup-gns.h"
 #include <regex.h>
 
 /**
@@ -317,6 +318,7 @@
   }
   GNUNET_GTK_main_loop_quit (ml);
   ml = NULL;
+  GNUNET_SETUP_gns_done ();
   if (GNUNET_OK != write_configuration ())
     gret = 1;
   cfg = NULL;
@@ -349,15 +351,17 @@
 {
   if (GNUNET_OK != write_configuration ())
     return; /* no point in re-starting namestore ... */
+  GNUNET_SETUP_gns_done ();
   if (NULL != namestore)
   {
     GNUNET_break (0 == GNUNET_OS_process_kill (namestore, SIGTERM));
     GNUNET_OS_process_destroy (namestore);
     namestore = NULL;
   }
-  /* FIXME: start namestore */
-  /* FIXME: refresh namestore model! */
-  GNUNET_break (0); // not implemented...
+  namestore =
+    GNUNET_OS_start_process (GNUNET_YES, NULL, NULL, 
"gnunet-service-namestore",
+                            "gnunet-service-namestore", NULL);
+  GNUNET_SETUP_gns_init ();
 }
 
 
@@ -396,8 +400,12 @@
   main_window = GTK_WIDGET (GNUNET_SETUP_get_object ("GNUNET_setup_dialog"));
   resolver =
     GNUNET_OS_start_process (GNUNET_YES, NULL, NULL, "gnunet-service-resolver",
-                               "gnunet-service-resolver", NULL);
+                            "gnunet-service-resolver", NULL);
+  namestore =
+    GNUNET_OS_start_process (GNUNET_YES, NULL, NULL, 
"gnunet-service-namestore",
+                            "gnunet-service-namestore", NULL);
   load_options ();
+  GNUNET_SETUP_gns_init ();
   gtk_widget_show (main_window);
   gtk_window_present (GTK_WINDOW (main_window));
 }




reply via email to

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