gnunet-svn
[Top][All Lists]
Advanced

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

[GNUnet-SVN] r20627 - gnunet-gtk/src/gns


From: gnunet
Subject: [GNUnet-SVN] r20627 - gnunet-gtk/src/gns
Date: Tue, 20 Mar 2012 09:42:59 +0100

Author: wachs
Date: 2012-03-20 09:42:59 +0100 (Tue, 20 Mar 2012)
New Revision: 20627

Modified:
   gnunet-gtk/src/gns/gnunet-gns-gtk.c
Log:
- changes


Modified: gnunet-gtk/src/gns/gnunet-gns-gtk.c
===================================================================
--- gnunet-gtk/src/gns/gnunet-gns-gtk.c 2012-03-20 08:27:43 UTC (rev 20626)
+++ gnunet-gtk/src/gns/gnunet-gns-gtk.c 2012-03-20 08:42:59 UTC (rev 20627)
@@ -73,7 +73,55 @@
 }
 
 
+void pseu_change_cont (void *cls,
+                 int32_t success,
+                 const char *emsg)
+{
+  GNUNET_break (0);
+}
+
+
 /**
+ * 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;
+  GNUNET_assert (gns != NULL);
+  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);
+}
+
+
+void
+GNUNET_GNS_GTK_shutdown (void *user_data)
+{
+  GNUNET_GTK_tray_icon_destroy ();
+  GNUNET_GTK_main_loop_quit (ml);
+  GNUNET_SCHEDULER_add_now (&shutdown_task, user_data);
+}
+
+
+/**
  * The user edited the preferred name (PSEU) of this namespace.
  * Push the update to the namestore.
  *
@@ -84,10 +132,23 @@
 GNUNET_GNS_GTK_pseu_entry_changed_cb (GtkEditable *editable,
                                      gpointer user_data)
 {
-  GNUNET_break (0); // FIXME, not implemented
+  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)))
+  {
+    GNUNET_log (GNUNET_ERROR_TYPE_ERROR, "New Pseudonym is `%s'\n", pseu);
+    rd.flags = GNUNET_NAMESTORE_TYPE_PSEU;
+    rd.expiration = GNUNET_TIME_absolute_get_forever();
+    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);
+  }
 }
 
-
 /**
  * The user toggled the 'autoshort' option.  Update the configuration.
  *
@@ -129,7 +190,8 @@
                                             gint response_id,
                                             gpointer user_data)
 {
-  GtkBuilder *builder = user_data;
+  struct GNUNET_GNS_Context *gns = user_data;
+  GtkBuilder *builder = gns->builder;
   char *filename;
 
   if (GTK_RESPONSE_OK != response_id)
@@ -213,37 +275,7 @@
 }
 
 
-/**
- * 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;
-  GNUNET_assert (gns != NULL);
-  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);
-}
-
-
 /**
  * Callback invoked if the application is supposed to exit (via menu).
  *
@@ -277,6 +309,74 @@
   GNUNET_SCHEDULER_add_now (&shutdown_task, user_data);
 }
 
+
+void
+close_error_box (GtkDialog *dialog,
+                gint       response_id,
+                gpointer   user_data)
+{
+  struct GNUNET_GNS_Context *gns = user_data;
+  GNUNET_GNS_GTK_shutdown (gns);
+}
+
+static void
+namestore_service_check (void *cls, const struct GNUNET_SCHEDULER_TaskContext 
*tc)
+{
+  struct GNUNET_GNS_Context *gns = cls;
+  struct GNUNET_CRYPTO_ShortHashAsciiEncoded shenc;
+  char *label;
+
+  if ((tc->reason & GNUNET_SCHEDULER_REASON_TIMEOUT) != 0)
+  {
+   char * message = _("Namestore service is not running!\n");
+   GNUNET_log (GNUNET_ERROR_TYPE_ERROR,
+              message);
+   GtkWidget *dialog, *label, *content_area;
+   dialog = gtk_dialog_new_with_buttons (_("ERROR"),
+                                         GTK_WINDOW (main_window),
+                                         GTK_DIALOG_DESTROY_WITH_PARENT,
+                                         GTK_STOCK_OK,
+                                         GTK_RESPONSE_NONE,
+                                         NULL);
+   content_area = gtk_dialog_get_content_area (GTK_DIALOG (dialog));
+   label = gtk_label_new (message);
+   /* Ensure that the dialog box is destroyed when the user responds. */
+   g_signal_connect_swapped (dialog,
+                             "response",
+                             G_CALLBACK(close_error_box),
+                             gns);
+   /* Add the label, and show everything we've added to the dialog. */
+   gtk_container_add (GTK_CONTAINER (content_area), label);
+   gtk_widget_show_all (dialog);
+   return;
+  }
+
+  GNUNET_CRYPTO_short_hash_to_enc(&gns->zone, &shenc);
+  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")),
+                       label);
+  g_free (label);
+
+  GNUNET_GTK_set_icon_search_path ();
+  GNUNET_GTK_setup_nls ();
+  /* setup main window */
+  main_window = GTK_WIDGET (get_object ("GNUNET_GNS_GTK_main_window"));
+  //gtk_window_maximize (GTK_WINDOW (main_window));
+  GNUNET_GTK_tray_icon_create (GTK_WINDOW (main_window),
+                              "gnunet-gtk" /* FIXME: different icon? */ ,
+                              "gnunet-gns-gtk");
+
+  /* make GUI visible */
+  if (!tray_only)
+  {
+   gtk_widget_show (main_window);
+   gtk_window_present (GTK_WINDOW (main_window));
+  }
+}
+
+
 /**
  * Actual main function run right after GNUnet's scheduler
  * is initialized.  Initializes up GTK and Glade.
@@ -288,25 +388,10 @@
 run (void *cls, const struct GNUNET_SCHEDULER_TaskContext *tc)
 {
   struct GNUNET_GNS_Context *gns = GNUNET_malloc (sizeof (struct 
GNUNET_GNS_Context));
-  struct GNUNET_CRYPTO_ShortHashAsciiEncoded shenc;
   char *keyfile;
-  char *label;
 
   ml = cls;
-  /*
   if (GNUNET_OK != GNUNET_CONFIGURATION_get_value_filename (get_configuration 
(),
-                                                            "gns",
-                                                            
"ZONEKEY_DIRECTORY",
-                                                            &zonekey_direc  
struct GNUNET_CRYPTO_ShortHashAsciiEncoded shenc;
-  GNUNET_CRYPTO_short_hash_to_enc(&zc_ctx->zone, &shenc);tory))
-  {
-    GNUNET_log (GNUNET_ERROR_TYPE_ERROR,
-                _("Option `%s' missing in section `%s'\n"),
-                "ZONEKEY_DIRECTORY", "namestore");
-    return;
-  }*/
-
-  if (GNUNET_OK != GNUNET_CONFIGURATION_get_value_filename (get_configuration 
(),
                                                            "gns",
                                                            "ZONEKEY",
                                                            &keyfile))
