gnunet-svn
[Top][All Lists]
Advanced

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

[taler-anastasis-gtk] branch master updated (742f9a7 -> c215876)


From: gnunet
Subject: [taler-anastasis-gtk] branch master updated (742f9a7 -> c215876)
Date: Tue, 06 Oct 2020 09:57:36 +0200

This is an automated email from the git hooks/post-receive script.

dennis-neufeld pushed a change to branch master
in repository anastasis-gtk.

    from 742f9a7  work on initial policy
     new bbf3407  worked on policy frame
     new cd351fd  worked on policy frame
     new a1f293d  worked on policy frame
     new 4d812b7  worked on policy frame
     new c215876  fix

The 5 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails.  The revisions
listed as "add" were already present in the repository and have only
been added to this reference.


Summary of changes:
 contrib/anastasis_gtk_main_window.glade | 264 +++++++++++++++++++++++----
 src/anastasis/anastasis-gtk_backup.c    | 311 ++++++++++++++++++++++++++------
 src/anastasis/anastasis-gtk_helper.c    |  60 ++++++
 src/include/anastasis-gtk_helper.h      |  21 +++
 4 files changed, 562 insertions(+), 94 deletions(-)

diff --git a/contrib/anastasis_gtk_main_window.glade 
b/contrib/anastasis_gtk_main_window.glade
index 8b3ad4f..7c8cab4 100644
--- a/contrib/anastasis_gtk_main_window.glade
+++ b/contrib/anastasis_gtk_main_window.glade
@@ -69,15 +69,13 @@
                   </packing>
                 </child>
                 <child>
-                  <object class="GtkComboBoxText">
+                  <object class="GtkComboBoxText" 
id="anastasis_gtk_b_email_dialog_provider">
                     <property name="visible">True</property>
                     <property name="can_focus">False</property>
                     <property name="has_entry">True</property>
-                    <items>
-                      <item translatable="yes">ABCDEFGH</item>
-                    </items>
                     <child internal-child="entry">
                       <object class="GtkEntry">
+                        <property name="visible">True</property>
                         <property name="can_focus">True</property>
                       </object>
                     </child>
@@ -225,15 +223,13 @@
                   </packing>
                 </child>
                 <child>
-                  <object class="GtkComboBoxText">
+                  <object class="GtkComboBoxText" 
id="anastasis_gtk_b_post_dialog_provider">
                     <property name="visible">True</property>
                     <property name="can_focus">False</property>
                     <property name="has_entry">True</property>
-                    <items>
-                      <item translatable="yes">ABCDEFGH</item>
-                    </items>
                     <child internal-child="entry">
                       <object class="GtkEntry">
+                        <property name="visible">True</property>
                         <property name="can_focus">False</property>
                       </object>
                     </child>
@@ -367,17 +363,6 @@
                 <property name="position">4</property>
               </packing>
             </child>
-            <child>
-              <object class="GtkSeparator">
-                <property name="visible">True</property>
-                <property name="can_focus">False</property>
-              </object>
-              <packing>
-                <property name="expand">False</property>
-                <property name="fill">True</property>
-                <property name="position">5</property>
-              </packing>
-            </child>
             <child>
               <object class="GtkBox">
                 <property name="visible">True</property>
@@ -527,15 +512,13 @@
               </packing>
             </child>
             <child>
-              <object class="GtkComboBoxText">
+              <object class="GtkComboBoxText" 
id="anastasis_gtk_b_question_dialog_provider">
                 <property name="visible">True</property>
                 <property name="can_focus">False</property>
                 <property name="has_entry">True</property>
-                <items>
-                  <item translatable="yes">ABCDEFGH</item>
-                </items>
                 <child internal-child="entry">
                   <object class="GtkEntry">
+                    <property name="visible">True</property>
                     <property name="can_focus">True</property>
                   </object>
                 </child>
@@ -729,15 +712,13 @@
               </packing>
             </child>
             <child>
-              <object class="GtkComboBoxText">
+              <object class="GtkComboBoxText" 
id="anastasis_gtk_b_sms_dialog_provider">
                 <property name="visible">True</property>
                 <property name="can_focus">False</property>
                 <property name="has_entry">True</property>
-                <items>
-                  <item translatable="yes">ABCDEFGH</item>
-                </items>
                 <child internal-child="entry">
                   <object class="GtkEntry">
+                    <property name="visible">True</property>
                     <property name="can_focus">True</property>
                   </object>
                 </child>
@@ -901,15 +882,13 @@
                   </packing>
                 </child>
                 <child>
-                  <object class="GtkComboBoxText">
+                  <object class="GtkComboBoxText" 
id="anastasis_gtk_b_video_dialog_provider">
                     <property name="visible">True</property>
                     <property name="can_focus">False</property>
                     <property name="has_entry">True</property>
-                    <items>
-                      <item translatable="yes">ABCDEFGH</item>
-                    </items>
                     <child internal-child="entry">
                       <object class="GtkEntry">
+                        <property name="visible">True</property>
                         <property name="can_focus">True</property>
                       </object>
                     </child>
@@ -1044,6 +1023,77 @@
     <property name="can_focus">False</property>
     <property name="stock">gtk-yes</property>
   </object>
