gnunet-svn
[Top][All Lists]
Advanced

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

[GNUnet-SVN] r25224 - in gnunet-gtk: contrib src/setup


From: gnunet
Subject: [GNUnet-SVN] r25224 - in gnunet-gtk: contrib src/setup
Date: Tue, 4 Dec 2012 14:33:16 +0100

Author: grothoff
Date: 2012-12-04 14:33:16 +0100 (Tue, 04 Dec 2012)
New Revision: 25224

Modified:
   gnunet-gtk/contrib/Makefile.am
   gnunet-gtk/contrib/gnunet_setup_gns_edit_aaaa.glade
   gnunet-gtk/contrib/gnunet_setup_gns_edit_cname.glade
   gnunet-gtk/contrib/gnunet_setup_gns_edit_leho.glade
   gnunet-gtk/contrib/gnunet_setup_gns_edit_mx.glade
   gnunet-gtk/contrib/gnunet_setup_gns_edit_ns.glade
   gnunet-gtk/contrib/gnunet_setup_gns_edit_pkey.glade
   gnunet-gtk/contrib/gnunet_setup_gns_edit_ptr.glade
   gnunet-gtk/contrib/gnunet_setup_gns_edit_soa.glade
   gnunet-gtk/contrib/gnunet_setup_gns_edit_srv.glade
   gnunet-gtk/contrib/gnunet_setup_gns_edit_txt.glade
   gnunet-gtk/contrib/gnunet_setup_gns_edit_vpn.glade
   gnunet-gtk/src/setup/gnunet-setup-gns-edit.c
   gnunet-gtk/src/setup/gnunet-setup-gns-edit.h
   gnunet-gtk/src/setup/gnunet-setup-gns.c
Log:
-adding custom dialogs for a few simple record types

Modified: gnunet-gtk/contrib/Makefile.am
===================================================================
--- gnunet-gtk/contrib/Makefile.am      2012-12-04 13:16:26 UTC (rev 25223)
+++ gnunet-gtk/contrib/Makefile.am      2012-12-04 13:33:16 UTC (rev 25224)
@@ -62,9 +62,9 @@
   gnunet_setup_gns_edit_pkey.glade \
   gnunet_setup_gns_edit_leho.glade \
   gnunet_setup_gns_edit_srv.glade \
-  gnunet_setup_gns_edit_vpn.glade \
-  gnunet_setup_gns_edit_pseu.glade
+  gnunet_setup_gns_edit_vpn.glade 
 
+
 install-data-local:
        $(mkinstalldirs) $(DESTDIR)$(pkgpixdir)
        $(mkinstalldirs) $(DESTDIR)$(pkgpixdir)/flags

Modified: gnunet-gtk/contrib/gnunet_setup_gns_edit_aaaa.glade
===================================================================
--- gnunet-gtk/contrib/gnunet_setup_gns_edit_aaaa.glade 2012-12-04 13:16:26 UTC 
(rev 25223)
+++ gnunet-gtk/contrib/gnunet_setup_gns_edit_aaaa.glade 2012-12-04 13:33:16 UTC 
(rev 25224)
@@ -24,7 +24,7 @@
     <property name="window_position">center-on-parent</property>
     <property name="destroy_with_parent">True</property>
     <property name="type_hint">dialog</property>
-    <signal name="response" handler="GNS_edit_a_dialog_response_cb" 
swapped="no"/>
+    <signal name="response" handler="GNS_edit_aaaa_dialog_response_cb" 
swapped="no"/>
     <child internal-child="vbox">
       <object class="GtkVBox" id="edit_dialog_vbox">
         <property name="visible">True</property>
@@ -206,7 +206,7 @@
                         <property 
name="secondary_icon_activatable">False</property>
                         <property name="primary_icon_sensitive">True</property>
                         <property 
name="secondary_icon_sensitive">True</property>
-                        <signal name="changed" 
handler="GNS_edit_dialog_a_entry_changed_cb" swapped="no"/>
+                        <signal name="changed" 
handler="GNS_edit_dialog_aaaa_entry_changed_cb" swapped="no"/>
                       </object>
                       <packing>
                         <property name="expand">False</property>

Modified: gnunet-gtk/contrib/gnunet_setup_gns_edit_cname.glade
===================================================================
--- gnunet-gtk/contrib/gnunet_setup_gns_edit_cname.glade        2012-12-04 
13:16:26 UTC (rev 25223)
+++ gnunet-gtk/contrib/gnunet_setup_gns_edit_cname.glade        2012-12-04 
13:33:16 UTC (rev 25224)
@@ -24,7 +24,7 @@
     <property name="window_position">center-on-parent</property>
     <property name="destroy_with_parent">True</property>
     <property name="type_hint">dialog</property>
-    <signal name="response" handler="GNS_edit_a_dialog_response_cb" 
swapped="no"/>
+    <signal name="response" handler="GNS_edit_cname_dialog_response_cb" 
swapped="no"/>
     <child internal-child="vbox">
       <object class="GtkVBox" id="edit_dialog_vbox">
         <property name="visible">True</property>
@@ -200,13 +200,13 @@
                         <property name="can_focus">True</property>
                         <property name="has_focus">True</property>
                         <property name="tooltip_text" translatable="yes">Enter 
the name for which this name is an alias.</property>
-                        <property name="max_length">15</property>
+                        <property name="max_length">253</property>
                         <property name="invisible_char">●</property>
                         <property 
name="primary_icon_activatable">False</property>
                         <property 
name="secondary_icon_activatable">False</property>
                         <property name="primary_icon_sensitive">True</property>
                         <property 
name="secondary_icon_sensitive">True</property>
-                        <signal name="changed" 
handler="GNS_edit_dialog_a_entry_changed_cb" swapped="no"/>
+                        <signal name="changed" 
handler="GNS_edit_dialog_cname_entry_changed_cb" swapped="no"/>
                       </object>
                       <packing>
                         <property name="expand">False</property>

