gnunet-svn
[Top][All Lists]
Advanced

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

[taler-anastasis-gtk] branch master updated (d6961fe -> 095cb09)


From: gnunet
Subject: [taler-anastasis-gtk] branch master updated (d6961fe -> 095cb09)
Date: Wed, 23 Sep 2020 19:02:50 +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 d6961fe  modified authentication frame (backup)
     new a8bfe2c  worked on authentication_frame
     new d0b0015  worked on authentication_frame, added illustration
     new b989af0  worked on illustrations and authentication frame
     new 45e4f31  worked on adding authentication methods
     new 095cb09  worked on authentication_frame, add methods, edit methods, 
delete methods

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/Makefile.am                     |    8 +-
 contrib/anastasis_gtk_main_window.glade | 2023 +++++++++++++++++++++++--------
 contrib/authentication_methods.png      |  Bin 0 -> 82253 bytes
 contrib/continent_selection.png         |  Bin 0 -> 364045 bytes
 contrib/country_selection.png           |  Bin 0 -> 816074 bytes
 contrib/user_attributes.png             |  Bin 0 -> 29782 bytes
 src/anastasis/Makefile.am               |    4 +-
 src/anastasis/anastasis-gtk.c           |  437 +++++++
 src/anastasis/anastasis-gtk_backup.c    |  945 +++++++++++++++
 src/anastasis/anastasis-gtk_helper.c    |  360 +-----
 src/include/anastasis-gtk_helper.h      |   31 +-
 11 files changed, 2973 insertions(+), 835 deletions(-)
 create mode 100644 contrib/authentication_methods.png
 create mode 100644 contrib/continent_selection.png
 create mode 100644 contrib/country_selection.png
 create mode 100644 contrib/user_attributes.png

diff --git a/contrib/Makefile.am b/contrib/Makefile.am
index 31ba751..2bd85f9 100644
--- a/contrib/Makefile.am
+++ b/contrib/Makefile.am
@@ -6,7 +6,11 @@ SUBDIRS = .
 pkgdatadir= $(prefix)/share/anastasis/
 
 IMAGES = \
- logo.svg
+  logo.svg \
+  country_selection.png \
+  continent_selection.png \
+  user_attributes.png \
+  authentication_methods.png 
 
 EXTRA_DIST = \
   $(pkgdata_DATA) \
@@ -16,4 +20,4 @@ EXTRA_DIST = \
 pkgdata_DATA = \
   $(IMAGES) \
   anastasis_gtk_about_window.glade \
-  anastasis_gtk_main_window.glade
+  anastasis_gtk_main_window.glade 
diff --git a/contrib/anastasis_gtk_main_window.glade 
b/contrib/anastasis_gtk_main_window.glade
index 124ce6f..8b3ad4f 100644
--- a/contrib/anastasis_gtk_main_window.glade
+++ b/contrib/anastasis_gtk_main_window.glade
@@ -2,6 +2,1017 @@
 <!-- Generated with glade 3.36.0 -->
 <interface>
   <requires lib="gtk+" version="3.0"/>
+  <object class="GtkDialog" id="anastasis_gtk_b_email_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" 
id="anastasis_gtk_b_email_dialog_btn_cancel">
+                <property name="label" translatable="yes">Cancel</property>
+                <property name="visible">True</property>
+                <property name="can_focus">True</property>
+                <property name="receives_default">True</property>
+                <signal name="clicked" 
handler="anastasis_gtk_b_email_dialog_btn_cancel_clicked_cb" swapped="no"/>
+              </object>
+              <packing>
+                <property name="expand">True</property>
+                <property name="fill">True</property>
+                <property name="position">0</property>
+              </packing>
+            </child>
+            <child>
+              <object class="GtkButton" 
id="anastasis_gtk_b_email_dialog_btn_ok">
+                <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="GtkBox">
+            <property name="visible">True</property>
+            <property name="can_focus">False</property>
+            <property name="orientation">vertical</property>
+            <child>
+              <object class="GtkBox">
+                <property name="can_focus">False</property>
+                <child>
+                  <object class="GtkLabel">
+                    <property name="visible">True</property>
+                    <property name="can_focus">False</property>
+                    <property name="label" translatable="yes">Choose 
provider:</property>
+                  </object>
+                  <packing>
+                    <property name="expand">False</property>
+                    <property name="fill">True</property>
+                    <property name="position">0</property>
+                  </packing>
+                </child>
+                <child>
+                  <object class="GtkComboBoxText">
+                    <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="can_focus">True</property>
+                      </object>
+                    </child>
+                  </object>
+                  <packing>
+                    <property name="expand">False</property>
+                    <property name="fill">True</property>
+                    <property name="position">1</property>
+                  </packing>
+                </child>
+              </object>
+              <packing>
+                <property name="expand">False</property>
+                <property name="fill">True</property>
+                <property name="position">0</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">1</property>
+              </packing>
+            </child>
+            <child>
+              <object class="GtkBox">
+                <property name="visible">True</property>
+                <property name="can_focus">False</property>
+                <child>
+                  <object class="GtkLabel">
+                    <property name="visible">True</property>
+                    <property name="can_focus">False</property>
+                    <property name="label" translatable="yes">Email 
address:</property>
+                  </object>
+                  <packing>
+                    <property name="expand">False</property>
+                    <property name="fill">True</property>
+                    <property name="position">0</property>
+                  </packing>
+                </child>
+                <child>
+                  <object class="GtkEntry" 
id="anastasis_gtk_b_email_dialog_mailaddress_entry">
+                    <property name="visible">True</property>
+                    <property name="can_focus">True</property>
+                    <property name="hexpand">True</property>
+                  </object>
+                  <packing>
+                    <property name="expand">False</property>
+                    <property name="fill">True</property>
+                    <property name="position">1</property>
+                  </packing>
+                </child>
+              </object>
+              <packing>
+                <property name="expand">False</property>
+                <property name="fill">True</property>
+                <property name="position">2</property>
+              </packing>
+            </child>
+          </object>
+          <packing>
+            <property name="expand">False</property>
+            <property name="fill">True</property>
+            <property name="position">1</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">Add email 
authentication</property>
+      </object>
+    </child>
+  </object>
+  <object class="GtkDialog" id="anastasis_gtk_b_post_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" 
id="anastasis_gtk_b_post_dialog_btn_cancel">
+                <property name="label" translatable="yes">Cancel</property>
+                <property name="visible">True</property>
+                <property name="can_focus">True</property>
+                <property name="receives_default">True</property>
+                <signal name="clicked" 
handler="anastasis_gtk_b_post_dialog_btn_cancel_clicked_cb" swapped="no"/>
+              </object>
+              <packing>
+                <property name="expand">True</property>
+                <property name="fill">True</property>
+                <property name="position">0</property>
+              </packing>
+            </child>
+            <child>
+              <object class="GtkButton" 
id="anastasis_gtk_b_post_dialog_btn_ok">
+                <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="GtkBox">
+            <property name="visible">True</property>
+            <property name="can_focus">False</property>
+            <property name="orientation">vertical</property>
+            <child>
+              <object class="GtkBox">
+                <property name="can_focus">False</property>
+                <child>
+                  <object class="GtkLabel">
+                    <property name="visible">True</property>
+                    <property name="can_focus">False</property>
+                    <property name="label" translatable="yes">Choose 
provider:</property>
+                  </object>
+                  <packing>
+                    <property name="expand">False</property>
+                    <property name="fill">True</property>
+                    <property name="position">0</property>
+                  </packing>
+                </child>
+                <child>
+                  <object class="GtkComboBoxText">
+                    <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="can_focus">False</property>
+                      </object>
+                    </child>
+                  </object>
+                  <packing>
+                    <property name="expand">False</property>
+                    <property name="fill">True</property>
+                    <property name="position">1</property>
+                  </packing>
+                </child>
+              </object>
+              <packing>
+                <property name="expand">False</property>
+                <property name="fill">True</property>
+                <property name="position">0</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">1</property>
+              </packing>
+            </child>
+            <child>
+              <object class="GtkBox">
+                <property name="visible">True</property>
+                <property name="can_focus">False</property>
+                <child>
+                  <object class="GtkLabel">
+                    <property name="visible">True</property>
+                    <property name="can_focus">False</property>
+                    <property name="label" translatable="yes">Full 
name:</property>
+                  </object>
+                  <packing>
+                    <property name="expand">False</property>
+                    <property name="fill">True</property>
+                    <property name="position">0</property>
+                  </packing>
+                </child>
+                <child>
+                  <object class="GtkEntry" 
id="anastasis_gtk_b_post_dialog_full_name_entry">
+                    <property name="visible">True</property>
+                    <property name="can_focus">True</property>
+                    <property name="hexpand">True</property>
+                  </object>
+                  <packing>
+                    <property name="expand">False</property>
+                    <property name="fill">True</property>
+                    <property name="position">1</property>
+                  </packing>
+                </child>
+              </object>
+              <packing>
+                <property name="expand">False</property>
+                <property name="fill">True</property>
+                <property name="position">2</property>
+              </packing>
+            </child>
+            <child>
+              <object class="GtkBox">
+                <property name="visible">True</property>
+                <property name="can_focus">False</property>
+                <child>
+                  <object class="GtkLabel">
+                    <property name="visible">True</property>
+                    <property name="can_focus">False</property>
+                    <property name="label" 
translatable="yes">Street:</property>
+                  </object>
+                  <packing>
+                    <property name="expand">False</property>
+                    <property name="fill">True</property>
+                    <property name="position">0</property>
+                  </packing>
+                </child>
+                <child>
+                  <object class="GtkEntry" 
id="anastasis_gtk_b_post_dialog_street_entry">
+                    <property name="visible">True</property>
+                    <property name="can_focus">True</property>
+                    <property name="hexpand">True</property>
+                  </object>
+                  <packing>
+                    <property name="expand">False</property>
+                    <property name="fill">True</property>
+                    <property name="position">1</property>
+                  </packing>
+                </child>
+              </object>
+              <packing>
+                <property name="expand">False</property>
+                <property name="fill">True</property>
+                <property name="position">3</property>
+              </packing>
+            </child>
+            <child>
+              <object class="GtkBox">
+                <property name="visible">True</property>
+                <property name="can_focus">False</property>
+                <child>
+                  <object class="GtkLabel">
+                    <property name="visible">True</property>
+                    <property name="can_focus">False</property>
+                    <property name="label" translatable="yes">City:</property>
+                  </object>
+                  <packing>
+                    <property name="expand">False</property>
+                    <property name="fill">True</property>
+                    <property name="position">0</property>
+                  </packing>
+                </child>
+                <child>
+                  <object class="GtkEntry" 
id="anastasis_gtk_b_post_dialog_city_entry">
+                    <property name="visible">True</property>
+                    <property name="can_focus">True</property>
+                    <property name="hexpand">True</property>
+                  </object>
+                  <packing>
+                    <property name="expand">False</property>
+                    <property name="fill">True</property>
+                    <property name="position">1</property>
+                  </packing>
+                </child>
+              </object>
+              <packing>
+                <property name="expand">False</property>
+                <property name="fill">True</property>
+                <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>
+                <property name="can_focus">False</property>
+                <child>
+                  <object class="GtkLabel">
+                    <property name="visible">True</property>
+                    <property name="can_focus">False</property>
+                    <property name="label" 
translatable="yes">Postcode:</property>
+                  </object>
+                  <packing>
+                    <property name="expand">False</property>
+                    <property name="fill">True</property>
+                    <property name="position">0</property>
+                  </packing>
+                </child>
+                <child>
+                  <object class="GtkEntry" 
id="anastasis_gtk_b_post_dialog_postcode_entry">
+                    <property name="visible">True</property>
+                    <property name="can_focus">True</property>
+                    <property name="hexpand">True</property>
+                  </object>
+                  <packing>
+                    <property name="expand">False</property>
+                    <property name="fill">True</property>
+                    <property name="position">1</property>
+                  </packing>
+                </child>
+              </object>
+              <packing>
+                <property name="expand">False</property>
+                <property name="fill">True</property>
+                <property name="position">6</property>
+              </packing>
+            </child>
+            <child>
+              <object class="GtkBox">
+                <property name="visible">True</property>
+                <property name="can_focus">False</property>
+                <child>
+                  <object class="GtkLabel">
+                    <property name="visible">True</property>
+                    <property name="can_focus">False</property>
+                    <property name="label" 
translatable="yes">Country:</property>
+                  </object>
+                  <packing>
+                    <property name="expand">False</property>
+                    <property name="fill">True</property>
+                    <property name="position">0</property>
+                  </packing>
+                </child>
+                <child>
+                  <object class="GtkEntry" 
id="anastasis_gtk_b_post_dialog_country_entry">
+                    <property name="visible">True</property>
+                    <property name="can_focus">True</property>
+                    <property name="hexpand">True</property>
+                  </object>
+                  <packing>
+                    <property name="expand">False</property>
+                    <property name="fill">True</property>
+                    <property name="position">1</property>
+                  </packing>
+                </child>
+              </object>
+              <packing>
+                <property name="expand">False</property>
+                <property name="fill">True</property>
+                <property name="position">7</property>
+              </packing>
+            </child>
+          </object>
+          <packing>
+            <property name="expand">False</property>
+            <property name="fill">True</property>
+            <property name="position">1</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">Add post 
authentication</property>
+      </object>
+    </child>
+  </object>
+  <object class="GtkDialog" id="anastasis_gtk_b_question_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" 
id="anastasis_gtk_b_question_dialog_btn_cancel">
+                <property name="label" translatable="yes">Cancel</property>
+                <property name="visible">True</property>
+                <property name="can_focus">True</property>
+                <property name="receives_default">True</property>
+                <signal name="clicked" 
handler="anastasis_gtk_b_question_dialog_btn_cancel_clicked_cb" swapped="no"/>
+              </object>
+              <packing>
+                <property name="expand">True</property>
+                <property name="fill">True</property>
+                <property name="position">0</property>
+              </packing>
+            </child>
+            <child>
+              <object class="GtkButton" 
id="anastasis_gtk_b_question_dialog_btn_ok">
+                <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="GtkBox">
+            <property name="can_focus">False</property>
+            <child>
+              <object class="GtkLabel">
+                <property name="visible">True</property>
+                <property name="can_focus">False</property>
+                <property name="label" translatable="yes">Choose 
provider:</property>
+              </object>
+              <packing>
+                <property name="expand">False</property>
+                <property name="fill">True</property>
+                <property name="position">0</property>
+              </packing>
+            </child>
+            <child>
+              <object class="GtkComboBoxText">
+                <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="can_focus">True</property>
+                  </object>
+                </child>
+              </object>
+              <packing>
+                <property name="expand">False</property>
+                <property name="fill">True</property>
+                <property name="position">1</property>
+              </packing>
+            </child>
+          </object>
+          <packing>
+            <property name="expand">False</property>
+            <property name="fill">True</property>
+            <property name="position">0</property>
+          </packing>
+        </child>
+        <child>
+          <object class="GtkBox">
+            <property name="visible">True</property>
+            <property name="can_focus">False</property>
+            <property name="orientation">vertical</property>
+            <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">0</property>
+              </packing>
+            </child>
+            <child>
+              <object class="GtkBox">
+                <property name="visible">True</property>
+                <property name="can_focus">False</property>
+                <child>
+                  <object class="GtkLabel">
+                    <property name="visible">True</property>
+                    <property name="can_focus">False</property>
+                    <property name="label" translatable="yes">Secure 
question:</property>
+                  </object>
+                  <packing>
+                    <property name="expand">False</property>
+                    <property name="fill">True</property>
+                    <property name="position">0</property>
+                  </packing>
+                </child>
+                <child>
+                  <object class="GtkEntry" 
id="anastasis_gtk_b_question_dialog_question_entry">
+                    <property name="visible">True</property>
+                    <property name="can_focus">True</property>
+                    <property name="hexpand">True</property>
+                  </object>
+                  <packing>
+                    <property name="expand">False</property>
+                    <property name="fill">True</property>
+                    <property name="position">1</property>
+                  </packing>
+                </child>
+              </object>
+              <packing>
+                <property name="expand">False</property>
+                <property name="fill">True</property>
+                <property name="position">1</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">2</property>
+              </packing>
+            </child>
+          </object>
+          <packing>
+            <property name="expand">False</property>
+            <property name="fill">True</property>
+            <property name="position">1</property>
+          </packing>
+        </child>
+        <child>
+          <object class="GtkBox">
+            <property name="visible">True</property>
+            <property name="can_focus">False</property>
+            <child>
+              <object class="GtkLabel">
+                <property name="visible">True</property>
+                <property name="can_focus">False</property>
+                <property name="label" translatable="yes">Secure 
answer:</property>
+              </object>
+              <packing>
+                <property name="expand">False</property>
+                <property name="fill">True</property>
+                <property name="position">0</property>
+              </packing>
+            </child>
+            <child>
+              <object class="GtkEntry" 
id="anastasis_gtk_b_question_dialog_answer_entry">
+                <property name="visible">True</property>
+                <property name="can_focus">True</property>
+                <property name="hexpand">True</property>
+              </object>
+              <packing>
+                <property name="expand">False</property>
+                <property name="fill">True</property>
+                <property name="position">1</property>
+              </packing>
+            </child>
+          </object>
+          <packing>
+            <property name="expand">False</property>
+            <property name="fill">True</property>
+            <property name="position">3</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">Add secure question 
authentication</property>
+      </object>
+    </child>
+  </object>
+  <object class="GtkDialog" id="anastasis_gtk_b_sms_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" 
id="anastasis_gtk_b_sms_dialog_btn_cancel">
+                <property name="label" translatable="yes">Cancel</property>
+                <property name="visible">True</property>
+                <property name="can_focus">True</property>
+                <property name="receives_default">True</property>
+                <signal name="clicked" 
handler="anastasis_gtk_b_sms_dialog_btn_cancel_clicked_cb" swapped="no"/>
+              </object>
+              <packing>
+                <property name="expand">True</property>
+                <property name="fill">True</property>
+                <property name="position">0</property>
+              </packing>
+            </child>
+            <child>
+              <object class="GtkButton" id="anastasis_gtk_b_sms_dialog_btn_ok">
+                <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="GtkBox">
+            <property name="can_focus">False</property>
+            <child>
+              <object class="GtkLabel">
+                <property name="visible">True</property>
+                <property name="can_focus">False</property>
+                <property name="label" translatable="yes">Choose 
provider:</property>
+              </object>
+              <packing>
+                <property name="expand">False</property>
+                <property name="fill">True</property>
+                <property name="position">0</property>
+              </packing>
+            </child>
+            <child>
+              <object class="GtkComboBoxText">
+                <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="can_focus">True</property>
+                  </object>
+                </child>
+              </object>
+              <packing>
+                <property name="expand">False</property>
+                <property name="fill">True</property>
+                <property name="position">1</property>
+              </packing>
+            </child>
+          </object>
+          <packing>
+            <property name="expand">False</property>
+            <property name="fill">True</property>
+            <property name="position">0</property>
+          </packing>
+        </child>
+        <child>
+          <object class="GtkBox">
+            <property name="visible">True</property>
+            <property name="can_focus">False</property>
+            <property name="orientation">vertical</property>
+            <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">0</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">1</property>
+              </packing>
+            </child>
+            <child>
+              <object class="GtkBox">
+                <property name="visible">True</property>
+                <property name="can_focus">False</property>
+                <child>
+                  <object class="GtkLabel">
+                    <property name="visible">True</property>
+                    <property name="can_focus">False</property>
+                    <property name="label" translatable="yes">Phone 
number:</property>
+                  </object>
+                  <packing>
+                    <property name="expand">False</property>
+                    <property name="fill">True</property>
+                    <property name="position">0</property>
+                  </packing>
+                </child>
+                <child>
+                  <object class="GtkEntry" 
id="anastasis_gtk_b_sms_dialog_phonenumber_entry">
+                    <property name="visible">True</property>
+                    <property name="can_focus">True</property>
+                    <property name="hexpand">True</property>
+                  </object>
+                  <packing>
+                    <property name="expand">False</property>
+                    <property name="fill">True</property>
+                    <property name="position">1</property>
+                  </packing>
+                </child>
+              </object>
+              <packing>
+                <property name="expand">False</property>
+                <property name="fill">True</property>
+                <property name="position">2</property>
+              </packing>
+            </child>
+          </object>
+          <packing>
+            <property name="expand">False</property>
+            <property name="fill">True</property>
+            <property name="position">2</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">Add sms 
authentication</property>
+      </object>
+    </child>
+  </object>
+  <object class="GtkDialog" id="anastasis_gtk_b_video_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" 
id="anastasis_gtk_b_video_dialog_btn_cancel">
+                <property name="label" translatable="yes">Cancel</property>
+                <property name="visible">True</property>
+                <property name="can_focus">True</property>
+                <property name="receives_default">True</property>
+                <signal name="clicked" 
handler="anastasis_gtk_b_video_dialog_btn_cancel_clicked_cb" swapped="no"/>
+              </object>
+              <packing>
+                <property name="expand">True</property>
+                <property name="fill">True</property>
+                <property name="position">0</property>
+              </packing>
+            </child>
+            <child>
+              <object class="GtkButton" 
id="anastasis_gtk_b_video_dialog_btn_ok">
+                <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="GtkBox">
+            <property name="visible">True</property>
+            <property name="can_focus">False</property>
+            <property name="orientation">vertical</property>
+            <child>
+              <object class="GtkBox">
+                <property name="can_focus">False</property>
+                <child>
+                  <object class="GtkLabel">
+                    <property name="visible">True</property>
+                    <property name="can_focus">False</property>
+                    <property name="label" translatable="yes">Choose 
provider:</property>
+                  </object>
+                  <packing>
+                    <property name="expand">False</property>
+                    <property name="fill">True</property>
+                    <property name="position">0</property>
+                  </packing>
+                </child>
+                <child>
+                  <object class="GtkComboBoxText">
+                    <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="can_focus">True</property>
+                      </object>
+                    </child>
+                  </object>
+                  <packing>
+                    <property name="expand">False</property>
+                    <property name="fill">True</property>
+                    <property name="position">1</property>
+                  </packing>
+                </child>
+              </object>
+              <packing>
+                <property name="expand">False</property>
+                <property name="fill">True</property>
+                <property name="position">0</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">1</property>
+              </packing>
+            </child>
+            <child>
+              <object class="GtkBox">
+                <property name="visible">True</property>
+                <property name="can_focus">False</property>
+                <child>
+                  <object class="GtkLabel">
+                    <property name="visible">True</property>
+                    <property name="can_focus">False</property>
+                    <property name="label" translatable="yes">Choose a 
photo:</property>
+                  </object>
+                  <packing>
+                    <property name="expand">False</property>
+                    <property name="fill">True</property>
+                    <property name="position">0</property>
+                  </packing>
+                </child>
+                <child>
+                  <object class="GtkEntry" 
id="anastasis_gtk_b_video_dialog_photo_path_entry">
+                    <property name="visible">True</property>
+                    <property name="can_focus">True</property>
+                  </object>
+                  <packing>
+                    <property name="expand">False</property>
+                    <property name="fill">True</property>
+                    <property name="position">1</property>
+                  </packing>
+                </child>
+                <child>
+                  <object class="GtkFileChooserButton">
+                    <property name="visible">True</property>
+                    <property name="can_focus">False</property>
+                    <property name="title" translatable="yes"/>
+                  </object>
+                  <packing>
+                    <property name="expand">False</property>
+                    <property name="fill">True</property>
+                    <property name="position">2</property>
+                  </packing>
+                </child>
+              </object>
+              <packing>
+                <property name="expand">False</property>
+                <property name="fill">True</property>
+                <property name="position">2</property>
+              </packing>
+            </child>
+            <child>
+              <object class="GtkImage">
+                <property name="visible">True</property>
+                <property name="can_focus">False</property>
+                <property name="stock">gtk-missing-image</property>
+              </object>
+              <packing>
+                <property name="expand">False</property>
+                <property name="fill">True</property>
+                <property name="position">3</property>
+              </packing>
+            </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">Add video 
authentication</property>
+      </object>
+    </child>
+  </object>
   <object class="GtkImage" id="backup_image">
     <property name="visible">True</property>
     <property name="can_focus">False</property>
