gnunet-svn
[Top][All Lists]
Advanced

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

[GNUnet-SVN] r25192 - in gnunet-gtk/src: include setup


From: gnunet
Subject: [GNUnet-SVN] r25192 - in gnunet-gtk/src: include setup
Date: Mon, 3 Dec 2012 16:18:11 +0100

Author: grothoff
Date: 2012-12-03 16:18:11 +0100 (Mon, 03 Dec 2012)
New Revision: 25192

Modified:
   gnunet-gtk/src/include/gnunet_gtk.h
   gnunet-gtk/src/setup/gnunet-setup-gns-edit.c
   gnunet-gtk/src/setup/gnunet-setup-gns-edit.h
Log:
-towards A dialog

Modified: gnunet-gtk/src/include/gnunet_gtk.h
===================================================================
--- gnunet-gtk/src/include/gnunet_gtk.h 2012-12-03 15:09:10 UTC (rev 25191)
+++ gnunet-gtk/src/include/gnunet_gtk.h 2012-12-03 15:18:11 UTC (rev 25192)
@@ -225,6 +225,10 @@
 GtkBuilder *
 GNUNET_GTK_main_loop_get_builder (struct GNUNET_GTK_MainLoop *ml);
 
+
+/**
+ * FIXME!
+ */
 int
 GNUNET_GTK_main_loop_build_window (struct GNUNET_GTK_MainLoop *ml,
                                    gpointer data);

Modified: gnunet-gtk/src/setup/gnunet-setup-gns-edit.c
===================================================================
--- gnunet-gtk/src/setup/gnunet-setup-gns-edit.c        2012-12-03 15:09:10 UTC 
(rev 25191)
+++ gnunet-gtk/src/setup/gnunet-setup-gns-edit.c        2012-12-03 15:18:11 UTC 
(rev 25192)
@@ -24,7 +24,102 @@
  */
 #include "gnunet-setup-gns-edit.h"
 
