[Top][All Lists]
[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);
}
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [GNUnet-SVN] r20627 - gnunet-gtk/src/gns,
gnunet <=