@@ -28,6 +1039,11 @@
       </row>
     </data>
   </object>
+  <object class="GtkImage" id="image1">
+    <property name="visible">True</property>
+    <property name="can_focus">False</property>
+    <property name="stock">gtk-yes</property>
+  </object>
   <object class="GtkImage" id="restore_image">
     <property name="visible">True</property>
     <property name="can_focus">False</property>
@@ -40,7 +1056,6 @@
     <property name="window_position">center</property>
     <property name="default_width">700</property>
     <property name="default_height">500</property>
-    <property name="icon_name">contact-new</property>
     <signal name="delete-event" handler="anastasis_gtk_quit_cb" swapped="no"/>
     <child>
       <object class="GtkBox" id="anastasis_gtk_main_vbox">
@@ -95,6 +1110,16 @@
                         <signal name="activate" 
handler="anastasis_gtk_about_imagemenuitem_activate_cb" swapped="no"/>
                       </object>
                     </child>
+                    <child>
+                      <object class="GtkImageMenuItem" 
id="anastasis_gtk_animation">
+                        <property name="label">Show animation</property>
+                        <property name="visible">True</property>
+                        <property name="can_focus">False</property>
+                        <property name="image">image1</property>
+                        <property name="use_stock">False</property>
+                        <signal name="activate" 
handler="anastasis_gtk_animation_activate_cb" swapped="no"/>
+                      </object>
+                    </child>
                   </object>
                 </child>
               </object>
@@ -107,244 +1132,233 @@
           </packing>
         </child>
         <child>
-          <object class="GtkScrolledWindow" id="anastasis_gtk_scrolledwindow">
+          <object class="GtkBox">
             <property name="visible">True</property>
-            <property name="can_focus">True</property>
-            <property name="shadow_type">in</property>
+            <property name="can_focus">False</property>
             <child>
-              <object class="GtkViewport" id="anastasis_gtk_viewport">
+              <object class="GtkScrolledWindow" 
id="anastasis_gtk_scrolledwindow">
                 <property name="visible">True</property>
-                <property name="can_focus">False</property>
+                <property name="can_focus">True</property>
+                <property name="hexpand">True</property>
+                <property name="vexpand">True</property>
+                <property name="shadow_type">in</property>
                 <child>
-                  <object class="GtkBox">
+                  <object class="GtkViewport" id="anastasis_gtk_viewport">
                     <property name="visible">True</property>
                     <property name="can_focus">False</property>
+                    <property name="hexpand">True</property>
+                    <property name="vexpand">True</property>
                     <child>
-                      <object class="GtkBox" id="anastasis_gtk_super_vbox">
+                      <object class="GtkBox">
                         <property name="visible">True</property>
                         <property name="can_focus">False</property>
-                        <property name="orientation">vertical</property>
                         <child>
-                          <object class="GtkFrame" 
id="anastasis_gtk_start_frame">
+                          <object class="GtkBox" id="anastasis_gtk_super_vbox">
                             <property name="visible">True</property>
                             <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="GtkBox" 
id="anastasis_gtk_primary_action_hbox">
-                                    <property name="visible">True</property>
-                                    <property name="can_focus">False</property>
-                                    <child>
-                                      <object class="GtkButton">
-                                        <property name="label" 
translatable="yes">Backup</property>
-                                        <property 
name="visible">True</property>
-                                        <property 
name="can_focus">True</property>
-                                        <property 
name="receives_default">True</property>
-                                        <property 
name="image">backup_image</property>
-                                        <signal name="clicked" 
handler="anastasis_gtk_backup_button_clicked" swapped="no"/>
-                                      </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">Restore</property>
-                                        <property 
name="visible">True</property>
-                                        <property 
name="can_focus">True</property>
-                                        <property 
name="receives_default">True</property>
-                                        <property 
name="image">restore_image</property>
-                                      </object>
-                                      <packing>
-                                        <property name="expand">True</property>
-                                        <property name="fill">True</property>
-                                        <property name="position">1</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">What 
do you want to do?</property>
-                              </object>
-                            </child>
-                          </object>
-                          <packing>
-                            <property name="expand">True</property>
-                            <property name="fill">True</property>
-                            <property name="position">0</property>
-                          </packing>
-                        </child>
-                        <child>
-                          <object class="GtkFrame" 
id="anastasis_gtk_continent_frame">
-                            <property name="can_focus">False</property>
-                            <property name="label_xalign">0</property>
-                            <property name="shadow_type">none</property>
+                            <property name="orientation">vertical</property>
                             <child>
-                              <object class="GtkAlignment">
+                              <object class="GtkFrame" 
id="anastasis_gtk_start_frame">
                                 <property name="visible">True</property>
                                 <property name="can_focus">False</property>
-                                <property name="left_padding">12</property>
+                                <property name="label_xalign">0</property>
+                                <property name="shadow_type">none</property>
                                 <child>
-                                  <object class="GtkBox" 
id="anastasis_gtk_continent_vbox">
+                                  <object class="GtkAlignment">
                                     <property name="visible">True</property>
                                     <property name="can_focus">False</property>
+                                    <property name="left_padding">12</property>
                                     <child>
-                                      <object class="GtkTreeView" 
id="anastasis_gtk_continent_treeview">
+                                      <object class="GtkBox" 
id="anastasis_gtk_primary_action_hbox">
                                         <property 
name="visible">True</property>
-                                        <property 
name="can_focus">True</property>
-                                        <property 
name="model">continent_liststore</property>
-                                        <property 
name="enable_search">False</property>
-                                        <property 
name="search_column">0</property>
-                                        <property 
name="activate_on_single_click">True</property>
-                                        <signal name="row-activated" 
handler="anastasis_gtk_continent_activated" swapped="no"/>
-                                        <child internal-child="selection">
-                                          <object class="GtkTreeSelection"/>
-                                        </child>
+                                        <property 
name="can_focus">False</property>
                                         <child>
-                                          <object class="GtkTreeViewColumn" 
id="continent_column">
-                                            <property name="title" 
translatable="yes">Continent</property>
-                                            <child>
-                                              <object 
class="GtkCellRendererText" id="continent_name_cell_renderer"/>
-                                              <attributes>
-                                                <attribute 
name="text">0</attribute>
-                                              </attributes>
-                                            </child>
+                                          <object class="GtkButton">
+                                            <property name="label" 
translatable="yes">Backup</property>
+                                            <property 
name="visible">True</property>
+                                            <property 
name="can_focus">True</property>
+                                            <property 
name="receives_default">True</property>
+                                            <property 
name="image">backup_image</property>
+                                            <signal name="clicked" 
handler="anastasis_gtk_backup_button_clicked" swapped="no"/>
                                           </object>
-                                        </child>
-                                      </object>
-                                      <packing>
-                                        <property name="expand">True</property>
-                                        <property name="fill">True</property>
-                                        <property name="position">0</property>
-                                      </packing>
-                                    </child>
-                                    <child>
-                                      <object class="GtkTreeView" 
id="anastasis_gtk_country_treeview">
-                                        <property 
name="visible">True</property>
-                                        <property 
name="can_focus">True</property>
-                                        <property 
name="enable_search">False</property>
-                                        <property 
name="search_column">0</property>
-                                        <property 
name="activate_on_single_click">True</property>
-                                        <signal name="row-activated" 
handler="anastasis_gtk_country_activated" swapped="no"/>
-                                        <child internal-child="selection">
-                                          <object class="GtkTreeSelection"/>
+                                          <packing>
+                                            <property 
name="expand">True</property>
+                                            <property 
name="fill">True</property>
+                                            <property 
name="position">0</property>
+                                          </packing>
                                         </child>
                                         <child>
-                                          <object class="GtkTreeViewColumn" 
id="country_column">
-                                            <property name="title" 
translatable="yes">Country</property>
-                                            <child>
-                                              <object 
class="GtkCellRendererText" id="country_name_cell_renderer"/>
-                                              <attributes>
-                                                <attribute 
name="text">0</attribute>
-                                              </attributes>
-                                            </child>
+                                          <object class="GtkButton">
+                                            <property name="label" 
translatable="yes">Restore</property>
+                                            <property 
name="visible">True</property>
+                                            <property 
name="can_focus">True</property>
+                                            <property 
name="receives_default">True</property>
+                                            <property 
name="image">restore_image</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">True</property>
-                                        <property name="fill">True</property>
-                                        <property name="position">1</property>
-                                      </packing>
                                     </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">What do you want to do?</property>
+                                  </object>
+                                </child>
                               </object>
+                              <packing>
+                                <property name="expand">True</property>
+                                <property name="fill">True</property>
+                                <property name="position">0</property>
+                              </packing>
                             </child>
-                            <child type="label">
-                              <object class="GtkLabel">
-                                <property name="visible">True</property>
-                                <property name="can_focus">False</property>
-                                <property name="label" 
translatable="yes">Where do you live?</property>
-                              </object>
-                            </child>
-                          </object>
-                          <packing>
-                            <property name="expand">True</property>
-                            <property name="fill">True</property>
-                            <property name="position">1</property>
-                          </packing>
-                        </child>
-                        <child>
-                          <object class="GtkFrame" 
id="anastasis_gtk_identity_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>
+                              <object class="GtkFrame" 
id="anastasis_gtk_continent_frame">
                                 <property name="can_focus">False</property>
+                                <property name="label_xalign">0</property>
+                                <property name="shadow_type">none</property>
                                 <child>
-                                  <object class="GtkBox" 
id="anastasis_gtk_identity_vbox">
+                                  <object class="GtkAlignment">
                                     <property name="visible">True</property>
                                     <property name="can_focus">False</property>
-                                    <property 
name="orientation">vertical</property>
+                                    <property name="left_padding">12</property>
                                     <child>
-                                      <object class="GtkBox" 
id="anastasis_gtk_ia_full_name">
+                                      <object class="GtkBox" 
id="anastasis_gtk_continent_vbox">
+                                        <property 
name="visible">True</property>
                                         <property 
name="can_focus">False</property>
-                                        <property 
name="homogeneous">True</property>
                                         <child>
-                                          <object class="GtkLabel" 
id="anastasis_gtk_ia_full_name_label">
+                                          <object class="GtkTreeView" 
id="anastasis_gtk_continent_treeview">
                                             <property 