+  <object class="GtkListStore" id="provider_liststore"/>
+  <object class="GtkDialog" id="anastasis_gtk_b_edit_provider_dialog">
+    <property name="can_focus">False</property>
+    <property name="type_hint">dialog</property>
+    <child internal-child="vbox">
+      <object class="GtkBox">
+        <property name="can_focus">False</property>
+        <property name="orientation">vertical</property>
+        <property name="spacing">2</property>
+        <child internal-child="action_area">
+          <object class="GtkButtonBox">
+            <property name="can_focus">False</property>
+            <property name="layout_style">end</property>
+            <child>
+              <object class="GtkButton">
+                <property name="label" translatable="yes">Cancel</property>
+                <property name="visible">True</property>
+                <property name="can_focus">True</property>
+                <property name="receives_default">True</property>
+              </object>
+              <packing>
+                <property name="expand">True</property>
+                <property name="fill">True</property>
+                <property name="position">0</property>
+              </packing>
+            </child>
+            <child>
+              <object class="GtkButton">
+                <property name="label" translatable="yes">OK</property>
+                <property name="visible">True</property>
+                <property name="can_focus">True</property>
+                <property name="receives_default">True</property>
+              </object>
+              <packing>
+                <property name="expand">True</property>
+                <property name="fill">True</property>
+                <property name="position">1</property>
+              </packing>
+            </child>
+          </object>
+          <packing>
+            <property name="expand">False</property>
+            <property name="fill">False</property>
+            <property name="position">0</property>
+          </packing>
+        </child>
+        <child>
+          <object class="GtkTreeView">
+            <property name="visible">True</property>
+            <property name="can_focus">True</property>
+            <property name="model">provider_liststore</property>
+            <child internal-child="selection">
+              <object class="GtkTreeSelection"/>
+            </child>
+          </object>
+          <packing>
+            <property name="expand">False</property>
+            <property name="fill">True</property>
+            <property name="position">0</property>
+          </packing>
+        </child>
+      </object>
+    </child>
+    <child type="titlebar">
+      <object class="GtkLabel">
+        <property name="visible">True</property>
+        <property name="can_focus">False</property>
+        <property name="label" translatable="yes">Edit Provider</property>
+      </object>
+    </child>
+  </object>
   <object class="GtkImage" id="restore_image">
     <property name="visible">True</property>
     <property name="can_focus">False</property>
@@ -1678,13 +1728,14 @@ QUESTION</property>
                                                       <placeholder/>
                                                     </child>
                                                     <child>
-                                                      <object 
class="GtkButton">
+                                                      <object 
class="GtkButton" id="anastasis_gtk_btn_add_auth_edit_provider">
                                                         <property name="label" 
translatable="yes">Edit
 Provider</property>
                                                         <property 
name="visible">True</property>
                                                         <property 
name="can_focus">True</property>
                                                         <property 
name="receives_default">True</property>
                                                         <property 
name="halign">end</property>
+                                                        <signal name="clicked" 
handler="anastasis_gtk_btn_add_auth_edit_provider_clicked_cb" swapped="no"/>
                                                       </object>
                                                       <packing>
                                                         <property 
name="expand">False</property>
@@ -1722,13 +1773,147 @@ Provider</property>
                                 </child>
                               </object>
                               <packing>
-                                <property name="expand">False</property>
+                                <property name="expand">True</property>
                                 <property name="fill">True</property>
                                 <property name="position">3</property>
                               </packing>
                             </child>
                             <child>