@@ -352,30 +437,7 @@
   gns->ls =  GTK_LIST_STORE (gtk_builder_get_object (gns->builder, 
"GNUNET_GNS_GTK_type_liststore"));
   GNUNET_assert (NULL != gns->ts);
 
-  GNUNET_CRYPTO_short_hash_to_enc(&gns->zone, &shenc);
-  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")),
-                       label);
-  g_free (label);
-
-  GNUNET_GTK_set_icon_search_path ();
-  GNUNET_GTK_setup_nls ();
-  /* setup main window */
-  main_window = GTK_WIDGET (get_object ("GNUNET_GNS_GTK_main_window"));
-  //gtk_window_maximize (GTK_WINDOW (main_window));
-  GNUNET_GTK_tray_icon_create (GTK_WINDOW (main_window),
-                               "gnunet-gtk" /* FIXME: different icon? */ ,
-                               "gnunet-gns-gtk");
-
-  /* make GUI visible */
-  if (!tray_only)
-  {
-    gtk_widget_show (main_window);
-    gtk_window_present (GTK_WINDOW (main_window));
-  }
-
+  GNUNET_CLIENT_service_test("namestore", get_configuration(), 
GNUNET_TIME_UNIT_SECONDS, &namestore_service_check, gns);
 }
 
 




reply via email to

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