name="visible">True</property>
-                                            <property 
name="can_focus">False</property>
-                                            <property 
name="halign">start</property>
-                                            <property 
name="valign">center</property>
-                                            <property 
name="margin_start">20</property>
-                                            <property 
name="hexpand">True</property>
-                                            <property name="label" 
translatable="yes">Full name:</property>
+                                            <property 
name="can_focus">True</property>
+                                            <property 
name="model">continent_liststore</property>
+                                            <property 
name="enable_search">False</property>
+                                            <property 
name="search_column">0</property>
+                                            <property 
name="activate_on_single_click">True</property>
+                                            <signal name="row-activated" 
handler="anastasis_gtk_continent_activated" swapped="no"/>
+                                            <child internal-child="selection">
+                                              <object 
class="GtkTreeSelection"/>
+                                            </child>
+                                            <child>
+                                              <object 
class="GtkTreeViewColumn" id="continent_column">
+                                                <property name="title" 
translatable="yes">Continent</property>
+                                                <child>
+                                                  <object 
class="GtkCellRendererText" id="continent_name_cell_renderer"/>
+                                                  <attributes>
+                                                    <attribute 
name="text">0</attribute>
+                                                  </attributes>
+                                                </child>
+                                              </object>
+                                            </child>
                                           </object>
                                           <packing>
-                                            <property 
name="expand">False</property>
+                                            <property 
name="expand">True</property>
                                             <property 
name="fill">True</property>
                                             <property 
name="position">0</property>
                                           </packing>
                                         </child>
                                         <child>
-                                          <object class="GtkEntry" 
id="anastasis_gtk_ia_full_name_entry">
+                                          <object class="GtkTreeView" 
id="anastasis_gtk_country_treeview">
                                             <property 
name="visible">True</property>
                                             <property 
name="can_focus">True</property>
-                                            <property 
name="hexpand">True</property>
-                                            <property name="placeholder_text" 
translatable="yes">Max Mustermann</property>
-                                            <signal name="changed" 
handler="anastasis_gtk_ia_full_name_entry_changed_cb" swapped="no"/>
+                                            <property 
name="enable_search">False</property>
+                                            <property 
name="search_column">0</property>
+                                            <property 
name="activate_on_single_click">True</property>
+                                            <signal name="row-activated" 
handler="anastasis_gtk_country_activated" swapped="no"/>
+                                            <child internal-child="selection">
+                                              <object 
class="GtkTreeSelection"/>
+                                            </child>
+                                            <child>
+                                              <object 
class="GtkTreeViewColumn" id="country_column">
+                                                <property name="title" 
translatable="yes">Country</property>
+                                                <child>
+                                                  <object 
class="GtkCellRendererText" id="country_name_cell_renderer"/>
+                                                  <attributes>
+                                                    <attribute 
name="text">0</attribute>
+                                                  </attributes>
+                                                </child>
+                                              </object>
+                                            </child>
                                           </object>
                                           <packing>
-                                            <property 
name="expand">False</property>
+                                            <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">True</property>
-                                        <property name="position">0</property>
-                                      </packing>
                                     </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">Where do you live?</property>
+                                  </object>
+                                </child>
+                              </object>
+                              <packing>
+                                <property name="expand">True</property>
+                                <property name="fill">True</property>
+                                <property name="position">1</property>
+                              </packing>
+                            </child>
+                            <child>
+                              <object class="GtkFrame" 
id="anastasis_gtk_identity_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>
                                     <child>
-                                      <object class="GtkBox" 
id="anastasis_gtk_ia_ahv">
+                                      <object class="GtkBox" 
id="anastasis_gtk_identity_vbox">
+                                        <property 
name="visible">True</property>
                                         <property 
name="can_focus">False</property>
-                                        <property 
name="homogeneous">True</property>
+                                        <property 
name="orientation">vertical</property>
                                         <child>
-                                          <object class="GtkLabel" 
id="anastasis_gtk_ia_ahv_label">
-                                            <property 
name="visible">True</property>
+                                          <object class="GtkBox" 
id="anastasis_gtk_ia_full_name">
                                             <property 
name="can_focus">False</property>
-                                            <property 
name="halign">start</property>
-                                            <property 
name="valign">center</property>
-                                            <property 
name="margin_start">20</property>
-                                            <property 
name="hexpand">True</property>
-                                            <property name="label" 
translatable="yes">AHV number:</property>
+                                            <property 
name="homogeneous">True</property>
+                                            <child>
+                                              <object class="GtkLabel" 
id="anastasis_gtk_ia_full_name_label">
+                                                <property 
name="visible">True</property>
+                                                <property 
name="can_focus">False</property>
+                                                <property 
name="halign">start</property>
+                                                <property 
name="valign">center</property>
+                                                <property 
name="margin_left">20</property>
+                                                <property 
name="margin_start">20</property>
+                                                <property 
name="hexpand">True</property>
+                                                <property name="label" 
translatable="yes">Full name:</property>
+                                              </object>
+                                              <packing>
+                                                <property 
name="expand">False</property>
+                                                <property 
name="fill">True</property>
+                                                <property 
name="position">0</property>
+                                              </packing>
+                                            </child>
+                                            <child>
+                                              <object class="GtkEntry" 
id="anastasis_gtk_ia_full_name_entry">
+                                                <property 
name="visible">True</property>
+                                                <property 
name="can_focus">True</property>
+                                                <property 
name="hexpand">True</property>
+                                                <property 
name="placeholder_text" translatable="yes">Max Mustermann</property>
+                                                <signal name="changed" 
handler="anastasis_gtk_ia_full_name_entry_changed_cb" swapped="no"/>
+                                              </object>
+                                              <packing>
+                                                <property 
name="expand">False</property>
+                                                <property 
name="fill">True</property>
+                                                <property 
name="position">1</property>
+                                              </packing>
+                                            </child>
                                           </object>
                                           <packing>
                                             <property 
name="expand">False</property>
@@ -353,12 +1367,40 @@
                                           </packing>
                                         </child>
                                         <child>
-                                          <object class="GtkEntry" 
id="anastasis_gtk_ia_ahv_entry">
-                                            <property 
name="visible">True</property>
-                                            <property 
name="can_focus">True</property>
-                                            <property 
name="hexpand">True</property>
-                                            <property name="placeholder_text" 
translatable="yes">123456789</property>
-                                            <signal name="changed" 
handler="anastasis_gtk_ia_ahv_entry_changed_cb" swapped="no"/>
+                                          <object class="GtkBox" 
id="anastasis_gtk_ia_ahv">
+                                            <property 
name="can_focus">False</property>
+                                            <property 
name="homogeneous">True</property>
+                                            <child>
+                                              <object class="GtkLabel" 
id="anastasis_gtk_ia_ahv_label">
+                                                <property 
name="visible">True</property>
+                                                <property 
name="can_focus">False</property>
+                                                <property 
name="halign">start</property>
+                                                <property 
name="valign">center</property>
+                                                <property 
name="margin_left">20</property>
+                                                <property 
name="margin_start">20</property>
+                                                <property 
name="hexpand">True</property>
+                                                <property name="label" 
translatable="yes">AHV number:</property>
+                                              </object>
+                                              <packing>
+                                                <property 
name="expand">False</property>
+                                                <property 
name="fill">True</property>
+                                                <property 
name="position">0</property>
+                                              </packing>
+                                            </child>
+                                            <child>
+                                              <object class="GtkEntry" 
id="anastasis_gtk_ia_ahv_entry">
+                                                <property 
name="visible">True</property>
+                                                <property 
name="can_focus">True</property>
+                                                <property 
name="hexpand">True</property>
+                                                <property 
name="placeholder_text" translatable="yes">123456789</property>
+                                                <signal name="changed" 
handler="anastasis_gtk_ia_ahv_entry_changed_cb" swapped="no"/>
+                                              </object>
+                                              <packing>
+                                                <property 
name="expand">False</property>
+                                                <property 
name="fill">True</property>
+                                                <property 
name="position">1</property>
+                                              </packing>
+                                            </child>
                                           </object>
                                           <packing>
                                             <property 
name="expand">False</property>
@@ -366,140 +1408,144 @@
                                             <property 
name="position">1</property>
                                           </packing>
                                         </child>
-                                      </object>
-                                      <packing>
-                                        <property 
name="expand">False</property>
-                                        <property name="fill">True</property>
-                                        <property name="position">1</property>
-                                      </packing>
-                                    </child>
-                                    <child>
-                                      <object class="GtkBox" 
id="anastasis_gtk_ia_ssn">
-                                        <property 
name="can_focus">False</property>
-                                        <property 
name="homogeneous">True</property>
                                         <child>
-                                          <object class="GtkLabel" 
id="anastasis_gtk_ia_ssn_label">
-                                            <property 
name="visible">True</property>
+                                          <object class="GtkBox" 
id="anastasis_gtk_ia_ssn">
                                             <property 
name="can_focus">False</property>
-                                            <property 
name="halign">start</property>
-                                            <property 
name="valign">center</property>
-                                            <property 
name="margin_start">20</property>
-                                            <property 
name="hexpand">True</property>
-                                            <property name="label" 
translatable="yes">Social security number:</property>
-                                          </object>
-                                          <packing>
-                                            <property 
name="expand">False</property>
-                                            <property 
name="fill">True</property>
-                                            <property 
name="position">0</property>
-                                          </packing>
-                                        </child>
-                                        <child>
-                                          <object class="GtkEntry" 
id="anastasis_gtk_ia_ssn_entry">
-                                            <property 
name="visible">True</property>
-                                            <property 
name="can_focus">True</property>
-                                            <property 
name="hexpand">True</property>
-                                            <property name="placeholder_text" 
translatable="yes">123456789</property>
-                                            <signal name="changed" 
handler="anastasis_gtk_ia_ssn_entry_changed_cb" swapped="no"/>
+                                            <property 
name="homogeneous">True</property>
+                                            <child>
+                                              <object class="GtkLabel" 
id="anastasis_gtk_ia_ssn_label">
+                                                <property 
name="visible">True</property>
+                                                <property 
name="can_focus">False</property>
+                                                <property 
name="halign">start</property>
+                                                <property 
name="valign">center</property>
+                                                <property 
name="margin_left">20</property>
+                                                <property 
name="margin_start">20</property>
+                                                <property 
name="hexpand">True</property>
+                                                <property name="label" 
translatable="yes">Social security number:</property>
+                                              </object>
+                                              <packing>
+                                                <property 
name="expand">False</property>
+                                                <property 
name="fill">True</property>
+                                                <property 
name="position">0</property>
+                                              </packing>
+                                            </child>
+                                            <child>
+                                              <object class="GtkEntry" 
id="anastasis_gtk_ia_ssn_entry">
+                                                <property 
name="visible">True</property>
+                                                <property 
name="can_focus">True</property>
+                                                <property 
name="hexpand">True</property>
+                                                <property 
name="placeholder_text" translatable="yes">123456789</property>
+                                                <signal name="changed" 
handler="anastasis_gtk_ia_ssn_entry_changed_cb" swapped="no"/>
+                                              </object>
+                                              <packing>
+                                                <property 
name="expand">False</property>
+                                                <property 
name="fill">True</property>
+                                                <property 
name="position">1</property>
+                                              </packing>
+                                            </child>
                                           </object>
                                           <packing>
                                             <property 
name="expand">False</property>
                                             <property 
name="fill">True</property>
-                                            <property 
name="position">1</property>
+                                            <property 
name="position">2</property>
                                           </packing>
                                         </child>
-                                      </object>
-                                      <packing>
-                                        <property 
name="expand">False</property>
-                                        <property name="fill">True</property>
-                                        <property name="position">2</property>
-                                      </packing>
-                                    </child>
-                                    <child>
-                                      <object class="GtkBox" 
id="anastasis_gtk_ia_birthdate">
-                                        <property 
name="can_focus">False</property>
-                                        <property 
name="homogeneous">True</property>
                                         <child>
-                                          <object class="GtkLabel" 
id="anastasis_gtk_ia_birthdate_label">
-                                            <property 
name="visible">True</property>
+                                          <object class="GtkBox" 
id="anastasis_gtk_ia_birthdate">
                                             <property 
name="can_focus">False</property>
-                                            <property 
name="halign">start</property>
-                                            <property 
name="margin_start">20</property>
-                                            <property 
name="hexpand">True</property>
-                                            <property name="label" 
translatable="yes">Birthdate:</property>
-                                          </object>
-                                          <packing>
-                                            <property 
name="expand">False</property>
-                                            <property 
name="fill">True</property>
-                                            <property 
name="position">0</property>
-                                          </packing>
-                                        </child>
-                                        <child>
-                                          <object class="GtkCalendar" 
id="anastasis_gtk_ia_birthdate_cal">
-                                            <property 
name="visible">True</property>
-                                            <property 
name="can_focus">True</property>
-                                            <property 
name="hexpand">True</property>
-                                            <property 
name="year">2020</property>
-                                            <property 
name="show_day_names">False</property>
-                                            <signal name="day-selected" 
handler="anastasis_gtk_ia_birthdate_cal_day_selected_cb" swapped="no"/>
+                                            <property 
name="homogeneous">True</property>
+                                            <child>
+                                              <object class="GtkLabel" 
id="anastasis_gtk_ia_birthdate_label">
+                                                <property 
name="visible">True</property>
+                                                <property 
name="can_focus">False</property>
+                                                <property 
name="halign">start</property>
+                                                <property 
name="margin_left">20</property>
+                                                <property 
name="margin_start">20</property>
+                                                <property 
name="hexpand">True</property>
+                                                <property name="label" 
translatable="yes">Birthdate:</property>
+                                              </object>
+                                              <packing>
+                                                <property 
name="expand">False</property>
+                                                <property 
name="fill">True</property>
+                                                <property 
name="position">0</property>
+                                              </packing>
+                                            </child>
+                                            <child>
+                                              <object class="GtkCalendar" 
id="anastasis_gtk_ia_birthdate_cal">
+                                                <property 
name="visible">True</property>
+                                                <property 
name="can_focus">True</property>
+                                                <property 
name="hexpand">True</property>
+                                                <property 
name="year">2020</property>
+                                                <property 
name="month">8</property>
+                                                <property 
name="day">22</property>
+                                                <property 
name="show_day_names">False</property>
+                                                <signal name="day-selected" 
handler="anastasis_gtk_ia_birthdate_cal_day_selected_cb" swapped="no"/>
+                                              </object>
+                                              <packing>
+                                                <property 
name="expand">False</property>
+                                                <property 
name="fill">True</property>
+                                                <property 
name="position">1</property>
+                                              </packing>
+                                            </child>
                                           </object>
                                           <packing>
                                             <property 
name="expand">False</property>
                                             <property 
name="fill">True</property>
-                                            <property 
name="position">1</property>
+                                            <property 
name="position">3</property>
                                           </packing>
                                         </child>
                                       </object>
-                                      <packing>
-                                        <property 
name="expand">False</property>
-                                        <property name="fill">True</property>
-                                        <property name="position">3</property>
-                                      </packing>
                                     </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">Who are you?</property>
+                                  </object>
+                                </child>
                               </object>
+                              <packing>
+                                <property name="expand">True</property>
+                                <property name="fill">True</property>
+                                <property name="position">2</property>
+                              </packing>
                             </child>
-                            <child type="label">
-                              <object class="GtkLabel">
-                                <property name="visible">True</property>
-                                <property name="can_focus">False</property>
-                                <property name="label" translatable="yes">Who 
are you?</property>
-                              </object>
-                            </child>
-                          </object>
-                          <packing>
-                            <property name="expand">True</property>
-                            <property name="fill">True</property>
-                            <property name="position">2</property>
-                          </packing>
-                        </child>
-                        <child>
-                          <object class="GtkFrame" 
id="anastasis_gtk_b_authentication_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>
+                              <object class="GtkFrame" 
id="anastasis_gtk_b_authentication_frame">
                                 <property name="can_focus">False</property>
-                                <property name="left_padding">12</property>
+                                <property name="label_xalign">0</property>
+                                <property name="shadow_type">none</property>
                                 <child>
-                                  <object class="GtkBox" 
id="anastasis_gtk_provider_vbox">
+                                  <object class="GtkAlignment">
                                     <property name="visible">True</property>
                                     <property name="can_focus">False</property>
-                                    <property 
name="orientation">vertical</property>
+                                    <property name="left_padding">12</property>
                                     <child>
                                       <object class="GtkBox">
                                         <property 
name="visible">True</property>
                                         <property 
name="can_focus">False</property>
+                                        <property 
name="orientation">vertical</property>
                                         <child>
-                                          <object class="GtkTextView">
-                                            <property 
name="name">anastasis_gtk_b_authentication_methods_text</property>
+                                          <object class="GtkBox" 
id="anastasis_gtk_b_authentication_hbox">
                                             <property 
name="visible">True</property>
-                                            <property 
name="can_focus">True</property>
-                                            <property 
name="hexpand">True</property>
-                                            <property 
name="vexpand">True</property>
-                                            <property 
name="editable">False</property>
+                                            <property 
name="can_focus">False</property>
+                                            <child>
+                                              <object class="GtkBox" 
id="anastasis_gtk_b_authentication_vbox">
+                                                <property 
name="visible">True</property>
+                                                <property 
name="can_focus">False</property>
+                                                <property 
name="orientation">vertical</property>
+                                                <child>
+                                                  <placeholder/>
+                                                </child>
+                                              </object>
+                                              <packing>
+                                                <property 
name="expand">True</property>
+                                                <property 
name="fill">True</property>
+                                                <property 
name="position">0</property>
+                                              </packing>
+                                            </child>
                                           </object>
                                           <packing>
                                             <property 
name="expand">False</property>
@@ -508,10 +1554,9 @@
                                           </packing>
                                         </child>
                                         <child>
-                                          <object class="GtkScrollbar">
+                                          <object class="GtkSeparator">
                                             <property 
name="visible">True</property>
                                             <property 
name="can_focus">False</property>
-                                            <property 
name="orientation">vertical</property>
                                           </object>
                                           <packing>
                                             <property 
name="expand">False</property>
@@ -519,208 +1564,175 @@
                                             <property 
name="position">1</property>
                                           </packing>
                                         </child>