+
 /**
+ * Initialize widgets of the edit dialog that are the same regardless of
+ * the type of the record.
+ *
+ * @param edc dialog context
+ */
+static void
+edit_dialog_setup_common_elements (struct EditDialogContext *edc)
+{
+  if (GNUNET_YES !=
+      edc->old_record_in_namestore)
+  {
+    gtk_widget_hide (GTK_WIDGET (gtk_builder_get_object (edc->builder,
+                                                        
"edit_dialog_delete_button")));
+    gtk_widget_set_sensitive (GTK_WIDGET (gtk_builder_get_object (edc->builder,
+                                                                 
"edit_dialog_save_button")),
+                             FALSE);
+  }
+  gtk_entry_set_text (GTK_ENTRY (gtk_builder_get_object (edc->builder,
+                                                        
"edit_dialog_name_entry")),
+                     edc->n_new_name);
+  gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (gtk_builder_get_object 
(edc->builder,
+                                                                          
"edit_dialog_options_public_checkbutton")),
+                               edc->n_public);
+  gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (gtk_builder_get_object 
(edc->builder,
+                                                                          
"edit_dialog_options_shadow_checkbutton")),
+                               edc->n_is_shadow);
+  if (GNUNET_TIME_UNIT_FOREVER_REL.rel_value == edc->n_exp_time)
+  {
+    gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (gtk_builder_get_object 
(edc->builder,
+                                                                            
"edit_dialog_expiration_never_radiobutton")),
+                                 TRUE);
+    gtk_widget_hide (GTK_WIDGET (gtk_builder_get_object (edc->builder,
+                                                        
"edit_dialog_expiration_absolute_calendar")));
+    gtk_widget_hide (GTK_WIDGET (gtk_builder_get_object (edc->builder,
+                                                        
"edit_dialog_expiration_absolute_hbox")));
+    gtk_widget_hide (GTK_WIDGET (gtk_builder_get_object (edc->builder,
+                                                        
"edit_dialog_expiration_relative_combobox")));
+  }
+  else
+  {
+    if (edc->n_is_relative)
+    {
+      struct GNUNET_TIME_Relative rt;
+
+      gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (gtk_builder_get_object 
(edc->builder,
+                                                                              
"edit_dialog_expiration_relative_radiobutton")),
+                                   TRUE);
+      gtk_widget_hide (GTK_WIDGET (gtk_builder_get_object (edc->builder,
+                                                          
"edit_dialog_expiration_relative_combobox")));
+      rt.rel_value = edc->n_exp_time;
+      gtk_entry_set_text (GTK_ENTRY (gtk_builder_get_object (edc->builder,
+                                                            
"edit_dialog_expiration_relative_combobox")),
+                         GNUNET_STRINGS_relative_time_to_string (rt, 
GNUNET_NO));
+
+    }
+    else
+    {
+      struct GNUNET_TIME_Absolute at;
+      time_t tp;
+      struct tm *ymd;
+      GtkCalendar *cal;
+      
+      gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (gtk_builder_get_object 
(edc->builder,
+                                                                              
"edit_dialog_expiration_absolute_radiobutton")),
+                                   TRUE);
+      gtk_widget_hide (GTK_WIDGET (gtk_builder_get_object (edc->builder,
+                                                          
"edit_dialog_expiration_absolute_calendar")));
+      gtk_widget_hide (GTK_WIDGET (gtk_builder_get_object (edc->builder,
+                                                          
"edit_dialog_expiration_absolute_hbox")));
+      at.abs_value = edc->n_exp_time;
+      tp = (time_t) (at.abs_value / 1000LL); /* convert to seconds */
+      ymd = gmtime (&tp);
+      cal = GTK_CALENDAR (gtk_builder_get_object (edc->builder,
+                                                 
"edit_dialog_expiration_absolute_calendar"));
+      gtk_calendar_select_month (cal,
+                                ymd->tm_mon,
+                                ymd->tm_year + 1900); 
+      gtk_calendar_mark_day (cal,
+                            ymd->tm_mday);
+      gtk_spin_button_set_value (GTK_SPIN_BUTTON (gtk_builder_get_object 
(edc->builder,
+                                                                         
"edit_dialog_expiration_absolute_hours_spinbutton")),
+                                (double) ymd->tm_hour);
+      gtk_spin_button_set_value (GTK_SPIN_BUTTON (gtk_builder_get_object 
(edc->builder,
+                                                                         
"edit_dialog_expiration_absolute_minutes_spinbutton")),
+                                (double) ymd->tm_min);
+      gtk_spin_button_set_value (GTK_SPIN_BUTTON (gtk_builder_get_object 
(edc->builder,
+                                                                         
"edit_dialog_expiration_absolute_seconds_spinbutton")),
+                                (double) ymd->tm_sec);
+    }
+  }
+}
+
+
+/**
  * Run an GNS Edit dialog for an 'A' Record.
  *
  * @param cont continuation to call when done
@@ -33,6 +128,23 @@
 void
 GNS_edit_dialog_a (struct EditDialogContext *edc)
 {
+  GtkDialog *dialog;
+
+  edc->builder = GNUNET_GTK_get_new_builder ("gnunet_setup_gns_edit_a.glade",
+                                            edc);
+  if (NULL == edc->builder)
+  {
+    GNUNET_break (0);
+    edc->cont (edc, GTK_RESPONSE_CANCEL);  /* treat as 'cancel' */
+    return;    
+  }
+  edit_dialog_setup_common_elements (edc);
+  dialog = GTK_DIALOG (gtk_builder_get_object (edc->builder,
+                                              "edit_a_dialog"));
+  gtk_dialog_set_default_response (GTK_DIALOG (dialog),
+                                  GTK_RESPONSE_OK);
+  gtk_window_present (GTK_WINDOW (dialog));
+
   GNUNET_break (0); /* not implemented */
   edc->cont (edc, GTK_RESPONSE_CANCEL);  /* treat as 'cancel' */
 }

Modified: gnunet-gtk/src/setup/gnunet-setup-gns-edit.h
===================================================================
--- gnunet-gtk/src/setup/gnunet-setup-gns-edit.h        2012-12-03 15:09:10 UTC 
(rev 25191)
+++ gnunet-gtk/src/setup/gnunet-setup-gns-edit.h        2012-12-03 15:18:11 UTC 
(rev 25192)
@@ -57,11 +57,6 @@
 {
 
   /**
-   * Function to call at the end.
-   */
-  GNS_EditContinuation cont;
-
-  /**
    * Where in the tree view are we editing?
    */
   GtkTreeIter it;
@@ -72,6 +67,16 @@
   guint64 n_exp_time;
 
   /**
+   * Function to call at the end.
+   */
+  GNS_EditContinuation cont;
+
+  /**
+   * Builder for the dialog (internal to gnunet-setup-gns-edit.c).
+   */
+  GtkBuilder *builder;
+
+  /**
    * Old name of the record (for deletion).
    */
   gchar *n_name;




reply via email to

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