-                              <placeholder/>
+                              <object class="GtkFrame" 
id="anastasis_gtk_b_policy_frame">
+                                <property name="can_focus">False</property>
+                                <property name="label_xalign">0</property>
+                                <property name="shadow_type">none</property>
+                                <child>
+                                  <object class="GtkAlignment">
+                                    <property name="visible">True</property>
+                                    <property name="can_focus">False</property>
+                                    <property name="left_padding">12</property>
+                                    <child>
+                                      <object class="GtkGrid" 
id="anastasis_gtk_b_policy_grid">
+                                        <property 
name="visible">True</property>
+                                        <property 
name="can_focus">False</property>
+                                        <child>
+                                          <object class="GtkFrame">
+                                            <property 
name="visible">True</property>
+                                            <property 
name="can_focus">False</property>
+                                            <property 
name="hexpand">True</property>
+                                            <property 
name="label_xalign">0</property>
+                                            <property 
name="shadow_type">in</property>
+                                            <child>
+                                              <object class="GtkLabel">
+                                                <property 
name="visible">True</property>
+                                                <property 
name="can_focus">False</property>
+                                                <property name="label" 
translatable="yes">Method</property>
+                                                <attributes>
+                                                  <attribute name="weight" 
value="ultrabold"/>
+                                                </attributes>
+                                              </object>
+                                            </child>
+                                            <child type="label_item">
+                                              <placeholder/>
+                                            </child>
+                                          </object>
+                                          <packing>
+                                            <property 
name="left_attach">0</property>
+                                            <property 
name="top_attach">0</property>
+                                          </packing>
+                                        </child>
+                                        <child>
+                                          <object class="GtkFrame">
+                                            <property 
name="visible">True</property>
+                                            <property 
name="can_focus">False</property>
+                                            <property 
name="hexpand">True</property>
+                                            <property 
name="label_xalign">0</property>
+                                            <property 
name="shadow_type">in</property>
+                                            <child>
+                                              <object class="GtkLabel">
+                                                <property 
name="visible">True</property>
+                                                <property 
name="can_focus">False</property>
+                                                <property name="label" 
translatable="yes">Recovery Cost</property>
+                                                <attributes>
+                                                  <attribute name="weight" 
value="bold"/>
+                                                </attributes>
+                                              </object>
+                                            </child>
+                                            <child type="label_item">
+                                              <placeholder/>
+                                            </child>
+                                          </object>
+                                          <packing>
+                                            <property 
name="left_attach">6</property>
+                                            <property 
name="top_attach">0</property>
+                                          </packing>
+                                        </child>
+                                        <child>
+                                          <object class="GtkFrame">
+                                            <property 
name="visible">True</property>
+                                            <property 
name="can_focus">False</property>
+                                            <property 
name="hexpand">True</property>
+                                            <property 
name="label_xalign">0</property>
+                                            <property 
name="shadow_type">in</property>
+                                            <child>
+                                              <object class="GtkLabel">
+                                                <property 
name="visible">True</property>
+                                                <property 
name="can_focus">False</property>
+                                                <property name="label" 
translatable="yes">Backup cost</property>
+                                                <attributes>
+                                                  <attribute name="weight" 
value="bold"/>
+                                                </attributes>
+                                              </object>
+                                            </child>
+                                            <child type="label_item">
+                                              <placeholder/>
+                                            </child>
+                                          </object>
+                                          <packing>
+                                            <property 
name="left_attach">5</property>
+                                            <property 
name="top_attach">0</property>
+                                          </packing>
+                                        </child>
+                                        <child>
+                                          <object class="GtkFrame">
+                                            <property 
name="visible">True</property>
+                                            <property 
name="can_focus">False</property>
+                                            <property 
name="hexpand">True</property>
+                                            <property 
name="label_xalign">0</property>
+                                            <property 
name="shadow_type">in</property>
+                                            <child>
+                                              <object class="GtkLabel">
+                                                <property 
name="visible">True</property>
+                                                <property 
name="can_focus">False</property>
+                                                <property name="label" 
translatable="yes">Recovery policies</property>
+                                                <attributes>
+                                                  <attribute name="weight" 
value="bold"/>
+                                                </attributes>
+                                              </object>
+                                            </child>
+                                            <child type="label_item">
+                                              <placeholder/>
+                                            </child>
+                                          </object>
+                                          <packing>
+                                            <property 
name="left_attach">1</property>
+                                            <property 
name="top_attach">0</property>
+                                            <property name="width">4</property>
+                                          </packing>
+                                        </child>
+                                      </object>
+                                    </child>
+                                  </object>
+                                </child>
+                                <child type="label">
+                                  <object class="GtkLabel">
+                                    <property name="visible">True</property>
+                                    <property name="can_focus">False</property>
+                                    <property name="label" 
translatable="yes">Review Recovery Policy</property>
+                                  </object>
+                                </child>
+                              </object>
+                              <packing>
+                                <property name="expand">True</property>
+                                <property name="fill">True</property>
+                                <property name="position">4</property>
+                              </packing>
                             </child>
                             <child>
                               <placeholder/>
@@ -1821,7 +2006,16 @@ Provider</property>
                   </packing>
                 </child>
                 <child>
-                  <placeholder/>
+                  <object class="GtkImage" id="anastasis_gtk_b_policies_image">
+                    <property name="can_focus">False</property>
+                    <property name="vexpand">True</property>
+                    <property name="stock">gtk-missing-image</property>
+                  </object>
+                  <packing>
+                    <property name="expand">False</property>
+                    <property name="fill">False</property>
+                    <property name="position">5</property>
+                  </packing>
                 </child>
               </object>
               <packing>
diff --git a/src/anastasis/anastasis-gtk_backup.c 
b/src/anastasis/anastasis-gtk_backup.c
index bc5c156..de9e71b 100644
--- a/src/anastasis/anastasis-gtk_backup.c
+++ b/src/anastasis/anastasis-gtk_backup.c
@@ -156,6 +156,19 @@ anastasis_gtk_backup_button_clicked (GObject *object,
      }
 }
 