-                                      </object>
-                                      <packing>
-                                        <property 
name="expand">False</property>
-                                        <property name="fill">True</property>
-                                        <property name="position">0</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">1</property>
-                                      </packing>
-                                    </child>
-                                    <child>
-                                      <object class="GtkAlignment">
-                                        <property 
name="visible">True</property>
-                                        <property 
name="can_focus">False</property>
                                         <child>
-                                          <object class="GtkBox">
+                                          <object class="GtkAlignment">
                                             <property 
name="visible">True</property>
                                             <property 
name="can_focus">False</property>
                                             <child>
-                                              <object class="GtkFrame">
+                                              <object class="GtkBox">
                                                 <property 
name="visible">True</property>
                                                 <property 
name="can_focus">False</property>
-                                                <property 
name="margin_end">50</property>
-                                                <property 
name="hexpand">True</property>
-                                                <property 
name="label_xalign">0</property>
-                                                <property 
name="shadow_type">none</property>
                                                 <child>
-                                                  <object class="GtkBox">
+                                                  <object class="GtkFrame">
                                                     <property 
name="visible">True</property>
                                                     <property 
name="can_focus">False</property>
-                                                    <property 
name="spacing">8</property>
-                                                    <property 
name="homogeneous">True</property>
-                                                    <child>
-                                                      <object 
class="GtkButton">
-                                                        <property name="label" 
translatable="yes">SMS</property>
-                                                        <property 
name="visible">True</property>
-                                                        <property 
name="can_focus">True</property>
-                                                        <property 
name="receives_default">True</property>
-                                                      </object>
-                                                      <packing>
-                                                        <property 
name="expand">False</property>
-                                                        <property 
name="fill">True</property>
-                                                        <property 
name="position">0</property>
-                                                      </packing>
-                                                    </child>
+                                                    <property 
name="margin_right">50</property>
+                                                    <property 
name="margin_end">50</property>
+                                                    <property 
name="hexpand">True</property>
+                                                    <property 
name="label_xalign">0</property>
+                                                    <property 
name="shadow_type">none</property>
                                                     <child>
-                                                      <object 
class="GtkButton">
-                                                        <property name="label" 
translatable="yes">EMAIL</property>
+                                                      <object class="GtkBox">
                                                         <property 
name="visible">True</property>
-                                                        <property 
name="can_focus">True</property>
-                                                        <property 
name="receives_default">True</property>
+                                                        <property 
name="can_focus">False</property>
+                                                        <property 
name="spacing">8</property>
+                                                        <property 
name="homogeneous">True</property>
+                                                        <child>
+                                                          <object 
class="GtkButton" id="anastasis_gtk_btn_add_auth_sms">
+                                                            <property 
name="label" translatable="yes">SMS</property>
+                                                            <property 
name="can_focus">True</property>
+                                                            <property 
name="receives_default">True</property>
+                                                            <signal 
name="clicked" handler="anastasis_gtk_btn_add_auth_sms_clicked_cb" 
swapped="no"/>
+                                                          </object>
+                                                          <packing>
+                                                            <property 
name="expand">False</property>
+                                                            <property 
name="fill">True</property>
+                                                            <property 
name="position">0</property>
+                                                          </packing>
+                                                        </child>
+                                                        <child>
+                                                          <object 
class="GtkButton" id="anastasis_gtk_btn_add_auth_email">
+                                                            <property 
name="label" translatable="yes">EMAIL</property>
+                                                            <property 
name="can_focus">True</property>
+                                                            <property 
name="receives_default">True</property>
+                                                            <signal 
name="clicked" handler="anastasis_gtk_btn_add_auth_email_clicked_cb" 
swapped="no"/>
+                                                          </object>
+                                                          <packing>
+                                                            <property 
name="expand">False</property>
+                                                            <property 
name="fill">True</property>
+                                                            <property 
name="position">1</property>
+                                                          </packing>
+                                                        </child>
+                                                        <child>
+                                                          <object 
class="GtkButton" id="anastasis_gtk_btn_add_auth_question">
+                                                            <property 
name="label" translatable="yes">SECURE
+QUESTION</property>
+                                                            <property 
name="can_focus">True</property>
+                                                            <property 
name="receives_default">True</property>
+                                                            <signal 
name="clicked" handler="anastasis_gtk_btn_add_auth_question_clicked_cb" 
swapped="no"/>
+                                                          </object>
+                                                          <packing>
+                                                            <property 
name="expand">False</property>
+                                                            <property 
name="fill">True</property>
+                                                            <property 
name="position">2</property>
+                                                          </packing>
+                                                        </child>
+                                                        <child>
+                                                          <object 
class="GtkButton" id="anastasis_gtk_btn_add_auth_post">
+                                                            <property 
name="label" translatable="yes">POST</property>
+                                                            <property 
name="can_focus">True</property>
+                                                            <property 
name="receives_default">True</property>
+                                                            <signal 
name="clicked" handler="anastasis_gtk_btn_add_auth_post_clicked_cb" 
swapped="no"/>
+                                                          </object>
+                                                          <packing>
+                                                            <property 
name="expand">False</property>
+                                                            <property 
name="fill">True</property>
+                                                            <property 
name="position">3</property>
+                                                          </packing>
+                                                        </child>
+                                                        <child>
+                                                          <object 
class="GtkButton" id="anastasis_gtk_btn_add_auth_video">
+                                                            <property 
name="label" translatable="yes">VIDEO AUTH</property>
+                                                            <property 
name="can_focus">True</property>
+                                                            <property 
name="receives_default">True</property>
+                                                            <signal 
name="clicked" handler="anastasis_gtk_btn_add_auth_video_clicked_cb" 
swapped="no"/>
+                                                          </object>
+                                                          <packing>
+                                                            <property 
name="expand">False</property>
+                                                            <property 
name="fill">True</property>
+                                                            <property 
name="position">4</property>
+                                                          </packing>
+                                                        </child>
                                                       </object>
-                                                      <packing>
-                                                        <property 
name="expand">False</property>
-                                                        <property 
name="fill">True</property>
-                                                        <property 
name="position">1</property>
-                                                      </packing>
                                                     </child>
-                                                    <child>
-                                                      <object 
class="GtkButton">
-                                                        <property name="label" 
translatable="yes">SECURE
-QUESTION</property>
+                                                    <child type="label">
+                                                      <object class="GtkLabel">
                                                         <property 
name="visible">True</property>
-                                                        <property 
name="can_focus">True</property>
-                                                        <property 
name="receives_default">True</property>
+                                                        <property 
name="can_focus">False</property>
+                                                        <property name="label" 
translatable="yes">Add Method</property>
                                                       </object>
-                                                      <packing>
-                                                        <property 
name="expand">False</property>
-                                                        <property 
name="fill">True</property>
-                                                        <property 
name="position">2</property>
-                                                      </packing>
                                                     </child>
+                                                  </object>
+                                                  <packing>
+                                                    <property 
name="expand">True</property>
+                                                    <property 
name="fill">True</property>
+                                                    <property 
name="position">0</property>
+                                                  </packing>
+                                                </child>
+                                                <child>
+                                                  <object class="GtkBox">
+                                                    <property 
name="visible">True</property>
+                                                    <property 
name="can_focus">False</property>
+                                                    <property 
name="homogeneous">True</property>
                                                     <child>
-                                                      <object 
class="GtkButton">
-                                                        <property name="label" 
translatable="yes">POST</property>
-                                                        <property 
name="visible">True</property>
-                                                        <property 
name="can_focus">True</property>
-                                                        <property 
name="receives_default">True</property>
-                                                      </object>
-                                                      <packing>
-                                                        <property 
name="expand">False</property>
-                                                        <property 
name="fill">True</property>
-                                                        <property 
name="position">3</property>
-                                                      </packing>
+                                                      <placeholder/>
                                                     </child>
                                                     <child>
                                                       <object 
class="GtkButton">
-                                                        <property name="label" 
translatable="yes">VIDEO AUTH</property>
+                                                        <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>
                                                       </object>
                                                       <packing>
                                                         <property 
name="expand">False</property>
-                                                        <property 
name="fill">True</property>
-                                                        <property 
name="position">4</property>
+                                                        <property 
name="fill">False</property>
+                                                        <property 
name="position">1</property>
                                                       </packing>
                                                     </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">Add Method</property>
-                                                  </object>
-                                                </child>
-                                              </object>
-                                              <packing>
-                                                <property 
name="expand">True</property>
-                                                <property 
name="fill">True</property>
-                                                <property 
name="position">0</property>
-                                              </packing>
-                                            </child>
-                                            <child>
-                                              <object class="GtkBox">
-                                                <property 
name="visible">True</property>
-                                                <property 
name="can_focus">False</property>
-                                                <property 
name="homogeneous">True</property>
-                                                <child>
-                                                  <placeholder/>
-                                                </child>
-                                                <child>
-                                                  <object class="GtkButton">
-                                                    <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>
-                                                  </object>
                                                   <packing>
                                                     <property 
name="expand">False</property>
-                                                    <property 
name="fill">False</property>
+                                                    <property 
name="fill">True</property>
                                                     <property 
name="position">1</property>
                                                   </packing>
                                                 </child>
                                               </object>
-                                              <packing>
-                                                <property 
name="expand">False</property>
-                                                <property 
name="fill">True</property>
-                                                <property 
name="position">1</property>
-                                              </packing>
                                             </child>
                                           </object>
+                                          <packing>
+                                            <property 
name="expand">False</property>
+                                            <property 
name="fill">True</property>
+                                            <property 
name="pack_type">end</property>
+                                            <property 
name="position">2</property>
+                                          </packing>
                                         </child>
                                       </object>
-                                      <packing>
-                                        <property 
name="expand">False</property>
-                                        <property name="fill">True</property>
-                                        <property name="position">2</property>
-                                      </packing>
                                     </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">Authentication Methods</property>
+                                  </object>
+                                </child>
                               </object>
+                              <packing>
+                                <property name="expand">False</property>
+                                <property name="fill">True</property>
+                                <property name="position">3</property>
+                              </packing>
                             </child>
-                            <child type="label">
-                              <object class="GtkLabel">
-                                <property name="visible">True</property>
-                                <property name="can_focus">False</property>
-                                <property name="label" 
translatable="yes">Authentication Methods</property>
-                              </object>
+                            <child>
+                              <placeholder/>
+                            </child>
+                            <child>
+                              <placeholder/>
                             </child>
-                          </object>
-                          <packing>
-                            <property name="expand">False</property>
-                            <property name="fill">True</property>
-                            <property name="position">3</property>
-                          </packing>
-                        </child>
-                        <child>
-                          <placeholder/>
-                        </child>
-                        <child>
-                          <placeholder/>
-                        </child>
-                      </object>
-                      <packing>
-                        <property name="expand">True</property>
-                        <property name="fill">True</property>
-                        <property name="position">0</property>
-                      </packing>
-                    </child>
-                    <child>
-                      <object class="GtkBox" 
id="anastasis_gtk_illustration_vbox">
-                        <property name="can_focus">False</property>
-                        <property name="orientation">vertical</property>
-                        <child>
-                          <object class="GtkImage" id="anastasis_gtk_logo">
-                            <property name="visible">True</property>
-                            <property name="can_focus">False</property>
-                            <property name="stock">gtk-missing-image</property>
-                            <property name="icon_size">6</property>
                           </object>
                           <packing>
                             <property name="expand">True</property>
@@ -728,58 +1740,95 @@ Provider</property>
                             <property name="position">0</property>
                           </packing>
                         </child>
-                        <child>
-                          <object class="GtkImage" 
id="anastasis_gtk_country_selection_image">
-                            <property name="visible">True</property>
-                            <property name="can_focus">False</property>
-                            <property name="stock">gtk-missing-image</property>
-                          </object>
-                          <packing>
-                            <property name="expand">True</property>
-                            <property name="fill">True</property>
-                            <property name="position">1</property>
-                          </packing>
-                        </child>
-                        <child>
-                          <object class="GtkImage" id="anastasis_gtk_logo2">
-                            <property name="visible">True</property>
-                            <property name="can_focus">False</property>
-                            <property name="stock">gtk-missing-image</property>
-                          </object>
-                          <packing>
-                            <property name="expand">True</property>
-                            <property name="fill">True</property>
-                            <property name="position">2</property>
-                          </packing>
-                        </child>
-                        <child>
-                          <object class="GtkImage" id="anastasis_gtk_logo3">
-                            <property name="visible">True</property>
-                            <property name="can_focus">False</property>
-                            <property name="stock">gtk-missing-image</property>
-                          </object>
-                          <packing>
-                            <property name="expand">True</property>
-                            <property name="fill">True</property>
-                            <property name="position">3</property>
-                          </packing>
-                        </child>
-                        <child>
-                          <placeholder/>
-                        </child>
                         <child>
                           <placeholder/>
                         </child>
                       </object>
-                      <packing>
-                        <property name="expand">True</property>
-                        <property name="fill">True</property>
-                        <property name="position">1</property>
-                      </packing>
                     </child>
                   </object>
                 </child>
               </object>
+              <packing>
+                <property name="expand">True</property>
+                <property name="fill">True</property>
+                <property name="position">0</property>
+              </packing>
+            </child>
+            <child>
+              <object class="GtkBox" id="anastasis_gtk_illustration_vbox">
+                <property name="can_focus">False</property>
+                <property name="vexpand">True</property>
+                <property name="orientation">vertical</property>
+                <child>
+                  <object class="GtkImage" 
id="anastasis_gtk_continent_selection_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">True</property>
+                    <property name="position">0</property>
+                  </packing>
+                </child>
+                <child>
+                  <object class="GtkImage" 
id="anastasis_gtk_country_selection_image">
+                    <property name="width_request">100</property>
+                    <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">1</property>
+                  </packing>
+                </child>
+                <child>
+                  <object class="GtkImage" 
id="anastasis_gtk_user_attributes_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">2</property>
+                  </packing>
+                </child>
+                <child>
+                  <object class="GtkImage" 
id="anastasis_gtk_b_authentication_methods_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">3</property>
+                  </packing>
+                </child>
+                <child>
+                  <object class="GtkImage" id="anastasis_gtk_logo3">
+                    <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">4</property>
+                  </packing>
+                </child>
+                <child>
+                  <placeholder/>
+                </child>
+              </object>
+              <packing>
+                <property name="expand">False</property>
+                <property name="fill">False</property>
+                <property name="position">1</property>
+              </packing>
             </child>
           </object>
           <packing>
diff --git a/contrib/authentication_methods.png 
b/contrib/authentication_methods.png
new file mode 100644
index 0000000..c0906a7
Binary files /dev/null and b/contrib/authentication_methods.png differ
diff --git a/contrib/continent_selection.png b/contrib/continent_selection.png
new file mode 100644
index 0000000..19003de
Binary files /dev/null and b/contrib/continent_selection.png differ
diff --git a/contrib/country_selection.png b/contrib/country_selection.png
new file mode 100644
index 0000000..3882cb6
Binary files /dev/null and b/contrib/country_selection.png differ
diff --git a/contrib/user_attributes.png b/contrib/user_attributes.png
new file mode 100644
index 0000000..edf5807
Binary files /dev/null and b/contrib/user_attributes.png differ
diff --git a/src/anastasis/Makefile.am b/src/anastasis/Makefile.am
index be38f24..56d9ca9 100644
--- a/src/anastasis/Makefile.am
+++ b/src/anastasis/Makefile.am
@@ -20,10 +20,12 @@ anastasis_gtk_SOURCES = \
 anastasis_gtk_LDADD = \
   @GTK_LIBS@ \
   @GLADE_LIBS@ @GNUNET_LIBS@ \
-  -lanastasisredux \
   -lgnunetgtk \
   -lgnunetutil \
+  -lgnunetcurl \
   -ljansson \
+  -lanastasisrest \
+  -lanastasisredux \
   $(INTLLIBS)
 anastasis_gtk_LDFLAGS = \
   -export-dynamic
diff --git a/src/anastasis/anastasis-gtk.c b/src/anastasis/anastasis-gtk.c
index 18ab3ab..85d252b 100644
--- a/src/anastasis/anastasis-gtk.c
+++ b/src/anastasis/anastasis-gtk.c
@@ -40,12 +40,445 @@ struct GNUNET_GTK_MainLoop *ml;
  */
 struct GNUNET_CONFIGURATION_Handle *cfg;
 
+/**
+ * Closure for #GNUNET_CURL_gnunet_scheduler_reschedule().
+ */
+struct GNUNET_CURL_RescheduleContext *rc;
+
+/**
+ * Curl context for communication with taler backend
+ */
+struct GNUNET_CURL_Context *ctx;
+
 /**
  * Actual state.
  */
 json_t *redux_state;
 
 
