make dist
authorSam Hartman <hartmans@painless-security.com>
Tue, 17 Jan 2012 23:05:04 +0000 (18:05 -0500)
committerSam Hartman <hartmans@painless-security.com>
Tue, 17 Jan 2012 23:05:04 +0000 (18:05 -0500)
12 files changed:
po/moonshot-ui.pot [new file with mode: 0644]
src/moonshot-custom-vbox.c
src/moonshot-id.c
src/moonshot-idcard-store.c [new file with mode: 0644]
src/moonshot-idcard-widget.c
src/moonshot-identities-manager.c
src/moonshot-identity-management-view.c [new file with mode: 0644]
src/moonshot-identity-manager-app.c [new file with mode: 0644]
src/moonshot-identity-request.c
src/moonshot-local-flat-file-store.c [new file with mode: 0644]
src/moonshot-server.c
src/moonshot-utils.c

diff --git a/po/moonshot-ui.pot b/po/moonshot-ui.pot
new file mode 100644 (file)
index 0000000..9c4cdb0
--- /dev/null
@@ -0,0 +1,113 @@
+# SOME DESCRIPTIVE TITLE.
+# Copyright (C) YEAR Free Software Foundation, Inc.
+# This file is distributed under the same license as the PACKAGE package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: moonshot-ui 0.1\n"
+"Report-Msgid-Bugs-To: moonshot-community@jiscmail.ac.uk\n"
+"POT-Creation-Date: 2012-01-17 22:57+0000\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
+"Language-Team: LANGUAGE <LL@li.org>\n"
+"Language: \n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=CHARSET\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: src/moonshot-identity-management-view.vala:356
+#, c-format
+msgid "Would you like to add '%s' ID Card to the ID Card Organizer?"
+msgstr ""
+
+#: src/moonshot-identity-management-view.vala:429
+#, c-format
+msgid "Are you sure you want to delete %s ID Card?"
+msgstr ""
+
+#: src/moonshot-identity-management-view.vala:679
+#, c-format
+msgid "Are you sure you want to stop '%s' ID Card to use %s?"
+msgstr ""
+
+#: src/moonshot-identity-management-view.vala:765
+msgid "Moonshot project UI"
+msgstr ""
+
+#: src/moonshot-identity-management-view.vala:769
+msgid "Visit the Moonshot project web site"
+msgstr ""
+
+#: src/moonshot-identity-management-view.vala:771
+msgid "translator-credits"
+msgstr ""
+
+#: src/moonshot-identity-management-view.vala:781
+msgid "_File"
+msgstr ""
+
+#: src/moonshot-identity-management-view.vala:790
+msgid "Add ID Card"
+msgstr ""
+
+#: src/moonshot-identity-management-view.vala:792
+msgid "Add a new ID Card"
+msgstr ""
+
+#: src/moonshot-identity-management-view.vala:801
+msgid "Quit"
+msgstr ""
+
+#: src/moonshot-identity-management-view.vala:803
+msgid "Quit the application"
+msgstr ""
+
+#: src/moonshot-identity-management-view.vala:809
+msgid "_Help"
+msgstr ""
+
+#: src/moonshot-identity-management-view.vala:818
+msgid "About"
+msgstr ""
+
+#: src/moonshot-identity-management-view.vala:820
+msgid "About this application"
+msgstr ""
+
+#: src/moonshot-identity-management-view.vala:850
+msgid "Search entry"
+msgstr ""
+
+#: src/moonshot-identity-management-view.vala:850
+msgid "Search for a specific ID Card"
+msgstr ""
+
+#: src/moonshot-identity-management-view.vala:855
+msgid "Search identity or service"
+msgstr ""
+
+#: src/moonshot-identity-management-view.vala:862
+msgid "Clear the current search"
+msgstr ""
+
+#: src/moonshot-identity-management-view.vala:886
+msgid "Login: "
+msgstr ""
+
+#: src/moonshot-identity-management-view.vala:889
+msgid "Username:"
+msgstr ""
+
+#: src/moonshot-identity-management-view.vala:892
+msgid "Password:"
+msgstr ""
+
+#: src/moonshot-identity-management-view.vala:897
+msgid "Remember password"
+msgstr ""
+
+#: src/moonshot-identity-management-view.vala:913
+msgid "Services:"
+msgstr ""
index 1575bf9..2b8f5f6 100644 (file)
@@ -28,27 +28,37 @@ typedef struct _CustomVBoxPrivate CustomVBoxPrivate;
 typedef struct _IdCardWidget IdCardWidget;
 typedef struct _IdCardWidgetClass IdCardWidgetClass;
 
-#define TYPE_MAIN_WINDOW (main_window_get_type ())
-#define MAIN_WINDOW(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), TYPE_MAIN_WINDOW, MainWindow))
-#define MAIN_WINDOW_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), TYPE_MAIN_WINDOW, MainWindowClass))
-#define IS_MAIN_WINDOW(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TYPE_MAIN_WINDOW))
-#define IS_MAIN_WINDOW_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), TYPE_MAIN_WINDOW))
-#define MAIN_WINDOW_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), TYPE_MAIN_WINDOW, MainWindowClass))
-
-typedef struct _MainWindow MainWindow;
-typedef struct _MainWindowClass MainWindowClass;
+#define TYPE_IDENTITY_MANAGER_VIEW (identity_manager_view_get_type ())
+#define IDENTITY_MANAGER_VIEW(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), TYPE_IDENTITY_MANAGER_VIEW, IdentityManagerView))
+#define IDENTITY_MANAGER_VIEW_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), TYPE_IDENTITY_MANAGER_VIEW, IdentityManagerViewClass))
+#define IS_IDENTITY_MANAGER_VIEW(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TYPE_IDENTITY_MANAGER_VIEW))
+#define IS_IDENTITY_MANAGER_VIEW_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), TYPE_IDENTITY_MANAGER_VIEW))
+#define IDENTITY_MANAGER_VIEW_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), TYPE_IDENTITY_MANAGER_VIEW, IdentityManagerViewClass))
+
+typedef struct _IdentityManagerView IdentityManagerView;
+typedef struct _IdentityManagerViewClass IdentityManagerViewClass;
 #define _g_object_unref0(var) ((var == NULL) ? NULL : (var = (g_object_unref (var), NULL)))
-typedef struct _MainWindowPrivate MainWindowPrivate;
+typedef struct _IdentityManagerViewPrivate IdentityManagerViewPrivate;
 
-#define TYPE_IDENTITIES_MANAGER (identities_manager_get_type ())
-#define IDENTITIES_MANAGER(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), TYPE_IDENTITIES_MANAGER, IdentitiesManager))
-#define IDENTITIES_MANAGER_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), TYPE_IDENTITIES_MANAGER, IdentitiesManagerClass))
-#define IS_IDENTITIES_MANAGER(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TYPE_IDENTITIES_MANAGER))
-#define IS_IDENTITIES_MANAGER_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), TYPE_IDENTITIES_MANAGER))
-#define IDENTITIES_MANAGER_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), TYPE_IDENTITIES_MANAGER, IdentitiesManagerClass))
+#define TYPE_IDENTITY_MANAGER_APP (identity_manager_app_get_type ())
+#define IDENTITY_MANAGER_APP(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), TYPE_IDENTITY_MANAGER_APP, IdentityManagerApp))
+#define IDENTITY_MANAGER_APP_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), TYPE_IDENTITY_MANAGER_APP, IdentityManagerAppClass))
+#define IS_IDENTITY_MANAGER_APP(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TYPE_IDENTITY_MANAGER_APP))
+#define IS_IDENTITY_MANAGER_APP_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), TYPE_IDENTITY_MANAGER_APP))
+#define IDENTITY_MANAGER_APP_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), TYPE_IDENTITY_MANAGER_APP, IdentityManagerAppClass))
 
-typedef struct _IdentitiesManager IdentitiesManager;
-typedef struct _IdentitiesManagerClass IdentitiesManagerClass;
+typedef struct _IdentityManagerApp IdentityManagerApp;
+typedef struct _IdentityManagerAppClass IdentityManagerAppClass;
+
+#define TYPE_IDENTITY_MANAGER_MODEL (identity_manager_model_get_type ())
+#define IDENTITY_MANAGER_MODEL(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), TYPE_IDENTITY_MANAGER_MODEL, IdentityManagerModel))
+#define IDENTITY_MANAGER_MODEL_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), TYPE_IDENTITY_MANAGER_MODEL, IdentityManagerModelClass))
+#define IS_IDENTITY_MANAGER_MODEL(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TYPE_IDENTITY_MANAGER_MODEL))
+#define IS_IDENTITY_MANAGER_MODEL_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), TYPE_IDENTITY_MANAGER_MODEL))
+#define IDENTITY_MANAGER_MODEL_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), TYPE_IDENTITY_MANAGER_MODEL, IdentityManagerModelClass))
+
+typedef struct _IdentityManagerModel IdentityManagerModel;
+typedef struct _IdentityManagerModelClass IdentityManagerModelClass;
 
 #define TYPE_IDENTITY_REQUEST (identity_request_get_type ())
 #define IDENTITY_REQUEST(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), TYPE_IDENTITY_REQUEST, IdentityRequest))