Modified: gnunet-gtk/contrib/gnunet_setup_gns_edit_leho.glade
===================================================================
--- gnunet-gtk/contrib/gnunet_setup_gns_edit_leho.glade 2012-12-04 13:16:26 UTC 
(rev 25223)
+++ gnunet-gtk/contrib/gnunet_setup_gns_edit_leho.glade 2012-12-04 13:33:16 UTC 
(rev 25224)
@@ -63,7 +63,7 @@
     <property name="window_position">center-on-parent</property>
     <property name="destroy_with_parent">True</property>
     <property name="type_hint">dialog</property>
-    <signal name="response" handler="GNS_edit_a_dialog_response_cb" 
swapped="no"/>
+    <signal name="response" handler="GNS_edit_leho_dialog_response_cb" 
swapped="no"/>
     <child internal-child="vbox">
       <object class="GtkVBox" id="edit_dialog_vbox">
         <property name="visible">True</property>
@@ -245,7 +245,7 @@
                         <property 
name="secondary_icon_activatable">False</property>
                         <property name="primary_icon_sensitive">True</property>
                         <property 
name="secondary_icon_sensitive">True</property>
-                        <signal name="changed" 
handler="GNS_edit_dialog_a_entry_changed_cb" swapped="no"/>
+                        <signal name="changed" 
handler="GNS_edit_dialog_leho_entry_changed_cb" swapped="no"/>
                       </object>
                       <packing>
                         <property name="expand">False</property>

Modified: gnunet-gtk/contrib/gnunet_setup_gns_edit_mx.glade
===================================================================
--- gnunet-gtk/contrib/gnunet_setup_gns_edit_mx.glade   2012-12-04 13:16:26 UTC 
(rev 25223)
+++ gnunet-gtk/contrib/gnunet_setup_gns_edit_mx.glade   2012-12-04 13:33:16 UTC 
(rev 25224)
@@ -63,7 +63,7 @@
     <property name="window_position">center-on-parent</property>
     <property name="destroy_with_parent">True</property>
     <property name="type_hint">dialog</property>
-    <signal name="response" handler="GNS_edit_a_dialog_response_cb" 
swapped="no"/>
+    <signal name="response" handler="GNS_edit_mx_dialog_response_cb" 
swapped="no"/>
     <child internal-child="vbox">
       <object class="GtkVBox" id="edit_dialog_vbox">
         <property name="visible">True</property>
@@ -239,13 +239,13 @@
                         <property name="can_focus">True</property>
                         <property name="has_focus">True</property>
                         <property name="tooltip_text" translatable="yes">Enter 
the hostname of the mail server here</property>
-                        <property name="max_length">15</property>
+                        <property name="max_length">253</property>
                         <property name="invisible_char">●</property>
                         <property 
name="primary_icon_activatable">False</property>
                         <property 
name="secondary_icon_activatable">False</property>
                         <property name="primary_icon_sensitive">True</property>
                         <property 
name="secondary_icon_sensitive">True</property>
-                        <signal name="changed" 
handler="GNS_edit_dialog_a_entry_changed_cb" swapped="no"/>
+                        <signal name="changed" 
handler="GNS_edit_dialog_mx_entry_changed_cb" swapped="no"/>
                       </object>
                       <packing>
                         <property name="expand">False</property>

Modified: gnunet-gtk/contrib/gnunet_setup_gns_edit_ns.glade
===================================================================
--- gnunet-gtk/contrib/gnunet_setup_gns_edit_ns.glade   2012-12-04 13:16:26 UTC 
(rev 25223)
+++ gnunet-gtk/contrib/gnunet_setup_gns_edit_ns.glade   2012-12-04 13:33:16 UTC 
(rev 25224)
@@ -63,7 +63,7 @@
     <property name="window_position">center-on-parent</property>
     <property name="destroy_with_parent">True</property>
     <property name="type_hint">dialog</property>
-    <signal name="response" handler="GNS_edit_a_dialog_response_cb" 
swapped="no"/>
+    <signal name="response" handler="GNS_edit_ns_dialog_response_cb" 
swapped="no"/>
     <child internal-child="vbox">
       <object class="GtkVBox" id="edit_dialog_vbox">
         <property name="visible">True</property>
@@ -245,7 +245,7 @@
                         <property 
name="secondary_icon_activatable">False</property>
                         <property name="primary_icon_sensitive">True</property>
                         <property 
name="secondary_icon_sensitive">True</property>
-                        <signal name="changed" 
handler="GNS_edit_dialog_a_entry_changed_cb" swapped="no"/>
+                        <signal name="changed" 
handler="GNS_edit_dialog_ns_entry_changed_cb" swapped="no"/>
                       </object>
                       <packing>
                         <property name="expand">False</property>

Modified: gnunet-gtk/contrib/gnunet_setup_gns_edit_pkey.glade
===================================================================
--- gnunet-gtk/contrib/gnunet_setup_gns_edit_pkey.glade 2012-12-04 13:16:26 UTC 
(rev 25223)
+++ gnunet-gtk/contrib/gnunet_setup_gns_edit_pkey.glade 2012-12-04 13:33:16 UTC 
(rev 25224)
@@ -63,7 +63,7 @@
     <property name="window_position">center-on-parent</property>
     <property name="destroy_with_parent">True</property>
     <property name="type_hint">dialog</property>
-    <signal name="response" handler="GNS_edit_a_dialog_response_cb" 
swapped="no"/>
+    <signal name="response" handler="GNS_edit_pkey_dialog_response_cb" 
swapped="no"/>
     <child internal-child="vbox">
       <object class="GtkVBox" id="edit_dialog_vbox">
         <property name="visible">True</property>
@@ -245,7 +245,7 @@
                         <property 
name="secondary_icon_activatable">False</property>
                         <property name="primary_icon_sensitive">True</property>
                         <property 
name="secondary_icon_sensitive">True</property>
-                        <signal name="changed" 
handler="GNS_edit_dialog_a_entry_changed_cb" swapped="no"/>
+                        <signal name="changed" 
handler="GNS_edit_dialog_pkey_entry_changed_cb" swapped="no"/>
                       </object>
                       <packing>
                         <property name="expand">False</property>
@@ -258,7 +258,7 @@
               </object>
             </child>
             <child type="label">