+/**
+ * Callback invoked if the the "show animation"-menuitem (Help) is clicked.
+ * 
+ * @param menuitem the object which received the signal.
+ * @param user_data user data set when the signal handler was connected.
+ */
+void
+anastasis_gtk_animation_activate_cb (GtkMenuItem *menuitem,
+                                     gpointer     user_data)
+{
+     if (gtk_widget_is_visible (GTK_WIDGET (GCG_get_main_window_object (
+                                        "anastasis_gtk_illustration_vbox"))))
+          gtk_widget_hide (GTK_WIDGET (GCG_get_main_window_object (
+                                             
"anastasis_gtk_illustration_vbox")));
+     else
+     {
+        gtk_widget_show (GTK_WIDGET (GCG_get_main_window_object (
+                                              
"anastasis_gtk_illustration_vbox")));
+        //init pictures
+        {
+          char *path;
+          path = GNUNET_OS_installation_get_path (GNUNET_OS_IPK_PREFIX);
+          if (NULL == path)
+          {
+            GNUNET_break (0);
+            return GNUNET_SYSERR;
+          }
+
+          //continent selection
+          char *con_sel_path;
+          GNUNET_asprintf (&con_sel_path,
+                     "%s/share/anastasis/continent_selection.png",
+                     path);
+          GObject *con_sel_img = GCG_get_main_window_object (
+                                        
"anastasis_gtk_continent_selection_image");
+          gtk_image_set_from_file (GTK_IMAGE (con_sel_img), con_sel_path);
+          GNUNET_free (con_sel_path);
+
+          //country selection
+          char *cou_sel_path;
+          GNUNET_asprintf (&cou_sel_path,
+                     "%s/share/anastasis/country_selection.png",
+                     path);
+          GObject *cou_sel_img = GCG_get_main_window_object (
+                                        
"anastasis_gtk_country_selection_image");
+          gtk_image_set_from_file (GTK_IMAGE (cou_sel_img), cou_sel_path);
+          GNUNET_free (cou_sel_path);
+
+          //user attributes
+          char *user_attr_path;
+          GNUNET_asprintf (&user_attr_path,
+                     "%s/share/anastasis/user_attributes.png",
+                     path);
+          GObject *user_attr_img = GCG_get_main_window_object (
+                                        "anastasis_gtk_user_attributes_image");
+          gtk_image_set_from_file (GTK_IMAGE (user_attr_img), user_attr_path);
+          GNUNET_free (user_attr_path);
+
+          //authentication methods
+          char *auth_meth_path;
+          GNUNET_asprintf (&auth_meth_path,
+                     "%s/share/anastasis/authentication_methods.png",
+                     path);
+          GObject *auth_meth_img = GCG_get_main_window_object (
+                                        
"anastasis_gtk_b_authentication_methods_image");
+          gtk_image_set_from_file (GTK_IMAGE (auth_meth_img), auth_meth_path);
+          GNUNET_free (auth_meth_path);
+
+          GNUNET_free (path);
+        }
+     }
+}
+
+
+/**
+ * Callback invoked if a text is inserted in "cal" GtkEntry.
+ *
+ * @param cell_editable the object on which the signal was emitted
+ * @param user_data user data set when the signal handler was connected 
(unused)
+ */
+void
+anastasis_gtk_ia_birthdate_cal_day_selected_cb (GtkCellEditable *cell_editable,
+                                       gpointer user_data)
+{
+    gtk_widget_set_sensitive (GTK_WIDGET (GCG_get_main_window_object (
+                                        
"anastasis_gtk_main_window_forward_button")), false);
+
+    // check, if required attributes are set to activate forward button
+    if (check_attributes_fullfilled ())
+        gtk_widget_set_sensitive (GTK_WIDGET (GCG_get_main_window_object (
+                                        
"anastasis_gtk_main_window_forward_button")), true);
+}
+
+
+/**
+ * Callback invoked if a text is inserted in "ssn" GtkEntry.
+ *
+ * @param cell_editable the object on which the signal was emitted
+ * @param user_data user data set when the signal handler was connected 
(unused)
+ */
+void
+anastasis_gtk_ia_ssn_entry_changed_cb (GtkCellEditable *cell_editable,
+                                       gpointer user_data)
+{
+    gtk_widget_set_sensitive (GTK_WIDGET (GCG_get_main_window_object (
+                                        
"anastasis_gtk_main_window_forward_button")), false);
+
+    // check, if required attributes are set to activate forward button
+    if (check_attributes_fullfilled ())
+        gtk_widget_set_sensitive (GTK_WIDGET (GCG_get_main_window_object (
+                                        
"anastasis_gtk_main_window_forward_button")), true);
+}
+
+
+/**
+ * Callback invoked if a text is inserted in "ahv" GtkEntry.
+ *
+ * @param cell_editable the object on which the signal was emitted
+ * @param user_data user data set when the signal handler was connected 
(unused)
+ */
+void
+anastasis_gtk_ia_ahv_entry_changed_cb (GtkCellEditable *cell_editable,
+                                       gpointer user_data)
+{
+    gtk_widget_set_sensitive (GTK_WIDGET (GCG_get_main_window_object (
+                                        
"anastasis_gtk_main_window_forward_button")), false);
+
+    // check, if required attributes are set to activate forward button
+    if (check_attributes_fullfilled ())
+        gtk_widget_set_sensitive (GTK_WIDGET (GCG_get_main_window_object (
+                                        
"anastasis_gtk_main_window_forward_button")), true);
+}
+
+
+/**
+ * Callback invoked if a text is inserted in "full_name" GtkEntry.
+ *
+ * @param cell_editable the object on which the signal was emitted
+ * @param user_data user data set when the signal handler was connected 
(unused)
+ */
+void
+anastasis_gtk_ia_full_name_entry_changed_cb (GtkCellEditable *cell_editable,
+                                             gpointer user_data)
+{
+    gtk_widget_set_sensitive (GTK_WIDGET (GCG_get_main_window_object (
+                                        
"anastasis_gtk_main_window_forward_button")), false);
+
+    // check, if required attributes are set to activate forward button
+    if (check_attributes_fullfilled ())
+        gtk_widget_set_sensitive (GTK_WIDGET (GCG_get_main_window_object (
+                                        
"anastasis_gtk_main_window_forward_button")), true);
+}
+
+
+/**
+ * Callback invoked if a continent is selected (row-activated signal).
+ *
+ * @param tree_view the object on which the signal is emitted
+ * @param path the GtkTreePath for the activated row
+ * @param column the GtkTreeViewColumn in which the activation occurred
+ * @param user_data user data set when the signal handler was connected 
(unused)
+ */
+void
+anastasis_gtk_continent_activated (GtkTreeView *tree_view,
+                                   GtkTreePath *path,
+                                   GtkTreeViewColumn *column,
+                                   gpointer user_data)
+{
+        GtkTreeIter iter;
+        GtkTreeModel *model= gtk_tree_view_get_model (tree_view);
+
+        if (gtk_tree_model_get_iter(model, &iter, path))
+        {
+            gchar *continent_name;
+            json_t *arguments = json_object ();
+
+            if (NULL == arguments)
+            {
+                GNUNET_break (0);
+            }
+            gtk_tree_model_get (model, &iter, 0, &continent_name, -1);
+            json_object_set (arguments, "continent", json_string 
(continent_name));
+
+            if (check_state (redux_state, "ReduxContinentSelectedState"))
+                redux_state = ANASTASIS_backup_start (cfg);
+            ANASTASIS_backup_action (redux_state,
+                                     "selection_continent",
+                                     arguments,
+                                     &action_cb,
+                                     NULL);
+            g_free(continent_name);
+        }
+}
+
+
+/**
+ * Callback invoked if a country is selected (row-activated signal).
+ *
+ * @param tree_view the object on which the signal is emitted
+ * @param path the GtkTreePath for the activated row
+ * @param column the GtkTreeViewColumn in which the activation occurred
+ * @param user_data user data set when the signal handler was connected 
(unused)
+ */
+void
+anastasis_gtk_country_activated (GtkTreeView *tree_view,
+                                 GtkTreePath *path,
+                                 GtkTreeViewColumn *column,
+                                 gpointer user_data)
+{
+        GtkTreeIter iter;
+        GtkTreeModel *model= gtk_tree_view_get_model (tree_view);
+
+        if (gtk_tree_model_get_iter(model, &iter, path))
+        {
+            gchar *country_name;
+            gchar *country_code;
+            json_t *arguments = json_object ();
+
+            if (NULL == arguments)
+            {
+                GNUNET_break (0);
+            }
+            gtk_tree_model_get (model, &iter, 
+                                0, &country_name, 
+                                1, &country_code, 
+                                -1);
+            json_object_set (arguments, "country", json_string (country_name));
+            json_object_set (arguments, "country_code", json_string 
(country_code));
+
+            if (check_state (redux_state, "ReduxContinentSelectedState"))
+                ANASTASIS_backup_action (redux_state,
+                                        "selection_country",
+                                        arguments,
+                                        &action_cb,
+                                        NULL);
+
+            else
+                if (! (0 == strcmp (country_name, json_string_value (
+                    json_object_get (redux_state, "selected_country")))))
+                {
+                    ANASTASIS_backup_action (redux_state,
+                                             "changing_country",
+                                             arguments,
+                                             &action_cb,
+                                             NULL);
+                }
+                
+            g_free(country_name);
+            g_free(country_code);
+        }
+}
+
+
+/**
+ * Callback invoked if the the "back"-button is clicked.
+ *
+ * @param object
+ * @param user_data unused
+ */
+void
+anastasis_gtk_main_window_back_clicked (GObject *object,
+                                        gpointer user_data)
+{
+    char *state = json_string_value (json_object_get (redux_state, 
"backup-state"));
+    if (!state)
+        state = json_string_value (json_object_get (redux_state, 
"recovery-state"));
+    GNUNET_assert (state);
+
+    if (gtk_widget_is_visible (GTK_WIDGET (GCG_get_main_window_object (
+                                        "anastasis_gtk_continent_frame"))))
+    {
+        /** FIXME: Show warning in this case, because state is lost afterwards 
*/
+        gtk_widget_show (GTK_WIDGET (GCG_get_main_window_object (
+                                        "anastasis_gtk_start_frame")));
+        gtk_widget_hide (GTK_WIDGET (GCG_get_main_window_object (
+                                        "anastasis_gtk_main_control_vbox")));
+        gtk_widget_hide (GTK_WIDGET (GCG_get_main_window_object (
+                                        "anastasis_gtk_continent_frame")));
+        gtk_widget_set_sensitive (GTK_WIDGET (GCG_get_main_window_object (
+                                        
"anastasis_gtk_main_window_forward_button")), false);
+    }
+    if (gtk_widget_is_visible (GTK_WIDGET (GCG_get_main_window_object (
+                                        "anastasis_gtk_identity_frame"))))
+    {
+        gtk_widget_show (GTK_WIDGET (GCG_get_main_window_object (
+                                        "anastasis_gtk_continent_frame")));
+        gtk_widget_hide (GTK_WIDGET (GCG_get_main_window_object (
+                                        "anastasis_gtk_identity_frame")));
+    }
+    if (gtk_widget_is_visible (GTK_WIDGET (GCG_get_main_window_object (
+                                        
"anastasis_gtk_b_authentication_frame"))))
+    {
+        gtk_widget_show (GTK_WIDGET (GCG_get_main_window_object (
+                                        "anastasis_gtk_identity_frame")));
+        gtk_widget_hide (GTK_WIDGET (GCG_get_main_window_object (
+                                        
"anastasis_gtk_b_authentication_frame")));
+        if (check_attributes_fullfilled ())
+            gtk_widget_set_sensitive (GTK_WIDGET (GCG_get_main_window_object (
+                                        
"anastasis_gtk_main_window_forward_button")), true);
+    }
+}
+
+
+/**
+ * Callback invoked if the the "forward"-button is clicked.
+ *
+ * @param object
+ * @param user_data unused
+ */
+void
+anastasis_gtk_main_window_forward_clicked (GObject *object,
+                                           gpointer user_data)
+{
+    //show identity frame, hide continent frame
+    if (check_state (redux_state, "ReduxCountrySelectedState") &&
+            gtk_widget_is_visible (GTK_WIDGET (GCG_get_main_window_object (
+                                        "anastasis_gtk_continent_frame"))))
+    {
+        gtk_widget_hide (GTK_WIDGET (GCG_get_main_window_object (
+                                        "anastasis_gtk_continent_frame")));
+        gtk_widget_show (GTK_WIDGET (GCG_get_main_window_object (
+                                        "anastasis_gtk_identity_frame")));
+        gtk_widget_set_sensitive (GTK_WIDGET (GCG_get_main_window_object (
+                                        
"anastasis_gtk_main_window_forward_button")), false);
+        gtk_widget_hide (GTK_WIDGET (GCG_get_main_window_object (
+                                        
"anastasis_gtk_continent_selection_image")));
+        gtk_widget_hide (GTK_WIDGET (GCG_get_main_window_object (
+                                        
"anastasis_gtk_country_selection_image")));
+        gtk_widget_show (GTK_WIDGET (GCG_get_main_window_object (
+                                        
"anastasis_gtk_user_attributes_image")));
+    }
+
+    //show provider frame, hide identity frame
+    if (gtk_widget_is_visible (GTK_WIDGET (GCG_get_main_window_object (
+                                        "anastasis_gtk_identity_frame"))) &&
+                check_attributes_fullfilled ())
+    {
+        GList *children, *iter;
+        json_t *arguments = json_object ();
+        json_t *attributes = json_array ();
+
+        children = gtk_container_get_children (GTK_CONTAINER 
(GCG_get_main_window_object (
+                                                                
"anastasis_gtk_identity_vbox")));
+        for (iter = children; iter != NULL; iter = g_list_next (iter))
+        {
+            bool isset = false;
+            char *entry_widget;
+            char *cal_widget;
+            char *widget = gtk_buildable_get_name (iter->data);
+            json_t *id_attr = json_object ();
+
+            GNUNET_asprintf (&entry_widget,
+                             "%s_entry",
+                             widget);
+            GNUNET_asprintf (&cal_widget,
+                             "%s_cal",
+                             widget);
+
+            if (GCG_get_main_window_object (entry_widget))
+            {
+                const char *value = gtk_entry_get_text (GTK_ENTRY 
(GCG_get_main_window_object (entry_widget)));
+                if (strlen (value) > 0)
+                    isset = true;
+                json_object_set_new (id_attr, "type", json_string ("string"));
+                if (strstr (widget, "ia_ahv"))
+                    json_object_set_new (id_attr, "name", json_string 
("ahv_number"));
+                if (strstr (widget, "ia_ssn"))
+                    json_object_set_new (id_attr, "name", json_string 
("social_security_number"));
+                if (strstr (widget, "ia_full_name"))
+                    json_object_set_new (id_attr, "name", json_string 
("full_name"));
+                json_object_set_new (id_attr, "value", json_string (value));
+                json_object_set_new (id_attr, "widget", json_string 
(entry_widget));
+            }
+            if (GCG_get_main_window_object (cal_widget))
+            {
+                guint day;
+                guint month;
+                guint year;
+
+                json_object_set_new (id_attr, "type", json_string ("date"));
+                gtk_calendar_get_date (GTK_CALENDAR 
(GCG_get_main_window_object (cal_widget)),
+                                       &year,
+                                       &month,
+                                       &day);
+                json_object_set_new (id_attr, "year", json_integer (year));
+                json_object_set_new (id_attr, "month", json_integer (month));
+                json_object_set_new (id_attr, "day", json_integer (day));
+                json_object_set_new (id_attr, "widget", json_string 
(cal_widget));
+            }
+            if (isset)
+                json_array_append_new (attributes, id_attr);
+            GNUNET_free (entry_widget);
+            GNUNET_free (cal_widget);
+        }
+        json_object_set_new (arguments, "identity", attributes);
+
+        if (check_state (redux_state, "ReduxCountrySelectedState"))
+            ANASTASIS_backup_action (redux_state,
+                                    "entering_user_attributes",
+                                    arguments,
+                                    &action_cb,
+                                    NULL);
+        else
+            ANASTASIS_backup_action (redux_state,
+                                     "editing_user_attributes",
+                                     arguments,
+                                     &action_cb,
+                                     NULL);
+
+        gtk_widget_hide (GTK_WIDGET (GCG_get_main_window_object (
+                                        "anastasis_gtk_identity_frame")));
+        gtk_widget_show (GTK_WIDGET (GCG_get_main_window_object (
+                                        
"anastasis_gtk_b_authentication_frame")));
+        gtk_widget_set_sensitive (GTK_WIDGET (GCG_get_main_window_object (
+                                        
"anastasis_gtk_main_window_forward_button")), false);
+        gtk_widget_hide (GTK_WIDGET (GCG_get_main_window_object (
+                                        
"anastasis_gtk_user_attributes_image")));
+        gtk_widget_show (GTK_WIDGET (GCG_get_main_window_object (
+                                        
"anastasis_gtk_b_authentication_methods_image")));
+    }
+}
+
+
 /**
  * Task run on shutdown.
  *
@@ -101,6 +534,10 @@ run (void *cls)
   gtk_window_present (GTK_WINDOW (main_window));
   GNUNET_SCHEDULER_add_shutdown (&shutdown_task,
                                  NULL);
+  /* initialize HTTP client */
+  ctx = GNUNET_CURL_init (&GNUNET_CURL_gnunet_scheduler_reschedule,
+                          &rc);
+  rc = GNUNET_CURL_gnunet_rc_create (ctx);
 }
 
 
diff --git a/src/anastasis/anastasis-gtk_backup.c 
b/src/anastasis/anastasis-gtk_backup.c
index 7046f43..ad5f3b4 100644
--- a/src/anastasis/anastasis-gtk_backup.c
+++ b/src/anastasis/anastasis-gtk_backup.c
@@ -32,6 +32,86 @@
 #include <jansson.h>
 
 
