From d0c61090b1c1d3a0ef6ba1cb6a91e2a879929f30 Mon Sep 17 00:00:00 2001 From: Christian Grothoff Date: Tue, 13 Mar 2012 09:00:23 +0000 Subject: -fixing zone open dialog skeleton --- contrib/Makefile.am | 1 + contrib/gnunet_gns_gtk_zone_open.glade | 75 +++++++++++++++++++++++++++++ src/fs/gnunet-fs-gtk_open-directory.c | 2 +- src/gns/gnunet-gns-gtk.c | 86 +++++++++++++++++++--------------- 4 files changed, 125 insertions(+), 39 deletions(-) create mode 100644 contrib/gnunet_gns_gtk_zone_open.glade diff --git a/contrib/Makefile.am b/contrib/Makefile.am index f862f77c..8b81fe54 100644 --- a/contrib/Makefile.am +++ b/contrib/Makefile.am @@ -31,6 +31,7 @@ pkgdata_DATA = \ gnunet_fs_gtk_progress_dialog.glade \ gnunet_gns_gtk_about_window.glade \ gnunet_gns_gtk_main_window.glade \ + gnunet_gns_gtk_zone_open.glade \ gnunet_gtk_status_bar_menu.glade \ gnunet_peerinfo_gtk_about_window.glade \ gnunet_peerinfo_gtk_main_window.glade \ diff --git a/contrib/gnunet_gns_gtk_zone_open.glade b/contrib/gnunet_gns_gtk_zone_open.glade new file mode 100644 index 00000000..392f2738 --- /dev/null +++ b/contrib/gnunet_gns_gtk_zone_open.glade @@ -0,0 +1,75 @@ + + + + + + *.zkey + + + + False + 5 + Open zone file... + dialog + GNUNET_GNS_GTK_zone_open_filefilter + + + + False + vertical + 2 + + + False + end + + + gtk-cancel + False + True + True + True + False + True + + + False + True + 0 + + + + + gtk-ok + False + True + True + True + False + True + + + False + True + 1 + + + + + False + True + end + 0 + + + + + + + + + GNUNET_GNS_GTK_zone_open_cancel_button + GNUNET_GNS_GTK_zone_open_ok_button + + + diff --git a/src/fs/gnunet-fs-gtk_open-directory.c b/src/fs/gnunet-fs-gtk_open-directory.c index fec36b7c..9cc2640a 100644 --- a/src/fs/gnunet-fs-gtk_open-directory.c +++ b/src/fs/gnunet-fs-gtk_open-directory.c @@ -123,7 +123,7 @@ GNUNET_GTK_open_directory_dialog_response_cb (GtkDialog * dialog, acc.filename = filename; acc.sr = NULL; GNUNET_FS_GTK_mmap_and_scan (filename, &add_child, &acc); - g_free (filename); + GNUNET_free (filename); } diff --git a/src/gns/gnunet-gns-gtk.c b/src/gns/gnunet-gns-gtk.c index a9c451f0..4751f24a 100644 --- a/src/gns/gnunet-gns-gtk.c +++ b/src/gns/gnunet-gns-gtk.c @@ -61,7 +61,7 @@ static char *zone_as_string; */ static char *zonefile_directory; -GtkWidget *main_window; +static GtkWidget *main_window; /** * Get cfg. @@ -129,6 +129,38 @@ GNUNET_GNS_GTK_new_imagemenuitem_activate_cb (GtkMenuItem *menuitem, 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) +{ + GtkBuilder *builder = user_data; + char *filename; + + if (GTK_RESPONSE_OK != response_id) + { + gtk_widget_destroy (GTK_WIDGET (dialog)); + g_object_unref (G_OBJECT (builder)); + return; + } + filename = GNUNET_GTK_filechooser_get_filename_utf8 (GTK_FILE_CHOOSER (dialog)); + gtk_widget_destroy (GTK_WIDGET (dialog)); + g_object_unref (G_OBJECT (builder)); + + /* 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). @@ -140,45 +172,23 @@ void GNUNET_GNS_GTK_open_imagemenuitem_activate_cb (GtkMenuItem *menuitem, gpointer user_data) { - 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) + GtkWidget *ad; + GtkBuilder *builder; + GtkWidget *toplevel; + + builder = + GNUNET_GTK_get_new_builder ("gnunet_gns_gtk_zone_open.glade", NULL); + if (NULL == builder) { - 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); + GNUNET_break (0); + return; } - gtk_widget_destroy (dialog); + ad = GTK_WIDGET (gtk_builder_get_object + (builder, "GNUNET_GNS_GTK_zone_open_filechooserdialog")); + toplevel = gtk_widget_get_toplevel (menuitem); + if (GTK_IS_WINDOW (toplevel)) + gtk_window_set_transient_for (GTK_WINDOW (ad), GTK_WINDOW (toplevel)); + gtk_window_present (GTK_WINDOW (ad)); } -- cgit v1.2.3