+/**
+ * Callback invoked if the the "backup"-button is clicked.
+ *
+ * @param object
+ * @param user_data unused
+ */
+void
+anastasis_gtk_btn_add_auth_edit_provider_clicked_cb
+{
+     gtk_widget_show (GTK_WIDGET (GCG_get_main_window_object (
+                                        
"anastasis_gtk_b_edit_provider_dialog")));
+}
+
 
 /**
  * Callback invoked if the the "authentication methods delete"-button is 
clicked.
@@ -778,7 +791,7 @@ anastasis_gtk_b_email_dialog_btn_cancel_clicked_cb (GObject 
*object,
  * Callback invoked if the the "authentication methods edit"-button is clicked.
  *
  * @param object
- * @param user_data unused
+ * @param user_data 
  */
 void
 anastasis_gtk_b_auth_method_btn_edit_clicked_cb (GObject *object,
@@ -786,8 +799,12 @@ anastasis_gtk_b_auth_method_btn_edit_clicked_cb (GObject 
*object,
 {
      GList *children, *iter;
      children = gtk_container_get_children (GTK_CONTAINER (user_data));
+     bool policy_frame_active = false;
      char *type = "";
      unsigned int index = 0;
+     if (gtk_widget_is_visible (GTK_WIDGET (GCG_get_main_window_object (
+                                        "anastasis_gtk_b_policy_frame"))))
+          policy_frame_active = true;
      for (iter = children; iter != NULL; iter = g_list_next (iter))
      {
           const gchar *text = "";
@@ -806,127 +823,183 @@ anastasis_gtk_b_auth_method_btn_edit_clicked_cb 
(GObject *object,
                if (0 == strcmp (text, "VIDEO: "))
                     type = "video";
           }
+          if (index == 0 && policy_frame_active)
+               gtk_widget_show (GTK_WIDGET (iter->data));
+          else if (index == 0)
+               gtk_widget_hide (GTK_WIDGET (iter->data));
           if (index > 0)
           {
+               GtkEntry *entry;
+
                if (0 == strcmp (type, "question"))
                {
                     if (index == 1)
-                         gtk_entry_set_text (GTK_ENTRY 
(GCG_get_main_window_object (
-                                        
"anastasis_gtk_b_question_dialog_question_entry")), text);
+                    {
+                         entry = (GtkEntry *) GCG_get_main_window_object (
+                                        
"anastasis_gtk_b_question_dialog_question_entry");
+                         gtk_entry_set_text (entry, text);
+                    }
                     if (index == 2)
                     {
                          gtk_entry_set_text (GTK_ENTRY 
(GCG_get_main_window_object (
                                         
"anastasis_gtk_b_question_dialog_answer_entry")), text);
                          GtkButton *ok_btn = GTK_BUTTON 
(GCG_get_main_window_object (
                                         
"anastasis_gtk_b_question_dialog_btn_ok"));
-                         if (g_signal_question > 0)
-                              g_signal_handler_disconnect (ok_btn, 
g_signal_question);
-                         g_signal_question = g_signal_connect(ok_btn, 
-                                                              "clicked", 
-                                                              G_CALLBACK 
(anastasis_gtk_b_question_dialog_btn_ok_clicked_cb),
-                                                              user_data);
-                         
+                         if (! policy_frame_active)
+                         {
+                              if (g_signal_question > 0)
+                                   g_signal_handler_disconnect (ok_btn, 
g_signal_question);
+                              g_signal_question = g_signal_connect(ok_btn, 
+                                                                 "clicked",
+                                                                 G_CALLBACK 
(anastasis_gtk_b_question_dialog_btn_ok_clicked_cb),
+                                                                 user_data);
+                         }
                          gtk_widget_show (GTK_WIDGET 
(GCG_get_main_window_object (
                                                             
"anastasis_gtk_b_question_dialog")));
-                         break;
-                    }
-                    
+                    } 
                }
                if (0 == strcmp (type, "sms"))
                {
                     if (index == 1)
                     {
-                         gtk_entry_set_text (GTK_ENTRY 
(GCG_get_main_window_object (
-                                        
"anastasis_gtk_b_sms_dialog_phonenumber_entry")), text);
+                         entry = (GtkEntry *) GCG_get_main_window_object (
+                                        
"anastasis_gtk_b_sms_dialog_phonenumber_entry");
+                         gtk_entry_set_text (entry, text);
                          GtkButton *ok_btn = GTK_BUTTON 
(GCG_get_main_window_object (
                                         "anastasis_gtk_b_sms_dialog_btn_ok"));
-                         if (g_signal_sms > 0)
-                              g_signal_handler_disconnect (ok_btn, 
g_signal_sms);
-                         g_signal_sms = g_signal_connect (ok_btn, 
-                                                          "clicked", 
-                                                          G_CALLBACK 
(anastasis_gtk_b_sms_dialog_btn_ok_clicked_cb),
-                                                          user_data);
+                         if (! policy_frame_active)
+                         {
+                              if (g_signal_sms > 0)
+                                   g_signal_handler_disconnect (ok_btn, 
g_signal_sms);
+                              g_signal_sms = g_signal_connect (ok_btn, 
+                                                            "clicked", 
+                                                            G_CALLBACK 
(anastasis_gtk_b_sms_dialog_btn_ok_clicked_cb),
+                                                            user_data);
+                         }
                          
                          gtk_widget_show (GTK_WIDGET 
(GCG_get_main_window_object (
                                                             
"anastasis_gtk_b_sms_dialog")));
-                         break;
                     }
                }
                if (0 == strcmp (type, "email"))
                {
                     if (index == 1)
                     {
-                         gtk_entry_set_text (GTK_ENTRY 
(GCG_get_main_window_object (
-                                        
"anastasis_gtk_b_email_dialog_mailaddress_entry")), text);
+                         entry = (GtkEntry *) GCG_get_main_window_object (
+                                        
"anastasis_gtk_b_email_dialog_mailaddress_entry");
+                         gtk_entry_set_text (entry, text);
                          GtkButton *ok_btn = GTK_BUTTON 
(GCG_get_main_window_object (
                                         
"anastasis_gtk_b_email_dialog_btn_ok"));
-                         if (g_signal_email > 0)
-                              g_signal_handler_disconnect (ok_btn, 
g_signal_email);
-                         g_signal_email = g_signal_connect (ok_btn, 
-                                                            "clicked", 
-                                                            G_CALLBACK 
(anastasis_gtk_b_email_dialog_btn_ok_clicked_cb),
-                                                            user_data);
+                         if (! policy_frame_active)
+                         {
+                              if (g_signal_email > 0)
+                                   g_signal_handler_disconnect (ok_btn, 
g_signal_email);
+                              g_signal_email = g_signal_connect (ok_btn, 
+                                                                 "clicked", 
+                                                                 G_CALLBACK 
(anastasis_gtk_b_email_dialog_btn_ok_clicked_cb),
+                                                                 user_data);
+                         }
                          
                          gtk_widget_show (GTK_WIDGET 
(GCG_get_main_window_object (
                                                             
"anastasis_gtk_b_email_dialog")));
-                         break;
                     }
                }
                if (0 == strcmp (type, "post"))
-               {
+               {         
                     if (index == 1)
-                         gtk_entry_set_text (GTK_ENTRY 
(GCG_get_main_window_object (
-                                        
"anastasis_gtk_b_post_dialog_full_name_entry")), text);
+                    {
+                         entry = (GtkEntry *) GCG_get_main_window_object (
+                                        
"anastasis_gtk_b_post_dialog_full_name_entry");
+                         gtk_entry_set_text (entry, text);
+                    }
                     if (index == 2)
-                         gtk_entry_set_text (GTK_ENTRY 
(GCG_get_main_window_object (
-                                        
"anastasis_gtk_b_post_dialog_street_entry")), text);
+                    {
+                         entry = (GtkEntry *) GCG_get_main_window_object (
+                                        
"anastasis_gtk_b_post_dialog_street_entry");
+                         gtk_entry_set_text (entry, text);
+                    }
                     if (index == 3)
-                         gtk_entry_set_text (GTK_ENTRY 
(GCG_get_main_window_object (
-                                        
"anastasis_gtk_b_post_dialog_city_entry")), text);
+                    {
+                         entry = (GtkEntry *) GCG_get_main_window_object (
+                                        
"anastasis_gtk_b_post_dialog_city_entry");
+                         gtk_entry_set_text (entry, text);
+                    }
                     if (index == 4)
-                         gtk_entry_set_text (GTK_ENTRY 
(GCG_get_main_window_object (
-                                        
"anastasis_gtk_b_post_dialog_postcode_entry")), text);
+                    {
+                         entry = (GtkEntry *) GCG_get_main_window_object (
+                                        
"anastasis_gtk_b_post_dialog_postcode_entry");
+                         gtk_entry_set_text (entry, text);
+                    }
                     if (index == 5)
                     {
-                         gtk_entry_set_text (GTK_ENTRY 
(GCG_get_main_window_object (
-                                        
"anastasis_gtk_b_post_dialog_country_entry")), text);
+                         entry = (GtkEntry *) GCG_get_main_window_object (
+                                        
"anastasis_gtk_b_post_dialog_country_entry");
+                         gtk_entry_set_text (entry, text);
                          GtkButton *ok_btn = GTK_BUTTON 
(GCG_get_main_window_object (
                                         "anastasis_gtk_b_post_dialog_btn_ok"));
-                         if (g_signal_post > 0)
-                              g_signal_handler_disconnect (ok_btn, 
g_signal_post);
-                         g_signal_post = g_signal_connect (ok_btn, 
-                                                           "clicked", 
-                                                           G_CALLBACK 
(anastasis_gtk_b_post_dialog_btn_ok_clicked_cb),
-                                                           user_data);
+                         if (! policy_frame_active)
+                         {
+                              if (g_signal_post > 0)
+                                   g_signal_handler_disconnect (ok_btn, 
g_signal_post);
+                              g_signal_post = g_signal_connect (ok_btn, 
+                                                            "clicked", 
+                                                            G_CALLBACK 
(anastasis_gtk_b_post_dialog_btn_ok_clicked_cb),
+                                                            user_data);
+                         }
                          
                          gtk_widget_show (GTK_WIDGET 
(GCG_get_main_window_object (
                                                             
"anastasis_gtk_b_post_dialog")));
-                         break;
                     }
                }
                if (0 == strcmp (type, "video"))
                {
                     if (index == 1)
                     {
-                         gtk_entry_set_text (GTK_ENTRY 
(GCG_get_main_window_object (
-                                        
"anastasis_gtk_b_video_dialog_photo_path_entry")), text);
+                         GtkEntry *entry = (GtkEntry *) 
GCG_get_main_window_object (
+                                        
"anastasis_gtk_b_video_dialog_photo_path_entry");
+                         gtk_entry_set_text (entry, text);
+
                          GtkButton *ok_btn = GTK_BUTTON 
(GCG_get_main_window_object (
                                         
"anastasis_gtk_b_video_dialog_btn_ok"));
-                         if (g_signal_video > 0)
+                         if (! policy_frame_active)
+                         {
+                              if (g_signal_video > 0)
                               g_signal_handler_disconnect (ok_btn, 
g_signal_video);
-                         g_signal_video = g_signal_connect (ok_btn, 
-                                                            "clicked", 
-                                                            G_CALLBACK 
(anastasis_gtk_b_video_dialog_btn_ok_clicked_cb),
-                                                            user_data);
+                              g_signal_video = g_signal_connect (ok_btn, 
+                                                                 "clicked", 
+                                                                 G_CALLBACK 
(anastasis_gtk_b_video_dialog_btn_ok_clicked_cb),
+                                                                 user_data);
+                         }
                          
                          gtk_widget_show (GTK_WIDGET 
(GCG_get_main_window_object (
                                                             
"anastasis_gtk_b_video_dialog")));
-                         break;
                     }
                }
+               if (entry && policy_frame_active)
+                    gtk_editable_set_editable (GTK_EDITABLE (entry), false);
+               else if (entry)
+                    gtk_editable_set_editable (GTK_EDITABLE (entry), true);
           }
           index++;
      }
+     if (policy_frame_active)
+     {
+          //show provider combo box
+          gtk_widget_show (gtk_widget_get_parent (GTK_WIDGET 
+                         (GCG_get_main_window_object 
("anastasis_gtk_b_sms_dialog_provider"))));
+          gtk_widget_show (gtk_widget_get_parent (GTK_WIDGET 
+                         (GCG_get_main_window_object 
("anastasis_gtk_b_email_dialog_provider"))));
+          gtk_widget_show (gtk_widget_get_parent (GTK_WIDGET 
+                         (GCG_get_main_window_object 
("anastasis_gtk_b_question_dialog_provider"))));
+          gtk_widget_show (gtk_widget_get_parent (GTK_WIDGET 
+                         (GCG_get_main_window_object 
("anastasis_gtk_b_post_dialog_provider"))));
+          gtk_widget_show (gtk_widget_get_parent (GTK_WIDGET 
+                         (GCG_get_main_window_object 
("anastasis_gtk_b_video_dialog_provider"))));
+
+          //hide secret answer entry
+          gtk_widget_hide (gtk_widget_get_parent (GTK_WIDGET 
+                         (GCG_get_main_window_object 
("anastasis_gtk_b_question_dialog_answer_entry"))));
+     }
      g_list_free (children);
 }
 
@@ -964,6 +1037,7 @@ config_cb (void *cls,
                          __LINE__);
           return;
      }
+     
      cs->server->backend_methods = methods;
      cs->server->backend_cost = *annual_fee;
      cs->server->backend_currency = GNUNET_malloc (strlen (conf_currency));
@@ -983,13 +1057,57 @@ config_cb (void *cls,
                                 method_str);
                gtk_widget_show (GTK_WIDGET (GCG_get_main_window_object (
                                              widget)));
+
+               //fill up provider combo boxes of dialogs
+               {
+                    if (0 == strcmp (method_str, "sms"))
+                    {
+                         GtkComboBoxText *cmb_dialog_sms_provider = 
(GtkComboBoxText *) GCG_get_main_window_object (
+                              "anastasis_gtk_b_sms_dialog_provider");
+                         gtk_combo_box_text_append (cmb_dialog_sms_provider,
+                                                    NULL,
+                                                    cs->server->backend_id);
+                    }
+                    if (0 == strcmp (method_str, "email"))
+                    {
+                         GtkComboBoxText *cmb_dialog_email_provider = 
(GtkComboBoxText *) GCG_get_main_window_object (
+                              "anastasis_gtk_b_email_dialog_provider");
+                         gtk_combo_box_text_append (cmb_dialog_email_provider,
+                                                    NULL,
+                                                    cs->server->backend_id);
+                    }
+                    if (0 == strcmp (method_str, "video"))
+                    {
+                         GtkComboBoxText *cmb_dialog_video_provider = 
(GtkComboBoxText *) GCG_get_main_window_object (
+                              "anastasis_gtk_b_video_dialog_provider");
+                         gtk_combo_box_text_append (cmb_dialog_video_provider,
+                                                    NULL,
+                                                    cs->server->backend_id);
+                    }
+                    if (0 == strcmp (method_str, "post"))
+                    {
+                         GtkComboBoxText *cmb_dialog_post_provider = 
(GtkComboBoxText *) GCG_get_main_window_object (
+                              "anastasis_gtk_b_post_dialog_provider");
+                         gtk_combo_box_text_append (cmb_dialog_post_provider,
+                                                    NULL,
+                                                    cs->server->backend_id);
+                    }
+                    if (0 == strcmp (method_str, "question"))
+                    {
+                         GtkComboBoxText *cmb_dialog_question_provider = 
(GtkComboBoxText *) GCG_get_main_window_object (
+                              "anastasis_gtk_b_question_dialog_provider");
+                         gtk_combo_box_text_append 
(cmb_dialog_question_provider,
+                                                    NULL,
+                                                    cs->server->backend_id);
+                    }
+               }
           }
      }
 }
 
 
 /**
- * Initialize the auhentication methods in backup mode.
+ * Prepare authentication methods for policy generation.
  * 
  * @param state the state to operate on
  */