-              <object class="GtkLabel" id="edit_dialog_a_label">
+              <object class="GtkLabel" id="edit_dialog_pkey_label">
                 <property name="visible">True</property>
                 <property name="can_focus">False</property>
                 <property name="label" translatable="yes">&lt;b&gt;GADS 
authority for the subzone (PKEY)&lt;/b&gt;</property>

Modified: gnunet-gtk/contrib/gnunet_setup_gns_edit_ptr.glade
===================================================================
--- gnunet-gtk/contrib/gnunet_setup_gns_edit_ptr.glade  2012-12-04 13:16:26 UTC 
(rev 25223)
+++ gnunet-gtk/contrib/gnunet_setup_gns_edit_ptr.glade  2012-12-04 13:33:16 UTC 
(rev 25224)
@@ -63,7 +63,7 @@
     <property name="window_position">center-on-parent</property>
     <property name="destroy_with_parent">True</property>
     <property name="type_hint">dialog</property>
-    <signal name="response" handler="GNS_edit_a_dialog_response_cb" 
swapped="no"/>
+    <signal name="response" handler="GNS_edit_ptr_dialog_response_cb" 
swapped="no"/>
     <child internal-child="vbox">
       <object class="GtkVBox" id="edit_dialog_vbox">
         <property name="visible">True</property>
@@ -245,7 +245,7 @@
                         <property 
name="secondary_icon_activatable">False</property>
                         <property name="primary_icon_sensitive">True</property>
                         <property 
name="secondary_icon_sensitive">True</property>
-                        <signal name="changed" 
handler="GNS_edit_dialog_a_entry_changed_cb" swapped="no"/>
+                        <signal name="changed" 
handler="GNS_edit_dialog_ptr_entry_changed_cb" swapped="no"/>
                       </object>
                       <packing>
                         <property name="expand">False</property>

Modified: gnunet-gtk/contrib/gnunet_setup_gns_edit_soa.glade
===================================================================
--- gnunet-gtk/contrib/gnunet_setup_gns_edit_soa.glade  2012-12-04 13:16:26 UTC 
(rev 25223)
+++ gnunet-gtk/contrib/gnunet_setup_gns_edit_soa.glade  2012-12-04 13:33:16 UTC 
(rev 25224)
@@ -92,7 +92,7 @@
     <property name="window_position">center-on-parent</property>
     <property name="destroy_with_parent">True</property>
     <property name="type_hint">dialog</property>
-    <signal name="response" handler="GNS_edit_a_dialog_response_cb" 
swapped="no"/>
+    <signal name="response" handler="GNS_edit_soa_dialog_response_cb" 
swapped="no"/>
     <child internal-child="vbox">
       <object class="GtkVBox" id="edit_dialog_vbox">
         <property name="visible">True</property>

Modified: gnunet-gtk/contrib/gnunet_setup_gns_edit_srv.glade
===================================================================
--- gnunet-gtk/contrib/gnunet_setup_gns_edit_srv.glade  2012-12-04 13:16:26 UTC 
(rev 25223)
+++ gnunet-gtk/contrib/gnunet_setup_gns_edit_srv.glade  2012-12-04 13:33:16 UTC 
(rev 25224)
@@ -78,7 +78,7 @@
     <property name="window_position">center-on-parent</property>
     <property name="destroy_with_parent">True</property>
     <property name="type_hint">dialog</property>
-    <signal name="response" handler="GNS_edit_a_dialog_response_cb" 
swapped="no"/>
+    <signal name="response" handler="GNS_edit_srv_dialog_response_cb" 
swapped="no"/>
     <child internal-child="vbox">
       <object class="GtkVBox" id="edit_dialog_vbox">
         <property name="visible">True</property>

Modified: gnunet-gtk/contrib/gnunet_setup_gns_edit_txt.glade
===================================================================
--- gnunet-gtk/contrib/gnunet_setup_gns_edit_txt.glade  2012-12-04 13:16:26 UTC 
(rev 25223)
+++ gnunet-gtk/contrib/gnunet_setup_gns_edit_txt.glade  2012-12-04 13:33:16 UTC 
(rev 25224)
@@ -63,7 +63,7 @@
     <property name="window_position">center-on-parent</property>
     <property name="destroy_with_parent">True</property>
     <property name="type_hint">dialog</property>
-    <signal name="response" handler="GNS_edit_a_dialog_response_cb" 
swapped="no"/>
+    <signal name="response" handler="GNS_edit_txt_dialog_response_cb" 
swapped="no"/>
     <child internal-child="vbox">
       <object class="GtkVBox" id="edit_dialog_vbox">
         <property name="visible">True</property>
@@ -245,7 +245,7 @@
                         <property 
name="secondary_icon_activatable">False</property>
                         <property name="primary_icon_sensitive">True</property>
                         <property 
name="secondary_icon_sensitive">True</property>
-                        <signal name="changed" 
handler="GNS_edit_dialog_a_entry_changed_cb" swapped="no"/>
+                        <signal name="changed" 
handler="GNS_edit_dialog_txt_entry_changed_cb" swapped="no"/>
                       </object>
                       <packing>
                         <property name="expand">False</property>

Modified: gnunet-gtk/contrib/gnunet_setup_gns_edit_vpn.glade
===================================================================
--- gnunet-gtk/contrib/gnunet_setup_gns_edit_vpn.glade  2012-12-04 13:16:26 UTC 
(rev 25223)
+++ gnunet-gtk/contrib/gnunet_setup_gns_edit_vpn.glade  2012-12-04 13:33:16 UTC 
(rev 25224)
@@ -63,7 +63,7 @@
     <property name="window_position">center-on-parent</property>
     <property name="destroy_with_parent">True</property>
     <property name="type_hint">dialog</property>
-    <signal name="response" handler="GNS_edit_a_dialog_response_cb" 
swapped="no"/>
+    <signal name="response" handler="GNS_edit_vpn_dialog_response_cb" 
swapped="no"/>
     <child internal-child="vbox">
       <object class="GtkVBox" id="edit_dialog_vbox">
         <property name="visible">True</property>

