[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[taler-anastasis-gtk] 02/05: worked on authentication_frame, added illus
From: |
gnunet |
Subject: |
[taler-anastasis-gtk] 02/05: worked on authentication_frame, added illustration |
Date: |
Wed, 23 Sep 2020 19:02:52 +0200 |
This is an automated email from the git hooks/post-receive script.
dennis-neufeld pushed a commit to branch master
in repository anastasis-gtk.
commit d0b0015f7f213fbbf327011bc84bfabe64041854
Author: Dennis Neufeld <dennis.neufeld@students.bfh.ch>
AuthorDate: Tue Sep 22 12:52:13 2020 +0200
worked on authentication_frame, added illustration
---
contrib/Makefile.am | 8 +-
contrib/anastasis_gtk_main_window.glade | 1062 ++++++++++++++++++++++++++++++-
contrib/authentication_methods.png | Bin 0 -> 64527 bytes
contrib/continent_selection.png | Bin 0 -> 26332719 bytes
contrib/country_selection.png | Bin 0 -> 23542533 bytes
contrib/user_attributes.png | Bin 0 -> 34233 bytes
src/anastasis/anastasis-gtk.c | 421 ++++++++++++
src/anastasis/anastasis-gtk_backup.c | 87 ++-
src/anastasis/anastasis-gtk_helper.c | 351 +---------
src/include/anastasis-gtk_helper.h | 11 +-
10 files changed, 1573 insertions(+), 367 deletions(-)
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..121a639 100644
--- a/contrib/anastasis_gtk_main_window.glade
+++ b/contrib/anastasis_gtk_main_window.glade
@@ -2,6 +2,1012 @@
<!-- 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">
+ <property name="label" translatable="yes">Cancel</property>
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">True</property>
+ </object>
+ <packing>
+ <property name="expand">True</property>
+ <property name="fill">True</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkButton">
+ <property name="label" translatable="yes">OK</property>
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">True</property>
+ </object>
+ <packing>
+ <property name="expand">True</property>
+ <property name="fill">True</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="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">
+ <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">
+ <property name="label" translatable="yes">Cancel</property>
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">True</property>
+ </object>
+ <packing>
+ <property name="expand">True</property>
+ <property name="fill">True</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkButton">
+ <property name="label" translatable="yes">OK</property>
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">True</property>
+ </object>
+ <packing>
+ <property name="expand">True</property>
+ <property name="fill">True</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="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">
+ <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">
+ <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">
+ <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">
+ <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">
+ <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>
+ </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">
+ <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">
+ <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>
+ </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">
+ <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">
+ <property name="label" translatable="yes">Cancel</property>
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">True</property>
+ </object>
+ <packing>
+ <property name="expand">True</property>
+ <property name="fill">True</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkButton">
+ <property name="label" translatable="yes">OK</property>
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">True</property>
+ </object>
+ <packing>
+ <property name="expand">True</property>
+ <property name="fill">True</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="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">
+ <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 +1034,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>
@@ -95,6 +1106,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>
@@ -560,11 +1581,11 @@
<property
name="spacing">8</property>
<property
name="homogeneous">True</property>
<child>
- <object
class="GtkButton">
+ <object
class="GtkButton" id="anastasis_gtk_btn_add_auth_sms">
<property name="label"
translatable="yes">SMS</property>
- <property
name="visible">True</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>
@@ -573,11 +1594,11 @@
</packing>
</child>
<child>
- <object
class="GtkButton">
+ <object
class="GtkButton" id="anastasis_gtk_btn_add_auth_email">
<property name="label"
translatable="yes">EMAIL</property>
- <property
name="visible">True</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>
@@ -586,12 +1607,12 @@
</packing>
</child>
<child>
- <object
class="GtkButton">
+ <object
class="GtkButton" id="anastasis_gtk_btn_add_auth_question">
<property name="label"
translatable="yes">SECURE
QUESTION</property>
- <property
name="visible">True</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>
@@ -600,11 +1621,11 @@ QUESTION</property>
</packing>
</child>
<child>
- <object
class="GtkButton">
+ <object
class="GtkButton" id="anastasis_gtk_btn_add_auth_post">
<property name="label"
translatable="yes">POST</property>
- <property
name="visible">True</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>
@@ -613,11 +1634,11 @@ QUESTION</property>
</packing>
</child>
<child>
- <object
class="GtkButton">
+ <object
class="GtkButton" id="anastasis_gtk_btn_add_auth_video">
<property name="label"
translatable="yes">VIDEO AUTH</property>
- <property
name="visible">True</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>
@@ -714,10 +1735,12 @@ Provider</property>
<child>
<object class="GtkBox"
id="anastasis_gtk_illustration_vbox">
<property name="can_focus">False</property>
+ <property name="halign">baseline</property>
+ <property name="valign">baseline</property>
<property name="orientation">vertical</property>
+ <property name="homogeneous">True</property>
<child>
- <object class="GtkImage" id="anastasis_gtk_logo">
- <property name="visible">True</property>
+ <object class="GtkImage"
id="anastasis_gtk_user_attributes_image">
<property name="can_focus">False</property>
<property name="stock">gtk-missing-image</property>
<property name="icon_size">6</property>
@@ -730,7 +1753,6 @@ Provider</property>
</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>
@@ -741,8 +1763,7 @@ Provider</property>
</packing>
</child>
<child>
- <object class="GtkImage" id="anastasis_gtk_logo2">
- <property name="visible">True</property>
+ <object class="GtkImage"
id="anastasis_gtk_b_authentication_methods_image">
<property name="can_focus">False</property>
<property name="stock">gtk-missing-image</property>
</object>
@@ -754,7 +1775,6 @@ Provider</property>
</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>
@@ -765,7 +1785,15 @@ Provider</property>
</packing>
</child>
<child>
- <placeholder/>
+ <object class="GtkImage"
id="anastasis_gtk_continent_selection_image">
+ <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">4</property>
+ </packing>
</child>
<child>
<placeholder/>
diff --git a/contrib/authentication_methods.png
b/contrib/authentication_methods.png
new file mode 100644
index 0000000..883a161
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..1111ae1
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..967fbb0
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..ad25d18
Binary files /dev/null and b/contrib/user_attributes.png differ
diff --git a/src/anastasis/anastasis-gtk.c b/src/anastasis/anastasis-gtk.c
index 5c9356c..851a295 100644
--- a/src/anastasis/anastasis-gtk.c
+++ b/src/anastasis/anastasis-gtk.c
@@ -56,6 +56,427 @@ struct GNUNET_CURL_Context *ctx;
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/continent_selection.png",
+ path);
+ GObject *auth_meth_img = GCG_get_main_window_object (
+
"anastasis_gtk_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_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.
*
diff --git a/src/anastasis/anastasis-gtk_backup.c
b/src/anastasis/anastasis-gtk_backup.c
index a65c402..8236af8 100644
--- a/src/anastasis/anastasis-gtk_backup.c
+++ b/src/anastasis/anastasis-gtk_backup.c
@@ -118,10 +118,87 @@ 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 "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")));
+}
+
+
+/**
+ * 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")));
+}
+
+
+/**
+ * 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")));
+}
+
+
+/**
+ * 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")));
+}
+
+
+/**
+ * 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")));
+}
+
+
/**
* Function called with the results of a #ANASTASIS_get_config().
*
@@ -158,27 +235,27 @@ config_cb (void *cls,
if (NULL != strstr (methods, "question"))
{
gtk_widget_show (GTK_WIDGET (GCG_get_main_window_object (
-
"anastasis_gtk_bttn_add_auth_question")));
+
"anastasis_gtk_btn_add_auth_question")));
}
if (NULL != strstr (methods, "sms"))
{
gtk_widget_show (GTK_WIDGET (GCG_get_main_window_object (
- "anastasis_gtk_bttn_add_auth_sms")));
+ "anastasis_gtk_btn_add_auth_sms")));
}
if (NULL != strstr (methods, "email"))
{
gtk_widget_show (GTK_WIDGET (GCG_get_main_window_object (
- "anastasis_gtk_bttn_add_auth_email")));
+ "anastasis_gtk_btn_add_auth_email")));
}
if (NULL != strstr (methods, "video"))
{
gtk_widget_show (GTK_WIDGET (GCG_get_main_window_object (
- "anastasis_gtk_bttn_add_auth_video")));
+ "anastasis_gtk_btn_add_auth_video")));
}
if (NULL != strstr (methods, "post"))
{
gtk_widget_show (GTK_WIDGET (GCG_get_main_window_object (
- "anastasis_gtk_bttn_add_auth_post")));
+ "anastasis_gtk_btn_add_auth_post")));
}
}
diff --git a/src/anastasis/anastasis-gtk_helper.c
b/src/anastasis/anastasis-gtk_helper.c
index a5235de..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,7 +170,13 @@ 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 (
@@ -326,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;
- 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);
- }
}
\ No newline at end of file
diff --git a/src/include/anastasis-gtk_helper.h
b/src/include/anastasis-gtk_helper.h
index a1510f5..5ba4048 100644
--- a/src/include/anastasis-gtk_helper.h
+++ b/src/include/anastasis-gtk_helper.h
@@ -63,7 +63,7 @@ extern struct GNUNET_CURL_RescheduleContext *rc;
* @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);
@@ -88,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.
*
--
To stop receiving notification emails like this one, please contact
gnunet@gnunet.org.
- [taler-anastasis-gtk] branch master updated (d6961fe -> 095cb09), gnunet, 2020/09/23
- [taler-anastasis-gtk] 04/05: worked on adding authentication methods, gnunet, 2020/09/23
- [taler-anastasis-gtk] 01/05: worked on authentication_frame, gnunet, 2020/09/23
- [taler-anastasis-gtk] 03/05: worked on illustrations and authentication frame, gnunet, 2020/09/23
- [taler-anastasis-gtk] 02/05: worked on authentication_frame, added illustration,
gnunet <=
- [taler-anastasis-gtk] 05/05: worked on authentication_frame, add methods, edit methods, delete methods, gnunet, 2020/09/23