@@ -999,12 +1117,46 @@ init_b_policy (json_t *state)
      GList *children, *iter;
      json_t *arguments = json_object ();
      json_t *argument_arr = json_array ();
+     unsigned int row = 0;
+     GtkGrid *grid = GTK_GRID (GCG_get_main_window_object 
("anastasis_gtk_b_policy_grid"));
+
+     //format title label for methods
+     GtkFrame *frm_method_title = GTK_FRAME (gtk_grid_get_child_at (grid, 0, 
0));
+     gtk_widget_set_hexpand (GTK_WIDGET (frm_method_title), true);
+     gtk_widget_set_halign (GTK_WIDGET (frm_method_title), GTK_ALIGN_FILL);
+     gtk_widget_set_valign (GTK_WIDGET (frm_method_title), GTK_ALIGN_CENTER);
+
+     //format title label for policies
+     GtkFrame *frm_policy_title = GTK_FRAME (gtk_grid_get_child_at (grid, 1, 
0));
+     gtk_widget_set_hexpand (GTK_WIDGET (frm_policy_title), true);
+     gtk_widget_set_halign (GTK_WIDGET (frm_policy_title), GTK_ALIGN_FILL);
+     gtk_widget_set_valign (GTK_WIDGET (frm_policy_title), GTK_ALIGN_CENTER);
+
+     //get number of policies/policy columns
+     int policies_col = get_widget_width (grid, GTK_WIDGET (frm_policy_title));
+
+     //format title label for backup cost
+     GtkFrame *frm_b_cost_title = 
+                    GTK_FRAME (gtk_grid_get_child_at (grid, policies_col + 1, 
0));
+     gtk_widget_set_hexpand (GTK_WIDGET (frm_b_cost_title), true);
+     gtk_widget_set_halign (GTK_WIDGET (frm_b_cost_title), GTK_ALIGN_FILL);
+     gtk_widget_set_valign (GTK_WIDGET (frm_b_cost_title), GTK_ALIGN_CENTER);
+
+     //format title label for backup cost
+     GtkFrame *frm_r_cost_title = 
+                    GTK_FRAME (gtk_grid_get_child_at (grid, policies_col + 2, 
0));
+     gtk_widget_set_hexpand (GTK_WIDGET (frm_r_cost_title), true);
+     gtk_widget_set_halign (GTK_WIDGET (frm_r_cost_title), GTK_ALIGN_FILL);
+     gtk_widget_set_valign (GTK_WIDGET (frm_r_cost_title), GTK_ALIGN_CENTER);
+
      children = gtk_container_get_children (GTK_CONTAINER 
(GCG_get_main_window_object (
                                                                     
"anastasis_gtk_b_authentication_vbox")));
      for (iter = children; iter != NULL; iter = g_list_next (iter))
      {
           GList *grandchildren, *inner_iter;
           grandchildren = gtk_container_get_children (GTK_CONTAINER 
(iter->data));
+          GtkFrame *method_frame = (GtkFrame *) gtk_frame_new (NULL);
+          GtkHBox *method_hbox = (GtkHBox *) gtk_box_new 
(GTK_ORIENTATION_HORIZONTAL, 2);
           json_t *argument = json_object ();
           json_t *provider_arr = json_array ();
           unsigned int index = 0;
@@ -1029,6 +1181,12 @@ init_b_policy (json_t *state)
                                    json_object_set_new (argument, "method", 
json_string ("post"));
                               else if (0 == strcmp (text, "VIDEO: "))
                                    json_object_set_new (argument, "method", 
json_string ("video"));
+                              
+                              row++;
+                              gtk_grid_insert_row (grid, row);
+                              GtkLabel *lbl_method_type = (GtkLabel *) 
gtk_label_new (text);
+                              gtk_box_pack_start (GTK_BOX (method_hbox), 
GTK_WIDGET (lbl_method_type), 0, 0, 0);
+                              gtk_widget_show (GTK_WIDGET (lbl_method_type));
                          }
 
                          // check method attributes