@@ -72,17 +82,18 @@ struct _CustomVBoxClass {
 
 struct _CustomVBoxPrivate {
        IdCardWidget* _current_idcard;
-       MainWindow* main_window;
+       IdentityManagerView* main_window;
 };
 
-struct _MainWindow {
+struct _IdentityManagerView {
        GtkWindow parent_instance;
-       MainWindowPrivate * priv;
-       IdentitiesManager* identities_manager;
+       IdentityManagerViewPrivate * priv;
+       IdentityManagerApp* parent_app;
+       IdentityManagerModel* identities_manager;
        GQueue* request_queue;
 };
 
-struct _MainWindowClass {
+struct _IdentityManagerViewClass {
        GtkWindowClass parent_class;
 };
 
@@ -91,19 +102,20 @@ static gpointer custom_vbox_parent_class = NULL;
 
 GType custom_vbox_get_type (void) G_GNUC_CONST;
 GType id_card_widget_get_type (void) G_GNUC_CONST;
-GType main_window_get_type (void) G_GNUC_CONST;
+GType identity_manager_view_get_type (void) G_GNUC_CONST;
 #define CUSTOM_VBOX_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), TYPE_CUSTOM_VBOX, CustomVBoxPrivate))
 enum  {
        CUSTOM_VBOX_DUMMY_PROPERTY,
        CUSTOM_VBOX_CURRENT_IDCARD
 };
-CustomVBox* custom_vbox_new (MainWindow* window, gboolean homogeneous, gint spacing);
-CustomVBox* custom_vbox_construct (GType object_type, MainWindow* window, gboolean homogeneous, gint spacing);
+CustomVBox* custom_vbox_new (IdentityManagerView* window, gboolean homogeneous, gint spacing);
+CustomVBox* custom_vbox_construct (GType object_type, IdentityManagerView* window, gboolean homogeneous, gint spacing);
 void custom_vbox_receive_expanded_event (CustomVBox* self, IdCardWidget* id_card_widget);
 void id_card_widget_collapse (IdCardWidget* self);
 void custom_vbox_set_current_idcard (CustomVBox* self, IdCardWidget* value);
 IdCardWidget* custom_vbox_get_current_idcard (CustomVBox* self);
-GType identities_manager_get_type (void) G_GNUC_CONST;
+GType identity_manager_app_get_type (void) G_GNUC_CONST;
+GType identity_manager_model_get_type (void) G_GNUC_CONST;
 GType identity_request_get_type (void) G_GNUC_CONST;
 GtkButton* id_card_widget_get_send_button (IdCardWidget* self);
 void custom_vbox_add_id_card_widget (CustomVBox* self, IdCardWidget* id_card_widget);
@@ -119,9 +131,9 @@ static gpointer _g_object_ref0 (gpointer self) {
 }
 
 
-CustomVBox* custom_vbox_construct (GType object_type, MainWindow* window, gboolean homogeneous, gint spacing) {
+CustomVBox* custom_vbox_construct (GType object_type, IdentityManagerView* window, gboolean homogeneous, gint spacing) {
        CustomVBox * self;
-       MainWindow* _tmp0_;
+       IdentityManagerView* _tmp0_;
        g_return_val_if_fail (window != NULL, NULL);
        self = g_object_newv (object_type, 0, NULL);
        self->priv->main_window = (_tmp0_ = _g_object_ref0 (window), _g_object_unref0 (self->priv->main_window), _tmp0_);
@@ -131,7 +143,7 @@ CustomVBox* custom_vbox_construct (GType object_type, MainWindow* window, gboole
 }
 
 
-CustomVBox* custom_vbox_new (MainWindow* window, gboolean homogeneous, gint spacing) {
+CustomVBox* custom_vbox_new (IdentityManagerView* window, gboolean homogeneous, gint spacing) {
        return custom_vbox_construct (TYPE_CUSTOM_VBOX, window, homogeneous, spacing);
 }
 
index 47f3a1f..66b88ae 100644 (file)
@@ -139,10 +139,10 @@ const char* id_card_get_issuer (IdCard* self);
 void id_card_set_issuer (IdCard* self, const char* value);
 Rule* id_card_get_rules (IdCard* self, int* result_length1);
 void id_card_set_rules (IdCard* self, Rule* value, int value_length1);
-static Rule* _vala_array_dup4 (Rule* self, int length);
+static Rule* _vala_array_dup2 (Rule* self, int length);
 char** id_card_get_services (IdCard* self, int* result_length1);
 void id_card_set_services (IdCard* self, char** value, int value_length1);
-static char** _vala_array_dup5 (char** self, int length);
+static char** _vala_array_dup3 (char** self, int length);
 TrustAnchor* id_card_get_trust_anchor (IdCard* self);
 void id_card_set_trust_anchor (IdCard* self, TrustAnchor* value);
 GdkPixbuf* id_card_get_pixbuf (IdCard* self);
@@ -456,7 +456,7 @@ Rule* id_card_get_rules (IdCard* self, int* result_length1) {
 }
 
 
-static Rule* _vala_array_dup4 (Rule* self, int length) {
+static Rule* _vala_array_dup2 (Rule* self, int length) {
        Rule* result;
        int i;
        Rule _tmp0_ = {0};
@@ -472,7 +472,7 @@ void id_card_set_rules (IdCard* self, Rule* value, int value_length1) {
        Rule* _tmp0_;
        Rule* _tmp1_;
        g_return_if_fail (self != NULL);
-       self->priv->_rules = (_tmp1_ = (_tmp0_ = value, (_tmp0_ == NULL) ? ((gpointer) _tmp0_) : _vala_array_dup4 (_tmp0_, value_length1)), self->priv->_rules = (_vala_Rule_array_free (self->priv->_rules, self->priv->_rules_length1), NULL), self->priv->_rules_length1 = value_length1, self->priv->__rules_size_ = self->priv->_rules_length1, _tmp1_);
+       self->priv->_rules = (_tmp1_ = (_tmp0_ = value, (_tmp0_ == NULL) ? ((gpointer) _tmp0_) : _vala_array_dup2 (_tmp0_, value_length1)), self->priv->_rules = (_vala_Rule_array_free (self->priv->_rules, self->priv->_rules_length1), NULL), self->priv->_rules_length1 = value_length1, self->priv->__rules_size_ = self->priv->_rules_length1, _tmp1_);
 }
 
 
@@ -485,7 +485,7 @@ char** id_card_get_services (IdCard* self, int* result_length1) {
 }
 
 
-static char** _vala_array_dup5 (char** self, int length) {
+static char** _vala_array_dup3 (char** self, int length) {
        char** result;
        int i;
        result = g_new0 (char*, length + 1);
@@ -500,7 +500,7 @@ void id_card_set_services (IdCard* self, char** value, int value_length1) {
        char** _tmp0_;
        char** _tmp1_;
        g_return_if_fail (self != NULL);
-       self->priv->_services = (_tmp1_ = (_tmp0_ = value, (_tmp0_ == NULL) ? ((gpointer) _tmp0_) : _vala_array_dup5 (_tmp0_, value_length1)), self->priv->_services = (_vala_array_free (self->priv->_services, self->priv->_services_length1, (GDestroyNotify) g_free), NULL), self->priv->_services_length1 = value_length1, self->priv->__services_size_ = self->priv->_services_length1, _tmp1_);
+       self->priv->_services = (_tmp1_ = (_tmp0_ = value, (_tmp0_ == NULL) ? ((gpointer) _tmp0_) : _vala_array_dup3 (_tmp0_, value_length1)), self->priv->_services = (_vala_array_free (self->priv->_services, self->priv->_services_length1, (GDestroyNotify) g_free), NULL), self->priv->_services_length1 = value_length1, self->priv->__services_size_ = self->priv->_services_length1, _tmp1_);
        g_object_notify ((GObject *) self, "services");
 }
 
diff --git a/src/moonshot-idcard-store.c b/src/moonshot-idcard-store.c
new file mode 100644 (file)
index 0000000..ac36aee
--- /dev/null
@@ -0,0 +1,89 @@
+/* moonshot-idcard-store.c generated by valac 0.10.4, the Vala compiler
+ * generated from moonshot-idcard-store.vala, do not modify */
+
+
+#include <glib.h>
+#include <glib-object.h>
+#include <gee.h>
+
+
+#define TYPE_IIDENTITY_CARD_STORE (iidentity_card_store_get_type ())
+#define IIDENTITY_CARD_STORE(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), TYPE_IIDENTITY_CARD_STORE, IIdentityCardStore))
+#define IS_IIDENTITY_CARD_STORE(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TYPE_IIDENTITY_CARD_STORE))
+#define IIDENTITY_CARD_STORE_GET_INTERFACE(obj) (G_TYPE_INSTANCE_GET_INTERFACE ((obj), TYPE_IIDENTITY_CARD_STORE, IIdentityCardStoreIface))
+
+typedef struct _IIdentityCardStore IIdentityCardStore;
+typedef struct _IIdentityCardStoreIface IIdentityCardStoreIface;
+
+#define TYPE_ID_CARD (id_card_get_type ())
+#define ID_CARD(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), TYPE_ID_CARD, IdCard))
+#define ID_CARD_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), TYPE_ID_CARD, IdCardClass))
+#define IS_ID_CARD(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TYPE_ID_CARD))
+#define IS_ID_CARD_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), TYPE_ID_CARD))
+#define ID_CARD_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), TYPE_ID_CARD, IdCardClass))
+
+typedef struct _IdCard IdCard;
+typedef struct _IdCardClass IdCardClass;
+
+struct _IIdentityCardStoreIface {
+       GTypeInterface parent_iface;
+       void (*add_card) (IIdentityCardStore* self, IdCard* card);
+       void (*remove_card) (IIdentityCardStore* self, IdCard* card);
+       void (*update_card) (IIdentityCardStore* self, IdCard* card);
+       GeeLinkedList* (*get_card_list) (IIdentityCardStore* self);
+};
+
+
+
+GType id_card_get_type (void) G_GNUC_CONST;
+GType iidentity_card_store_get_type (void) G_GNUC_CONST;
+void iidentity_card_store_add_card (IIdentityCardStore* self, IdCard* card);
+void iidentity_card_store_remove_card (IIdentityCardStore* self, IdCard* card);
+void iidentity_card_store_update_card (IIdentityCardStore* self, IdCard* card);
+GeeLinkedList* iidentity_card_store_get_card_list (IIdentityCardStore* self);
+
+
+
+void iidentity_card_store_add_card (IIdentityCardStore* self, IdCard* card) {
+       IIDENTITY_CARD_STORE_GET_INTERFACE (self)->add_card (self, card);
+}
+
+
+void iidentity_card_store_remove_card (IIdentityCardStore* self, IdCard* card) {
+       IIDENTITY_CARD_STORE_GET_INTERFACE (self)->remove_card (self, card);
+}
+
+
+void iidentity_card_store_update_card (IIdentityCardStore* self, IdCard* card) {
+       IIDENTITY_CARD_STORE_GET_INTERFACE (self)->update_card (self, card);
+}
+
+
+GeeLinkedList* iidentity_card_store_get_card_list (IIdentityCardStore* self) {
+       return IIDENTITY_CARD_STORE_GET_INTERFACE (self)->get_card_list (self);
+}
+
+
+static void iidentity_card_store_base_init (IIdentityCardStoreIface * iface) {
+       static gboolean initialized = FALSE;
+       if (!initialized) {
+               initialized = TRUE;
+       }
+}
+
+
+GType iidentity_card_store_get_type (void) {
+       static volatile gsize iidentity_card_store_type_id__volatile = 0;
+       if (g_once_init_enter (&iidentity_card_store_type_id__volatile)) {
+               static const GTypeInfo g_define_type_info = { sizeof (IIdentityCardStoreIface), (GBaseInitFunc) iidentity_card_store_base_init, (GBaseFinalizeFunc) NULL, (GClassInitFunc) NULL, (GClassFinalizeFunc) NULL, NULL, 0, 0, (GInstanceInitFunc) NULL, NULL };
+               GType iidentity_card_store_type_id;
+               iidentity_card_store_type_id = g_type_register_static (G_TYPE_INTERFACE, "IIdentityCardStore", &g_define_type_info, 0);
+               g_type_interface_add_prerequisite (iidentity_card_store_type_id, G_TYPE_OBJECT);
+               g_once_init_leave (&iidentity_card_store_type_id__volatile, iidentity_card_store_type_id);
+       }
+       return iidentity_card_store_type_id__volatile;
+}
+
+
+
+
index e05421e..6ea4b63 100644 (file)
@@ -166,7 +166,7 @@ void id_card_widget_update_id_card_label (IdCardWidget* self) {
        char* _tmp9_;
        g_return_if_fail (self != NULL);
        services_text = g_strdup ("");
-       display_name = g_markup_printf_escaped ("<b>%s</b>", id_card_get_display_name (self->priv->_id_card));
+       display_name = g_markup_printf_escaped ("<big>%s</big>", id_card_get_display_name (self->priv->_id_card));
        {
                gint i;
                i = 0;
index 39a7d19..0e51985 100644 (file)
@@ -4,24 +4,30 @@
 
 #include <glib.h>
 #include <glib-object.h>
+#include <gee.h>
+#include <gtk/gtk.h>
 #include <stdlib.h>
 #include <string.h>
-#include <stdio.h>
-#include <gdk-pixbuf/gdk-pixdata.h>
-#include <glib/gstdio.h>
-#include <config.h>
 
 
-#define TYPE_IDENTITIES_MANAGER (identities_manager_get_type ())
-#define IDENTITIES_MANAGER(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), TYPE_IDENTITIES_MANAGER, IdentitiesManager))
-#define IDENTITIES_MANAGER_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), TYPE_IDENTITIES_MANAGER, IdentitiesManagerClass))
-#define IS_IDENTITIES_MANAGER(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TYPE_IDENTITIES_MANAGER))
-#define IS_IDENTITIES_MANAGER_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), TYPE_IDENTITIES_MANAGER))
-#define IDENTITIES_MANAGER_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), TYPE_IDENTITIES_MANAGER, IdentitiesManagerClass))
+#define TYPE_IDENTITY_MANAGER_MODEL (identity_manager_model_get_type ())
+#define IDENTITY_MANAGER_MODEL(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), TYPE_IDENTITY_MANAGER_MODEL, IdentityManagerModel))
+#define IDENTITY_MANAGER_MODEL_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), TYPE_IDENTITY_MANAGER_MODEL, IdentityManagerModelClass))
+#define IS_IDENTITY_MANAGER_MODEL(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TYPE_IDENTITY_MANAGER_MODEL))
+#define IS_IDENTITY_MANAGER_MODEL_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), TYPE_IDENTITY_MANAGER_MODEL))
+#define IDENTITY_MANAGER_MODEL_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), TYPE_IDENTITY_MANAGER_MODEL, IdentityManagerModelClass))
 
-typedef struct _IdentitiesManager IdentitiesManager;
-typedef struct _IdentitiesManagerClass IdentitiesManagerClass;
-typedef struct _IdentitiesManagerPrivate IdentitiesManagerPrivate;
+typedef struct _IdentityManagerModel IdentityManagerModel;
+typedef struct _IdentityManagerModelClass IdentityManagerModelClass;
+typedef struct _IdentityManagerModelPrivate IdentityManagerModelPrivate;
+
+#define TYPE_IIDENTITY_CARD_STORE (iidentity_card_store_get_type ())
+#define IIDENTITY_CARD_STORE(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), TYPE_IIDENTITY_CARD_STORE, IIdentityCardStore))
+#define IS_IIDENTITY_CARD_STORE(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TYPE_IIDENTITY_CARD_STORE))
+#define IIDENTITY_CARD_STORE_GET_INTERFACE(obj) (G_TYPE_INSTANCE_GET_INTERFACE ((obj), TYPE_IIDENTITY_CARD_STORE, IIdentityCardStoreIface))
+
+typedef struct _IIdentityCardStore IIdentityCardStore;
+typedef struct _IIdentityCardStoreIface IIdentityCardStoreIface;
 
 #define TYPE_ID_CARD (id_card_get_type ())
 #define ID_CARD(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), TYPE_ID_CARD, IdCard))
@@ -32,629 +38,164 @@ typedef struct _IdentitiesManagerPrivate IdentitiesManagerPrivate;
 
 typedef struct _IdCard IdCard;
 typedef struct _IdCardClass IdCardClass;
-#define __g_slist_free_g_object_unref0(var) ((var == NULL) ? NULL : (var = (_g_slist_free_g_object_unref (var), NULL)))
-#define _g_error_free0(var) ((var == NULL) ? NULL : (var = (g_error_free (var), NULL)))
-#define _g_free0(var) (var = (g_free (var), NULL))
-#define _g_key_file_free0(var) ((var == NULL) ? NULL : (var = (g_key_file_free (var), NULL)))
-#define _g_object_unref0(var) ((var == NULL) ? NULL : (var = (g_object_unref (var), NULL)))
 
-#define TYPE_RULE (rule_get_type ())
-typedef struct _Rule Rule;
+#define TYPE_IDENTITY_MANAGER_APP (identity_manager_app_get_type ())
+#define IDENTITY_MANAGER_APP(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), TYPE_IDENTITY_MANAGER_APP, IdentityManagerApp))
+#define IDENTITY_MANAGER_APP_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), TYPE_IDENTITY_MANAGER_APP, IdentityManagerAppClass))
+#define IS_IDENTITY_MANAGER_APP(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TYPE_IDENTITY_MANAGER_APP))
+#define IS_IDENTITY_MANAGER_APP_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), TYPE_IDENTITY_MANAGER_APP))
+#define IDENTITY_MANAGER_APP_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), TYPE_IDENTITY_MANAGER_APP, IdentityManagerAppClass))
 
-#define TYPE_TRUST_ANCHOR (trust_anchor_get_type ())
-#define TRUST_ANCHOR(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), TYPE_TRUST_ANCHOR, TrustAnchor))
-#define TRUST_ANCHOR_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), TYPE_TRUST_ANCHOR, TrustAnchorClass))
-#define IS_TRUST_ANCHOR(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TYPE_TRUST_ANCHOR))
-#define IS_TRUST_ANCHOR_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), TYPE_TRUST_ANCHOR))
-#define TRUST_ANCHOR_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), TYPE_TRUST_ANCHOR, TrustAnchorClass))
+typedef struct _IdentityManagerApp IdentityManagerApp;
+typedef struct _IdentityManagerAppClass IdentityManagerAppClass;
+#define _g_object_unref0(var) ((var == NULL) ? NULL : (var = (g_object_unref (var), NULL)))
+
+#define TYPE_LOCAL_FLAT_FILE_STORE (local_flat_file_store_get_type ())
+#define LOCAL_FLAT_FILE_STORE(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), TYPE_LOCAL_FLAT_FILE_STORE, LocalFlatFileStore))
+#define LOCAL_FLAT_FILE_STORE_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), TYPE_LOCAL_FLAT_FILE_STORE, LocalFlatFileStoreClass))
+#define IS_LOCAL_FLAT_FILE_STORE(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TYPE_LOCAL_FLAT_FILE_STORE))
+#define IS_LOCAL_FLAT_FILE_STORE_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), TYPE_LOCAL_FLAT_FILE_STORE))
+#define LOCAL_FLAT_FILE_STORE_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), TYPE_LOCAL_FLAT_FILE_STORE, LocalFlatFileStoreClass))
 
-typedef struct _TrustAnchor TrustAnchor;
-typedef struct _TrustAnchorClass TrustAnchorClass;
+typedef struct _LocalFlatFileStore LocalFlatFileStore;
+typedef struct _LocalFlatFileStoreClass LocalFlatFileStoreClass;
 
-struct _IdentitiesManager {
+struct _IdentityManagerModel {
        GObject parent_instance;
-       IdentitiesManagerPrivate * priv;
-       GSList* id_card_list;
+       IdentityManagerModelPrivate * priv;
 };
 
-struct _IdentitiesManagerClass {
+struct _IdentityManagerModelClass {
        GObjectClass parent_class;
 };
 
-struct _Rule {
-       char* pattern;
-       char* always_confirm;
+struct _IIdentityCardStoreIface {
+       GTypeInterface parent_iface;
+       void (*add_card) (IIdentityCardStore* self, IdCard* card);
+       void (*remove_card) (IIdentityCardStore* self, IdCard* card);
+       void (*update_card) (IIdentityCardStore* self, IdCard* card);
+       GeeLinkedList* (*get_card_list) (IIdentityCardStore* self);
 };
 
+struct _IdentityManagerModelPrivate {
+       IIdentityCardStore* store;
+       IdentityManagerApp* parent;
+};
 
-static gpointer identities_manager_parent_class = NULL;
 
-GType identities_manager_get_type (void) G_GNUC_CONST;
+static gpointer identity_manager_model_parent_class = NULL;
+
+GType identity_manager_model_get_type (void) G_GNUC_CONST;
 GType id_card_get_type (void) G_GNUC_CONST;
+GType iidentity_card_store_get_type (void) G_GNUC_CONST;
+GType identity_manager_app_get_type (void) G_GNUC_CONST;
+#define IDENTITY_MANAGER_MODEL_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), TYPE_IDENTITY_MANAGER_MODEL, IdentityManagerModelPrivate))
 enum  {
-       IDENTITIES_MANAGER_DUMMY_PROPERTY
+       IDENTITY_MANAGER_MODEL_DUMMY_PROPERTY
 };
-static void _g_slist_free_g_object_unref (GSList* self);
-#define IDENTITIES_MANAGER_FILE_NAME "identities.txt"
-IdentitiesManager* identities_manager_new (void);
-IdentitiesManager* identities_manager_construct (GType object_type);
-static char* identities_manager_get_data_dir (IdentitiesManager* self);
-IdCard* id_card_new (void);
-IdCard* id_card_construct (GType object_type);
-void id_card_set_issuer (IdCard* self, const char* value);
-void id_card_set_username (IdCard* self, const char* value);
-void id_card_set_password (IdCard* self, const char* value);
-void id_card_set_services (IdCard* self, char** value, int value_length1);
-void id_card_set_display_name (IdCard* self, const char* value);
-GdkPixbuf* find_icon (const char* name, gint size);
-GType rule_get_type (void) G_GNUC_CONST;
-Rule* rule_dup (const Rule* self);
-void rule_free (Rule* self);
-void rule_copy (const Rule* self, Rule* dest);
-void rule_destroy (Rule* self);
-void id_card_set_rules (IdCard* self, Rule* value, int value_length1);
-static void _vala_Rule_array_free (Rule* array, gint array_length);
-GType trust_anchor_get_type (void) G_GNUC_CONST;
-TrustAnchor* id_card_get_trust_anchor (IdCard* self);
-void trust_anchor_set_ca_cert (TrustAnchor* self, const char* value);
-void trust_anchor_set_subject (TrustAnchor* self, const char* value);
-void trust_anchor_set_subject_alt (TrustAnchor* self, const char* value);
-void trust_anchor_set_server_cert (TrustAnchor* self, const char* value);
-void identities_manager_store_id_cards (IdentitiesManager* self);
-Rule* id_card_get_rules (IdCard* self, int* result_length1);
-const char* id_card_get_issuer (IdCard* self);
-const char* id_card_get_display_name (IdCard* self);
-const char* id_card_get_username (IdCard* self);
-const char* id_card_get_password (IdCard* self);
-char** id_card_get_services (IdCard* self, int* result_length1);
-static char** _vala_array_dup3 (char** self, int length);
-const char* trust_anchor_get_ca_cert (TrustAnchor* self);
-const char* trust_anchor_get_subject (TrustAnchor* self);
-const char* trust_anchor_get_subject_alt (TrustAnchor* self);
-const char* trust_anchor_get_server_cert (TrustAnchor* self);
-static void identities_manager_finalize (GObject* obj);
-static void _vala_array_destroy (gpointer array, gint array_length, GDestroyNotify destroy_func);
-static void _vala_array_free (gpointer array, gint array_length, GDestroyNotify destroy_func);
-
-
-
-static void _g_slist_free_g_object_unref (GSList* self) {
-       g_slist_foreach (self, (GFunc) g_object_unref, NULL);
-       g_slist_free (self);
-}
-
-
-static void _vala_Rule_array_free (Rule* array, gint array_length) {
-       if (array != NULL) {
-               int i;
-               for (i = 0; i < array_length; i = i + 1) {
-                       rule_destroy (&array[i]);
-               }
-       }
-       g_free (array);
-}
-
-
-static gpointer _g_object_ref0 (gpointer self) {
-       return self ? g_object_ref (self) : NULL;
-}
-
-
-IdentitiesManager* identities_manager_construct (GType object_type) {
-       IdentitiesManager * self = NULL;
-       GSList* _tmp0_;
-       GKeyFile* key_file;
-       char* path;
-       char* filename;
-       gint identities_uris_length1;
-       gint _identities_uris_size_;
-       char** _tmp2_;
-       gsize _tmp1_;
-       char** identities_uris;
-       GError * _inner_error_ = NULL;
-       self = (IdentitiesManager*) g_object_new (object_type, NULL);
-       self->id_card_list = (_tmp0_ = NULL, __g_slist_free_g_object_unref0 (self->id_card_list), _tmp0_);
-       key_file = g_key_file_new ();
-       path = identities_manager_get_data_dir (self);
-       filename = g_build_filename (path, IDENTITIES_MANAGER_FILE_NAME, NULL);
-       {
-               g_key_file_load_from_file (key_file, filename, G_KEY_FILE_NONE, &_inner_error_);
-               if (_inner_error_ != NULL) {
-                       goto __catch0_g_error;
-               }
-       }
-       goto __finally0;
-       __catch0_g_error:
-       {
-               GError * e;
-               e = _inner_error_;
-               _inner_error_ = NULL;
-               {
-                       fprintf (stdout, "Error: %s\n", e->message);
-                       _g_error_free0 (e);
-                       _g_free0 (filename);
-                       _g_free0 (path);
-                       _g_key_file_free0 (key_file);
-                       return self;
-               }
-       }
-       __finally0:
-       if (_inner_error_ != NULL) {
-               _g_free0 (filename);
-               _g_free0 (path);
-               _g_key_file_free0 (key_file);
-               g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code);
-               g_clear_error (&_inner_error_);
-               return NULL;
-       }
-       identities_uris = (_tmp2_ = g_key_file_get_groups (key_file, &_tmp1_), identities_uris_length1 = _tmp1_, _identities_uris_size_ = identities_uris_length1, _tmp2_);
-       {
-               char** identity_collection;
-               int identity_collection_length1;
-               int identity_it;
-               identity_collection = identities_uris;
-               identity_collection_length1 = identities_uris_length1;
-               for (identity_it = 0; identity_it < identities_uris_length1; identity_it = identity_it + 1) {
-                       char* identity;
-                       identity = g_strdup (identity_collection[identity_it]);
-                       {
-                               {
-                                       IdCard* id_card;
-                                       char* _tmp3_;
-                                       char* _tmp4_;
-                                       char* _tmp5_;
-                                       char* _tmp6_;
-                                       char* _tmp7_;
-                                       char* _tmp8_;
-                                       gint _tmp10__length1;
-                                       gint __tmp10__size_;
-                                       char** _tmp11_;
-                                       gsize _tmp9_;
-                                       char** _tmp10_;
-                                       char** _tmp12_;
-                                       gint _tmp12__length1;
-                                       char** _tmp13_;
-                                       char* _tmp14_;
-                                       char* _tmp15_;
-                                       gboolean _tmp16_ = FALSE;
-                                       gboolean _tmp17_;
-                                       char* _tmp28_;
-                                       char* _tmp29_;
-                                       char* _tmp30_;
-                                       char* _tmp31_;
-                                       char* _tmp32_;
-                                       char* _tmp33_;
-                                       char* _tmp34_;
-                                       char* _tmp35_;
-                                       id_card = id_card_new ();
-                                       _tmp3_ = g_key_file_get_string (key_file, identity, "Issuer", &_inner_error_);
-                                       if (_inner_error_ != NULL) {
-                                               _g_object_unref0 (id_card);
-                                               goto __catch1_g_error;
-                                       }
-                                       id_card_set_issuer (id_card, _tmp4_ = _tmp3_);
-                                       _g_free0 (_tmp4_);
-                                       _tmp5_ = g_key_file_get_string (key_file, identity, "Username", &_inner_error_);
-                                       if (_inner_error_ != NULL) {
-                                               _g_object_unref0 (id_card);
-                                               goto __catch1_g_error;
-                                       }
-                                       id_card_set_username (id_card, _tmp6_ = _tmp5_);
-                                       _g_free0 (_tmp6_);
-                                       _tmp7_ = g_key_file_get_string (key_file, identity, "Password", &_inner_error_);
-                                       if (_inner_error_ != NULL) {
-                                               _g_object_unref0 (id_card);
-                                               goto __catch1_g_error;
-                                       }
-                                       id_card_set_password (id_card, _tmp8_ = _tmp7_);
-                                       _g_free0 (_tmp8_);
-                                       _tmp10_ = (_tmp11_ = g_key_file_get_string_list (key_file, identity, "Services", &_tmp9_, &_inner_error_), _tmp10__length1 = _tmp9_, __tmp10__size_ = _tmp10__length1, _tmp11_);
-                                       if (_inner_error_ != NULL) {
-                                               _g_object_unref0 (id_card);
-                                               goto __catch1_g_error;
-                                       }
-                                       _tmp13_ = (_tmp12_ = _tmp10_, _tmp12__length1 = _tmp10__length1, _tmp12_);
-                                       id_card_set_services (id_card, _tmp13_, _tmp10__length1);
-                                       _tmp12_ = (_vala_array_free (_tmp12_, _tmp12__length1, (GDestroyNotify) g_free), NULL);
-                                       _tmp14_ = g_key_file_get_string (key_file, identity, "DisplayName", &_inner_error_);
-                                       if (_inner_error_ != NULL) {
-                                               _g_object_unref0 (id_card);
-                                               goto __catch1_g_error;
-                                       }
-                                       id_card_set_display_name (id_card, _tmp15_ = _tmp14_);
-                                       _g_free0 (_tmp15_);
-                                       g_object_set_data_full ((GObject*) id_card, "pixbuf", find_icon ("avatar-default", 48), g_object_unref);
-                                       _tmp17_ = g_key_file_has_key (key_file, identity, "Rules-Patterns", &_inner_error_);
-                                       if (_inner_error_ != NULL) {
-                                               _g_object_unref0 (id_card);
-                                               goto __catch1_g_error;
-                                       }
-                                       if (_tmp17_) {
-                                               gboolean _tmp18_;
-                                               _tmp18_ = g_key_file_has_key (key_file, identity, "Rules-AlwaysConfirm", &_inner_error_);
-                                               if (_inner_error_ != NULL) {
-                                                       _g_object_unref0 (id_card);
-                                                       goto __catch1_g_error;
-                                               }
-                                               _tmp16_ = _tmp18_;
-                                       } else {
-                                               _tmp16_ = FALSE;
-                                       }
-                                       if (_tmp16_) {
-                                               gint rules_patterns_length1;
-                                               gint _rules_patterns_size_;
-                                               char** _tmp20_;
-                                               gsize _tmp19_;
-                                               char** rules_patterns;
-                                               gint rules_always_conf_length1;
-                                               gint _rules_always_conf_size_;
-                                               char** _tmp22_;
-                                               gsize _tmp21_;
-                                               char** rules_always_conf;
-                                               rules_patterns = (_tmp20_ = g_key_file_get_string_list (key_file, identity, "Rules-Patterns", &_tmp19_, &_inner_error_), rules_patterns_length1 = _tmp19_, _rules_patterns_size_ = rules_patterns_length1, _tmp20_);
-                                               if (_inner_error_ != NULL) {
-                                                       _g_object_unref0 (id_card);
-                                                       goto __catch1_g_error;
-                                               }
-                                               rules_always_conf = (_tmp22_ = g_key_file_get_string_list (key_file, identity, "Rules-AlwaysConfirm", &_tmp21_, &_inner_error_), rules_always_conf_length1 = _tmp21_, _rules_always_conf_size_ = rules_always_conf_length1, _tmp22_);
-                                               if (_inner_error_ != NULL) {
-                                                       rules_patterns = (_vala_array_free (rules_patterns, rules_patterns_length1, (GDestroyNotify) g_free), NULL);
-                                                       _g_object_unref0 (id_card);
-                                                       goto __catch1_g_error;
-                                               }
-                                               if (rules_patterns_length1 == rules_always_conf_length1) {
-                                                       gint rules_length1;
-                                                       gint _rules_size_;
-                                                       Rule* _tmp23_;
-                                                       Rule* rules;
-                                                       Rule* _tmp27_;
-                                                       rules = (_tmp23_ = g_new0 (Rule, rules_patterns_length1), rules_length1 = rules_patterns_length1, _rules_size_ = rules_length1, _tmp23_);
-                                                       {
-                                                               gint i;
-                                                               i = 0;
-                                                               {
-                                                                       gboolean _tmp24_;
-                                                                       _tmp24_ = TRUE;
-                                                                       while (TRUE) {
-                                                                               Rule _tmp25_ = {0};
-                                                                               Rule _tmp26_;
-                                                                               if (!_tmp24_) {
-                                                                                       i++;
-                                                                               }
-                                                                               _tmp24_ = FALSE;
-                                                                               if (!(i < rules_patterns_length1)) {
-                                                                                       break;
-                                                                               }
-                                                                               rules[i] = (_tmp26_ = (_tmp25_.pattern = g_strdup (rules_patterns[i]), _tmp25_.always_confirm = g_strdup (rules_always_conf[i]), _tmp25_), rule_destroy (&rules[i]), _tmp26_);
-                                                                       }
-                                                               }
-                                                       }
-                                                       _tmp27_ = rules;
-                                                       id_card_set_rules (id_card, _tmp27_, rules_length1);
-                                                       rules = (_vala_Rule_array_free (rules, rules_length1), NULL);
-                                               }
-                                               rules_always_conf = (_vala_array_free (rules_always_conf, rules_always_conf_length1, (GDestroyNotify) g_free), NULL);
-                                               rules_patterns = (_vala_array_free (rules_patterns, rules_patterns_length1, (GDestroyNotify) g_free), NULL);
-                                       }
-                                       _tmp28_ = g_key_file_get_string (key_file, identity, "CA-Cert", &_inner_error_);
-                                       if (_inner_error_ != NULL) {
-                                               _g_object_unref0 (id_card);
-                                               goto __catch1_g_error;
-                                       }
-                                       trust_anchor_set_ca_cert (id_card_get_trust_anchor (id_card), _tmp29_ = _tmp28_);
-                                       _g_free0 (_tmp29_);
-                                       _tmp30_ = g_key_file_get_string (key_file, identity, "Subject", &_inner_error_);
-                                       if (_inner_error_ != NULL) {
-                                               _g_object_unref0 (id_card);
-                                               goto __catch1_g_error;
-                                       }
-                                       trust_anchor_set_subject (id_card_get_trust_anchor (id_card), _tmp31_ = _tmp30_);
-                                       _g_free0 (_tmp31_);
-                                       _tmp32_ = g_key_file_get_string (key_file, identity, "SubjectAlt", &_inner_error_);
-                                       if (_inner_error_ != NULL) {
-                                               _g_object_unref0 (id_card);
-                                               goto __catch1_g_error;
-                                       }
-                                       trust_anchor_set_subject_alt (id_card_get_trust_anchor (id_card), _tmp33_ = _tmp32_);
-                                       _g_free0 (_tmp33_);
-                                       _tmp34_ = g_key_file_get_string (key_file, identity, "ServerCert", &_inner_error_);
-                                       if (_inner_error_ != NULL) {
-                                               _g_object_unref0 (id_card);
-                                               goto __catch1_g_error;
-                                       }
-                                       trust_anchor_set_server_cert (id_card_get_trust_anchor (id_card), _tmp35_ = _tmp34_);
-                                       _g_free0 (_tmp35_);
-                                       self->id_card_list = g_slist_prepend (self->id_card_list, _g_object_ref0 (id_card));
-                                       _g_object_unref0 (id_card);
-                               }
-                               goto __finally1;
-                               __catch1_g_error:
-                               {
-                                       GError * e;
-                                       e = _inner_error_;
-                                       _inner_error_ = NULL;
-                                       {
-                                               fprintf (stdout, "Error:  %s\n", e->message);
-                                               _g_error_free0 (e);
-                                       }
-                               }
-                               __finally1:
-                               if (_inner_error_ != NULL) {
-                                       _g_free0 (identity);
-                                       identities_uris = (_vala_array_free (identities_uris, identities_uris_length1, (GDestroyNotify) g_free), NULL);
-                                       _g_free0 (filename);
-                                       _g_free0 (path);
-                                       _g_key_file_free0 (key_file);
-                                       g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code);
-                                       g_clear_error (&_inner_error_);
-                                       return NULL;
-                               }
-                               _g_free0 (identity);
-                       }
-               }
-       }
-       identities_uris = (_vala_array_free (identities_uris, identities_uris_length1, (GDestroyNotify) g_free), NULL);
-       _g_free0 (filename);
-       _g_free0 (path);
-       _g_key_file_free0 (key_file);
-       return self;
+#define IDENTITY_MANAGER_MODEL_FILE_NAME "identities.txt"
+GeeLinkedList* identity_manager_model_get_card_list (IdentityManagerModel* self);
+GeeLinkedList* iidentity_card_store_get_card_list (IIdentityCardStore* self);
+void identity_manager_model_add_card (IdentityManagerModel* self, IdCard* card);
+void iidentity_card_store_add_card (IIdentityCardStore* self, IdCard* card);
+void identity_manager_model_update_card (IdentityManagerModel* self, IdCard* card);
+void iidentity_card_store_update_card (IIdentityCardStore* self, IdCard* card);
+void identity_manager_model_remove_card (IdentityManagerModel* self, IdCard* card);
+void iidentity_card_store_remove_card (IIdentityCardStore* self, IdCard* card);
+IdentityManagerModel* identity_manager_model_new (IdentityManagerApp* parent_app);
+IdentityManagerModel* identity_manager_model_construct (GType object_type, IdentityManagerApp* parent_app);
+LocalFlatFileStore* local_flat_file_store_new (void);
+LocalFlatFileStore* local_flat_file_store_construct (GType object_type);
+GType local_flat_file_store_get_type (void) G_GNUC_CONST;
+static void identity_manager_model_finalize (GObject* obj);
+
+
+
+GeeLinkedList* identity_manager_model_get_card_list (IdentityManagerModel* self) {
+       GeeLinkedList* result = NULL;
+       g_return_val_if_fail (self != NULL, NULL);
+       result = iidentity_card_store_get_card_list (self->priv->store);
+       return result;
 }
 
 
-IdentitiesManager* identities_manager_new (void) {
-       return identities_manager_construct (TYPE_IDENTITIES_MANAGER);
+void identity_manager_model_add_card (IdentityManagerModel* self, IdCard* card) {
+       g_return_if_fail (self != NULL);
+       g_return_if_fail (card != NULL);
+       iidentity_card_store_add_card (self->priv->store, card);
+       g_signal_emit_by_name (self, "card-list-changed");
 }
 
 
-static char** _vala_array_dup3 (char** self, int length) {
-       char** result;
-       int i;
-       result = g_new0 (char*, length + 1);
-       for (i = 0; i < length; i++) {
-               result[i] = g_strdup (self[i]);
-       }
-       return result;
+void identity_manager_model_update_card (IdentityManagerModel* self, IdCard* card) {
+       g_return_if_fail (self != NULL);
+       g_return_if_fail (card != NULL);
+       iidentity_card_store_update_card (self->priv->store, card);
+       g_signal_emit_by_name (self, "card-list-changed");
 }
 
 
-void identities_manager_store_id_cards (IdentitiesManager* self) {
-       GKeyFile* key_file;
-       char* text;
-       GError * _inner_error_ = NULL;
+void identity_manager_model_remove_card (IdentityManagerModel* self, IdCard* card) {
        g_return_if_fail (self != NULL);
-       key_file = g_key_file_new ();
-       {
-               GSList* id_card_collection;
-               GSList* id_card_it;
-               id_card_collection = self->id_card_list;
-               for (id_card_it = id_card_collection; id_card_it != NULL; id_card_it = id_card_it->next) {
-                       IdCard* id_card;
-                       id_card = _g_object_ref0 ((IdCard*) id_card_it->data);
-                       {
-                               gint rules_patterns_length1;
-                               gint _rules_patterns_size_;
-                               char** _tmp1_;
-                               gint _tmp0_;
-                               char** rules_patterns;
-                               gint rules_always_conf_length1;
-                               gint _rules_always_conf_size_;
-                               char** _tmp3_;
-                               gint _tmp2_;
-                               char** rules_always_conf;
-                               char* _tmp10_;
-                               char* _tmp12_;
-                               char* _tmp14_;
-                               char* _tmp16_;
-                               gint _tmp20__length1;
-                               gint __tmp20__size_;
-                               char** _tmp21_;
-                               gint _tmp18_;
-                               char** _tmp19_;
-                               char** _tmp20_;
-                               gint _tmp24_;
-                               char* _tmp25_;
-                               char* _tmp27_;
-                               char* _tmp29_;
-                               char* _tmp31_;
-                               rules_patterns = (_tmp1_ = g_new0 (char*, _tmp0_ + 1), rules_patterns_length1 = _tmp0_, _rules_patterns_size_ = rules_patterns_length1, _tmp1_);
-                               rules_always_conf = (_tmp3_ = g_new0 (char*, _tmp2_ + 1), rules_always_conf_length1 = _tmp2_, _rules_always_conf_size_ = rules_always_conf_length1, _tmp3_);
-                               {
-                                       gint i;
-                                       i = 0;
-                                       {
-                                               gboolean _tmp4_;
-                                               _tmp4_ = TRUE;
-                                               while (TRUE) {
-                                                       gint _tmp5_;
-                                                       gint _tmp6_;
-                                                       char* _tmp7_;
-                                                       gint _tmp8_;
-                                                       char* _tmp9_;
-                                                       if (!_tmp4_) {
-                                                               i++;
-                                                       }
-                                                       _tmp4_ = FALSE;
-                                                       if (!(i < _tmp5_)) {
-                                                               break;
-                                                       }
-                                                       rules_patterns[i] = (_tmp7_ = g_strdup (id_card_get_rules (id_card, &_tmp6_)[i].pattern), _g_free0 (rules_patterns[i]), _tmp7_);
-                                                       rules_always_conf[i] = (_tmp9_ = g_strdup (id_card_get_rules (id_card, &_tmp8_)[i].always_confirm), _g_free0 (rules_always_conf[i]), _tmp9_);
-                                               }
-                                       }
-                               }
-                               _tmp10_ = g_strdup (id_card_get_issuer (id_card));
-                               if (_tmp10_ == NULL) {
-                                       char* _tmp11_;
-                                       _tmp10_ = (_tmp11_ = g_strdup (""), _g_free0 (_tmp10_), _tmp11_);
-                               }
-                               g_key_file_set_string (key_file, id_card_get_display_name (id_card), "Issuer", _tmp10_);
-                               _tmp12_ = g_strdup (id_card_get_display_name (id_card));
-                               if (_tmp12_ == NULL) {
-                                       char* _tmp13_;
-                                       _tmp12_ = (_tmp13_ = g_strdup (""), _g_free0 (_tmp12_), _tmp13_);
-                               }
-                               g_key_file_set_string (key_file, id_card_get_display_name (id_card), "DisplayName", _tmp12_);
-                               _tmp14_ = g_strdup (id_card_get_username (id_card));
-                               if (_tmp14_ == NULL) {
-                                       char* _tmp15_;
-                                       _tmp14_ = (_tmp15_ = g_strdup (""), _g_free0 (_tmp14_), _tmp15_);
-                               }
-                               g_key_file_set_string (key_file, id_card_get_display_name (id_card), "Username", _tmp14_);
-                               _tmp16_ = g_strdup (id_card_get_password (id_card));
-                               if (_tmp16_ == NULL) {
-                                       char* _tmp17_;
-                                       _tmp16_ = (_tmp17_ = g_strdup (""), _g_free0 (_tmp16_), _tmp17_);
-                               }
-                               g_key_file_set_string (key_file, id_card_get_display_name (id_card), "Password", _tmp16_);
-                               _tmp20_ = (_tmp21_ = (_tmp19_ = id_card_get_services (id_card, &_tmp18_), (_tmp19_ == NULL) ? ((gpointer) _tmp19_) : _vala_array_dup3 (_tmp19_, _tmp18_)), _tmp20__length1 = _tmp18_, __tmp20__size_ = _tmp20__length1, _tmp21_);
-                               if (_tmp20_ == NULL) {
-                                       char** _tmp22_ = NULL;
-                                       char** _tmp23_;
-                                       _tmp20_ = (_tmp23_ = (_tmp22_ = g_new0 (char*, 0 + 1), _tmp22_), _tmp20_ = (_vala_array_free (_tmp20_, _tmp20__length1, (GDestroyNotify) g_free), NULL), _tmp20__length1 = 0, __tmp20__size_ = _tmp20__length1, _tmp23_);
-                               }
-                               g_key_file_set_string_list (key_file, id_card_get_display_name (id_card), "Services", (const gchar* const*) _tmp20_, _tmp20__length1);
-                               if (_tmp24_ > 0) {
-                                       g_key_file_set_string_list (key_file, id_card_get_display_name (id_card), "Rules-Patterns", (const gchar* const*) rules_patterns, rules_patterns_length1);
-                                       g_key_file_set_string_list (key_file, id_card_get_display_name (id_card), "Rules-AlwaysConfirm", (const gchar* const*) rules_always_conf, rules_always_conf_length1);
-                               }
-                               _tmp25_ = g_strdup (trust_anchor_get_ca_cert (id_card_get_trust_anchor (id_card)));
-                               if (_tmp25_ == NULL) {
-                                       char* _tmp26_;
-                                       _tmp25_ = (_tmp26_ = g_strdup (""), _g_free0 (_tmp25_), _tmp26_);
-                               }
-                               g_key_file_set_string (key_file, id_card_get_display_name (id_card), "CA-Cert", _tmp25_);
-                               _tmp27_ = g_strdup (trust_anchor_get_subject (id_card_get_trust_anchor (id_card)));
-                               if (_tmp27_ == NULL) {
-                                       char* _tmp28_;
-                                       _tmp27_ = (_tmp28_ = g_strdup (""), _g_free0 (_tmp27_), _tmp28_);
-                               }
-                               g_key_file_set_string (key_file, id_card_get_display_name (id_card), "Subject", _tmp27_);
-                               _tmp29_ = g_strdup (trust_anchor_get_subject_alt (id_card_get_trust_anchor (id_card)));
-                               if (_tmp29_ == NULL) {
-                                       char* _tmp30_;
-                                       _tmp29_ = (_tmp30_ = g_strdup (""), _g_free0 (_tmp29_), _tmp30_);
-                               }
-                               g_key_file_set_string (key_file, id_card_get_display_name (id_card), "SubjectAlt", _tmp29_);
-                               _tmp31_ = g_strdup (trust_anchor_get_server_cert (id_card_get_trust_anchor (id_card)));
-                               if (_tmp31_ == NULL) {
-                                       char* _tmp32_;
-                                       _tmp31_ = (_tmp32_ = g_strdup (""), _g_free0 (_tmp31_), _tmp32_);
-                               }
-                               g_key_file_set_string (key_file, id_card_get_display_name (id_card), "ServerCert", _tmp31_);
-                               _g_free0 (_tmp31_);
-                               _g_free0 (_tmp29_);
-                               _g_free0 (_tmp27_);
-                               _g_free0 (_tmp25_);
-                               _tmp20_ = (_vala_array_free (_tmp20_, _tmp20__length1, (GDestroyNotify) g_free), NULL);
-                               _g_free0 (_tmp16_);
-                               _g_free0 (_tmp14_);
-                               _g_free0 (_tmp12_);
-                               _g_free0 (_tmp10_);
-                               rules_always_conf = (_vala_array_free (rules_always_conf, rules_always_conf_length1, (GDestroyNotify) g_free), NULL);
-                               rules_patterns = (_vala_array_free (rules_patterns, rules_patterns_length1, (GDestroyNotify) g_free), NULL);
-                               _g_object_unref0 (id_card);
-                       }
-               }
-       }
-       text = g_key_file_to_data (key_file, NULL, NULL);
-       {
-               char* path;
-               char* filename;
-               path = identities_manager_get_data_dir (self);
-               filename = g_build_filename (path, IDENTITIES_MANAGER_FILE_NAME, NULL);
-               g_file_set_contents (filename, text, (gssize) (-1), &_inner_error_);
-               if (_inner_error_ != NULL) {
-                       _g_free0 (filename);
-                       _g_free0 (path);
-                       goto __catch2_g_error;
-               }
-               _g_free0 (filename);
-               _g_free0 (path);
-       }
-       goto __finally2;
-       __catch2_g_error:
-       {
-               GError * e;
-               e = _inner_error_;
-               _inner_error_ = NULL;
-               {
-                       fprintf (stdout, "Error:  %s\n", e->message);
-                       _g_error_free0 (e);
-               }
-       }
-       __finally2:
-       if (_inner_error_ != NULL) {
-               _g_free0 (text);
-               _g_key_file_free0 (key_file);
-               g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code);
-               g_clear_error (&_inner_error_);
-               return;
-       }
-       _g_free0 (text);
-       _g_key_file_free0 (key_file);
+       g_return_if_fail (card != NULL);
+       iidentity_card_store_remove_card (self->priv->store, card);
+       g_signal_emit_by_name (self, "card-list-changed");
 }
 
 
-static char* identities_manager_get_data_dir (IdentitiesManager* self) {
-       char* result = NULL;
-       char* path;
-       char* _tmp0_;
-       g_return_val_if_fail (self != NULL, NULL);
-       path = NULL;
-       path = (_tmp0_ = g_build_filename (g_get_user_data_dir (), PACKAGE_TARNAME, NULL), _g_free0 (path), _tmp0_);
-       if (!g_file_test (path, G_FILE_TEST_EXISTS)) {
-               g_mkdir (path, 0700);
-       }
-       result = path;
-       return result;
+static gpointer _g_object_ref0 (gpointer self) {
+       return self ? g_object_ref (self) : NULL;
 }
 
 
-static void identities_manager_class_init (IdentitiesManagerClass * klass) {
-       identities_manager_parent_class = g_type_class_peek_parent (klass);
-       G_OBJECT_CLASS (klass)->finalize = identities_manager_finalize;
+IdentityManagerModel* identity_manager_model_construct (GType object_type, IdentityManagerApp* parent_app) {
+       IdentityManagerModel * self = NULL;
+       IdentityManagerApp* _tmp0_;
+       IIdentityCardStore* _tmp1_;
+       g_return_val_if_fail (parent_app != NULL, NULL);
+       self = (IdentityManagerModel*) g_object_new (object_type, NULL);
+       self->priv->parent = (_tmp0_ = _g_object_ref0 (parent_app), _g_object_unref0 (self->priv->parent), _tmp0_);
+       self->priv->store = (_tmp1_ = (IIdentityCardStore*) local_flat_file_store_new (), _g_object_unref0 (self->priv->store), _tmp1_);
+       return self;
 }
 
 
-static void identities_manager_instance_init (IdentitiesManager * self) {
+IdentityManagerModel* identity_manager_model_new (IdentityManagerApp* parent_app) {
+       return identity_manager_model_construct (TYPE_IDENTITY_MANAGER_MODEL, parent_app);
 }
 
 
-static void identities_manager_finalize (GObject* obj) {
-       IdentitiesManager * self;
-       self = IDENTITIES_MANAGER (obj);
-       __g_slist_free_g_object_unref0 (self->id_card_list);
-       G_OBJECT_CLASS (identities_manager_parent_class)->finalize (obj);
+static void identity_manager_model_class_init (IdentityManagerModelClass * klass) {
+       identity_manager_model_parent_class = g_type_class_peek_parent (klass);
+       g_type_class_add_private (klass, sizeof (IdentityManagerModelPrivate));
+       G_OBJECT_CLASS (klass)->finalize = identity_manager_model_finalize;
+       g_signal_new ("card_list_changed", TYPE_IDENTITY_MANAGER_MODEL, G_SIGNAL_RUN_LAST, 0, NULL, NULL, g_cclosure_marshal_VOID__VOID, G_TYPE_NONE, 0);
 }
 
 
-GType identities_manager_get_type (void) {
-       static volatile gsize identities_manager_type_id__volatile = 0;
-       if (g_once_init_enter (&identities_manager_type_id__volatile)) {
-               static const GTypeInfo g_define_type_info = { sizeof (IdentitiesManagerClass), (GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) identities_manager_class_init, (GClassFinalizeFunc) NULL, NULL, sizeof (IdentitiesManager), 0, (GInstanceInitFunc) identities_manager_instance_init, NULL };
-               GType identities_manager_type_id;
-               identities_manager_type_id = g_type_register_static (G_TYPE_OBJECT, "IdentitiesManager", &g_define_type_info, 0);
-               g_once_init_leave (&identities_manager_type_id__volatile, identities_manager_type_id);
-       }
-       return identities_manager_type_id__volatile;
+static void identity_manager_model_instance_init (IdentityManagerModel * self) {
+       self->priv = IDENTITY_MANAGER_MODEL_GET_PRIVATE (self);
 }
 
 
-static void _vala_array_destroy (gpointer array, gint array_length, GDestroyNotify destroy_func) {
-       if ((array != NULL) && (destroy_func != NULL)) {
-               int i;
-               for (i = 0; i < array_length; i = i + 1) {
-                       if (((gpointer*) array)[i] != NULL) {
-                               destroy_func (((gpointer*) array)[i]);
-                       }
-               }
-       }
+static void identity_manager_model_finalize (GObject* obj) {
+       IdentityManagerModel * self;
+       self = IDENTITY_MANAGER_MODEL (obj);
+       _g_object_unref0 (self->priv->store);
+       _g_object_unref0 (self->priv->parent);
+       G_OBJECT_CLASS (identity_manager_model_parent_class)->finalize (obj);
 }
 
 
-static void _vala_array_free (gpointer array, gint array_length, GDestroyNotify destroy_func) {
-       _vala_array_destroy (array, array_length, destroy_func);
-       g_free (array);
+GType identity_manager_model_get_type (void) {
+       static volatile gsize identity_manager_model_type_id__volatile = 0;
+       if (g_once_init_enter (&identity_manager_model_type_id__volatile)) {
+               static const GTypeInfo g_define_type_info = { sizeof (IdentityManagerModelClass), (GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) identity_manager_model_class_init, (GClassFinalizeFunc) NULL, NULL, sizeof (IdentityManagerModel), 0, (GInstanceInitFunc) identity_manager_model_instance_init, NULL };
+               GType identity_manager_model_type_id;
+               identity_manager_model_type_id = g_type_register_static (G_TYPE_OBJECT, "IdentityManagerModel", &g_define_type_info, 0);
+               g_once_init_leave (&identity_manager_model_type_id__volatile, identity_manager_model_type_id);
+       }
+       return identity_manager_model_type_id__volatile;
 }
 
 
diff --git a/src/moonshot-identity-management-view.c b/src/moonshot-identity-management-view.c
new file mode 100644 (file)
index 0000000..1ad8600
--- /dev/null
@@ -0,0 +1,2033 @@
+/* moonshot-identity-management-view.c generated by valac 0.10.4, the Vala compiler
+ * generated from moonshot-identity-management-view.vala, do not modify */
+
+
+#include <glib.h>
+#include <glib-object.h>
+#include <gtk/gtk.h>
+#include <stdlib.h>
+#include <string.h>
+#include <gdk-pixbuf/gdk-pixdata.h>
+#include <gdk/gdk.h>
+#include <gee.h>
+#include <glib/gi18n-lib.h>
+#include <pango/pango.h>
+#include <float.h>
+#include <math.h>
+#include <stdio.h>
+#include <atk/atk.h>
+
+
+#define TYPE_IDENTITY_MANAGER_VIEW (identity_manager_view_get_type ())
+#define IDENTITY_MANAGER_VIEW(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), TYPE_IDENTITY_MANAGER_VIEW, IdentityManagerView))
+#define IDENTITY_MANAGER_VIEW_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), TYPE_IDENTITY_MANAGER_VIEW, IdentityManagerViewClass))
+#define IS_IDENTITY_MANAGER_VIEW(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TYPE_IDENTITY_MANAGER_VIEW))
+#define IS_IDENTITY_MANAGER_VIEW_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), TYPE_IDENTITY_MANAGER_VIEW))
+#define IDENTITY_MANAGER_VIEW_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), TYPE_IDENTITY_MANAGER_VIEW, IdentityManagerViewClass))
+
+typedef struct _IdentityManagerView IdentityManagerView;
+typedef struct _IdentityManagerViewClass IdentityManagerViewClass;
+typedef struct _IdentityManagerViewPrivate IdentityManagerViewPrivate;
+
+#define TYPE_IDENTITY_MANAGER_APP (identity_manager_app_get_type ())
+#define IDENTITY_MANAGER_APP(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), TYPE_IDENTITY_MANAGER_APP, IdentityManagerApp))
+#define IDENTITY_MANAGER_APP_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), TYPE_IDENTITY_MANAGER_APP, IdentityManagerAppClass))
+#define IS_IDENTITY_MANAGER_APP(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TYPE_IDENTITY_MANAGER_APP))
+#define IS_IDENTITY_MANAGER_APP_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), TYPE_IDENTITY_MANAGER_APP))
+#define IDENTITY_MANAGER_APP_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), TYPE_IDENTITY_MANAGER_APP, IdentityManagerAppClass))
+
+typedef struct _IdentityManagerApp IdentityManagerApp;
+typedef struct _IdentityManagerAppClass IdentityManagerAppClass;
+
+#define TYPE_IDENTITY_MANAGER_MODEL (identity_manager_model_get_type ())
+#define IDENTITY_MANAGER_MODEL(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), TYPE_IDENTITY_MANAGER_MODEL, IdentityManagerModel))
+#define IDENTITY_MANAGER_MODEL_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), TYPE_IDENTITY_MANAGER_MODEL, IdentityManagerModelClass))
+#define IS_IDENTITY_MANAGER_MODEL(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TYPE_IDENTITY_MANAGER_MODEL))
+#define IS_IDENTITY_MANAGER_MODEL_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), TYPE_IDENTITY_MANAGER_MODEL))
+#define IDENTITY_MANAGER_MODEL_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), TYPE_IDENTITY_MANAGER_MODEL, IdentityManagerModelClass))
+
+typedef struct _IdentityManagerModel IdentityManagerModel;
+typedef struct _IdentityManagerModelClass IdentityManagerModelClass;
+
+#define TYPE_IDENTITY_REQUEST (identity_request_get_type ())
+#define IDENTITY_REQUEST(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), TYPE_IDENTITY_REQUEST, IdentityRequest))
+#define IDENTITY_REQUEST_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), TYPE_IDENTITY_REQUEST, IdentityRequestClass))
+#define IS_IDENTITY_REQUEST(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TYPE_IDENTITY_REQUEST))
+#define IS_IDENTITY_REQUEST_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), TYPE_IDENTITY_REQUEST))
+#define IDENTITY_REQUEST_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), TYPE_IDENTITY_REQUEST, IdentityRequestClass))
+
+typedef struct _IdentityRequest IdentityRequest;
+typedef struct _IdentityRequestClass IdentityRequestClass;
+
+#define TYPE_CUSTOM_VBOX (custom_vbox_get_type ())
+#define CUSTOM_VBOX(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), TYPE_CUSTOM_VBOX, CustomVBox))
+#define CUSTOM_VBOX_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), TYPE_CUSTOM_VBOX, CustomVBoxClass))
+#define IS_CUSTOM_VBOX(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TYPE_CUSTOM_VBOX))
+#define IS_CUSTOM_VBOX_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), TYPE_CUSTOM_VBOX))
+#define CUSTOM_VBOX_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), TYPE_CUSTOM_VBOX, CustomVBoxClass))
+
+typedef struct _CustomVBox CustomVBox;
+typedef struct _CustomVBoxClass CustomVBoxClass;
+
+#define TYPE_ID_CARD (id_card_get_type ())
+#define ID_CARD(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), TYPE_ID_CARD, IdCard))
+#define ID_CARD_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), TYPE_ID_CARD, IdCardClass))
+#define IS_ID_CARD(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TYPE_ID_CARD))
+#define IS_ID_CARD_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), TYPE_ID_CARD))
+#define ID_CARD_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), TYPE_ID_CARD, IdCardClass))
+
+typedef struct _IdCard IdCard;
+typedef struct _IdCardClass IdCardClass;
+
+#define IDENTITY_MANAGER_VIEW_TYPE_COLUMNS (identity_manager_view_columns_get_type ())
+#define _g_object_unref0(var) ((var == NULL) ? NULL : (var = (g_object_unref (var), NULL)))
+#define __g_slist_free_g_object_unref0(var) ((var == NULL) ? NULL : (var = (_g_slist_free_g_object_unref (var), NULL)))
+#define _g_queue_free0(var) ((var == NULL) ? NULL : (var = (g_queue_free (var), NULL)))
+#define _g_hash_table_unref0(var) ((var == NULL) ? NULL : (var = (g_hash_table_unref (var), NULL)))
+typedef struct _IdentityManagerAppPrivate IdentityManagerAppPrivate;
+#define _g_free0(var) (var = (g_free (var), NULL))
+
+#define TYPE_ID_CARD_WIDGET (id_card_widget_get_type ())
+#define ID_CARD_WIDGET(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), TYPE_ID_CARD_WIDGET, IdCardWidget))
+#define ID_CARD_WIDGET_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), TYPE_ID_CARD_WIDGET, IdCardWidgetClass))
+#define IS_ID_CARD_WIDGET(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TYPE_ID_CARD_WIDGET))
+#define IS_ID_CARD_WIDGET_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), TYPE_ID_CARD_WIDGET))
+#define ID_CARD_WIDGET_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), TYPE_ID_CARD_WIDGET, IdCardWidgetClass))
+
+typedef struct _IdCardWidget IdCardWidget;
+typedef struct _IdCardWidgetClass IdCardWidgetClass;
+#define _g_list_free0(var) ((var == NULL) ? NULL : (var = (g_list_free (var), NULL)))
+
+#define TYPE_ADD_IDENTITY_DIALOG (add_identity_dialog_get_type ())
+#define ADD_IDENTITY_DIALOG(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), TYPE_ADD_IDENTITY_DIALOG, AddIdentityDialog))
+#define ADD_IDENTITY_DIALOG_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), TYPE_ADD_IDENTITY_DIALOG, AddIdentityDialogClass))
+#define IS_ADD_IDENTITY_DIALOG(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TYPE_ADD_IDENTITY_DIALOG))
+#define IS_ADD_IDENTITY_DIALOG_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), TYPE_ADD_IDENTITY_DIALOG))
+#define ADD_IDENTITY_DIALOG_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), TYPE_ADD_IDENTITY_DIALOG, AddIdentityDialogClass))
+
+typedef struct _AddIdentityDialog AddIdentityDialog;
+typedef struct _AddIdentityDialogClass AddIdentityDialogClass;
+typedef struct _IdentityRequestPrivate IdentityRequestPrivate;
+#define __g_slist_free_g_free0(var) ((var == NULL) ? NULL : (var = (_g_slist_free_g_free (var), NULL)))
+
+#define TYPE_RULE (rule_get_type ())
+typedef struct _Rule Rule;
+typedef struct _Block1Data Block1Data;
+#define _g_pattern_spec_free0(var) ((var == NULL) ? NULL : (var = (g_pattern_spec_free (var), NULL)))
+
+#define TYPE_ADD_PASSWORD_DIALOG (add_password_dialog_get_type ())
+#define ADD_PASSWORD_DIALOG(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), TYPE_ADD_PASSWORD_DIALOG, AddPasswordDialog))
+#define ADD_PASSWORD_DIALOG_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), TYPE_ADD_PASSWORD_DIALOG, AddPasswordDialogClass))
+#define IS_ADD_PASSWORD_DIALOG(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TYPE_ADD_PASSWORD_DIALOG))
+#define IS_ADD_PASSWORD_DIALOG_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), TYPE_ADD_PASSWORD_DIALOG))
+#define ADD_PASSWORD_DIALOG_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), TYPE_ADD_PASSWORD_DIALOG, AddPasswordDialogClass))
+
+typedef struct _AddPasswordDialog AddPasswordDialog;
+typedef struct _AddPasswordDialogClass AddPasswordDialogClass;
+#define _pango_font_description_free0(var) ((var == NULL) ? NULL : (var = (pango_font_description_free (var), NULL)))
+#define _g_error_free0(var) ((var == NULL) ? NULL : (var = (g_error_free (var), NULL)))
+
+struct _IdentityManagerView {
+       GtkWindow parent_instance;
+       IdentityManagerViewPrivate * priv;
+       IdentityManagerApp* parent_app;
+       IdentityManagerModel* identities_manager;
+       GQueue* request_queue;
+};
+
+struct _IdentityManagerViewClass {
+       GtkWindowClass parent_class;
+};
+
+struct _IdentityManagerViewPrivate {
+       GtkUIManager* ui_manager;
+       GtkEntry* search_entry;
+       GtkVBox* vbox_right;
+       CustomVBox* custom_vbox;
+       GtkVBox* services_internal_vbox;
+       GtkEntry* username_entry;
+       GtkEntry* password_entry;
+       GtkListStore* listmodel;
+       GtkTreeModelFilter* filter;
+       GSList* candidates;
+       IdCard* default_id_card;
+       GHashTable* service_button_map;
+};
+
+typedef enum  {
+       IDENTITY_MANAGER_VIEW_COLUMNS_IDCARD_COL,
+       IDENTITY_MANAGER_VIEW_COLUMNS_LOGO_COL,
+       IDENTITY_MANAGER_VIEW_COLUMNS_ISSUER_COL,
+       IDENTITY_MANAGER_VIEW_COLUMNS_USERNAME_COL,
+       IDENTITY_MANAGER_VIEW_COLUMNS_PASSWORD_COL,
+       IDENTITY_MANAGER_VIEW_COLUMNS_N_COLUMNS
+} IdentityManagerViewColumns;
+
+struct _IdentityManagerApp {
+       GtkWindow parent_instance;
+       IdentityManagerAppPrivate * priv;
+       IdentityManagerModel* model;
+};
+
+struct _IdentityManagerAppClass {
+       GtkWindowClass parent_class;
+};
+
+struct _IdentityRequest {
+       GObject parent_instance;
+       IdentityRequestPrivate * priv;
+       IdCard* id_card;
+       gboolean complete;
+       gboolean select_default;
+       char* nai;
+       char* password;
+       char* service;
+};
+
+struct _IdentityRequestClass {
+       GObjectClass parent_class;
+};
+
+struct _Rule {
+       char* pattern;
+       char* always_confirm;
+};
+
+struct _Block1Data {
+       int _ref_count_;
+       IdentityManagerView * self;
+       IdCard* identity;
+};
+
+
+static gpointer identity_manager_view_parent_class = NULL;
+
+GType identity_manager_view_get_type (void) G_GNUC_CONST;
+GType identity_manager_app_get_type (void) G_GNUC_CONST;
+GType identity_manager_model_get_type (void) G_GNUC_CONST;
+GType identity_request_get_type (void) G_GNUC_CONST;
+GType custom_vbox_get_type (void) G_GNUC_CONST;
+GType id_card_get_type (void) G_GNUC_CONST;
+#define IDENTITY_MANAGER_VIEW_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), TYPE_IDENTITY_MANAGER_VIEW, IdentityManagerViewPrivate))
+enum  {
+       IDENTITY_MANAGER_VIEW_DUMMY_PROPERTY
+};
+static GType identity_manager_view_columns_get_type (void) G_GNUC_UNUSED;
+static void _g_slist_free_g_object_unref (GSList* self);
+#define IDENTITY_MANAGER_VIEW_WINDOW_WIDTH 400
+#define IDENTITY_MANAGER_VIEW_WINDOW_HEIGHT 500
+#define IDENTITY_MANAGER_VIEW_layout "<menubar name='MenuBar'>" "        <menu name='FileMenu' action='FileMenuAction'>" "            <menuitem name='AddIdCard' action='AddIdCardAction' />" "            <separator />" "            <menuitem name='Quit' action='QuitAction' />" "        </menu>" "" "        <menu name='HelpMenu' action='HelpMenuAction'>" "             <menuitem name='About' action='AboutAction' />" "        </menu>" "</menubar>"
+IdentityManagerView* identity_manager_view_new (IdentityManagerApp* app);
+IdentityManagerView* identity_manager_view_construct (GType object_type, IdentityManagerApp* app);
+static void identity_manager_view_build_ui (IdentityManagerView* self);
+static void identity_manager_view_setup_list_model (IdentityManagerView* self);
+static void identity_manager_view_load_id_cards (IdentityManagerView* self);
+static void identity_manager_view_connect_signals (IdentityManagerView* self);
+void identity_manager_view_on_card_list_changed (IdentityManagerView* self);
+void identity_manager_view_add_candidate (IdentityManagerView* self, IdCard* idcard);
+static gboolean identity_manager_view_visible_func (IdentityManagerView* self, GtkTreeModel* model, GtkTreeIter* iter);
+const char* id_card_get_issuer (IdCard* self);
+const char* id_card_get_display_name (IdCard* self);
+char** id_card_get_services (IdCard* self, int* result_length1);
+static gboolean _identity_manager_view_visible_func_gtk_tree_model_filter_visible_func (GtkTreeModel* model, GtkTreeIter* iter, gpointer self);
+static void identity_manager_view_search_entry_icon_press_cb (IdentityManagerView* self, GtkEntryIconPosition pos, GdkEvent* event);
+static void identity_manager_view_search_entry_text_changed_cb (IdentityManagerView* self);
+static void identity_manager_view_redraw_id_card_widgets (IdentityManagerView* self);
+static gboolean identity_manager_view_search_entry_key_press_event_cb (IdentityManagerView* self, GdkEventKey* e);
+GType id_card_widget_get_type (void) G_GNUC_CONST;
+static void identity_manager_view_remove_id_card_widget (IdentityManagerView* self, IdCardWidget* id_card_widget);
+GeeLinkedList* identity_manager_model_get_card_list (IdentityManagerModel* self);
+static void identity_manager_view_add_id_card_data (IdentityManagerView* self, IdCard* id_card);
+static void identity_manager_view_add_id_card_widget (IdentityManagerView* self, IdCard* id_card);
+static void identity_manager_view_fill_details (IdentityManagerView* self, IdCardWidget* id_card_widget);
+IdCard* id_card_widget_get_id_card (IdCardWidget* self);
+const char* id_card_get_username (IdCard* self);
+const char* id_card_get_password (IdCard* self);
+static void identity_manager_view_fill_services_vbox (IdentityManagerView* self, IdCard* id_card);
+static void identity_manager_view_show_details (IdentityManagerView* self, IdCard* id_card);
+static void identity_manager_view_details_identity_cb (IdentityManagerView* self, IdCardWidget* id_card_widget);
+GType add_identity_dialog_get_type (void) G_GNUC_CONST;
+static IdCard* identity_manager_view_get_id_card_data (IdentityManagerView* self, AddIdentityDialog* dialog);
+IdCard* id_card_new (void);
+IdCard* id_card_construct (GType object_type);
+const char* add_identity_dialog_get_display_name (AddIdentityDialog* self);
+void id_card_set_display_name (IdCard* self, const char* value);
+const char* add_identity_dialog_get_issuer (AddIdentityDialog* self);
+void id_card_set_issuer (IdCard* self, const char* value);
+const char* add_identity_dialog_get_username (AddIdentityDialog* self);
+void id_card_set_username (IdCard* self, const char* value);
+const char* add_identity_dialog_get_password (AddIdentityDialog* self);
+void id_card_set_password (IdCard* self, const char* value);
+void id_card_set_services (IdCard* self, char** value, int value_length1);
+GdkPixbuf* find_icon (const char* name, gint size);
+static void identity_manager_view_remove_id_card_data (IdentityManagerView* self, IdCard* id_card);
+IdCardWidget* id_card_widget_new (IdCard* id_card);
+IdCardWidget* id_card_widget_construct (GType object_type, IdCard* id_card);
+void custom_vbox_add_id_card_widget (CustomVBox* self, IdCardWidget* id_card_widget);
+static void _identity_manager_view_details_identity_cb_id_card_widget_details_id (IdCardWidget* _sender, gpointer self);
+static void identity_manager_view_remove_identity_cb (IdentityManagerView* self, IdCardWidget* id_card_widget);
+static void _identity_manager_view_remove_identity_cb_id_card_widget_remove_id (IdCardWidget* _sender, gpointer self);
+static void _lambda2_ (IdCardWidget* w, IdentityManagerView* self);
+void identity_manager_view_send_identity_cb (IdentityManagerView* self, IdCard* identity);
+static void __lambda2__id_card_widget_send_id (IdCardWidget* _sender, gpointer self);
+void custom_vbox_receive_expanded_event (CustomVBox* self, IdCardWidget* id_card_widget);
+static void _custom_vbox_receive_expanded_event_id_card_widget_expanded (IdCardWidget* _sender, gpointer self);
+static void _identity_manager_view_fill_details_id_card_widget_expanded (IdCardWidget* _sender, gpointer self);
+gboolean identity_manager_view_display_name_is_valid (IdentityManagerView* self, const char* name, char** candidate);
+void identity_manager_view_insert_id_card (IdentityManagerView* self, IdCard* id_card);
+void identity_manager_model_add_card (IdentityManagerModel* self, IdCard* card);
+gboolean identity_manager_view_add_identity (IdentityManagerView* self, IdCard* id_card);
+static void identity_manager_view_add_identity_manual_cb (IdentityManagerView* self);
+AddIdentityDialog* add_identity_dialog_new (void);
+AddIdentityDialog* add_identity_dialog_construct (GType object_type);
+void custom_vbox_remove_id_card_widget (CustomVBox* self, IdCardWidget* id_card_widget);
+static void identity_manager_view_remove_identity (IdentityManagerView* self, IdCardWidget* id_card_widget);
+void identity_manager_model_remove_card (IdentityManagerModel* self, IdCard* card);
+void identity_manager_view_select_identity (IdentityManagerView* self, IdentityRequest* request);
+IdCardWidget* custom_vbox_get_current_idcard (CustomVBox* self);
+GtkButton* id_card_widget_get_send_button (IdCardWidget* self);
+const char* id_card_get_nai (IdCard* self);
+static void _g_slist_free_g_free (GSList* self);
+GType rule_get_type (void) G_GNUC_CONST;
+Rule* rule_dup (const Rule* self);
+void rule_free (Rule* self);
+void rule_copy (const Rule* self, Rule* dest);
+void rule_destroy (Rule* self);
+Rule* id_card_get_rules (IdCard* self, int* result_length1);
+static gboolean identity_manager_view_match_service_pattern (IdentityManagerView* self, const char* service, const char* pattern);
+static gboolean _lambda3_ (Block1Data* _data1_);
+static gboolean __lambda3__gsource_func (gpointer self);
+static Block1Data* block1_data_ref (Block1Data* _data1_);
+static void block1_data_unref (Block1Data* _data1_);
+AddPasswordDialog* add_password_dialog_new (void);
+AddPasswordDialog* add_password_dialog_construct (GType object_type);
+GType add_password_dialog_get_type (void) G_GNUC_CONST;
+const char* add_password_dialog_get_password (AddPasswordDialog* self);
+gboolean add_password_dialog_get_remember (AddPasswordDialog* self);
+void identity_request_return_identity (IdentityRequest* self, IdCard* id_card);
+static void identity_manager_view_label_make_bold (IdentityManagerView* self, GtkLabel* label);
+static void _lambda1_ (GtkButton* remove_button, IdentityManagerView* self);
+void id_card_widget_update_id_card_label (IdCardWidget* self);
+static void __lambda1__gtk_button_clicked (GtkButton* _sender, gpointer self);
+static void identity_manager_view_on_about_action (IdentityManagerView* self);
+static GtkActionEntry* identity_manager_view_create_actions (IdentityManagerView* self, int* result_length1);
+static void _vala_array_add1 (GtkActionEntry** array, int* length, int* size, const GtkActionEntry* value);
+static void _identity_manager_view_add_identity_manual_cb_gtk_action_callback (GtkAction* action, gpointer self);
+static void _vala_array_add2 (GtkActionEntry** array, int* length, int* size, const GtkActionEntry* value);
+static void _gtk_main_quit_gtk_action_callback (GtkAction* action, gpointer self);
+static void _vala_array_add3 (GtkActionEntry** array, int* length, int* size, const GtkActionEntry* value);
+static void _vala_array_add4 (GtkActionEntry** array, int* length, int* size, const GtkActionEntry* value);
+static void _identity_manager_view_on_about_action_gtk_action_callback (GtkAction* action, gpointer self);
+static void _vala_array_add5 (GtkActionEntry** array, int* length, int* size, const GtkActionEntry* value);
+static void identity_manager_view_create_ui_manager (IdentityManagerView* self);
+static void identity_manager_view_set_atk_name_description (IdentityManagerView* self, GtkWidget* widget, const char* name, const char* description);
+GdkPixbuf* find_icon_sized (const char* name, GtkIconSize icon_size);
+static void _identity_manager_view_search_entry_icon_press_cb_gtk_entry_icon_press (GtkEntry* _sender, GtkEntryIconPosition p0, GdkEvent* p1, gpointer self);
+static void _identity_manager_view_search_entry_text_changed_cb_g_object_notify (GObject* _sender, GParamSpec* pspec, gpointer self);
+static gboolean _identity_manager_view_search_entry_key_press_event_cb_gtk_widget_key_press_event (GtkWidget* _sender, GdkEventKey* event, gpointer self);
+CustomVBox* custom_vbox_new (IdentityManagerView* window, gboolean homogeneous, gint spacing);
+CustomVBox* custom_vbox_construct (GType object_type, IdentityManagerView* window, gboolean homogeneous, gint spacing);
+static void _gtk_main_quit_gtk_object_destroy (GtkObject* _sender, gpointer self);
+static void _identity_manager_view_on_card_list_changed_identity_manager_model_card_list_changed (IdentityManagerModel* _sender, gpointer self);
+static void identity_manager_view_finalize (GObject* obj);
+static void _vala_array_destroy (gpointer array, gint array_length, GDestroyNotify destroy_func);
+static void _vala_array_free (gpointer array, gint array_length, GDestroyNotify destroy_func);
+static gint _vala_array_length (gpointer array);
+static int _vala_strcmp0 (const char * str1, const char * str2);
+
+
+
+static GType identity_manager_view_columns_get_type (void) {
+       static volatile gsize identity_manager_view_columns_type_id__volatile = 0;
+       if (g_once_init_enter (&identity_manager_view_columns_type_id__volatile)) {
+               static const GEnumValue values[] = {{IDENTITY_MANAGER_VIEW_COLUMNS_IDCARD_COL, "IDENTITY_MANAGER_VIEW_COLUMNS_IDCARD_COL", "idcard-col"}, {IDENTITY_MANAGER_VIEW_COLUMNS_LOGO_COL, "IDENTITY_MANAGER_VIEW_COLUMNS_LOGO_COL", "logo-col"}, {IDENTITY_MANAGER_VIEW_COLUMNS_ISSUER_COL, "IDENTITY_MANAGER_VIEW_COLUMNS_ISSUER_COL", "issuer-col"}, {IDENTITY_MANAGER_VIEW_COLUMNS_USERNAME_COL, "IDENTITY_MANAGER_VIEW_COLUMNS_USERNAME_COL", "username-col"}, {IDENTITY_MANAGER_VIEW_COLUMNS_PASSWORD_COL, "IDENTITY_MANAGER_VIEW_COLUMNS_PASSWORD_COL", "password-col"}, {IDENTITY_MANAGER_VIEW_COLUMNS_N_COLUMNS, "IDENTITY_MANAGER_VIEW_COLUMNS_N_COLUMNS", "n-columns"}, {0, NULL, NULL}};
+               GType identity_manager_view_columns_type_id;
+               identity_manager_view_columns_type_id = g_enum_register_static ("IdentityManagerViewColumns", values);
+               g_once_init_leave (&identity_manager_view_columns_type_id__volatile, identity_manager_view_columns_type_id);
+       }
+       return identity_manager_view_columns_type_id__volatile;
+}
+
+
+static void _g_slist_free_g_object_unref (GSList* self) {
+       g_slist_foreach (self, (GFunc) g_object_unref, NULL);
+       g_slist_free (self);
+}
+
+
+static gpointer _g_object_ref0 (gpointer self) {
+       return self ? g_object_ref (self) : NULL;
+}
+
+
+IdentityManagerView* identity_manager_view_construct (GType object_type, IdentityManagerApp* app) {
+       IdentityManagerView * self;
+       IdentityManagerApp* _tmp0_;
+       IdentityManagerModel* _tmp1_;
+       GQueue* _tmp2_;
+       GHashTable* _tmp3_;
+       g_return_val_if_fail (app != NULL, NULL);
+       self = g_object_newv (object_type, 0, NULL);
+       self->parent_app = (_tmp0_ = _g_object_ref0 (app), _g_object_unref0 (self->parent_app), _tmp0_);
+       self->identities_manager = (_tmp1_ = _g_object_ref0 (self->parent_app->model), _g_object_unref0 (self->identities_manager), _tmp1_);
+       self->request_queue = (_tmp2_ = g_queue_new (), _g_queue_free0 (self->request_queue), _tmp2_);
+       self->priv->service_button_map = (_tmp3_ = g_hash_table_new_full (g_direct_hash, g_direct_equal, g_object_unref, g_free), _g_hash_table_unref0 (self->priv->service_button_map), _tmp3_);
+       gtk_window_set_title ((GtkWindow*) self, "Moonshoot");
+       gtk_window_set_position ((GtkWindow*) self, GTK_WIN_POS_CENTER);
+       gtk_window_set_default_size ((GtkWindow*) self, IDENTITY_MANAGER_VIEW_WINDOW_WIDTH, IDENTITY_MANAGER_VIEW_WINDOW_HEIGHT);
+       identity_manager_view_build_ui (self);
+       identity_manager_view_setup_list_model (self);
+       identity_manager_view_load_id_cards (self);
+       identity_manager_view_connect_signals (self);
+       return self;
+}
+
+
+IdentityManagerView* identity_manager_view_new (IdentityManagerApp* app) {
+       return identity_manager_view_construct (TYPE_IDENTITY_MANAGER_VIEW, app);
+}
+
+
+void identity_manager_view_on_card_list_changed (IdentityManagerView* self) {
+       g_return_if_fail (self != NULL);
+       identity_manager_view_load_id_cards (self);
+}
+
+
+void identity_manager_view_add_candidate (IdentityManagerView* self, IdCard* idcard) {
+       g_return_if_fail (self != NULL);
+       g_return_if_fail (idcard != NULL);
+       self->priv->candidates = g_slist_append (self->priv->candidates, _g_object_ref0 (idcard));
+}
+
+
+static gboolean string_contains (const char* self, const char* needle) {
+       gboolean result = FALSE;
+       g_return_val_if_fail (self != NULL, FALSE);
+       g_return_val_if_fail (needle != NULL, FALSE);
+       result = strstr (self, needle) != NULL;
+       return result;
+}
+
+
+static gboolean identity_manager_view_visible_func (IdentityManagerView* self, GtkTreeModel* model, GtkTreeIter* iter) {
+       gboolean result = FALSE;
+       IdCard* id_card;
+       char* entry_text;
+       gboolean _tmp0_ = FALSE;
+       g_return_val_if_fail (self != NULL, FALSE);
+       g_return_val_if_fail (model != NULL, FALSE);
+       id_card = NULL;
+       gtk_tree_model_get (model, iter, IDENTITY_MANAGER_VIEW_COLUMNS_IDCARD_COL, &id_card, -1);
+       if (id_card == NULL) {
+               result = FALSE;
+               _g_object_unref0 (id_card);
+               return result;
+       }
+       if (self->priv->candidates != NULL) {
+               gboolean is_candidate;
+               is_candidate = FALSE;
+               {
+                       GSList* candidate_collection;
+                       GSList* candidate_it;
+                       candidate_collection = self->priv->candidates;
+                       for (candidate_it = candidate_collection; candidate_it != NULL; candidate_it = candidate_it->next) {
+                               IdCard* candidate;
+                               candidate = _g_object_ref0 ((IdCard*) candidate_it->data);
+                               {
+                                       if (candidate == id_card) {
+                                               is_candidate = TRUE;
+                                       }
+                                       _g_object_unref0 (candidate);
+                               }
+                       }
+               }
+               if (!is_candidate) {
+                       result = FALSE;
+                       _g_object_unref0 (id_card);
+                       return result;
+               }
+       }
+       entry_text = g_strdup (gtk_entry_get_text (self->priv->search_entry));
+       if (entry_text == NULL) {
+               _tmp0_ = TRUE;
+       } else {
+               _tmp0_ = _vala_strcmp0 (entry_text, "") == 0;
+       }
+       if (_tmp0_) {
+               result = TRUE;
+               _g_free0 (entry_text);
+               _g_object_unref0 (id_card);
+               return result;
+       }
+       {
+               char** _tmp1_;
+               char** search_text_collection;
+               int search_text_collection_length1;
+               int search_text_it;
+               search_text_collection = _tmp1_ = g_strsplit (entry_text, " ", 0);
+               search_text_collection_length1 = _vala_array_length (_tmp1_);
+               for (search_text_it = 0; search_text_it < _vala_array_length (_tmp1_); search_text_it = search_text_it + 1) {
+                       char* search_text;
+                       search_text = g_strdup (search_text_collection[search_text_it]);
+                       {
+                               char* search_text_casefold;
+                               gint _tmp2_;
+                               if (_vala_strcmp0 (search_text, "") == 0) {
+                                       _g_free0 (search_text);
+                                       continue;
+                               }
+                               search_text_casefold = g_utf8_casefold (search_text, -1);
+                               if (id_card_get_issuer (id_card) != NULL) {
+                                       char* issuer_casefold;
+                                       issuer_casefold = g_strdup (id_card_get_issuer (id_card));
+                                       if (string_contains (issuer_casefold, search_text_casefold)) {
+                                               result = TRUE;
+                                               _g_free0 (issuer_casefold);
+                                               _g_free0 (search_text_casefold);
+                                               _g_free0 (search_text);
+                                               search_text_collection = (_vala_array_free (search_text_collection, search_text_collection_length1, (GDestroyNotify) g_free), NULL);
+                                               _g_free0 (entry_text);
+                                               _g_object_unref0 (id_card);
+                                               return result;
+                                       }
+                                       _g_free0 (issuer_casefold);
+                               }
+                               if (id_card_get_display_name (id_card) != NULL) {
+                                       char* display_name_casefold;
+                                       display_name_casefold = g_utf8_casefold (id_card_get_display_name (id_card), -1);
+                                       if (string_contains (display_name_casefold, search_text_casefold)) {
+                                               result = TRUE;
+                                               _g_free0 (display_name_casefold);
+                                               _g_free0 (search_text_casefold);
+                                               _g_free0 (search_text);
+                                               search_text_collection = (_vala_array_free (search_text_collection, search_text_collection_length1, (GDestroyNotify) g_free), NULL);
+                                               _g_free0 (entry_text);
+                                               _g_object_unref0 (id_card);
+                                               return result;
+                                       }
+                                       _g_free0 (display_name_casefold);
+                               }
+                               if (_tmp2_ > 0) {
+                                       {
+                                               gint _tmp3_;
+                                               char** service_collection;
+                                               int service_collection_length1;
+                                               int service_it;
+                                               service_collection = id_card_get_services (id_card, &_tmp3_);
+                                               service_collection_length1 = _tmp3_;
+                                               for (service_it = 0; service_it < _tmp3_; service_it = service_it + 1) {
+                                                       char* service;
+                                                       service = g_strdup (service_collection[service_it]);
+                                                       {
+                                                               char* service_casefold;
+                                                               service_casefold = g_utf8_casefold (service, -1);
+                                                               if (string_contains (service_casefold, search_text_casefold)) {
+                                                                       result = TRUE;
+                                                                       _g_free0 (service_casefold);
+                                                                       _g_free0 (service);
+                                                                       _g_free0 (search_text_casefold);
+                                                                       _g_free0 (search_text);
+                                                                       search_text_collection = (_vala_array_free (search_text_collection, search_text_collection_length1, (GDestroyNotify) g_free), NULL);
+                                                                       _g_free0 (entry_text);
+                                                                       _g_object_unref0 (id_card);
+                                                                       return result;
+                                                               }
+                                                               _g_free0 (service_casefold);
+                                                               _g_free0 (service);
+                                                       }
+                                               }
+                                       }
+                               }
+                               _g_free0 (search_text_casefold);
+                               _g_free0 (search_text);
+                       }
+               }
+               search_text_collection = (_vala_array_free (search_text_collection, search_text_collection_length1, (GDestroyNotify) g_free), NULL);
+       }
+       result = FALSE;
+       _g_free0 (entry_text);
+       _g_object_unref0 (id_card);
+       return result;
+}
+
+
+static gboolean _identity_manager_view_visible_func_gtk_tree_model_filter_visible_func (GtkTreeModel* model, GtkTreeIter* iter, gpointer self) {
+       gboolean result;
+       result = identity_manager_view_visible_func (self, model, iter);
+       return result;
+}
+
+
+static void identity_manager_view_setup_list_model (IdentityManagerView* self) {
+       GtkTreeModelFilter* _tmp0_;
+       g_return_if_fail (self != NULL);
+       self->priv->listmodel = gtk_list_store_new ((gint) IDENTITY_MANAGER_VIEW_COLUMNS_N_COLUMNS, TYPE_ID_CARD, GDK_TYPE_PIXBUF, G_TYPE_STRING, G_TYPE_STRING, G_TYPE_STRING);
+       self->priv->filter = (_tmp0_ = (GtkTreeModelFilter*) gtk_tree_model_filter_new ((GtkTreeModel*) self->priv->listmodel, NULL), _g_object_unref0 (self->priv->filter), _tmp0_);
+       gtk_tree_model_filter_set_visible_func (self->priv->filter, _identity_manager_view_visible_func_gtk_tree_model_filter_visible_func, g_object_ref (self), g_object_unref);
+}
+
+
+static void identity_manager_view_search_entry_icon_press_cb (IdentityManagerView* self, GtkEntryIconPosition pos, GdkEvent* event) {
+       g_return_if_fail (self != NULL);
+       g_return_if_fail (event != NULL);
+       if (pos == GTK_ENTRY_ICON_PRIMARY) {
+               g_print ("Search entry icon pressed\n");
+       } else {
+               gtk_entry_set_text (self->priv->search_entry, "");
+       }
+}
+
+
+static void identity_manager_view_search_entry_text_changed_cb (IdentityManagerView* self) {
+       gboolean has_text;
+       g_return_if_fail (self != NULL);
+       gtk_tree_model_filter_refilter (self->priv->filter);
+       identity_manager_view_redraw_id_card_widgets (self);
+       has_text = gtk_entry_get_text_length (self->priv->search_entry) > 0;
+       gtk_entry_set_icon_sensitive (self->priv->search_entry, GTK_ENTRY_ICON_PRIMARY, has_text);
+       gtk_entry_set_icon_sensitive (self->priv->search_entry, GTK_ENTRY_ICON_SECONDARY, has_text);
+       gtk_widget_set_visible ((GtkWidget*) self->priv->vbox_right, FALSE);
+}
+
+
+static gboolean identity_manager_view_search_entry_key_press_event_cb (IdentityManagerView* self, GdkEventKey* e) {
+       gboolean result = FALSE;
+       g_return_val_if_fail (self != NULL, FALSE);
+       if (_vala_strcmp0 (gdk_keyval_name ((*e).keyval), "Escape") == 0) {
+               gtk_entry_set_text (self->priv->search_entry, "");
+       }
+       result = FALSE;
+       return result;
+}
+
+
+static void identity_manager_view_load_id_cards (IdentityManagerView* self) {
+       GList* children;
+       IdCard* _tmp0_;
+       GeeLinkedList* card_list;
+       g_return_if_fail (self != NULL);
+       children = gtk_container_get_children ((GtkContainer*) self->priv->custom_vbox);
+       {
+               GList* id_card_widget_collection;
+               GList* id_card_widget_it;
+               id_card_widget_collection = children;
+               for (id_card_widget_it = id_card_widget_collection; id_card_widget_it != NULL; id_card_widget_it = id_card_widget_it->next) {
+                       GtkWidget* id_card_widget;
+                       id_card_widget = (GtkWidget*) id_card_widget_it->data;
+                       {
+                               identity_manager_view_remove_id_card_widget (self, ID_CARD_WIDGET (id_card_widget));
+                       }
+               }
+       }
+       self->priv->default_id_card = (_tmp0_ = NULL, _g_object_unref0 (self->priv->default_id_card), _tmp0_);
+       card_list = identity_manager_model_get_card_list (self->identities_manager);
+       if (card_list == NULL) {
+               _g_object_unref0 (card_list);
+               _g_list_free0 (children);
+               return;
+       }
+       {
+               GeeIterator* _id_card_it;
+               _id_card_it = gee_abstract_collection_iterator ((GeeAbstractCollection*) card_list);
+               while (TRUE) {
+                       IdCard* id_card;
+                       if (!gee_iterator_next (_id_card_it)) {
+                               break;
+                       }
+                       id_card = (IdCard*) gee_iterator_get (_id_card_it);
+                       identity_manager_view_add_id_card_data (self, id_card);
+                       identity_manager_view_add_id_card_widget (self, id_card);
+                       _g_object_unref0 (id_card);
+               }
+               _g_object_unref0 (_id_card_it);
+       }
+       if (gee_collection_get_size ((GeeCollection*) card_list) > 0) {
+               IdCard* _tmp1_;
+               self->priv->default_id_card = (_tmp1_ = (IdCard*) gee_abstract_list_first ((GeeAbstractList*) card_list), _g_object_unref0 (self->priv->default_id_card), _tmp1_);
+       }
+       _g_object_unref0 (card_list);
+       _g_list_free0 (children);
+}
+
+
+static void identity_manager_view_fill_details (IdentityManagerView* self, IdCardWidget* id_card_widget) {
+       IdCard* id_card;
+       char* _tmp0_;
+       GList* children;
+       g_return_if_fail (self != NULL);
+       g_return_if_fail (id_card_widget != NULL);
+       id_card = _g_object_ref0 (id_card_widget_get_id_card (id_card_widget));
+       gtk_entry_set_text (self->priv->username_entry, id_card_get_username (id_card));
+       _tmp0_ = g_strdup (id_card_get_password (id_card));
+       if (_tmp0_ == NULL) {
+               char* _tmp1_;
+               _tmp0_ = (_tmp1_ = g_strdup (""), _g_free0 (_tmp0_), _tmp1_);
+       }
+       gtk_entry_set_text (self->priv->password_entry, _tmp0_);
+       children = gtk_container_get_children ((GtkContainer*) self->priv->services_internal_vbox);
+       {
+               GList* hbox_collection;
+               GList* hbox_it;
+               hbox_collection = children;
+               for (hbox_it = hbox_collection; hbox_it != NULL; hbox_it = hbox_it->next) {
+                       GtkWidget* hbox;
+                       hbox = (GtkWidget*) hbox_it->data;
+                       {
+                               gtk_object_destroy ((GtkObject*) hbox);
+                       }
+               }
+       }
+       identity_manager_view_fill_services_vbox (self, id_card_widget_get_id_card (id_card_widget));
+       _g_list_free0 (children);
+       _g_free0 (_tmp0_);
+       _g_object_unref0 (id_card);
+}
+
+
+static void identity_manager_view_show_details (IdentityManagerView* self, IdCard* id_card) {
+       g_return_if_fail (self != NULL);
+       g_return_if_fail (id_card != NULL);
+       gtk_widget_set_visible ((GtkWidget*) self->priv->vbox_right, !gtk_widget_get_visible ((GtkWidget*) self->priv->vbox_right));
+       if (gtk_widget_get_visible ((GtkWidget*) self->priv->vbox_right) == FALSE) {
+               gtk_window_resize ((GtkWindow*) self, IDENTITY_MANAGER_VIEW_WINDOW_WIDTH, IDENTITY_MANAGER_VIEW_WINDOW_HEIGHT);
+       }
+}
+
+
+static void identity_manager_view_details_identity_cb (IdentityManagerView* self, IdCardWidget* id_card_widget) {
+       g_return_if_fail (self != NULL);
+       g_return_if_fail (id_card_widget != NULL);
+       identity_manager_view_fill_details (self, id_card_widget);
+       identity_manager_view_show_details (self, id_card_widget_get_id_card (id_card_widget));
+}
+
+
+static IdCard* identity_manager_view_get_id_card_data (IdentityManagerView* self, AddIdentityDialog* dialog) {
+       IdCard* result = NULL;
+       IdCard* id_card;
+       char** _tmp0_ = NULL;
+       char** _tmp1_;
+       gint _tmp1__length1;
+       char** _tmp2_;
+       g_return_val_if_fail (self != NULL, NULL);
+       g_return_val_if_fail (dialog != NULL, NULL);
+       id_card = id_card_new ();
+       id_card_set_display_name (id_card, add_identity_dialog_get_display_name (dialog));
+       id_card_set_issuer (id_card, add_identity_dialog_get_issuer (dialog));
+       if (_vala_strcmp0 (id_card_get_issuer (id_card), "") == 0) {
+               id_card_set_issuer (id_card, "Issuer");
+       }
+       id_card_set_username (id_card, add_identity_dialog_get_username (dialog));
+       id_card_set_password (id_card, add_identity_dialog_get_password (dialog));
+       _tmp2_ = (_tmp1_ = (_tmp0_ = g_new0 (char*, 0 + 1), _tmp0_), _tmp1__length1 = 0, _tmp1_);
+       id_card_set_services (id_card, _tmp2_, 0);
+       _tmp1_ = (_vala_array_free (_tmp1_, _tmp1__length1, (GDestroyNotify) g_free), NULL);
+       g_object_set_data_full ((GObject*) id_card, "pixbuf", find_icon ("avatar-default", 48), g_object_unref);
+       result = id_card;
+       return result;
+}
+
+
+static void identity_manager_view_add_id_card_data (IdentityManagerView* self, IdCard* id_card) {
+       GtkTreeIter iter = {0};
+       GdkPixbuf* pixbuf;
+       GdkPixbuf* _tmp0_;
+       g_return_if_fail (self != NULL);
+       g_return_if_fail (id_card != NULL);
+       pixbuf = NULL;
+       gtk_list_store_append (self->priv->listmodel, &iter);
+       pixbuf = (_tmp0_ = _g_object_ref0 ((GdkPixbuf*) g_object_get_data ((GObject*) id_card, "pixbuf")), _g_object_unref0 (pixbuf), _tmp0_);
+       gtk_list_store_set (self->priv->listmodel, &iter, IDENTITY_MANAGER_VIEW_COLUMNS_IDCARD_COL, id_card, IDENTITY_MANAGER_VIEW_COLUMNS_LOGO_COL, pixbuf, IDENTITY_MANAGER_VIEW_COLUMNS_ISSUER_COL, id_card_get_issuer (id_card), IDENTITY_MANAGER_VIEW_COLUMNS_USERNAME_COL, id_card_get_username (id_card), IDENTITY_MANAGER_VIEW_COLUMNS_PASSWORD_COL, id_card_get_password (id_card), -1);
+       _g_object_unref0 (pixbuf);
+}
+
+
+static void identity_manager_view_remove_id_card_data (IdentityManagerView* self, IdCard* id_card) {
+       GtkTreeIter iter = {0};
+       char* issuer;
+       g_return_if_fail (self != NULL);
+       g_return_if_fail (id_card != NULL);
+       issuer = NULL;
+       if (gtk_tree_model_get_iter_first ((GtkTreeModel*) self->priv->listmodel, &iter)) {
+               {
+                       gboolean _tmp0_;
+                       _tmp0_ = TRUE;
+                       while (TRUE) {
+                               if (!_tmp0_) {
+                                       if (!gtk_tree_model_iter_next ((GtkTreeModel*) self->priv->listmodel, &iter)) {
+                                               break;
+                                       }
+                               }
+                               _tmp0_ = FALSE;
+                               gtk_tree_model_get ((GtkTreeModel*) self->priv->listmodel, &iter, IDENTITY_MANAGER_VIEW_COLUMNS_ISSUER_COL, &issuer, -1);
+                               if (_vala_strcmp0 (id_card_get_issuer (id_card), issuer) == 0) {
+                                       gtk_list_store_remove (self->priv->listmodel, &iter);
+                                       break;
+                               }
+                       }
+               }
+       }
+       _g_free0 (issuer);
+}
+
+
+static void _identity_manager_view_details_identity_cb_id_card_widget_details_id (IdCardWidget* _sender, gpointer self) {
+       identity_manager_view_details_identity_cb (self, _sender);
+}
+
+
+static void _identity_manager_view_remove_identity_cb_id_card_widget_remove_id (IdCardWidget* _sender, gpointer self) {
+       identity_manager_view_remove_identity_cb (self, _sender);
+}
+
+
+static void _lambda2_ (IdCardWidget* w, IdentityManagerView* self) {
+       g_return_if_fail (w != NULL);
+       identity_manager_view_send_identity_cb (self, id_card_widget_get_id_card (w));
+}
+
+
+static void __lambda2__id_card_widget_send_id (IdCardWidget* _sender, gpointer self) {
+       _lambda2_ (_sender, self);
+}
+
+
+static void _custom_vbox_receive_expanded_event_id_card_widget_expanded (IdCardWidget* _sender, gpointer self) {
+       custom_vbox_receive_expanded_event (self, _sender);
+}
+
+
+static void _identity_manager_view_fill_details_id_card_widget_expanded (IdCardWidget* _sender, gpointer self) {
+       identity_manager_view_fill_details (self, _sender);
+}
+
+
+static void identity_manager_view_add_id_card_widget (IdentityManagerView* self, IdCard* id_card) {
+       IdCardWidget* id_card_widget;
+       g_return_if_fail (self != NULL);
+       g_return_if_fail (id_card != NULL);
+       id_card_widget = g_object_ref_sink (id_card_widget_new (id_card));
+       custom_vbox_add_id_card_widget (self->priv->custom_vbox, id_card_widget);
+       g_signal_connect_object (id_card_widget, "details-id", (GCallback) _identity_manager_view_details_identity_cb_id_card_widget_details_id, self, 0);
+       g_signal_connect_object (id_card_widget, "remove-id", (GCallback) _identity_manager_view_remove_identity_cb_id_card_widget_remove_id, self, 0);
+       g_signal_connect_object (id_card_widget, "send-id", (GCallback) __lambda2__id_card_widget_send_id, self, 0);
+       g_signal_connect_object (id_card_widget, "expanded", (GCallback) _custom_vbox_receive_expanded_event_id_card_widget_expanded, self->priv->custom_vbox, 0);
+       g_signal_connect_object (id_card_widget, "expanded", (GCallback) _identity_manager_view_fill_details_id_card_widget_expanded, self, 0);
+       _g_object_unref0 (id_card_widget);
+}
+
+
+gboolean identity_manager_view_display_name_is_valid (IdentityManagerView* self, const char* name, char** candidate) {
+       gboolean result = FALSE;
+       g_return_val_if_fail (self != NULL, FALSE);
+       g_return_val_if_fail (name != NULL, FALSE);
+       if (candidate != NULL) {
+               *candidate = NULL;
+       }
+       {
+               GeeLinkedList* _tmp0_;
+               GeeIterator* _tmp1_;
+               GeeIterator* _id_card_it;
+               _id_card_it = (_tmp1_ = gee_abstract_collection_iterator ((GeeAbstractCollection*) (_tmp0_ = identity_manager_model_get_card_list (self->identities_manager))), _g_object_unref0 (_tmp0_), _tmp1_);
+               while (TRUE) {
+                       IdCard* id_card;
+                       if (!gee_iterator_next (_id_card_it)) {
+                               break;
+                       }
+                       id_card = (IdCard*) gee_iterator_get (_id_card_it);
+                       if (_vala_strcmp0 (id_card_get_display_name (id_card), name) == 0) {
+                               if ((candidate) != NULL) {
+                                       {
+                                               gint i;
+                                               i = 0;
+                                               {
+                                                       gboolean _tmp2_;
+                                                       _tmp2_ = TRUE;
+                                                       while (TRUE) {
+                                                               char* tmp;
+                                                               if (!_tmp2_) {
+                                                                       i++;
+                                                               }
+                                                               _tmp2_ = FALSE;
+                                                               if (!(i < 1000)) {
+                                                                       break;
+                                                               }
+                                                               tmp = g_strdup_printf ("%s %d", name, i);
+                                                               if (identity_manager_view_display_name_is_valid (self, tmp, NULL)) {
+                                                                       char* _tmp3_;
+                                                                       *candidate = (_tmp3_ = g_strdup (tmp), _g_free0 (*candidate), _tmp3_);
+                                                                       _g_free0 (tmp);
+                                                                       break;
+                                                               }
+                                                               _g_free0 (tmp);
+                                                       }
+                                               }
+                                       }
+                               }
+                               result = FALSE;
+                               _g_object_unref0 (id_card);
+                               _g_object_unref0 (_id_card_it);
+                               return result;
+                       }
+                       _g_object_unref0 (id_card);
+               }
+               _g_object_unref0 (_id_card_it);
+       }
+       result = TRUE;
+       return result;
+}
+
+
+void identity_manager_view_insert_id_card (IdentityManagerView* self, IdCard* id_card) {
+       char* candidate;
+       char* _tmp0_ = NULL;
+       gboolean _tmp1_;
+       char* _tmp2_;
+       g_return_if_fail (self != NULL);
+       g_return_if_fail (id_card != NULL);
+       candidate = NULL;
+       if (!(_tmp1_ = identity_manager_view_display_name_is_valid (self, id_card_get_display_name (id_card), &_tmp0_), candidate = (_tmp2_ = _tmp0_, _g_free0 (candidate), _tmp2_), _tmp1_)) {
+               id_card_set_display_name (id_card, candidate);
+       }
+       identity_manager_model_add_card (self->identities_manager, id_card);
+       _g_free0 (candidate);
+}
+
+
+gboolean identity_manager_view_add_identity (IdentityManagerView* self, IdCard* id_card) {
+       gboolean result = FALSE;
+       GtkMessageDialog* dialog;
+       gint ret;
+       g_return_val_if_fail (self != NULL, FALSE);
+       g_return_val_if_fail (id_card != NULL, FALSE);
+       dialog = g_object_ref_sink ((GtkMessageDialog*) gtk_message_dialog_new ((GtkWindow*) self, GTK_DIALOG_DESTROY_WITH_PARENT, GTK_MESSAGE_QUESTION, GTK_BUTTONS_YES_NO, _ ("Would you like to add '%s' ID Card to the ID Card Organizer?"), id_card_get_display_name (id_card)));
+       gtk_widget_show_all ((GtkWidget*) dialog);
+       ret = gtk_dialog_run ((GtkDialog*) dialog);
+       gtk_widget_hide ((GtkWidget*) dialog);
+       if (ret == GTK_RESPONSE_YES) {
+               g_object_set_data_full ((GObject*) id_card, "pixbuf", find_icon ("avatar-default", 48), g_object_unref);
+               identity_manager_view_insert_id_card (self, id_card);
+               result = TRUE;
+               _g_object_unref0 (dialog);
+               return result;
+       }
+       result = FALSE;
+       _g_object_unref0 (dialog);
+       return result;
+}
+
+
+static void identity_manager_view_add_identity_manual_cb (IdentityManagerView* self) {
+       AddIdentityDialog* dialog;
+       gint _result_;
+       g_return_if_fail (self != NULL);
+       dialog = g_object_ref_sink (add_identity_dialog_new ());
+       _result_ = gtk_dialog_run ((GtkDialog*) dialog);
+       switch (_result_) {
+               case GTK_RESPONSE_OK:
+               {
+                       IdCard* _tmp0_;
+                       identity_manager_view_insert_id_card (self, _tmp0_ = identity_manager_view_get_id_card_data (self, dialog));
+                       _g_object_unref0 (_tmp0_);
+                       break;
+               }
+               default:
+               {
+                       break;
+               }
+       }
+       gtk_object_destroy ((GtkObject*) dialog);
+       _g_object_unref0 (dialog);
+}
+
+
+static void identity_manager_view_remove_id_card_widget (IdentityManagerView* self, IdCardWidget* id_card_widget) {
+       g_return_if_fail (self != NULL);
+       g_return_if_fail (id_card_widget != NULL);
+       custom_vbox_remove_id_card_widget (self->priv->custom_vbox, id_card_widget);
+}
+
+
+static void identity_manager_view_remove_identity (IdentityManagerView* self, IdCardWidget* id_card_widget) {
+       IdCard* id_card;
+       g_return_if_fail (self != NULL);
+       g_return_if_fail (id_card_widget != NULL);
+       id_card = _g_object_ref0 (id_card_widget_get_id_card (id_card_widget));
+       identity_manager_view_remove_id_card_widget (self, id_card_widget);
+       identity_manager_model_remove_card (self->identities_manager, id_card);
+       _g_object_unref0 (id_card);
+}
+
+
+static void identity_manager_view_redraw_id_card_widgets (IdentityManagerView* self) {
+       GtkTreeIter iter = {0};
+       IdCard* id_card;
+       GList* children;
+       g_return_if_fail (self != NULL);
+       id_card = NULL;
+       children = gtk_container_get_children ((GtkContainer*) self->priv->custom_vbox);
+       {
+               GList* id_card_widget_collection;
+               GList* id_card_widget_it;
+               id_card_widget_collection = children;
+               for (id_card_widget_it = id_card_widget_collection; id_card_widget_it != NULL; id_card_widget_it = id_card_widget_it->next) {
+                       GtkWidget* id_card_widget;
+                       id_card_widget = (GtkWidget*) id_card_widget_it->data;
+                       {
+                               gtk_object_destroy ((GtkObject*) id_card_widget);
+                       }
+               }
+       }
+       if (gtk_tree_model_get_iter_first ((GtkTreeModel*) self->priv->filter, &iter)) {
+               {
+                       gboolean _tmp0_;
+                       _tmp0_ = TRUE;
+                       while (TRUE) {
+                               if (!_tmp0_) {
+                                       if (!gtk_tree_model_iter_next ((GtkTreeModel*) self->priv->filter, &iter)) {
+                                               break;
+                                       }
+                               }
+                               _tmp0_ = FALSE;
+                               gtk_tree_model_get ((GtkTreeModel*) self->priv->filter, &iter, IDENTITY_MANAGER_VIEW_COLUMNS_IDCARD_COL, &id_card, -1);
+                               identity_manager_view_add_id_card_widget (self, id_card);
+                       }
+               }
+       }
+       _g_list_free0 (children);
+       _g_object_unref0 (id_card);
+}
+
+
+static void identity_manager_view_remove_identity_cb (IdentityManagerView* self, IdCardWidget* id_card_widget) {
+       IdCard* id_card;
+       GtkMessageDialog* dialog;
+       gint _result_;
+       g_return_if_fail (self != NULL);
+       g_return_if_fail (id_card_widget != NULL);
+       id_card = _g_object_ref0 (id_card_widget_get_id_card (id_card_widget));
+       dialog = g_object_ref_sink ((GtkMessageDialog*) gtk_message_dialog_new (NULL, GTK_DIALOG_DESTROY_WITH_PARENT, GTK_MESSAGE_QUESTION, GTK_BUTTONS_YES_NO, _ ("Are you sure you want to delete %s ID Card?"), id_card_get_issuer (id_card)));
+       _result_ = gtk_dialog_run ((GtkDialog*) dialog);
+       switch (_result_) {
+               case GTK_RESPONSE_YES:
+               {
+                       identity_manager_view_remove_identity (self, id_card_widget);
+                       break;
+               }
+               default:
+               {
+                       break;
+               }
+       }
+       gtk_object_destroy ((GtkObject*) dialog);
+       _g_object_unref0 (dialog);
+       _g_object_unref0 (id_card);
+}
+
+
+static void _g_slist_free_g_free (GSList* self) {
+       g_slist_foreach (self, (GFunc) g_free, NULL);
+       g_slist_free (self);
+}
+
+
+static gboolean _lambda3_ (Block1Data* _data1_) {
+       IdentityManagerView * self;
+       gboolean result = FALSE;
+       self = _data1_->self;
+       identity_manager_view_send_identity_cb (self, _data1_->identity);
+       result = FALSE;
+       return result;
+}
+
+
+static gboolean __lambda3__gsource_func (gpointer self) {
+       gboolean result;
+       result = _lambda3_ (self);
+       return result;
+}
+
+
+static Block1Data* block1_data_ref (Block1Data* _data1_) {
+       g_atomic_int_inc (&_data1_->_ref_count_);
+       return _data1_;
+}
+
+
+static void block1_data_unref (Block1Data* _data1_) {
+       if (g_atomic_int_dec_and_test (&_data1_->_ref_count_)) {
+               _g_object_unref0 (_data1_->self);
+               _g_object_unref0 (_data1_->identity);
+               g_slice_free (Block1Data, _data1_);
+       }
+}
+
+
+void identity_manager_view_select_identity (IdentityManagerView* self, IdentityRequest* request) {
+       Block1Data* _data1_;
+       gboolean _tmp0_ = FALSE;
+       g_return_if_fail (self != NULL);
+       g_return_if_fail (request != NULL);
+       _data1_ = g_slice_new0 (Block1Data);
+       _data1_->_ref_count_ = 1;
+       _data1_->self = g_object_ref (self);
+       _data1_->identity = NULL;
+       g_queue_push_tail (self->request_queue, _g_object_ref0 (request));
+       if (custom_vbox_get_current_idcard (self->priv->custom_vbox) != NULL) {
+               _tmp0_ = id_card_widget_get_send_button (custom_vbox_get_current_idcard (self->priv->custom_vbox)) != NULL;
+       } else {
+               _tmp0_ = FALSE;
+       }
+       if (_tmp0_) {
+               gtk_widget_set_sensitive ((GtkWidget*) id_card_widget_get_send_button (custom_vbox_get_current_idcard (self->priv->custom_vbox)), TRUE);
+       }
+       if (request->select_default) {
+               IdCard* _tmp1_;
+               _data1_->identity = (_tmp1_ = _g_object_ref0 (self->priv->default_id_card), _g_object_unref0 (_data1_->identity), _tmp1_);
+       }
+       if (_data1_->identity == NULL) {
+               gboolean _tmp2_ = FALSE;
+               gboolean has_nai;
+               gboolean _tmp3_ = FALSE;
+               gboolean has_srv;
+               gboolean confirm;
+               IdCard* nai_provided;
+               gboolean _tmp9_ = FALSE;
+               if (request->nai != NULL) {
+                       _tmp2_ = _vala_strcmp0 (request->nai, "") != 0;
+               } else {
+                       _tmp2_ = FALSE;
+               }
+               has_nai = _tmp2_;
+               if (request->service != NULL) {
+                       _tmp3_ = _vala_strcmp0 (request->service, "") != 0;
+               } else {
+                       _tmp3_ = FALSE;
+               }
+               has_srv = _tmp3_;
+               confirm = FALSE;
+               nai_provided = NULL;
+               {
+                       GeeLinkedList* _tmp4_;
+                       GeeIterator* _tmp5_;
+                       GeeIterator* _id_it;
+                       _id_it = (_tmp5_ = gee_abstract_collection_iterator ((GeeAbstractCollection*) (_tmp4_ = identity_manager_model_get_card_list (self->identities_manager))), _g_object_unref0 (_tmp4_), _tmp5_);
+                       while (TRUE) {
+                               IdCard* id;
+                               gboolean _tmp6_ = FALSE;
+                               if (!gee_iterator_next (_id_it)) {
+                                       break;
+                               }
+                               id = (IdCard*) gee_iterator_get (_id_it);
+                               if (has_nai) {
+                                       _tmp6_ = _vala_strcmp0 (request->nai, id_card_get_nai (id)) == 0;
+                               } else {
+                                       _tmp6_ = FALSE;
+                               }
+                               if (_tmp6_) {
+                                       IdCard* _tmp7_;
+                                       nai_provided = (_tmp7_ = _g_object_ref0 (id), _g_object_unref0 (nai_provided), _tmp7_);
+                                       identity_manager_view_add_candidate (self, id);
+                                       _g_object_unref0 (id);
+                                       continue;
+                               }
+                               if (has_srv) {
+                                       {
+                                               gint _tmp8_;
+                                               char** srv_collection;
+                                               int srv_collection_length1;
+                                               int srv_it;
+                                               srv_collection = id_card_get_services (id, &_tmp8_);
+                                               srv_collection_length1 = _tmp8_;
+                                               for (srv_it = 0; srv_it < _tmp8_; srv_it = srv_it + 1) {
+                                                       char* srv;
+                                                       srv = g_strdup (srv_collection[srv_it]);
+                                                       {
+                                                               if (_vala_strcmp0 (request->service, srv) == 0) {
+                                                                       identity_manager_view_add_candidate (self, id);
+                                                                       _g_free0 (srv);
+                                                                       continue;
+                                                               }
+                                                               _g_free0 (srv);
+                                                       }
+                                               }
+                                       }
+                               }
+                               _g_object_unref0 (id);
+                       }
+                       _g_object_unref0 (_id_it);
+               }
+               if (has_srv) {
+                       _tmp9_ = g_slist_length (self->priv->candidates) > 1;
+               } else {
+                       _tmp9_ = FALSE;
+               }
+               if (_tmp9_) {
+                       {
+                               GSList* id_collection;
+                               GSList* id_it;
+                               id_collection = self->priv->candidates;
+                               for (id_it = id_collection; id_it != NULL; id_it = id_it->next) {
+                                       IdCard* id;
+                                       id = _g_object_ref0 ((IdCard*) id_it->data);
+                                       {
+                                               gint i;
+                                               GSList* services_list;
+                                               gboolean has_service;
+                                               gint services_length1;
+                                               gint _services_size_;
+                                               char** _tmp15_;
+                                               gint _tmp14_;
+                                               char** services;
+                                               char** _tmp17_;
+                                               i = 0;
+                                               services_list = NULL;
+                                               has_service = FALSE;
+                                               {
+                                                       gint _tmp10_;
+                                                       char** srv_collection;
+                                                       int srv_collection_length1;
+                                                       int srv_it;
+                                                       srv_collection = id_card_get_services (id, &_tmp10_);
+                                                       srv_collection_length1 = _tmp10_;
+                                                       for (srv_it = 0; srv_it < _tmp10_; srv_it = srv_it + 1) {
+                                                               char* srv;
+                                                               srv = g_strdup (srv_collection[srv_it]);
+                                                               {
+                                                                       if (_vala_strcmp0 (srv, request->service) == 0) {
+                                                                               has_service = TRUE;
+                                                                               _g_free0 (srv);
+                                                                               continue;
+                                                                       }
+                                                                       services_list = g_slist_append (services_list, g_strdup (srv));
+                                                                       _g_free0 (srv);
+                                                               }
+                                                       }
+                                               }
+                                               if (!has_service) {
+                                                       __g_slist_free_g_free0 (services_list);
+                                                       _g_object_unref0 (id);
+                                                       continue;
+                                               }
+                                               if (g_slist_length (services_list) == 0) {
+                                                       char** _tmp11_ = NULL;
+                                                       char** _tmp12_;
+                                                       gint _tmp12__length1;
+                                                       char** _tmp13_;
+                                                       _tmp13_ = (_tmp12_ = (_tmp11_ = g_new0 (char*, 0 + 1), _tmp11_), _tmp12__length1 = 0, _tmp12_);
+                                                       id_card_set_services (id, _tmp13_, 0);
+                                                       _tmp12_ = (_vala_array_free (_tmp12_, _tmp12__length1, (GDestroyNotify) g_free), NULL);
+                                                       __g_slist_free_g_free0 (services_list);
+                                                       _g_object_unref0 (id);
+                                                       continue;
+                                               }
+                                               services = (_tmp15_ = g_new0 (char*, (_tmp14_ = g_slist_length (services_list)) + 1), services_length1 = _tmp14_, _services_size_ = services_length1, _tmp15_);
+                                               {
+                                                       GSList* srv_collection;
+                                                       GSList* srv_it;
+                                                       srv_collection = services_list;
+                                                       for (srv_it = srv_collection; srv_it != NULL; srv_it = srv_it->next) {
+                                                               char* srv;
+                                                               srv = g_strdup ((const char*) srv_it->data);
+                                                               {
+                                                                       char* _tmp16_;
+                                                                       services[i] = (_tmp16_ = g_strdup (srv), _g_free0 (services[i]), _tmp16_);
+                                                                       i++;
+                                                                       _g_free0 (srv);
+                                                               }
+                                                       }
+                                               }
+                                               _tmp17_ = services;
+                                               id_card_set_services (id, _tmp17_, services_length1);
+                                               services = (_vala_array_free (services, services_length1, (GDestroyNotify) g_free), NULL);
+                                               __g_slist_free_g_free0 (services_list);
+                                               _g_object_unref0 (id);
+                                       }
+                               }
+                       }
+               }
+               if (g_slist_length (self->priv->candidates) == 0) {
+                       {
+                               GeeLinkedList* _tmp18_;
+                               GeeIterator* _tmp19_;
+                               GeeIterator* _id_it;
+                               _id_it = (_tmp19_ = gee_abstract_collection_iterator ((GeeAbstractCollection*) (_tmp18_ = identity_manager_model_get_card_list (self->identities_manager))), _g_object_unref0 (_tmp18_), _tmp19_);
+                               while (TRUE) {
+                                       IdCard* id;
+                                       if (!gee_iterator_next (_id_it)) {
+                                               break;
+                                       }
+                                       id = (IdCard*) gee_iterator_get (_id_it);
+                                       {
+                                               gint _tmp20_;
+                                               Rule* rule_collection;
+                                               int rule_collection_length1;
+                                               int rule_it;
+                                               rule_collection = id_card_get_rules (id, &_tmp20_);
+                                               rule_collection_length1 = _tmp20_;
+                                               for (rule_it = 0; rule_it < _tmp20_; rule_it = rule_it + 1) {
+                                                       Rule _tmp21_ = {0};
+                                                       Rule rule;
+                                                       rule = (rule_copy (&rule_collection[rule_it], &_tmp21_), _tmp21_);
+                                                       {
+                                                               if (!identity_manager_view_match_service_pattern (self, request->service, rule.pattern)) {
+                                                                       rule_destroy (&rule);
+                                                                       continue;
+                                                               }
+                                                               self->priv->candidates = g_slist_append (self->priv->candidates, _g_object_ref0 (id));
+                                                               if (_vala_strcmp0 (rule.always_confirm, "true") == 0) {
+                                                                       confirm = TRUE;
+                                                               }
+                                                               rule_destroy (&rule);
+                                                       }
+                                               }
+                                       }
+                                       _g_object_unref0 (id);
+                               }
+                               _g_object_unref0 (_id_it);
+                       }
+               }
+               if (g_slist_length (self->priv->candidates) > 1) {
+                       gboolean _tmp22_ = FALSE;
+                       if (has_nai) {
+                               _tmp22_ = nai_provided != NULL;
+                       } else {
+                               _tmp22_ = FALSE;
+                       }
+                       if (_tmp22_) {
+                               IdCard* _tmp23_;
+                               _data1_->identity = (_tmp23_ = _g_object_ref0 (nai_provided), _g_object_unref0 (_data1_->identity), _tmp23_);
+                               confirm = FALSE;
+                       } else {
+                               confirm = TRUE;
+                       }
+               } else {
+                       IdCard* _tmp24_;
+                       _data1_->identity = (_tmp24_ = _g_object_ref0 ((IdCard*) g_slist_nth_data (self->priv->candidates, (guint) 0)), _g_object_unref0 (_data1_->identity), _tmp24_);
+               }
+               if (confirm) {
+                       gtk_tree_model_filter_refilter (self->priv->filter);
+                       identity_manager_view_redraw_id_card_widgets (self);
+                       gtk_widget_show ((GtkWidget*) self);
+                       _g_object_unref0 (nai_provided);
+                       block1_data_unref (_data1_);
+                       return;
+               }
+               _g_object_unref0 (nai_provided);
+       }
+       g_idle_add_full (G_PRIORITY_DEFAULT_IDLE, __lambda3__gsource_func, block1_data_ref (_data1_), block1_data_unref);
+       block1_data_unref (_data1_);
+       return;
+}
+
+
+static gboolean identity_manager_view_match_service_pattern (IdentityManagerView* self, const char* service, const char* pattern) {
+       gboolean result = FALSE;
+       GPatternSpec* pspec;
+       g_return_val_if_fail (self != NULL, FALSE);
+       g_return_val_if_fail (service != NULL, FALSE);
+       g_return_val_if_fail (pattern != NULL, FALSE);
+       pspec = g_pattern_spec_new (pattern);
+       result = g_pattern_match_string (pspec, service);
+       _g_pattern_spec_free0 (pspec);
+       return result;
+}
+
+
+void identity_manager_view_send_identity_cb (IdentityManagerView* self, IdCard* identity) {
+       IdentityRequest* request;
+       gboolean reset_password;
+       gboolean _tmp0_ = FALSE;
+       GSList* _tmp12_;
+       g_return_if_fail (self != NULL);
+       g_return_if_fail (identity != NULL);
+       g_return_if_fail (self->request_queue->length > 0);
+       request = (IdentityRequest*) g_queue_pop_head (self->request_queue);
+       reset_password = FALSE;
+       if (request->service != NULL) {
+               _tmp0_ = _vala_strcmp0 (request->service, "") != 0;
+       } else {
+               _tmp0_ = FALSE;
+       }
+       if (_tmp0_) {
+               gint services_length1;
+               gint _services_size_;
+               char** _tmp2_;
+               gint _tmp1_;
+               char** services;
+               gint _tmp7_;
+               gint _tmp8_;
+               char* _tmp9_;
+               char** _tmp10_;
+               services = (_tmp2_ = g_new0 (char*, (_tmp1_ + 1) + 1), services_length1 = _tmp1_ + 1, _services_size_ = services_length1, _tmp2_);
+               {
+                       gint i;
+                       i = 0;
+                       {
+                               gboolean _tmp3_;
+                               _tmp3_ = TRUE;
+                               while (TRUE) {
+                                       gint _tmp4_;
+                                       gint _tmp5_;
+                                       char* _tmp6_;
+                                       if (!_tmp3_) {
+                                               i++;
+                                       }
+                                       _tmp3_ = FALSE;
+                                       if (!(i < _tmp4_)) {
+                                               break;
+                                       }
+                                       services[i] = (_tmp6_ = g_strdup (id_card_get_services (identity, &_tmp5_)[i]), _g_free0 (services[i]), _tmp6_);
+                               }
+                       }
+               }
+               services[_tmp7_] = (_tmp9_ = g_strdup (request->service), _g_free0 (services[_tmp7_]), _tmp9_);
+               _tmp10_ = services;
+               id_card_set_services (identity, _tmp10_, services_length1);
+               services = (_vala_array_free (services, services_length1, (GDestroyNotify) g_free), NULL);
+       }
+       if (id_card_get_password (identity) == NULL) {
+               AddPasswordDialog* dialog;
+               gint _result_;
+               dialog = g_object_ref_sink (add_password_dialog_new ());
+               _result_ = gtk_dialog_run ((GtkDialog*) dialog);
+               switch (_result_) {
+                       case GTK_RESPONSE_OK:
+                       {
+                               id_card_set_password (identity, add_password_dialog_get_password (dialog));
+                               reset_password = !add_password_dialog_get_remember (dialog);
+                               break;
+                       }
+                       default:
+                       {
+                               identity = NULL;
+                               break;
+                       }
+               }
+               gtk_object_destroy ((GtkObject*) dialog);
+               _g_object_unref0 (dialog);
+       }
+       if (g_queue_is_empty (self->request_queue)) {
+               gtk_widget_hide ((GtkWidget*) self);
+       }
+       if (identity != NULL) {
+               IdCard* _tmp11_;
+               self->priv->default_id_card = (_tmp11_ = _g_object_ref0 (identity), _g_object_unref0 (self->priv->default_id_card), _tmp11_);
+       }
+       identity_request_return_identity (request, identity);
+       if (reset_password) {
+               id_card_set_password (identity, NULL);
+       }
+       self->priv->candidates = (_tmp12_ = NULL, __g_slist_free_g_object_unref0 (self->priv->candidates), _tmp12_);
+       _g_object_unref0 (request);
+}
+
+
+static void identity_manager_view_label_make_bold (IdentityManagerView* self, GtkLabel* label) {
+       PangoFontDescription* font_desc;
+       g_return_if_fail (self != NULL);
+       g_return_if_fail (label != NULL);
+       font_desc = pango_font_description_new ();
+       pango_font_description_set_weight (font_desc, PANGO_WEIGHT_BOLD);
+       gtk_widget_modify_font ((GtkWidget*) label, font_desc);
+       _pango_font_description_free0 (font_desc);
+}
+
+
+static void _lambda1_ (GtkButton* remove_button, IdentityManagerView* self) {
+       GtkMessageDialog* dialog;
+       gint ret;
+       g_return_if_fail (remove_button != NULL);
+       dialog = g_object_ref_sink ((GtkMessageDialog*) gtk_message_dialog_new ((GtkWindow*) self, GTK_DIALOG_DESTROY_WITH_PARENT, GTK_MESSAGE_QUESTION, GTK_BUTTONS_YES_NO, _ ("Are you sure you want to stop '%s' ID Card to use %s?"), id_card_get_display_name (id_card_widget_get_id_card (custom_vbox_get_current_idcard (self->priv->custom_vbox)))));
+       ret = gtk_dialog_run ((GtkDialog*) dialog);
+       gtk_widget_hide ((GtkWidget*) dialog);
+       if (ret == GTK_RESPONSE_YES) {
+               IdCard* idcard;
+               char* candidate;
+               GSList* services;
+               gint _tmp1_;
+               char** _tmp2_;
+               gint _tmp2__length1;
+               char** _tmp3_;
+               GList* children;
+               idcard = _g_object_ref0 (id_card_widget_get_id_card (custom_vbox_get_current_idcard (self->priv->custom_vbox)));
+               candidate = g_strdup ((const char*) g_hash_table_lookup (self->priv->service_button_map, remove_button));
+               services = NULL;
+               {
+                       gint _tmp0_;
+                       char** srv_collection;
+                       int srv_collection_length1;
+                       int srv_it;
+                       srv_collection = id_card_get_services (idcard, &_tmp0_);
+                       srv_collection_length1 = _tmp0_;
+                       for (srv_it = 0; srv_it < _tmp0_; srv_it = srv_it + 1) {
+                               char* srv;
+                               srv = g_strdup (srv_collection[srv_it]);
+                               {
+                                       if (_vala_strcmp0 (srv, candidate) == 0) {
+                                               _g_free0 (srv);
+                                               continue;
+                                       }
+                                       services = g_slist_append (services, g_strdup (srv));
+                                       _g_free0 (srv);
+                               }
+                       }
+               }
+               _tmp3_ = (_tmp2_ = g_new0 (char*, (_tmp1_ = g_slist_length (services)) + 1), _tmp2__length1 = _tmp1_, _tmp2_);
+               id_card_set_services (idcard, _tmp3_, _tmp1_);
+               _tmp2_ = (_vala_array_free (_tmp2_, _tmp2__length1, (GDestroyNotify) g_free), NULL);
+               {
+                       gint j;
+                       j = 0;
+                       {
+                               gboolean _tmp4_;
+                               _tmp4_ = TRUE;
+                               while (TRUE) {
+                                       gint _tmp5_;
+                                       gint _tmp6_;
+                                       gint _tmp7_;
+                                       char* *_tmp8_;
+                                       char* _tmp9_;
+                                       if (!_tmp4_) {
+                                               j++;
+                                       }
+                                       _tmp4_ = FALSE;
+                                       if (!(j < _tmp5_)) {
+                                               break;
+                                       }
+                                       _tmp8_ = &id_card_get_services (idcard, &_tmp7_)[j];
+                                       (*_tmp8_) = (_tmp9_ = g_strdup ((const char*) g_slist_nth_data (services, (guint) j)), _g_free0 ((*_tmp8_)), _tmp9_);
+                               }
+                       }
+               }
+               children = gtk_container_get_children ((GtkContainer*) self->priv->services_internal_vbox);
+               {
+                       GList* hbox_collection;
+                       GList* hbox_it;
+                       hbox_collection = children;
+                       for (hbox_it = hbox_collection; hbox_it != NULL; hbox_it = hbox_it->next) {
+                               GtkWidget* hbox;
+                               hbox = (GtkWidget*) hbox_it->data;
+                               {
+                                       gtk_object_destroy ((GtkObject*) hbox);
+                               }
+                       }
+               }
+               identity_manager_view_fill_services_vbox (self, idcard);
+               id_card_widget_update_id_card_label (custom_vbox_get_current_idcard (self->priv->custom_vbox));
+               _g_list_free0 (children);
+               __g_slist_free_g_free0 (services);
+               _g_free0 (candidate);
+               _g_object_unref0 (idcard);
+       }
+       _g_object_unref0 (dialog);
+}
+
+
+static void __lambda1__gtk_button_clicked (GtkButton* _sender, gpointer self) {
+       _lambda1_ (_sender, self);
+}
+
+
+static void identity_manager_view_fill_services_vbox (IdentityManagerView* self, IdCard* id_card) {
+       gint i;
+       gint _tmp0_;
+       gint n_columns;
+       GtkTable* services_table;
+       g_return_if_fail (self != NULL);
+       g_return_if_fail (id_card != NULL);
+       i = 0;
+       n_columns = _tmp0_;
+       services_table = g_object_ref_sink ((GtkTable*) gtk_table_new ((guint) n_columns, (guint) 2, FALSE));
+       gtk_table_set_col_spacings (services_table, (guint) 10);
+       gtk_table_set_row_spacings (services_table, (guint) 10);
+       gtk_container_add ((GtkContainer*) self->priv->services_internal_vbox, (GtkWidget*) services_table);
+       g_hash_table_remove_all (self->priv->service_button_map);
+       {
+               gint _tmp1_;
+               char** service_collection;
+               int service_collection_length1;
+               int service_it;
+               service_collection = id_card_get_services (id_card, &_tmp1_);
+               service_collection_length1 = _tmp1_;
+               for (service_it = 0; service_it < _tmp1_; service_it = service_it + 1) {
+                       char* service;
+                       service = g_strdup (service_collection[service_it]);
+                       {
+                               GtkLabel* label;
+                               GtkButton* remove_button;
+                               label = g_object_ref_sink ((GtkLabel*) gtk_label_new (service));
+                               gtk_misc_set_alignment ((GtkMisc*) label, (float) 0, (float) 0.5);
+                               remove_button = g_object_ref_sink ((GtkButton*) gtk_button_new_from_stock (GTK_STOCK_REMOVE));
+                               g_hash_table_insert (self->priv->service_button_map, _g_object_ref0 (remove_button), g_strdup (service));
+                               g_signal_connect_object (remove_button, "clicked", (GCallback) __lambda1__gtk_button_clicked, self, 0);
+                               gtk_table_attach_defaults (services_table, (GtkWidget*) label, (guint) 0, (guint) 1, (guint) i, (guint) (i + 1));
+                               gtk_table_attach_defaults (services_table, (GtkWidget*) remove_button, (guint) 1, (guint) 2, (guint) i, (guint) (i + 1));
+                               i++;
+                               _g_object_unref0 (remove_button);
+                               _g_object_unref0 (label);
+                               _g_free0 (service);
+                       }
+               }
+       }
+       gtk_widget_show_all ((GtkWidget*) self->priv->services_internal_vbox);
+       _g_object_unref0 (services_table);
+}
+
+
+static void identity_manager_view_on_about_action (IdentityManagerView* self) {
+       gint authors_length1;
+       gint _authors_size_;
+       char** _tmp1_;
+       char** _tmp0_ = NULL;
+       char** authors;
+       char* copyright;
+       char* license;
+       g_return_if_fail (self != NULL);
+       authors = (_tmp1_ = (_tmp0_ = g_new0 (char*, 4 + 1), _tmp0_[0] = g_strdup ("Javier Jardón <jjardon@codethink.co.uk>"), _tmp0_[1] = g_strdup ("Sam Thursfield <samthursfield@codethink.co.uk>"), _tmp0_[2] = g_strdup ("Alberto Ruiz <alberto.ruiz@codethink.co.uk>"), _tmp0_[3] = NULL, _tmp0_), authors_length1 = 4, _authors_size_ = authors_length1, _tmp1_);
+       copyright = g_strdup ("Copyright 2011 JANET");
+       license = g_strdup ("\n" \
+"Copyright (c) 2011, JANET(UK)\n" \
+"All rights reserved.\n" \
+"\n" \
+"Redistribution and use in source and binary forms, with or without\n" \
+"modification, are permitted provided that the following conditions\n" \
+"are met:\n" \
+"\n" \
+"1. Redistributions of source code must retain the above copyright\n" \
+"   notice, this list of conditions and the following disclaimer.\n" \
+"\n" \
+"2. Redistributions in binary form must reproduce the above copyright\n" \
+"   notice, this list of conditions and the following disclaimer in the" \
+"\n" \
+"   documentation and/or other materials provided with the distribution" \
+".\n" \
+"\n" \
+"3. Neither the name of JANET(UK) nor the names of its contributors\n" \
+"   may be used to endorse or promote products derived from this softwa" \
+"re\n" \
+"   without specific prior written permission.\n" \
+"\n" \
+"THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \\" \
+"\"AS IS\\\"\n" \
+"AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, " \
+"THE\n" \
+"IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PUR" \
+"POSE\n" \
+"ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS" \
+" BE LIABLE\n" \
+"FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUEN" \
+"TIAL\n" \
+"DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOOD" \
+"S\n" \
+"OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)\n" \
+"HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, ST" \
+"RICT\n" \
+"LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY " \
+"WAY\n" \
+"OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF" \
+"\n" \
+"SUCH DAMAGE.\n");
+       gtk_show_about_dialog ((GtkWindow*) self, "comments", _ ("Moonshot project UI"), "copyright", copyright, "website", "http://www.project-moonshot.org/", "license", license, "website-label", _ ("Visit the Moonshot project web site"), "authors", authors, "translator-credits", _ ("translator-credits"), NULL, NULL);
+       _g_free0 (license);
+       _g_free0 (copyright);
+       authors = (_vala_array_free (authors, authors_length1, (GDestroyNotify) g_free), NULL);
+}
+
+
+static void _vala_array_add1 (GtkActionEntry** array, int* length, int* size, const GtkActionEntry* value) {
+       if ((*length) == (*size)) {
+               *size = (*size) ? (2 * (*size)) : 4;
+               *array = g_renew (GtkActionEntry, *array, *size);
+       }
+       (*array)[(*length)++] = *value;
+}
+
+
+static void _identity_manager_view_add_identity_manual_cb_gtk_action_callback (GtkAction* action, gpointer self) {
+       identity_manager_view_add_identity_manual_cb (self);
+}
+
+
+static void _vala_array_add2 (GtkActionEntry** array, int* length, int* size, const GtkActionEntry* value) {
+       if ((*length) == (*size)) {
+               *size = (*size) ? (2 * (*size)) : 4;
+               *array = g_renew (GtkActionEntry, *array, *size);
+       }
+       (*array)[(*length)++] = *value;
+}
+
+
+static void _gtk_main_quit_gtk_action_callback (GtkAction* action, gpointer self) {
+       gtk_main_quit ();
+}
+
+
+static void _vala_array_add3 (GtkActionEntry** array, int* length, int* size, const GtkActionEntry* value) {
+       if ((*length) == (*size)) {
+               *size = (*size) ? (2 * (*size)) : 4;
+               *array = g_renew (GtkActionEntry, *array, *size);
+       }
+       (*array)[(*length)++] = *value;
+}
+
+
+static void _vala_array_add4 (GtkActionEntry** array, int* length, int* size, const GtkActionEntry* value) {
+       if ((*length) == (*size)) {
+               *size = (*size) ? (2 * (*size)) : 4;
+               *array = g_renew (GtkActionEntry, *array, *size);
+       }
+       (*array)[(*length)++] = *value;
+}
+
+
+static void _identity_manager_view_on_about_action_gtk_action_callback (GtkAction* action, gpointer self) {
+       identity_manager_view_on_about_action (self);
+}
+
+
+static void _vala_array_add5 (GtkActionEntry** array, int* length, int* size, const GtkActionEntry* value) {
+       if ((*length) == (*size)) {
+               *size = (*size) ? (2 * (*size)) : 4;
+               *array = g_renew (GtkActionEntry, *array, *size);
+       }
+       (*array)[(*length)++] = *value;
+}
+
+
+static GtkActionEntry* identity_manager_view_create_actions (IdentityManagerView* self, int* result_length1) {
+       GtkActionEntry* result = NULL;
+       gint actions_length1;
+       gint _actions_size_;
+       GtkActionEntry* _tmp0_;
+       GtkActionEntry* actions;
+       GtkActionEntry _tmp1_ = {0};
+       GtkActionEntry filemenu;
+       GtkActionEntry _tmp2_ = {0};
+       GtkActionEntry add;
+       GtkActionEntry _tmp3_ = {0};
+       GtkActionEntry quit;
+       GtkActionEntry _tmp4_ = {0};
+       GtkActionEntry helpmenu;
+       GtkActionEntry _tmp5_ = {0};
+       GtkActionEntry about;
+       GtkActionEntry* _tmp6_;
+       g_return_val_if_fail (self != NULL, NULL);
+       actions = (_tmp0_ = g_new0 (GtkActionEntry, 0), actions_length1 = 0, _actions_size_ = actions_length1, _tmp0_);
+       filemenu = (_tmp1_.name = "FileMenuAction", _tmp1_.stock_id = NULL, _tmp1_.label = N_ ("_File"), _tmp1_.accelerator = NULL, _tmp1_.tooltip = NULL, _tmp1_.callback = (GCallback) NULL, _tmp1_);
+       _vala_array_add1 (&actions, &actions_length1, &_actions_size_, &filemenu);
+       add = (_tmp2_.name = "AddIdCardAction", _tmp2_.stock_id = GTK_STOCK_ADD, _tmp2_.label = N_ ("Add ID Card"), _tmp2_.accelerator = NULL, _tmp2_.tooltip = N_ ("Add a new ID Card"), _tmp2_.callback = (GCallback) _identity_manager_view_add_identity_manual_cb_gtk_action_callback, _tmp2_);
+       _vala_array_add2 (&actions, &actions_length1, &_actions_size_, &add);
+       quit = (_tmp3_.name = "QuitAction", _tmp3_.stock_id = GTK_STOCK_QUIT, _tmp3_.label = N_ ("Quit"), _tmp3_.accelerator = "<control>Q", _tmp3_.tooltip = N_ ("Quit the application"), _tmp3_.callback = (GCallback) _gtk_main_quit_gtk_action_callback, _tmp3_);
+       _vala_array_add3 (&actions, &actions_length1, &_actions_size_, &quit);
+       helpmenu = (_tmp4_.name = "HelpMenuAction", _tmp4_.stock_id = NULL, _tmp4_.label = N_ ("_Help"), _tmp4_.accelerator = NULL, _tmp4_.tooltip = NULL, _tmp4_.callback = (GCallback) NULL, _tmp4_);
+       _vala_array_add4 (&actions, &actions_length1, &_actions_size_, &helpmenu);
+       about = (_tmp5_.name = "AboutAction", _tmp5_.stock_id = GTK_STOCK_ABOUT, _tmp5_.label = N_ ("About"), _tmp5_.accelerator = NULL, _tmp5_.tooltip = N_ ("About this application"), _tmp5_.callback = (GCallback) _identity_manager_view_on_about_action_gtk_action_callback, _tmp5_);
+       _vala_array_add5 (&actions, &actions_length1, &_actions_size_, &about);
+       result = (_tmp6_ = actions, *result_length1 = actions_length1, _tmp6_);
+       return result;
+       actions = (g_free (actions), NULL);
+}
+
+
+static void identity_manager_view_create_ui_manager (IdentityManagerView* self) {
+       GtkActionGroup* action_group;
+       gint _tmp0_;
+       GtkActionEntry* _tmp1_;
+       gint _tmp1__length1;
+       GtkActionEntry* _tmp2_;
+       GError * _inner_error_ = NULL;
+       g_return_if_fail (self != NULL);
+       action_group = gtk_action_group_new ("GeneralActionGroup");
+       _tmp2_ = (_tmp1_ = identity_manager_view_create_actions (self, &_tmp0_), _tmp1__length1 = _tmp0_, _tmp1_);
+       gtk_action_group_add_actions (action_group, _tmp2_, _tmp0_, self);
+       _tmp1_ = (g_free (_tmp1_), NULL);
+       gtk_ui_manager_insert_action_group (self->priv->ui_manager, action_group, 0);
+       {
+               gtk_ui_manager_add_ui_from_string (self->priv->ui_manager, IDENTITY_MANAGER_VIEW_layout, (gssize) (-1), &_inner_error_);
+               if (_inner_error_ != NULL) {
+                       goto __catch1_g_error;
+               }
+       }
+       goto __finally1;
+       __catch1_g_error:
+       {
+               GError * e;
+               e = _inner_error_;
+               _inner_error_ = NULL;
+               {
+                       fprintf (stderr, "%s\n", e->message);
+                       _g_error_free0 (e);
+               }
+       }
+       __finally1:
+       if (_inner_error_ != NULL) {
+               _g_object_unref0 (action_group);
+               g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code);
+               g_clear_error (&_inner_error_);
+               return;
+       }
+       gtk_ui_manager_ensure_update (self->priv->ui_manager);
+       _g_object_unref0 (action_group);
+}
+
+
+static void _identity_manager_view_search_entry_icon_press_cb_gtk_entry_icon_press (GtkEntry* _sender, GtkEntryIconPosition p0, GdkEvent* p1, gpointer self) {
+       identity_manager_view_search_entry_icon_press_cb (self, p0, p1);
+}
+
+
+static void _identity_manager_view_search_entry_text_changed_cb_g_object_notify (GObject* _sender, GParamSpec* pspec, gpointer self) {
+       identity_manager_view_search_entry_text_changed_cb (self);
+}
+
+
+static gboolean _identity_manager_view_search_entry_key_press_event_cb_gtk_widget_key_press_event (GtkWidget* _sender, GdkEventKey* event, gpointer self) {
+       gboolean result;
+       result = identity_manager_view_search_entry_key_press_event_cb (self, event);
+       return result;
+}
+
+
+static void identity_manager_view_build_ui (IdentityManagerView* self) {
+       GtkEntry* _tmp0_;
+       GdkPixbuf* _tmp1_;
+       GdkPixbuf* _tmp2_;
+       CustomVBox* _tmp3_;
+       GtkViewport* viewport;
+       GtkScrolledWindow* scroll;
+       GtkVBox* vbox_left;
+       GtkLabel* login_vbox_title;
+       GtkLabel* username_label;
+       GtkEntry* _tmp4_;
+       GtkLabel* password_label;
+       GtkEntry* _tmp5_;
+       GtkCheckButton* remember_checkbutton;
+       GtkTable* login_table;
+       GtkAlignment* login_vbox_alignment;
+       GtkVBox* login_vbox;
+       GtkLabel* services_vbox_title;
+       GtkAlignment* services_vbox_alignment;
+       GtkVBox* _tmp6_;
+       GtkVBox* services_vbox;
+       GtkVBox* _tmp7_;
+       GtkHBox* hbox;
+       GtkVBox* main_vbox;
+       GtkWidget* menubar;
+       g_return_if_fail (self != NULL);
+       identity_manager_view_create_ui_manager (self);
+       self->priv->search_entry = (_tmp0_ = g_object_ref_sink ((GtkEntry*) gtk_entry_new ()), _g_object_unref0 (self->priv->search_entry), _tmp0_);
+       identity_manager_view_set_atk_name_description (self, (GtkWidget*) self->priv->search_entry, _ ("Search entry"), _ ("Search for a specific ID Card"));
+       gtk_entry_set_icon_from_pixbuf (self->priv->search_entry, GTK_ENTRY_ICON_PRIMARY, _tmp1_ = find_icon_sized ("edit-find", GTK_ICON_SIZE_MENU));
+       _g_object_unref0 (_tmp1_);
+       gtk_entry_set_icon_tooltip_text (self->priv->search_entry, GTK_ENTRY_ICON_PRIMARY, _ ("Search identity or service"));
+       gtk_entry_set_icon_sensitive (self->priv->search_entry, GTK_ENTRY_ICON_PRIMARY, FALSE);
+       gtk_entry_set_icon_from_pixbuf (self->priv->search_entry, GTK_ENTRY_ICON_SECONDARY, _tmp2_ = find_icon_sized ("process-stop", GTK_ICON_SIZE_MENU));
+       _g_object_unref0 (_tmp2_);
+       gtk_entry_set_icon_tooltip_text (self->priv->search_entry, GTK_ENTRY_ICON_SECONDARY, _ ("Clear the current search"));
+       gtk_entry_set_icon_sensitive (self->priv->search_entry, GTK_ENTRY_ICON_SECONDARY, FALSE);
+       g_signal_connect_object (self->priv->search_entry, "icon-press", (GCallback) _identity_manager_view_search_entry_icon_press_cb_gtk_entry_icon_press, self, 0);
+       g_signal_connect_object ((GObject*) self->priv->search_entry, "notify::text", (GCallback) _identity_manager_view_search_entry_text_changed_cb_g_object_notify, self, 0);
+       g_signal_connect_object ((GtkWidget*) self->priv->search_entry, "key-press-event", (GCallback) _identity_manager_view_search_entry_key_press_event_cb_gtk_widget_key_press_event, self, 0);
+       self->priv->custom_vbox = (_tmp3_ = g_object_ref_sink (custom_vbox_new (self, FALSE, 6)), _g_object_unref0 (self->priv->custom_vbox), _tmp3_);
+       viewport = g_object_ref_sink ((GtkViewport*) gtk_viewport_new (NULL, NULL));
+       gtk_container_set_border_width ((GtkContainer*) viewport, (guint) 6);
+       gtk_viewport_set_shadow_type (viewport, GTK_SHADOW_NONE);
+       gtk_container_add ((GtkContainer*) viewport, (GtkWidget*) self->priv->custom_vbox);
+       scroll = g_object_ref_sink ((GtkScrolledWindow*) gtk_scrolled_window_new (NULL, NULL));
+       gtk_scrolled_window_set_policy (scroll, GTK_POLICY_NEVER, GTK_POLICY_AUTOMATIC);
+       gtk_scrolled_window_set_shadow_type (scroll, GTK_SHADOW_IN);
+       gtk_scrolled_window_add_with_viewport (scroll, (GtkWidget*) viewport);
+       vbox_left = g_object_ref_sink ((GtkVBox*) gtk_vbox_new (FALSE, 0));
+       gtk_box_pack_start ((GtkBox*) vbox_left, (GtkWidget*) self->priv->search_entry, FALSE, FALSE, (guint) 6);
+       gtk_box_pack_start ((GtkBox*) vbox_left, (GtkWidget*) scroll, TRUE, TRUE, (guint) 0);
+       gtk_widget_set_size_request ((GtkWidget*) vbox_left, IDENTITY_MANAGER_VIEW_WINDOW_WIDTH, 0);
+       login_vbox_title = g_object_ref_sink ((GtkLabel*) gtk_label_new (_ ("Login: ")));
+       identity_manager_view_label_make_bold (self, login_vbox_title);
+       gtk_misc_set_alignment ((GtkMisc*) login_vbox_title, (float) 0, (float) 0.5);
+       username_label = g_object_ref_sink ((GtkLabel*) gtk_label_new (_ ("Username:")));
+       gtk_misc_set_alignment ((GtkMisc*) username_label, (float) 1, (float) 0.5);
+       self->priv->username_entry = (_tmp4_ = g_object_ref_sink ((GtkEntry*) gtk_entry_new ()), _g_object_unref0 (self->priv->username_entry), _tmp4_);
+       password_label = g_object_ref_sink ((GtkLabel*) gtk_label_new (_ ("Password:")));
+       gtk_misc_set_alignment ((GtkMisc*) password_label, (float) 1, (float) 0.5);
+       self->priv->password_entry = (_tmp5_ = g_object_ref_sink ((GtkEntry*) gtk_entry_new ()), _g_object_unref0 (self->priv->password_entry), _tmp5_);
+       gtk_entry_set_invisible_char (self->priv->password_entry, (gunichar) '*');
+       gtk_entry_set_visibility (self->priv->password_entry, FALSE);
+       remember_checkbutton = g_object_ref_sink ((GtkCheckButton*) gtk_check_button_new_with_label (_ ("Remember password")));
+       login_table = g_object_ref_sink ((GtkTable*) gtk_table_new ((guint) 3, (guint) 3, FALSE));
+       gtk_table_set_col_spacings (login_table, (guint) 10);
+       gtk_table_set_row_spacings (login_table, (guint) 10);
+       gtk_table_attach_defaults (login_table, (GtkWidget*) username_label, (guint) 0, (guint) 1, (guint) 0, (guint) 1);
+       gtk_table_attach_defaults (login_table, (GtkWidget*) self->priv->username_entry, (guint) 1, (guint) 2, (guint) 0, (guint) 1);
+       gtk_table_attach_defaults (login_table, (GtkWidget*) password_label, (guint) 0, (guint) 1, (guint) 1, (guint) 2);
+       gtk_table_attach_defaults (login_table, (GtkWidget*) self->priv->password_entry, (guint) 1, (guint) 2, (guint) 1, (guint) 2);
+       gtk_table_attach_defaults (login_table, (GtkWidget*) remember_checkbutton, (guint) 1, (guint) 2, (guint) 2, (guint) 3);
+       login_vbox_alignment = g_object_ref_sink ((GtkAlignment*) gtk_alignment_new ((float) 0, (float) 0, (float) 0, (float) 0));
+       gtk_alignment_set_padding (login_vbox_alignment, (guint) 0, (guint) 0, (guint) 12, (guint) 0);
+       gtk_container_add ((GtkContainer*) login_vbox_alignment, (GtkWidget*) login_table);
+       login_vbox = g_object_ref_sink ((GtkVBox*) gtk_vbox_new (FALSE, 6));
+       gtk_box_pack_start ((GtkBox*) login_vbox, (GtkWidget*) login_vbox_title, FALSE, TRUE, (guint) 0);
+       gtk_box_pack_start ((GtkBox*) login_vbox, (GtkWidget*) login_vbox_alignment, FALSE, TRUE, (guint) 0);
+       services_vbox_title = g_object_ref_sink ((GtkLabel*) gtk_label_new (_ ("Services:")));
+       identity_manager_view_label_make_bold (self, services_vbox_title);
+       gtk_misc_set_alignment ((GtkMisc*) services_vbox_title, (float) 0, (float) 0.5);
+       services_vbox_alignment = g_object_ref_sink ((GtkAlignment*) gtk_alignment_new ((float) 0, (float) 0, (float) 0, (float) 0));
+       gtk_alignment_set_padding (services_vbox_alignment, (guint) 0, (guint) 0, (guint) 12, (guint) 0);
+       self->priv->services_internal_vbox = (_tmp6_ = g_object_ref_sink ((GtkVBox*) gtk_vbox_new (TRUE, 6)), _g_object_unref0 (self->priv->services_internal_vbox), _tmp6_);
+       gtk_container_add ((GtkContainer*) services_vbox_alignment, (GtkWidget*) self->priv->services_internal_vbox);
+       services_vbox = g_object_ref_sink ((GtkVBox*) gtk_vbox_new (FALSE, 6));
+       gtk_box_pack_start ((GtkBox*) services_vbox, (GtkWidget*) services_vbox_title, FALSE, TRUE, (guint) 0);
+       gtk_box_pack_start ((GtkBox*) services_vbox, (GtkWidget*) services_vbox_alignment, FALSE, TRUE, (guint) 0);
+       self->priv->vbox_right = (_tmp7_ = g_object_ref_sink ((GtkVBox*) gtk_vbox_new (FALSE, 18)), _g_object_unref0 (self->priv->vbox_right), _tmp7_);
+       gtk_box_pack_start ((GtkBox*) self->priv->vbox_right, (GtkWidget*) login_vbox, FALSE, TRUE, (guint) 0);
+       gtk_box_pack_start ((GtkBox*) self->priv->vbox_right, (GtkWidget*) services_vbox, FALSE, TRUE, (guint) 0);
+       hbox = g_object_ref_sink ((GtkHBox*) gtk_hbox_new (FALSE, 12));
+       gtk_box_pack_start ((GtkBox*) hbox, (GtkWidget*) vbox_left, TRUE, TRUE, (guint) 0);
+       gtk_box_pack_start ((GtkBox*) hbox, (GtkWidget*) self->priv->vbox_right, FALSE, FALSE, (guint) 0);
+       main_vbox = g_object_ref_sink ((GtkVBox*) gtk_vbox_new (FALSE, 0));
+       gtk_container_set_border_width ((GtkContainer*) main_vbox, (guint) 12);
+       menubar = _g_object_ref0 (gtk_ui_manager_get_widget (self->priv->ui_manager, "/MenuBar"));
+       gtk_box_pack_start ((GtkBox*) main_vbox, menubar, FALSE, FALSE, (guint) 0);
+       gtk_box_pack_start ((GtkBox*) main_vbox, (GtkWidget*) hbox, TRUE, TRUE, (guint) 0);
+       gtk_container_add ((GtkContainer*) self, (GtkWidget*) main_vbox);
+       gtk_widget_show_all ((GtkWidget*) main_vbox);
+       gtk_widget_hide ((GtkWidget*) self->priv->vbox_right);
+       _g_object_unref0 (menubar);
+       _g_object_unref0 (main_vbox);
+       _g_object_unref0 (hbox);
+       _g_object_unref0 (services_vbox);
+       _g_object_unref0 (services_vbox_alignment);
+       _g_object_unref0 (services_vbox_title);
+       _g_object_unref0 (login_vbox);
+       _g_object_unref0 (login_vbox_alignment);
+       _g_object_unref0 (login_table);
+       _g_object_unref0 (remember_checkbutton);
+       _g_object_unref0 (password_label);
+       _g_object_unref0 (username_label);
+       _g_object_unref0 (login_vbox_title);
+       _g_object_unref0 (vbox_left);
+       _g_object_unref0 (scroll);
+       _g_object_unref0 (viewport);
+}
+
+
+static void identity_manager_view_set_atk_name_description (IdentityManagerView* self, GtkWidget* widget, const char* name, const char* description) {
+       AtkObject* atk_widget;
+       g_return_if_fail (self != NULL);
+       g_return_if_fail (widget != NULL);
+       g_return_if_fail (name != NULL);
+       g_return_if_fail (description != NULL);
+       atk_widget = _g_object_ref0 (gtk_widget_get_accessible (widget));
+       atk_object_set_name (atk_widget, name);
+       atk_object_set_description (atk_widget, description);
+       _g_object_unref0 (atk_widget);
+}
+
+
+static void _gtk_main_quit_gtk_object_destroy (GtkObject* _sender, gpointer self) {
+       gtk_main_quit ();
+}
+
+
+static void _identity_manager_view_on_card_list_changed_identity_manager_model_card_list_changed (IdentityManagerModel* _sender, gpointer self) {
+       identity_manager_view_on_card_list_changed (self);
+}
+
+
+static void identity_manager_view_connect_signals (IdentityManagerView* self) {
+       g_return_if_fail (self != NULL);
+       g_signal_connect ((GtkObject*) self, "destroy", (GCallback) _gtk_main_quit_gtk_object_destroy, NULL);
+       g_signal_connect_object (self->identities_manager, "card-list-changed", (GCallback) _identity_manager_view_on_card_list_changed_identity_manager_model_card_list_changed, self, 0);
+}
+
+
+static void identity_manager_view_class_init (IdentityManagerViewClass * klass) {
+       identity_manager_view_parent_class = g_type_class_peek_parent (klass);
+       g_type_class_add_private (klass, sizeof (IdentityManagerViewPrivate));
+       G_OBJECT_CLASS (klass)->finalize = identity_manager_view_finalize;
+}
+
+
+static void identity_manager_view_instance_init (IdentityManagerView * self) {
+       self->priv = IDENTITY_MANAGER_VIEW_GET_PRIVATE (self);
+       self->priv->ui_manager = gtk_ui_manager_new ();
+}
+
+
+static void identity_manager_view_finalize (GObject* obj) {
+       IdentityManagerView * self;
+       self = IDENTITY_MANAGER_VIEW (obj);
+       _g_object_unref0 (self->parent_app);
+       _g_object_unref0 (self->priv->ui_manager);
+       _g_object_unref0 (self->priv->search_entry);
+       _g_object_unref0 (self->priv->vbox_right);
+       _g_object_unref0 (self->priv->custom_vbox);
+       _g_object_unref0 (self->priv->services_internal_vbox);
+       _g_object_unref0 (self->priv->username_entry);
+       _g_object_unref0 (self->priv->password_entry);
+       _g_object_unref0 (self->priv->filter);
+       _g_object_unref0 (self->identities_manager);
+       __g_slist_free_g_object_unref0 (self->priv->candidates);
+       _g_object_unref0 (self->priv->default_id_card);
+       _g_queue_free0 (self->request_queue);
+       _g_hash_table_unref0 (self->priv->service_button_map);
+       G_OBJECT_CLASS (identity_manager_view_parent_class)->finalize (obj);
+}
+
+
+GType identity_manager_view_get_type (void) {
+       static volatile gsize identity_manager_view_type_id__volatile = 0;
+       if (g_once_init_enter (&identity_manager_view_type_id__volatile)) {
+               static const GTypeInfo g_define_type_info = { sizeof (IdentityManagerViewClass), (GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) identity_manager_view_class_init, (GClassFinalizeFunc) NULL, NULL, sizeof (IdentityManagerView), 0, (GInstanceInitFunc) identity_manager_view_instance_init, NULL };
+               GType identity_manager_view_type_id;
+               identity_manager_view_type_id = g_type_register_static (GTK_TYPE_WINDOW, "IdentityManagerView", &g_define_type_info, 0);
+               g_once_init_leave (&identity_manager_view_type_id__volatile, identity_manager_view_type_id);
+       }
+       return identity_manager_view_type_id__volatile;
+}
+
+
+static void _vala_array_destroy (gpointer array, gint array_length, GDestroyNotify destroy_func) {
+       if ((array != NULL) && (destroy_func != NULL)) {
+               int i;
+               for (i = 0; i < array_length; i = i + 1) {
+                       if (((gpointer*) array)[i] != NULL) {
+                               destroy_func (((gpointer*) array)[i]);
+                       }
+               }
+       }
+}
+
+
+static void _vala_array_free (gpointer array, gint array_length, GDestroyNotify destroy_func) {
+       _vala_array_destroy (array, array_length, destroy_func);
+       g_free (array);
+}
+
+
+static gint _vala_array_length (gpointer array) {
+       int length;
+       length = 0;
+       if (array) {
+               while (((gpointer*) array)[length]) {
+                       length++;
+               }
+       }
+       return length;
+}
+
+
+static int _vala_strcmp0 (const char * str1, const char * str2) {
+       if (str1 == NULL) {
+               return -(str1 != str2);
+       }
+       if (str2 == NULL) {
+               return str1 != str2;
+       }
+       return strcmp (str1, str2);
+}
+
+
+
+
diff --git a/src/moonshot-identity-manager-app.c b/src/moonshot-identity-manager-app.c
new file mode 100644 (file)
index 0000000..aeb3c9b
--- /dev/null
@@ -0,0 +1,273 @@
+/* moonshot-identity-manager-app.c generated by valac 0.10.4, the Vala compiler
+ * generated from moonshot-identity-manager-app.vala, do not modify */
+
+
+#include <glib.h>
+#include <glib-object.h>
+#include <gtk/gtk.h>
+#include <gio/gio.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <glib/gi18n-lib.h>
+#include <config.h>
+
+
+#define TYPE_IDENTITY_MANAGER_APP (identity_manager_app_get_type ())
+#define IDENTITY_MANAGER_APP(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), TYPE_IDENTITY_MANAGER_APP, IdentityManagerApp))
+#define IDENTITY_MANAGER_APP_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), TYPE_IDENTITY_MANAGER_APP, IdentityManagerAppClass))
+#define IS_IDENTITY_MANAGER_APP(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TYPE_IDENTITY_MANAGER_APP))
+#define IS_IDENTITY_MANAGER_APP_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), TYPE_IDENTITY_MANAGER_APP))
+#define IDENTITY_MANAGER_APP_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), TYPE_IDENTITY_MANAGER_APP, IdentityManagerAppClass))
+
+typedef struct _IdentityManagerApp IdentityManagerApp;
+typedef struct _IdentityManagerAppClass IdentityManagerAppClass;
+typedef struct _IdentityManagerAppPrivate IdentityManagerAppPrivate;
+
+#define TYPE_IDENTITY_MANAGER_MODEL (identity_manager_model_get_type ())
+#define IDENTITY_MANAGER_MODEL(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), TYPE_IDENTITY_MANAGER_MODEL, IdentityManagerModel))
+#define IDENTITY_MANAGER_MODEL_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), TYPE_IDENTITY_MANAGER_MODEL, IdentityManagerModelClass))
+#define IS_IDENTITY_MANAGER_MODEL(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TYPE_IDENTITY_MANAGER_MODEL))
+#define IS_IDENTITY_MANAGER_MODEL_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), TYPE_IDENTITY_MANAGER_MODEL))
+#define IDENTITY_MANAGER_MODEL_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), TYPE_IDENTITY_MANAGER_MODEL, IdentityManagerModelClass))
+
+typedef struct _IdentityManagerModel IdentityManagerModel;
+typedef struct _IdentityManagerModelClass IdentityManagerModelClass;
+
+#define TYPE_IDENTITY_MANAGER_VIEW (identity_manager_view_get_type ())
+#define IDENTITY_MANAGER_VIEW(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), TYPE_IDENTITY_MANAGER_VIEW, IdentityManagerView))
+#define IDENTITY_MANAGER_VIEW_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), TYPE_IDENTITY_MANAGER_VIEW, IdentityManagerViewClass))
+#define IS_IDENTITY_MANAGER_VIEW(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TYPE_IDENTITY_MANAGER_VIEW))
+#define IS_IDENTITY_MANAGER_VIEW_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), TYPE_IDENTITY_MANAGER_VIEW))
+#define IDENTITY_MANAGER_VIEW_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), TYPE_IDENTITY_MANAGER_VIEW, IdentityManagerViewClass))
+
+typedef struct _IdentityManagerView IdentityManagerView;
+typedef struct _IdentityManagerViewClass IdentityManagerViewClass;
+
+#define TYPE_MOONSHOT_SERVER (moonshot_server_get_type ())
+#define MOONSHOT_SERVER(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), TYPE_MOONSHOT_SERVER, MoonshotServer))
+#define MOONSHOT_SERVER_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), TYPE_MOONSHOT_SERVER, MoonshotServerClass))
+#define IS_MOONSHOT_SERVER(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TYPE_MOONSHOT_SERVER))
+#define IS_MOONSHOT_SERVER_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), TYPE_MOONSHOT_SERVER))
+#define MOONSHOT_SERVER_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), TYPE_MOONSHOT_SERVER, MoonshotServerClass))
+
+typedef struct _MoonshotServer MoonshotServer;
+typedef struct _MoonshotServerClass MoonshotServerClass;
+#define _g_object_unref0(var) ((var == NULL) ? NULL : (var = (g_object_unref (var), NULL)))
+#define _g_error_free0(var) ((var == NULL) ? NULL : (var = (g_error_free (var), NULL)))
+#define _g_free0(var) (var = (g_free (var), NULL))
+
+struct _IdentityManagerApp {
+       GtkWindow parent_instance;
+       IdentityManagerAppPrivate * priv;
+       IdentityManagerModel* model;
+};
+
+struct _IdentityManagerAppClass {
+       GtkWindowClass parent_class;
+};
+
+struct _IdentityManagerAppPrivate {
+       IdentityManagerView* view;
+       MoonshotServer* ipc_server;
+};
+
+
+static gpointer identity_manager_app_parent_class = NULL;
+
+GType identity_manager_app_get_type (void) G_GNUC_CONST;
+GType identity_manager_model_get_type (void) G_GNUC_CONST;
+GType identity_manager_view_get_type (void) G_GNUC_CONST;
+GType moonshot_server_get_type (void) G_GNUC_CONST;
+guint moonshot_server_register_object (void* object, GDBusConnection* connection, const gchar* path, GError** error);
+#define IDENTITY_MANAGER_APP_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), TYPE_IDENTITY_MANAGER_APP, IdentityManagerAppPrivate))
+enum  {
+       IDENTITY_MANAGER_APP_DUMMY_PROPERTY
+};
+#define IDENTITY_MANAGER_APP_WINDOW_WIDTH 400
+#define IDENTITY_MANAGER_APP_WINDOW_HEIGHT 500
+void identity_manager_app_show (IdentityManagerApp* self);
+IdentityManagerApp* identity_manager_app_new (void);
+IdentityManagerApp* identity_manager_app_construct (GType object_type);
+IdentityManagerModel* identity_manager_model_new (IdentityManagerApp* parent_app);
+IdentityManagerModel* identity_manager_model_construct (GType object_type, IdentityManagerApp* parent_app);
+IdentityManagerView* identity_manager_view_new (IdentityManagerApp* app);
+IdentityManagerView* identity_manager_view_construct (GType object_type, IdentityManagerApp* app);
+static void identity_manager_app_init_ipc_server (IdentityManagerApp* self);
+static void identity_manager_app_bus_acquired_cb (IdentityManagerApp* self, GDBusConnection* conn);
+MoonshotServer* moonshot_server_new (GtkWindow* window);
+MoonshotServer* moonshot_server_construct (GType object_type, GtkWindow* window);
+static void _identity_manager_app_bus_acquired_cb_gbus_acquired_callback (GDBusConnection* connection, const char* name, gpointer self);
+static void _lambda6_ (GDBusConnection* conn, const char* name, IdentityManagerApp* self);
+static void __lambda6__gbus_name_acquired_callback (GDBusConnection* connection, const char* name, gpointer self);
+static void _lambda7_ (GDBusConnection* conn, const char* name, IdentityManagerApp* self);
+static void __lambda7__gbus_name_lost_callback (GDBusConnection* connection, const char* name, gpointer self);
+static void identity_manager_app_finalize (GObject* obj);
+gint _vala_main (char** args, int args_length1);
+
+
+
+void identity_manager_app_show (IdentityManagerApp* self) {
+       g_return_if_fail (self != NULL);
+       gtk_widget_show ((GtkWidget*) self->priv->view);
+}
+
+
+IdentityManagerApp* identity_manager_app_construct (GType object_type) {
+       IdentityManagerApp * self;
+       IdentityManagerModel* _tmp0_;
+       IdentityManagerView* _tmp1_;
+       self = g_object_newv (object_type, 0, NULL);
+       self->model = (_tmp0_ = identity_manager_model_new (self), _g_object_unref0 (self->model), _tmp0_);
+       self->priv->view = (_tmp1_ = g_object_ref_sink (identity_manager_view_new (self)), _g_object_unref0 (self->priv->view), _tmp1_);
+       identity_manager_app_init_ipc_server (self);
+       gtk_widget_show ((GtkWidget*) self->priv->view);
+       return self;
+}
+
+
+IdentityManagerApp* identity_manager_app_new (void) {
+       return identity_manager_app_construct (TYPE_IDENTITY_MANAGER_APP);
+}
+
+
+static void identity_manager_app_bus_acquired_cb (IdentityManagerApp* self, GDBusConnection* conn) {
+       GError * _inner_error_ = NULL;
+       g_return_if_fail (self != NULL);
+       g_return_if_fail (conn != NULL);
+       {
+               moonshot_server_register_object (self->priv->ipc_server, conn, "/org/janet/moonshot", &_inner_error_);
+               if (_inner_error_ != NULL) {
+                       goto __catch0_g_error;
+               }
+       }
+       goto __finally0;
+       __catch0_g_error:
+       {
+               GError * e;
+               e = _inner_error_;
+               _inner_error_ = NULL;
+               {
+                       fprintf (stderr, "%s\n", e->message);
+                       _g_error_free0 (e);
+               }
+       }
+       __finally0:
+       if (_inner_error_ != NULL) {
+               g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code);
+               g_clear_error (&_inner_error_);
+               return;
+       }
+}
+
+
+static void _identity_manager_app_bus_acquired_cb_gbus_acquired_callback (GDBusConnection* connection, const char* name, gpointer self) {
+       identity_manager_app_bus_acquired_cb (self, connection);
+}
+
+
+static void _lambda6_ (GDBusConnection* conn, const char* name, IdentityManagerApp* self) {
+       g_return_if_fail (conn != NULL);
+       g_return_if_fail (name != NULL);
+}
+
+
+static void __lambda6__gbus_name_acquired_callback (GDBusConnection* connection, const char* name, gpointer self) {
+       _lambda6_ (connection, name, self);
+}
+
+
+static void _lambda7_ (GDBusConnection* conn, const char* name, IdentityManagerApp* self) {
+       g_return_if_fail (conn != NULL);
+       g_return_if_fail (name != NULL);
+       g_error ("moonshot-identity-manager-app.vala:78: Couldn't own name %s on DBus.", name);
+}
+
+
+static void __lambda7__gbus_name_lost_callback (GDBusConnection* connection, const char* name, gpointer self) {
+       _lambda7_ (connection, name, self);
+}
+
+
+static void identity_manager_app_init_ipc_server (IdentityManagerApp* self) {
+       MoonshotServer* _tmp0_;
+       g_return_if_fail (self != NULL);
+       self->priv->ipc_server = (_tmp0_ = moonshot_server_new ((GtkWindow*) self->priv->view), _g_object_unref0 (self->priv->ipc_server), _tmp0_);
+       g_bus_own_name_with_closures (G_BUS_TYPE_SESSION, "org.janet.Moonshot", G_BUS_NAME_OWNER_FLAGS_NONE, (GClosure*) g_cclosure_new ((GCallback) _identity_manager_app_bus_acquired_cb_gbus_acquired_callback, g_object_ref (self), g_object_unref), (GClosure*) g_cclosure_new ((GCallback) __lambda6__gbus_name_acquired_callback, g_object_ref (self), g_object_unref), (GClosure*) g_cclosure_new ((GCallback) __lambda7__gbus_name_lost_callback, g_object_ref (self), g_object_unref));
+}
+
+
+static void identity_manager_app_class_init (IdentityManagerAppClass * klass) {
+       identity_manager_app_parent_class = g_type_class_peek_parent (klass);
+       g_type_class_add_private (klass, sizeof (IdentityManagerAppPrivate));
+       G_OBJECT_CLASS (klass)->finalize = identity_manager_app_finalize;
+}
+
+
+static void identity_manager_app_instance_init (IdentityManagerApp * self) {
+       self->priv = IDENTITY_MANAGER_APP_GET_PRIVATE (self);
+}
+
+
+static void identity_manager_app_finalize (GObject* obj) {
+       IdentityManagerApp * self;
+       self = IDENTITY_MANAGER_APP (obj);
+       _g_object_unref0 (self->model);
+       _g_object_unref0 (self->priv->view);
+       _g_object_unref0 (self->priv->ipc_server);
+       G_OBJECT_CLASS (identity_manager_app_parent_class)->finalize (obj);
+}
+
+
+GType identity_manager_app_get_type (void) {
+       static volatile gsize identity_manager_app_type_id__volatile = 0;
+       if (g_once_init_enter (&identity_manager_app_type_id__volatile)) {
+               static const GTypeInfo g_define_type_info = { sizeof (IdentityManagerAppClass), (GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) identity_manager_app_class_init, (GClassFinalizeFunc) NULL, NULL, sizeof (IdentityManagerApp), 0, (GInstanceInitFunc) identity_manager_app_instance_init, NULL };
+               GType identity_manager_app_type_id;
+               identity_manager_app_type_id = g_type_register_static (GTK_TYPE_WINDOW, "IdentityManagerApp", &g_define_type_info, 0);
+               g_once_init_leave (&identity_manager_app_type_id__volatile, identity_manager_app_type_id);
+       }
+       return identity_manager_app_type_id__volatile;
+}
+
+
+gint _vala_main (char** args, int args_length1) {
+       gint result = 0;
+       IdentityManagerApp* app;
+       gtk_init (&args_length1, &args);
+       fprintf (stdout, "Hello\n");
+       {
+               char** arg_collection;
+               int arg_collection_length1;
+               int arg_it;
+               arg_collection = args;
+               arg_collection_length1 = args_length1;
+               for (arg_it = 0; arg_it < args_length1; arg_it = arg_it + 1) {
+                       char* arg;
+                       arg = g_strdup (arg_collection[arg_it]);
+                       {
+                               fprintf (stdout, "arg %s\n", arg);
+                               _g_free0 (arg);
+                       }
+               }
+       }
+       bindtextdomain (GETTEXT_PACKAGE, LOCALEDIR);
+       bind_textdomain_codeset (GETTEXT_PACKAGE, "UTF-8");
+       textdomain (GETTEXT_PACKAGE);
+       app = g_object_ref_sink (identity_manager_app_new ());
+       identity_manager_app_show (app);
+       gtk_main ();
+       result = 0;
+       _g_object_unref0 (app);
+       return result;
+}
+
+
+int main (int argc, char ** argv) {
+       g_type_init ();
+       return _vala_main (argv, argc);
+}
+
+
+
+
index 9e8c57c..aab4a26 100644 (file)
@@ -30,18 +30,18 @@ typedef struct _IdentityRequestPrivate IdentityRequestPrivate;
 typedef struct _IdCard IdCard;
 typedef struct _IdCardClass IdCardClass;
 
-#define TYPE_MAIN_WINDOW (main_window_get_type ())
-#define MAIN_WINDOW(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), TYPE_MAIN_WINDOW, MainWindow))
-#define MAIN_WINDOW_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), TYPE_MAIN_WINDOW, MainWindowClass))
-#define IS_MAIN_WINDOW(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TYPE_MAIN_WINDOW))
-#define IS_MAIN_WINDOW_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), TYPE_MAIN_WINDOW))
-#define MAIN_WINDOW_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), TYPE_MAIN_WINDOW, MainWindowClass))
-
-typedef struct _MainWindow MainWindow;
-typedef struct _MainWindowClass MainWindowClass;
+#define TYPE_IDENTITY_MANAGER_VIEW (identity_manager_view_get_type ())
+#define IDENTITY_MANAGER_VIEW(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), TYPE_IDENTITY_MANAGER_VIEW, IdentityManagerView))
+#define IDENTITY_MANAGER_VIEW_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), TYPE_IDENTITY_MANAGER_VIEW, IdentityManagerViewClass))
+#define IS_IDENTITY_MANAGER_VIEW(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TYPE_IDENTITY_MANAGER_VIEW))
+#define IS_IDENTITY_MANAGER_VIEW_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), TYPE_IDENTITY_MANAGER_VIEW))
+#define IDENTITY_MANAGER_VIEW_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), TYPE_IDENTITY_MANAGER_VIEW, IdentityManagerViewClass))
+
+typedef struct _IdentityManagerView IdentityManagerView;
+typedef struct _IdentityManagerViewClass IdentityManagerViewClass;
 #define _g_object_unref0(var) ((var == NULL) ? NULL : (var = (g_object_unref (var), NULL)))
 #define _g_free0(var) (var = (g_free (var), NULL))
-typedef struct _Block1Data Block1Data;
+typedef struct _Block2Data Block2Data;
 
 typedef void (*ReturnIdentityCallback) (IdentityRequest* request, void* user_data);
 struct _IdentityRequest {
@@ -60,13 +60,13 @@ struct _IdentityRequestClass {
 };
 
 struct _IdentityRequestPrivate {
-       MainWindow* main_window;
+       IdentityManagerView* main_window;
        ReturnIdentityCallback callback;
        gpointer callback_target;
        GDestroyNotify callback_target_destroy_notify;
 };
 
-struct _Block1Data {
+struct _Block2Data {
        int _ref_count_;
        IdentityRequest * self;
        ReturnIdentityCallback cb;
@@ -79,22 +79,22 @@ static gpointer identity_request_parent_class = NULL;
 
 GType identity_request_get_type (void) G_GNUC_CONST;
 GType id_card_get_type (void) G_GNUC_CONST;
-GType main_window_get_type (void) G_GNUC_CONST;
+GType identity_manager_view_get_type (void) G_GNUC_CONST;
 #define IDENTITY_REQUEST_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), TYPE_IDENTITY_REQUEST, IdentityRequestPrivate))
 enum  {
        IDENTITY_REQUEST_DUMMY_PROPERTY
 };
-IdentityRequest* identity_request_new (MainWindow* main_window, const char* nai, const char* password, const char* service);
-IdentityRequest* identity_request_construct (GType object_type, MainWindow* main_window, const char* nai, const char* password, const char* service);
-IdentityRequest* identity_request_new_default (MainWindow* main_window);
-IdentityRequest* identity_request_construct_default (GType object_type, MainWindow* main_window);
+IdentityRequest* identity_request_new (IdentityManagerView* main_window, const char* nai, const char* password, const char* service);
+IdentityRequest* identity_request_construct (GType object_type, IdentityManagerView* main_window, const char* nai, const char* password, const char* service);
+IdentityRequest* identity_request_new_default (IdentityManagerView* main_window);
+IdentityRequest* identity_request_construct_default (GType object_type, IdentityManagerView* main_window);
 void identity_request_set_callback (IdentityRequest* self, ReturnIdentityCallback cb, void* cb_target, GDestroyNotify cb_target_destroy_notify);
-static void _lambda0_ (IdentityRequest* IdCard, Block1Data* _data1_);
+static void _lambda0_ (IdentityRequest* IdCard, Block2Data* _data2_);
 static void __lambda0__return_identity_callback (IdentityRequest* request, gpointer self);
-static Block1Data* block1_data_ref (Block1Data* _data1_);
-static void block1_data_unref (Block1Data* _data1_);
+static Block2Data* block2_data_ref (Block2Data* _data2_);
+static void block2_data_unref (Block2Data* _data2_);
 gboolean identity_request_execute (IdentityRequest* self);
-void main_window_select_identity (MainWindow* self, IdentityRequest* request);
+void identity_manager_view_select_identity (IdentityManagerView* self, IdentityRequest* request);
 void identity_request_return_identity (IdentityRequest* self, IdCard* id_card);
 static void identity_request_finalize (GObject* obj);
 
@@ -105,9 +105,9 @@ static gpointer _g_object_ref0 (gpointer self) {
 }
 
 
-IdentityRequest* identity_request_construct (GType object_type, MainWindow* main_window, const char* nai, const char* password, const char* service) {
+IdentityRequest* identity_request_construct (GType object_type, IdentityManagerView* main_window, const char* nai, const char* password, const char* service) {
        IdentityRequest * self = NULL;
-       MainWindow* _tmp0_;
+       IdentityManagerView* _tmp0_;
        char* _tmp1_;
        char* _tmp2_;
        char* _tmp3_;
@@ -124,14 +124,14 @@ IdentityRequest* identity_request_construct (GType object_type, MainWindow* main
 }
 
 
-IdentityRequest* identity_request_new (MainWindow* main_window, const char* nai, const char* password, const char* service) {
+IdentityRequest* identity_request_new (IdentityManagerView* main_window, const char* nai, const char* password, const char* service) {
        return identity_request_construct (TYPE_IDENTITY_REQUEST, main_window, nai, password, service);
 }
 
 
-IdentityRequest* identity_request_construct_default (GType object_type, MainWindow* main_window) {
+IdentityRequest* identity_request_construct_default (GType object_type, IdentityManagerView* main_window) {
        IdentityRequest * self = NULL;
-       MainWindow* _tmp0_;
+       IdentityManagerView* _tmp0_;
        g_return_val_if_fail (main_window != NULL, NULL);
        self = (IdentityRequest*) g_object_new (object_type, NULL);
        self->priv->main_window = (_tmp0_ = _g_object_ref0 (main_window), _g_object_unref0 (self->priv->main_window), _tmp0_);
@@ -140,16 +140,16 @@ IdentityRequest* identity_request_construct_default (GType object_type, MainWind
 }
 
 
-IdentityRequest* identity_request_new_default (MainWindow* main_window) {
+IdentityRequest* identity_request_new_default (IdentityManagerView* main_window) {
        return identity_request_construct_default (TYPE_IDENTITY_REQUEST, main_window);
 }
 
 
-static void _lambda0_ (IdentityRequest* IdCard, Block1Data* _data1_) {
+static void _lambda0_ (IdentityRequest* IdCard, Block2Data* _data2_) {
        IdentityRequest * self;
-       self = _data1_->self;
+       self = _data2_->self;
        g_return_if_fail (IdCard != NULL);
-       _data1_->cb (IdCard, _data1_->cb_target);
+       _data2_->cb (IdCard, _data2_->cb_target);
 }
 
 
@@ -158,43 +158,43 @@ static void __lambda0__return_identity_callback (IdentityRequest* request, gpoin
 }
 
 
-static Block1Data* block1_data_ref (Block1Data* _data1_) {
-       g_atomic_int_inc (&_data1_->_ref_count_);
-       return _data1_;
+static Block2Data* block2_data_ref (Block2Data* _data2_) {
+       g_atomic_int_inc (&_data2_->_ref_count_);
+       return _data2_;
 }
 
 
-static void block1_data_unref (Block1Data* _data1_) {
-       if (g_atomic_int_dec_and_test (&_data1_->_ref_count_)) {
-               _g_object_unref0 (_data1_->self);
-               (_data1_->cb_target_destroy_notify == NULL) ? NULL : (_data1_->cb_target_destroy_notify (_data1_->cb_target), NULL);
-               _data1_->cb = NULL;
-               _data1_->cb_target = NULL;
-               _data1_->cb_target_destroy_notify = NULL;
-               g_slice_free (Block1Data, _data1_);
+static void block2_data_unref (Block2Data* _data2_) {
+       if (g_atomic_int_dec_and_test (&_data2_->_ref_count_)) {
+               _g_object_unref0 (_data2_->self);
+               (_data2_->cb_target_destroy_notify == NULL) ? NULL : (_data2_->cb_target_destroy_notify (_data2_->cb_target), NULL);
+               _data2_->cb = NULL;
+               _data2_->cb_target = NULL;
+               _data2_->cb_target_destroy_notify = NULL;
+               g_slice_free (Block2Data, _data2_);
        }
 }
 
 
 void identity_request_set_callback (IdentityRequest* self, ReturnIdentityCallback cb, void* cb_target, GDestroyNotify cb_target_destroy_notify) {
-       Block1Data* _data1_;
+       Block2Data* _data2_;
        ReturnIdentityCallback _tmp0_;
        g_return_if_fail (self != NULL);
-       _data1_ = g_slice_new0 (Block1Data);
-       _data1_->_ref_count_ = 1;
-       _data1_->self = g_object_ref (self);
-       _data1_->cb = cb;
-       _data1_->cb_target = cb_target;
-       _data1_->cb_target_destroy_notify = cb_target_destroy_notify;
-       self->priv->callback = (_tmp0_ = __lambda0__return_identity_callback, ((self->priv->callback_target_destroy_notify == NULL) ? NULL : (self->priv->callback_target_destroy_notify (self->priv->callback_target), NULL), self->priv->callback = NULL, self->priv->callback_target = NULL, self->priv->callback_target_destroy_notify = NULL), self->priv->callback_target = block1_data_ref (_data1_), self->priv->callback_target_destroy_notify = block1_data_unref, _tmp0_);
-       block1_data_unref (_data1_);
+       _data2_ = g_slice_new0 (Block2Data);
+       _data2_->_ref_count_ = 1;
+       _data2_->self = g_object_ref (self);
+       _data2_->cb = cb;
+       _data2_->cb_target = cb_target;
+       _data2_->cb_target_destroy_notify = cb_target_destroy_notify;
+       self->priv->callback = (_tmp0_ = __lambda0__return_identity_callback, ((self->priv->callback_target_destroy_notify == NULL) ? NULL : (self->priv->callback_target_destroy_notify (self->priv->callback_target), NULL), self->priv->callback = NULL, self->priv->callback_target = NULL, self->priv->callback_target_destroy_notify = NULL), self->priv->callback_target = block2_data_ref (_data2_), self->priv->callback_target_destroy_notify = block2_data_unref, _tmp0_);
+       block2_data_unref (_data2_);
 }
 
 
 gboolean identity_request_execute (IdentityRequest* self) {
        gboolean result = FALSE;
        g_return_val_if_fail (self != NULL, FALSE);
-       main_window_select_identity (self->priv->main_window, self);
+       identity_manager_view_select_identity (self->priv->main_window, self);
        result = FALSE;
        return result;
 }
diff --git a/src/moonshot-local-flat-file-store.c b/src/moonshot-local-flat-file-store.c
new file mode 100644 (file)
index 0000000..839d8b9
--- /dev/null
@@ -0,0 +1,741 @@
+/* moonshot-local-flat-file-store.c generated by valac 0.10.4, the Vala compiler
+ * generated from moonshot-local-flat-file-store.vala, do not modify */
+
+
+#include <glib.h>
+#include <glib-object.h>
+#include <gee.h>
+#include <stdlib.h>
+#include <string.h>
+#include <stdio.h>
+#include <gdk-pixbuf/gdk-pixdata.h>
+#include <config.h>
+#include <glib/gstdio.h>
+
+
+#define TYPE_IIDENTITY_CARD_STORE (iidentity_card_store_get_type ())
+#define IIDENTITY_CARD_STORE(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), TYPE_IIDENTITY_CARD_STORE, IIdentityCardStore))
+#define IS_IIDENTITY_CARD_STORE(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TYPE_IIDENTITY_CARD_STORE))
+#define IIDENTITY_CARD_STORE_GET_INTERFACE(obj) (G_TYPE_INSTANCE_GET_INTERFACE ((obj), TYPE_IIDENTITY_CARD_STORE, IIdentityCardStoreIface))
+
+typedef struct _IIdentityCardStore IIdentityCardStore;
+typedef struct _IIdentityCardStoreIface IIdentityCardStoreIface;
+
+#define TYPE_ID_CARD (id_card_get_type ())
+#define ID_CARD(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), TYPE_ID_CARD, IdCard))
+#define ID_CARD_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), TYPE_ID_CARD, IdCardClass))
+#define IS_ID_CARD(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TYPE_ID_CARD))
+#define IS_ID_CARD_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), TYPE_ID_CARD))
+#define ID_CARD_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), TYPE_ID_CARD, IdCardClass))
+
+typedef struct _IdCard IdCard;
+typedef struct _IdCardClass IdCardClass;
+
+#define TYPE_LOCAL_FLAT_FILE_STORE (local_flat_file_store_get_type ())
+#define LOCAL_FLAT_FILE_STORE(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), TYPE_LOCAL_FLAT_FILE_STORE, LocalFlatFileStore))
+#define LOCAL_FLAT_FILE_STORE_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), TYPE_LOCAL_FLAT_FILE_STORE, LocalFlatFileStoreClass))
+#define IS_LOCAL_FLAT_FILE_STORE(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TYPE_LOCAL_FLAT_FILE_STORE))
+#define IS_LOCAL_FLAT_FILE_STORE_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), TYPE_LOCAL_FLAT_FILE_STORE))
+#define LOCAL_FLAT_FILE_STORE_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), TYPE_LOCAL_FLAT_FILE_STORE, LocalFlatFileStoreClass))
+
+typedef struct _LocalFlatFileStore LocalFlatFileStore;
+typedef struct _LocalFlatFileStoreClass LocalFlatFileStoreClass;
+typedef struct _LocalFlatFileStorePrivate LocalFlatFileStorePrivate;
+#define _g_object_unref0(var) ((var == NULL) ? NULL : (var = (g_object_unref (var), NULL)))
+#define _g_error_free0(var) ((var == NULL) ? NULL : (var = (g_error_free (var), NULL)))
+#define _g_free0(var) (var = (g_free (var), NULL))
+#define _g_key_file_free0(var) ((var == NULL) ? NULL : (var = (g_key_file_free (var), NULL)))
+
+#define TYPE_RULE (rule_get_type ())
+typedef struct _Rule Rule;
+
+#define TYPE_TRUST_ANCHOR (trust_anchor_get_type ())
+#define TRUST_ANCHOR(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), TYPE_TRUST_ANCHOR, TrustAnchor))
+#define TRUST_ANCHOR_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), TYPE_TRUST_ANCHOR, TrustAnchorClass))
+#define IS_TRUST_ANCHOR(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TYPE_TRUST_ANCHOR))
+#define IS_TRUST_ANCHOR_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), TYPE_TRUST_ANCHOR))
+#define TRUST_ANCHOR_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), TYPE_TRUST_ANCHOR, TrustAnchorClass))
+
+typedef struct _TrustAnchor TrustAnchor;
+typedef struct _TrustAnchorClass TrustAnchorClass;
+
+struct _IIdentityCardStoreIface {
+       GTypeInterface parent_iface;
+       void (*add_card) (IIdentityCardStore* self, IdCard* card);
+       void (*remove_card) (IIdentityCardStore* self, IdCard* card);
+       void (*update_card) (IIdentityCardStore* self, IdCard* card);
+       GeeLinkedList* (*get_card_list) (IIdentityCardStore* self);
+};
+
+struct _LocalFlatFileStore {
+       GObject parent_instance;
+       LocalFlatFileStorePrivate * priv;
+};
+
+struct _LocalFlatFileStoreClass {
+       GObjectClass parent_class;
+};
+
+struct _LocalFlatFileStorePrivate {
+       GeeLinkedList* id_card_list;
+};
+
+struct _Rule {
+       char* pattern;
+       char* always_confirm;
+};
+
+
+static gpointer local_flat_file_store_parent_class = NULL;
+static IIdentityCardStoreIface* local_flat_file_store_iidentity_card_store_parent_iface = NULL;
+
+GType id_card_get_type (void) G_GNUC_CONST;
+GType iidentity_card_store_get_type (void) G_GNUC_CONST;
+GType local_flat_file_store_get_type (void) G_GNUC_CONST;
+#define LOCAL_FLAT_FILE_STORE_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), TYPE_LOCAL_FLAT_FILE_STORE, LocalFlatFileStorePrivate))
+enum  {
+       LOCAL_FLAT_FILE_STORE_DUMMY_PROPERTY
+};
+#define LOCAL_FLAT_FILE_STORE_FILE_NAME "identities.txt"
+static void local_flat_file_store_real_add_card (IIdentityCardStore* base, IdCard* card);
+void local_flat_file_store_store_id_cards (LocalFlatFileStore* self);
+static void local_flat_file_store_real_update_card (IIdentityCardStore* base, IdCard* card);
+static void local_flat_file_store_real_remove_card (IIdentityCardStore* base, IdCard* card);
+static GeeLinkedList* local_flat_file_store_real_get_card_list (IIdentityCardStore* base);
+static void local_flat_file_store_load_id_cards (LocalFlatFileStore* self);
+static char* local_flat_file_store_get_data_dir (LocalFlatFileStore* self);
+IdCard* id_card_new (void);
+IdCard* id_card_construct (GType object_type);
+void id_card_set_issuer (IdCard* self, const char* value);
+void id_card_set_username (IdCard* self, const char* value);
+void id_card_set_password (IdCard* self, const char* value);
+void id_card_set_services (IdCard* self, char** value, int value_length1);
+void id_card_set_display_name (IdCard* self, const char* value);
+GdkPixbuf* find_icon (const char* name, gint size);
+GType rule_get_type (void) G_GNUC_CONST;
+Rule* rule_dup (const Rule* self);
+void rule_free (Rule* self);
+void rule_copy (const Rule* self, Rule* dest);
+void rule_destroy (Rule* self);
+void id_card_set_rules (IdCard* self, Rule* value, int value_length1);
+static void _vala_Rule_array_free (Rule* array, gint array_length);
+GType trust_anchor_get_type (void) G_GNUC_CONST;
+TrustAnchor* id_card_get_trust_anchor (IdCard* self);
+void trust_anchor_set_ca_cert (TrustAnchor* self, const char* value);
+void trust_anchor_set_subject (TrustAnchor* self, const char* value);
+void trust_anchor_set_subject_alt (TrustAnchor* self, const char* value);
+void trust_anchor_set_server_cert (TrustAnchor* self, const char* value);
+Rule* id_card_get_rules (IdCard* self, int* result_length1);
+const char* id_card_get_issuer (IdCard* self);
+const char* id_card_get_display_name (IdCard* self);
+const char* id_card_get_username (IdCard* self);
+const char* id_card_get_password (IdCard* self);
+char** id_card_get_services (IdCard* self, int* result_length1);
+static char** _vala_array_dup1 (char** self, int length);
+const char* trust_anchor_get_ca_cert (TrustAnchor* self);
+const char* trust_anchor_get_subject (TrustAnchor* self);
+const char* trust_anchor_get_subject_alt (TrustAnchor* self);
+const char* trust_anchor_get_server_cert (TrustAnchor* self);
+LocalFlatFileStore* local_flat_file_store_new (void);
+LocalFlatFileStore* local_flat_file_store_construct (GType object_type);
+static void local_flat_file_store_finalize (GObject* obj);
+static void _vala_array_destroy (gpointer array, gint array_length, GDestroyNotify destroy_func);
+static void _vala_array_free (gpointer array, gint array_length, GDestroyNotify destroy_func);
+
+
+
+static void local_flat_file_store_real_add_card (IIdentityCardStore* base, IdCard* card) {
+       LocalFlatFileStore * self;
+       self = (LocalFlatFileStore*) base;
+       g_return_if_fail (card != NULL);
+       gee_abstract_collection_add ((GeeAbstractCollection*) self->priv->id_card_list, card);
+       local_flat_file_store_store_id_cards (self);
+}
+
+
+static void local_flat_file_store_real_update_card (IIdentityCardStore* base, IdCard* card) {
+       LocalFlatFileStore * self;
+       self = (LocalFlatFileStore*) base;
+       g_return_if_fail (card != NULL);
+       gee_abstract_collection_remove ((GeeAbstractCollection*) self->priv->id_card_list, card);
+       gee_abstract_collection_add ((GeeAbstractCollection*) self->priv->id_card_list, card);
+       local_flat_file_store_store_id_cards (self);
+}
+
+
+static void local_flat_file_store_real_remove_card (IIdentityCardStore* base, IdCard* card) {
+       LocalFlatFileStore * self;
+       self = (LocalFlatFileStore*) base;
+       g_return_if_fail (card != NULL);
+       gee_abstract_collection_remove ((GeeAbstractCollection*) self->priv->id_card_list, card);
+       local_flat_file_store_store_id_cards (self);
+}
+
+
+static gpointer _g_object_ref0 (gpointer self) {
+       return self ? g_object_ref (self) : NULL;
+}
+
+
+static GeeLinkedList* local_flat_file_store_real_get_card_list (IIdentityCardStore* base) {
+       LocalFlatFileStore * self;
+       GeeLinkedList* result = NULL;
+       self = (LocalFlatFileStore*) base;
+       result = _g_object_ref0 (self->priv->id_card_list);
+       return result;
+}
+
+
+static void _vala_Rule_array_free (Rule* array, gint array_length) {
+       if (array != NULL) {
+               int i;
+               for (i = 0; i < array_length; i = i + 1) {
+                       rule_destroy (&array[i]);
+               }
+       }
+       g_free (array);
+}
+
+
+static void local_flat_file_store_load_id_cards (LocalFlatFileStore* self) {
+       GKeyFile* key_file;
+       char* path;
+       char* filename;
+       gint identities_uris_length1;
+       gint _identities_uris_size_;
+       char** _tmp1_;
+       gsize _tmp0_;
+       char** identities_uris;
+       GError * _inner_error_ = NULL;
+       g_return_if_fail (self != NULL);
+       gee_abstract_collection_clear ((GeeAbstractCollection*) self->priv->id_card_list);
+       key_file = g_key_file_new ();
+       path = local_flat_file_store_get_data_dir (self);
+       filename = g_build_filename (path, LOCAL_FLAT_FILE_STORE_FILE_NAME, NULL);
+       {
+               g_key_file_load_from_file (key_file, filename, G_KEY_FILE_NONE, &_inner_error_);
+               if (_inner_error_ != NULL) {
+                       goto __catch2_g_error;
+               }
+       }
+       goto __finally2;
+       __catch2_g_error:
+       {
+               GError * e;
+               e = _inner_error_;
+               _inner_error_ = NULL;
+               {
+                       fprintf (stdout, "Error: %s\n", e->message);
+                       _g_error_free0 (e);
+                       _g_free0 (filename);
+                       _g_free0 (path);
+                       _g_key_file_free0 (key_file);
+                       return;
+               }
+       }
+       __finally2:
+       if (_inner_error_ != NULL) {
+               _g_free0 (filename);
+               _g_free0 (path);
+               _g_key_file_free0 (key_file);
+               g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code);
+               g_clear_error (&_inner_error_);
+               return;
+       }
+       identities_uris = (_tmp1_ = g_key_file_get_groups (key_file, &_tmp0_), identities_uris_length1 = _tmp0_, _identities_uris_size_ = identities_uris_length1, _tmp1_);
+       {
+               char** identity_collection;
+               int identity_collection_length1;
+               int identity_it;
+               identity_collection = identities_uris;
+               identity_collection_length1 = identities_uris_length1;
+               for (identity_it = 0; identity_it < identities_uris_length1; identity_it = identity_it + 1) {
+                       char* identity;
+                       identity = g_strdup (identity_collection[identity_it]);
+                       {
+                               {
+                                       IdCard* id_card;
+                                       char* _tmp2_;
+                                       char* _tmp3_;
+                                       char* _tmp4_;
+                                       char* _tmp5_;
+                                       char* _tmp6_;
+                                       char* _tmp7_;
+                                       gint _tmp9__length1;
+                                       gint __tmp9__size_;
+                                       char** _tmp10_;
+                                       gsize _tmp8_;
+                                       char** _tmp9_;
+                                       char** _tmp11_;
+                                       gint _tmp11__length1;
+                                       char** _tmp12_;
+                                       char* _tmp13_;
+                                       char* _tmp14_;
+                                       gboolean _tmp15_ = FALSE;
+                                       gboolean _tmp16_;
+                                       char* _tmp27_;
+                                       char* _tmp28_;
+                                       char* _tmp29_;
+                                       char* _tmp30_;
+                                       char* _tmp31_;
+                                       char* _tmp32_;
+                                       char* _tmp33_;
+                                       char* _tmp34_;
+                                       id_card = id_card_new ();
+                                       _tmp2_ = g_key_file_get_string (key_file, identity, "Issuer", &_inner_error_);
+                                       if (_inner_error_ != NULL) {
+                                               _g_object_unref0 (id_card);
+                                               goto __catch3_g_error;
+                                       }
+                                       id_card_set_issuer (id_card, _tmp3_ = _tmp2_);
+                                       _g_free0 (_tmp3_);
+                                       _tmp4_ = g_key_file_get_string (key_file, identity, "Username", &_inner_error_);
+                                       if (_inner_error_ != NULL) {
+                                               _g_object_unref0 (id_card);
+                                               goto __catch3_g_error;
+                                       }
+                                       id_card_set_username (id_card, _tmp5_ = _tmp4_);
+                                       _g_free0 (_tmp5_);
+                                       _tmp6_ = g_key_file_get_string (key_file, identity, "Password", &_inner_error_);
+                                       if (_inner_error_ != NULL) {
+                                               _g_object_unref0 (id_card);
+                                               goto __catch3_g_error;
+                                       }
+                                       id_card_set_password (id_card, _tmp7_ = _tmp6_);
+                                       _g_free0 (_tmp7_);
+                                       _tmp9_ = (_tmp10_ = g_key_file_get_string_list (key_file, identity, "Services", &_tmp8_, &_inner_error_), _tmp9__length1 = _tmp8_, __tmp9__size_ = _tmp9__length1, _tmp10_);
+                                       if (_inner_error_ != NULL) {
+                                               _g_object_unref0 (id_card);
+                                               goto __catch3_g_error;
+                                       }
+                                       _tmp12_ = (_tmp11_ = _tmp9_, _tmp11__length1 = _tmp9__length1, _tmp11_);
+                                       id_card_set_services (id_card, _tmp12_, _tmp9__length1);
+                                       _tmp11_ = (_vala_array_free (_tmp11_, _tmp11__length1, (GDestroyNotify) g_free), NULL);
+                                       _tmp13_ = g_key_file_get_string (key_file, identity, "DisplayName", &_inner_error_);
+                                       if (_inner_error_ != NULL) {
+                                               _g_object_unref0 (id_card);
+                                               goto __catch3_g_error;
+                                       }
+                                       id_card_set_display_name (id_card, _tmp14_ = _tmp13_);
+                                       _g_free0 (_tmp14_);
+                                       g_object_set_data_full ((GObject*) id_card, "pixbuf", find_icon ("avatar-default", 48), g_object_unref);
+                                       _tmp16_ = g_key_file_has_key (key_file, identity, "Rules-Patterns", &_inner_error_);
+                                       if (_inner_error_ != NULL) {
+                                               _g_object_unref0 (id_card);
+                                               goto __catch3_g_error;
+                                       }
+                                       if (_tmp16_) {
+                                               gboolean _tmp17_;
+                                               _tmp17_ = g_key_file_has_key (key_file, identity, "Rules-AlwaysConfirm", &_inner_error_);
+                                               if (_inner_error_ != NULL) {
+                                                       _g_object_unref0 (id_card);
+                                                       goto __catch3_g_error;
+                                               }
+                                               _tmp15_ = _tmp17_;
+                                       } else {
+                                               _tmp15_ = FALSE;
+                                       }
+                                       if (_tmp15_) {
+                                               gint rules_patterns_length1;
+                                               gint _rules_patterns_size_;
+                                               char** _tmp19_;
+                                               gsize _tmp18_;
+                                               char** rules_patterns;
+                                               gint rules_always_conf_length1;
+                                               gint _rules_always_conf_size_;
+                                               char** _tmp21_;
+                                               gsize _tmp20_;
+                                               char** rules_always_conf;
+                                               rules_patterns = (_tmp19_ = g_key_file_get_string_list (key_file, identity, "Rules-Patterns", &_tmp18_, &_inner_error_), rules_patterns_length1 = _tmp18_, _rules_patterns_size_ = rules_patterns_length1, _tmp19_);
+                                               if (_inner_error_ != NULL) {
+                                                       _g_object_unref0 (id_card);
+                                                       goto __catch3_g_error;
+                                               }
+                                               rules_always_conf = (_tmp21_ = g_key_file_get_string_list (key_file, identity, "Rules-AlwaysConfirm", &_tmp20_, &_inner_error_), rules_always_conf_length1 = _tmp20_, _rules_always_conf_size_ = rules_always_conf_length1, _tmp21_);
+                                               if (_inner_error_ != NULL) {
+                                                       rules_patterns = (_vala_array_free (rules_patterns, rules_patterns_length1, (GDestroyNotify) g_free), NULL);
+                                                       _g_object_unref0 (id_card);
+                                                       goto __catch3_g_error;
+                                               }
+                                               if (rules_patterns_length1 == rules_always_conf_length1) {
+                                                       gint rules_length1;
+                                                       gint _rules_size_;
+                                                       Rule* _tmp22_;
+                                                       Rule* rules;
+                                                       Rule* _tmp26_;
+                                                       rules = (_tmp22_ = g_new0 (Rule, rules_patterns_length1), rules_length1 = rules_patterns_length1, _rules_size_ = rules_length1, _tmp22_);
+                                                       {
+                                                               gint i;
+                                                               i = 0;
+                                                               {
+                                                                       gboolean _tmp23_;
+                                                                       _tmp23_ = TRUE;
+                                                                       while (TRUE) {
+                                                                               Rule _tmp24_ = {0};
+                                                                               Rule _tmp25_;
+                                                                               if (!_tmp23_) {
+                                                                                       i++;
+                                                                               }
+                                                                               _tmp23_ = FALSE;
+                                                                               if (!(i < rules_patterns_length1)) {
+                                                                                       break;
+                                                                               }
+                                                                               rules[i] = (_tmp25_ = (_tmp24_.pattern = g_strdup (rules_patterns[i]), _tmp24_.always_confirm = g_strdup (rules_always_conf[i]), _tmp24_), rule_destroy (&rules[i]), _tmp25_);
+                                                                       }
+                                                               }
+                                                       }
+                                                       _tmp26_ = rules;
+                                                       id_card_set_rules (id_card, _tmp26_, rules_length1);
+                                                       rules = (_vala_Rule_array_free (rules, rules_length1), NULL);
+                                               }
+                                               rules_always_conf = (_vala_array_free (rules_always_conf, rules_always_conf_length1, (GDestroyNotify) g_free), NULL);
+                                               rules_patterns = (_vala_array_free (rules_patterns, rules_patterns_length1, (GDestroyNotify) g_free), NULL);
+                                       }
+                                       _tmp27_ = g_key_file_get_string (key_file, identity, "CA-Cert", &_inner_error_);
+                                       if (_inner_error_ != NULL) {
+                                               _g_object_unref0 (id_card);
+                                               goto __catch3_g_error;
+                                       }
+                                       trust_anchor_set_ca_cert (id_card_get_trust_anchor (id_card), _tmp28_ = _tmp27_);
+                                       _g_free0 (_tmp28_);
+                                       _tmp29_ = g_key_file_get_string (key_file, identity, "Subject", &_inner_error_);
+                                       if (_inner_error_ != NULL) {
+                                               _g_object_unref0 (id_card);
+                                               goto __catch3_g_error;
+                                       }
+                                       trust_anchor_set_subject (id_card_get_trust_anchor (id_card), _tmp30_ = _tmp29_);
+                                       _g_free0 (_tmp30_);
+                                       _tmp31_ = g_key_file_get_string (key_file, identity, "SubjectAlt", &_inner_error_);
+                                       if (_inner_error_ != NULL) {
+                                               _g_object_unref0 (id_card);
+                                               goto __catch3_g_error;
+                                       }
+                                       trust_anchor_set_subject_alt (id_card_get_trust_anchor (id_card), _tmp32_ = _tmp31_);
+                                       _g_free0 (_tmp32_);
+                                       _tmp33_ = g_key_file_get_string (key_file, identity, "ServerCert", &_inner_error_);
+                                       if (_inner_error_ != NULL) {
+                                               _g_object_unref0 (id_card);
+                                               goto __catch3_g_error;
+                                       }
+                                       trust_anchor_set_server_cert (id_card_get_trust_anchor (id_card), _tmp34_ = _tmp33_);
+                                       _g_free0 (_tmp34_);
+                                       gee_abstract_collection_add ((GeeAbstractCollection*) self->priv->id_card_list, id_card);
+                                       _g_object_unref0 (id_card);
+                               }
+                               goto __finally3;
+                               __catch3_g_error:
+                               {
+                                       GError * e;
+                                       e = _inner_error_;
+                                       _inner_error_ = NULL;
+                                       {
+                                               fprintf (stdout, "Error:  %s\n", e->message);
+                                               _g_error_free0 (e);
+                                       }
+                               }
+                               __finally3:
+                               if (_inner_error_ != NULL) {
+                                       _g_free0 (identity);
+                                       identities_uris = (_vala_array_free (identities_uris, identities_uris_length1, (GDestroyNotify) g_free), NULL);
+                                       _g_free0 (filename);
+                                       _g_free0 (path);
+                                       _g_key_file_free0 (key_file);
+                                       g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code);
+                                       g_clear_error (&_inner_error_);
+                                       return;
+                               }
+                               _g_free0 (identity);
+                       }
+               }
+       }
+       identities_uris = (_vala_array_free (identities_uris, identities_uris_length1, (GDestroyNotify) g_free), NULL);
+       _g_free0 (filename);
+       _g_free0 (path);
+       _g_key_file_free0 (key_file);
+}
+
+
+static char* local_flat_file_store_get_data_dir (LocalFlatFileStore* self) {
+       char* result = NULL;
+       char* path;
+       char* _tmp0_;
+       g_return_val_if_fail (self != NULL, NULL);
+       path = NULL;
+       path = (_tmp0_ = g_build_filename (g_get_user_data_dir (), PACKAGE_TARNAME, NULL), _g_free0 (path), _tmp0_);
+       if (!g_file_test (path, G_FILE_TEST_EXISTS)) {
+               g_mkdir_with_parents (path, 0700);
+       }
+       result = path;
+       return result;
+}
+
+
+static char** _vala_array_dup1 (char** self, int length) {
+       char** result;
+       int i;
+       result = g_new0 (char*, length + 1);
+       for (i = 0; i < length; i++) {
+               result[i] = g_strdup (self[i]);
+       }
+       return result;
+}
+
+
+void local_flat_file_store_store_id_cards (LocalFlatFileStore* self) {
+       GKeyFile* key_file;
+       char* text;
+       GError * _inner_error_ = NULL;
+       g_return_if_fail (self != NULL);
+       key_file = g_key_file_new ();
+       {
+               GeeIterator* _id_card_it;
+               _id_card_it = gee_abstract_collection_iterator ((GeeAbstractCollection*) self->priv->id_card_list);
+               while (TRUE) {
+                       IdCard* id_card;
+                       gint rules_patterns_length1;
+                       gint _rules_patterns_size_;
+                       char** _tmp1_;
+                       gint _tmp0_;
+                       char** rules_patterns;
+                       gint rules_always_conf_length1;
+                       gint _rules_always_conf_size_;
+                       char** _tmp3_;
+                       gint _tmp2_;
+                       char** rules_always_conf;
+                       char* _tmp10_;
+                       char* _tmp12_;
+                       char* _tmp14_;
+                       char* _tmp16_;
+                       gint _tmp20__length1;
+                       gint __tmp20__size_;
+                       char** _tmp21_;
+                       gint _tmp18_;
+                       char** _tmp19_;
+                       char** _tmp20_;
+                       gint _tmp24_;
+                       char* _tmp25_;
+                       char* _tmp27_;
+                       char* _tmp29_;
+                       char* _tmp31_;
+                       if (!gee_iterator_next (_id_card_it)) {
+                               break;
+                       }
+                       id_card = (IdCard*) gee_iterator_get (_id_card_it);
+                       rules_patterns = (_tmp1_ = g_new0 (char*, _tmp0_ + 1), rules_patterns_length1 = _tmp0_, _rules_patterns_size_ = rules_patterns_length1, _tmp1_);
+                       rules_always_conf = (_tmp3_ = g_new0 (char*, _tmp2_ + 1), rules_always_conf_length1 = _tmp2_, _rules_always_conf_size_ = rules_always_conf_length1, _tmp3_);
+                       {
+                               gint i;
+                               i = 0;
+                               {
+                                       gboolean _tmp4_;
+                                       _tmp4_ = TRUE;
+                                       while (TRUE) {
+                                               gint _tmp5_;
+                                               gint _tmp6_;
+                                               char* _tmp7_;
+                                               gint _tmp8_;
+                                               char* _tmp9_;
+                                               if (!_tmp4_) {
+                                                       i++;
+                                               }
+                                               _tmp4_ = FALSE;
+                                               if (!(i < _tmp5_)) {
+                                                       break;
+                                               }
+                                               rules_patterns[i] = (_tmp7_ = g_strdup (id_card_get_rules (id_card, &_tmp6_)[i].pattern), _g_free0 (rules_patterns[i]), _tmp7_);
+                                               rules_always_conf[i] = (_tmp9_ = g_strdup (id_card_get_rules (id_card, &_tmp8_)[i].always_confirm), _g_free0 (rules_always_conf[i]), _tmp9_);
+                                       }
+                               }
+                       }
+                       _tmp10_ = g_strdup (id_card_get_issuer (id_card));
+                       if (_tmp10_ == NULL) {
+                               char* _tmp11_;
+                               _tmp10_ = (_tmp11_ = g_strdup (""), _g_free0 (_tmp10_), _tmp11_);
+                       }
+                       g_key_file_set_string (key_file, id_card_get_display_name (id_card), "Issuer", _tmp10_);
+                       _tmp12_ = g_strdup (id_card_get_display_name (id_card));
+                       if (_tmp12_ == NULL) {
+                               char* _tmp13_;
+                               _tmp12_ = (_tmp13_ = g_strdup (""), _g_free0 (_tmp12_), _tmp13_);
+                       }
+                       g_key_file_set_string (key_file, id_card_get_display_name (id_card), "DisplayName", _tmp12_);
+                       _tmp14_ = g_strdup (id_card_get_username (id_card));
+                       if (_tmp14_ == NULL) {
+                               char* _tmp15_;
+                               _tmp14_ = (_tmp15_ = g_strdup (""), _g_free0 (_tmp14_), _tmp15_);
+                       }
+                       g_key_file_set_string (key_file, id_card_get_display_name (id_card), "Username", _tmp14_);
+                       _tmp16_ = g_strdup (id_card_get_password (id_card));
+                       if (_tmp16_ == NULL) {
+                               char* _tmp17_;
+                               _tmp16_ = (_tmp17_ = g_strdup (""), _g_free0 (_tmp16_), _tmp17_);
+                       }
+                       g_key_file_set_string (key_file, id_card_get_display_name (id_card), "Password", _tmp16_);
+                       _tmp20_ = (_tmp21_ = (_tmp19_ = id_card_get_services (id_card, &_tmp18_), (_tmp19_ == NULL) ? ((gpointer) _tmp19_) : _vala_array_dup1 (_tmp19_, _tmp18_)), _tmp20__length1 = _tmp18_, __tmp20__size_ = _tmp20__length1, _tmp21_);
+                       if (_tmp20_ == NULL) {
+                               char** _tmp22_ = NULL;
+                               char** _tmp23_;
+                               _tmp20_ = (_tmp23_ = (_tmp22_ = g_new0 (char*, 0 + 1), _tmp22_), _tmp20_ = (_vala_array_free (_tmp20_, _tmp20__length1, (GDestroyNotify) g_free), NULL), _tmp20__length1 = 0, __tmp20__size_ = _tmp20__length1, _tmp23_);
+                       }
+                       g_key_file_set_string_list (key_file, id_card_get_display_name (id_card), "Services", (const gchar* const*) _tmp20_, _tmp20__length1);
+                       if (_tmp24_ > 0) {
+                               g_key_file_set_string_list (key_file, id_card_get_display_name (id_card), "Rules-Patterns", (const gchar* const*) rules_patterns, rules_patterns_length1);
+                               g_key_file_set_string_list (key_file, id_card_get_display_name (id_card), "Rules-AlwaysConfirm", (const gchar* const*) rules_always_conf, rules_always_conf_length1);
+                       }
+                       _tmp25_ = g_strdup (trust_anchor_get_ca_cert (id_card_get_trust_anchor (id_card)));
+                       if (_tmp25_ == NULL) {
+                               char* _tmp26_;
+                               _tmp25_ = (_tmp26_ = g_strdup (""), _g_free0 (_tmp25_), _tmp26_);
+                       }
+                       g_key_file_set_string (key_file, id_card_get_display_name (id_card), "CA-Cert", _tmp25_);
+                       _tmp27_ = g_strdup (trust_anchor_get_subject (id_card_get_trust_anchor (id_card)));
+                       if (_tmp27_ == NULL) {
+                               char* _tmp28_;
+                               _tmp27_ = (_tmp28_ = g_strdup (""), _g_free0 (_tmp27_), _tmp28_);
+                       }
+                       g_key_file_set_string (key_file, id_card_get_display_name (id_card), "Subject", _tmp27_);
+                       _tmp29_ = g_strdup (trust_anchor_get_subject_alt (id_card_get_trust_anchor (id_card)));
+                       if (_tmp29_ == NULL) {
+                               char* _tmp30_;
+                               _tmp29_ = (_tmp30_ = g_strdup (""), _g_free0 (_tmp29_), _tmp30_);
+                       }
+                       g_key_file_set_string (key_file, id_card_get_display_name (id_card), "SubjectAlt", _tmp29_);
+                       _tmp31_ = g_strdup (trust_anchor_get_server_cert (id_card_get_trust_anchor (id_card)));
+                       if (_tmp31_ == NULL) {
+                               char* _tmp32_;
+                               _tmp31_ = (_tmp32_ = g_strdup (""), _g_free0 (_tmp31_), _tmp32_);
+                       }
+                       g_key_file_set_string (key_file, id_card_get_display_name (id_card), "ServerCert", _tmp31_);
+                       _g_free0 (_tmp31_);
+                       _g_free0 (_tmp29_);
+                       _g_free0 (_tmp27_);
+                       _g_free0 (_tmp25_);
+                       _tmp20_ = (_vala_array_free (_tmp20_, _tmp20__length1, (GDestroyNotify) g_free), NULL);
+                       _g_free0 (_tmp16_);
+                       _g_free0 (_tmp14_);
+                       _g_free0 (_tmp12_);
+                       _g_free0 (_tmp10_);
+                       rules_always_conf = (_vala_array_free (rules_always_conf, rules_always_conf_length1, (GDestroyNotify) g_free), NULL);
+                       rules_patterns = (_vala_array_free (rules_patterns, rules_patterns_length1, (GDestroyNotify) g_free), NULL);
+                       _g_object_unref0 (id_card);
+               }
+               _g_object_unref0 (_id_card_it);
+       }
+       text = g_key_file_to_data (key_file, NULL, NULL);
+       {
+               char* path;
+               char* filename;
+               path = local_flat_file_store_get_data_dir (self);
+               filename = g_build_filename (path, LOCAL_FLAT_FILE_STORE_FILE_NAME, NULL);
+               g_file_set_contents (filename, text, (gssize) (-1), &_inner_error_);
+               if (_inner_error_ != NULL) {
+                       _g_free0 (filename);
+                       _g_free0 (path);
+                       goto __catch4_g_error;
+               }
+               _g_free0 (filename);
+               _g_free0 (path);
+       }
+       goto __finally4;
+       __catch4_g_error:
+       {
+               GError * e;
+               e = _inner_error_;
+               _inner_error_ = NULL;
+               {
+                       fprintf (stdout, "Error:  %s\n", e->message);
+                       _g_error_free0 (e);
+               }
+       }
+       __finally4:
+       if (_inner_error_ != NULL) {
+               _g_free0 (text);
+               _g_key_file_free0 (key_file);
+               g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code);
+               g_clear_error (&_inner_error_);
+               return;
+       }
+       local_flat_file_store_load_id_cards (self);
+       _g_free0 (text);
+       _g_key_file_free0 (key_file);
+}
+
+
+LocalFlatFileStore* local_flat_file_store_construct (GType object_type) {
+       LocalFlatFileStore * self = NULL;
+       GeeLinkedList* _tmp0_;
+       self = (LocalFlatFileStore*) g_object_new (object_type, NULL);
+       self->priv->id_card_list = (_tmp0_ = gee_linked_list_new (TYPE_ID_CARD, (GBoxedCopyFunc) g_object_ref, g_object_unref, NULL), _g_object_unref0 (self->priv->id_card_list), _tmp0_);
+       local_flat_file_store_load_id_cards (self);
+       return self;
+}
+
+
+LocalFlatFileStore* local_flat_file_store_new (void) {
+       return local_flat_file_store_construct (TYPE_LOCAL_FLAT_FILE_STORE);
+}
+
+
+static void local_flat_file_store_class_init (LocalFlatFileStoreClass * klass) {
+       local_flat_file_store_parent_class = g_type_class_peek_parent (klass);
+       g_type_class_add_private (klass, sizeof (LocalFlatFileStorePrivate));
+       G_OBJECT_CLASS (klass)->finalize = local_flat_file_store_finalize;
+}
+
+
+static void local_flat_file_store_iidentity_card_store_interface_init (IIdentityCardStoreIface * iface) {
+       local_flat_file_store_iidentity_card_store_parent_iface = g_type_interface_peek_parent (iface);
+       iface->add_card = local_flat_file_store_real_add_card;
+       iface->update_card = local_flat_file_store_real_update_card;
+       iface->remove_card = local_flat_file_store_real_remove_card;
+       iface->get_card_list = local_flat_file_store_real_get_card_list;
+}
+
+
+static void local_flat_file_store_instance_init (LocalFlatFileStore * self) {
+       self->priv = LOCAL_FLAT_FILE_STORE_GET_PRIVATE (self);
+}
+
+
+static void local_flat_file_store_finalize (GObject* obj) {
+       LocalFlatFileStore * self;
+       self = LOCAL_FLAT_FILE_STORE (obj);
+       _g_object_unref0 (self->priv->id_card_list);
+       G_OBJECT_CLASS (local_flat_file_store_parent_class)->finalize (obj);
+}
+
+
+GType local_flat_file_store_get_type (void) {
+       static volatile gsize local_flat_file_store_type_id__volatile = 0;
+       if (g_once_init_enter (&local_flat_file_store_type_id__volatile)) {
+               static const GTypeInfo g_define_type_info = { sizeof (LocalFlatFileStoreClass), (GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) local_flat_file_store_class_init, (GClassFinalizeFunc) NULL, NULL, sizeof (LocalFlatFileStore), 0, (GInstanceInitFunc) local_flat_file_store_instance_init, NULL };
+               static const GInterfaceInfo iidentity_card_store_info = { (GInterfaceInitFunc) local_flat_file_store_iidentity_card_store_interface_init, (GInterfaceFinalizeFunc) NULL, NULL};
+               GType local_flat_file_store_type_id;
+               local_flat_file_store_type_id = g_type_register_static (G_TYPE_OBJECT, "LocalFlatFileStore", &g_define_type_info, 0);
+               g_type_add_interface_static (local_flat_file_store_type_id, TYPE_IIDENTITY_CARD_STORE, &iidentity_card_store_info);
+               g_once_init_leave (&local_flat_file_store_type_id__volatile, local_flat_file_store_type_id);
+       }
+       return local_flat_file_store_type_id__volatile;
+}
+
+
+static void _vala_array_destroy (gpointer array, gint array_length, GDestroyNotify destroy_func) {
+       if ((array != NULL) && (destroy_func != NULL)) {
+               int i;
+               for (i = 0; i < array_length; i = i + 1) {
+                       if (((gpointer*) array)[i] != NULL) {
+                               destroy_func (((gpointer*) array)[i]);
+                       }
+               }
+       }
+}
+
+
+static void _vala_array_free (gpointer array, gint array_length, GDestroyNotify destroy_func) {
+       _vala_array_destroy (array, array_length, destroy_func);
+       g_free (array);
+}
+
+
+
+
index 7e51274..ab78820 100644 (file)
@@ -8,9 +8,6 @@
 #include <gio/gio.h>
 #include <stdlib.h>
 #include <string.h>
-#include <dbus/dbus.h>
-#include <dbus/dbus-glib.h>
-#include <dbus/dbus-glib-lowlevel.h>
 
 
 #define TYPE_MOONSHOT_SERVER (moonshot_server_get_type ())
@@ -24,15 +21,15 @@ typedef struct _MoonshotServer MoonshotServer;
 typedef struct _MoonshotServerClass MoonshotServerClass;
 typedef struct _MoonshotServerPrivate MoonshotServerPrivate;
 
-#define TYPE_MAIN_WINDOW (main_window_get_type ())
-#define MAIN_WINDOW(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), TYPE_MAIN_WINDOW, MainWindow))
-#define MAIN_WINDOW_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), TYPE_MAIN_WINDOW, MainWindowClass))
-#define IS_MAIN_WINDOW(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TYPE_MAIN_WINDOW))
-#define IS_MAIN_WINDOW_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), TYPE_MAIN_WINDOW))
-#define MAIN_WINDOW_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), TYPE_MAIN_WINDOW, MainWindowClass))
+#define TYPE_IDENTITY_MANAGER_VIEW (identity_manager_view_get_type ())
+#define IDENTITY_MANAGER_VIEW(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), TYPE_IDENTITY_MANAGER_VIEW, IdentityManagerView))
+#define IDENTITY_MANAGER_VIEW_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), TYPE_IDENTITY_MANAGER_VIEW, IdentityManagerViewClass))
+#define IS_IDENTITY_MANAGER_VIEW(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TYPE_IDENTITY_MANAGER_VIEW))
+#define IS_IDENTITY_MANAGER_VIEW_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), TYPE_IDENTITY_MANAGER_VIEW))
+#define IDENTITY_MANAGER_VIEW_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), TYPE_IDENTITY_MANAGER_VIEW, IdentityManagerViewClass))
 
-typedef struct _MainWindow MainWindow;
-typedef struct _MainWindowClass MainWindowClass;
+typedef struct _IdentityManagerView IdentityManagerView;
+typedef struct _IdentityManagerViewClass IdentityManagerViewClass;
 #define _g_object_unref0(var) ((var == NULL) ? NULL : (var = (g_object_unref (var), NULL)))
 #define _g_free0(var) (var = (g_free (var), NULL))
 
@@ -66,14 +63,13 @@ typedef struct _IdCardClass IdCardClass;
 
 typedef struct _TrustAnchor TrustAnchor;
 typedef struct _TrustAnchorClass TrustAnchorClass;
-typedef struct _Block2Data Block2Data;
-typedef struct _MoonshotServerGetIdentityData MoonshotServerGetIdentityData;
 typedef struct _Block3Data Block3Data;
+typedef struct _MoonshotServerGetIdentityData MoonshotServerGetIdentityData;
+typedef struct _Block4Data Block4Data;
 typedef struct _MoonshotServerGetDefaultIdentityData MoonshotServerGetDefaultIdentityData;
 
 #define TYPE_RULE (rule_get_type ())
 typedef struct _Rule Rule;
-typedef struct _DBusObjectVTable _DBusObjectVTable;
 
 struct _MoonshotServer {
        GObject parent_instance;
@@ -85,7 +81,7 @@ struct _MoonshotServerClass {
 };
 
 struct _MoonshotServerPrivate {
-       MainWindow* main_window;
+       IdentityManagerView* main_window;
 };
 
 typedef void (*ReturnIdentityCallback) (IdentityRequest* request, void* user_data);
@@ -104,7 +100,7 @@ struct _IdentityRequestClass {
        GObjectClass parent_class;
 };
 
-struct _Block2Data {
+struct _Block3Data {
        int _ref_count_;
        MoonshotServer * self;
        gpointer _async_data_;
@@ -145,10 +141,10 @@ struct _MoonshotServerGetIdentityData {
        char* _tmp15_;
        char* _tmp16_;
        char* _tmp17_;
-       Block2Data* _data2_;
+       Block3Data* _data3_;
 };
 
-struct _Block3Data {
+struct _Block4Data {
        int _ref_count_;
        MoonshotServer * self;
        gpointer _async_data_;
@@ -185,7 +181,7 @@ struct _MoonshotServerGetDefaultIdentityData {
        char* _tmp15_;
        char* _tmp16_;
        char* _tmp17_;
-       Block3Data* _data3_;
+       Block4Data* _data4_;
 };
 
 struct _Rule {
@@ -193,15 +189,12 @@ struct _Rule {
        char* always_confirm;
 };
 
-struct _DBusObjectVTable {
-       void (*register_object) (DBusConnection*, const char*, void*);
-};
-
 
 static gpointer moonshot_server_parent_class = NULL;
 
 GType moonshot_server_get_type (void) G_GNUC_CONST;
-GType main_window_get_type (void) G_GNUC_CONST;
+guint moonshot_server_register_object (void* object, GDBusConnection* connection, const gchar* path, GError** error);
+GType identity_manager_view_get_type (void) G_GNUC_CONST;
 #define MOONSHOT_SERVER_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), TYPE_MOONSHOT_SERVER, MoonshotServerPrivate))
 enum  {
        MOONSHOT_SERVER_DUMMY_PROPERTY
@@ -213,11 +206,11 @@ static void moonshot_server_get_identity_ready (GObject* source_object, GAsyncRe
 void moonshot_server_get_identity (MoonshotServer* self, const char* nai, const char* password, const char* service, GAsyncReadyCallback _callback_, gpointer _user_data_);
 gboolean moonshot_server_get_identity_finish (MoonshotServer* self, GAsyncResult* _res_, char** nai_out, char** password_out, char** server_certificate_hash, char** ca_certificate, char** subject_name_constraint, char** subject_alt_name_constraint);
 static gboolean moonshot_server_get_identity_co (MoonshotServerGetIdentityData* data);
-IdentityRequest* identity_request_new (MainWindow* main_window, const char* nai, const char* password, const char* service);
-IdentityRequest* identity_request_construct (GType object_type, MainWindow* main_window, const char* nai, const char* password, const char* service);
+IdentityRequest* identity_request_new (IdentityManagerView* main_window, const char* nai, const char* password, const char* service);
+IdentityRequest* identity_request_construct (GType object_type, IdentityManagerView* main_window, const char* nai, const char* password, const char* service);
 GType identity_request_get_type (void) G_GNUC_CONST;
 void identity_request_set_callback (IdentityRequest* self, ReturnIdentityCallback cb, void* cb_target, GDestroyNotify cb_target_destroy_notify);
-static void _lambda4_ (IdentityRequest* IdentityRequest, Block2Data* _data2_);
+static void _lambda4_ (IdentityRequest* IdentityRequest, Block3Data* _data3_);
 static void __lambda4__return_identity_callback (IdentityRequest* request, gpointer self);
 gboolean identity_request_execute (IdentityRequest* self);
 GType id_card_get_type (void) G_GNUC_CONST;
@@ -229,19 +222,19 @@ const char* trust_anchor_get_server_cert (TrustAnchor* self);
 const char* trust_anchor_get_ca_cert (TrustAnchor* self);
 const char* trust_anchor_get_subject (TrustAnchor* self);
 const char* trust_anchor_get_subject_alt (TrustAnchor* self);
-static Block2Data* block2_data_ref (Block2Data* _data2_);
-static void block2_data_unref (Block2Data* _data2_);
+static Block3Data* block3_data_ref (Block3Data* _data3_);
+static void block3_data_unref (Block3Data* _data3_);
 static void moonshot_server_get_default_identity_data_free (gpointer _data);
 static void moonshot_server_get_default_identity_ready (GObject* source_object, GAsyncResult* _res_, gpointer _user_data_);
 void moonshot_server_get_default_identity (MoonshotServer* self, GAsyncReadyCallback _callback_, gpointer _user_data_);
 gboolean moonshot_server_get_default_identity_finish (MoonshotServer* self, GAsyncResult* _res_, char** nai_out, char** password_out, char** server_certificate_hash, char** ca_certificate, char** subject_name_constraint, char** subject_alt_name_constraint);
 static gboolean moonshot_server_get_default_identity_co (MoonshotServerGetDefaultIdentityData* data);
-IdentityRequest* identity_request_new_default (MainWindow* main_window);
-IdentityRequest* identity_request_construct_default (GType object_type, MainWindow* main_window);
-static void _lambda5_ (IdentityRequest* IdentityRequest, Block3Data* _data3_);
+IdentityRequest* identity_request_new_default (IdentityManagerView* main_window);
+IdentityRequest* identity_request_construct_default (GType object_type, IdentityManagerView* main_window);
+static void _lambda5_ (IdentityRequest* IdentityRequest, Block4Data* _data4_);
 static void __lambda5__return_identity_callback (IdentityRequest* request, gpointer self);
-static Block3Data* block3_data_ref (Block3Data* _data3_);
-static void block3_data_unref (Block3Data* _data3_);
+static Block4Data* block4_data_ref (Block4Data* _data4_);
+static void block4_data_unref (Block4Data* _data4_);
 gboolean moonshot_server_install_id_card (MoonshotServer* self, const char* display_name, const char* user_name, const char* password, const char* realm, char** rules_patterns, int rules_patterns_length1, char** rules_always_confirm, int rules_always_confirm_length1, char** services, int services_length1, const char* ca_cert, const char* subject, const char* subject_alt, const char* server_cert);
 IdCard* id_card_new (void);
 IdCard* id_card_construct (GType object_type);
@@ -262,25 +255,63 @@ void rule_destroy (Rule* self);
 void id_card_set_rules (IdCard* self, Rule* value, int value_length1);
 static void _vala_Rule_array_free (Rule* array, gint array_length);
 Rule* id_card_get_rules (IdCard* self, int* result_length1);
-gboolean main_window_add_identity (MainWindow* self, IdCard* id_card);
-static void _vala_dbus_register_object (DBusConnection* connection, const char* path, void* object);
-static void _vala_dbus_unregister_object (gpointer connection, GObject* object);
-void moonshot_server_dbus_register_object (DBusConnection* connection, const char* path, void* object);
-void _moonshot_server_dbus_unregister (DBusConnection* connection, void* _user_data_);
-DBusHandlerResult moonshot_server_dbus_message (DBusConnection* connection, DBusMessage* message, void* object);
-static DBusHandlerResult _dbus_moonshot_server_introspect (MoonshotServer* self, DBusConnection* connection, DBusMessage* message);
-static DBusHandlerResult _dbus_moonshot_server_property_get_all (MoonshotServer* self, DBusConnection* connection, DBusMessage* message);
-static DBusHandlerResult _dbus_moonshot_server_get_identity (MoonshotServer* self, DBusConnection* connection, DBusMessage* message);
+gboolean identity_manager_view_add_identity (IdentityManagerView* self, IdCard* id_card);
+static void moonshot_server_finalize (GObject* obj);
+static void moonshot_server_dbus_interface_method_call (GDBusConnection* connection, const gchar* sender, const gchar* object_path, const gchar* interface_name, const gchar* method_name, GVariant* parameters, GDBusMethodInvocation* invocation, gpointer user_data);
+static void _dbus_moonshot_server_get_identity (MoonshotServer* self, GVariant* parameters, GDBusMethodInvocation* invocation);
 static void _dbus_moonshot_server_get_identity_ready (GObject * source_object, GAsyncResult * _res_, gpointer * _user_data_);
-static DBusHandlerResult _dbus_moonshot_server_get_default_identity (MoonshotServer* self, DBusConnection* connection, DBusMessage* message);
+static void _dbus_moonshot_server_get_default_identity (MoonshotServer* self, GVariant* parameters, GDBusMethodInvocation* invocation);
 static void _dbus_moonshot_server_get_default_identity_ready (GObject * source_object, GAsyncResult * _res_, gpointer * _user_data_);
-static DBusHandlerResult _dbus_moonshot_server_install_id_card (MoonshotServer* self, DBusConnection* connection, DBusMessage* message);
-static void moonshot_server_finalize (GObject* obj);
+static void _dbus_moonshot_server_install_id_card (MoonshotServer* self, GVariant* parameters, GDBusMethodInvocation* invocation);
+static GVariant* moonshot_server_dbus_interface_get_property (GDBusConnection* connection, const gchar* sender, const gchar* object_path, const gchar* interface_name, const gchar* property_name, GError** error, gpointer user_data);
+static gboolean moonshot_server_dbus_interface_set_property (GDBusConnection* connection, const gchar* sender, const gchar* object_path, const gchar* interface_name, const gchar* property_name, GVariant* value, GError** error, gpointer user_data);
+static void _moonshot_server_unregister_object (gpointer user_data);
 static void _vala_array_destroy (gpointer array, gint array_length, GDestroyNotify destroy_func);
 static void _vala_array_free (gpointer array, gint array_length, GDestroyNotify destroy_func);
 
-static const DBusObjectPathVTable _moonshot_server_dbus_path_vtable = {_moonshot_server_dbus_unregister, moonshot_server_dbus_message};
-static const _DBusObjectVTable _moonshot_server_dbus_vtable = {moonshot_server_dbus_register_object};
+static const GDBusArgInfo _moonshot_server_dbus_arg_info_get_identity_nai = {-1, "nai", "s"};
+static const GDBusArgInfo _moonshot_server_dbus_arg_info_get_identity_password = {-1, "password", "s"};
+static const GDBusArgInfo _moonshot_server_dbus_arg_info_get_identity_service = {-1, "service", "s"};
+static const GDBusArgInfo _moonshot_server_dbus_arg_info_get_identity_nai_out = {-1, "nai_out", "s"};
+static const GDBusArgInfo _moonshot_server_dbus_arg_info_get_identity_password_out = {-1, "password_out", "s"};
+static const GDBusArgInfo _moonshot_server_dbus_arg_info_get_identity_server_certificate_hash = {-1, "server_certificate_hash", "s"};
+static const GDBusArgInfo _moonshot_server_dbus_arg_info_get_identity_ca_certificate = {-1, "ca_certificate", "s"};
+static const GDBusArgInfo _moonshot_server_dbus_arg_info_get_identity_subject_name_constraint = {-1, "subject_name_constraint", "s"};
+static const GDBusArgInfo _moonshot_server_dbus_arg_info_get_identity_subject_alt_name_constraint = {-1, "subject_alt_name_constraint", "s"};
+static const GDBusArgInfo _moonshot_server_dbus_arg_info_get_identity_result = {-1, "result", "b"};
+static const GDBusArgInfo * const _moonshot_server_dbus_arg_info_get_identity_in[] = {&_moonshot_server_dbus_arg_info_get_identity_nai, &_moonshot_server_dbus_arg_info_get_identity_password, &_moonshot_server_dbus_arg_info_get_identity_service, NULL};
+static const GDBusArgInfo * const _moonshot_server_dbus_arg_info_get_identity_out[] = {&_moonshot_server_dbus_arg_info_get_identity_nai_out, &_moonshot_server_dbus_arg_info_get_identity_password_out, &_moonshot_server_dbus_arg_info_get_identity_server_certificate_hash, &_moonshot_server_dbus_arg_info_get_identity_ca_certificate, &_moonshot_server_dbus_arg_info_get_identity_subject_name_constraint, &_moonshot_server_dbus_arg_info_get_identity_subject_alt_name_constraint, &_moonshot_server_dbus_arg_info_get_identity_result, NULL};
+static const GDBusMethodInfo _moonshot_server_dbus_method_info_get_identity = {-1, "GetIdentity", (GDBusArgInfo **) (&_moonshot_server_dbus_arg_info_get_identity_in), (GDBusArgInfo **) (&_moonshot_server_dbus_arg_info_get_identity_out)};
+static const GDBusArgInfo _moonshot_server_dbus_arg_info_get_default_identity_nai_out = {-1, "nai_out", "s"};
+static const GDBusArgInfo _moonshot_server_dbus_arg_info_get_default_identity_password_out = {-1, "password_out", "s"};
+static const GDBusArgInfo _moonshot_server_dbus_arg_info_get_default_identity_server_certificate_hash = {-1, "server_certificate_hash", "s"};
+static const GDBusArgInfo _moonshot_server_dbus_arg_info_get_default_identity_ca_certificate = {-1, "ca_certificate", "s"};
+static const GDBusArgInfo _moonshot_server_dbus_arg_info_get_default_identity_subject_name_constraint = {-1, "subject_name_constraint", "s"};
+static const GDBusArgInfo _moonshot_server_dbus_arg_info_get_default_identity_subject_alt_name_constraint = {-1, "subject_alt_name_constraint", "s"};
+static const GDBusArgInfo _moonshot_server_dbus_arg_info_get_default_identity_result = {-1, "result", "b"};
+static const GDBusArgInfo * const _moonshot_server_dbus_arg_info_get_default_identity_in[] = {NULL};
+static const GDBusArgInfo * const _moonshot_server_dbus_arg_info_get_default_identity_out[] = {&_moonshot_server_dbus_arg_info_get_default_identity_nai_out, &_moonshot_server_dbus_arg_info_get_default_identity_password_out, &_moonshot_server_dbus_arg_info_get_default_identity_server_certificate_hash, &_moonshot_server_dbus_arg_info_get_default_identity_ca_certificate, &_moonshot_server_dbus_arg_info_get_default_identity_subject_name_constraint, &_moonshot_server_dbus_arg_info_get_default_identity_subject_alt_name_constraint, &_moonshot_server_dbus_arg_info_get_default_identity_result, NULL};
+static const GDBusMethodInfo _moonshot_server_dbus_method_info_get_default_identity = {-1, "GetDefaultIdentity", (GDBusArgInfo **) (&_moonshot_server_dbus_arg_info_get_default_identity_in), (GDBusArgInfo **) (&_moonshot_server_dbus_arg_info_get_default_identity_out)};
+static const GDBusArgInfo _moonshot_server_dbus_arg_info_install_id_card_display_name = {-1, "display_name", "s"};
+static const GDBusArgInfo _moonshot_server_dbus_arg_info_install_id_card_user_name = {-1, "user_name", "s"};
+static const GDBusArgInfo _moonshot_server_dbus_arg_info_install_id_card_password = {-1, "password", "s"};
+static const GDBusArgInfo _moonshot_server_dbus_arg_info_install_id_card_realm = {-1, "realm", "s"};
+static const GDBusArgInfo _moonshot_server_dbus_arg_info_install_id_card_rules_patterns = {-1, "rules_patterns", "as"};
+static const GDBusArgInfo _moonshot_server_dbus_arg_info_install_id_card_rules_always_confirm = {-1, "rules_always_confirm", "as"};
+static const GDBusArgInfo _moonshot_server_dbus_arg_info_install_id_card_services = {-1, "services", "as"};
+static const GDBusArgInfo _moonshot_server_dbus_arg_info_install_id_card_ca_cert = {-1, "ca_cert", "s"};
+static const GDBusArgInfo _moonshot_server_dbus_arg_info_install_id_card_subject = {-1, "subject", "s"};
+static const GDBusArgInfo _moonshot_server_dbus_arg_info_install_id_card_subject_alt = {-1, "subject_alt", "s"};
+static const GDBusArgInfo _moonshot_server_dbus_arg_info_install_id_card_server_cert = {-1, "server_cert", "s"};
+static const GDBusArgInfo _moonshot_server_dbus_arg_info_install_id_card_result = {-1, "result", "b"};
+static const GDBusArgInfo * const _moonshot_server_dbus_arg_info_install_id_card_in[] = {&_moonshot_server_dbus_arg_info_install_id_card_display_name, &_moonshot_server_dbus_arg_info_install_id_card_user_name, &_moonshot_server_dbus_arg_info_install_id_card_password, &_moonshot_server_dbus_arg_info_install_id_card_realm, &_moonshot_server_dbus_arg_info_install_id_card_rules_patterns, &_moonshot_server_dbus_arg_info_install_id_card_rules_always_confirm, &_moonshot_server_dbus_arg_info_install_id_card_services, &_moonshot_server_dbus_arg_info_install_id_card_ca_cert, &_moonshot_server_dbus_arg_info_install_id_card_subject, &_moonshot_server_dbus_arg_info_install_id_card_subject_alt, &_moonshot_server_dbus_arg_info_install_id_card_server_cert, NULL};
+static const GDBusArgInfo * const _moonshot_server_dbus_arg_info_install_id_card_out[] = {&_moonshot_server_dbus_arg_info_install_id_card_result, NULL};
+static const GDBusMethodInfo _moonshot_server_dbus_method_info_install_id_card = {-1, "InstallIdCard", (GDBusArgInfo **) (&_moonshot_server_dbus_arg_info_install_id_card_in), (GDBusArgInfo **) (&_moonshot_server_dbus_arg_info_install_id_card_out)};
+static const GDBusMethodInfo * const _moonshot_server_dbus_method_info[] = {&_moonshot_server_dbus_method_info_get_identity, &_moonshot_server_dbus_method_info_get_default_identity, &_moonshot_server_dbus_method_info_install_id_card, NULL};
+static const GDBusSignalInfo * const _moonshot_server_dbus_signal_info[] = {NULL};
+static const GDBusPropertyInfo * const _moonshot_server_dbus_property_info[] = {NULL};
+static const GDBusInterfaceInfo _moonshot_server_dbus_interface_info = {-1, "org.janet.Moonshot", (GDBusMethodInfo **) (&_moonshot_server_dbus_method_info), (GDBusSignalInfo **) (&_moonshot_server_dbus_signal_info), (GDBusPropertyInfo **) (&_moonshot_server_dbus_property_info)};
+static const GDBusInterfaceVTable _moonshot_server_dbus_interface_vtable = {moonshot_server_dbus_interface_method_call, moonshot_server_dbus_interface_get_property, moonshot_server_dbus_interface_set_property};
 
 
 static gpointer _g_object_ref0 (gpointer self) {
@@ -290,10 +321,10 @@ static gpointer _g_object_ref0 (gpointer self) {
 
 MoonshotServer* moonshot_server_construct (GType object_type, GtkWindow* window) {
        MoonshotServer * self = NULL;
-       MainWindow* _tmp0_;
+       IdentityManagerView* _tmp0_;
        g_return_val_if_fail (window != NULL, NULL);
        self = (MoonshotServer*) g_object_new (object_type, NULL);
-       self->priv->main_window = (_tmp0_ = _g_object_ref0 (MAIN_WINDOW (window)), _g_object_unref0 (self->priv->main_window), _tmp0_);
+       self->priv->main_window = (_tmp0_ = _g_object_ref0 (IDENTITY_MANAGER_VIEW (window)), _g_object_unref0 (self->priv->main_window), _tmp0_);
        return self;
 }
 
@@ -356,11 +387,11 @@ static void moonshot_server_get_identity_ready (GObject* source_object, GAsyncRe
 }
 
 
-static void _lambda4_ (IdentityRequest* IdentityRequest, Block2Data* _data2_) {
+static void _lambda4_ (IdentityRequest* IdentityRequest, Block3Data* _data3_) {
        MoonshotServer * self;
-       self = _data2_->self;
+       self = _data3_->self;
        g_return_if_fail (IdentityRequest != NULL);
-       moonshot_server_get_identity_co (_data2_->_async_data_);
+       moonshot_server_get_identity_co (_data3_->_async_data_);
 }
 
 
@@ -369,16 +400,16 @@ static void __lambda4__return_identity_callback (IdentityRequest* request, gpoin
 }
 
 
-static Block2Data* block2_data_ref (Block2Data* _data2_) {
-       g_atomic_int_inc (&_data2_->_ref_count_);
-       return _data2_;
+static Block3Data* block3_data_ref (Block3Data* _data3_) {
+       g_atomic_int_inc (&_data3_->_ref_count_);
+       return _data3_;
 }
 
 
-static void block2_data_unref (Block2Data* _data2_) {
-       if (g_atomic_int_dec_and_test (&_data2_->_ref_count_)) {
-               _g_object_unref0 (_data2_->self);
-               g_slice_free (Block2Data, _data2_);
+static void block3_data_unref (Block3Data* _data3_) {
+       if (g_atomic_int_dec_and_test (&_data3_->_ref_count_)) {
+               _g_object_unref0 (_data3_->self);
+               g_slice_free (Block3Data, _data3_);
        }
 }
 
@@ -393,12 +424,12 @@ static gboolean moonshot_server_get_identity_co (MoonshotServerGetIdentityData*
                goto _state_1;
        }
        _state_0:
-       data->_data2_ = g_slice_new0 (Block2Data);
-       data->_data2_->_ref_count_ = 1;
-       data->_data2_->self = g_object_ref (data->self);
-       data->_data2_->_async_data_ = data;
+       data->_data3_ = g_slice_new0 (Block3Data);
+       data->_data3_->_ref_count_ = 1;
+       data->_data3_->self = g_object_ref (data->self);
+       data->_data3_->_async_data_ = data;
        data->request = identity_request_new (data->self->priv->main_window, data->nai, data->password, data->service);
-       identity_request_set_callback (data->request, __lambda4__return_identity_callback, block2_data_ref (data->_data2_), block2_data_unref);
+       identity_request_set_callback (data->request, __lambda4__return_identity_callback, block3_data_ref (data->_data3_), block3_data_unref);
        identity_request_execute (data->request);
        data->_state_ = 1;
        return FALSE;
@@ -439,7 +470,7 @@ static gboolean moonshot_server_get_identity_co (MoonshotServerGetIdentityData*
                data->result = TRUE;
                _g_object_unref0 (data->id_card);
                _g_object_unref0 (data->request);
-               block2_data_unref (data->_data2_);
+               block3_data_unref (data->_data3_);
                {
                        if (data->_state_ == 0) {
                                g_simple_async_result_complete_in_idle (data->_async_result);
@@ -453,7 +484,7 @@ static gboolean moonshot_server_get_identity_co (MoonshotServerGetIdentityData*
        data->result = FALSE;
        _g_object_unref0 (data->id_card);
        _g_object_unref0 (data->request);
-       block2_data_unref (data->_data2_);
+       block3_data_unref (data->_data3_);
        {
                if (data->_state_ == 0) {
                        g_simple_async_result_complete_in_idle (data->_async_result);
@@ -465,7 +496,7 @@ static gboolean moonshot_server_get_identity_co (MoonshotServerGetIdentityData*
        }
        _g_object_unref0 (data->id_card);
        _g_object_unref0 (data->request);
-       block2_data_unref (data->_data2_);
+       block3_data_unref (data->_data3_);
        {
                if (data->_state_ == 0) {
                        g_simple_async_result_complete_in_idle (data->_async_result);
@@ -525,11 +556,11 @@ static void moonshot_server_get_default_identity_ready (GObject* source_object,
 }
 
 
-static void _lambda5_ (IdentityRequest* IdentityRequest, Block3Data* _data3_) {
+static void _lambda5_ (IdentityRequest* IdentityRequest, Block4Data* _data4_) {
        MoonshotServer * self;
-       self = _data3_->self;
+       self = _data4_->self;
        g_return_if_fail (IdentityRequest != NULL);
-       moonshot_server_get_default_identity_co (_data3_->_async_data_);
+       moonshot_server_get_default_identity_co (_data4_->_async_data_);
 }
 
 
@@ -538,16 +569,16 @@ static void __lambda5__return_identity_callback (IdentityRequest* request, gpoin
 }
 
 
-static Block3Data* block3_data_ref (Block3Data* _data3_) {
-       g_atomic_int_inc (&_data3_->_ref_count_);
-       return _data3_;
+static Block4Data* block4_data_ref (Block4Data* _data4_) {
+       g_atomic_int_inc (&_data4_->_ref_count_);
+       return _data4_;
 }
 
 
-static void block3_data_unref (Block3Data* _data3_) {
-       if (g_atomic_int_dec_and_test (&_data3_->_ref_count_)) {
-               _g_object_unref0 (_data3_->self);
-               g_slice_free (Block3Data, _data3_);
+static void block4_data_unref (Block4Data* _data4_) {
+       if (g_atomic_int_dec_and_test (&_data4_->_ref_count_)) {
+               _g_object_unref0 (_data4_->self);
+               g_slice_free (Block4Data, _data4_);
        }
 }
 
@@ -562,12 +593,12 @@ static gboolean moonshot_server_get_default_identity_co (MoonshotServerGetDefaul
                goto _state_2;
        }
        _state_0:
-       data->_data3_ = g_slice_new0 (Block3Data);
-       data->_data3_->_ref_count_ = 1;
-       data->_data3_->self = g_object_ref (data->self);
-       data->_data3_->_async_data_ = data;
+       data->_data4_ = g_slice_new0 (Block4Data);
+       data->_data4_->_ref_count_ = 1;
+       data->_data4_->self = g_object_ref (data->self);
+       data->_data4_->_async_data_ = data;
        data->request = identity_request_new_default (data->self->priv->main_window);
-       identity_request_set_callback (data->request, __lambda5__return_identity_callback, block3_data_ref (data->_data3_), block3_data_unref);
+       identity_request_set_callback (data->request, __lambda5__return_identity_callback, block4_data_ref (data->_data4_), block4_data_unref);
        identity_request_execute (data->request);
        data->_state_ = 2;
        return FALSE;
@@ -606,7 +637,7 @@ static gboolean moonshot_server_get_default_identity_co (MoonshotServerGetDefaul
                }
                data->result = TRUE;
                _g_object_unref0 (data->request);
-               block3_data_unref (data->_data3_);
+               block4_data_unref (data->_data4_);
                {
                        if (data->_state_ == 0) {
                                g_simple_async_result_complete_in_idle (data->_async_result);
@@ -619,7 +650,7 @@ static gboolean moonshot_server_get_default_identity_co (MoonshotServerGetDefaul
        }
        data->result = FALSE;
        _g_object_unref0 (data->request);
-       block3_data_unref (data->_data3_);
+       block4_data_unref (data->_data4_);
        {
                if (data->_state_ == 0) {
                        g_simple_async_result_complete_in_idle (data->_async_result);
@@ -630,7 +661,7 @@ static gboolean moonshot_server_get_default_identity_co (MoonshotServerGetDefaul
                return FALSE;
        }
        _g_object_unref0 (data->request);
-       block3_data_unref (data->_data3_);
+       block4_data_unref (data->_data4_);
        {
                if (data->_state_ == 0) {
                        g_simple_async_result_complete_in_idle (data->_async_result);
@@ -714,132 +745,71 @@ gboolean moonshot_server_install_id_card (MoonshotServer* self, const char* disp
                        }
                }
        }
-       result = main_window_add_identity (self->priv->main_window, idcard);
+       result = identity_manager_view_add_identity (self->priv->main_window, idcard);
        _g_object_unref0 (idcard);
        return result;
 }
 
 
-static void _vala_dbus_register_object (DBusConnection* connection, const char* path, void* object) {
-       const _DBusObjectVTable * vtable;
-       vtable = g_type_get_qdata (G_TYPE_FROM_INSTANCE (object), g_quark_from_static_string ("DBusObjectVTable"));
-       if (vtable) {
-               vtable->register_object (connection, path, object);
-       } else {
-               g_warning ("Object does not implement any D-Bus interface");
-       }
-}
-
-
-static void _vala_dbus_unregister_object (gpointer connection, GObject* object) {
-       char* path;
-       path = g_object_steal_data ((GObject*) object, "dbus_object_path");
-       dbus_connection_unregister_object_path (connection, path);
-       g_free (path);
+static void moonshot_server_class_init (MoonshotServerClass * klass) {
+       moonshot_server_parent_class = g_type_class_peek_parent (klass);
+       g_type_class_add_private (klass, sizeof (MoonshotServerPrivate));
+       G_OBJECT_CLASS (klass)->finalize = moonshot_server_finalize;
 }
 
 
-void _moonshot_server_dbus_unregister (DBusConnection* connection, void* _user_data_) {
+static void moonshot_server_instance_init (MoonshotServer * self) {
+       self->priv = MOONSHOT_SERVER_GET_PRIVATE (self);
 }
 
 
-static DBusHandlerResult _dbus_moonshot_server_introspect (MoonshotServer* self, DBusConnection* connection, DBusMessage* message) {
-       DBusMessage* reply;
-       DBusMessageIter iter;
-       GString* xml_data;
-       char** children;
-       int i;
-       reply = dbus_message_new_method_return (message);
-       dbus_message_iter_init_append (reply, &iter);
-       xml_data = g_string_new ("<!DOCTYPE node PUBLIC \"-//freedesktop//DTD D-BUS Object Introspection 1.0//EN\" \"http://www.freedesktop.org/standards/dbus/1.0/introspect.dtd\">\n");
-       g_string_append (xml_data, "<node>\n<interface name=\"org.freedesktop.DBus.Introspectable\">\n  <method name=\"Introspect\">\n    <arg name=\"data\" direction=\"out\" type=\"s\"/>\n  </method>\n</interface>\n<interface name=\"org.freedesktop.DBus.Properties\">\n  <method name=\"Get\">\n    <arg name=\"interface\" direction=\"in\" type=\"s\"/>\n    <arg name=\"propname\" direction=\"in\" type=\"s\"/>\n    <arg name=\"value\" direction=\"out\" type=\"v\"/>\n  </method>\n  <method name=\"Set\">\n    <arg name=\"interface\" direction=\"in\" type=\"s\"/>\n    <arg name=\"propname\" direction=\"in\" type=\"s\"/>\n    <arg name=\"value\" direction=\"in\" type=\"v\"/>\n  </method>\n  <method name=\"GetAll\">\n    <arg name=\"interface\" direction=\"in\" type=\"s\"/>\n    <arg name=\"props\" direction=\"out\" type=\"a{sv}\"/>\n  </method>\n</interface>\n<interface name=\"org.janet.Moonshot\">\n  <method name=\"GetIdentity\">\n    <arg name=\"nai\" type=\"s\" direction=\"in\"/>\n    <arg name=\"password\" type=\"s\" direction=\"in\"/>\n    <arg name=\"service\" type=\"s\" direction=\"in\"/>\n    <arg name=\"nai_out\" type=\"s\" direction=\"out\"/>\n    <arg name=\"password_out\" type=\"s\" direction=\"out\"/>\n    <arg name=\"server_certificate_hash\" type=\"s\" direction=\"out\"/>\n    <arg name=\"ca_certificate\" type=\"s\" direction=\"out\"/>\n    <arg name=\"subject_name_constraint\" type=\"s\" direction=\"out\"/>\n    <arg name=\"subject_alt_name_constraint\" type=\"s\" direction=\"out\"/>\n    <arg name=\"result\" type=\"b\" direction=\"out\"/>\n  </method>\n  <method name=\"GetDefaultIdentity\">\n    <arg name=\"nai_out\" type=\"s\" direction=\"out\"/>\n    <arg name=\"password_out\" type=\"s\" direction=\"out\"/>\n    <arg name=\"server_certificate_hash\" type=\"s\" direction=\"out\"/>\n    <arg name=\"ca_certificate\" type=\"s\" direction=\"out\"/>\n    <arg name=\"subject_name_constraint\" type=\"s\" direction=\"out\"/>\n    <arg name=\"subject_alt_name_constraint\" type=\"s\" direction=\"out\"/>\n    <arg name=\"result\" type=\"b\" direction=\"out\"/>\n  </method>\n  <method name=\"InstallIdCard\">\n    <arg name=\"display_name\" type=\"s\" direction=\"in\"/>\n    <arg name=\"user_name\" type=\"s\" direction=\"in\"/>\n    <arg name=\"password\" type=\"s\" direction=\"in\"/>\n    <arg name=\"realm\" type=\"s\" direction=\"in\"/>\n    <arg name=\"rules_patterns\" type=\"as\" direction=\"in\"/>\n    <arg name=\"rules_always_confirm\" type=\"as\" direction=\"in\"/>\n    <arg name=\"services\" type=\"as\" direction=\"in\"/>\n    <arg name=\"ca_cert\" type=\"s\" direction=\"in\"/>\n    <arg name=\"subject\" type=\"s\" direction=\"in\"/>\n    <arg name=\"subject_alt\" type=\"s\" direction=\"in\"/>\n    <arg name=\"server_cert\" type=\"s\" direction=\"in\"/>\n    <arg name=\"result\" type=\"b\" direction=\"out\"/>\n  </method>\n</interface>\n");
-       dbus_connection_list_registered (connection, g_object_get_data ((GObject *) self, "dbus_object_path"), &children);
-       for (i = 0; children[i]; i++) {
-               g_string_append_printf (xml_data, "<node name=\"%s\"/>\n", children[i]);
-       }
-       dbus_free_string_array (children);
-       g_string_append (xml_data, "</node>\n");
-       dbus_message_iter_append_basic (&iter, DBUS_TYPE_STRING, &xml_data->str);
-       g_string_free (xml_data, TRUE);
-       if (reply) {
-               dbus_connection_send (connection, reply, NULL);
-               dbus_message_unref (reply);
-               return DBUS_HANDLER_RESULT_HANDLED;
-       } else {
-               return DBUS_HANDLER_RESULT_NOT_YET_HANDLED;
-       }
+static void moonshot_server_finalize (GObject* obj) {
+       MoonshotServer * self;
+       self = MOONSHOT_SERVER (obj);
+       _g_object_unref0 (self->priv->main_window);
+       G_OBJECT_CLASS (moonshot_server_parent_class)->finalize (obj);
 }
 
 
-static DBusHandlerResult _dbus_moonshot_server_property_get_all (MoonshotServer* self, DBusConnection* connection, DBusMessage* message) {
-       DBusMessage* reply;
-       DBusMessageIter iter, reply_iter, subiter;
-       char* interface_name;
-       const char* _tmp0_;
-       if (strcmp (dbus_message_get_signature (message), "s")) {
-               return DBUS_HANDLER_RESULT_NOT_YET_HANDLED;
-       }
-       dbus_message_iter_init (message, &iter);
-       reply = dbus_message_new_method_return (message);
-       dbus_message_iter_init_append (reply, &reply_iter);
-       dbus_message_iter_get_basic (&iter, &_tmp0_);
-       dbus_message_iter_next (&iter);
-       interface_name = g_strdup (_tmp0_);
-       if (strcmp (interface_name, "org.janet.Moonshot") == 0) {
-               dbus_message_iter_open_container (&reply_iter, DBUS_TYPE_ARRAY, "{sv}", &subiter);
-               dbus_message_iter_close_container (&reply_iter, &subiter);
-       } else {
-               dbus_message_unref (reply);
-               reply = NULL;
-       }
-       g_free (interface_name);
-       if (reply) {
-               dbus_connection_send (connection, reply, NULL);
-               dbus_message_unref (reply);
-               return DBUS_HANDLER_RESULT_HANDLED;
-       } else {
-               return DBUS_HANDLER_RESULT_NOT_YET_HANDLED;
+GType moonshot_server_get_type (void) {
+       static volatile gsize moonshot_server_type_id__volatile = 0;
+       if (g_once_init_enter (&moonshot_server_type_id__volatile)) {
+               static const GTypeInfo g_define_type_info = { sizeof (MoonshotServerClass), (GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) moonshot_server_class_init, (GClassFinalizeFunc) NULL, NULL, sizeof (MoonshotServer), 0, (GInstanceInitFunc) moonshot_server_instance_init, NULL };
+               GType moonshot_server_type_id;
+               moonshot_server_type_id = g_type_register_static (G_TYPE_OBJECT, "MoonshotServer", &g_define_type_info, 0);
+               g_once_init_leave (&moonshot_server_type_id__volatile, moonshot_server_type_id);
        }
+       return moonshot_server_type_id__volatile;
 }
 
 
-static DBusHandlerResult _dbus_moonshot_server_get_identity (MoonshotServer* self, DBusConnection* connection, DBusMessage* message) {
-       DBusMessageIter iter;
+static void _dbus_moonshot_server_get_identity (MoonshotServer* self, GVariant* parameters, GDBusMethodInvocation* invocation) {
        char* nai = NULL;
-       const char* _tmp1_;
+       GVariant* _tmp0_;
        char* password = NULL;
-       const char* _tmp2_;
+       GVariant* _tmp1_;
        char* service = NULL;
-       const char* _tmp3_;
-       gpointer * _user_data_;
-       if (strcmp (dbus_message_get_signature (message), "sss")) {
-               return DBUS_HANDLER_RESULT_NOT_YET_HANDLED;
-       }
-       dbus_message_iter_init (message, &iter);
-       dbus_message_iter_get_basic (&iter, &_tmp1_);
-       dbus_message_iter_next (&iter);
-       nai = g_strdup (_tmp1_);
-       dbus_message_iter_get_basic (&iter, &_tmp2_);
-       dbus_message_iter_next (&iter);
-       password = g_strdup (_tmp2_);
-       dbus_message_iter_get_basic (&iter, &_tmp3_);
-       dbus_message_iter_next (&iter);
-       service = g_strdup (_tmp3_);
-       _user_data_ = g_new0 (gpointer, 2);
-       _user_data_[0] = dbus_connection_ref (connection);
-       _user_data_[1] = dbus_message_ref (message);
-       moonshot_server_get_identity (self, nai, password, service, (GAsyncReadyCallback) _dbus_moonshot_server_get_identity_ready, _user_data_);
+       GVariant* _tmp2_;
+       GVariantIter _arguments_iter;
+       g_variant_iter_init (&_arguments_iter, parameters);
+       _tmp0_ = g_variant_iter_next_value (&_arguments_iter);
+       nai = g_variant_dup_string (_tmp0_, NULL);
+       g_variant_unref (_tmp0_);
+       _tmp1_ = g_variant_iter_next_value (&_arguments_iter);
+       password = g_variant_dup_string (_tmp1_, NULL);
+       g_variant_unref (_tmp1_);
+       _tmp2_ = g_variant_iter_next_value (&_arguments_iter);
+       service = g_variant_dup_string (_tmp2_, NULL);
+       g_variant_unref (_tmp2_);
+       moonshot_server_get_identity (self, nai, password, service, (GAsyncReadyCallback) _dbus_moonshot_server_get_identity_ready, g_object_ref (invocation));
        _g_free0 (nai);
        _g_free0 (password);
        _g_free0 (service);
-       return DBUS_HANDLER_RESULT_HANDLED;
 }
 
 
 static void _dbus_moonshot_server_get_identity_ready (GObject * source_object, GAsyncResult * _res_, gpointer * _user_data_) {
-       DBusConnection * connection;
-       DBusMessage * message;
-       DBusMessageIter iter;
+       GDBusMethodInvocation * invocation;
        GError* error;
        char* nai_out = NULL;
        char* password_out = NULL;
@@ -848,67 +818,41 @@ static void _dbus_moonshot_server_get_identity_ready (GObject * source_object, G
        char* subject_name_constraint = NULL;
        char* subject_alt_name_constraint = NULL;
        gboolean result;
-       DBusMessage* reply;
-       const char* _tmp4_;
-       const char* _tmp5_;
-       const char* _tmp6_;
-       const char* _tmp7_;
-       const char* _tmp8_;
-       const char* _tmp9_;
-       dbus_bool_t _tmp10_;
-       connection = _user_data_[0];
-       message = _user_data_[1];
+       GVariant* _reply;
+       GVariantBuilder _reply_builder;
+       invocation = _user_data_;
        error = NULL;
        result = moonshot_server_get_identity_finish ((MoonshotServer*) source_object, _res_, &nai_out, &password_out, &server_certificate_hash, &ca_certificate, &subject_name_constraint, &subject_alt_name_constraint);
-       reply = dbus_message_new_method_return (message);
-       dbus_message_iter_init_append (reply, &iter);
-       _tmp4_ = nai_out;
-       dbus_message_iter_append_basic (&iter, DBUS_TYPE_STRING, &_tmp4_);
+       g_variant_builder_init (&_reply_builder, G_VARIANT_TYPE_TUPLE);
+       g_variant_builder_add_value (&_reply_builder, g_variant_new_string (nai_out));
        _g_free0 (nai_out);
-       _tmp5_ = password_out;
-       dbus_message_iter_append_basic (&iter, DBUS_TYPE_STRING, &_tmp5_);
+       g_variant_builder_add_value (&_reply_builder, g_variant_new_string (password_out));
        _g_free0 (password_out);
-       _tmp6_ = server_certificate_hash;
-       dbus_message_iter_append_basic (&iter, DBUS_TYPE_STRING, &_tmp6_);
+       g_variant_builder_add_value (&_reply_builder, g_variant_new_string (server_certificate_hash));
        _g_free0 (server_certificate_hash);
-       _tmp7_ = ca_certificate;
-       dbus_message_iter_append_basic (&iter, DBUS_TYPE_STRING, &_tmp7_);
+       g_variant_builder_add_value (&_reply_builder, g_variant_new_string (ca_certificate));
        _g_free0 (ca_certificate);
-       _tmp8_ = subject_name_constraint;
-       dbus_message_iter_append_basic (&iter, DBUS_TYPE_STRING, &_tmp8_);
+       g_variant_builder_add_value (&_reply_builder, g_variant_new_string (subject_name_constraint));
        _g_free0 (subject_name_constraint);
-       _tmp9_ = subject_alt_name_constraint;
-       dbus_message_iter_append_basic (&iter, DBUS_TYPE_STRING, &_tmp9_);
+       g_variant_builder_add_value (&_reply_builder, g_variant_new_string (subject_alt_name_constraint));
        _g_free0 (subject_alt_name_constraint);
-       _tmp10_ = result;
-       dbus_message_iter_append_basic (&iter, DBUS_TYPE_BOOLEAN, &_tmp10_);
-       dbus_connection_send (connection, reply, NULL);
-       dbus_message_unref (reply);
-       dbus_connection_unref (connection);
-       dbus_message_unref (message);
-       g_free (_user_data_);
+       g_variant_builder_add_value (&_reply_builder, g_variant_new_boolean (result));
+       _reply = g_variant_builder_end (&_reply_builder);
+       g_dbus_method_invocation_return_value (invocation, _reply);
+       g_object_unref (invocation);
+       g_variant_unref (_reply);
 }
 
 
-static DBusHandlerResult _dbus_moonshot_server_get_default_identity (MoonshotServer* self, DBusConnection* connection, DBusMessage* message) {
-       DBusMessageIter iter;
-       gpointer * _user_data_;
-       if (strcmp (dbus_message_get_signature (message), "")) {
-               return DBUS_HANDLER_RESULT_NOT_YET_HANDLED;
-       }
-       dbus_message_iter_init (message, &iter);
-       _user_data_ = g_new0 (gpointer, 2);
-       _user_data_[0] = dbus_connection_ref (connection);
-       _user_data_[1] = dbus_message_ref (message);
-       moonshot_server_get_default_identity (self, (GAsyncReadyCallback) _dbus_moonshot_server_get_default_identity_ready, _user_data_);
-       return DBUS_HANDLER_RESULT_HANDLED;
+static void _dbus_moonshot_server_get_default_identity (MoonshotServer* self, GVariant* parameters, GDBusMethodInvocation* invocation) {
+       GVariantIter _arguments_iter;
+       g_variant_iter_init (&_arguments_iter, parameters);
+       moonshot_server_get_default_identity (self, (GAsyncReadyCallback) _dbus_moonshot_server_get_default_identity_ready, g_object_ref (invocation));
 }
 
 
 static void _dbus_moonshot_server_get_default_identity_ready (GObject * source_object, GAsyncResult * _res_, gpointer * _user_data_) {
-       DBusConnection * connection;
-       DBusMessage * message;
-       DBusMessageIter iter;
+       GDBusMethodInvocation * invocation;
        GError* error;
        char* nai_out = NULL;
        char* password_out = NULL;
@@ -917,183 +861,166 @@ static void _dbus_moonshot_server_get_default_identity_ready (GObject * source_o
        char* subject_name_constraint = NULL;
        char* subject_alt_name_constraint = NULL;
        gboolean result;
-       DBusMessage* reply;
-       const char* _tmp11_;
-       const char* _tmp12_;
-       const char* _tmp13_;
-       const char* _tmp14_;
-       const char* _tmp15_;
-       const char* _tmp16_;
-       dbus_bool_t _tmp17_;
-       connection = _user_data_[0];
-       message = _user_data_[1];
+       GVariant* _reply;
+       GVariantBuilder _reply_builder;
+       invocation = _user_data_;
        error = NULL;
        result = moonshot_server_get_default_identity_finish ((MoonshotServer*) source_object, _res_, &nai_out, &password_out, &server_certificate_hash, &ca_certificate, &subject_name_constraint, &subject_alt_name_constraint);
-       reply = dbus_message_new_method_return (message);
-       dbus_message_iter_init_append (reply, &iter);
-       _tmp11_ = nai_out;
-       dbus_message_iter_append_basic (&iter, DBUS_TYPE_STRING, &_tmp11_);
+       g_variant_builder_init (&_reply_builder, G_VARIANT_TYPE_TUPLE);
+       g_variant_builder_add_value (&_reply_builder, g_variant_new_string (nai_out));
        _g_free0 (nai_out);
-       _tmp12_ = password_out;
-       dbus_message_iter_append_basic (&iter, DBUS_TYPE_STRING, &_tmp12_);
+       g_variant_builder_add_value (&_reply_builder, g_variant_new_string (password_out));
        _g_free0 (password_out);
-       _tmp13_ = server_certificate_hash;
-       dbus_message_iter_append_basic (&iter, DBUS_TYPE_STRING, &_tmp13_);
+       g_variant_builder_add_value (&_reply_builder, g_variant_new_string (server_certificate_hash));
        _g_free0 (server_certificate_hash);
-       _tmp14_ = ca_certificate;
-       dbus_message_iter_append_basic (&iter, DBUS_TYPE_STRING, &_tmp14_);
+       g_variant_builder_add_value (&_reply_builder, g_variant_new_string (ca_certificate));
        _g_free0 (ca_certificate);
-       _tmp15_ = subject_name_constraint;
-       dbus_message_iter_append_basic (&iter, DBUS_TYPE_STRING, &_tmp15_);
+       g_variant_builder_add_value (&_reply_builder, g_variant_new_string (subject_name_constraint));
        _g_free0 (subject_name_constraint);
-       _tmp16_ = subject_alt_name_constraint;
-       dbus_message_iter_append_basic (&iter, DBUS_TYPE_STRING, &_tmp16_);
+       g_variant_builder_add_value (&_reply_builder, g_variant_new_string (subject_alt_name_constraint));
        _g_free0 (subject_alt_name_constraint);
-       _tmp17_ = result;
-       dbus_message_iter_append_basic (&iter, DBUS_TYPE_BOOLEAN, &_tmp17_);
-       dbus_connection_send (connection, reply, NULL);
-       dbus_message_unref (reply);
-       dbus_connection_unref (connection);
-       dbus_message_unref (message);
-       g_free (_user_data_);
+       g_variant_builder_add_value (&_reply_builder, g_variant_new_boolean (result));
+       _reply = g_variant_builder_end (&_reply_builder);
+       g_dbus_method_invocation_return_value (invocation, _reply);
+       g_object_unref (invocation);
+       g_variant_unref (_reply);
 }
 
 
-static DBusHandlerResult _dbus_moonshot_server_install_id_card (MoonshotServer* self, DBusConnection* connection, DBusMessage* message) {
-       DBusMessageIter iter;
+static void _dbus_moonshot_server_install_id_card (MoonshotServer* self, GVariant* parameters, GDBusMethodInvocation* invocation) {
        GError* error;
        char* display_name = NULL;
-       const char* _tmp18_;
+       GVariant* _tmp3_;
        char* user_name = NULL;
-       const char* _tmp19_;
+       GVariant* _tmp4_;
        char* password = NULL;
-       const char* _tmp20_;
+       GVariant* _tmp5_;
        char* realm = NULL;
-       const char* _tmp21_;
+       GVariant* _tmp6_;
        char** rules_patterns = NULL;
        int rules_patterns_length1;
-       char** _tmp22_;
-       int _tmp22__length;
-       int _tmp22__size;
-       int _tmp22__length1;
-       DBusMessageIter _tmp23_;
+       GVariant* _tmp7_;
+       char** _tmp8_;
+       int _tmp8__length;
+       int _tmp8__size;
+       int _tmp8__length1;
+       GVariantIter _tmp9_;
+       GVariant* _tmp10_;
        char** rules_always_confirm = NULL;
        int rules_always_confirm_length1;
-       char** _tmp25_;
-       int _tmp25__length;
-       int _tmp25__size;
-       int _tmp25__length1;
-       DBusMessageIter _tmp26_;
+       GVariant* _tmp11_;
+       char** _tmp12_;
+       int _tmp12__length;
+       int _tmp12__size;
+       int _tmp12__length1;
+       GVariantIter _tmp13_;
+       GVariant* _tmp14_;
        char** services = NULL;
        int services_length1;
-       char** _tmp28_;
-       int _tmp28__length;
-       int _tmp28__size;
-       int _tmp28__length1;
-       DBusMessageIter _tmp29_;
+       GVariant* _tmp15_;
+       char** _tmp16_;
+       int _tmp16__length;
+       int _tmp16__size;
+       int _tmp16__length1;
+       GVariantIter _tmp17_;
+       GVariant* _tmp18_;
        char* ca_cert = NULL;
-       const char* _tmp31_;
+       GVariant* _tmp19_;
        char* subject = NULL;
-       const char* _tmp32_;
+       GVariant* _tmp20_;
        char* subject_alt = NULL;
-       const char* _tmp33_;
+       GVariant* _tmp21_;
        char* server_cert = NULL;
-       const char* _tmp34_;
+       GVariant* _tmp22_;
        gboolean result;
-       DBusMessage* reply;
-       dbus_bool_t _tmp35_;
+       GVariantIter _arguments_iter;
+       GVariant* _reply;
+       GVariantBuilder _reply_builder;
        error = NULL;
-       if (strcmp (dbus_message_get_signature (message), "ssssasasasssss")) {
-               return DBUS_HANDLER_RESULT_NOT_YET_HANDLED;
-       }
-       dbus_message_iter_init (message, &iter);
-       dbus_message_iter_get_basic (&iter, &_tmp18_);
-       dbus_message_iter_next (&iter);
-       display_name = g_strdup (_tmp18_);
-       dbus_message_iter_get_basic (&iter, &_tmp19_);
-       dbus_message_iter_next (&iter);
-       user_name = g_strdup (_tmp19_);
-       dbus_message_iter_get_basic (&iter, &_tmp20_);
-       dbus_message_iter_next (&iter);
-       password = g_strdup (_tmp20_);
-       dbus_message_iter_get_basic (&iter, &_tmp21_);
-       dbus_message_iter_next (&iter);
-       realm = g_strdup (_tmp21_);
+       g_variant_iter_init (&_arguments_iter, parameters);
+       _tmp3_ = g_variant_iter_next_value (&_arguments_iter);
+       display_name = g_variant_dup_string (_tmp3_, NULL);
+       g_variant_unref (_tmp3_);
+       _tmp4_ = g_variant_iter_next_value (&_arguments_iter);
+       user_name = g_variant_dup_string (_tmp4_, NULL);
+       g_variant_unref (_tmp4_);
+       _tmp5_ = g_variant_iter_next_value (&_arguments_iter);
+       password = g_variant_dup_string (_tmp5_, NULL);
+       g_variant_unref (_tmp5_);
+       _tmp6_ = g_variant_iter_next_value (&_arguments_iter);
+       realm = g_variant_dup_string (_tmp6_, NULL);
+       g_variant_unref (_tmp6_);
        rules_patterns_length1 = 0;
-       _tmp22_ = g_new (char*, 5);
-       _tmp22__length = 0;
-       _tmp22__size = 4;
-       _tmp22__length1 = 0;
-       dbus_message_iter_recurse (&iter, &_tmp23_);
-       for (; dbus_message_iter_get_arg_type (&_tmp23_); _tmp22__length1++) {
-               const char* _tmp24_;
-               if (_tmp22__size == _tmp22__length) {
-                       _tmp22__size = 2 * _tmp22__size;
-                       _tmp22_ = g_renew (char*, _tmp22_, _tmp22__size + 1);
+       _tmp7_ = g_variant_iter_next_value (&_arguments_iter);
+       _tmp8_ = g_new (char*, 5);
+       _tmp8__length = 0;
+       _tmp8__size = 4;
+       _tmp8__length1 = 0;
+       g_variant_iter_init (&_tmp9_, _tmp7_);
+       for (; _tmp10_ = g_variant_iter_next_value (&_tmp9_); _tmp8__length1++) {
+               if (_tmp8__size == _tmp8__length) {
+                       _tmp8__size = 2 * _tmp8__size;
+                       _tmp8_ = g_renew (char*, _tmp8_, _tmp8__size + 1);
                }
-               dbus_message_iter_get_basic (&_tmp23_, &_tmp24_);
-               dbus_message_iter_next (&_tmp23_);
-               _tmp22_[_tmp22__length++] = g_strdup (_tmp24_);
+               _tmp8_[_tmp8__length++] = g_variant_dup_string (_tmp10_, NULL);
+               g_variant_unref (_tmp10_);
        }
-       rules_patterns_length1 = _tmp22__length1;
-       _tmp22_[_tmp22__length] = NULL;
-       dbus_message_iter_next (&iter);
-       rules_patterns = _tmp22_;
+       rules_patterns_length1 = _tmp8__length1;
+       _tmp8_[_tmp8__length] = NULL;
+       rules_patterns = _tmp8_;
+       g_variant_unref (_tmp7_);
        rules_always_confirm_length1 = 0;
-       _tmp25_ = g_new (char*, 5);
-       _tmp25__length = 0;
-       _tmp25__size = 4;
-       _tmp25__length1 = 0;
-       dbus_message_iter_recurse (&iter, &_tmp26_);
-       for (; dbus_message_iter_get_arg_type (&_tmp26_); _tmp25__length1++) {
-               const char* _tmp27_;
-               if (_tmp25__size == _tmp25__length) {
-                       _tmp25__size = 2 * _tmp25__size;
-                       _tmp25_ = g_renew (char*, _tmp25_, _tmp25__size + 1);
+       _tmp11_ = g_variant_iter_next_value (&_arguments_iter);
+       _tmp12_ = g_new (char*, 5);
+       _tmp12__length = 0;
+       _tmp12__size = 4;
+       _tmp12__length1 = 0;
+       g_variant_iter_init (&_tmp13_, _tmp11_);
+       for (; _tmp14_ = g_variant_iter_next_value (&_tmp13_); _tmp12__length1++) {
+               if (_tmp12__size == _tmp12__length) {
+                       _tmp12__size = 2 * _tmp12__size;
+                       _tmp12_ = g_renew (char*, _tmp12_, _tmp12__size + 1);
                }
-               dbus_message_iter_get_basic (&_tmp26_, &_tmp27_);
-               dbus_message_iter_next (&_tmp26_);
-               _tmp25_[_tmp25__length++] = g_strdup (_tmp27_);
+               _tmp12_[_tmp12__length++] = g_variant_dup_string (_tmp14_, NULL);
+               g_variant_unref (_tmp14_);
        }
-       rules_always_confirm_length1 = _tmp25__length1;
-       _tmp25_[_tmp25__length] = NULL;
-       dbus_message_iter_next (&iter);
-       rules_always_confirm = _tmp25_;
+       rules_always_confirm_length1 = _tmp12__length1;
+       _tmp12_[_tmp12__length] = NULL;
+       rules_always_confirm = _tmp12_;
+       g_variant_unref (_tmp11_);
        services_length1 = 0;
-       _tmp28_ = g_new (char*, 5);
-       _tmp28__length = 0;
-       _tmp28__size = 4;
-       _tmp28__length1 = 0;
-       dbus_message_iter_recurse (&iter, &_tmp29_);
-       for (; dbus_message_iter_get_arg_type (&_tmp29_); _tmp28__length1++) {
-               const char* _tmp30_;
-               if (_tmp28__size == _tmp28__length) {
-                       _tmp28__size = 2 * _tmp28__size;
-                       _tmp28_ = g_renew (char*, _tmp28_, _tmp28__size + 1);
+       _tmp15_ = g_variant_iter_next_value (&_arguments_iter);
+       _tmp16_ = g_new (char*, 5);
+       _tmp16__length = 0;
+       _tmp16__size = 4;
+       _tmp16__length1 = 0;
+       g_variant_iter_init (&_tmp17_, _tmp15_);
+       for (; _tmp18_ = g_variant_iter_next_value (&_tmp17_); _tmp16__length1++) {
+               if (_tmp16__size == _tmp16__length) {
+                       _tmp16__size = 2 * _tmp16__size;
+                       _tmp16_ = g_renew (char*, _tmp16_, _tmp16__size + 1);
                }
-               dbus_message_iter_get_basic (&_tmp29_, &_tmp30_);
-               dbus_message_iter_next (&_tmp29_);
-               _tmp28_[_tmp28__length++] = g_strdup (_tmp30_);
+               _tmp16_[_tmp16__length++] = g_variant_dup_string (_tmp18_, NULL);
+               g_variant_unref (_tmp18_);
        }
-       services_length1 = _tmp28__length1;
-       _tmp28_[_tmp28__length] = NULL;
-       dbus_message_iter_next (&iter);
-       services = _tmp28_;
-       dbus_message_iter_get_basic (&iter, &_tmp31_);
-       dbus_message_iter_next (&iter);
-       ca_cert = g_strdup (_tmp31_);
-       dbus_message_iter_get_basic (&iter, &_tmp32_);
-       dbus_message_iter_next (&iter);
-       subject = g_strdup (_tmp32_);
-       dbus_message_iter_get_basic (&iter, &_tmp33_);
-       dbus_message_iter_next (&iter);
-       subject_alt = g_strdup (_tmp33_);
-       dbus_message_iter_get_basic (&iter, &_tmp34_);
-       dbus_message_iter_next (&iter);
-       server_cert = g_strdup (_tmp34_);
+       services_length1 = _tmp16__length1;
+       _tmp16_[_tmp16__length] = NULL;
+       services = _tmp16_;
+       g_variant_unref (_tmp15_);
+       _tmp19_ = g_variant_iter_next_value (&_arguments_iter);
+       ca_cert = g_variant_dup_string (_tmp19_, NULL);
+       g_variant_unref (_tmp19_);
+       _tmp20_ = g_variant_iter_next_value (&_arguments_iter);
+       subject = g_variant_dup_string (_tmp20_, NULL);
+       g_variant_unref (_tmp20_);
+       _tmp21_ = g_variant_iter_next_value (&_arguments_iter);
+       subject_alt = g_variant_dup_string (_tmp21_, NULL);
+       g_variant_unref (_tmp21_);
+       _tmp22_ = g_variant_iter_next_value (&_arguments_iter);
+       server_cert = g_variant_dup_string (_tmp22_, NULL);
+       g_variant_unref (_tmp22_);
        result = moonshot_server_install_id_card (self, display_name, user_name, password, realm, rules_patterns, rules_patterns_length1, rules_always_confirm, rules_always_confirm_length1, services, services_length1, ca_cert, subject, subject_alt, server_cert);
-       reply = dbus_message_new_method_return (message);
-       dbus_message_iter_init_append (reply, &iter);
+       g_variant_builder_init (&_reply_builder, G_VARIANT_TYPE_TUPLE);
        _g_free0 (display_name);
        _g_free0 (user_name);
        _g_free0 (password);
@@ -1105,79 +1032,67 @@ static DBusHandlerResult _dbus_moonshot_server_install_id_card (MoonshotServer*
        _g_free0 (subject);
        _g_free0 (subject_alt);
        _g_free0 (server_cert);
-       _tmp35_ = result;
-       dbus_message_iter_append_basic (&iter, DBUS_TYPE_BOOLEAN, &_tmp35_);
-       if (reply) {
-               dbus_connection_send (connection, reply, NULL);
-               dbus_message_unref (reply);
-               return DBUS_HANDLER_RESULT_HANDLED;
-       } else {
-               return DBUS_HANDLER_RESULT_NOT_YET_HANDLED;
-       }
+       g_variant_builder_add_value (&_reply_builder, g_variant_new_boolean (result));
+       _reply = g_variant_builder_end (&_reply_builder);
+       g_dbus_method_invocation_return_value (invocation, _reply);
 }
 
 
-DBusHandlerResult moonshot_server_dbus_message (DBusConnection* connection, DBusMessage* message, void* object) {
-       DBusHandlerResult result;
-       result = DBUS_HANDLER_RESULT_NOT_YET_HANDLED;
-       if (dbus_message_is_method_call (message, "org.freedesktop.DBus.Introspectable", "Introspect")) {
-               result = _dbus_moonshot_server_introspect (object, connection, message);
-       } else if (dbus_message_is_method_call (message, "org.freedesktop.DBus.Properties", "GetAll")) {
-               result = _dbus_moonshot_server_property_get_all (object, connection, message);
-       } else if (dbus_message_is_method_call (message, "org.janet.Moonshot", "GetIdentity")) {
-               result = _dbus_moonshot_server_get_identity (object, connection, message);
-       } else if (dbus_message_is_method_call (message, "org.janet.Moonshot", "GetDefaultIdentity")) {
-               result = _dbus_moonshot_server_get_default_identity (object, connection, message);
-       } else if (dbus_message_is_method_call (message, "org.janet.Moonshot", "InstallIdCard")) {
-               result = _dbus_moonshot_server_install_id_card (object, connection, message);
-       }
-       if (result == DBUS_HANDLER_RESULT_HANDLED) {
-               return result;
-       } else {
-               return DBUS_HANDLER_RESULT_NOT_YET_HANDLED;
+static void moonshot_server_dbus_interface_method_call (GDBusConnection* connection, const gchar* sender, const gchar* object_path, const gchar* interface_name, const gchar* method_name, GVariant* parameters, GDBusMethodInvocation* invocation, gpointer user_data) {
+       gpointer* data;
+       gpointer object;
+       data = user_data;
+       object = data[0];
+       if (strcmp (method_name, "GetIdentity") == 0) {
+               _dbus_moonshot_server_get_identity (object, parameters, invocation);
+       } else if (strcmp (method_name, "GetDefaultIdentity") == 0) {
+               _dbus_moonshot_server_get_default_identity (object, parameters, invocation);
+       } else if (strcmp (method_name, "InstallIdCard") == 0) {
+               _dbus_moonshot_server_install_id_card (object, parameters, invocation);
        }
 }
 
 
-void moonshot_server_dbus_register_object (DBusConnection* connection, const char* path, void* object) {
-       if (!g_object_get_data (object, "dbus_object_path")) {
-               g_object_set_data (object, "dbus_object_path", g_strdup (path));
-               dbus_connection_register_object_path (connection, path, &_moonshot_server_dbus_path_vtable, object);
-               g_object_weak_ref (object, _vala_dbus_unregister_object, connection);
-       }
+static GVariant* moonshot_server_dbus_interface_get_property (GDBusConnection* connection, const gchar* sender, const gchar* object_path, const gchar* interface_name, const gchar* property_name, GError** error, gpointer user_data) {
+       gpointer* data;
+       gpointer object;
+       data = user_data;
+       object = data[0];
+       return NULL;
 }
 
 
-static void moonshot_server_class_init (MoonshotServerClass * klass) {
-       moonshot_server_parent_class = g_type_class_peek_parent (klass);
-       g_type_class_add_private (klass, sizeof (MoonshotServerPrivate));
-       G_OBJECT_CLASS (klass)->finalize = moonshot_server_finalize;
-       g_type_set_qdata (TYPE_MOONSHOT_SERVER, g_quark_from_static_string ("DBusObjectVTable"), (void*) (&_moonshot_server_dbus_vtable));
-}
-
-
-static void moonshot_server_instance_init (MoonshotServer * self) {
-       self->priv = MOONSHOT_SERVER_GET_PRIVATE (self);
+static gboolean moonshot_server_dbus_interface_set_property (GDBusConnection* connection, const gchar* sender, const gchar* object_path, const gchar* interface_name, const gchar* property_name, GVariant* value, GError** error, gpointer user_data) {
+       gpointer* data;
+       gpointer object;
+       data = user_data;
+       object = data[0];
+       return FALSE;
 }
 
 
-static void moonshot_server_finalize (GObject* obj) {
-       MoonshotServer * self;
-       self = MOONSHOT_SERVER (obj);
-       _g_object_unref0 (self->priv->main_window);
-       G_OBJECT_CLASS (moonshot_server_parent_class)->finalize (obj);
+guint moonshot_server_register_object (gpointer object, GDBusConnection* connection, const gchar* path, GError** error) {
+       guint result;
+       gpointer *data;
+       data = g_new (gpointer, 3);
+       data[0] = g_object_ref (object);
+       data[1] = g_object_ref (connection);
+       data[2] = g_strdup (path);
+       result = g_dbus_connection_register_object (connection, path, &_moonshot_server_dbus_interface_info, &_moonshot_server_dbus_interface_vtable, data, _moonshot_server_unregister_object, error);
+       if (!result) {
+               return 0;
+       }
+       return result;
 }
 
 
-GType moonshot_server_get_type (void) {
-       static volatile gsize moonshot_server_type_id__volatile = 0;
-       if (g_once_init_enter (&moonshot_server_type_id__volatile)) {
-               static const GTypeInfo g_define_type_info = { sizeof (MoonshotServerClass), (GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) moonshot_server_class_init, (GClassFinalizeFunc) NULL, NULL, sizeof (MoonshotServer), 0, (GInstanceInitFunc) moonshot_server_instance_init, NULL };
-               GType moonshot_server_type_id;
-               moonshot_server_type_id = g_type_register_static (G_TYPE_OBJECT, "MoonshotServer", &g_define_type_info, 0);
-               g_once_init_leave (&moonshot_server_type_id__volatile, moonshot_server_type_id);
-       }
-       return moonshot_server_type_id__volatile;
+static void _moonshot_server_unregister_object (gpointer user_data) {
+       gpointer* data;
+       data = user_data;
+       g_object_unref (data[0]);
+       g_object_unref (data[1]);
+       g_free (data[2]);
+       g_free (data);
 }
 
 
index 702ee4f..ad430e7 100644 (file)
@@ -43,6 +43,7 @@ GdkPixbuf* find_icon (const char* name, gint size) {
        {
                GtkIconTheme* icon_theme;
                GdkPixbuf* _tmp0_;
+               g_print ("Linux\n");
                icon_theme = _g_object_ref0 (gtk_icon_theme_get_default ());
                _tmp0_ = gtk_icon_theme_load_icon (icon_theme, name, size, GTK_ICON_LOOKUP_FORCE_SIZE, &_inner_error_);
                if (_inner_error_ != NULL) {