+/**
+ * Server information
+ */
+struct ServerInfo
+{
+  /**
+   * URL of the anastasis backend.
+   */
+  char *backend_url;
+
+  /**
+   * label of the anastasis backend.
+   */
+  const char *backend_label;
+
+  /**
+   * supported methods of the anastasis backend.
+   */
+  char *backend_methods;
+
+  /**
+   * server salt of the anastasis backend.
+   */
+  const struct ANASTASIS_CRYPTO_PowSalt *backend_salt;
+
+  /**
+   * insurance of the anastasis backend.
+   */
+  const struct TALER_Amount *backend_insurance;
+
+  /**
+   * cost of using the anastasis backend.
+   */
+  const struct TALER_Amount *backend_cost;
+
+  /**
+   * user identifier derived from user data and backend salt
+   */
+  struct ANASTASIS_CRYPTO_UserIdentifierP *user_id;
+};
+
+/**
+ * State for a "get config" CMD.
+ */
+struct ConfigState
+{
+  /**
+   * Expected status code.
+   */
+  unsigned int http_status;
+
+  /**
+   * The /config GET operation handle.
+   */
+  struct ANASTASIS_ConfigOperation *co;
+
+  /**
+   * Reference to a ServerInfo.
+   */
+  struct ServerInfo *server;
+};
+
+guint g_signal_question;
+guint g_signal_sms;
+guint g_signal_email;
+guint g_signal_post;
+guint g_signal_video;
+
+
+/**
+ * Callback invoked if the the "authentication methods edit"-button is clicked.
+ *
+ * @param object
+ * @param user_data unused
+ */
+void
+anastasis_gtk_b_auth_method_btn_edit_clicked_cb (GObject *object,
+                                                 gpointer user_data);
+
+
 /**
  * Callback invoked if the the "backup"-button is clicked.
  *
@@ -55,7 +135,872 @@ anastasis_gtk_backup_button_clicked (GObject *object,
                                         "anastasis_gtk_main_control_vbox")));
           gtk_widget_show (GTK_WIDGET (GCG_get_main_window_object (
                                         "anastasis_gtk_continent_frame")));
+          gtk_widget_show (GTK_WIDGET (GCG_get_main_window_object (
+                                        
"anastasis_gtk_continent_selection_image")));
+     }
+}
+
+
+/**
+ * Callback invoked if the the "authentication methods delete"-button is 
clicked.
+ *
+ * @param object
+ * @param user_data unused
+ */
+void
+anastasis_gtk_b_auth_method_btn_delete_clicked_cb (GObject *object,
+                                                   gpointer user_data)
+{
+     gtk_widget_destroy (GTK_WIDGET (user_data));
+}
+
+
+/**
+ * Callback invoked if the the "secure question OK"-button is clicked.
+ *
+ * @param object
+ * @param user_data unused
+ */
+void
+anastasis_gtk_b_question_dialog_btn_ok_clicked_cb (GObject *object,
+                                                   gpointer user_data)
+{
+     GtkBox *vbox = GTK_BOX (GCG_get_main_window_object 
("anastasis_gtk_b_authentication_vbox"));
+     GtkHBox *hbox;
+     GtkSeparator *separator = (GtkSeparator *) gtk_separator_new 
(GTK_ORIENTATION_HORIZONTAL);
+
+     bool is_box = GTK_IS_BOX (user_data);
+     if (is_box)
+     {
+          hbox = (GtkHBox *) user_data;
+          GList *children, *iter;
+          children = gtk_container_get_children (GTK_CONTAINER (user_data));
+          for (iter = children; iter != NULL; iter = g_list_next (iter))
+               gtk_widget_destroy (iter->data);
+     }
+     else
+          hbox = (GtkHBox *) gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 0);
+     // set labels
+     GtkLabel *label_prefix = (GtkLabel *) gtk_label_new ("Q: ");
+     gchar *question = gtk_entry_get_text (
+          GTK_ENTRY (GCG_get_main_window_object 
("anastasis_gtk_b_question_dialog_question_entry")));
+     GtkLabel *label_question = (GtkLabel *) gtk_label_new (question);
+     gchar *answer = gtk_entry_get_text (
+          GTK_ENTRY (GCG_get_main_window_object 
("anastasis_gtk_b_question_dialog_answer_entry")));
+     GtkLabel *label_answer = (GtkLabel *) gtk_label_new (answer);
+
+     // set buttons
+     GtkHButtonBox *buttons = (GtkHButtonBox *) gtk_hbox_new(1, 0);
+     GtkButton  *edit_btn = (GtkButton *) gtk_button_new_with_label ("edit");
+     g_signal_connect (edit_btn, 
+                       "clicked", 
+                       G_CALLBACK 
(anastasis_gtk_b_auth_method_btn_edit_clicked_cb),
+                       hbox);
+     GtkButton  *delete_btn = (GtkButton *) gtk_button_new_with_label 
("delete");
+     g_signal_connect (delete_btn, 
+                       "clicked", 
+                       G_CALLBACK 
(anastasis_gtk_b_auth_method_btn_delete_clicked_cb),
+                       hbox);
+     gtk_box_pack_start (buttons, edit_btn, 0, 0, 0);
+     gtk_box_pack_start (buttons, delete_btn, 0, 0, 0);
+     
+     gtk_box_pack_start (hbox, label_prefix, 0, 0, 0);
+     gtk_box_pack_start (hbox, label_question, 0, 0, 0);
+     gtk_box_pack_start (hbox, label_answer, 0, 0, 0);
+     gtk_box_pack_end (hbox, buttons, 0, 0, 0);
+
+     if (! is_box)
+     {
+          gtk_box_pack_start (vbox, hbox, 0, 0, 0);
+          gtk_box_pack_start (vbox, separator, 0, 0, 0);
+     }
+
+     gtk_widget_show (GTK_WIDGET (hbox));
+     gtk_widget_show (GTK_WIDGET (label_prefix));
+     gtk_widget_show (GTK_WIDGET (label_question));
+     gtk_widget_hide (GTK_WIDGET (label_answer));
+     gtk_widget_show (GTK_WIDGET (buttons));
+     gtk_widget_show (GTK_WIDGET (edit_btn));
+     gtk_widget_show (GTK_WIDGET (delete_btn));
+     gtk_widget_show (GTK_WIDGET (separator));
+
+     gtk_entry_set_text ( GTK_ENTRY (
+          GCG_get_main_window_object 
("anastasis_gtk_b_question_dialog_question_entry")), "");
+     gtk_entry_set_text ( GTK_ENTRY (
+          GCG_get_main_window_object 
("anastasis_gtk_b_question_dialog_answer_entry")), "");
+     gtk_widget_hide (GTK_WIDGET (GCG_get_main_window_object (
+                                        "anastasis_gtk_b_question_dialog")));
+}
+
+
+/**
+ * Callback invoked if the the "secure question"-button is clicked.
+ *
+ * @param object
+ * @param user_data unused
+ */
+void
+anastasis_gtk_btn_add_auth_question_clicked_cb (GObject *object,
+                                                gpointer user_data)
+{
+     gtk_widget_show (GTK_WIDGET (GCG_get_main_window_object (
+                                        "anastasis_gtk_b_question_dialog")));
+     GtkButton *ok_btn = 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),
+                                          NULL);
+}
+
+
+/**
+ * Callback invoked if the the "secure question Cancel"-button is clicked.
+ *
+ * @param object
+ * @param user_data unused
+ */
+void
+anastasis_gtk_b_question_dialog_btn_cancel_clicked_cb (GObject *object,
+                                                       gpointer user_data)
+{
+     gtk_entry_set_text ( GTK_ENTRY (
+          GCG_get_main_window_object 
("anastasis_gtk_b_question_dialog_question_entry")), "");
+     gtk_entry_set_text ( GTK_ENTRY (
+          GCG_get_main_window_object 
("anastasis_gtk_b_question_dialog_answer_entry")), "");
+     gtk_widget_hide (GTK_WIDGET (GCG_get_main_window_object (
+                                        "anastasis_gtk_b_question_dialog")));
+}
+
+
+/**
+ * Callback invoked if the the "post OK"-button is clicked.
+ *
+ * @param object
+ * @param user_data unused
+ */
+void
+anastasis_gtk_b_post_dialog_btn_ok_clicked_cb (GObject *object,
+                                               gpointer user_data)
+{
+     GtkHBox *hbox;
+     GtkBox *vbox = GTK_BOX (GCG_get_main_window_object 
("anastasis_gtk_b_authentication_vbox"));
+     GtkSeparator *separator = (GtkSeparator *) gtk_separator_new 
(GTK_ORIENTATION_HORIZONTAL);
+
+     bool is_box = GTK_IS_BOX (user_data);
+     if (is_box)
+     {
+          hbox = (GtkHBox *) user_data;
+          GList *children, *iter;
+          children = gtk_container_get_children (GTK_CONTAINER (user_data));
+          for (iter = children; iter != NULL; iter = g_list_next (iter))
+               gtk_widget_destroy (iter->data);
+     }
+     else
+          hbox = (GtkHBox *) gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 0);
+     // set labels
+     GtkLabel *label_prefix = (GtkLabel *) gtk_label_new ("POST: ");
+     gchar *full_name = gtk_entry_get_text (
+          GTK_ENTRY (GCG_get_main_window_object 
("anastasis_gtk_b_post_dialog_full_name_entry")));
+     GtkLabel *label_full_name = (GtkLabel *) gtk_label_new (full_name);
+     gchar *street = gtk_entry_get_text (
+          GTK_ENTRY (GCG_get_main_window_object 
("anastasis_gtk_b_post_dialog_street_entry")));
+     GtkLabel *label_street = (GtkLabel *) gtk_label_new (street);
+     gchar *city = gtk_entry_get_text (
+          GTK_ENTRY (GCG_get_main_window_object 
("anastasis_gtk_b_post_dialog_city_entry")));
+     GtkLabel *label_city = (GtkLabel *) gtk_label_new (city);
+     gchar *postcode = gtk_entry_get_text (
+          GTK_ENTRY (GCG_get_main_window_object 
("anastasis_gtk_b_post_dialog_postcode_entry")));
+     GtkLabel *label_postcode = (GtkLabel *) gtk_label_new (postcode);
+     gchar *country = gtk_entry_get_text (
+          GTK_ENTRY (GCG_get_main_window_object 
("anastasis_gtk_b_post_dialog_country_entry")));
+     GtkLabel *label_country = (GtkLabel *) gtk_label_new (country);
+
+     // set buttons
+     GtkHButtonBox *buttons = (GtkHButtonBox *) gtk_hbox_new(1, 0);
+     GtkButton  *edit_btn = (GtkButton *) gtk_button_new_with_label ("edit");
+     g_signal_connect (edit_btn, 
+                       "clicked", 
+                       G_CALLBACK 
(anastasis_gtk_b_auth_method_btn_edit_clicked_cb),
+                       hbox);
+     GtkButton  *delete_btn = (GtkButton *) gtk_button_new_with_label 
("delete");
+     g_signal_connect (delete_btn, 
+                       "clicked", 
+                       G_CALLBACK 
(anastasis_gtk_b_auth_method_btn_delete_clicked_cb),
+                       hbox);
+     gtk_box_pack_start (buttons, edit_btn, 0, 0, 0);
+     gtk_box_pack_start (buttons, delete_btn, 0, 0, 0);
+     
+     gtk_box_pack_start (hbox, label_prefix, 0, 0, 0);
+     gtk_box_pack_start (hbox, label_full_name, 0, 0, 0);
+     gtk_box_pack_start (hbox, label_street, 0, 0, 0);
+     gtk_box_pack_start (hbox, label_city, 0, 0, 0);
+     gtk_box_pack_start (hbox, label_postcode, 0, 0, 0);
+     gtk_box_pack_start (hbox, label_country, 0, 0, 0);
+     gtk_box_pack_end (hbox, buttons, 0, 0, 0);
+
+     if (! is_box)
+     {
+          gtk_box_pack_start (vbox, hbox, 0, 0, 0);
+          gtk_box_pack_start (vbox, separator, 0, 0, 0);
+     }
+
+     gtk_widget_show (GTK_WIDGET (hbox));
+     gtk_widget_show (GTK_WIDGET (label_prefix));
+     gtk_widget_show (GTK_WIDGET (label_full_name));
+     gtk_widget_show (GTK_WIDGET (label_street));
+     gtk_widget_show (GTK_WIDGET (label_city));
+     gtk_widget_show (GTK_WIDGET (label_postcode));
+     gtk_widget_show (GTK_WIDGET (label_country));
+     gtk_widget_show (GTK_WIDGET (buttons));
+     gtk_widget_show (GTK_WIDGET (edit_btn));
+     gtk_widget_show (GTK_WIDGET (delete_btn));
+     gtk_widget_show (GTK_WIDGET (separator));
+
+     gtk_entry_set_text ( GTK_ENTRY (
+          GCG_get_main_window_object 
("anastasis_gtk_b_post_dialog_full_name_entry")), "");
+     gtk_entry_set_text ( GTK_ENTRY (
+          GCG_get_main_window_object 
("anastasis_gtk_b_post_dialog_street_entry")), "");
+     gtk_entry_set_text ( GTK_ENTRY (
+          GCG_get_main_window_object 
("anastasis_gtk_b_post_dialog_city_entry")), "");
+     gtk_entry_set_text ( GTK_ENTRY (
+          GCG_get_main_window_object 
("anastasis_gtk_b_post_dialog_postcode_entry")), "");
+     gtk_entry_set_text ( GTK_ENTRY (
+          GCG_get_main_window_object 
("anastasis_gtk_b_post_dialog_country_entry")), "");
+     gtk_widget_hide (GTK_WIDGET (GCG_get_main_window_object (
+                                        "anastasis_gtk_b_post_dialog")));
+}
+
+
+/**
+ * Callback invoked if the the "post"-button is clicked.
+ *
+ * @param object
+ * @param user_data unused
+ */
+void
+anastasis_gtk_btn_add_auth_post_clicked_cb (GObject *object,
+                                             gpointer user_data)
+{
+     gtk_widget_show (GTK_WIDGET (GCG_get_main_window_object (
+                                        "anastasis_gtk_b_post_dialog")));
+     GtkButton *ok_btn = 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),
+                                      NULL);
+}
+
+
+/**
+ * Callback invoked if the the "secure question Cancel"-button is clicked.
+ *
+ * @param object
+ * @param user_data unused
+ */
+void
+anastasis_gtk_b_post_dialog_btn_cancel_clicked_cb (GObject *object,
+                                                   gpointer user_data)
+{
+     gtk_entry_set_text ( GTK_ENTRY (
+          GCG_get_main_window_object 
("anastasis_gtk_b_post_dialog_full_name_entry")), "");
+     gtk_entry_set_text ( GTK_ENTRY (
+          GCG_get_main_window_object 
("anastasis_gtk_b_post_dialog_street_entry")), "");
+     gtk_entry_set_text ( GTK_ENTRY (
+          GCG_get_main_window_object 
("anastasis_gtk_b_post_dialog_city_entry")), "");
+     gtk_entry_set_text ( GTK_ENTRY (
+          GCG_get_main_window_object 
("anastasis_gtk_b_post_dialog_postcode_entry")), "");
+     gtk_entry_set_text ( GTK_ENTRY (
+          GCG_get_main_window_object 
("anastasis_gtk_b_post_dialog_country_entry")), "");
+     gtk_widget_hide (GTK_WIDGET (GCG_get_main_window_object (
+                                        "anastasis_gtk_b_post_dialog")));
+}
+
+
+/**
+ * Callback invoked if the the "video OK"-button is clicked.
+ *
+ * @param object
+ * @param user_data unused
+ */
+void
+anastasis_gtk_b_video_dialog_btn_ok_clicked_cb (GObject *object,
+                                                gpointer user_data)
+{
+     GtkHBox *hbox;
+     GtkBox *vbox = GTK_BOX (GCG_get_main_window_object 
("anastasis_gtk_b_authentication_vbox"));
+     GtkSeparator *separator = (GtkSeparator *) gtk_separator_new 
(GTK_ORIENTATION_HORIZONTAL);
+
+     bool is_box = GTK_IS_BOX (user_data);
+     if (is_box)
+     {
+          hbox = (GtkHBox *) user_data;
+          GList *children, *iter;
+          children = gtk_container_get_children (GTK_CONTAINER (user_data));
+          for (iter = children; iter != NULL; iter = g_list_next (iter))
+               gtk_widget_destroy (iter->data);
+     }
+     else
+          hbox = (GtkHBox *) gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 0);
+     // set labels
+     GtkLabel *label_prefix = (GtkLabel *) gtk_label_new ("VIDEO: ");
+     gchar *photo_path = gtk_entry_get_text (
+          GTK_ENTRY (GCG_get_main_window_object 
("anastasis_gtk_b_video_dialog_photo_path_entry")));
+     GtkLabel *label_photo_path = (GtkLabel *) gtk_label_new (photo_path);
+
+     // set buttons
+     GtkHButtonBox *buttons = (GtkHButtonBox *) gtk_hbox_new(1, 0);
+     GtkButton  *edit_btn = (GtkButton *) gtk_button_new_with_label ("edit");
+     g_signal_connect (edit_btn, 
+                       "clicked", 
+                       G_CALLBACK 
(anastasis_gtk_b_auth_method_btn_edit_clicked_cb),
+                       hbox);
+     GtkButton  *delete_btn = (GtkButton *) gtk_button_new_with_label 
("delete");
+     g_signal_connect (delete_btn, 
+                       "clicked", 
+                       G_CALLBACK 
(anastasis_gtk_b_auth_method_btn_delete_clicked_cb),
+                       hbox);
+     gtk_box_pack_start (buttons, edit_btn, 0, 0, 0);
+     gtk_box_pack_start (buttons, delete_btn, 0, 0, 0);
+     
+     gtk_box_pack_start (hbox, label_prefix, 0, 0, 0);
+     gtk_box_pack_start (hbox, label_photo_path, 0, 0, 0);
+     gtk_box_pack_end (hbox, buttons, 0, 0, 0);
+
+     if (! is_box)
+     {
+          gtk_box_pack_start (vbox, hbox, 0, 0, 0);
+          gtk_box_pack_start (vbox, separator, 0, 0, 0);
+     }
+
+     gtk_widget_show (GTK_WIDGET (hbox));
+     gtk_widget_show (GTK_WIDGET (label_prefix));
+     gtk_widget_show (GTK_WIDGET (label_photo_path));
+     gtk_widget_show (GTK_WIDGET (buttons));
+     gtk_widget_show (GTK_WIDGET (edit_btn));
+     gtk_widget_show (GTK_WIDGET (delete_btn));
+     gtk_widget_show (GTK_WIDGET (separator));
+
+     gtk_entry_set_text ( GTK_ENTRY (
+          GCG_get_main_window_object 
("anastasis_gtk_b_video_dialog_photo_path_entry")), "");
+     gtk_widget_hide (GTK_WIDGET (GCG_get_main_window_object (
+                                        "anastasis_gtk_b_video_dialog")));
+}
+
+
+/**
+ * Callback invoked if the the "video"-button is clicked.
+ *
+ * @param object
+ * @param user_data unused
+ */
+void
+anastasis_gtk_btn_add_auth_video_clicked_cb (GObject *object,
+                                              gpointer user_data)
+{
+     gtk_widget_show (GTK_WIDGET (GCG_get_main_window_object (
+                                        "anastasis_gtk_b_video_dialog")));
+     GtkButton *ok_btn = GCG_get_main_window_object (
+                                        "anastasis_gtk_b_video_dialog_btn_ok");
+     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_post_dialog_btn_ok_clicked_cb),
+                                       NULL);
+}
+
+
+/**
+ * Callback invoked if the the "video Cancel"-button is clicked.
+ *
+ * @param object
+ * @param user_data unused
+ */
+void
+anastasis_gtk_b_video_dialog_btn_cancel_clicked_cb (GObject *object,
+                                                    gpointer user_data)
+{
+     gtk_entry_set_text ( GTK_ENTRY (
+          GCG_get_main_window_object 
("anastasis_gtk_b_video_dialog_photo_path_entry")), "");
+     gtk_widget_hide (GTK_WIDGET (GCG_get_main_window_object (
+                                        "anastasis_gtk_b_video_dialog")));
+}
+
+
+/**
+ * Callback invoked if the the "sms OK"-button is clicked.
+ *
+ * @param object
+ * @param user_data unused
+ */
+void
+anastasis_gtk_b_sms_dialog_btn_ok_clicked_cb (GObject *object,
+                                              gpointer user_data)
+{
+     GtkHBox *hbox;
+     GtkBox *vbox = GTK_BOX (GCG_get_main_window_object 
("anastasis_gtk_b_authentication_vbox"));
+     GtkSeparator *separator = (GtkSeparator *) gtk_separator_new 
(GTK_ORIENTATION_HORIZONTAL);
+
+     bool is_box = GTK_IS_BOX (user_data);
+     if (is_box)
+     {
+          hbox = (GtkHBox *) user_data;
+          GList *children, *iter;
+          children = gtk_container_get_children (GTK_CONTAINER (user_data));
+          for (iter = children; iter != NULL; iter = g_list_next (iter))
+               gtk_widget_destroy (iter->data);
      }
+     else
+          hbox = (GtkHBox *) gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 0);
+     // set labels
+     GtkLabel *label_prefix = (GtkLabel *) gtk_label_new ("SMS: ");
+     gchar *phonenumber = gtk_entry_get_text (
+          GTK_ENTRY (GCG_get_main_window_object 
("anastasis_gtk_b_sms_dialog_phonenumber_entry")));
+     GtkLabel *label_phonenumber = (GtkLabel *) gtk_label_new (phonenumber);
+
+     // set buttons
+     GtkHButtonBox *buttons = (GtkHButtonBox *) gtk_hbox_new(1, 0);
+     GtkButton  *edit_btn = (GtkButton *) gtk_button_new_with_label ("edit");
+     g_signal_connect (edit_btn, 
+                       "clicked", 
+                       G_CALLBACK 
(anastasis_gtk_b_auth_method_btn_edit_clicked_cb),
+                       hbox);
+     GtkButton  *delete_btn = (GtkButton *) gtk_button_new_with_label 
("delete");
+     g_signal_connect (delete_btn, 
+                       "clicked", 
+                       G_CALLBACK 
(anastasis_gtk_b_auth_method_btn_delete_clicked_cb),
+                       hbox);
+     gtk_box_pack_start (buttons, edit_btn, 0, 0, 0);
+     gtk_box_pack_start (buttons, delete_btn, 0, 0, 0);
+     
+     gtk_box_pack_start (hbox, label_prefix, 0, 0, 0);
+     gtk_box_pack_start (hbox, label_phonenumber, 0, 0, 0);
+     gtk_box_pack_end (hbox, buttons, 0, 0, 0);
+
+     if (! is_box)
+     {
+          gtk_box_pack_start (vbox, hbox, 0, 0, 0);
+          gtk_box_pack_start (vbox, separator, 0, 0, 0);
+     }
+
+     gtk_widget_show (GTK_WIDGET (hbox));
+     gtk_widget_show (GTK_WIDGET (label_prefix));
+     gtk_widget_show (GTK_WIDGET (label_phonenumber));
+     gtk_widget_show (GTK_WIDGET (buttons));
+     gtk_widget_show (GTK_WIDGET (edit_btn));
+     gtk_widget_show (GTK_WIDGET (delete_btn));
+     gtk_widget_show (GTK_WIDGET (separator));
+
+     gtk_entry_set_text ( GTK_ENTRY (
+          GCG_get_main_window_object 
("anastasis_gtk_b_sms_dialog_phonenumber_entry")), "");
+     gtk_widget_hide (GTK_WIDGET (GCG_get_main_window_object (
+                                        "anastasis_gtk_b_sms_dialog")));
+}
+
+
+/**
+ * Callback invoked if the the "sms"-button is clicked.
+ *
+ * @param object
+ * @param user_data unused
+ */
+void
+anastasis_gtk_btn_add_auth_sms_clicked_cb (GObject *object,
+                                            gpointer user_data)
+{
+     gtk_widget_show (GTK_WIDGET (GCG_get_main_window_object (
+                                        "anastasis_gtk_b_sms_dialog")));
+     GtkButton *ok_btn = 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),
+                                     NULL);
+}
+
+
+/**
+ * Callback invoked if the the "sms Cancel"-button is clicked.
+ *
+ * @param object
+ * @param user_data unused
+ */
+void
+anastasis_gtk_b_sms_dialog_btn_cancel_clicked_cb (GObject *object,
+                                                  gpointer user_data)
+{
+     gtk_entry_set_text ( GTK_ENTRY (
+          GCG_get_main_window_object 
("anastasis_gtk_b_sms_dialog_phonenumber_entry")), "");
+     gtk_widget_hide (GTK_WIDGET (GCG_get_main_window_object (
+                                        "anastasis_gtk_b_sms_dialog")));
+}
+
+
+/**
+ * Callback invoked if the the "email OK"-button is clicked.
+ *
+ * @param object
+ * @param user_data unused
+ */
+void
+anastasis_gtk_b_email_dialog_btn_ok_clicked_cb (GObject *object,
+                                                gpointer user_data)
+{
+     GtkHBox *hbox;
+     GtkBox *vbox = GTK_BOX (GCG_get_main_window_object 
("anastasis_gtk_b_authentication_vbox"));
+     GtkSeparator *separator = (GtkSeparator *) gtk_separator_new 
(GTK_ORIENTATION_HORIZONTAL);
+
+     bool is_box = GTK_IS_BOX (user_data);
+     if (is_box)
+     {
+          hbox = (GtkHBox *) user_data;
+          GList *children, *iter;
+          children = gtk_container_get_children (GTK_CONTAINER (user_data));
+          for (iter = children; iter != NULL; iter = g_list_next (iter))
+               gtk_widget_destroy (iter->data);
+     }
+     else
+          hbox = (GtkHBox *) gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 0);
+     // set labels
+     GtkLabel *label_prefix = (GtkLabel *) gtk_label_new ("EMAIL: ");
+     gchar *mailaddress = gtk_entry_get_text (
+          GTK_ENTRY (GCG_get_main_window_object 
("anastasis_gtk_b_email_dialog_mailaddress_entry")));
+     GtkLabel *label_mailaddress = (GtkLabel *) gtk_label_new (mailaddress);
+
+     // set buttons
+     GtkHButtonBox *buttons = (GtkHButtonBox *) gtk_hbox_new(1, 0);
+     GtkButton  *edit_btn = (GtkButton *) gtk_button_new_with_label ("edit");
+     g_signal_connect (edit_btn, 
+                       "clicked", 
+                       G_CALLBACK 
(anastasis_gtk_b_auth_method_btn_edit_clicked_cb),
+                       hbox);
+     GtkButton  *delete_btn = (GtkButton *) gtk_button_new_with_label 
("delete");
+     g_signal_connect (delete_btn, 
+                       "clicked", 
+                       G_CALLBACK 
(anastasis_gtk_b_auth_method_btn_delete_clicked_cb),
+                       hbox);
+     gtk_box_pack_start (buttons, edit_btn, 0, 0, 0);
+     gtk_box_pack_start (buttons, delete_btn, 0, 0, 0);
+     
+     gtk_box_pack_start (hbox, label_prefix, 0, 0, 0);
+     gtk_box_pack_start (hbox, label_mailaddress, 0, 0, 0);
+     gtk_box_pack_end (hbox, buttons, 0, 0, 0);
+
+     if (! is_box)
+     {
+          gtk_box_pack_start (vbox, hbox, 0, 0, 0);
+          gtk_box_pack_start (vbox, separator, 0, 0, 0);
+     }
+
+     gtk_widget_show (GTK_WIDGET (hbox));
+     gtk_widget_show (GTK_WIDGET (label_prefix));
+     gtk_widget_show (GTK_WIDGET (label_mailaddress));
+     gtk_widget_show (GTK_WIDGET (buttons));
+     gtk_widget_show (GTK_WIDGET (edit_btn));
+     gtk_widget_show (GTK_WIDGET (delete_btn));
+     gtk_widget_show (GTK_WIDGET (separator));
+
+     gtk_entry_set_text ( GTK_ENTRY (
+          GCG_get_main_window_object 
("anastasis_gtk_b_email_dialog_mailaddress_entry")), "");
+     gtk_widget_hide (GTK_WIDGET (GCG_get_main_window_object (
+                                        "anastasis_gtk_b_email_dialog")));
+}
+
+
+/**
+ * Callback invoked if the the "email"-button is clicked.
+ *
+ * @param object
+ * @param user_data unused
+ */
+void
+anastasis_gtk_btn_add_auth_email_clicked_cb (GObject *object,
+                                             gpointer user_data)
+{
+     gtk_widget_show (GTK_WIDGET (GCG_get_main_window_object (
+                                        "anastasis_gtk_b_email_dialog")));
+     GtkButton *ok_btn = 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),
+                                       NULL);
+}
+
+
+/**
+ * Callback invoked if the the "email Cancel"-button is clicked.
+ *
+ * @param object
+ * @param user_data unused
+ */
+void
+anastasis_gtk_b_email_dialog_btn_cancel_clicked_cb (GObject *object,
+                                                  gpointer user_data)
+{
+     gtk_entry_set_text ( GTK_ENTRY (
+          GCG_get_main_window_object 
("anastasis_gtk_b_email_dialog_mailaddress_entry")), "");
+     gtk_widget_hide (GTK_WIDGET (GCG_get_main_window_object (
+                                        "anastasis_gtk_b_email_dialog")));
+}
+
+
+/**
+ * Callback invoked if the the "authentication methods edit"-button is clicked.
+ *
+ * @param object
+ * @param user_data unused
+ */
+void
+anastasis_gtk_b_auth_method_btn_edit_clicked_cb (GObject *object,
+                                                 gpointer user_data)
+{
+     GList *children, *iter;
+     children = gtk_container_get_children (GTK_CONTAINER (user_data));
+     char *type;
+     unsigned int index = 0;
+     for (iter = children; iter != NULL; iter = g_list_next (iter))
+     {
+          gchar *text;
+          gchar *widget_name = gtk_widget_get_name (GTK_WIDGET (iter->data));
+          if (0 == strcmp (widget_name, "GtkLabel"))
+          {
+               text = gtk_label_get_text (GTK_LABEL (iter->data));
+               if (0 == strcmp (text, "Q: "))
+                    type = "question";
+               if (0 == strcmp (text, "SMS: "))
+                    type = "sms";
+               if (0 == strcmp (text, "EMAIL: "))
+                    type = "email";
+               if (0 == strcmp (text, "POST: "))
+                    type = "post";
+               if (0 == strcmp (text, "VIDEO: "))
+                    type = "video";
+          }
+          if (index > 0)
+          {
+               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);
+                    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 = 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);
+                         
+                         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);
+                         GtkButton *ok_btn = 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);
+                         
+                         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);
+                         GtkButton *ok_btn = 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);
+                         
+                         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);
+                    if (index == 2)
+                         gtk_entry_set_text (GTK_ENTRY 
(GCG_get_main_window_object (
+                                        
"anastasis_gtk_b_post_dialog_street_entry")), text);
+                    if (index == 3)
+                         gtk_entry_set_text (GTK_ENTRY 
(GCG_get_main_window_object (
+                                        
"anastasis_gtk_b_post_dialog_city_entry")), text);
+                    if (index == 4)
+                         gtk_entry_set_text (GTK_ENTRY 
(GCG_get_main_window_object (
+                                        
"anastasis_gtk_b_post_dialog_postcode_entry")), text);
+                    if (index == 5)
+                    {
+                         gtk_entry_set_text (GTK_ENTRY 
(GCG_get_main_window_object (
+                                        
"anastasis_gtk_b_post_dialog_country_entry")), text);
+                         GtkButton *ok_btn = 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);
+                         
+                         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);
+                         GtkButton *ok_btn = GCG_get_main_window_object (
+                                        "anastasis_gtk_b_video_dialog_btn_ok");
+                         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);
+                         
+                         gtk_widget_show (GTK_WIDGET 
(GCG_get_main_window_object (
+                                                            
"anastasis_gtk_b_video_dialog")));
+                         break;
+                    }
+               }
+          }
+          index++;
+     }
+     g_list_free (children);
+}
+
+
+/**
+ * Function called with the results of a #ANASTASIS_get_config().
+ *
+ * @param cls closure
+ * @param http_status HTTP status of the request
+ * @param methods supported methods by this provider
+ * @param annual_fee Annual fee of this service
+ * @param question_cost Cost for authentication by question
+ */
+static void
+config_cb (void *cls,
+           unsigned int http_status,
+           const char *methods,
+           const char *conf_currency,
+           const struct TALER_Amount *annual_fee,
+           const struct TALER_Amount *question_cost)
+{
+     json_t *auth_method = json_object ();
+     struct ConfigState *cs = cls;
+
+     cs->co = NULL;
+     GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
+               "At %s:%d url is %s\n", __FILE__, __LINE__,
+               cs->server->backend_url);
+     if (http_status != cs->http_status)
+     {
+          GNUNET_log (GNUNET_ERROR_TYPE_ERROR,
+                         "Unexpected response code %u in %s:%u\n",
+                         http_status,
+                         __FILE__,
+                         __LINE__);
+          //return;
+     }
+     if (NULL != strstr (methods, "question"))
+     {
+          gtk_widget_show (GTK_WIDGET (GCG_get_main_window_object (
+                                        
"anastasis_gtk_btn_add_auth_question")));
+     }
+     if (NULL != strstr (methods, "sms"))
+     {
+          gtk_widget_show (GTK_WIDGET (GCG_get_main_window_object (
+                                        "anastasis_gtk_btn_add_auth_sms")));
+     }
+     if (NULL != strstr (methods, "email"))
+     {
+          gtk_widget_show (GTK_WIDGET (GCG_get_main_window_object (
+                                        "anastasis_gtk_btn_add_auth_email")));
+     }
+     if (NULL != strstr (methods, "video"))
+     {
+          gtk_widget_show (GTK_WIDGET (GCG_get_main_window_object (
+                                        "anastasis_gtk_btn_add_auth_video")));
+     }
+     if (NULL != strstr (methods, "post"))
+     {
+          gtk_widget_show (GTK_WIDGET (GCG_get_main_window_object (
+                                        "anastasis_gtk_btn_add_auth_post")));
+     }
+}
+
+
+/**
+ * Initialize the auhentication methods.
+ * 
+ * @param state the initial state to get the continents from
+ */
+void
+init_auth_methods (json_t *state)
+{
+    size_t index;
+    json_t *provider;
+    json_t *provider_list = json_object_get (state, "provider-list");
+
+    json_array_foreach (provider_list, index, provider)
+    {
+          struct ConfigState *cs = GNUNET_new (struct ConfigState);
+          const char *url = json_string_value (json_object_get (provider, 
"provider-url"));
+          GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
+                      "Url is: %s\n", url);
+          cs->http_status = MHD_HTTP_OK;
+          cs->co = ANASTASIS_get_config (ctx,
+                                         url,
+                                         config_cb,
+                                         cs);
+          if (NULL == cs->co)
+          {
+          /** FIXME: Error handling */
+          }
+    }
 }
 
 