@@ -1045,6 +1203,17 @@ init_b_policy (json_t *state)
                                    json_object_set_new (argument, "full_name", 
json_string (text));
                               else if (0 == strcmp (method_type, "video"))
                                    json_object_set_new (argument, 
"path_picture", json_string (text));
+
+                              GtkLabel *lbl_method_info = (GtkLabel *) 
gtk_label_new (text);
+                              gtk_box_pack_start (GTK_BOX (method_hbox), 
GTK_WIDGET (lbl_method_info), 0, 0, 0);
+                              GtkButton *btn_edit_method = (GtkButton *) 
gtk_button_new_from_icon_name ("gtk-edit", GTK_ICON_SIZE_BUTTON);
+                              g_signal_connect (btn_edit_method, 
+                                                "clicked", 
+                                                G_CALLBACK 
(anastasis_gtk_b_auth_method_btn_edit_clicked_cb),
+                                                method_hbox);
+                              gtk_box_pack_end (GTK_BOX (method_hbox), 
GTK_WIDGET (btn_edit_method), 0, 0, 0);
+                              gtk_widget_show (GTK_WIDGET (lbl_method_info));
+                              gtk_widget_show (GTK_WIDGET (btn_edit_method));
                          }
 
                          if (index == 2)
@@ -1104,6 +1273,30 @@ init_b_policy (json_t *state)
                     }
                }
           }