Modified: gnunet-gtk/src/setup/gnunet-setup-gns-edit.c
===================================================================
--- gnunet-gtk/src/setup/gnunet-setup-gns-edit.c        2012-12-04 13:16:26 UTC 
(rev 25223)
+++ gnunet-gtk/src/setup/gnunet-setup-gns-edit.c        2012-12-04 13:33:16 UTC 
(rev 25224)
@@ -567,4 +567,785 @@
 }
 
 
+/* ************************ AAAA records *********************** */
+
+/**
+ * Check validity of the value in the edit dialog for AAAA-records.
+ * Then call the shared validity check if the result is OK.
+ *
+ * @param edc edit dialog context
+ */
+static void
+edit_dialog_aaaa_validity_check (struct EditDialogContext *edc)
+{
+  GtkEditable *entry;
+  const gchar *preedit;
+  struct in6_addr v6;
+
+  entry = GTK_EDITABLE (gtk_builder_get_object (edc->builder,
+                                               "edit_dialog_aaaa_entry")),
+  preedit = gtk_editable_get_chars (entry, 0, -1);
+  if ( (NULL == preedit) ||
+       (1 != inet_pton (AF_INET6, preedit, &v6)) )
+  {
+    edit_dialog_disable_save (edc);
+    return;
+  }
+  edit_dialog_check_save (edc);
+}
+
+
+/**
+ * Editing dialog was closed, get the data and call the
+ * continuation.
+ *
+ * @param dialog editing dialog
+ * @param user_data the 'struct EditDialogContext'
+ */
+void
+GNS_edit_aaaa_dialog_response_cb (GtkDialog *dialog,
+                                 gint response_id,
+                                 gpointer user_data)
+{
+  struct EditDialogContext *edc = user_data;
+  GtkEntry *entry;
+  const gchar *value;
+    
+  if (GTK_RESPONSE_OK == response_id)
+  {
+    edit_dialog_putes_common_elements (edc);
+    entry = GTK_ENTRY (gtk_builder_get_object (edc->builder,
+                                              "edit_dialog_aaaa_entry"));
+    value = gtk_entry_get_text (entry);
+    g_free (edc->n_value);
+    edc->n_value = g_strdup (value);
+  }
+  gtk_widget_destroy (GTK_WIDGET (edc->dialog));
+  g_object_unref (edc->builder);
+  edc->builder = NULL;
+  edc->cont (edc, response_id);
+}
+
+
+/**
+ * The user has edited the AAAA record value.  Enable/disable 'save'
+ * button depending on the validity of the value.
+ *
+ * @param entry editing widget
+ * @param preedit new value
+ * @param user_data the 'struct EditDialogContext' of the dialog
+ */
+void
+GNS_edit_dialog_aaaa_entry_changed_cb (GtkEditable *entry,
+                                      gpointer user_data)
+{
+  struct EditDialogContext *edc = user_data;
+
+  edit_dialog_a_validity_check (edc);
+}
+
+
+/**
+ * Run an GNS Edit dialog for an 'AAAA' Record.
+ *
+ * @param cont continuation to call when done
+ * @param edc editing context to use
+ */
+void
+GNS_edit_dialog_aaaa (struct EditDialogContext *edc)
+{
+  edc->builder = GNUNET_GTK_get_new_builder 
("gnunet_setup_gns_edit_aaaa.glade",
+                                            edc);
+  if (NULL == edc->builder)
+  {
+    GNUNET_break (0);
+    edc->cont (edc, GTK_RESPONSE_CANCEL);  /* treat as 'cancel' */
+    return;    
+  }
+  if (GNUNET_YES ==
+      edc->old_record_in_namestore)
+  {
+    /* set AAAA record */
+    gtk_entry_set_text (GTK_ENTRY (gtk_builder_get_object (edc->builder,
+                                                          
"edit_dialog_aaaa_entry")),
+                       edc->n_value);
+  }
+  edc->validator = &edit_dialog_aaaa_validity_check;
+  edc->dialog = GTK_DIALOG (gtk_builder_get_object (edc->builder,
+                                                   "edit_aaaa_dialog"));
+  run_edit_dialog (edc);
+}
+
+
+/* ************************ CNAME records *********************** */
+
+/**
+ * Check validity of the value in the edit dialog for AAAA-records.
+ * Then call the shared validity check if the result is OK.
+ *
+ * @param edc edit dialog context
+ */
+static void
+edit_dialog_cname_validity_check (struct EditDialogContext *edc)
+{
+  GtkEditable *entry;
+  const gchar *preedit;
+
+  entry = GTK_EDITABLE (gtk_builder_get_object (edc->builder,
+                                               "edit_dialog_cname_entry")),
+  preedit = gtk_editable_get_chars (entry, 0, -1);
+  if ( (NULL == preedit) ||
+       (GNUNET_OK != GNUNET_DNSPARSER_check_name (preedit)) )
+  {
+    edit_dialog_disable_save (edc);
+    return;
+  }
+  edit_dialog_check_save (edc);
+}
+
+
+/**
+ * Editing dialog was closed, get the data and call the
+ * continuation.
+ *
+ * @param dialog editing dialog
+ * @param user_data the 'struct EditDialogContext'
+ */
+void
+GNS_edit_cname_dialog_response_cb (GtkDialog *dialog,
+                                  gint response_id,
+                                  gpointer user_data)
+{
+  struct EditDialogContext *edc = user_data;
+  GtkEntry *entry;
+  const gchar *value;
+    
+  if (GTK_RESPONSE_OK == response_id)
+  {
+    edit_dialog_putes_common_elements (edc);
+    entry = GTK_ENTRY (gtk_builder_get_object (edc->builder,
+                                              "edit_dialog_cname_entry"));
+    value = gtk_entry_get_text (entry);
+    g_free (edc->n_value);
+    edc->n_value = g_strdup (value);
+  }
+  gtk_widget_destroy (GTK_WIDGET (edc->dialog));
+  g_object_unref (edc->builder);
+  edc->builder = NULL;
+  edc->cont (edc, response_id);
+}
+
+
+/**
+ * The user has edited the CNAME record value.  Enable/disable 'save'
+ * button depending on the validity of the value.
+ *
+ * @param entry editing widget
+ * @param preedit new value
+ * @param user_data the 'struct EditDialogContext' of the dialog
+ */
+void
+GNS_edit_dialog_cname_entry_changed_cb (GtkEditable *entry,
+                                      gpointer user_data)
+{
+  struct EditDialogContext *edc = user_data;
+
+  edit_dialog_cname_validity_check (edc);
+}
+
+
+/**
+ * Run an GNS Edit dialog for an 'CNAME' Record.
+ *
+ * @param cont continuation to call when done
+ * @param edc editing context to use
+ */
+void
+GNS_edit_dialog_cname (struct EditDialogContext *edc)
+{
+  edc->builder = GNUNET_GTK_get_new_builder 
("gnunet_setup_gns_edit_cname.glade",
+                                            edc);
+  if (NULL == edc->builder)
+  {
+    GNUNET_break (0);
+    edc->cont (edc, GTK_RESPONSE_CANCEL);  /* treat as 'cancel' */
+    return;    
+  }
+  if (GNUNET_YES ==
+      edc->old_record_in_namestore)
+  {
+    /* set CNAME record */
+    gtk_entry_set_text (GTK_ENTRY (gtk_builder_get_object (edc->builder,
+                                                          
"edit_dialog_cname_entry")),
+                       edc->n_value);
+  }
+  edc->validator = &edit_dialog_cname_validity_check;
+  edc->dialog = GTK_DIALOG (gtk_builder_get_object (edc->builder,
+                                                   "edit_cname_dialog"));
+  run_edit_dialog (edc);
+}
+
+
+/* ************************ LEHO records *********************** */
+
+/**
+ * Check validity of the value in the edit dialog for LEHO-records.
+ * Then call the shared validity check if the result is OK.
+ *
+ * @param edc edit dialog context
+ */
+static void
+edit_dialog_leho_validity_check (struct EditDialogContext *edc)
+{
+  GtkEditable *entry;
+  const gchar *preedit;
+
+  entry = GTK_EDITABLE (gtk_builder_get_object (edc->builder,
+                                               "edit_dialog_leho_entry")),
+  preedit = gtk_editable_get_chars (entry, 0, -1);
+  if ( (NULL == preedit) ||
+       (GNUNET_OK != GNUNET_DNSPARSER_check_name (preedit)) )
+  {
+    edit_dialog_disable_save (edc);
+    return;
+  }
+  edit_dialog_check_save (edc);
+}
+
+
+/**
+ * Editing dialog was closed, get the data and call the
+ * continuation.
+ *
+ * @param dialog editing dialog
+ * @param user_data the 'struct EditDialogContext'
+ */
+void
+GNS_edit_leho_dialog_response_cb (GtkDialog *dialog,
+                                  gint response_id,
+                                  gpointer user_data)
+{
+  struct EditDialogContext *edc = user_data;
+  GtkEntry *entry;
+  const gchar *value;
+    
+  if (GTK_RESPONSE_OK == response_id)
+  {
+    edit_dialog_putes_common_elements (edc);
+    entry = GTK_ENTRY (gtk_builder_get_object (edc->builder,
+                                              "edit_dialog_leho_entry"));
+    value = gtk_entry_get_text (entry);
+    g_free (edc->n_value);
+    edc->n_value = g_strdup (value);
+  }
+  gtk_widget_destroy (GTK_WIDGET (edc->dialog));
+  g_object_unref (edc->builder);
+  edc->builder = NULL;
+  edc->cont (edc, response_id);
+}
+
+
+/**
+ * The user has edited the LEHO record value.  Enable/disable 'save'
+ * button depending on the validity of the value.
+ *
+ * @param entry editing widget
+ * @param preedit new value
+ * @param user_data the 'struct EditDialogContext' of the dialog
+ */
+void
+GNS_edit_dialog_leho_entry_changed_cb (GtkEditable *entry,
+                                      gpointer user_data)
+{
+  struct EditDialogContext *edc = user_data;
+
+  edit_dialog_leho_validity_check (edc);
+}
+
+
+/**
+ * Run an GNS Edit dialog for an 'LEHO' Record.
+ *
+ * @param cont continuation to call when done
+ * @param edc editing context to use
+ */
+void
+GNS_edit_dialog_leho (struct EditDialogContext *edc)
+{
+  edc->builder = GNUNET_GTK_get_new_builder 
("gnunet_setup_gns_edit_leho.glade",
+                                            edc);
+  if (NULL == edc->builder)
+  {
+    GNUNET_break (0);
+    edc->cont (edc, GTK_RESPONSE_CANCEL);  /* treat as 'cancel' */
+    return;    
+  }
+  if (GNUNET_YES ==
+      edc->old_record_in_namestore)
+  {
+    /* set LEHO record */
+    gtk_entry_set_text (GTK_ENTRY (gtk_builder_get_object (edc->builder,
+                                                          
"edit_dialog_leho_entry")),
+                       edc->n_value);
+  }
+  edc->validator = &edit_dialog_leho_validity_check;
+  edc->dialog = GTK_DIALOG (gtk_builder_get_object (edc->builder,
+                                                   "edit_leho_dialog"));
+  run_edit_dialog (edc);
+}
+
+
+/* ************************ MX records *********************** */
+
+/**
+ * Check validity of the value in the edit dialog for MX-records.
+ * Then call the shared validity check if the result is OK.
+ *
+ * @param edc edit dialog context
+ */
+static void
+edit_dialog_mx_validity_check (struct EditDialogContext *edc)
+{
+  GtkEditable *entry;
+  const gchar *preedit;
+
+  entry = GTK_EDITABLE (gtk_builder_get_object (edc->builder,
+                                               "edit_dialog_mx_entry")),
+  preedit = gtk_editable_get_chars (entry, 0, -1);
+  if ( (NULL == preedit) ||
+       (GNUNET_OK != GNUNET_DNSPARSER_check_name (preedit)) )
+  {
+    edit_dialog_disable_save (edc);
+    return;
+  }
+  edit_dialog_check_save (edc);
+}
+
+
+/**
+ * Editing dialog was closed, get the data and call the
+ * continuation.
+ *
+ * @param dialog editing dialog
+ * @param user_data the 'struct EditDialogContext'
+ */
+void
+GNS_edit_mx_dialog_response_cb (GtkDialog *dialog,
+                                  gint response_id,
+                                  gpointer user_data)
+{
+  struct EditDialogContext *edc = user_data;
+  GtkEntry *entry;
+  const gchar *value;
+  char *result;
+  unsigned int distance;
+    
+  if (GTK_RESPONSE_OK == response_id)
+  {
+    edit_dialog_putes_common_elements (edc);
+    entry = GTK_ENTRY (gtk_builder_get_object (edc->builder,
+                                              "edit_dialog_mx_entry"));
+    value = gtk_entry_get_text (entry);
+    distance = gtk_spin_button_get_value (GTK_SPIN_BUTTON 
(gtk_builder_get_object (edc->builder,
+                                                                               
   "edit_dialog_mx_distance_spinbutton")));
+    g_free (edc->n_value);
+    GNUNET_asprintf (&result,
+                    "%hu,%s", 
+                    distance, 
+                    value);
+    edc->n_value = g_strdup (result);
+    GNUNET_free (result);
+  }
+  gtk_widget_destroy (GTK_WIDGET (edc->dialog));
+  g_object_unref (edc->builder);
+  edc->builder = NULL;
+  edc->cont (edc, response_id);
+}
+
+
+/**
+ * The user has edited the MX record value.  Enable/disable 'save'
+ * button depending on the validity of the value.
+ *
+ * @param entry editing widget
+ * @param preedit new value
+ * @param user_data the 'struct EditDialogContext' of the dialog
+ */
+void
+GNS_edit_dialog_mx_entry_changed_cb (GtkEditable *entry,
+                                      gpointer user_data)
+{
+  struct EditDialogContext *edc = user_data;
+
+  edit_dialog_mx_validity_check (edc);
+}
+
+
+/**
+ * Run an GNS Edit dialog for an 'MX' Record.
+ *
+ * @param cont continuation to call when done
+ * @param edc editing context to use
+ */
+void
+GNS_edit_dialog_mx (struct EditDialogContext *edc)
+{
+  uint16_t mx_pref;
+  char result[253 + 1];
+
+  edc->builder = GNUNET_GTK_get_new_builder ("gnunet_setup_gns_edit_mx.glade",
+                                            edc);
+  if (NULL == edc->builder)
+  {
+    GNUNET_break (0);
+    edc->cont (edc, GTK_RESPONSE_CANCEL);  /* treat as 'cancel' */
+    return;    
+  }
+  if (GNUNET_YES ==
+      edc->old_record_in_namestore)
+  {
+    if (2 != SSCANF(edc->n_value, 
+                   "%hu,%253s", &mx_pref, result))
+    {
+      GNUNET_break (0);
+      GNUNET_log (GNUNET_ERROR_TYPE_ERROR,
+                  _("Unable to parse MX record `%s'\n"),
+                 edc->n_value);
+    }
+    else
+    {
+      gtk_entry_set_text (GTK_ENTRY (gtk_builder_get_object (edc->builder,
+                                                            
"edit_dialog_mx_entry")),
+                         result);
+      gtk_spin_button_set_value (GTK_SPIN_BUTTON (gtk_builder_get_object 
(edc->builder,
+                                                                         
"edit_dialog_mx_distance_spinbutton")),
+                                mx_pref);
+    }
+  }
+  edc->validator = &edit_dialog_mx_validity_check;
+  edc->dialog = GTK_DIALOG (gtk_builder_get_object (edc->builder,
+                                                   "edit_mx_dialog"));
+  run_edit_dialog (edc);
+}
+
+
+/* ************************ NS records *********************** */
+
+/**
+ * Check validity of the value in the edit dialog for NS-records.
+ * Then call the shared validity check if the result is OK.
+ *
+ * @param edc edit dialog context
+ */
+static void
+edit_dialog_ns_validity_check (struct EditDialogContext *edc)
+{
+  GtkEditable *entry;
+  const gchar *preedit;
+
+  entry = GTK_EDITABLE (gtk_builder_get_object (edc->builder,
+                                               "edit_dialog_ns_entry")),
+  preedit = gtk_editable_get_chars (entry, 0, -1);
+  if ( (NULL == preedit) ||
+       (GNUNET_OK != GNUNET_DNSPARSER_check_name (preedit)) )
+  {
+    edit_dialog_disable_save (edc);
+    return;
+  }
+  edit_dialog_check_save (edc);
+}
+
+
+/**
+ * Editing dialog was closed, get the data and call the
+ * continuation.
+ *
+ * @param dialog editing dialog
+ * @param user_data the 'struct EditDialogContext'
+ */
+void
+GNS_edit_ns_dialog_response_cb (GtkDialog *dialog,
+                                  gint response_id,
+                                  gpointer user_data)
+{
+  struct EditDialogContext *edc = user_data;
+  GtkEntry *entry;
+  const gchar *value;
+    
+  if (GTK_RESPONSE_OK == response_id)
+  {
+    edit_dialog_putes_common_elements (edc);
+    entry = GTK_ENTRY (gtk_builder_get_object (edc->builder,
+                                              "edit_dialog_ns_entry"));
+    value = gtk_entry_get_text (entry);
+    g_free (edc->n_value);
+    edc->n_value = g_strdup (value);
+  }
+  gtk_widget_destroy (GTK_WIDGET (edc->dialog));
+  g_object_unref (edc->builder);
+  edc->builder = NULL;
+  edc->cont (edc, response_id);
+}
+
+
+/**
+ * The user has edited the NS record value.  Enable/disable 'save'
+ * button depending on the validity of the value.
+ *
+ * @param entry editing widget
+ * @param preedit new value
+ * @param user_data the 'struct EditDialogContext' of the dialog
+ */
+void
+GNS_edit_dialog_ns_entry_changed_cb (GtkEditable *entry,
+                                      gpointer user_data)
+{
+  struct EditDialogContext *edc = user_data;
+
+  edit_dialog_ns_validity_check (edc);
+}
+
+
+/**
+ * Run an GNS Edit dialog for an 'NS' Record.
+ *
+ * @param cont continuation to call when done
+ * @param edc editing context to use
+ */
+void
+GNS_edit_dialog_ns (struct EditDialogContext *edc)
+{
+  edc->builder = GNUNET_GTK_get_new_builder ("gnunet_setup_gns_edit_ns.glade",
+                                            edc);
+  if (NULL == edc->builder)
+  {
+    GNUNET_break (0);
+    edc->cont (edc, GTK_RESPONSE_CANCEL);  /* treat as 'cancel' */
+    return;    
+  }
+  if (GNUNET_YES ==
+      edc->old_record_in_namestore)
+  {
+    /* set NS record */
+    gtk_entry_set_text (GTK_ENTRY (gtk_builder_get_object (edc->builder,
+                                                          
"edit_dialog_ns_entry")),
+                       edc->n_value);
+  }
+  edc->validator = &edit_dialog_ns_validity_check;
+  edc->dialog = GTK_DIALOG (gtk_builder_get_object (edc->builder,
+                                                   "edit_ns_dialog"));
+  run_edit_dialog (edc);
+}
+
+
+
+/* ************************ PTR records *********************** */
+
+/**
+ * Check validity of the value in the edit dialog for PTR-records.
+ * Then call the shared validity check if the result is OK.
+ *
+ * @param edc edit dialog context
+ */
+static void
+edit_dialog_ptr_validity_check (struct EditDialogContext *edc)
+{
+  GtkEditable *entry;
+  const gchar *preedit;
+
+  entry = GTK_EDITABLE (gtk_builder_get_object (edc->builder,
+                                               "edit_dialog_ptr_entry")),
+  preedit = gtk_editable_get_chars (entry, 0, -1);
+  if ( (NULL == preedit) ||
+       (GNUNET_OK != GNUNET_DNSPARSER_check_name (preedit)) )
+  {
+    edit_dialog_disable_save (edc);
+    return;
+  }
+  edit_dialog_check_save (edc);
+}
+
+
+/**
+ * Editing dialog was closed, get the data and call the
+ * continuation.
+ *
+ * @param dialog editing dialog
+ * @param user_data the 'struct EditDialogContext'
+ */
+void
+GNS_edit_ptr_dialog_response_cb (GtkDialog *dialog,
+                                  gint response_id,
+                                  gpointer user_data)
+{
+  struct EditDialogContext *edc = user_data;
+  GtkEntry *entry;
+  const gchar *value;
+    
+  if (GTK_RESPONSE_OK == response_id)
+  {
+    edit_dialog_putes_common_elements (edc);
+    entry = GTK_ENTRY (gtk_builder_get_object (edc->builder,
+                                              "edit_dialog_ptr_entry"));
+    value = gtk_entry_get_text (entry);
+    g_free (edc->n_value);
+    edc->n_value = g_strdup (value);
+  }
+  gtk_widget_destroy (GTK_WIDGET (edc->dialog));
+  g_object_unref (edc->builder);
+  edc->builder = NULL;
+  edc->cont (edc, response_id);
+}
+
+
+/**
+ * The user has edited the PTR record value.  Enable/disable 'save'
+ * button depending on the validity of the value.
+ *
+ * @param entry editing widget
+ * @param preedit new value
+ * @param user_data the 'struct EditDialogContext' of the dialog
+ */
+void
+GNS_edit_dialog_ptr_entry_changed_cb (GtkEditable *entry,
+                                      gpointer user_data)
+{
+  struct EditDialogContext *edc = user_data;
+
+  edit_dialog_ptr_validity_check (edc);
+}
+
+
+/**
+ * Run an GNS Edit dialog for an 'PTR' Record.
+ *
+ * @param cont continuation to call when done
+ * @param edc editing context to use
+ */
+void
+GNS_edit_dialog_ptr (struct EditDialogContext *edc)
+{
+  edc->builder = GNUNET_GTK_get_new_builder ("gnunet_setup_gns_edit_ptr.glade",
+                                            edc);
+  if (NULL == edc->builder)
+  {
+    GNUNET_break (0);
+    edc->cont (edc, GTK_RESPONSE_CANCEL);  /* treat as 'cancel' */
+    return;    
+  }
+  if (GNUNET_YES ==
+      edc->old_record_in_namestore)
+  {
+    /* set PTR record */
+    gtk_entry_set_text (GTK_ENTRY (gtk_builder_get_object (edc->builder,
+                                                          
"edit_dialog_ptr_entry")),
+                       edc->n_value);
+  }
+  edc->validator = &edit_dialog_ptr_validity_check;
+  edc->dialog = GTK_DIALOG (gtk_builder_get_object (edc->builder,
+                                                   "edit_ptr_dialog"));
+  run_edit_dialog (edc);
+}
+
+
+/* ************************ TXT records *********************** */
+
+/**
+ * Check validity of the value in the edit dialog for TXT-records.
+ * Then call the shared validity check if the result is OK.
+ *
+ * @param edc edit dialog context
+ */
+static void
+edit_dialog_txt_validity_check (struct EditDialogContext *edc)
+{
+  edit_dialog_check_save (edc);
+}
+
+
+/**
+ * Editing dialog was closed, get the data and call the
+ * continuation.
+ *
+ * @param dialog editing dialog
+ * @param user_data the 'struct EditDialogContext'
+ */
+void
+GNS_edit_txt_dialog_response_cb (GtkDialog *dialog,
+                                  gint response_id,
+                                  gpointer user_data)
+{
+  struct EditDialogContext *edc = user_data;
+  GtkEntry *entry;
+  const gchar *value;
+    
+  if (GTK_RESPONSE_OK == response_id)
+  {
+    edit_dialog_putes_common_elements (edc);
+    entry = GTK_ENTRY (gtk_builder_get_object (edc->builder,
+                                              "edit_dialog_txt_entry"));
+    value = gtk_entry_get_text (entry);
+    g_free (edc->n_value);
+    edc->n_value = g_strdup (value);
+  }
+  gtk_widget_destroy (GTK_WIDGET (edc->dialog));
+  g_object_unref (edc->builder);
+  edc->builder = NULL;
+  edc->cont (edc, response_id);
+}
+
+
+/**
+ * The user has edited the TXT record value.  Enable/disable 'save'
+ * button depending on the validity of the value.
+ *
+ * @param entry editing widget
+ * @param preedit new value
+ * @param user_data the 'struct EditDialogContext' of the dialog
+ */
+void
+GNS_edit_dialog_txt_entry_changed_cb (GtkEditable *entry,
+                                      gpointer user_data)
+{
+  struct EditDialogContext *edc = user_data;
+
+  edit_dialog_txt_validity_check (edc);
+}
+
+
+/**
+ * Run an GNS Edit dialog for an 'TXT' Record.
+ *
+ * @param cont continuation to call when done
+ * @param edc editing context to use
+ */
+void
+GNS_edit_dialog_txt (struct EditDialogContext *edc)
+{
+  edc->builder = GNUNET_GTK_get_new_builder ("gnunet_setup_gns_edit_txt.glade",
+                                            edc);
+  if (NULL == edc->builder)
+  {
+    GNUNET_break (0);
+    edc->cont (edc, GTK_RESPONSE_CANCEL);  /* treat as 'cancel' */
+    return;    
+  }
+  if (GNUNET_YES ==
+      edc->old_record_in_namestore)
+  {
+    /* set TXT record */
+    gtk_entry_set_text (GTK_ENTRY (gtk_builder_get_object (edc->builder,
+                                                          
"edit_dialog_txt_entry")),
+                       edc->n_value);
+  }
+  edc->validator = &edit_dialog_txt_validity_check;
+  edc->dialog = GTK_DIALOG (gtk_builder_get_object (edc->builder,
+                                                   "edit_txt_dialog"));
+  run_edit_dialog (edc);
+}
+
+
+
+
+
 /* end of gnunet-setup-gns-edit.c */