diff --git a/src/anastasis/anastasis-gtk_helper.c 
b/src/anastasis/anastasis-gtk_helper.c
index 1b9b6b6..f0b94eb 100644
--- a/src/anastasis/anastasis-gtk_helper.c
+++ b/src/anastasis/anastasis-gtk_helper.c
@@ -33,11 +33,11 @@
 
 
 /**
- * Function to ckeck if minimal required attributes are set.
+ * Function to ckeck if required attributes are set.
  * 
  * @return bool
  */
-static bool
+bool
 check_attributes_fullfilled ()
 {
     size_t index;
@@ -161,7 +161,7 @@ persist_state (json_t *state)
  * @param error_code Error code
  * @param new_state new state as result
  */
-static void
+void
 action_cb (void *cls,
            enum ANASTASIS_ErrorCode error_code,
            json_t *result_state)
@@ -170,21 +170,32 @@ action_cb (void *cls,
     {
         redux_state = json_deep_copy (result_state);
         if (check_state (redux_state, "ReduxContinentSelectedState"))
+        {
             init_country_list (redux_state, json_string_value (json_object_get 
(redux_state, "selected_continent")));
+            gtk_widget_hide (GTK_WIDGET (GCG_get_main_window_object (
+                                        
"anastasis_gtk_continent_selection_image")));
+            gtk_widget_show (GTK_WIDGET (GCG_get_main_window_object (
+                                        
"anastasis_gtk_country_selection_image")));
+        }
         if (check_state (redux_state, "ReduxCountrySelectedState"))
         {
             gtk_widget_set_sensitive (GTK_WIDGET (GCG_get_main_window_object (
                                         
"anastasis_gtk_main_window_forward_button")), true);
             init_id_attr (redux_state, json_string_value (json_object_get 
(redux_state, "selected_country")));
         }
-
+        if (check_state (redux_state, "ReduxUserAttributesAddedState"))
+        {
+            init_auth_methods (redux_state);
+        }
+        /** FIXME: Don't use this like this */
         if (0 == persist_state (redux_state))
             return;
         else
             GNUNET_log (GNUNET_ERROR_TYPE_ERROR,
                 "Failed to persist new state! \n");
     }
-    GNUNET_SCHEDULER_shutdown ();
+    /** FIXME: see above
+     * GNUNET_SCHEDULER_shutdown (); */
 }
 
 
@@ -321,343 +332,4 @@ init_id_attr (json_t *state,
          * FIXME: handle other types
          */    
     }
-}
-
-
-/**
- * Callback invoked if a text is inserted in "cal" GtkEntry.
- *
- * @param cell_editable the object on which the signal was emitted
- * @param user_data user data set when the signal handler was connected 
(unused)
- */
-void
-anastasis_gtk_ia_birthdate_cal_day_selected_cb (GtkCellEditable *cell_editable,
-                                       gpointer user_data)
-{
-    gtk_widget_set_sensitive (GTK_WIDGET (GCG_get_main_window_object (
-                                        
"anastasis_gtk_main_window_forward_button")), false);
-
-    // check, if required attributes are set to activate forward button
-    if (check_attributes_fullfilled ())
-        gtk_widget_set_sensitive (GTK_WIDGET (GCG_get_main_window_object (
-                                        
"anastasis_gtk_main_window_forward_button")), true);
-}
-
-
-/**
- * Callback invoked if a text is inserted in "ssn" GtkEntry.
- *
- * @param cell_editable the object on which the signal was emitted
- * @param user_data user data set when the signal handler was connected 
(unused)
- */
-void
-anastasis_gtk_ia_ssn_entry_changed_cb (GtkCellEditable *cell_editable,
-                                       gpointer user_data)
-{
-    gtk_widget_set_sensitive (GTK_WIDGET (GCG_get_main_window_object (
-                                        
"anastasis_gtk_main_window_forward_button")), false);
-
-    // check, if required attributes are set to activate forward button
-    if (check_attributes_fullfilled ())
-        gtk_widget_set_sensitive (GTK_WIDGET (GCG_get_main_window_object (
-                                        
"anastasis_gtk_main_window_forward_button")), true);
-}
-
-
-/**
- * Callback invoked if a text is inserted in "ahv" GtkEntry.
- *
- * @param cell_editable the object on which the signal was emitted
- * @param user_data user data set when the signal handler was connected 
(unused)
- */
-void
-anastasis_gtk_ia_ahv_entry_changed_cb (GtkCellEditable *cell_editable,
-                                       gpointer user_data)
-{
-    gtk_widget_set_sensitive (GTK_WIDGET (GCG_get_main_window_object (
-                                        
"anastasis_gtk_main_window_forward_button")), false);
-
-    // check, if required attributes are set to activate forward button
-    if (check_attributes_fullfilled ())
-        gtk_widget_set_sensitive (GTK_WIDGET (GCG_get_main_window_object (
-                                        
"anastasis_gtk_main_window_forward_button")), true);
-}
-
-
-/**
- * Callback invoked if a text is inserted in "full_name" GtkEntry.
- *
- * @param cell_editable the object on which the signal was emitted
- * @param user_data user data set when the signal handler was connected 
(unused)
- */
-void
-anastasis_gtk_ia_full_name_entry_changed_cb (GtkCellEditable *cell_editable,
-                                             gpointer user_data)
-{
-    gtk_widget_set_sensitive (GTK_WIDGET (GCG_get_main_window_object (
-                                        
"anastasis_gtk_main_window_forward_button")), false);
-
-    // check, if required attributes are set to activate forward button
-    if (check_attributes_fullfilled ())
-        gtk_widget_set_sensitive (GTK_WIDGET (GCG_get_main_window_object (
-                                        
"anastasis_gtk_main_window_forward_button")), true);
-}
-
-
-/**
- * Callback invoked if a continent is selected (row-activated signal).
- *
- * @param tree_view the object on which the signal is emitted
- * @param path the GtkTreePath for the activated row
- * @param column the GtkTreeViewColumn in which the activation occurred
- * @param user_data user data set when the signal handler was connected 
(unused)
- */
-void
-anastasis_gtk_continent_activated (GtkTreeView *tree_view,
-                                   GtkTreePath *path,
-                                   GtkTreeViewColumn *column,
-                                   gpointer user_data)
-{
-        GtkTreeIter iter;
-        GtkTreeModel *model= gtk_tree_view_get_model (tree_view);
-
-        if (gtk_tree_model_get_iter(model, &iter, path))
-        {
-            gchar *continent_name;
-            json_t *arguments = json_object ();
-
-            if (NULL == arguments)
-            {
-                GNUNET_break (0);
-            }
-            gtk_tree_model_get (model, &iter, 0, &continent_name, -1);
-            json_object_set (arguments, "continent", json_string 
(continent_name));
-
-            if (check_state (redux_state, "ReduxContinentSelectedState"))
-                redux_state = ANASTASIS_backup_start (cfg);
-            ANASTASIS_backup_action (redux_state,
-                                     "selection_continent",
-                                     arguments,
-                                     &action_cb,
-                                     NULL);
-            g_free(continent_name);
-        }
-}
-
-
-/**
- * Callback invoked if a country is selected (row-activated signal).
- *
- * @param tree_view the object on which the signal is emitted
- * @param path the GtkTreePath for the activated row
- * @param column the GtkTreeViewColumn in which the activation occurred
- * @param user_data user data set when the signal handler was connected 
(unused)
- */
-void
-anastasis_gtk_country_activated (GtkTreeView *tree_view,
-                                 GtkTreePath *path,
-                                 GtkTreeViewColumn *column,
-                                 gpointer user_data)
-{
-        GtkTreeIter iter;
-        GtkTreeModel *model= gtk_tree_view_get_model (tree_view);
-
-        if (gtk_tree_model_get_iter(model, &iter, path))
-        {
-            gchar *country_name;
-            gchar *country_code;
-            json_t *arguments = json_object ();
-
-            if (NULL == arguments)
-            {
-                GNUNET_break (0);
-            }
-            gtk_tree_model_get (model, &iter, 
-                                0, &country_name, 
-                                1, &country_code, 
-                                -1);
-            json_object_set (arguments, "country", json_string (country_name));
-            json_object_set (arguments, "country_code", json_string 
(country_code));
-
-            if (check_state (redux_state, "ReduxContinentSelectedState"))
-                ANASTASIS_backup_action (redux_state,
-                                        "selection_country",
-                                        arguments,
-                                        &action_cb,
-                                        NULL);
-
-            else
-                if (! (0 == strcmp (country_name, json_string_value (
-                    json_object_get (redux_state, "selected_country")))))
-                {
-                    ANASTASIS_backup_action (redux_state,
-                                             "changing_country",
-                                             arguments,
-                                             &action_cb,
-                                             NULL);
-                }
-                
-            g_free(country_name);
-            g_free(country_code);
-        }
-}
-
-
-/**
- * Callback invoked if the the "back"-button is clicked.
- *
- * @param object
- * @param user_data unused
- */
-void
-anastasis_gtk_main_window_back_clicked (GObject *object,
-                                        gpointer user_data)
-{
-    char *state = json_string_value (json_object_get (redux_state, 
"backup-state"));
-    if (!state)
-        state = json_string_value (json_object_get (redux_state, 
"recovery-state"));
-    GNUNET_assert (state);
-
-    if (gtk_widget_is_visible (GTK_WIDGET (GCG_get_main_window_object (
-                                        "anastasis_gtk_continent_frame"))))
-    {
-        /** FIXME: Show warning in this case, because state is lost afterwards 
*/
-        gtk_widget_show (GTK_WIDGET (GCG_get_main_window_object (
-                                        "anastasis_gtk_start_frame")));
-        gtk_widget_hide (GTK_WIDGET (GCG_get_main_window_object (
-                                        "anastasis_gtk_main_control_vbox")));
-        gtk_widget_hide (GTK_WIDGET (GCG_get_main_window_object (
-                                        "anastasis_gtk_continent_frame")));
-        gtk_widget_set_sensitive (GTK_WIDGET (GCG_get_main_window_object (
-                                        
"anastasis_gtk_main_window_forward_button")), false);
-    }
-    if (gtk_widget_is_visible (GTK_WIDGET (GCG_get_main_window_object (
-                                        "anastasis_gtk_identity_frame"))))
-    {
-        gtk_widget_show (GTK_WIDGET (GCG_get_main_window_object (
-                                        "anastasis_gtk_continent_frame")));
-        gtk_widget_hide (GTK_WIDGET (GCG_get_main_window_object (
-                                        "anastasis_gtk_identity_frame")));
-    }
-    if (gtk_widget_is_visible (GTK_WIDGET (GCG_get_main_window_object (
-                                        
"anastasis_gtk_b_authentication_frame"))))
-    {
-        gtk_widget_show (GTK_WIDGET (GCG_get_main_window_object (
-                                        "anastasis_gtk_identity_frame")));
-        gtk_widget_hide (GTK_WIDGET (GCG_get_main_window_object (
-                                        
"anastasis_gtk_b_authentication_frame")));
-        if (check_attributes_fullfilled ())
-            gtk_widget_set_sensitive (GTK_WIDGET (GCG_get_main_window_object (
-                                        
"anastasis_gtk_main_window_forward_button")), true);
-    }
-}
-
-
-/**
- * Callback invoked if the the "forward"-button is clicked.
- *
- * @param object
- * @param user_data unused
- */
-void
-anastasis_gtk_main_window_forward_clicked (GObject *object,
-                                           gpointer user_data)
-{
-    //show identity frame, hide continent frame
-    if (check_state (redux_state, "ReduxCountrySelectedState") &&
-            gtk_widget_is_visible (GTK_WIDGET (GCG_get_main_window_object (
-                                        "anastasis_gtk_continent_frame"))))
-    {
-        gtk_widget_hide (GTK_WIDGET (GCG_get_main_window_object (
-                                        "anastasis_gtk_continent_frame")));
-        gtk_widget_show (GTK_WIDGET (GCG_get_main_window_object (
-                                        "anastasis_gtk_identity_frame")));
-        gtk_widget_set_sensitive (GTK_WIDGET (GCG_get_main_window_object (
-                                        
"anastasis_gtk_main_window_forward_button")), false);
-    }
-
-    //show provider frame, hide identity frame
-    if (gtk_widget_is_visible (GTK_WIDGET (GCG_get_main_window_object (
-                                        "anastasis_gtk_identity_frame"))) &&
-                check_attributes_fullfilled ())
-    {
-        GList *children, *iter;
-        json_t *arguments = json_object ();
-        json_t *attributes = json_array ();
-
-        children = gtk_container_get_children (GTK_CONTAINER 
(GCG_get_main_window_object (
-                                                                
"anastasis_gtk_identity_vbox")));
-        for (iter = children; iter != NULL; iter = g_list_next (iter))
-        {
-            bool isset = false;
-            const char *entry_widget;
-            const char *cal_widget;
-            const char *widget = gtk_buildable_get_name (iter->data);
-            json_t *id_attr = json_object ();
-
-            GNUNET_asprintf (&entry_widget,
-                             "%s_entry",
-                             widget);
-            GNUNET_asprintf (&cal_widget,
-                             "%s_cal",
-                             widget);
-
-            if (GCG_get_main_window_object (entry_widget))
-            {
-                const char *value = gtk_entry_get_text (GTK_ENTRY 
(GCG_get_main_window_object (entry_widget)));
-                if (strlen (value) > 0)
-                    isset = true;
-                json_object_set_new (id_attr, "type", json_string ("string"));
-                if (strstr (widget, "ia_ahv"))
-                    json_object_set_new (id_attr, "name", json_string 
("ahv_number"));
-                if (strstr (widget, "ia_ssn"))
-                    json_object_set_new (id_attr, "name", json_string 
("social_security_number"));
-                if (strstr (widget, "ia_full_name"))
-                    json_object_set_new (id_attr, "name", json_string 
("full_name"));
-                json_object_set_new (id_attr, "value", json_string (value));
-                json_object_set_new (id_attr, "widget", json_string 
(entry_widget));
-            }
-            if (GCG_get_main_window_object (cal_widget))
-            {
-                guint day;
-                guint month;
-                guint year;
-
-                json_object_set_new (id_attr, "type", json_string ("date"));
-                gtk_calendar_get_date (GTK_CALENDAR 
(GCG_get_main_window_object (cal_widget)),
-                                       &year,
-                                       &month,
-                                       &day);
-                json_object_set_new (id_attr, "year", json_integer (year));
-                json_object_set_new (id_attr, "month", json_integer (month));
-                json_object_set_new (id_attr, "day", json_integer (day));
-                json_object_set_new (id_attr, "widget", json_string 
(cal_widget));
-            }
-            if (isset)
-                json_array_append_new (attributes, id_attr);
-            GNUNET_free (entry_widget);
-            GNUNET_free (cal_widget);
-        }
-        json_object_set_new (arguments, "identity", attributes);
-
-        if (check_state (redux_state, "ReduxCountrySelectedState"))
-            ANASTASIS_backup_action (redux_state,
-                                    "entering_user_attributes",
-                                    arguments,
-                                    &action_cb,
-                                    NULL);
-        else
-            ANASTASIS_backup_action (redux_state,
-                                     "editing_user_attributes",
-                                     arguments,
-                                     &action_cb,
-                                     NULL);
-
-        gtk_widget_hide (GTK_WIDGET (GCG_get_main_window_object (
-                                        "anastasis_gtk_identity_frame")));
-        gtk_widget_show (GTK_WIDGET (GCG_get_main_window_object (
-                                        
"anastasis_gtk_b_authentication_frame")));
-        gtk_widget_set_sensitive (GTK_WIDGET (GCG_get_main_window_object (
-                                        
"anastasis_gtk_main_window_forward_button")), false);
-    }
 }