+          gtk_frame_set_shadow_type (GTK_FRAME (method_frame), GTK_SHADOW_IN);
+          gtk_container_add (GTK_CONTAINER (method_frame),
+                             GTK_WIDGET (method_hbox));
+          gtk_grid_attach (grid,
+                           GTK_WIDGET (method_frame),
+                           0, row, 1, 1);
+          gtk_widget_show (GTK_WIDGET (method_hbox));
+          gtk_widget_show (GTK_WIDGET (method_frame));
+          for (unsigned int i = 0; i < policies_col; i++)
+          {
+               GtkFrame *frame = (GtkFrame *) gtk_frame_new (NULL);
+               gtk_frame_set_shadow_type (GTK_FRAME (frame), GTK_SHADOW_IN);
+               GtkCheckButton *chk_btn = (GtkCheckButton *) 
gtk_check_button_new ();
+               gtk_container_add (GTK_CONTAINER (frame),
+                                 GTK_WIDGET (chk_btn));
+               gtk_grid_attach (grid,
+                                GTK_WIDGET (frame),
+                                i + 1, row, 1, 1);
+               gtk_widget_set_halign (GTK_WIDGET (chk_btn), GTK_ALIGN_CENTER);
+               gtk_widget_set_valign (GTK_WIDGET (chk_btn), GTK_ALIGN_CENTER);
+               gtk_widget_set_halign (GTK_WIDGET (frame), GTK_ALIGN_FILL);
+               gtk_widget_show (GTK_WIDGET (chk_btn));
+               gtk_widget_show (GTK_WIDGET (frame));
+          }
           json_object_set_new (argument, "providers", provider_arr);
           json_array_append_new (argument_arr, argument);
           g_list_free (grandchildren);