Modified: gnunet-gtk/src/setup/gnunet-setup-gns-edit.h
===================================================================
--- gnunet-gtk/src/setup/gnunet-setup-gns-edit.h        2012-12-04 13:16:26 UTC 
(rev 25223)
+++ gnunet-gtk/src/setup/gnunet-setup-gns-edit.h        2012-12-04 13:33:16 UTC 
(rev 25224)
@@ -174,4 +174,74 @@
 GNS_edit_dialog_a (struct EditDialogContext *edc);
 
 
+/**
+ * Run an GNS Edit dialog for an 'AAAA' Record.
+ *
+ * @param cont continuation to call when done
+ * @param edc editing context to use
+ */
+void
+GNS_edit_dialog_aaaa (struct EditDialogContext *edc);
+
+
+/**
+ * Run an GNS Edit dialog for an 'CNAME' Record.
+ *
+ * @param cont continuation to call when done
+ * @param edc editing context to use
+ */
+void
+GNS_edit_dialog_cname (struct EditDialogContext *edc);
+
+
+/**
+ * Run an GNS Edit dialog for an 'LEHO' Record.
+ *
+ * @param cont continuation to call when done
+ * @param edc editing context to use
+ */
+void
+GNS_edit_dialog_leho (struct EditDialogContext *edc);
+
+
+/**
+ * Run an GNS Edit dialog for an 'MX' Record.
+ *
+ * @param cont continuation to call when done
+ * @param edc editing context to use
+ */
+void
+GNS_edit_dialog_mx (struct EditDialogContext *edc);
+
+
+/**
+ * Run an GNS Edit dialog for an 'NS' Record.
+ *
+ * @param cont continuation to call when done
+ * @param edc editing context to use
+ */
+void
+GNS_edit_dialog_ns (struct EditDialogContext *edc);
+
+
+/**
+ * Run an GNS Edit dialog for an 'PTR' Record.
+ *
+ * @param cont continuation to call when done
+ * @param edc editing context to use
+ */
+void
+GNS_edit_dialog_ptr (struct EditDialogContext *edc);
+
+
+/**
+ * Run an GNS Edit dialog for an 'TXT' Record.
+ *
+ * @param cont continuation to call when done
+ * @param edc editing context to use
+ */
+void
+GNS_edit_dialog_txt (struct EditDialogContext *edc);
+
+
 #endif