\ No newline at end of file
diff --git a/src/include/anastasis-gtk_helper.h 
b/src/include/anastasis-gtk_helper.h
index d2e1aab..5ba4048 100644
--- a/src/include/anastasis-gtk_helper.h
+++ b/src/include/anastasis-gtk_helper.h
@@ -26,6 +26,7 @@
  */
 
 #include <gnunet-gtk/gnunet_gtk.h>
+#include <anastasis/anastasis_service.h>
 #include <anastasis/anastasis_redux.h>
 
 /**
@@ -43,6 +44,16 @@ extern struct GNUNET_CONFIGURATION_Handle *cfg;
  */
 extern json_t *redux_state;
 
+/**
+ * Curl context for communication with taler backend
+ */
+extern struct GNUNET_CURL_Context *ctx;
+
+/**
+ * Closure for #GNUNET_CURL_gnunet_scheduler_reschedule().
+ */
+extern struct GNUNET_CURL_RescheduleContext *rc;
+
 
 /**
  * Function called with the results of #ANASTASIS_backup_action
@@ -52,7 +63,7 @@ extern json_t *redux_state;
  * @param error_code Error code
  * @param new_state new state as result
  */
-static void
+void
 action_cb (void *cls,
            enum ANASTASIS_ErrorCode error,
            json_t *new_state);
@@ -77,6 +88,15 @@ GObject *
 GCG_get_main_window_object (const char *name);
 
 
+/**
+ * Function to ckeck if required attributes are set.
+ * 
+ * @return bool
+ */
+bool
+check_attributes_fullfilled ();
+
+
 /**
  * Checks the actual state. True, if state is correct, else false.
  * 
@@ -119,6 +139,15 @@ init_id_attr (json_t *state,
               const char *country);
 
 
+/**
+ * Initialize the auhentication methods.
+ * 
+ * @param state the initial state to get the continents from
+ */
+void
+init_auth_methods (json_t *state);
+
+
 /**
  * Callback invoked if the the "back"-button is clicked.
  *

-- 
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]