@@ -1114,7 +1307,7 @@ init_b_policy (json_t *state)
                              "adding_authentication",
                              arguments,
                              &action_cb,
-                             NULL);
+                             NULL);  
 }
 
 
diff --git a/src/anastasis/anastasis-gtk_helper.c 
b/src/anastasis/anastasis-gtk_helper.c
index 3df08af..65610d5 100644
--- a/src/anastasis/anastasis-gtk_helper.c
+++ b/src/anastasis/anastasis-gtk_helper.c
@@ -32,6 +32,49 @@
 #include <jansson.h>
 
 
+/**
+ * Get num of cols a widget takes in a grid.
+ * 
+ * @param grid Grid the widget belongs to
+ * @param widget Widget to look up
+ * @return int
+ */
+int
+get_widget_width (GtkGrid *grid,
+                      GtkWidget *widget)
+{
+     //get number of policies/policy columns
+     GValue val_policies_col = G_VALUE_INIT;
+     g_value_init (&val_policies_col, G_TYPE_INT);
+     gtk_container_child_get_property (GTK_CONTAINER (grid), 
+                                       GTK_WIDGET (widget), 
+                                       "width", 
+                                       &val_policies_col);
+     return g_value_get_int (&val_policies_col);
+}
+
+
+/**
+ * Set policy check buttons according to policies in state.
+ * 
+ * @param state the state to operate on
+ */
+void
+set_policy_check_buttons (json_t *state)
+{
+     GtkGrid *grid = GTK_GRID (GCG_get_main_window_object 
("anastasis_gtk_b_policy_grid"));
+
+     //get number of policies/policy columns
+     GtkFrame *frm_policy_title = GTK_FRAME (gtk_grid_get_child_at (grid, 1, 
0));
+     int cols = get_widget_width (grid, GTK_WIDGET (frm_policy_title));
+
+     for (unsigned int i = 0; i < cols; i++)
+     {
+          /** FIXME: set check buttons here */
+     }
+}
+
+
 /**
  * Function to ckeck if required attributes are set.
  * 
@@ -194,6 +237,23 @@ action_cb (void *cls,
                                                 
"anastasis_gtk_b_authentication_methods_image")));
             }
         }
+        if (check_state (redux_state, "ReduxAuthenticationAddedState")
+                && gtk_widget_is_visible (GTK_WIDGET 
(GCG_get_main_window_object (
+                                        
"anastasis_gtk_b_authentication_frame"))))
+        {
+            if (json_object_get (redux_state, "backup-state"))
+            {
+                gtk_widget_hide (GTK_WIDGET (GCG_get_main_window_object (
+                                        
"anastasis_gtk_b_authentication_frame")));
+                gtk_widget_hide (GTK_WIDGET (GCG_get_main_window_object (
+                                        
"anastasis_gtk_b_authentication_methods_image")));
+                gtk_widget_show (GTK_WIDGET (GCG_get_main_window_object (
+                                        "anastasis_gtk_b_policy_frame")));
+                gtk_widget_show (GTK_WIDGET (GCG_get_main_window_object (
+                                                
"anastasis_gtk_b_policies_image")));
+                set_policy_check_buttons (redux_state);
+            }
+        }
         /** FIXME: Don't use this like this; now used to check if json state 
is build correctly */
         if (0 == persist_state (redux_state))
             return;
diff --git a/src/include/anastasis-gtk_helper.h 
b/src/include/anastasis-gtk_helper.h
index 7bcd44e..b5694bd 100644
--- a/src/include/anastasis-gtk_helper.h
+++ b/src/include/anastasis-gtk_helper.h
@@ -149,6 +149,27 @@ void
 init_b_auth_methods (json_t *state);
 
 
+/**
+ * Get num of cols a widget takes in a grid.
+ * 
+ * @param grid Grid the widget belongs to
+ * @param widget Widget to look up
+ * @return int
+ */
+int 
+get_widget_width (GtkGrid *grid,
+                  GtkWidget *widget);
+
+
+/**
+ * Set policy check buttons according to policies in state.
+ * 
+ * @param state the state to operate on
+ */
+void
+set_policy_check_buttons (json_t *state);
+
+
 /**
  * Initialize the policies in backup mode.
  * 

-- 
To stop receiving notification emails like this one, please contact
gnunet@gnunet.org.



reply via email to

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