Modified: gnunet-gtk/src/setup/gnunet-setup-gns.c
===================================================================
--- gnunet-gtk/src/setup/gnunet-setup-gns.c     2012-12-04 13:16:26 UTC (rev 
25223)
+++ gnunet-gtk/src/setup/gnunet-setup-gns.c     2012-12-04 13:33:16 UTC (rev 
25224)
@@ -1424,16 +1424,30 @@
     GNS_edit_dialog_a (edc);
     break;
   case GNUNET_DNSPARSER_TYPE_NS:
+    GNS_edit_dialog_ns (edc);
+    break;
   case GNUNET_DNSPARSER_TYPE_CNAME:
-  case GNUNET_DNSPARSER_TYPE_SOA:
+    GNS_edit_dialog_cname (edc);
+    break;
   case GNUNET_DNSPARSER_TYPE_PTR:
+    GNS_edit_dialog_ptr (edc);
+    break;
   case GNUNET_DNSPARSER_TYPE_MX:
+    GNS_edit_dialog_mx (edc);
+    break;
   case GNUNET_DNSPARSER_TYPE_TXT:
+    GNS_edit_dialog_txt (edc);
+    break;
   case GNUNET_DNSPARSER_TYPE_AAAA:
+    GNS_edit_dialog_aaaa (edc);
+    break;
+  case GNUNET_NAMESTORE_TYPE_LEHO:
+    GNS_edit_dialog_leho (edc);
+    break;
+  case GNUNET_DNSPARSER_TYPE_SOA:
   case GNUNET_DNSPARSER_TYPE_SRV:
   case GNUNET_DNSPARSER_TYPE_TLSA:
   case GNUNET_NAMESTORE_TYPE_PKEY:
-  case GNUNET_NAMESTORE_TYPE_LEHO:
   case GNUNET_NAMESTORE_TYPE_VPN:
     GNUNET_break (0);   /* FIXME - implement (#2465) */
     edc->cont (edc, GTK_RESPONSE_CANCEL);  /* treat as 'cancel' */




reply via email to

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