run vala
[moonshot-ui.git] / src / moonshot-window.c
1 /* moonshot-window.c generated by valac 0.10.4, the Vala compiler
2  * generated from moonshot-window.vala, do not modify */
3
4
5 #include <glib.h>
6 #include <glib-object.h>
7 #include <gtk/gtk.h>
8 #include <stdlib.h>
9 #include <string.h>
10 #include <gdk-pixbuf/gdk-pixdata.h>
11 #include <gdk/gdk.h>
12 #include <glib/gi18n-lib.h>
13 #include <pango/pango.h>
14 #include <float.h>
15 #include <math.h>
16 #include <stdio.h>
17 #include <atk/atk.h>
18 #include <dbus/dbus-glib-lowlevel.h>
19 #include <dbus/dbus-glib.h>
20 #include <dbus/dbus.h>
21 #include <config.h>
22
23
24 #define TYPE_MAIN_WINDOW (main_window_get_type ())
25 #define MAIN_WINDOW(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), TYPE_MAIN_WINDOW, MainWindow))
26 #define MAIN_WINDOW_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), TYPE_MAIN_WINDOW, MainWindowClass))
27 #define IS_MAIN_WINDOW(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TYPE_MAIN_WINDOW))
28 #define IS_MAIN_WINDOW_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), TYPE_MAIN_WINDOW))
29 #define MAIN_WINDOW_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), TYPE_MAIN_WINDOW, MainWindowClass))
30
31 typedef struct _MainWindow MainWindow;
32 typedef struct _MainWindowClass MainWindowClass;
33 typedef struct _MainWindowPrivate MainWindowPrivate;
34
35 #define TYPE_ID_CARD_WIDGET (id_card_widget_get_type ())
36 #define ID_CARD_WIDGET(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), TYPE_ID_CARD_WIDGET, IdCardWidget))
37 #define ID_CARD_WIDGET_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), TYPE_ID_CARD_WIDGET, IdCardWidgetClass))
38 #define IS_ID_CARD_WIDGET(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TYPE_ID_CARD_WIDGET))
39 #define IS_ID_CARD_WIDGET_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), TYPE_ID_CARD_WIDGET))
40 #define ID_CARD_WIDGET_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), TYPE_ID_CARD_WIDGET, IdCardWidgetClass))
41
42 typedef struct _IdCardWidget IdCardWidget;
43 typedef struct _IdCardWidgetClass IdCardWidgetClass;
44
45 #define TYPE_CUSTOM_VBOX (custom_vbox_get_type ())
46 #define CUSTOM_VBOX(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), TYPE_CUSTOM_VBOX, CustomVBox))
47 #define CUSTOM_VBOX_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), TYPE_CUSTOM_VBOX, CustomVBoxClass))
48 #define IS_CUSTOM_VBOX(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TYPE_CUSTOM_VBOX))
49 #define IS_CUSTOM_VBOX_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), TYPE_CUSTOM_VBOX))
50 #define CUSTOM_VBOX_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), TYPE_CUSTOM_VBOX, CustomVBoxClass))
51
52 typedef struct _CustomVBox CustomVBox;
53 typedef struct _CustomVBoxClass CustomVBoxClass;
54
55 #define TYPE_IDENTITIES_MANAGER (identities_manager_get_type ())
56 #define IDENTITIES_MANAGER(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), TYPE_IDENTITIES_MANAGER, IdentitiesManager))
57 #define IDENTITIES_MANAGER_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), TYPE_IDENTITIES_MANAGER, IdentitiesManagerClass))
58 #define IS_IDENTITIES_MANAGER(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TYPE_IDENTITIES_MANAGER))
59 #define IS_IDENTITIES_MANAGER_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), TYPE_IDENTITIES_MANAGER))
60 #define IDENTITIES_MANAGER_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), TYPE_IDENTITIES_MANAGER, IdentitiesManagerClass))
61
62 typedef struct _IdentitiesManager IdentitiesManager;
63 typedef struct _IdentitiesManagerClass IdentitiesManagerClass;
64
65 #define TYPE_MOONSHOT_SERVER (moonshot_server_get_type ())
66 #define MOONSHOT_SERVER(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), TYPE_MOONSHOT_SERVER, MoonshotServer))
67 #define MOONSHOT_SERVER_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), TYPE_MOONSHOT_SERVER, MoonshotServerClass))
68 #define IS_MOONSHOT_SERVER(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TYPE_MOONSHOT_SERVER))
69 #define IS_MOONSHOT_SERVER_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), TYPE_MOONSHOT_SERVER))
70 #define MOONSHOT_SERVER_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), TYPE_MOONSHOT_SERVER, MoonshotServerClass))
71
72 typedef struct _MoonshotServer MoonshotServer;
73 typedef struct _MoonshotServerClass MoonshotServerClass;
74
75 #define TYPE_IDENTITY_REQUEST (identity_request_get_type ())
76 #define IDENTITY_REQUEST(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), TYPE_IDENTITY_REQUEST, IdentityRequest))
77 #define IDENTITY_REQUEST_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), TYPE_IDENTITY_REQUEST, IdentityRequestClass))
78 #define IS_IDENTITY_REQUEST(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TYPE_IDENTITY_REQUEST))
79 #define IS_IDENTITY_REQUEST_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), TYPE_IDENTITY_REQUEST))
80 #define IDENTITY_REQUEST_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), TYPE_IDENTITY_REQUEST, IdentityRequestClass))
81
82 typedef struct _IdentityRequest IdentityRequest;
83 typedef struct _IdentityRequestClass IdentityRequestClass;
84
85 #define MAIN_WINDOW_TYPE_COLUMNS (main_window_columns_get_type ())
86 #define _g_object_unref0(var) ((var == NULL) ? NULL : (var = (g_object_unref (var), NULL)))
87 #define _g_queue_free0(var) ((var == NULL) ? NULL : (var = (g_queue_free (var), NULL)))
88 #define _g_free0(var) (var = (g_free (var), NULL))
89
90 #define TYPE_ID_CARD (id_card_get_type ())
91 #define ID_CARD(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), TYPE_ID_CARD, IdCard))
92 #define ID_CARD_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), TYPE_ID_CARD, IdCardClass))
93 #define IS_ID_CARD(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TYPE_ID_CARD))
94 #define IS_ID_CARD_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), TYPE_ID_CARD))
95 #define ID_CARD_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), TYPE_ID_CARD, IdCardClass))
96
97 typedef struct _IdCard IdCard;
98 typedef struct _IdCardClass IdCardClass;
99 typedef struct _IdentitiesManagerPrivate IdentitiesManagerPrivate;
100 #define _g_list_free0(var) ((var == NULL) ? NULL : (var = (g_list_free (var), NULL)))
101
102 #define TYPE_ADD_IDENTITY_DIALOG (add_identity_dialog_get_type ())
103 #define ADD_IDENTITY_DIALOG(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), TYPE_ADD_IDENTITY_DIALOG, AddIdentityDialog))
104 #define ADD_IDENTITY_DIALOG_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), TYPE_ADD_IDENTITY_DIALOG, AddIdentityDialogClass))
105 #define IS_ADD_IDENTITY_DIALOG(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TYPE_ADD_IDENTITY_DIALOG))
106 #define IS_ADD_IDENTITY_DIALOG_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), TYPE_ADD_IDENTITY_DIALOG))
107 #define ADD_IDENTITY_DIALOG_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), TYPE_ADD_IDENTITY_DIALOG, AddIdentityDialogClass))
108
109 typedef struct _AddIdentityDialog AddIdentityDialog;
110 typedef struct _AddIdentityDialogClass AddIdentityDialogClass;
111
112 #define TYPE_ADD_PASSWORD_DIALOG (add_password_dialog_get_type ())
113 #define ADD_PASSWORD_DIALOG(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), TYPE_ADD_PASSWORD_DIALOG, AddPasswordDialog))
114 #define ADD_PASSWORD_DIALOG_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), TYPE_ADD_PASSWORD_DIALOG, AddPasswordDialogClass))
115 #define IS_ADD_PASSWORD_DIALOG(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TYPE_ADD_PASSWORD_DIALOG))
116 #define IS_ADD_PASSWORD_DIALOG_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), TYPE_ADD_PASSWORD_DIALOG))
117 #define ADD_PASSWORD_DIALOG_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), TYPE_ADD_PASSWORD_DIALOG, AddPasswordDialogClass))
118
119 typedef struct _AddPasswordDialog AddPasswordDialog;
120 typedef struct _AddPasswordDialogClass AddPasswordDialogClass;
121 #define _pango_font_description_free0(var) ((var == NULL) ? NULL : (var = (pango_font_description_free (var), NULL)))
122 #define _g_error_free0(var) ((var == NULL) ? NULL : (var = (g_error_free (var), NULL)))
123 #define _dbus_g_connection_unref0(var) ((var == NULL) ? NULL : (var = (dbus_g_connection_unref (var), NULL)))
124 typedef struct _DBusObjectVTable _DBusObjectVTable;
125
126 struct _MainWindow {
127         GtkWindow parent_instance;
128         MainWindowPrivate * priv;
129         IdCardWidget* selected_id_card_widget;
130 };
131
132 struct _MainWindowClass {
133         GtkWindowClass parent_class;
134 };
135
136 struct _MainWindowPrivate {
137         GtkUIManager* ui_manager;
138         GtkEntry* search_entry;
139         GtkVBox* vbox_rigth;
140         CustomVBox* custom_vbox;
141         GtkVBox* services_internal_vbox;
142         GtkEntry* username_entry;
143         GtkEntry* password_entry;
144         GtkListStore* listmodel;
145         GtkTreeModelFilter* filter;
146         IdentitiesManager* identities_manager;
147         MoonshotServer* ipc_server;
148         GQueue* request_queue;
149 };
150
151 typedef enum  {
152         MAIN_WINDOW_COLUMNS_IDCARD_COL,
153         MAIN_WINDOW_COLUMNS_LOGO_COL,
154         MAIN_WINDOW_COLUMNS_ISSUER_COL,
155         MAIN_WINDOW_COLUMNS_USERNAME_COL,
156         MAIN_WINDOW_COLUMNS_PASSWORD_COL,
157         MAIN_WINDOW_COLUMNS_N_COLUMNS
158 } MainWindowColumns;
159
160 struct _IdentitiesManager {
161         GObject parent_instance;
162         IdentitiesManagerPrivate * priv;
163         GSList* id_card_list;
164 };
165
166 struct _IdentitiesManagerClass {
167         GObjectClass parent_class;
168 };
169
170 struct _DBusObjectVTable {
171         void (*register_object) (DBusConnection*, const char*, void*);
172 };
173
174
175 static gpointer main_window_parent_class = NULL;
176
177 GType main_window_get_type (void) G_GNUC_CONST;
178 GType id_card_widget_get_type (void) G_GNUC_CONST;
179 GType custom_vbox_get_type (void) G_GNUC_CONST;
180 GType identities_manager_get_type (void) G_GNUC_CONST;
181 GType moonshot_server_get_type (void) G_GNUC_CONST;
182 GType identity_request_get_type (void) G_GNUC_CONST;
183 #define MAIN_WINDOW_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), TYPE_MAIN_WINDOW, MainWindowPrivate))
184 enum  {
185         MAIN_WINDOW_DUMMY_PROPERTY
186 };
187 static GType main_window_columns_get_type (void) G_GNUC_UNUSED;
188 #define MAIN_WINDOW_WINDOW_WIDTH 400
189 #define MAIN_WINDOW_WINDOW_HEIGHT 500
190 #define MAIN_WINDOW_layout "\n" \
191 "<menubar name='MenuBar'>\n" \
192 "        <menu name='FileMenu' action='FileMenuAction'>\n" \
193 "            <menuitem name='AddIdCard' action='AddIdCardAction' />\n" \
194 "            <separator />\n" \
195 "            <menuitem name='Quit' action='QuitAction' />\n" \
196 "        </menu>\n" \
197 "\n" \
198 "        <menu name='HelpMenu' action='HelpMenuAction'>\n" \
199 "             <menuitem name='About' action='AboutAction' />\n" \
200 "        </menu>\n" \
201 "</menubar>\n"
202 MainWindow* main_window_new (void);
203 MainWindow* main_window_construct (GType object_type);
204 static void main_window_build_ui (MainWindow* self);
205 static void main_window_setup_identities_list (MainWindow* self);
206 static void main_window_load_gss_eap_id_file (MainWindow* self);
207 static void main_window_connect_signals (MainWindow* self);
208 static void main_window_init_ipc_server (MainWindow* self);
209 static gboolean main_window_visible_func (MainWindow* self, GtkTreeModel* model, GtkTreeIter* iter);
210 GType id_card_get_type (void) G_GNUC_CONST;
211 static gboolean _main_window_visible_func_gtk_tree_model_filter_visible_func (GtkTreeModel* model, GtkTreeIter* iter, gpointer self);
212 static void main_window_search_entry_icon_press_cb (MainWindow* self, GtkEntryIconPosition pos, GdkEvent* event);
213 static void main_window_search_entry_text_changed_cb (MainWindow* self);
214 static void main_window_redraw_id_card_widgets (MainWindow* self);
215 static gboolean main_window_search_entry_key_press_event_cb (MainWindow* self, GdkEventKey* e);
216 IdentitiesManager* identities_manager_new (void);
217 IdentitiesManager* identities_manager_construct (GType object_type);
218 IdCard* identities_manager_load_gss_eap_id_file (IdentitiesManager* self);
219 static void main_window_add_id_card_data (MainWindow* self, IdCard* id_card);
220 static void main_window_add_id_card_widget (MainWindow* self, IdCard* id_card);
221 static void main_window_load_id_cards (MainWindow* self);
222 static void main_window_fill_details (MainWindow* self, IdCardWidget* id_card_widget);
223 IdCard* id_card_widget_get_id_card (IdCardWidget* self);
224 const char* id_card_get_username (IdCard* self);
225 const char* id_card_get_password (IdCard* self);
226 static void main_window_fill_services_vbox (MainWindow* self, IdCard* id_card);
227 static void main_window_show_details (MainWindow* self, IdCard* id_card);
228 static void main_window_details_identity_cb (MainWindow* self, IdCardWidget* id_card_widget);
229 GType add_identity_dialog_get_type (void) G_GNUC_CONST;
230 static IdCard* main_window_get_id_card_data (MainWindow* self, AddIdentityDialog* dialog);
231 IdCard* id_card_new (void);
232 IdCard* id_card_construct (GType object_type);
233 const char* add_identity_dialog_get_issuer (AddIdentityDialog* self);
234 void id_card_set_issuer (IdCard* self, const char* value);
235 const char* id_card_get_issuer (IdCard* self);
236 const char* add_identity_dialog_get_username (AddIdentityDialog* self);
237 void id_card_set_username (IdCard* self, const char* value);
238 const char* add_identity_dialog_get_password (AddIdentityDialog* self);
239 void id_card_set_password (IdCard* self, const char* value);
240 void id_card_set_nai (IdCard* self, const char* value);
241 GdkPixbuf* find_icon (const char* name, gint size);
242 void id_card_set_pixbuf (IdCard* self, GdkPixbuf* value);
243 void id_card_set_services (IdCard* self, char** value, int value_length1);
244 GdkPixbuf* id_card_get_pixbuf (IdCard* self);
245 static void main_window_remove_id_card_data (MainWindow* self, IdCard* id_card);
246 IdCardWidget* id_card_widget_new (IdCard* id_card);
247 IdCardWidget* id_card_widget_construct (GType object_type, IdCard* id_card);
248 void custom_vbox_add_id_card_widget (CustomVBox* self, IdCardWidget* id_card_widget);
249 static void _main_window_details_identity_cb_id_card_widget_details_id (IdCardWidget* _sender, gpointer self);
250 static void main_window_remove_identity_cb (MainWindow* self, IdCardWidget* id_card_widget);
251 static void _main_window_remove_identity_cb_id_card_widget_remove_id (IdCardWidget* _sender, gpointer self);
252 void main_window_send_identity_cb (MainWindow* self, IdCardWidget* id_card_widget);
253 static void _main_window_send_identity_cb_id_card_widget_send_id (IdCardWidget* _sender, gpointer self);
254 void custom_vbox_receive_expanded_event (CustomVBox* self, IdCardWidget* id_card_widget);
255 static void _custom_vbox_receive_expanded_event_id_card_widget_expanded (IdCardWidget* _sender, gpointer self);
256 static void _main_window_fill_details_id_card_widget_expanded (IdCardWidget* _sender, gpointer self);
257 static void main_window_add_identity (MainWindow* self, AddIdentityDialog* dialog);
258 void identities_manager_store_id_cards (IdentitiesManager* self);
259 void identities_manager_store_gss_eap_id_file (IdentitiesManager* self, IdCard* id_card);
260 static void main_window_add_identity_cb (MainWindow* self);
261 AddIdentityDialog* add_identity_dialog_new (void);
262 AddIdentityDialog* add_identity_dialog_construct (GType object_type);
263 static void main_window_remove_id_card_widget (MainWindow* self, IdCardWidget* id_card_widget);
264 void custom_vbox_remove_id_card_widget (CustomVBox* self, IdCardWidget* id_card_widget);
265 static void main_window_remove_identity (MainWindow* self, IdCardWidget* id_card_widget);
266 void main_window_select_identity (MainWindow* self, IdentityRequest* request);
267 AddPasswordDialog* add_password_dialog_new (void);
268 AddPasswordDialog* add_password_dialog_construct (GType object_type);
269 GType add_password_dialog_get_type (void) G_GNUC_CONST;
270 const char* add_password_dialog_get_password (AddPasswordDialog* self);
271 gboolean add_password_dialog_get_remember (AddPasswordDialog* self);
272 void identity_request_return_identity (IdentityRequest* self, IdCard* id_card);
273 static void main_window_label_make_bold (MainWindow* self, GtkLabel* label);
274 char** id_card_get_services (IdCard* self, int* result_length1);
275 static void main_window_on_about_action (MainWindow* self);
276 static GtkActionEntry* main_window_create_actions (MainWindow* self, int* result_length1);
277 static void _vala_array_add1 (GtkActionEntry** array, int* length, int* size, const GtkActionEntry* value);
278 static void _main_window_add_identity_cb_gtk_action_callback (GtkAction* action, gpointer self);
279 static void _vala_array_add2 (GtkActionEntry** array, int* length, int* size, const GtkActionEntry* value);
280 static void _gtk_main_quit_gtk_action_callback (GtkAction* action, gpointer self);
281 static void _vala_array_add3 (GtkActionEntry** array, int* length, int* size, const GtkActionEntry* value);
282 static void _vala_array_add4 (GtkActionEntry** array, int* length, int* size, const GtkActionEntry* value);
283 static void _main_window_on_about_action_gtk_action_callback (GtkAction* action, gpointer self);
284 static void _vala_array_add5 (GtkActionEntry** array, int* length, int* size, const GtkActionEntry* value);
285 static void main_window_create_ui_manager (MainWindow* self);
286 static void main_window_set_atk_name_description (MainWindow* self, GtkWidget* widget, const char* name, const char* description);
287 GdkPixbuf* find_icon_sized (const char* name, GtkIconSize icon_size);
288 static void _main_window_search_entry_icon_press_cb_gtk_entry_icon_press (GtkEntry* _sender, GtkEntryIconPosition p0, GdkEvent* p1, gpointer self);
289 static void _main_window_search_entry_text_changed_cb_g_object_notify (GObject* _sender, GParamSpec* pspec, gpointer self);
290 static gboolean _main_window_search_entry_key_press_event_cb_gtk_widget_key_press_event (GtkWidget* _sender, GdkEventKey* event, gpointer self);
291 CustomVBox* custom_vbox_new (gboolean homogeneous, gint spacing);
292 CustomVBox* custom_vbox_construct (GType object_type, gboolean homogeneous, gint spacing);
293 static void _gtk_main_quit_gtk_object_destroy (GtkObject* _sender, gpointer self);
294 static guint _dynamic_request_name0 (DBusGProxy* self, const char* param1, guint param2, GError** error);
295 MoonshotServer* moonshot_server_new (GtkWindow* window);
296 MoonshotServer* moonshot_server_construct (GType object_type, GtkWindow* window);
297 static void _vala_dbus_register_object (DBusConnection* connection, const char* path, void* object);
298 static void _vala_dbus_unregister_object (gpointer connection, GObject* object);
299 gint main_window_main (char** args, int args_length1);
300 static void main_window_finalize (GObject* obj);
301 static void _vala_array_destroy (gpointer array, gint array_length, GDestroyNotify destroy_func);
302 static void _vala_array_free (gpointer array, gint array_length, GDestroyNotify destroy_func);
303 static int _vala_strcmp0 (const char * str1, const char * str2);
304
305
306
307 static GType main_window_columns_get_type (void) {
308         static volatile gsize main_window_columns_type_id__volatile = 0;
309         if (g_once_init_enter (&main_window_columns_type_id__volatile)) {
310                 static const GEnumValue values[] = {{MAIN_WINDOW_COLUMNS_IDCARD_COL, "MAIN_WINDOW_COLUMNS_IDCARD_COL", "idcard-col"}, {MAIN_WINDOW_COLUMNS_LOGO_COL, "MAIN_WINDOW_COLUMNS_LOGO_COL", "logo-col"}, {MAIN_WINDOW_COLUMNS_ISSUER_COL, "MAIN_WINDOW_COLUMNS_ISSUER_COL", "issuer-col"}, {MAIN_WINDOW_COLUMNS_USERNAME_COL, "MAIN_WINDOW_COLUMNS_USERNAME_COL", "username-col"}, {MAIN_WINDOW_COLUMNS_PASSWORD_COL, "MAIN_WINDOW_COLUMNS_PASSWORD_COL", "password-col"}, {MAIN_WINDOW_COLUMNS_N_COLUMNS, "MAIN_WINDOW_COLUMNS_N_COLUMNS", "n-columns"}, {0, NULL, NULL}};
311                 GType main_window_columns_type_id;
312                 main_window_columns_type_id = g_enum_register_static ("MainWindowColumns", values);
313                 g_once_init_leave (&main_window_columns_type_id__volatile, main_window_columns_type_id);
314         }
315         return main_window_columns_type_id__volatile;
316 }
317
318
319 MainWindow* main_window_construct (GType object_type) {
320         MainWindow * self;
321         GQueue* _tmp0_;
322         self = g_object_newv (object_type, 0, NULL);
323         self->priv->request_queue = (_tmp0_ = g_queue_new (), _g_queue_free0 (self->priv->request_queue), _tmp0_);
324         gtk_window_set_title ((GtkWindow*) self, "Moonshoot");
325         gtk_window_set_position ((GtkWindow*) self, GTK_WIN_POS_CENTER);
326         gtk_window_set_default_size ((GtkWindow*) self, MAIN_WINDOW_WINDOW_WIDTH, MAIN_WINDOW_WINDOW_HEIGHT);
327         main_window_build_ui (self);
328         main_window_setup_identities_list (self);
329         main_window_load_gss_eap_id_file (self);
330         main_window_connect_signals (self);
331         main_window_init_ipc_server (self);
332         return self;
333 }
334
335
336 MainWindow* main_window_new (void) {
337         return main_window_construct (TYPE_MAIN_WINDOW);
338 }
339
340
341 static gboolean string_contains (const char* self, const char* needle) {
342         gboolean result = FALSE;
343         g_return_val_if_fail (self != NULL, FALSE);
344         g_return_val_if_fail (needle != NULL, FALSE);
345         result = strstr (self, needle) != NULL;
346         return result;
347 }
348
349
350 static gboolean main_window_visible_func (MainWindow* self, GtkTreeModel* model, GtkTreeIter* iter) {
351         gboolean result = FALSE;
352         char* issuer;
353         char* search_text;
354         char* issuer_casefold;
355         char* search_text_casefold;
356         char* _tmp0_;
357         gboolean _tmp1_ = FALSE;
358         char* _tmp2_;
359         char* _tmp3_;
360         g_return_val_if_fail (self != NULL, FALSE);
361         g_return_val_if_fail (model != NULL, FALSE);
362         issuer = NULL;
363         search_text = NULL;
364         issuer_casefold = NULL;
365         search_text_casefold = NULL;
366         gtk_tree_model_get (model, iter, MAIN_WINDOW_COLUMNS_ISSUER_COL, &issuer, -1);
367         search_text = (_tmp0_ = g_strdup (gtk_entry_get_text (self->priv->search_entry)), _g_free0 (search_text), _tmp0_);
368         if (issuer == NULL) {
369                 _tmp1_ = TRUE;
370         } else {
371                 _tmp1_ = search_text == NULL;
372         }
373         if (_tmp1_) {
374                 result = FALSE;
375                 _g_free0 (search_text_casefold);
376                 _g_free0 (issuer_casefold);
377                 _g_free0 (search_text);
378                 _g_free0 (issuer);
379                 return result;
380         }
381         issuer_casefold = (_tmp2_ = g_utf8_casefold (issuer, -1), _g_free0 (issuer_casefold), _tmp2_);
382         search_text_casefold = (_tmp3_ = g_utf8_casefold (search_text, -1), _g_free0 (search_text_casefold), _tmp3_);
383         if (string_contains (issuer_casefold, search_text_casefold)) {
384                 result = TRUE;
385                 _g_free0 (search_text_casefold);
386                 _g_free0 (issuer_casefold);
387                 _g_free0 (search_text);
388                 _g_free0 (issuer);
389                 return result;
390         }
391         result = FALSE;
392         _g_free0 (search_text_casefold);
393         _g_free0 (issuer_casefold);
394         _g_free0 (search_text);
395         _g_free0 (issuer);
396         return result;
397 }
398
399
400 static gboolean _main_window_visible_func_gtk_tree_model_filter_visible_func (GtkTreeModel* model, GtkTreeIter* iter, gpointer self) {
401         gboolean result;
402         result = main_window_visible_func (self, model, iter);
403         return result;
404 }
405
406
407 static void main_window_setup_identities_list (MainWindow* self) {
408         GtkListStore* _tmp0_;
409         GtkTreeModelFilter* _tmp1_;
410         g_return_if_fail (self != NULL);
411         self->priv->listmodel = (_tmp0_ = gtk_list_store_new ((gint) MAIN_WINDOW_COLUMNS_N_COLUMNS, TYPE_ID_CARD, GDK_TYPE_PIXBUF, G_TYPE_STRING, G_TYPE_STRING, G_TYPE_STRING), _g_object_unref0 (self->priv->listmodel), _tmp0_);
412         self->priv->filter = (_tmp1_ = (GtkTreeModelFilter*) gtk_tree_model_filter_new ((GtkTreeModel*) self->priv->listmodel, NULL), _g_object_unref0 (self->priv->filter), _tmp1_);
413         gtk_tree_model_filter_set_visible_func (self->priv->filter, _main_window_visible_func_gtk_tree_model_filter_visible_func, g_object_ref (self), g_object_unref);
414 }
415
416
417 static void main_window_search_entry_icon_press_cb (MainWindow* self, GtkEntryIconPosition pos, GdkEvent* event) {
418         g_return_if_fail (self != NULL);
419         g_return_if_fail (event != NULL);
420         if (pos == GTK_ENTRY_ICON_PRIMARY) {
421                 g_print ("Search entry icon pressed\n");
422         } else {
423                 gtk_entry_set_text (self->priv->search_entry, "");
424         }
425 }
426
427
428 static void main_window_search_entry_text_changed_cb (MainWindow* self) {
429         gboolean has_text;
430         g_return_if_fail (self != NULL);
431         gtk_tree_model_filter_refilter (self->priv->filter);
432         main_window_redraw_id_card_widgets (self);
433         has_text = gtk_entry_get_text_length (self->priv->search_entry) > 0;
434         gtk_entry_set_icon_sensitive (self->priv->search_entry, GTK_ENTRY_ICON_PRIMARY, has_text);
435         gtk_entry_set_icon_sensitive (self->priv->search_entry, GTK_ENTRY_ICON_SECONDARY, has_text);
436         gtk_widget_set_visible ((GtkWidget*) self->priv->vbox_rigth, FALSE);
437         gtk_window_resize ((GtkWindow*) self, MAIN_WINDOW_WINDOW_WIDTH, MAIN_WINDOW_WINDOW_HEIGHT);
438 }
439
440
441 static gboolean main_window_search_entry_key_press_event_cb (MainWindow* self, GdkEventKey* e) {
442         gboolean result = FALSE;
443         g_return_val_if_fail (self != NULL, FALSE);
444         if (_vala_strcmp0 (gdk_keyval_name ((*e).keyval), "Escape") == 0) {
445                 gtk_entry_set_text (self->priv->search_entry, "");
446         }
447         result = FALSE;
448         return result;
449 }
450
451
452 static void main_window_load_gss_eap_id_file (MainWindow* self) {
453         IdCard* id_card;
454         IdentitiesManager* _tmp0_;
455         IdCard* _tmp1_;
456         g_return_if_fail (self != NULL);
457         id_card = NULL;
458         self->priv->identities_manager = (_tmp0_ = identities_manager_new (), _g_object_unref0 (self->priv->identities_manager), _tmp0_);
459         id_card = (_tmp1_ = identities_manager_load_gss_eap_id_file (self->priv->identities_manager), _g_object_unref0 (id_card), _tmp1_);
460         if (id_card != NULL) {
461                 main_window_add_id_card_data (self, id_card);
462                 main_window_add_id_card_widget (self, id_card);
463         }
464         _g_object_unref0 (id_card);
465 }
466
467
468 static gpointer _g_object_ref0 (gpointer self) {
469         return self ? g_object_ref (self) : NULL;
470 }
471
472
473 static void main_window_load_id_cards (MainWindow* self) {
474         IdentitiesManager* _tmp0_;
475         g_return_if_fail (self != NULL);
476         self->priv->identities_manager = (_tmp0_ = identities_manager_new (), _g_object_unref0 (self->priv->identities_manager), _tmp0_);
477         {
478                 GSList* id_card_collection;
479                 GSList* id_card_it;
480                 id_card_collection = self->priv->identities_manager->id_card_list;
481                 for (id_card_it = id_card_collection; id_card_it != NULL; id_card_it = id_card_it->next) {
482                         IdCard* id_card;
483                         id_card = _g_object_ref0 ((IdCard*) id_card_it->data);
484                         {
485                                 main_window_add_id_card_data (self, id_card);
486                                 main_window_add_id_card_widget (self, id_card);
487                                 _g_object_unref0 (id_card);
488                         }
489                 }
490         }
491 }
492
493
494 static void main_window_fill_details (MainWindow* self, IdCardWidget* id_card_widget) {
495         IdCard* id_card;
496         char* _tmp0_;
497         GList* children;
498         g_return_if_fail (self != NULL);
499         g_return_if_fail (id_card_widget != NULL);
500         id_card = _g_object_ref0 (id_card_widget_get_id_card (id_card_widget));
501         gtk_entry_set_text (self->priv->username_entry, id_card_get_username (id_card));
502         _tmp0_ = g_strdup (id_card_get_password (id_card));
503         if (_tmp0_ == NULL) {
504                 char* _tmp1_;
505                 _tmp0_ = (_tmp1_ = g_strdup (""), _g_free0 (_tmp0_), _tmp1_);
506         }
507         gtk_entry_set_text (self->priv->password_entry, _tmp0_);
508         children = gtk_container_get_children ((GtkContainer*) self->priv->services_internal_vbox);
509         {
510                 GList* hbox_collection;
511                 GList* hbox_it;
512                 hbox_collection = children;
513                 for (hbox_it = hbox_collection; hbox_it != NULL; hbox_it = hbox_it->next) {
514                         GtkWidget* hbox;
515                         hbox = (GtkWidget*) hbox_it->data;
516                         {
517                                 gtk_object_destroy ((GtkObject*) hbox);
518                         }
519                 }
520         }
521         main_window_fill_services_vbox (self, id_card_widget_get_id_card (id_card_widget));
522         _g_list_free0 (children);
523         _g_free0 (_tmp0_);
524         _g_object_unref0 (id_card);
525 }
526
527
528 static void main_window_show_details (MainWindow* self, IdCard* id_card) {
529         g_return_if_fail (self != NULL);
530         g_return_if_fail (id_card != NULL);
531         gtk_widget_set_visible ((GtkWidget*) self->priv->vbox_rigth, !gtk_widget_get_visible ((GtkWidget*) self->priv->vbox_rigth));
532         if (gtk_widget_get_visible ((GtkWidget*) self->priv->vbox_rigth) == FALSE) {
533                 gtk_window_resize ((GtkWindow*) self, MAIN_WINDOW_WINDOW_WIDTH, MAIN_WINDOW_WINDOW_HEIGHT);
534         }
535 }
536
537
538 static void main_window_details_identity_cb (MainWindow* self, IdCardWidget* id_card_widget) {
539         g_return_if_fail (self != NULL);
540         g_return_if_fail (id_card_widget != NULL);
541         main_window_fill_details (self, id_card_widget);
542         main_window_show_details (self, id_card_widget_get_id_card (id_card_widget));
543 }
544
545
546 static IdCard* main_window_get_id_card_data (MainWindow* self, AddIdentityDialog* dialog) {
547         IdCard* result = NULL;
548         IdCard* id_card;
549         char* _tmp0_;
550         char* _tmp1_;
551         GdkPixbuf* _tmp2_;
552         char** _tmp3_ = NULL;
553         char** _tmp4_;
554         gint _tmp4__length1;
555         char** _tmp5_;
556         g_return_val_if_fail (self != NULL, NULL);
557         g_return_val_if_fail (dialog != NULL, NULL);
558         id_card = id_card_new ();
559         id_card_set_issuer (id_card, add_identity_dialog_get_issuer (dialog));
560         if (_vala_strcmp0 (id_card_get_issuer (id_card), "") == 0) {
561                 id_card_set_issuer (id_card, "Issuer");
562         }
563         id_card_set_username (id_card, add_identity_dialog_get_username (dialog));
564         id_card_set_password (id_card, add_identity_dialog_get_password (dialog));
565         id_card_set_nai (id_card, _tmp1_ = g_strconcat (_tmp0_ = g_strconcat (id_card_get_username (id_card), "@", NULL), id_card_get_issuer (id_card), NULL));
566         _g_free0 (_tmp1_);
567         _g_free0 (_tmp0_);
568         id_card_set_pixbuf (id_card, _tmp2_ = find_icon ("avatar-default", 48));
569         _g_object_unref0 (_tmp2_);
570         _tmp5_ = (_tmp4_ = (_tmp3_ = g_new0 (char*, 3 + 1), _tmp3_[0] = g_strdup ("email"), _tmp3_[1] = g_strdup ("jabber"), _tmp3_[2] = g_strdup ("irc"), _tmp3_), _tmp4__length1 = 3, _tmp4_);
571         id_card_set_services (id_card, _tmp5_, 3);
572         _tmp4_ = (_vala_array_free (_tmp4_, _tmp4__length1, (GDestroyNotify) g_free), NULL);
573         result = id_card;
574         return result;
575 }
576
577
578 static void main_window_add_id_card_data (MainWindow* self, IdCard* id_card) {
579         GtkTreeIter iter = {0};
580         g_return_if_fail (self != NULL);
581         g_return_if_fail (id_card != NULL);
582         gtk_list_store_append (self->priv->listmodel, &iter);
583         gtk_list_store_set (self->priv->listmodel, &iter, MAIN_WINDOW_COLUMNS_IDCARD_COL, id_card, MAIN_WINDOW_COLUMNS_LOGO_COL, id_card_get_pixbuf (id_card), MAIN_WINDOW_COLUMNS_ISSUER_COL, id_card_get_issuer (id_card), MAIN_WINDOW_COLUMNS_USERNAME_COL, id_card_get_username (id_card), MAIN_WINDOW_COLUMNS_PASSWORD_COL, id_card_get_password (id_card), -1);
584 }
585
586
587 static void main_window_remove_id_card_data (MainWindow* self, IdCard* id_card) {
588         GtkTreeIter iter = {0};
589         char* issuer;
590         g_return_if_fail (self != NULL);
591         g_return_if_fail (id_card != NULL);
592         issuer = NULL;
593         if (gtk_tree_model_get_iter_first ((GtkTreeModel*) self->priv->listmodel, &iter)) {
594                 {
595                         gboolean _tmp0_;
596                         _tmp0_ = TRUE;
597                         while (TRUE) {
598                                 if (!_tmp0_) {
599                                         if (!gtk_tree_model_iter_next ((GtkTreeModel*) self->priv->listmodel, &iter)) {
600                                                 break;
601                                         }
602                                 }
603                                 _tmp0_ = FALSE;
604                                 gtk_tree_model_get ((GtkTreeModel*) self->priv->listmodel, &iter, MAIN_WINDOW_COLUMNS_ISSUER_COL, &issuer, -1);
605                                 if (_vala_strcmp0 (id_card_get_issuer (id_card), issuer) == 0) {
606                                         gtk_list_store_remove (self->priv->listmodel, &iter);
607                                         break;
608                                 }
609                         }
610                 }
611         }
612         _g_free0 (issuer);
613 }
614
615
616 static void _main_window_details_identity_cb_id_card_widget_details_id (IdCardWidget* _sender, gpointer self) {
617         main_window_details_identity_cb (self, _sender);
618 }
619
620
621 static void _main_window_remove_identity_cb_id_card_widget_remove_id (IdCardWidget* _sender, gpointer self) {
622         main_window_remove_identity_cb (self, _sender);
623 }
624
625
626 static void _main_window_send_identity_cb_id_card_widget_send_id (IdCardWidget* _sender, gpointer self) {
627         main_window_send_identity_cb (self, _sender);
628 }
629
630
631 static void _custom_vbox_receive_expanded_event_id_card_widget_expanded (IdCardWidget* _sender, gpointer self) {
632         custom_vbox_receive_expanded_event (self, _sender);
633 }
634
635
636 static void _main_window_fill_details_id_card_widget_expanded (IdCardWidget* _sender, gpointer self) {
637         main_window_fill_details (self, _sender);
638 }
639
640
641 static void main_window_add_id_card_widget (MainWindow* self, IdCard* id_card) {
642         IdCardWidget* id_card_widget;
643         g_return_if_fail (self != NULL);
644         g_return_if_fail (id_card != NULL);
645         id_card_widget = g_object_ref_sink (id_card_widget_new (id_card));
646         custom_vbox_add_id_card_widget (self->priv->custom_vbox, id_card_widget);
647         g_signal_connect_object (id_card_widget, "details-id", (GCallback) _main_window_details_identity_cb_id_card_widget_details_id, self, 0);
648         g_signal_connect_object (id_card_widget, "remove-id", (GCallback) _main_window_remove_identity_cb_id_card_widget_remove_id, self, 0);
649         g_signal_connect_object (id_card_widget, "send-id", (GCallback) _main_window_send_identity_cb_id_card_widget_send_id, self, 0);
650         g_signal_connect_object (id_card_widget, "expanded", (GCallback) _custom_vbox_receive_expanded_event_id_card_widget_expanded, self->priv->custom_vbox, 0);
651         g_signal_connect_object (id_card_widget, "expanded", (GCallback) _main_window_fill_details_id_card_widget_expanded, self, 0);
652         _g_object_unref0 (id_card_widget);
653 }
654
655
656 static void main_window_add_identity (MainWindow* self, AddIdentityDialog* dialog) {
657         IdCard* id_card;
658         g_return_if_fail (self != NULL);
659         g_return_if_fail (dialog != NULL);
660         id_card = main_window_get_id_card_data (self, dialog);
661         self->priv->identities_manager->id_card_list = g_slist_prepend (self->priv->identities_manager->id_card_list, _g_object_ref0 (id_card));
662         identities_manager_store_id_cards (self->priv->identities_manager);
663         identities_manager_store_gss_eap_id_file (self->priv->identities_manager, id_card);
664         main_window_add_id_card_data (self, id_card);
665         main_window_add_id_card_widget (self, id_card);
666         _g_object_unref0 (id_card);
667 }
668
669
670 static void main_window_add_identity_cb (MainWindow* self) {
671         AddIdentityDialog* dialog;
672         gint _result_;
673         g_return_if_fail (self != NULL);
674         dialog = g_object_ref_sink (add_identity_dialog_new ());
675         _result_ = gtk_dialog_run ((GtkDialog*) dialog);
676         switch (_result_) {
677                 case GTK_RESPONSE_OK:
678                 {
679                         main_window_add_identity (self, dialog);
680                         break;
681                 }
682                 default:
683                 {
684                         break;
685                 }
686         }
687         gtk_object_destroy ((GtkObject*) dialog);
688         _g_object_unref0 (dialog);
689 }
690
691
692 static void main_window_remove_id_card_widget (MainWindow* self, IdCardWidget* id_card_widget) {
693         g_return_if_fail (self != NULL);
694         g_return_if_fail (id_card_widget != NULL);
695         main_window_remove_id_card_data (self, id_card_widget_get_id_card (id_card_widget));
696         custom_vbox_remove_id_card_widget (self->priv->custom_vbox, id_card_widget);
697 }
698
699
700 static void main_window_remove_identity (MainWindow* self, IdCardWidget* id_card_widget) {
701         IdCard* id_card;
702         g_return_if_fail (self != NULL);
703         g_return_if_fail (id_card_widget != NULL);
704         id_card = _g_object_ref0 (id_card_widget_get_id_card (id_card_widget));
705         self->priv->identities_manager->id_card_list = g_slist_remove (self->priv->identities_manager->id_card_list, id_card);
706         identities_manager_store_id_cards (self->priv->identities_manager);
707         identities_manager_store_gss_eap_id_file (self->priv->identities_manager, NULL);
708         main_window_remove_id_card_widget (self, id_card_widget);
709         _g_object_unref0 (id_card);
710 }
711
712
713 static void main_window_redraw_id_card_widgets (MainWindow* self) {
714         GtkTreeIter iter = {0};
715         IdCard* id_card;
716         GList* children;
717         g_return_if_fail (self != NULL);
718         id_card = NULL;
719         children = gtk_container_get_children ((GtkContainer*) self->priv->custom_vbox);
720         {
721                 GList* id_card_widget_collection;
722                 GList* id_card_widget_it;
723                 id_card_widget_collection = children;
724                 for (id_card_widget_it = id_card_widget_collection; id_card_widget_it != NULL; id_card_widget_it = id_card_widget_it->next) {
725                         GtkWidget* id_card_widget;
726                         id_card_widget = (GtkWidget*) id_card_widget_it->data;
727                         {
728                                 gtk_object_destroy ((GtkObject*) id_card_widget);
729                         }
730                 }
731         }
732         if (gtk_tree_model_get_iter_first ((GtkTreeModel*) self->priv->filter, &iter)) {
733                 {
734                         gboolean _tmp0_;
735                         _tmp0_ = TRUE;
736                         while (TRUE) {
737                                 if (!_tmp0_) {
738                                         if (!gtk_tree_model_iter_next ((GtkTreeModel*) self->priv->filter, &iter)) {
739                                                 break;
740                                         }
741                                 }
742                                 _tmp0_ = FALSE;
743                                 gtk_tree_model_get ((GtkTreeModel*) self->priv->filter, &iter, MAIN_WINDOW_COLUMNS_IDCARD_COL, &id_card, -1);
744                                 main_window_add_id_card_widget (self, id_card);
745                         }
746                 }
747         }
748         _g_list_free0 (children);
749         _g_object_unref0 (id_card);
750 }
751
752
753 static void main_window_remove_identity_cb (MainWindow* self, IdCardWidget* id_card_widget) {
754         IdCard* id_card;
755         GtkMessageDialog* dialog;
756         gint _result_;
757         g_return_if_fail (self != NULL);
758         g_return_if_fail (id_card_widget != NULL);
759         id_card = _g_object_ref0 (id_card_widget_get_id_card (id_card_widget));
760         dialog = g_object_ref_sink ((GtkMessageDialog*) gtk_message_dialog_new (NULL, GTK_DIALOG_DESTROY_WITH_PARENT, GTK_MESSAGE_INFO, GTK_BUTTONS_YES_NO, _ ("Are you sure you want to delete %s ID Card?"), id_card_get_issuer (id_card)));
761         _result_ = gtk_dialog_run ((GtkDialog*) dialog);
762         switch (_result_) {
763                 case GTK_RESPONSE_YES:
764                 {
765                         main_window_remove_identity (self, id_card_widget);
766                         break;
767                 }
768                 default:
769                 {
770                         break;
771                 }
772         }
773         gtk_object_destroy ((GtkObject*) dialog);
774         _g_object_unref0 (dialog);
775         _g_object_unref0 (id_card);
776 }
777
778
779 void main_window_select_identity (MainWindow* self, IdentityRequest* request) {
780         g_return_if_fail (self != NULL);
781         g_return_if_fail (request != NULL);
782         g_queue_push_tail (self->priv->request_queue, _g_object_ref0 (request));
783         gtk_widget_show ((GtkWidget*) self);
784 }
785
786
787 void main_window_send_identity_cb (MainWindow* self, IdCardWidget* id_card_widget) {
788         IdCardWidget* _tmp0_;
789         IdentityRequest* request;
790         IdCard* identity;
791         gboolean reset_password;
792         g_return_if_fail (self != NULL);
793         g_return_if_fail (id_card_widget != NULL);
794         g_return_if_fail (self->priv->request_queue->length > 0);
795         self->selected_id_card_widget = (_tmp0_ = _g_object_ref0 (id_card_widget), _g_object_unref0 (self->selected_id_card_widget), _tmp0_);
796         request = (IdentityRequest*) g_queue_pop_head (self->priv->request_queue);
797         identity = _g_object_ref0 (id_card_widget_get_id_card (id_card_widget));
798         reset_password = FALSE;
799         if (id_card_get_password (identity) == NULL) {
800                 AddPasswordDialog* dialog;
801                 gint _result_;
802                 dialog = g_object_ref_sink (add_password_dialog_new ());
803                 _result_ = gtk_dialog_run ((GtkDialog*) dialog);
804                 switch (_result_) {
805                         case GTK_RESPONSE_OK:
806                         {
807                                 id_card_set_password (identity, add_password_dialog_get_password (dialog));
808                                 reset_password = !add_password_dialog_get_remember (dialog);
809                                 break;
810                         }
811                         default:
812                         {
813                                 IdCard* _tmp1_;
814                                 identity = (_tmp1_ = NULL, _g_object_unref0 (identity), _tmp1_);
815                                 break;
816                         }
817                 }
818                 gtk_object_destroy ((GtkObject*) dialog);
819                 _g_object_unref0 (dialog);
820         }
821         if (g_queue_is_empty (self->priv->request_queue)) {
822                 gtk_widget_hide ((GtkWidget*) self);
823         }
824         identity_request_return_identity (request, identity);
825         if (reset_password) {
826                 id_card_set_password (identity, NULL);
827         }
828         _g_object_unref0 (identity);
829         _g_object_unref0 (request);
830 }
831
832
833 static void main_window_label_make_bold (MainWindow* self, GtkLabel* label) {
834         PangoFontDescription* font_desc;
835         g_return_if_fail (self != NULL);
836         g_return_if_fail (label != NULL);
837         font_desc = pango_font_description_new ();
838         pango_font_description_set_weight (font_desc, PANGO_WEIGHT_BOLD);
839         gtk_widget_modify_font ((GtkWidget*) label, font_desc);
840         _pango_font_description_free0 (font_desc);
841 }
842
843
844 static void main_window_fill_services_vbox (MainWindow* self, IdCard* id_card) {
845         gint i;
846         gint _tmp0_;
847         gint n_columns;
848         GtkTable* services_table;
849         g_return_if_fail (self != NULL);
850         g_return_if_fail (id_card != NULL);
851         i = 0;
852         n_columns = _tmp0_;
853         services_table = g_object_ref_sink ((GtkTable*) gtk_table_new ((guint) n_columns, (guint) 2, FALSE));
854         gtk_table_set_col_spacings (services_table, (guint) 10);
855         gtk_table_set_row_spacings (services_table, (guint) 10);
856         gtk_container_add ((GtkContainer*) self->priv->services_internal_vbox, (GtkWidget*) services_table);
857         {
858                 gint _tmp1_;
859                 char** service_collection;
860                 int service_collection_length1;
861                 int service_it;
862                 service_collection = id_card_get_services (id_card, &_tmp1_);
863                 service_collection_length1 = _tmp1_;
864                 for (service_it = 0; service_it < _tmp1_; service_it = service_it + 1) {
865                         char* service;
866                         service = g_strdup (service_collection[service_it]);
867                         {
868                                 GtkLabel* label;
869                                 GtkButton* remove_button;
870                                 label = g_object_ref_sink ((GtkLabel*) gtk_label_new (service));
871                                 gtk_misc_set_alignment ((GtkMisc*) label, (float) 0, (float) 0.5);
872                                 remove_button = g_object_ref_sink ((GtkButton*) gtk_button_new_from_stock (GTK_STOCK_REMOVE));
873                                 gtk_table_attach_defaults (services_table, (GtkWidget*) label, (guint) 0, (guint) 1, (guint) i, (guint) (i + 1));
874                                 gtk_table_attach_defaults (services_table, (GtkWidget*) remove_button, (guint) 1, (guint) 2, (guint) i, (guint) (i + 1));
875                                 i++;
876                                 _g_object_unref0 (remove_button);
877                                 _g_object_unref0 (label);
878                                 _g_free0 (service);
879                         }
880                 }
881         }
882         gtk_widget_show_all ((GtkWidget*) self->priv->services_internal_vbox);
883         _g_object_unref0 (services_table);
884 }
885
886
887 static void main_window_on_about_action (MainWindow* self) {
888         gint authors_length1;
889         gint _authors_size_;
890         char** _tmp1_;
891         char** _tmp0_ = NULL;
892         char** authors;
893         char* copyright;
894         char* license;
895         g_return_if_fail (self != NULL);
896         authors = (_tmp1_ = (_tmp0_ = g_new0 (char*, 3 + 1), _tmp0_[0] = g_strdup ("Javier Jardón <jjardon@codethink.co.uk>"), _tmp0_[1] = g_strdup ("Sam Thursfield <samthursfield@codethink.co.uk>"), _tmp0_[2] = NULL, _tmp0_), authors_length1 = 3, _authors_size_ = authors_length1, _tmp1_);
897         copyright = g_strdup ("Copyright 2011 JANET");
898         license = g_strdup ("\n" \
899 "Copyright (c) 2011, JANET(UK)\n" \
900 "All rights reserved.\n" \
901 "\n" \
902 "Redistribution and use in source and binary forms, with or without\n" \
903 "modification, are permitted provided that the following conditions\n" \
904 "are met:\n" \
905 "\n" \
906 "1. Redistributions of source code must retain the above copyright\n" \
907 "   notice, this list of conditions and the following disclaimer.\n" \
908 "\n" \
909 "2. Redistributions in binary form must reproduce the above copyright\n" \
910 "   notice, this list of conditions and the following disclaimer in the" \
911 "\n" \
912 "   documentation and/or other materials provided with the distribution" \
913 ".\n" \
914 "\n" \
915 "3. Neither the name of JANET(UK) nor the names of its contributors\n" \
916 "   may be used to endorse or promote products derived from this softwa" \
917 "re\n" \
918 "   without specific prior written permission.\n" \
919 "\n" \
920 "THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \\" \
921 "\"AS IS\\\"\n" \
922 "AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, " \
923 "THE\n" \
924 "IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PUR" \
925 "POSE\n" \
926 "ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS" \
927 " BE LIABLE\n" \
928 "FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUEN" \
929 "TIAL\n" \
930 "DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOOD" \
931 "S\n" \
932 "OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)\n" \
933 "HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, ST" \
934 "RICT\n" \
935 "LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY " \
936 "WAY\n" \
937 "OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF" \
938 "\n" \
939 "SUCH DAMAGE.\n");
940         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);
941         _g_free0 (license);
942         _g_free0 (copyright);
943         authors = (_vala_array_free (authors, authors_length1, (GDestroyNotify) g_free), NULL);
944 }
945
946
947 static void _vala_array_add1 (GtkActionEntry** array, int* length, int* size, const GtkActionEntry* value) {
948         if ((*length) == (*size)) {
949                 *size = (*size) ? (2 * (*size)) : 4;
950                 *array = g_renew (GtkActionEntry, *array, *size);
951         }
952         (*array)[(*length)++] = *value;
953 }
954
955
956 static void _main_window_add_identity_cb_gtk_action_callback (GtkAction* action, gpointer self) {
957         main_window_add_identity_cb (self);
958 }
959
960
961 static void _vala_array_add2 (GtkActionEntry** array, int* length, int* size, const GtkActionEntry* value) {
962         if ((*length) == (*size)) {
963                 *size = (*size) ? (2 * (*size)) : 4;
964                 *array = g_renew (GtkActionEntry, *array, *size);
965         }
966         (*array)[(*length)++] = *value;
967 }
968
969
970 static void _gtk_main_quit_gtk_action_callback (GtkAction* action, gpointer self) {
971         gtk_main_quit ();
972 }
973
974
975 static void _vala_array_add3 (GtkActionEntry** array, int* length, int* size, const GtkActionEntry* value) {
976         if ((*length) == (*size)) {
977                 *size = (*size) ? (2 * (*size)) : 4;
978                 *array = g_renew (GtkActionEntry, *array, *size);
979         }
980         (*array)[(*length)++] = *value;
981 }
982
983
984 static void _vala_array_add4 (GtkActionEntry** array, int* length, int* size, const GtkActionEntry* value) {
985         if ((*length) == (*size)) {
986                 *size = (*size) ? (2 * (*size)) : 4;
987                 *array = g_renew (GtkActionEntry, *array, *size);
988         }
989         (*array)[(*length)++] = *value;
990 }
991
992
993 static void _main_window_on_about_action_gtk_action_callback (GtkAction* action, gpointer self) {
994         main_window_on_about_action (self);
995 }
996
997
998 static void _vala_array_add5 (GtkActionEntry** array, int* length, int* size, const GtkActionEntry* value) {
999         if ((*length) == (*size)) {
1000                 *size = (*size) ? (2 * (*size)) : 4;
1001                 *array = g_renew (GtkActionEntry, *array, *size);
1002         }
1003         (*array)[(*length)++] = *value;
1004 }
1005
1006
1007 static GtkActionEntry* main_window_create_actions (MainWindow* self, int* result_length1) {
1008         GtkActionEntry* result = NULL;
1009         gint actions_length1;
1010         gint _actions_size_;
1011         GtkActionEntry* _tmp0_;
1012         GtkActionEntry* actions;
1013         GtkActionEntry _tmp1_ = {0};
1014         GtkActionEntry filemenu;
1015         GtkActionEntry _tmp2_ = {0};
1016         GtkActionEntry add;
1017         GtkActionEntry _tmp3_ = {0};
1018         GtkActionEntry quit;
1019         GtkActionEntry _tmp4_ = {0};
1020         GtkActionEntry helpmenu;
1021         GtkActionEntry _tmp5_ = {0};
1022         GtkActionEntry about;
1023         GtkActionEntry* _tmp6_;
1024         g_return_val_if_fail (self != NULL, NULL);
1025         actions = (_tmp0_ = g_new0 (GtkActionEntry, 0), actions_length1 = 0, _actions_size_ = actions_length1, _tmp0_);
1026         filemenu = (_tmp1_.name = "FileMenuAction", _tmp1_.stock_id = NULL, _tmp1_.label = N_ ("_File"), _tmp1_.accelerator = NULL, _tmp1_.tooltip = NULL, _tmp1_.callback = (GCallback) NULL, _tmp1_);
1027         _vala_array_add1 (&actions, &actions_length1, &_actions_size_, &filemenu);
1028         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) _main_window_add_identity_cb_gtk_action_callback, _tmp2_);
1029         _vala_array_add2 (&actions, &actions_length1, &_actions_size_, &add);
1030         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_);
1031         _vala_array_add3 (&actions, &actions_length1, &_actions_size_, &quit);
1032         helpmenu = (_tmp4_.name = "HelpMenuAction", _tmp4_.stock_id = NULL, _tmp4_.label = N_ ("_Help"), _tmp4_.accelerator = NULL, _tmp4_.tooltip = NULL, _tmp4_.callback = (GCallback) NULL, _tmp4_);
1033         _vala_array_add4 (&actions, &actions_length1, &_actions_size_, &helpmenu);
1034         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) _main_window_on_about_action_gtk_action_callback, _tmp5_);
1035         _vala_array_add5 (&actions, &actions_length1, &_actions_size_, &about);
1036         result = (_tmp6_ = actions, *result_length1 = actions_length1, _tmp6_);
1037         return result;
1038         actions = (g_free (actions), NULL);
1039 }
1040
1041
1042 static void main_window_create_ui_manager (MainWindow* self) {
1043         GtkActionGroup* action_group;
1044         gint _tmp0_;
1045         GtkActionEntry* _tmp1_;
1046         gint _tmp1__length1;
1047         GtkActionEntry* _tmp2_;
1048         GError * _inner_error_ = NULL;
1049         g_return_if_fail (self != NULL);
1050         action_group = gtk_action_group_new ("GeneralActionGroup");
1051         _tmp2_ = (_tmp1_ = main_window_create_actions (self, &_tmp0_), _tmp1__length1 = _tmp0_, _tmp1_);
1052         gtk_action_group_add_actions (action_group, _tmp2_, _tmp0_, self);
1053         _tmp1_ = (g_free (_tmp1_), NULL);
1054         gtk_ui_manager_insert_action_group (self->priv->ui_manager, action_group, 0);
1055         {
1056                 gtk_ui_manager_add_ui_from_string (self->priv->ui_manager, MAIN_WINDOW_layout, (gssize) (-1), &_inner_error_);
1057                 if (_inner_error_ != NULL) {
1058                         goto __catch5_g_error;
1059                 }
1060         }
1061         goto __finally5;
1062         __catch5_g_error:
1063         {
1064                 GError * e;
1065                 e = _inner_error_;
1066                 _inner_error_ = NULL;
1067                 {
1068                         fprintf (stderr, "%s\n", e->message);
1069                         _g_error_free0 (e);
1070                 }
1071         }
1072         __finally5:
1073         if (_inner_error_ != NULL) {
1074                 _g_object_unref0 (action_group);
1075                 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);
1076                 g_clear_error (&_inner_error_);
1077                 return;
1078         }
1079         gtk_ui_manager_ensure_update (self->priv->ui_manager);
1080         _g_object_unref0 (action_group);
1081 }
1082
1083
1084 static void _main_window_search_entry_icon_press_cb_gtk_entry_icon_press (GtkEntry* _sender, GtkEntryIconPosition p0, GdkEvent* p1, gpointer self) {
1085         main_window_search_entry_icon_press_cb (self, p0, p1);
1086 }
1087
1088
1089 static void _main_window_search_entry_text_changed_cb_g_object_notify (GObject* _sender, GParamSpec* pspec, gpointer self) {
1090         main_window_search_entry_text_changed_cb (self);
1091 }
1092
1093
1094 static gboolean _main_window_search_entry_key_press_event_cb_gtk_widget_key_press_event (GtkWidget* _sender, GdkEventKey* event, gpointer self) {
1095         gboolean result;
1096         result = main_window_search_entry_key_press_event_cb (self, event);
1097         return result;
1098 }
1099
1100
1101 static void main_window_build_ui (MainWindow* self) {
1102         GtkEntry* _tmp0_;
1103         GdkPixbuf* _tmp1_;
1104         GdkPixbuf* _tmp2_;
1105         CustomVBox* _tmp3_;
1106         GtkViewport* viewport;
1107         GtkScrolledWindow* scroll;
1108         GtkVBox* vbox_left;
1109         GtkLabel* login_vbox_title;
1110         GtkLabel* username_label;
1111         GtkEntry* _tmp4_;
1112         GtkLabel* password_label;
1113         GtkEntry* _tmp5_;
1114         GtkCheckButton* remember_checkbutton;
1115         GtkTable* login_table;
1116         GtkAlignment* login_vbox_alignment;
1117         GtkVBox* login_vbox;
1118         GtkLabel* services_vbox_title;
1119         GtkAlignment* services_vbox_alignment;
1120         GtkVBox* _tmp6_;
1121         GtkVBox* services_vbox;
1122         GtkVBox* _tmp7_;
1123         GtkHBox* hbox;
1124         GtkVBox* main_vbox;
1125         GtkWidget* menubar;
1126         g_return_if_fail (self != NULL);
1127         main_window_create_ui_manager (self);
1128         self->priv->search_entry = (_tmp0_ = g_object_ref_sink ((GtkEntry*) gtk_entry_new ()), _g_object_unref0 (self->priv->search_entry), _tmp0_);
1129         main_window_set_atk_name_description (self, (GtkWidget*) self->priv->search_entry, _ ("Search entry"), _ ("Search for a specific ID Card"));
1130         gtk_entry_set_icon_from_pixbuf (self->priv->search_entry, GTK_ENTRY_ICON_PRIMARY, _tmp1_ = find_icon_sized ("edit-find-symbolic", GTK_ICON_SIZE_MENU));
1131         _g_object_unref0 (_tmp1_);
1132         gtk_entry_set_icon_tooltip_text (self->priv->search_entry, GTK_ENTRY_ICON_PRIMARY, _ ("Search identity or service"));
1133         gtk_entry_set_icon_sensitive (self->priv->search_entry, GTK_ENTRY_ICON_PRIMARY, FALSE);
1134         gtk_entry_set_icon_from_pixbuf (self->priv->search_entry, GTK_ENTRY_ICON_SECONDARY, _tmp2_ = find_icon_sized ("edit-clear-symbolic", GTK_ICON_SIZE_MENU));
1135         _g_object_unref0 (_tmp2_);
1136         gtk_entry_set_icon_tooltip_text (self->priv->search_entry, GTK_ENTRY_ICON_SECONDARY, _ ("Clear the current search"));
1137         gtk_entry_set_icon_sensitive (self->priv->search_entry, GTK_ENTRY_ICON_SECONDARY, FALSE);
1138         g_signal_connect_object (self->priv->search_entry, "icon-press", (GCallback) _main_window_search_entry_icon_press_cb_gtk_entry_icon_press, self, 0);
1139         g_signal_connect_object ((GObject*) self->priv->search_entry, "notify::text", (GCallback) _main_window_search_entry_text_changed_cb_g_object_notify, self, 0);
1140         g_signal_connect_object ((GtkWidget*) self->priv->search_entry, "key-press-event", (GCallback) _main_window_search_entry_key_press_event_cb_gtk_widget_key_press_event, self, 0);
1141         self->priv->custom_vbox = (_tmp3_ = g_object_ref_sink (custom_vbox_new (FALSE, 6)), _g_object_unref0 (self->priv->custom_vbox), _tmp3_);
1142         viewport = g_object_ref_sink ((GtkViewport*) gtk_viewport_new (NULL, NULL));
1143         gtk_container_set_border_width ((GtkContainer*) viewport, (guint) 6);
1144         gtk_viewport_set_shadow_type (viewport, GTK_SHADOW_NONE);
1145         gtk_container_add ((GtkContainer*) viewport, (GtkWidget*) self->priv->custom_vbox);
1146         scroll = g_object_ref_sink ((GtkScrolledWindow*) gtk_scrolled_window_new (NULL, NULL));
1147         gtk_scrolled_window_set_policy (scroll, GTK_POLICY_NEVER, GTK_POLICY_AUTOMATIC);
1148         gtk_scrolled_window_set_shadow_type (scroll, GTK_SHADOW_IN);
1149         gtk_scrolled_window_add_with_viewport (scroll, (GtkWidget*) viewport);
1150         vbox_left = g_object_ref_sink ((GtkVBox*) gtk_vbox_new (FALSE, 0));
1151         gtk_box_pack_start ((GtkBox*) vbox_left, (GtkWidget*) self->priv->search_entry, FALSE, FALSE, (guint) 6);
1152         gtk_box_pack_start ((GtkBox*) vbox_left, (GtkWidget*) scroll, TRUE, TRUE, (guint) 0);
1153         gtk_widget_set_size_request ((GtkWidget*) vbox_left, MAIN_WINDOW_WINDOW_WIDTH, 0);
1154         login_vbox_title = g_object_ref_sink ((GtkLabel*) gtk_label_new (_ ("Login: ")));
1155         main_window_label_make_bold (self, login_vbox_title);
1156         gtk_misc_set_alignment ((GtkMisc*) login_vbox_title, (float) 0, (float) 0.5);
1157         username_label = g_object_ref_sink ((GtkLabel*) gtk_label_new (_ ("Username:")));
1158         gtk_misc_set_alignment ((GtkMisc*) username_label, (float) 1, (float) 0.5);
1159         self->priv->username_entry = (_tmp4_ = g_object_ref_sink ((GtkEntry*) gtk_entry_new ()), _g_object_unref0 (self->priv->username_entry), _tmp4_);
1160         password_label = g_object_ref_sink ((GtkLabel*) gtk_label_new (_ ("Password:")));
1161         gtk_misc_set_alignment ((GtkMisc*) password_label, (float) 1, (float) 0.5);
1162         self->priv->password_entry = (_tmp5_ = g_object_ref_sink ((GtkEntry*) gtk_entry_new ()), _g_object_unref0 (self->priv->password_entry), _tmp5_);
1163         gtk_entry_set_invisible_char (self->priv->password_entry, (gunichar) '*');
1164         gtk_entry_set_visibility (self->priv->password_entry, FALSE);
1165         remember_checkbutton = g_object_ref_sink ((GtkCheckButton*) gtk_check_button_new_with_label (_ ("Remember password")));
1166         login_table = g_object_ref_sink ((GtkTable*) gtk_table_new ((guint) 3, (guint) 3, FALSE));
1167         gtk_table_set_col_spacings (login_table, (guint) 10);
1168         gtk_table_set_row_spacings (login_table, (guint) 10);
1169         gtk_table_attach_defaults (login_table, (GtkWidget*) username_label, (guint) 0, (guint) 1, (guint) 0, (guint) 1);
1170         gtk_table_attach_defaults (login_table, (GtkWidget*) self->priv->username_entry, (guint) 1, (guint) 2, (guint) 0, (guint) 1);
1171         gtk_table_attach_defaults (login_table, (GtkWidget*) password_label, (guint) 0, (guint) 1, (guint) 1, (guint) 2);
1172         gtk_table_attach_defaults (login_table, (GtkWidget*) self->priv->password_entry, (guint) 1, (guint) 2, (guint) 1, (guint) 2);
1173         gtk_table_attach_defaults (login_table, (GtkWidget*) remember_checkbutton, (guint) 1, (guint) 2, (guint) 2, (guint) 3);
1174         login_vbox_alignment = g_object_ref_sink ((GtkAlignment*) gtk_alignment_new ((float) 0, (float) 0, (float) 0, (float) 0));
1175         gtk_alignment_set_padding (login_vbox_alignment, (guint) 0, (guint) 0, (guint) 12, (guint) 0);
1176         gtk_container_add ((GtkContainer*) login_vbox_alignment, (GtkWidget*) login_table);
1177         login_vbox = g_object_ref_sink ((GtkVBox*) gtk_vbox_new (FALSE, 6));
1178         gtk_box_pack_start ((GtkBox*) login_vbox, (GtkWidget*) login_vbox_title, FALSE, TRUE, (guint) 0);
1179         gtk_box_pack_start ((GtkBox*) login_vbox, (GtkWidget*) login_vbox_alignment, FALSE, TRUE, (guint) 0);
1180         services_vbox_title = g_object_ref_sink ((GtkLabel*) gtk_label_new (_ ("Services:")));
1181         main_window_label_make_bold (self, services_vbox_title);
1182         gtk_misc_set_alignment ((GtkMisc*) services_vbox_title, (float) 0, (float) 0.5);
1183         services_vbox_alignment = g_object_ref_sink ((GtkAlignment*) gtk_alignment_new ((float) 0, (float) 0, (float) 0, (float) 0));
1184         gtk_alignment_set_padding (services_vbox_alignment, (guint) 0, (guint) 0, (guint) 12, (guint) 0);
1185         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_);
1186         gtk_container_add ((GtkContainer*) services_vbox_alignment, (GtkWidget*) self->priv->services_internal_vbox);
1187         services_vbox = g_object_ref_sink ((GtkVBox*) gtk_vbox_new (FALSE, 6));
1188         gtk_box_pack_start ((GtkBox*) services_vbox, (GtkWidget*) services_vbox_title, FALSE, TRUE, (guint) 0);
1189         gtk_box_pack_start ((GtkBox*) services_vbox, (GtkWidget*) services_vbox_alignment, FALSE, TRUE, (guint) 0);
1190         self->priv->vbox_rigth = (_tmp7_ = g_object_ref_sink ((GtkVBox*) gtk_vbox_new (FALSE, 18)), _g_object_unref0 (self->priv->vbox_rigth), _tmp7_);
1191         gtk_box_pack_start ((GtkBox*) self->priv->vbox_rigth, (GtkWidget*) login_vbox, FALSE, TRUE, (guint) 0);
1192         gtk_box_pack_start ((GtkBox*) self->priv->vbox_rigth, (GtkWidget*) services_vbox, FALSE, TRUE, (guint) 0);
1193         hbox = g_object_ref_sink ((GtkHBox*) gtk_hbox_new (FALSE, 12));
1194         gtk_box_pack_start ((GtkBox*) hbox, (GtkWidget*) vbox_left, FALSE, FALSE, (guint) 0);
1195         gtk_box_pack_start ((GtkBox*) hbox, (GtkWidget*) self->priv->vbox_rigth, FALSE, FALSE, (guint) 0);
1196         main_vbox = g_object_ref_sink ((GtkVBox*) gtk_vbox_new (FALSE, 0));
1197         gtk_container_set_border_width ((GtkContainer*) main_vbox, (guint) 12);
1198         menubar = _g_object_ref0 (gtk_ui_manager_get_widget (self->priv->ui_manager, "/MenuBar"));
1199         gtk_box_pack_start ((GtkBox*) main_vbox, menubar, FALSE, FALSE, (guint) 0);
1200         gtk_box_pack_start ((GtkBox*) main_vbox, (GtkWidget*) hbox, TRUE, TRUE, (guint) 0);
1201         gtk_container_add ((GtkContainer*) self, (GtkWidget*) main_vbox);
1202         gtk_widget_show_all ((GtkWidget*) main_vbox);
1203         gtk_widget_hide ((GtkWidget*) self->priv->vbox_rigth);
1204         _g_object_unref0 (menubar);
1205         _g_object_unref0 (main_vbox);
1206         _g_object_unref0 (hbox);
1207         _g_object_unref0 (services_vbox);
1208         _g_object_unref0 (services_vbox_alignment);
1209         _g_object_unref0 (services_vbox_title);
1210         _g_object_unref0 (login_vbox);
1211         _g_object_unref0 (login_vbox_alignment);
1212         _g_object_unref0 (login_table);
1213         _g_object_unref0 (remember_checkbutton);
1214         _g_object_unref0 (password_label);
1215         _g_object_unref0 (username_label);
1216         _g_object_unref0 (login_vbox_title);
1217         _g_object_unref0 (vbox_left);
1218         _g_object_unref0 (scroll);
1219         _g_object_unref0 (viewport);
1220 }
1221
1222
1223 static void main_window_set_atk_name_description (MainWindow* self, GtkWidget* widget, const char* name, const char* description) {
1224         AtkObject* atk_widget;
1225         g_return_if_fail (self != NULL);
1226         g_return_if_fail (widget != NULL);
1227         g_return_if_fail (name != NULL);
1228         g_return_if_fail (description != NULL);
1229         atk_widget = _g_object_ref0 (gtk_widget_get_accessible (widget));
1230         atk_object_set_name (atk_widget, name);
1231         atk_object_set_description (atk_widget, description);
1232         _g_object_unref0 (atk_widget);
1233 }
1234
1235
1236 static void _gtk_main_quit_gtk_object_destroy (GtkObject* _sender, gpointer self) {
1237         gtk_main_quit ();
1238 }
1239
1240
1241 static void main_window_connect_signals (MainWindow* self) {
1242         g_return_if_fail (self != NULL);
1243         g_signal_connect ((GtkObject*) self, "destroy", (GCallback) _gtk_main_quit_gtk_object_destroy, NULL);
1244 }
1245
1246
1247 static guint _dynamic_request_name0 (DBusGProxy* self, const char* param1, guint param2, GError** error) {
1248         guint result;
1249         dbus_g_proxy_call (self, "RequestName", error, G_TYPE_STRING, param1, G_TYPE_UINT, param2, G_TYPE_INVALID, G_TYPE_UINT, &result, G_TYPE_INVALID);
1250         if (*error) {
1251                 return 0U;
1252         }
1253         return result;
1254 }
1255
1256
1257 static void _vala_dbus_register_object (DBusConnection* connection, const char* path, void* object) {
1258         const _DBusObjectVTable * vtable;
1259         vtable = g_type_get_qdata (G_TYPE_FROM_INSTANCE (object), g_quark_from_static_string ("DBusObjectVTable"));
1260         if (vtable) {
1261                 vtable->register_object (connection, path, object);
1262         } else {
1263                 g_warning ("Object does not implement any D-Bus interface");
1264         }
1265 }
1266
1267
1268 static void _vala_dbus_unregister_object (gpointer connection, GObject* object) {
1269         char* path;
1270         path = g_object_steal_data ((GObject*) object, "dbus_object_path");
1271         dbus_connection_unregister_object_path (connection, path);
1272         g_free (path);
1273 }
1274
1275
1276 static void main_window_init_ipc_server (MainWindow* self) {
1277         GError * _inner_error_ = NULL;
1278         g_return_if_fail (self != NULL);
1279         {
1280                 DBusGConnection* conn;
1281                 DBusGProxy* bus;
1282                 guint reply;
1283                 MoonshotServer* _tmp0_;
1284                 conn = dbus_g_bus_get (DBUS_BUS_SESSION, &_inner_error_);
1285                 if (_inner_error_ != NULL) {
1286                         if (_inner_error_->domain == DBUS_GERROR) {
1287                                 goto __catch6_dbus_gerror;
1288                         }
1289                         g_critical ("file %s: line %d: unexpected error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code);
1290                         g_clear_error (&_inner_error_);
1291                         return;
1292                 }
1293                 bus = dbus_g_proxy_new_for_name (conn, "org.freedesktop.DBus", "/org/freedesktop/DBus", "org.freedesktop.DBus");
1294                 reply = _dynamic_request_name0 (bus, "org.janet.Moonshot", (guint) 0, &_inner_error_);
1295                 if (_inner_error_ != NULL) {
1296                         _g_object_unref0 (bus);
1297                         _dbus_g_connection_unref0 (conn);
1298                         if (_inner_error_->domain == DBUS_GERROR) {
1299                                 goto __catch6_dbus_gerror;
1300                         }
1301                         goto __finally6;
1302                 }
1303                 g_assert (reply == DBUS_REQUEST_NAME_REPLY_PRIMARY_OWNER);
1304                 self->priv->ipc_server = (_tmp0_ = moonshot_server_new ((GtkWindow*) self), _g_object_unref0 (self->priv->ipc_server), _tmp0_);
1305                 _vala_dbus_register_object (dbus_g_connection_get_connection (conn), "/org/janet/moonshot", (GObject*) self->priv->ipc_server);
1306                 _g_object_unref0 (bus);
1307                 _dbus_g_connection_unref0 (conn);
1308         }
1309         goto __finally6;
1310         __catch6_dbus_gerror:
1311         {
1312                 GError * e;
1313                 e = _inner_error_;
1314                 _inner_error_ = NULL;
1315                 {
1316                         fprintf (stderr, "%s\n", e->message);
1317                         _g_error_free0 (e);
1318                 }
1319         }
1320         __finally6:
1321         if (_inner_error_ != NULL) {
1322                 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);
1323                 g_clear_error (&_inner_error_);
1324                 return;
1325         }
1326 }
1327
1328
1329 gint main_window_main (char** args, int args_length1) {
1330         gint result = 0;
1331         MainWindow* window;
1332         gtk_init (&args_length1, &args);
1333         bindtextdomain (GETTEXT_PACKAGE, LOCALEDIR);
1334         bind_textdomain_codeset (GETTEXT_PACKAGE, "UTF-8");
1335         textdomain (GETTEXT_PACKAGE);
1336         window = g_object_ref_sink (main_window_new ());
1337         gtk_widget_show ((GtkWidget*) window);
1338         gtk_main ();
1339         result = 0;
1340         _g_object_unref0 (window);
1341         return result;
1342 }
1343
1344
1345 int main (int argc, char ** argv) {
1346         g_type_init ();
1347         return main_window_main (argv, argc);
1348 }
1349
1350
1351 static void main_window_class_init (MainWindowClass * klass) {
1352         main_window_parent_class = g_type_class_peek_parent (klass);
1353         g_type_class_add_private (klass, sizeof (MainWindowPrivate));
1354         G_OBJECT_CLASS (klass)->finalize = main_window_finalize;
1355 }
1356
1357
1358 static void main_window_instance_init (MainWindow * self) {
1359         self->priv = MAIN_WINDOW_GET_PRIVATE (self);
1360         self->priv->ui_manager = gtk_ui_manager_new ();
1361 }
1362
1363
1364 static void main_window_finalize (GObject* obj) {
1365         MainWindow * self;
1366         self = MAIN_WINDOW (obj);
1367         _g_object_unref0 (self->priv->ui_manager);
1368         _g_object_unref0 (self->priv->search_entry);
1369         _g_object_unref0 (self->priv->vbox_rigth);
1370         _g_object_unref0 (self->priv->custom_vbox);
1371         _g_object_unref0 (self->priv->services_internal_vbox);
1372         _g_object_unref0 (self->priv->username_entry);
1373         _g_object_unref0 (self->priv->password_entry);
1374         _g_object_unref0 (self->priv->listmodel);
1375         _g_object_unref0 (self->priv->filter);
1376         _g_object_unref0 (self->priv->identities_manager);
1377         _g_object_unref0 (self->priv->ipc_server);
1378         _g_object_unref0 (self->selected_id_card_widget);
1379         _g_queue_free0 (self->priv->request_queue);
1380         G_OBJECT_CLASS (main_window_parent_class)->finalize (obj);
1381 }
1382
1383
1384 GType main_window_get_type (void) {
1385         static volatile gsize main_window_type_id__volatile = 0;
1386         if (g_once_init_enter (&main_window_type_id__volatile)) {
1387                 static const GTypeInfo g_define_type_info = { sizeof (MainWindowClass), (GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) main_window_class_init, (GClassFinalizeFunc) NULL, NULL, sizeof (MainWindow), 0, (GInstanceInitFunc) main_window_instance_init, NULL };
1388                 GType main_window_type_id;
1389                 main_window_type_id = g_type_register_static (GTK_TYPE_WINDOW, "MainWindow", &g_define_type_info, 0);
1390                 g_once_init_leave (&main_window_type_id__volatile, main_window_type_id);
1391         }
1392         return main_window_type_id__volatile;
1393 }
1394
1395
1396 static void _vala_array_destroy (gpointer array, gint array_length, GDestroyNotify destroy_func) {
1397         if ((array != NULL) && (destroy_func != NULL)) {
1398                 int i;
1399                 for (i = 0; i < array_length; i = i + 1) {
1400                         if (((gpointer*) array)[i] != NULL) {
1401                                 destroy_func (((gpointer*) array)[i]);
1402                         }
1403                 }
1404         }
1405 }
1406
1407
1408 static void _vala_array_free (gpointer array, gint array_length, GDestroyNotify destroy_func) {
1409         _vala_array_destroy (array, array_length, destroy_func);
1410         g_free (array);
1411 }
1412
1413
1414 static int _vala_strcmp0 (const char * str1, const char * str2) {
1415         if (str1 == NULL) {
1416                 return -(str1 != str2);
1417         }
1418         if (str2 == NULL) {
1419                 return str1 != str2;
1420         }
1421         return strcmp (str1, str2);
1422 }
1423
1424
1425
1426