gnunet-svn
[Top][All Lists]
Advanced

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

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


From: gnunet
Subject: [GNUnet-SVN] r20466 - gnunet-gtk/src/gns
Date: Mon, 12 Mar 2012 18:38:42 +0100

Author: wachs
Date: 2012-03-12 18:38:42 +0100 (Mon, 12 Mar 2012)
New Revision: 20466

Modified:
   gnunet-gtk/src/gns/gnunet-gns-gtk.c
Log:
- open dialog


Modified: gnunet-gtk/src/gns/gnunet-gns-gtk.c
===================================================================
--- gnunet-gtk/src/gns/gnunet-gns-gtk.c 2012-03-12 16:18:05 UTC (rev 20465)
+++ gnunet-gtk/src/gns/gnunet-gns-gtk.c 2012-03-12 17:38:42 UTC (rev 20466)
@@ -56,7 +56,13 @@
  */
 static char *zone_as_string;
 
+/**
+ * Default directory of zone files as a string.
+ */
+static char *zonefile_directory;
 
+GtkWidget *main_window;
+
 /**
  * Get cfg.
  */
@@ -124,7 +130,7 @@
 }
 
 /**
- * The user selected 'NEW' in the menu.  Open a dialog to select
+ * The user selected 'OPEN' in the menu.  Open a dialog to select
  * a different zonefile (for editing).
  *
  * @param checkmenuitem the menu item
@@ -134,7 +140,45 @@
 GNUNET_GNS_GTK_open_imagemenuitem_activate_cb (GtkMenuItem *menuitem,
                                               gpointer user_data)
 {
-  GNUNET_break (0); // FIXME, not implemented
+  GtkWidget *dialog;
+  dialog = gtk_file_chooser_dialog_new ("Open zone file...",
+                                        main_window,
+                                        GTK_FILE_CHOOSER_ACTION_OPEN,
+                                        GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL,
+                                        GTK_STOCK_OPEN, GTK_RESPONSE_ACCEPT,
+                                        NULL);
+  if (NULL != zonefile_directory)
+    gtk_file_chooser_set_current_folder (dialog, zonefile_directory);
+  if (gtk_dialog_run (GTK_DIALOG (dialog)) == GTK_RESPONSE_ACCEPT)
+  {
+    char *filename;
+    filename = gtk_file_chooser_get_filename (GTK_FILE_CHOOSER (dialog));
+    GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
+                _("Opening `%s'\n"), filename);
+    if (NULL != zone_pkey)
+    {
+      GNUNET_CRYPTO_rsa_key_free(zone_pkey);
+      zone_pkey = GNUNET_CRYPTO_rsa_key_create_from_file(filename);
+      if (NULL == zone_pkey)
+      {
+        GNUNET_log (GNUNET_ERROR_TYPE_ERROR,
+                    _("Not a valid zone file `%s'\n"), filename);
+
+        GtkWidget *err_dialog;
+        err_dialog = gtk_message_dialog_new (main_window,
+                                         GTK_DIALOG_DESTROY_WITH_PARENT,
+                                         GTK_MESSAGE_ERROR,
+                                         GTK_BUTTONS_CLOSE,
+                                         _("Error loading file '%s':\n not a 
valid zone file"),
+                                         filename);
+        gtk_dialog_run (GTK_DIALOG (err_dialog));
+        gtk_widget_destroy (err_dialog);
+      }
+      //if (zone_pkey = GNUNET_CRYPTO_rsa_key_create_from_file (keyfile);)
+    }
+    g_free (filename);
+  }
+  gtk_widget_destroy (dialog);
 }
 
 
@@ -175,6 +219,11 @@
     GNUNET_CRYPTO_rsa_key_free (zone_pkey);
     zone_pkey = NULL;
   }
+  if (NULL != zonefile_directory)
+  {
+    GNUNET_free (zonefile_directory);
+    zonefile_directory = NULL;
+  }
 }
 
 
@@ -223,12 +272,23 @@
 run (void *cls, const struct GNUNET_SCHEDULER_TaskContext *tc)
 {
   struct GNUNET_CRYPTO_RsaPublicKeyBinaryEncoded pub;
-  GtkWidget *main_window;
+
   char *keyfile;
   char *label;
 
   ml = cls;
   if (GNUNET_OK != GNUNET_CONFIGURATION_get_value_filename (get_configuration 
(),
+                                                            "namestore",
+                                                            
"ZONEFILE_DIRECTORY",
+                                                            
&zonefile_directory))
+  {
+    GNUNET_log (GNUNET_ERROR_TYPE_ERROR,
+                _("Option `%s' missing in section `%s'\n"),
+                "ZONEFILE_DIRECTORY", "namestore");
+    return;
+  }
+
+  if (GNUNET_OK != GNUNET_CONFIGURATION_get_value_filename (get_configuration 
(),
                                                            "gns",
                                                            "ZONEKEY",
                                                            &keyfile))
@@ -276,7 +336,7 @@
   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));
+  //gtk_window_maximize (GTK_WINDOW (main_window));
   GNUNET_GTK_tray_icon_create (GTK_WINDOW (main_window),
                                "gnunet-gtk" /* FIXME: different icon? */ ,
                                "gnunet-gns-gtk");




reply via email to

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