1 /* moonshot-window.c generated by valac 0.10.4, the Vala compiler
2 * generated from moonshot-window.vala, do not modify */
6 #include <glib-object.h>
10 #include <gdk-pixbuf/gdk-pixdata.h>
12 #include <glib/gi18n-lib.h>
13 #include <pango/pango.h>
18 #include <dbus/dbus-glib-lowlevel.h>
19 #include <dbus/dbus-glib.h>
20 #include <dbus/dbus.h>
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))
31 typedef struct _MainWindow MainWindow;
32 typedef struct _MainWindowClass MainWindowClass;
33 typedef struct _MainWindowPrivate MainWindowPrivate;
35 #define TYPE_IDENTITIES_MANAGER (identities_manager_get_type ())
36 #define IDENTITIES_MANAGER(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), TYPE_IDENTITIES_MANAGER, IdentitiesManager))
37 #define IDENTITIES_MANAGER_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), TYPE_IDENTITIES_MANAGER, IdentitiesManagerClass))
38 #define IS_IDENTITIES_MANAGER(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TYPE_IDENTITIES_MANAGER))
39 #define IS_IDENTITIES_MANAGER_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), TYPE_IDENTITIES_MANAGER))
40 #define IDENTITIES_MANAGER_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), TYPE_IDENTITIES_MANAGER, IdentitiesManagerClass))
42 typedef struct _IdentitiesManager IdentitiesManager;
43 typedef struct _IdentitiesManagerClass IdentitiesManagerClass;
45 #define TYPE_IDENTITY_REQUEST (identity_request_get_type ())
46 #define IDENTITY_REQUEST(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), TYPE_IDENTITY_REQUEST, IdentityRequest))
47 #define IDENTITY_REQUEST_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), TYPE_IDENTITY_REQUEST, IdentityRequestClass))
48 #define IS_IDENTITY_REQUEST(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TYPE_IDENTITY_REQUEST))
49 #define IS_IDENTITY_REQUEST_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), TYPE_IDENTITY_REQUEST))
50 #define IDENTITY_REQUEST_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), TYPE_IDENTITY_REQUEST, IdentityRequestClass))
52 typedef struct _IdentityRequest IdentityRequest;
53 typedef struct _IdentityRequestClass IdentityRequestClass;
55 #define TYPE_CUSTOM_VBOX (custom_vbox_get_type ())
56 #define CUSTOM_VBOX(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), TYPE_CUSTOM_VBOX, CustomVBox))
57 #define CUSTOM_VBOX_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), TYPE_CUSTOM_VBOX, CustomVBoxClass))
58 #define IS_CUSTOM_VBOX(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TYPE_CUSTOM_VBOX))
59 #define IS_CUSTOM_VBOX_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), TYPE_CUSTOM_VBOX))
60 #define CUSTOM_VBOX_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), TYPE_CUSTOM_VBOX, CustomVBoxClass))
62 typedef struct _CustomVBox CustomVBox;
63 typedef struct _CustomVBoxClass CustomVBoxClass;
65 #define TYPE_ID_CARD (id_card_get_type ())
66 #define ID_CARD(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), TYPE_ID_CARD, IdCard))
67 #define ID_CARD_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), TYPE_ID_CARD, IdCardClass))
68 #define IS_ID_CARD(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TYPE_ID_CARD))
69 #define IS_ID_CARD_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), TYPE_ID_CARD))
70 #define ID_CARD_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), TYPE_ID_CARD, IdCardClass))
72 typedef struct _IdCard IdCard;
73 typedef struct _IdCardClass IdCardClass;
75 #define TYPE_MOONSHOT_SERVER (moonshot_server_get_type ())
76 #define MOONSHOT_SERVER(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), TYPE_MOONSHOT_SERVER, MoonshotServer))
77 #define MOONSHOT_SERVER_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), TYPE_MOONSHOT_SERVER, MoonshotServerClass))
78 #define IS_MOONSHOT_SERVER(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TYPE_MOONSHOT_SERVER))
79 #define IS_MOONSHOT_SERVER_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), TYPE_MOONSHOT_SERVER))
80 #define MOONSHOT_SERVER_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), TYPE_MOONSHOT_SERVER, MoonshotServerClass))
82 typedef struct _MoonshotServer MoonshotServer;
83 typedef struct _MoonshotServerClass MoonshotServerClass;
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_slist_free_g_object_unref0(var) ((var == NULL) ? NULL : (var = (_g_slist_free_g_object_unref (var), NULL)))
88 #define _g_queue_free0(var) ((var == NULL) ? NULL : (var = (g_queue_free (var), NULL)))
89 #define _g_hash_table_unref0(var) ((var == NULL) ? NULL : (var = (g_hash_table_unref (var), NULL)))
90 #define _g_free0(var) (var = (g_free (var), NULL))
91 typedef struct _IdentitiesManagerPrivate IdentitiesManagerPrivate;
93 #define TYPE_ID_CARD_WIDGET (id_card_widget_get_type ())
94 #define ID_CARD_WIDGET(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), TYPE_ID_CARD_WIDGET, IdCardWidget))
95 #define ID_CARD_WIDGET_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), TYPE_ID_CARD_WIDGET, IdCardWidgetClass))
96 #define IS_ID_CARD_WIDGET(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TYPE_ID_CARD_WIDGET))
97 #define IS_ID_CARD_WIDGET_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), TYPE_ID_CARD_WIDGET))
98 #define ID_CARD_WIDGET_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), TYPE_ID_CARD_WIDGET, IdCardWidgetClass))
100 typedef struct _IdCardWidget IdCardWidget;
101 typedef struct _IdCardWidgetClass IdCardWidgetClass;
102 #define _g_list_free0(var) ((var == NULL) ? NULL : (var = (g_list_free (var), NULL)))
104 #define TYPE_ADD_IDENTITY_DIALOG (add_identity_dialog_get_type ())
105 #define ADD_IDENTITY_DIALOG(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), TYPE_ADD_IDENTITY_DIALOG, AddIdentityDialog))
106 #define ADD_IDENTITY_DIALOG_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), TYPE_ADD_IDENTITY_DIALOG, AddIdentityDialogClass))
107 #define IS_ADD_IDENTITY_DIALOG(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TYPE_ADD_IDENTITY_DIALOG))
108 #define IS_ADD_IDENTITY_DIALOG_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), TYPE_ADD_IDENTITY_DIALOG))
109 #define ADD_IDENTITY_DIALOG_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), TYPE_ADD_IDENTITY_DIALOG, AddIdentityDialogClass))
111 typedef struct _AddIdentityDialog AddIdentityDialog;
112 typedef struct _AddIdentityDialogClass AddIdentityDialogClass;
113 typedef struct _IdentityRequestPrivate IdentityRequestPrivate;
114 #define __g_slist_free_g_free0(var) ((var == NULL) ? NULL : (var = (_g_slist_free_g_free (var), NULL)))
116 #define TYPE_RULE (rule_get_type ())
117 typedef struct _Rule Rule;
118 typedef struct _Block4Data Block4Data;
119 #define _g_pattern_spec_free0(var) ((var == NULL) ? NULL : (var = (g_pattern_spec_free (var), NULL)))
121 #define TYPE_ADD_PASSWORD_DIALOG (add_password_dialog_get_type ())
122 #define ADD_PASSWORD_DIALOG(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), TYPE_ADD_PASSWORD_DIALOG, AddPasswordDialog))
123 #define ADD_PASSWORD_DIALOG_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), TYPE_ADD_PASSWORD_DIALOG, AddPasswordDialogClass))
124 #define IS_ADD_PASSWORD_DIALOG(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TYPE_ADD_PASSWORD_DIALOG))
125 #define IS_ADD_PASSWORD_DIALOG_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), TYPE_ADD_PASSWORD_DIALOG))
126 #define ADD_PASSWORD_DIALOG_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), TYPE_ADD_PASSWORD_DIALOG, AddPasswordDialogClass))
128 typedef struct _AddPasswordDialog AddPasswordDialog;
129 typedef struct _AddPasswordDialogClass AddPasswordDialogClass;
130 #define _pango_font_description_free0(var) ((var == NULL) ? NULL : (var = (pango_font_description_free (var), NULL)))
131 #define _g_error_free0(var) ((var == NULL) ? NULL : (var = (g_error_free (var), NULL)))
132 #define _dbus_g_connection_unref0(var) ((var == NULL) ? NULL : (var = (dbus_g_connection_unref (var), NULL)))
133 typedef struct _DBusObjectVTable _DBusObjectVTable;
136 GtkWindow parent_instance;
137 MainWindowPrivate * priv;
138 IdentitiesManager* identities_manager;
139 GQueue* request_queue;
142 struct _MainWindowClass {
143 GtkWindowClass parent_class;
146 struct _MainWindowPrivate {
147 GtkUIManager* ui_manager;
148 GtkEntry* search_entry;
150 CustomVBox* custom_vbox;
151 GtkVBox* services_internal_vbox;
152 GtkEntry* username_entry;
153 GtkEntry* password_entry;
154 GtkListStore* listmodel;
155 GtkTreeModelFilter* filter;
157 MoonshotServer* ipc_server;
158 IdCard* default_id_card;
159 GHashTable* service_button_map;
163 MAIN_WINDOW_COLUMNS_IDCARD_COL,
164 MAIN_WINDOW_COLUMNS_LOGO_COL,
165 MAIN_WINDOW_COLUMNS_ISSUER_COL,
166 MAIN_WINDOW_COLUMNS_USERNAME_COL,
167 MAIN_WINDOW_COLUMNS_PASSWORD_COL,
168 MAIN_WINDOW_COLUMNS_N_COLUMNS
171 struct _IdentitiesManager {
172 GObject parent_instance;
173 IdentitiesManagerPrivate * priv;
174 GSList* id_card_list;
177 struct _IdentitiesManagerClass {
178 GObjectClass parent_class;
181 struct _IdentityRequest {
182 GObject parent_instance;
183 IdentityRequestPrivate * priv;
186 gboolean select_default;
192 struct _IdentityRequestClass {
193 GObjectClass parent_class;
198 char* always_confirm;
207 struct _DBusObjectVTable {
208 void (*register_object) (DBusConnection*, const char*, void*);
212 static gpointer main_window_parent_class = NULL;
214 GType main_window_get_type (void) G_GNUC_CONST;
215 GType identities_manager_get_type (void) G_GNUC_CONST;
216 GType identity_request_get_type (void) G_GNUC_CONST;
217 GType custom_vbox_get_type (void) G_GNUC_CONST;
218 GType id_card_get_type (void) G_GNUC_CONST;
219 GType moonshot_server_get_type (void) G_GNUC_CONST;
220 #define MAIN_WINDOW_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), TYPE_MAIN_WINDOW, MainWindowPrivate))
222 MAIN_WINDOW_DUMMY_PROPERTY
224 static GType main_window_columns_get_type (void) G_GNUC_UNUSED;
225 static void _g_slist_free_g_object_unref (GSList* self);
226 #define MAIN_WINDOW_WINDOW_WIDTH 400
227 #define MAIN_WINDOW_WINDOW_HEIGHT 500
228 #define MAIN_WINDOW_layout "\n" \
229 "<menubar name='MenuBar'>\n" \
230 " <menu name='FileMenu' action='FileMenuAction'>\n" \
231 " <menuitem name='AddIdCard' action='AddIdCardAction' />\n" \
233 " <menuitem name='Quit' action='QuitAction' />\n" \
236 " <menu name='HelpMenu' action='HelpMenuAction'>\n" \
237 " <menuitem name='About' action='AboutAction' />\n" \
240 MainWindow* main_window_new (void);
241 MainWindow* main_window_construct (GType object_type);
242 static void main_window_build_ui (MainWindow* self);
243 static void main_window_setup_identities_list (MainWindow* self);
244 static void main_window_load_id_cards (MainWindow* self);
245 static void main_window_connect_signals (MainWindow* self);
246 static void main_window_init_ipc_server (MainWindow* self);
247 void main_window_add_candidate (MainWindow* self, IdCard* idcard);
248 static gboolean main_window_visible_func (MainWindow* self, GtkTreeModel* model, GtkTreeIter* iter);
249 const char* id_card_get_issuer (IdCard* self);
250 const char* id_card_get_display_name (IdCard* self);
251 char** id_card_get_services (IdCard* self, int* result_length1);
252 static gboolean _main_window_visible_func_gtk_tree_model_filter_visible_func (GtkTreeModel* model, GtkTreeIter* iter, gpointer self);
253 static void main_window_search_entry_icon_press_cb (MainWindow* self, GtkEntryIconPosition pos, GdkEvent* event);
254 static void main_window_search_entry_text_changed_cb (MainWindow* self);
255 static void main_window_redraw_id_card_widgets (MainWindow* self);
256 static gboolean main_window_search_entry_key_press_event_cb (MainWindow* self, GdkEventKey* e);
257 IdentitiesManager* identities_manager_new (void);
258 IdentitiesManager* identities_manager_construct (GType object_type);
259 static void main_window_add_id_card_data (MainWindow* self, IdCard* id_card);
260 static void main_window_add_id_card_widget (MainWindow* self, IdCard* id_card);
261 GType id_card_widget_get_type (void) G_GNUC_CONST;
262 static void main_window_fill_details (MainWindow* self, IdCardWidget* id_card_widget);
263 IdCard* id_card_widget_get_id_card (IdCardWidget* self);
264 const char* id_card_get_username (IdCard* self);
265 const char* id_card_get_password (IdCard* self);
266 static void main_window_fill_services_vbox (MainWindow* self, IdCard* id_card);
267 void identities_manager_store_id_cards (IdentitiesManager* self);
268 static void main_window_show_details (MainWindow* self, IdCard* id_card);
269 static void main_window_details_identity_cb (MainWindow* self, IdCardWidget* id_card_widget);
270 GType add_identity_dialog_get_type (void) G_GNUC_CONST;
271 static IdCard* main_window_get_id_card_data (MainWindow* self, AddIdentityDialog* dialog);
272 IdCard* id_card_new (void);
273 IdCard* id_card_construct (GType object_type);
274 const char* add_identity_dialog_get_display_name (AddIdentityDialog* self);
275 void id_card_set_display_name (IdCard* self, const char* value);
276 const char* add_identity_dialog_get_issuer (AddIdentityDialog* self);
277 void id_card_set_issuer (IdCard* self, const char* value);
278 const char* add_identity_dialog_get_username (AddIdentityDialog* self);
279 void id_card_set_username (IdCard* self, const char* value);
280 const char* add_identity_dialog_get_password (AddIdentityDialog* self);
281 void id_card_set_password (IdCard* self, const char* value);
282 void id_card_set_services (IdCard* self, char** value, int value_length1);
283 GdkPixbuf* find_icon (const char* name, gint size);
284 static void main_window_remove_id_card_data (MainWindow* self, IdCard* id_card);
285 IdCardWidget* id_card_widget_new (IdCard* id_card);
286 IdCardWidget* id_card_widget_construct (GType object_type, IdCard* id_card);
287 void custom_vbox_add_id_card_widget (CustomVBox* self, IdCardWidget* id_card_widget);
288 static void _main_window_details_identity_cb_id_card_widget_details_id (IdCardWidget* _sender, gpointer self);
289 static void main_window_remove_identity_cb (MainWindow* self, IdCardWidget* id_card_widget);
290 static void _main_window_remove_identity_cb_id_card_widget_remove_id (IdCardWidget* _sender, gpointer self);
291 static void _lambda2_ (IdCardWidget* w, MainWindow* self);
292 void main_window_send_identity_cb (MainWindow* self, IdCard* identity);
293 static void __lambda2__id_card_widget_send_id (IdCardWidget* _sender, gpointer self);
294 void custom_vbox_receive_expanded_event (CustomVBox* self, IdCardWidget* id_card_widget);
295 static void _custom_vbox_receive_expanded_event_id_card_widget_expanded (IdCardWidget* _sender, gpointer self);
296 static void _main_window_fill_details_id_card_widget_expanded (IdCardWidget* _sender, gpointer self);
297 gboolean main_window_display_name_is_valid (MainWindow* self, const char* name, char** candidate);
298 void main_window_insert_id_card (MainWindow* self, IdCard* id_card);
299 gboolean main_window_add_identity (MainWindow* self, IdCard* id_card);
300 static void main_window_add_identity_manual_cb (MainWindow* self);
301 AddIdentityDialog* add_identity_dialog_new (void);
302 AddIdentityDialog* add_identity_dialog_construct (GType object_type);
303 static void main_window_remove_id_card_widget (MainWindow* self, IdCardWidget* id_card_widget);
304 void custom_vbox_remove_id_card_widget (CustomVBox* self, IdCardWidget* id_card_widget);
305 static void main_window_remove_identity (MainWindow* self, IdCardWidget* id_card_widget);
306 void main_window_select_identity (MainWindow* self, IdentityRequest* request);
307 IdCardWidget* custom_vbox_get_current_idcard (CustomVBox* self);
308 GtkButton* id_card_widget_get_send_button (IdCardWidget* self);
309 const char* id_card_get_nai (IdCard* self);
310 static void _g_slist_free_g_free (GSList* self);
311 GType rule_get_type (void) G_GNUC_CONST;
312 Rule* rule_dup (const Rule* self);
313 void rule_free (Rule* self);
314 void rule_copy (const Rule* self, Rule* dest);
315 void rule_destroy (Rule* self);
316 Rule* id_card_get_rules (IdCard* self, int* result_length1);
317 static gboolean main_window_match_service_pattern (MainWindow* self, const char* service, const char* pattern);
318 static gboolean _lambda3_ (Block4Data* _data4_);
319 static gboolean __lambda3__gsource_func (gpointer self);
320 static Block4Data* block4_data_ref (Block4Data* _data4_);
321 static void block4_data_unref (Block4Data* _data4_);
322 AddPasswordDialog* add_password_dialog_new (void);
323 AddPasswordDialog* add_password_dialog_construct (GType object_type);
324 GType add_password_dialog_get_type (void) G_GNUC_CONST;
325 const char* add_password_dialog_get_password (AddPasswordDialog* self);
326 gboolean add_password_dialog_get_remember (AddPasswordDialog* self);
327 void identity_request_return_identity (IdentityRequest* self, IdCard* id_card);
328 static void main_window_label_make_bold (MainWindow* self, GtkLabel* label);
329 static void _lambda1_ (GtkButton* remove_button, MainWindow* self);
330 void id_card_widget_update_id_card_label (IdCardWidget* self);
331 static void __lambda1__gtk_button_clicked (GtkButton* _sender, gpointer self);
332 static void main_window_on_about_action (MainWindow* self);
333 static GtkActionEntry* main_window_create_actions (MainWindow* self, int* result_length1);
334 static void _vala_array_add1 (GtkActionEntry** array, int* length, int* size, const GtkActionEntry* value);
335 static void _main_window_add_identity_manual_cb_gtk_action_callback (GtkAction* action, gpointer self);
336 static void _vala_array_add2 (GtkActionEntry** array, int* length, int* size, const GtkActionEntry* value);
337 static void _gtk_main_quit_gtk_action_callback (GtkAction* action, gpointer self);
338 static void _vala_array_add3 (GtkActionEntry** array, int* length, int* size, const GtkActionEntry* value);
339 static void _vala_array_add4 (GtkActionEntry** array, int* length, int* size, const GtkActionEntry* value);
340 static void _main_window_on_about_action_gtk_action_callback (GtkAction* action, gpointer self);
341 static void _vala_array_add5 (GtkActionEntry** array, int* length, int* size, const GtkActionEntry* value);
342 static void main_window_create_ui_manager (MainWindow* self);
343 static void main_window_set_atk_name_description (MainWindow* self, GtkWidget* widget, const char* name, const char* description);
344 GdkPixbuf* find_icon_sized (const char* name, GtkIconSize icon_size);
345 static void _main_window_search_entry_icon_press_cb_gtk_entry_icon_press (GtkEntry* _sender, GtkEntryIconPosition p0, GdkEvent* p1, gpointer self);
346 static void _main_window_search_entry_text_changed_cb_g_object_notify (GObject* _sender, GParamSpec* pspec, gpointer self);
347 static gboolean _main_window_search_entry_key_press_event_cb_gtk_widget_key_press_event (GtkWidget* _sender, GdkEventKey* event, gpointer self);
348 CustomVBox* custom_vbox_new (MainWindow* window, gboolean homogeneous, gint spacing);
349 CustomVBox* custom_vbox_construct (GType object_type, MainWindow* window, gboolean homogeneous, gint spacing);
350 static void _gtk_main_quit_gtk_object_destroy (GtkObject* _sender, gpointer self);
351 static guint _dynamic_request_name0 (DBusGProxy* self, const char* param1, guint param2, GError** error);
352 MoonshotServer* moonshot_server_new (GtkWindow* window);
353 MoonshotServer* moonshot_server_construct (GType object_type, GtkWindow* window);
354 static void _vala_dbus_register_object (DBusConnection* connection, const char* path, void* object);
355 static void _vala_dbus_unregister_object (gpointer connection, GObject* object);
356 gint main_window_main (char** args, int args_length1);
357 static void main_window_finalize (GObject* obj);
358 static void _vala_array_destroy (gpointer array, gint array_length, GDestroyNotify destroy_func);
359 static void _vala_array_free (gpointer array, gint array_length, GDestroyNotify destroy_func);
360 static gint _vala_array_length (gpointer array);
361 static int _vala_strcmp0 (const char * str1, const char * str2);
365 static GType main_window_columns_get_type (void) {
366 static volatile gsize main_window_columns_type_id__volatile = 0;
367 if (g_once_init_enter (&main_window_columns_type_id__volatile)) {
368 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}};
369 GType main_window_columns_type_id;
370 main_window_columns_type_id = g_enum_register_static ("MainWindowColumns", values);
371 g_once_init_leave (&main_window_columns_type_id__volatile, main_window_columns_type_id);
373 return main_window_columns_type_id__volatile;
377 static void _g_slist_free_g_object_unref (GSList* self) {
378 g_slist_foreach (self, (GFunc) g_object_unref, NULL);
383 MainWindow* main_window_construct (GType object_type) {
387 self = g_object_newv (object_type, 0, NULL);
388 self->request_queue = (_tmp0_ = g_queue_new (), _g_queue_free0 (self->request_queue), _tmp0_);
389 self->priv->service_button_map = (_tmp1_ = 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), _tmp1_);
390 gtk_window_set_title ((GtkWindow*) self, "Moonshoot");
391 gtk_window_set_position ((GtkWindow*) self, GTK_WIN_POS_CENTER);
392 gtk_window_set_default_size ((GtkWindow*) self, MAIN_WINDOW_WINDOW_WIDTH, MAIN_WINDOW_WINDOW_HEIGHT);
393 main_window_build_ui (self);
394 main_window_setup_identities_list (self);
395 main_window_load_id_cards (self);
396 main_window_connect_signals (self);
397 main_window_init_ipc_server (self);
402 MainWindow* main_window_new (void) {
403 return main_window_construct (TYPE_MAIN_WINDOW);
407 static gpointer _g_object_ref0 (gpointer self) {
408 return self ? g_object_ref (self) : NULL;
412 void main_window_add_candidate (MainWindow* self, IdCard* idcard) {
413 g_return_if_fail (self != NULL);
414 g_return_if_fail (idcard != NULL);
415 self->priv->candidates = g_slist_append (self->priv->candidates, _g_object_ref0 (idcard));
419 static gboolean string_contains (const char* self, const char* needle) {
420 gboolean result = FALSE;
421 g_return_val_if_fail (self != NULL, FALSE);
422 g_return_val_if_fail (needle != NULL, FALSE);
423 result = strstr (self, needle) != NULL;
428 static gboolean main_window_visible_func (MainWindow* self, GtkTreeModel* model, GtkTreeIter* iter) {
429 gboolean result = FALSE;
432 gboolean _tmp0_ = FALSE;
433 g_return_val_if_fail (self != NULL, FALSE);
434 g_return_val_if_fail (model != NULL, FALSE);
436 gtk_tree_model_get (model, iter, MAIN_WINDOW_COLUMNS_IDCARD_COL, &id_card, -1);
437 if (id_card == NULL) {
439 _g_object_unref0 (id_card);
442 if (self->priv->candidates != NULL) {
443 gboolean is_candidate;
444 is_candidate = FALSE;
446 GSList* candidate_collection;
447 GSList* candidate_it;
448 candidate_collection = self->priv->candidates;
449 for (candidate_it = candidate_collection; candidate_it != NULL; candidate_it = candidate_it->next) {
451 candidate = _g_object_ref0 ((IdCard*) candidate_it->data);
453 if (candidate == id_card) {
456 _g_object_unref0 (candidate);
462 _g_object_unref0 (id_card);
466 entry_text = g_strdup (gtk_entry_get_text (self->priv->search_entry));
467 if (entry_text == NULL) {
470 _tmp0_ = _vala_strcmp0 (entry_text, "") == 0;
474 _g_free0 (entry_text);
475 _g_object_unref0 (id_card);
480 char** search_text_collection;
481 int search_text_collection_length1;
483 search_text_collection = _tmp1_ = g_strsplit (entry_text, " ", 0);
484 search_text_collection_length1 = _vala_array_length (_tmp1_);
485 for (search_text_it = 0; search_text_it < _vala_array_length (_tmp1_); search_text_it = search_text_it + 1) {
487 search_text = g_strdup (search_text_collection[search_text_it]);
489 char* search_text_casefold;
491 if (_vala_strcmp0 (search_text, "") == 0) {
492 _g_free0 (search_text);
495 search_text_casefold = g_utf8_casefold (search_text, -1);
496 if (id_card_get_issuer (id_card) != NULL) {
497 char* issuer_casefold;
498 issuer_casefold = g_strdup (id_card_get_issuer (id_card));
499 if (string_contains (issuer_casefold, search_text_casefold)) {
501 _g_free0 (issuer_casefold);
502 _g_free0 (search_text_casefold);
503 _g_free0 (search_text);
504 search_text_collection = (_vala_array_free (search_text_collection, search_text_collection_length1, (GDestroyNotify) g_free), NULL);
505 _g_free0 (entry_text);
506 _g_object_unref0 (id_card);
509 _g_free0 (issuer_casefold);
511 if (id_card_get_display_name (id_card) != NULL) {
512 char* display_name_casefold;
513 display_name_casefold = g_utf8_casefold (id_card_get_display_name (id_card), -1);
514 if (string_contains (display_name_casefold, search_text_casefold)) {
516 _g_free0 (display_name_casefold);
517 _g_free0 (search_text_casefold);
518 _g_free0 (search_text);
519 search_text_collection = (_vala_array_free (search_text_collection, search_text_collection_length1, (GDestroyNotify) g_free), NULL);
520 _g_free0 (entry_text);
521 _g_object_unref0 (id_card);
524 _g_free0 (display_name_casefold);
529 char** service_collection;
530 int service_collection_length1;
532 service_collection = id_card_get_services (id_card, &_tmp3_);
533 service_collection_length1 = _tmp3_;
534 for (service_it = 0; service_it < _tmp3_; service_it = service_it + 1) {
536 service = g_strdup (service_collection[service_it]);
538 char* service_casefold;
539 service_casefold = g_utf8_casefold (service, -1);
540 if (string_contains (service_casefold, search_text_casefold)) {
542 _g_free0 (service_casefold);
544 _g_free0 (search_text_casefold);
545 _g_free0 (search_text);
546 search_text_collection = (_vala_array_free (search_text_collection, search_text_collection_length1, (GDestroyNotify) g_free), NULL);
547 _g_free0 (entry_text);
548 _g_object_unref0 (id_card);
551 _g_free0 (service_casefold);
557 _g_free0 (search_text_casefold);
558 _g_free0 (search_text);
561 search_text_collection = (_vala_array_free (search_text_collection, search_text_collection_length1, (GDestroyNotify) g_free), NULL);
564 _g_free0 (entry_text);
565 _g_object_unref0 (id_card);
570 static gboolean _main_window_visible_func_gtk_tree_model_filter_visible_func (GtkTreeModel* model, GtkTreeIter* iter, gpointer self) {
572 result = main_window_visible_func (self, model, iter);
577 static void main_window_setup_identities_list (MainWindow* self) {
578 GtkListStore* _tmp0_;
579 GtkTreeModelFilter* _tmp1_;
580 g_return_if_fail (self != NULL);
581 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_);
582 self->priv->filter = (_tmp1_ = (GtkTreeModelFilter*) gtk_tree_model_filter_new ((GtkTreeModel*) self->priv->listmodel, NULL), _g_object_unref0 (self->priv->filter), _tmp1_);
583 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);
587 static void main_window_search_entry_icon_press_cb (MainWindow* self, GtkEntryIconPosition pos, GdkEvent* event) {
588 g_return_if_fail (self != NULL);
589 g_return_if_fail (event != NULL);
590 if (pos == GTK_ENTRY_ICON_PRIMARY) {
591 g_print ("Search entry icon pressed\n");
593 gtk_entry_set_text (self->priv->search_entry, "");
598 static void main_window_search_entry_text_changed_cb (MainWindow* self) {
600 g_return_if_fail (self != NULL);
601 gtk_tree_model_filter_refilter (self->priv->filter);
602 main_window_redraw_id_card_widgets (self);
603 has_text = gtk_entry_get_text_length (self->priv->search_entry) > 0;
604 gtk_entry_set_icon_sensitive (self->priv->search_entry, GTK_ENTRY_ICON_PRIMARY, has_text);
605 gtk_entry_set_icon_sensitive (self->priv->search_entry, GTK_ENTRY_ICON_SECONDARY, has_text);
606 gtk_widget_set_visible ((GtkWidget*) self->priv->vbox_right, FALSE);
610 static gboolean main_window_search_entry_key_press_event_cb (MainWindow* self, GdkEventKey* e) {
611 gboolean result = FALSE;
612 g_return_val_if_fail (self != NULL, FALSE);
613 if (_vala_strcmp0 (gdk_keyval_name ((*e).keyval), "Escape") == 0) {
614 gtk_entry_set_text (self->priv->search_entry, "");
621 static void main_window_load_id_cards (MainWindow* self) {
622 IdentitiesManager* _tmp0_;
624 g_return_if_fail (self != NULL);
625 self->identities_manager = (_tmp0_ = identities_manager_new (), _g_object_unref0 (self->identities_manager), _tmp0_);
626 if (self->identities_manager->id_card_list == NULL) {
630 GSList* id_card_collection;
632 id_card_collection = self->identities_manager->id_card_list;
633 for (id_card_it = id_card_collection; id_card_it != NULL; id_card_it = id_card_it->next) {
635 id_card = _g_object_ref0 ((IdCard*) id_card_it->data);
637 main_window_add_id_card_data (self, id_card);
638 main_window_add_id_card_widget (self, id_card);
639 _g_object_unref0 (id_card);
643 self->priv->default_id_card = (_tmp1_ = _g_object_ref0 ((IdCard*) self->identities_manager->id_card_list->data), _g_object_unref0 (self->priv->default_id_card), _tmp1_);
647 static void main_window_fill_details (MainWindow* self, IdCardWidget* id_card_widget) {
651 g_return_if_fail (self != NULL);
652 g_return_if_fail (id_card_widget != NULL);
653 id_card = _g_object_ref0 (id_card_widget_get_id_card (id_card_widget));
654 gtk_entry_set_text (self->priv->username_entry, id_card_get_username (id_card));
655 _tmp0_ = g_strdup (id_card_get_password (id_card));
656 if (_tmp0_ == NULL) {
658 _tmp0_ = (_tmp1_ = g_strdup (""), _g_free0 (_tmp0_), _tmp1_);
660 gtk_entry_set_text (self->priv->password_entry, _tmp0_);
661 children = gtk_container_get_children ((GtkContainer*) self->priv->services_internal_vbox);
663 GList* hbox_collection;
665 hbox_collection = children;
666 for (hbox_it = hbox_collection; hbox_it != NULL; hbox_it = hbox_it->next) {
668 hbox = (GtkWidget*) hbox_it->data;
670 gtk_object_destroy ((GtkObject*) hbox);
674 main_window_fill_services_vbox (self, id_card_widget_get_id_card (id_card_widget));
675 identities_manager_store_id_cards (self->identities_manager);
676 _g_list_free0 (children);
678 _g_object_unref0 (id_card);
682 static void main_window_show_details (MainWindow* self, IdCard* id_card) {
683 g_return_if_fail (self != NULL);
684 g_return_if_fail (id_card != NULL);
685 gtk_widget_set_visible ((GtkWidget*) self->priv->vbox_right, !gtk_widget_get_visible ((GtkWidget*) self->priv->vbox_right));
686 if (gtk_widget_get_visible ((GtkWidget*) self->priv->vbox_right) == FALSE) {
687 gtk_window_resize ((GtkWindow*) self, MAIN_WINDOW_WINDOW_WIDTH, MAIN_WINDOW_WINDOW_HEIGHT);
692 static void main_window_details_identity_cb (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_fill_details (self, id_card_widget);
696 main_window_show_details (self, id_card_widget_get_id_card (id_card_widget));
700 static IdCard* main_window_get_id_card_data (MainWindow* self, AddIdentityDialog* dialog) {
701 IdCard* result = NULL;
703 char** _tmp0_ = NULL;
707 g_return_val_if_fail (self != NULL, NULL);
708 g_return_val_if_fail (dialog != NULL, NULL);
709 id_card = id_card_new ();
710 id_card_set_display_name (id_card, add_identity_dialog_get_display_name (dialog));
711 id_card_set_issuer (id_card, add_identity_dialog_get_issuer (dialog));
712 if (_vala_strcmp0 (id_card_get_issuer (id_card), "") == 0) {
713 id_card_set_issuer (id_card, "Issuer");
715 id_card_set_username (id_card, add_identity_dialog_get_username (dialog));
716 id_card_set_password (id_card, add_identity_dialog_get_password (dialog));
717 _tmp2_ = (_tmp1_ = (_tmp0_ = g_new0 (char*, 0 + 1), _tmp0_), _tmp1__length1 = 0, _tmp1_);
718 id_card_set_services (id_card, _tmp2_, 0);
719 _tmp1_ = (_vala_array_free (_tmp1_, _tmp1__length1, (GDestroyNotify) g_free), NULL);
720 g_object_set_data_full ((GObject*) id_card, "pixbuf", find_icon ("avatar-default", 48), g_object_unref);
726 static void main_window_add_id_card_data (MainWindow* self, IdCard* id_card) {
727 GtkTreeIter iter = {0};
730 g_return_if_fail (self != NULL);
731 g_return_if_fail (id_card != NULL);
733 gtk_list_store_append (self->priv->listmodel, &iter);
734 pixbuf = (_tmp0_ = _g_object_ref0 ((GdkPixbuf*) g_object_get_data ((GObject*) id_card, "pixbuf")), _g_object_unref0 (pixbuf), _tmp0_);
735 gtk_list_store_set (self->priv->listmodel, &iter, MAIN_WINDOW_COLUMNS_IDCARD_COL, id_card, MAIN_WINDOW_COLUMNS_LOGO_COL, pixbuf, 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);
736 _g_object_unref0 (pixbuf);
740 static void main_window_remove_id_card_data (MainWindow* self, IdCard* id_card) {
741 GtkTreeIter iter = {0};
743 g_return_if_fail (self != NULL);
744 g_return_if_fail (id_card != NULL);
746 if (gtk_tree_model_get_iter_first ((GtkTreeModel*) self->priv->listmodel, &iter)) {
752 if (!gtk_tree_model_iter_next ((GtkTreeModel*) self->priv->listmodel, &iter)) {
757 gtk_tree_model_get ((GtkTreeModel*) self->priv->listmodel, &iter, MAIN_WINDOW_COLUMNS_ISSUER_COL, &issuer, -1);
758 if (_vala_strcmp0 (id_card_get_issuer (id_card), issuer) == 0) {
759 gtk_list_store_remove (self->priv->listmodel, &iter);
769 static void _main_window_details_identity_cb_id_card_widget_details_id (IdCardWidget* _sender, gpointer self) {
770 main_window_details_identity_cb (self, _sender);
774 static void _main_window_remove_identity_cb_id_card_widget_remove_id (IdCardWidget* _sender, gpointer self) {
775 main_window_remove_identity_cb (self, _sender);
779 static void _lambda2_ (IdCardWidget* w, MainWindow* self) {
780 g_return_if_fail (w != NULL);
781 main_window_send_identity_cb (self, id_card_widget_get_id_card (w));
785 static void __lambda2__id_card_widget_send_id (IdCardWidget* _sender, gpointer self) {
786 _lambda2_ (_sender, self);
790 static void _custom_vbox_receive_expanded_event_id_card_widget_expanded (IdCardWidget* _sender, gpointer self) {
791 custom_vbox_receive_expanded_event (self, _sender);
795 static void _main_window_fill_details_id_card_widget_expanded (IdCardWidget* _sender, gpointer self) {
796 main_window_fill_details (self, _sender);
800 static void main_window_add_id_card_widget (MainWindow* self, IdCard* id_card) {
801 IdCardWidget* id_card_widget;
802 g_return_if_fail (self != NULL);
803 g_return_if_fail (id_card != NULL);
804 id_card_widget = g_object_ref_sink (id_card_widget_new (id_card));
805 custom_vbox_add_id_card_widget (self->priv->custom_vbox, id_card_widget);
806 g_signal_connect_object (id_card_widget, "details-id", (GCallback) _main_window_details_identity_cb_id_card_widget_details_id, self, 0);
807 g_signal_connect_object (id_card_widget, "remove-id", (GCallback) _main_window_remove_identity_cb_id_card_widget_remove_id, self, 0);
808 g_signal_connect_object (id_card_widget, "send-id", (GCallback) __lambda2__id_card_widget_send_id, self, 0);
809 g_signal_connect_object (id_card_widget, "expanded", (GCallback) _custom_vbox_receive_expanded_event_id_card_widget_expanded, self->priv->custom_vbox, 0);
810 g_signal_connect_object (id_card_widget, "expanded", (GCallback) _main_window_fill_details_id_card_widget_expanded, self, 0);
811 _g_object_unref0 (id_card_widget);
815 gboolean main_window_display_name_is_valid (MainWindow* self, const char* name, char** candidate) {
816 gboolean result = FALSE;
817 g_return_val_if_fail (self != NULL, FALSE);
818 g_return_val_if_fail (name != NULL, FALSE);
819 if (candidate != NULL) {
823 GSList* id_card_collection;
825 id_card_collection = self->identities_manager->id_card_list;
826 for (id_card_it = id_card_collection; id_card_it != NULL; id_card_it = id_card_it->next) {
828 id_card = _g_object_ref0 ((IdCard*) id_card_it->data);
830 if (_vala_strcmp0 (id_card_get_display_name (id_card), name) == 0) {
831 if ((candidate) != NULL) {
847 tmp = g_strdup_printf ("%s %d", name, i);
848 if (main_window_display_name_is_valid (self, tmp, NULL)) {
850 *candidate = (_tmp1_ = g_strdup (tmp), _g_free0 (*candidate), _tmp1_);
860 _g_object_unref0 (id_card);
863 _g_object_unref0 (id_card);
872 void main_window_insert_id_card (MainWindow* self, IdCard* id_card) {
877 g_return_if_fail (self != NULL);
878 g_return_if_fail (id_card != NULL);
880 if (!(_tmp1_ = main_window_display_name_is_valid (self, id_card_get_display_name (id_card), &_tmp0_), candidate = (_tmp2_ = _tmp0_, _g_free0 (candidate), _tmp2_), _tmp1_)) {
881 id_card_set_display_name (id_card, candidate);
883 self->identities_manager->id_card_list = g_slist_prepend (self->identities_manager->id_card_list, _g_object_ref0 (id_card));
884 identities_manager_store_id_cards (self->identities_manager);
885 main_window_add_id_card_data (self, id_card);
886 main_window_add_id_card_widget (self, id_card);
887 _g_free0 (candidate);
891 gboolean main_window_add_identity (MainWindow* self, IdCard* id_card) {
892 gboolean result = FALSE;
893 GtkMessageDialog* dialog;
895 g_return_val_if_fail (self != NULL, FALSE);
896 g_return_val_if_fail (id_card != NULL, FALSE);
897 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)));
898 gtk_widget_show_all ((GtkWidget*) dialog);
899 ret = gtk_dialog_run ((GtkDialog*) dialog);
900 gtk_widget_hide ((GtkWidget*) dialog);
901 if (ret == GTK_RESPONSE_YES) {
902 g_object_set_data_full ((GObject*) id_card, "pixbuf", find_icon ("avatar-default", 48), g_object_unref);
903 main_window_insert_id_card (self, id_card);
905 _g_object_unref0 (dialog);
909 _g_object_unref0 (dialog);
914 static void main_window_add_identity_manual_cb (MainWindow* self) {
915 AddIdentityDialog* dialog;
917 g_return_if_fail (self != NULL);
918 dialog = g_object_ref_sink (add_identity_dialog_new ());
919 _result_ = gtk_dialog_run ((GtkDialog*) dialog);
921 case GTK_RESPONSE_OK:
924 main_window_insert_id_card (self, _tmp0_ = main_window_get_id_card_data (self, dialog));
925 _g_object_unref0 (_tmp0_);
933 gtk_object_destroy ((GtkObject*) dialog);
934 _g_object_unref0 (dialog);
938 static void main_window_remove_id_card_widget (MainWindow* self, IdCardWidget* id_card_widget) {
939 g_return_if_fail (self != NULL);
940 g_return_if_fail (id_card_widget != NULL);
941 main_window_remove_id_card_data (self, id_card_widget_get_id_card (id_card_widget));
942 custom_vbox_remove_id_card_widget (self->priv->custom_vbox, id_card_widget);
946 static void main_window_remove_identity (MainWindow* self, IdCardWidget* id_card_widget) {
948 g_return_if_fail (self != NULL);
949 g_return_if_fail (id_card_widget != NULL);
950 id_card = _g_object_ref0 (id_card_widget_get_id_card (id_card_widget));
951 self->identities_manager->id_card_list = g_slist_remove (self->identities_manager->id_card_list, id_card);
952 identities_manager_store_id_cards (self->identities_manager);
953 main_window_remove_id_card_widget (self, id_card_widget);
954 _g_object_unref0 (id_card);
958 static void main_window_redraw_id_card_widgets (MainWindow* self) {
959 GtkTreeIter iter = {0};
962 g_return_if_fail (self != NULL);
964 children = gtk_container_get_children ((GtkContainer*) self->priv->custom_vbox);
966 GList* id_card_widget_collection;
967 GList* id_card_widget_it;
968 id_card_widget_collection = children;
969 for (id_card_widget_it = id_card_widget_collection; id_card_widget_it != NULL; id_card_widget_it = id_card_widget_it->next) {
970 GtkWidget* id_card_widget;
971 id_card_widget = (GtkWidget*) id_card_widget_it->data;
973 gtk_object_destroy ((GtkObject*) id_card_widget);
977 if (gtk_tree_model_get_iter_first ((GtkTreeModel*) self->priv->filter, &iter)) {
983 if (!gtk_tree_model_iter_next ((GtkTreeModel*) self->priv->filter, &iter)) {
988 gtk_tree_model_get ((GtkTreeModel*) self->priv->filter, &iter, MAIN_WINDOW_COLUMNS_IDCARD_COL, &id_card, -1);
989 main_window_add_id_card_widget (self, id_card);
993 _g_list_free0 (children);
994 _g_object_unref0 (id_card);
998 static void main_window_remove_identity_cb (MainWindow* self, IdCardWidget* id_card_widget) {
1000 GtkMessageDialog* dialog;
1002 g_return_if_fail (self != NULL);
1003 g_return_if_fail (id_card_widget != NULL);
1004 id_card = _g_object_ref0 (id_card_widget_get_id_card (id_card_widget));
1005 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)));
1006 _result_ = gtk_dialog_run ((GtkDialog*) dialog);
1008 case GTK_RESPONSE_YES:
1010 main_window_remove_identity (self, id_card_widget);
1018 gtk_object_destroy ((GtkObject*) dialog);
1019 _g_object_unref0 (dialog);
1020 _g_object_unref0 (id_card);
1024 static void _g_slist_free_g_free (GSList* self) {
1025 g_slist_foreach (self, (GFunc) g_free, NULL);
1026 g_slist_free (self);
1030 static gboolean _lambda3_ (Block4Data* _data4_) {
1032 gboolean result = FALSE;
1033 self = _data4_->self;
1034 main_window_send_identity_cb (self, _data4_->identity);
1040 static gboolean __lambda3__gsource_func (gpointer self) {
1042 result = _lambda3_ (self);
1047 static Block4Data* block4_data_ref (Block4Data* _data4_) {
1048 g_atomic_int_inc (&_data4_->_ref_count_);
1053 static void block4_data_unref (Block4Data* _data4_) {
1054 if (g_atomic_int_dec_and_test (&_data4_->_ref_count_)) {
1055 _g_object_unref0 (_data4_->self);
1056 _g_object_unref0 (_data4_->identity);
1057 g_slice_free (Block4Data, _data4_);
1062 void main_window_select_identity (MainWindow* self, IdentityRequest* request) {
1063 Block4Data* _data4_;
1064 gboolean _tmp0_ = FALSE;
1065 g_return_if_fail (self != NULL);
1066 g_return_if_fail (request != NULL);
1067 _data4_ = g_slice_new0 (Block4Data);
1068 _data4_->_ref_count_ = 1;
1069 _data4_->self = g_object_ref (self);
1070 _data4_->identity = NULL;
1071 g_queue_push_tail (self->request_queue, _g_object_ref0 (request));
1072 if (custom_vbox_get_current_idcard (self->priv->custom_vbox) != NULL) {
1073 _tmp0_ = id_card_widget_get_send_button (custom_vbox_get_current_idcard (self->priv->custom_vbox)) != NULL;
1078 gtk_widget_set_sensitive ((GtkWidget*) id_card_widget_get_send_button (custom_vbox_get_current_idcard (self->priv->custom_vbox)), TRUE);
1080 if (request->select_default) {
1082 _data4_->identity = (_tmp1_ = _g_object_ref0 (self->priv->default_id_card), _g_object_unref0 (_data4_->identity), _tmp1_);
1084 if (_data4_->identity == NULL) {
1085 gboolean _tmp2_ = FALSE;
1087 gboolean _tmp3_ = FALSE;
1090 IdCard* nai_provided;
1091 gboolean _tmp7_ = FALSE;
1092 if (request->nai != NULL) {
1093 _tmp2_ = _vala_strcmp0 (request->nai, "") != 0;
1098 if (request->service != NULL) {
1099 _tmp3_ = _vala_strcmp0 (request->service, "") != 0;
1105 nai_provided = NULL;
1107 GSList* id_collection;
1109 id_collection = self->identities_manager->id_card_list;
1110 for (id_it = id_collection; id_it != NULL; id_it = id_it->next) {
1112 id = _g_object_ref0 ((IdCard*) id_it->data);
1114 gboolean _tmp4_ = FALSE;
1116 _tmp4_ = _vala_strcmp0 (request->nai, id_card_get_nai (id)) == 0;
1122 nai_provided = (_tmp5_ = _g_object_ref0 (id), _g_object_unref0 (nai_provided), _tmp5_);
1123 main_window_add_candidate (self, id);
1124 _g_object_unref0 (id);
1130 char** srv_collection;
1131 int srv_collection_length1;
1133 srv_collection = id_card_get_services (id, &_tmp6_);
1134 srv_collection_length1 = _tmp6_;
1135 for (srv_it = 0; srv_it < _tmp6_; srv_it = srv_it + 1) {
1137 srv = g_strdup (srv_collection[srv_it]);
1139 if (_vala_strcmp0 (request->service, srv) == 0) {
1140 main_window_add_candidate (self, id);
1149 _g_object_unref0 (id);
1154 _tmp7_ = g_slist_length (self->priv->candidates) > 1;
1160 GSList* id_collection;
1162 id_collection = self->priv->candidates;
1163 for (id_it = id_collection; id_it != NULL; id_it = id_it->next) {
1165 id = _g_object_ref0 ((IdCard*) id_it->data);
1168 GSList* services_list;
1169 gboolean has_service;
1170 gint services_length1;
1171 gint _services_size_;
1177 services_list = NULL;
1178 has_service = FALSE;
1181 char** srv_collection;
1182 int srv_collection_length1;
1184 srv_collection = id_card_get_services (id, &_tmp8_);
1185 srv_collection_length1 = _tmp8_;
1186 for (srv_it = 0; srv_it < _tmp8_; srv_it = srv_it + 1) {
1188 srv = g_strdup (srv_collection[srv_it]);
1190 if (_vala_strcmp0 (srv, request->service) == 0) {
1195 services_list = g_slist_append (services_list, g_strdup (srv));
1201 __g_slist_free_g_free0 (services_list);
1202 _g_object_unref0 (id);
1205 if (g_slist_length (services_list) == 0) {
1206 char** _tmp9_ = NULL;
1208 gint _tmp10__length1;
1210 _tmp11_ = (_tmp10_ = (_tmp9_ = g_new0 (char*, 0 + 1), _tmp9_), _tmp10__length1 = 0, _tmp10_);
1211 id_card_set_services (id, _tmp11_, 0);
1212 _tmp10_ = (_vala_array_free (_tmp10_, _tmp10__length1, (GDestroyNotify) g_free), NULL);
1213 __g_slist_free_g_free0 (services_list);
1214 _g_object_unref0 (id);
1217 services = (_tmp13_ = g_new0 (char*, (_tmp12_ = g_slist_length (services_list)) + 1), services_length1 = _tmp12_, _services_size_ = services_length1, _tmp13_);
1219 GSList* srv_collection;
1221 srv_collection = services_list;
1222 for (srv_it = srv_collection; srv_it != NULL; srv_it = srv_it->next) {
1224 srv = g_strdup ((const char*) srv_it->data);
1227 services[i] = (_tmp14_ = g_strdup (srv), _g_free0 (services[i]), _tmp14_);
1234 id_card_set_services (id, _tmp15_, services_length1);
1235 services = (_vala_array_free (services, services_length1, (GDestroyNotify) g_free), NULL);
1236 __g_slist_free_g_free0 (services_list);
1237 _g_object_unref0 (id);
1242 identities_manager_store_id_cards (self->identities_manager);
1243 if (g_slist_length (self->priv->candidates) == 0) {
1245 GSList* id_collection;
1247 id_collection = self->identities_manager->id_card_list;
1248 for (id_it = id_collection; id_it != NULL; id_it = id_it->next) {
1250 id = _g_object_ref0 ((IdCard*) id_it->data);
1254 Rule* rule_collection;
1255 int rule_collection_length1;
1257 rule_collection = id_card_get_rules (id, &_tmp16_);
1258 rule_collection_length1 = _tmp16_;
1259 for (rule_it = 0; rule_it < _tmp16_; rule_it = rule_it + 1) {
1262 rule = (rule_copy (&rule_collection[rule_it], &_tmp17_), _tmp17_);
1264 if (!main_window_match_service_pattern (self, request->service, rule.pattern)) {
1265 rule_destroy (&rule);
1268 self->priv->candidates = g_slist_append (self->priv->candidates, _g_object_ref0 (id));
1269 if (_vala_strcmp0 (rule.always_confirm, "true") == 0) {
1272 rule_destroy (&rule);
1276 _g_object_unref0 (id);
1281 if (g_slist_length (self->priv->candidates) > 1) {
1282 gboolean _tmp18_ = FALSE;
1284 _tmp18_ = nai_provided != NULL;
1290 _data4_->identity = (_tmp19_ = _g_object_ref0 (nai_provided), _g_object_unref0 (_data4_->identity), _tmp19_);
1297 _data4_->identity = (_tmp20_ = _g_object_ref0 ((IdCard*) g_slist_nth_data (self->priv->candidates, (guint) 0)), _g_object_unref0 (_data4_->identity), _tmp20_);
1300 gtk_tree_model_filter_refilter (self->priv->filter);
1301 main_window_redraw_id_card_widgets (self);
1302 gtk_widget_show ((GtkWidget*) self);
1303 _g_object_unref0 (nai_provided);
1304 block4_data_unref (_data4_);
1307 _g_object_unref0 (nai_provided);
1309 g_idle_add_full (G_PRIORITY_DEFAULT_IDLE, __lambda3__gsource_func, block4_data_ref (_data4_), block4_data_unref);
1310 block4_data_unref (_data4_);
1315 static gboolean main_window_match_service_pattern (MainWindow* self, const char* service, const char* pattern) {
1316 gboolean result = FALSE;
1317 GPatternSpec* pspec;
1318 g_return_val_if_fail (self != NULL, FALSE);
1319 g_return_val_if_fail (service != NULL, FALSE);
1320 g_return_val_if_fail (pattern != NULL, FALSE);
1321 pspec = g_pattern_spec_new (pattern);
1322 result = g_pattern_match_string (pspec, service);
1323 _g_pattern_spec_free0 (pspec);
1328 void main_window_send_identity_cb (MainWindow* self, IdCard* identity) {
1329 IdentityRequest* request;
1330 gboolean reset_password;
1331 gboolean _tmp0_ = FALSE;
1333 g_return_if_fail (self != NULL);
1334 g_return_if_fail (identity != NULL);
1335 g_return_if_fail (self->request_queue->length > 0);
1336 request = (IdentityRequest*) g_queue_pop_head (self->request_queue);
1337 reset_password = FALSE;
1338 if (request->service != NULL) {
1339 _tmp0_ = _vala_strcmp0 (request->service, "") != 0;
1344 gint services_length1;
1345 gint _services_size_;
1353 services = (_tmp2_ = g_new0 (char*, (_tmp1_ + 1) + 1), services_length1 = _tmp1_ + 1, _services_size_ = services_length1, _tmp2_);
1368 if (!(i < _tmp4_)) {
1371 services[i] = (_tmp6_ = g_strdup (id_card_get_services (identity, &_tmp5_)[i]), _g_free0 (services[i]), _tmp6_);
1375 services[_tmp7_] = (_tmp9_ = g_strdup (request->service), _g_free0 (services[_tmp7_]), _tmp9_);
1377 id_card_set_services (identity, _tmp10_, services_length1);
1378 identities_manager_store_id_cards (self->identities_manager);
1379 services = (_vala_array_free (services, services_length1, (GDestroyNotify) g_free), NULL);
1381 if (id_card_get_password (identity) == NULL) {
1382 AddPasswordDialog* dialog;
1384 dialog = g_object_ref_sink (add_password_dialog_new ());
1385 _result_ = gtk_dialog_run ((GtkDialog*) dialog);
1387 case GTK_RESPONSE_OK:
1389 id_card_set_password (identity, add_password_dialog_get_password (dialog));
1390 reset_password = !add_password_dialog_get_remember (dialog);
1399 gtk_object_destroy ((GtkObject*) dialog);
1400 _g_object_unref0 (dialog);
1402 if (g_queue_is_empty (self->request_queue)) {
1403 gtk_widget_hide ((GtkWidget*) self);
1405 if (identity != NULL) {
1407 self->priv->default_id_card = (_tmp11_ = _g_object_ref0 (identity), _g_object_unref0 (self->priv->default_id_card), _tmp11_);
1409 identity_request_return_identity (request, identity);
1410 if (reset_password) {
1411 id_card_set_password (identity, NULL);
1413 self->priv->candidates = (_tmp12_ = NULL, __g_slist_free_g_object_unref0 (self->priv->candidates), _tmp12_);
1414 _g_object_unref0 (request);
1418 static void main_window_label_make_bold (MainWindow* self, GtkLabel* label) {
1419 PangoFontDescription* font_desc;
1420 g_return_if_fail (self != NULL);
1421 g_return_if_fail (label != NULL);
1422 font_desc = pango_font_description_new ();
1423 pango_font_description_set_weight (font_desc, PANGO_WEIGHT_BOLD);
1424 gtk_widget_modify_font ((GtkWidget*) label, font_desc);
1425 _pango_font_description_free0 (font_desc);
1429 static void _lambda1_ (GtkButton* remove_button, MainWindow* self) {
1430 GtkMessageDialog* dialog;
1432 g_return_if_fail (remove_button != NULL);
1433 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)))));
1434 ret = gtk_dialog_run ((GtkDialog*) dialog);
1435 gtk_widget_hide ((GtkWidget*) dialog);
1436 if (ret == GTK_RESPONSE_YES) {
1442 gint _tmp2__length1;
1445 idcard = _g_object_ref0 (id_card_widget_get_id_card (custom_vbox_get_current_idcard (self->priv->custom_vbox)));
1446 candidate = g_strdup ((const char*) g_hash_table_lookup (self->priv->service_button_map, remove_button));
1450 char** srv_collection;
1451 int srv_collection_length1;
1453 srv_collection = id_card_get_services (idcard, &_tmp0_);
1454 srv_collection_length1 = _tmp0_;
1455 for (srv_it = 0; srv_it < _tmp0_; srv_it = srv_it + 1) {
1457 srv = g_strdup (srv_collection[srv_it]);
1459 if (_vala_strcmp0 (srv, candidate) == 0) {
1463 services = g_slist_append (services, g_strdup (srv));
1468 _tmp3_ = (_tmp2_ = g_new0 (char*, (_tmp1_ = g_slist_length (services)) + 1), _tmp2__length1 = _tmp1_, _tmp2_);
1469 id_card_set_services (idcard, _tmp3_, _tmp1_);
1470 _tmp2_ = (_vala_array_free (_tmp2_, _tmp2__length1, (GDestroyNotify) g_free), NULL);
1487 if (!(j < _tmp5_)) {
1490 _tmp8_ = &id_card_get_services (idcard, &_tmp7_)[j];
1491 (*_tmp8_) = (_tmp9_ = g_strdup ((const char*) g_slist_nth_data (services, (guint) j)), _g_free0 ((*_tmp8_)), _tmp9_);
1495 children = gtk_container_get_children ((GtkContainer*) self->priv->services_internal_vbox);
1497 GList* hbox_collection;
1499 hbox_collection = children;
1500 for (hbox_it = hbox_collection; hbox_it != NULL; hbox_it = hbox_it->next) {
1502 hbox = (GtkWidget*) hbox_it->data;
1504 gtk_object_destroy ((GtkObject*) hbox);
1508 main_window_fill_services_vbox (self, idcard);
1509 id_card_widget_update_id_card_label (custom_vbox_get_current_idcard (self->priv->custom_vbox));
1510 _g_list_free0 (children);
1511 __g_slist_free_g_free0 (services);
1512 _g_free0 (candidate);
1513 _g_object_unref0 (idcard);
1515 _g_object_unref0 (dialog);
1519 static void __lambda1__gtk_button_clicked (GtkButton* _sender, gpointer self) {
1520 _lambda1_ (_sender, self);
1524 static void main_window_fill_services_vbox (MainWindow* self, IdCard* id_card) {
1528 GtkTable* services_table;
1529 g_return_if_fail (self != NULL);
1530 g_return_if_fail (id_card != NULL);
1533 services_table = g_object_ref_sink ((GtkTable*) gtk_table_new ((guint) n_columns, (guint) 2, FALSE));
1534 gtk_table_set_col_spacings (services_table, (guint) 10);
1535 gtk_table_set_row_spacings (services_table, (guint) 10);
1536 gtk_container_add ((GtkContainer*) self->priv->services_internal_vbox, (GtkWidget*) services_table);
1537 g_hash_table_remove_all (self->priv->service_button_map);
1540 char** service_collection;
1541 int service_collection_length1;
1543 service_collection = id_card_get_services (id_card, &_tmp1_);
1544 service_collection_length1 = _tmp1_;
1545 for (service_it = 0; service_it < _tmp1_; service_it = service_it + 1) {
1547 service = g_strdup (service_collection[service_it]);
1550 GtkButton* remove_button;
1551 label = g_object_ref_sink ((GtkLabel*) gtk_label_new (service));
1552 gtk_misc_set_alignment ((GtkMisc*) label, (float) 0, (float) 0.5);
1553 remove_button = g_object_ref_sink ((GtkButton*) gtk_button_new_from_stock (GTK_STOCK_REMOVE));
1554 g_hash_table_insert (self->priv->service_button_map, _g_object_ref0 (remove_button), g_strdup (service));
1555 g_signal_connect_object (remove_button, "clicked", (GCallback) __lambda1__gtk_button_clicked, self, 0);
1556 gtk_table_attach_defaults (services_table, (GtkWidget*) label, (guint) 0, (guint) 1, (guint) i, (guint) (i + 1));
1557 gtk_table_attach_defaults (services_table, (GtkWidget*) remove_button, (guint) 1, (guint) 2, (guint) i, (guint) (i + 1));
1559 _g_object_unref0 (remove_button);
1560 _g_object_unref0 (label);
1565 gtk_widget_show_all ((GtkWidget*) self->priv->services_internal_vbox);
1566 _g_object_unref0 (services_table);
1570 static void main_window_on_about_action (MainWindow* self) {
1571 gint authors_length1;
1572 gint _authors_size_;
1574 char** _tmp0_ = NULL;
1578 g_return_if_fail (self != NULL);
1579 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_);
1580 copyright = g_strdup ("Copyright 2011 JANET");
1581 license = g_strdup ("\n" \
1582 "Copyright (c) 2011, JANET(UK)\n" \
1583 "All rights reserved.\n" \
1585 "Redistribution and use in source and binary forms, with or without\n" \
1586 "modification, are permitted provided that the following conditions\n" \
1589 "1. Redistributions of source code must retain the above copyright\n" \
1590 " notice, this list of conditions and the following disclaimer.\n" \
1592 "2. Redistributions in binary form must reproduce the above copyright\n" \
1593 " notice, this list of conditions and the following disclaimer in the" \
1595 " documentation and/or other materials provided with the distribution" \
1598 "3. Neither the name of JANET(UK) nor the names of its contributors\n" \
1599 " may be used to endorse or promote products derived from this softwa" \
1601 " without specific prior written permission.\n" \
1603 "THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \\" \
1605 "AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, " \
1607 "IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PUR" \
1609 "ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS" \
1611 "FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUEN" \
1613 "DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOOD" \
1615 "OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)\n" \
1616 "HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, ST" \
1618 "LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY " \
1620 "OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF" \
1623 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);
1625 _g_free0 (copyright);
1626 authors = (_vala_array_free (authors, authors_length1, (GDestroyNotify) g_free), NULL);
1630 static void _vala_array_add1 (GtkActionEntry** array, int* length, int* size, const GtkActionEntry* value) {
1631 if ((*length) == (*size)) {
1632 *size = (*size) ? (2 * (*size)) : 4;
1633 *array = g_renew (GtkActionEntry, *array, *size);
1635 (*array)[(*length)++] = *value;
1639 static void _main_window_add_identity_manual_cb_gtk_action_callback (GtkAction* action, gpointer self) {
1640 main_window_add_identity_manual_cb (self);
1644 static void _vala_array_add2 (GtkActionEntry** array, int* length, int* size, const GtkActionEntry* value) {
1645 if ((*length) == (*size)) {
1646 *size = (*size) ? (2 * (*size)) : 4;
1647 *array = g_renew (GtkActionEntry, *array, *size);
1649 (*array)[(*length)++] = *value;
1653 static void _gtk_main_quit_gtk_action_callback (GtkAction* action, gpointer self) {
1658 static void _vala_array_add3 (GtkActionEntry** array, int* length, int* size, const GtkActionEntry* value) {
1659 if ((*length) == (*size)) {
1660 *size = (*size) ? (2 * (*size)) : 4;
1661 *array = g_renew (GtkActionEntry, *array, *size);
1663 (*array)[(*length)++] = *value;
1667 static void _vala_array_add4 (GtkActionEntry** array, int* length, int* size, const GtkActionEntry* value) {
1668 if ((*length) == (*size)) {
1669 *size = (*size) ? (2 * (*size)) : 4;
1670 *array = g_renew (GtkActionEntry, *array, *size);
1672 (*array)[(*length)++] = *value;
1676 static void _main_window_on_about_action_gtk_action_callback (GtkAction* action, gpointer self) {
1677 main_window_on_about_action (self);
1681 static void _vala_array_add5 (GtkActionEntry** array, int* length, int* size, const GtkActionEntry* value) {
1682 if ((*length) == (*size)) {
1683 *size = (*size) ? (2 * (*size)) : 4;
1684 *array = g_renew (GtkActionEntry, *array, *size);
1686 (*array)[(*length)++] = *value;
1690 static GtkActionEntry* main_window_create_actions (MainWindow* self, int* result_length1) {
1691 GtkActionEntry* result = NULL;
1692 gint actions_length1;
1693 gint _actions_size_;
1694 GtkActionEntry* _tmp0_;
1695 GtkActionEntry* actions;
1696 GtkActionEntry _tmp1_ = {0};
1697 GtkActionEntry filemenu;
1698 GtkActionEntry _tmp2_ = {0};
1700 GtkActionEntry _tmp3_ = {0};
1701 GtkActionEntry quit;
1702 GtkActionEntry _tmp4_ = {0};
1703 GtkActionEntry helpmenu;
1704 GtkActionEntry _tmp5_ = {0};
1705 GtkActionEntry about;
1706 GtkActionEntry* _tmp6_;
1707 g_return_val_if_fail (self != NULL, NULL);
1708 actions = (_tmp0_ = g_new0 (GtkActionEntry, 0), actions_length1 = 0, _actions_size_ = actions_length1, _tmp0_);
1709 filemenu = (_tmp1_.name = "FileMenuAction", _tmp1_.stock_id = NULL, _tmp1_.label = N_ ("_File"), _tmp1_.accelerator = NULL, _tmp1_.tooltip = NULL, _tmp1_.callback = (GCallback) NULL, _tmp1_);
1710 _vala_array_add1 (&actions, &actions_length1, &_actions_size_, &filemenu);
1711 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_manual_cb_gtk_action_callback, _tmp2_);
1712 _vala_array_add2 (&actions, &actions_length1, &_actions_size_, &add);
1713 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_);
1714 _vala_array_add3 (&actions, &actions_length1, &_actions_size_, &quit);
1715 helpmenu = (_tmp4_.name = "HelpMenuAction", _tmp4_.stock_id = NULL, _tmp4_.label = N_ ("_Help"), _tmp4_.accelerator = NULL, _tmp4_.tooltip = NULL, _tmp4_.callback = (GCallback) NULL, _tmp4_);
1716 _vala_array_add4 (&actions, &actions_length1, &_actions_size_, &helpmenu);
1717 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_);
1718 _vala_array_add5 (&actions, &actions_length1, &_actions_size_, &about);
1719 result = (_tmp6_ = actions, *result_length1 = actions_length1, _tmp6_);
1721 actions = (g_free (actions), NULL);
1725 static void main_window_create_ui_manager (MainWindow* self) {
1726 GtkActionGroup* action_group;
1728 GtkActionEntry* _tmp1_;
1729 gint _tmp1__length1;
1730 GtkActionEntry* _tmp2_;
1731 GError * _inner_error_ = NULL;
1732 g_return_if_fail (self != NULL);
1733 action_group = gtk_action_group_new ("GeneralActionGroup");
1734 _tmp2_ = (_tmp1_ = main_window_create_actions (self, &_tmp0_), _tmp1__length1 = _tmp0_, _tmp1_);
1735 gtk_action_group_add_actions (action_group, _tmp2_, _tmp0_, self);
1736 _tmp1_ = (g_free (_tmp1_), NULL);
1737 gtk_ui_manager_insert_action_group (self->priv->ui_manager, action_group, 0);
1739 gtk_ui_manager_add_ui_from_string (self->priv->ui_manager, MAIN_WINDOW_layout, (gssize) (-1), &_inner_error_);
1740 if (_inner_error_ != NULL) {
1741 goto __catch3_g_error;
1749 _inner_error_ = NULL;
1751 fprintf (stderr, "%s\n", e->message);
1756 if (_inner_error_ != NULL) {
1757 _g_object_unref0 (action_group);
1758 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);
1759 g_clear_error (&_inner_error_);
1762 gtk_ui_manager_ensure_update (self->priv->ui_manager);
1763 _g_object_unref0 (action_group);
1767 static void _main_window_search_entry_icon_press_cb_gtk_entry_icon_press (GtkEntry* _sender, GtkEntryIconPosition p0, GdkEvent* p1, gpointer self) {
1768 main_window_search_entry_icon_press_cb (self, p0, p1);
1772 static void _main_window_search_entry_text_changed_cb_g_object_notify (GObject* _sender, GParamSpec* pspec, gpointer self) {
1773 main_window_search_entry_text_changed_cb (self);
1777 static gboolean _main_window_search_entry_key_press_event_cb_gtk_widget_key_press_event (GtkWidget* _sender, GdkEventKey* event, gpointer self) {
1779 result = main_window_search_entry_key_press_event_cb (self, event);
1784 static void main_window_build_ui (MainWindow* self) {
1789 GtkViewport* viewport;
1790 GtkScrolledWindow* scroll;
1792 GtkLabel* login_vbox_title;
1793 GtkLabel* username_label;
1795 GtkLabel* password_label;
1797 GtkCheckButton* remember_checkbutton;
1798 GtkTable* login_table;
1799 GtkAlignment* login_vbox_alignment;
1800 GtkVBox* login_vbox;
1801 GtkLabel* services_vbox_title;
1802 GtkAlignment* services_vbox_alignment;
1804 GtkVBox* services_vbox;
1809 g_return_if_fail (self != NULL);
1810 main_window_create_ui_manager (self);
1811 self->priv->search_entry = (_tmp0_ = g_object_ref_sink ((GtkEntry*) gtk_entry_new ()), _g_object_unref0 (self->priv->search_entry), _tmp0_);
1812 main_window_set_atk_name_description (self, (GtkWidget*) self->priv->search_entry, _ ("Search entry"), _ ("Search for a specific ID Card"));
1813 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));
1814 _g_object_unref0 (_tmp1_);
1815 gtk_entry_set_icon_tooltip_text (self->priv->search_entry, GTK_ENTRY_ICON_PRIMARY, _ ("Search identity or service"));
1816 gtk_entry_set_icon_sensitive (self->priv->search_entry, GTK_ENTRY_ICON_PRIMARY, FALSE);
1817 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));
1818 _g_object_unref0 (_tmp2_);
1819 gtk_entry_set_icon_tooltip_text (self->priv->search_entry, GTK_ENTRY_ICON_SECONDARY, _ ("Clear the current search"));
1820 gtk_entry_set_icon_sensitive (self->priv->search_entry, GTK_ENTRY_ICON_SECONDARY, FALSE);
1821 g_signal_connect_object (self->priv->search_entry, "icon-press", (GCallback) _main_window_search_entry_icon_press_cb_gtk_entry_icon_press, self, 0);
1822 g_signal_connect_object ((GObject*) self->priv->search_entry, "notify::text", (GCallback) _main_window_search_entry_text_changed_cb_g_object_notify, self, 0);
1823 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);
1824 self->priv->custom_vbox = (_tmp3_ = g_object_ref_sink (custom_vbox_new (self, FALSE, 6)), _g_object_unref0 (self->priv->custom_vbox), _tmp3_);
1825 viewport = g_object_ref_sink ((GtkViewport*) gtk_viewport_new (NULL, NULL));
1826 gtk_container_set_border_width ((GtkContainer*) viewport, (guint) 6);
1827 gtk_viewport_set_shadow_type (viewport, GTK_SHADOW_NONE);
1828 gtk_container_add ((GtkContainer*) viewport, (GtkWidget*) self->priv->custom_vbox);
1829 scroll = g_object_ref_sink ((GtkScrolledWindow*) gtk_scrolled_window_new (NULL, NULL));
1830 gtk_scrolled_window_set_policy (scroll, GTK_POLICY_NEVER, GTK_POLICY_AUTOMATIC);
1831 gtk_scrolled_window_set_shadow_type (scroll, GTK_SHADOW_IN);
1832 gtk_scrolled_window_add_with_viewport (scroll, (GtkWidget*) viewport);
1833 vbox_left = g_object_ref_sink ((GtkVBox*) gtk_vbox_new (FALSE, 0));
1834 gtk_box_pack_start ((GtkBox*) vbox_left, (GtkWidget*) self->priv->search_entry, FALSE, FALSE, (guint) 6);
1835 gtk_box_pack_start ((GtkBox*) vbox_left, (GtkWidget*) scroll, TRUE, TRUE, (guint) 0);
1836 gtk_widget_set_size_request ((GtkWidget*) vbox_left, MAIN_WINDOW_WINDOW_WIDTH, 0);
1837 login_vbox_title = g_object_ref_sink ((GtkLabel*) gtk_label_new (_ ("Login: ")));
1838 main_window_label_make_bold (self, login_vbox_title);
1839 gtk_misc_set_alignment ((GtkMisc*) login_vbox_title, (float) 0, (float) 0.5);
1840 username_label = g_object_ref_sink ((GtkLabel*) gtk_label_new (_ ("Username:")));
1841 gtk_misc_set_alignment ((GtkMisc*) username_label, (float) 1, (float) 0.5);
1842 self->priv->username_entry = (_tmp4_ = g_object_ref_sink ((GtkEntry*) gtk_entry_new ()), _g_object_unref0 (self->priv->username_entry), _tmp4_);
1843 password_label = g_object_ref_sink ((GtkLabel*) gtk_label_new (_ ("Password:")));
1844 gtk_misc_set_alignment ((GtkMisc*) password_label, (float) 1, (float) 0.5);
1845 self->priv->password_entry = (_tmp5_ = g_object_ref_sink ((GtkEntry*) gtk_entry_new ()), _g_object_unref0 (self->priv->password_entry), _tmp5_);
1846 gtk_entry_set_invisible_char (self->priv->password_entry, (gunichar) '*');
1847 gtk_entry_set_visibility (self->priv->password_entry, FALSE);
1848 remember_checkbutton = g_object_ref_sink ((GtkCheckButton*) gtk_check_button_new_with_label (_ ("Remember password")));
1849 login_table = g_object_ref_sink ((GtkTable*) gtk_table_new ((guint) 3, (guint) 3, FALSE));
1850 gtk_table_set_col_spacings (login_table, (guint) 10);
1851 gtk_table_set_row_spacings (login_table, (guint) 10);
1852 gtk_table_attach_defaults (login_table, (GtkWidget*) username_label, (guint) 0, (guint) 1, (guint) 0, (guint) 1);
1853 gtk_table_attach_defaults (login_table, (GtkWidget*) self->priv->username_entry, (guint) 1, (guint) 2, (guint) 0, (guint) 1);
1854 gtk_table_attach_defaults (login_table, (GtkWidget*) password_label, (guint) 0, (guint) 1, (guint) 1, (guint) 2);
1855 gtk_table_attach_defaults (login_table, (GtkWidget*) self->priv->password_entry, (guint) 1, (guint) 2, (guint) 1, (guint) 2);
1856 gtk_table_attach_defaults (login_table, (GtkWidget*) remember_checkbutton, (guint) 1, (guint) 2, (guint) 2, (guint) 3);
1857 login_vbox_alignment = g_object_ref_sink ((GtkAlignment*) gtk_alignment_new ((float) 0, (float) 0, (float) 0, (float) 0));
1858 gtk_alignment_set_padding (login_vbox_alignment, (guint) 0, (guint) 0, (guint) 12, (guint) 0);
1859 gtk_container_add ((GtkContainer*) login_vbox_alignment, (GtkWidget*) login_table);
1860 login_vbox = g_object_ref_sink ((GtkVBox*) gtk_vbox_new (FALSE, 6));
1861 gtk_box_pack_start ((GtkBox*) login_vbox, (GtkWidget*) login_vbox_title, FALSE, TRUE, (guint) 0);
1862 gtk_box_pack_start ((GtkBox*) login_vbox, (GtkWidget*) login_vbox_alignment, FALSE, TRUE, (guint) 0);
1863 services_vbox_title = g_object_ref_sink ((GtkLabel*) gtk_label_new (_ ("Services:")));
1864 main_window_label_make_bold (self, services_vbox_title);
1865 gtk_misc_set_alignment ((GtkMisc*) services_vbox_title, (float) 0, (float) 0.5);
1866 services_vbox_alignment = g_object_ref_sink ((GtkAlignment*) gtk_alignment_new ((float) 0, (float) 0, (float) 0, (float) 0));
1867 gtk_alignment_set_padding (services_vbox_alignment, (guint) 0, (guint) 0, (guint) 12, (guint) 0);
1868 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_);
1869 gtk_container_add ((GtkContainer*) services_vbox_alignment, (GtkWidget*) self->priv->services_internal_vbox);
1870 services_vbox = g_object_ref_sink ((GtkVBox*) gtk_vbox_new (FALSE, 6));
1871 gtk_box_pack_start ((GtkBox*) services_vbox, (GtkWidget*) services_vbox_title, FALSE, TRUE, (guint) 0);
1872 gtk_box_pack_start ((GtkBox*) services_vbox, (GtkWidget*) services_vbox_alignment, FALSE, TRUE, (guint) 0);
1873 self->priv->vbox_right = (_tmp7_ = g_object_ref_sink ((GtkVBox*) gtk_vbox_new (FALSE, 18)), _g_object_unref0 (self->priv->vbox_right), _tmp7_);
1874 gtk_box_pack_start ((GtkBox*) self->priv->vbox_right, (GtkWidget*) login_vbox, FALSE, TRUE, (guint) 0);
1875 gtk_box_pack_start ((GtkBox*) self->priv->vbox_right, (GtkWidget*) services_vbox, FALSE, TRUE, (guint) 0);
1876 hbox = g_object_ref_sink ((GtkHBox*) gtk_hbox_new (FALSE, 12));
1877 gtk_box_pack_start ((GtkBox*) hbox, (GtkWidget*) vbox_left, TRUE, TRUE, (guint) 0);
1878 gtk_box_pack_start ((GtkBox*) hbox, (GtkWidget*) self->priv->vbox_right, FALSE, FALSE, (guint) 0);
1879 main_vbox = g_object_ref_sink ((GtkVBox*) gtk_vbox_new (FALSE, 0));
1880 gtk_container_set_border_width ((GtkContainer*) main_vbox, (guint) 12);
1881 menubar = _g_object_ref0 (gtk_ui_manager_get_widget (self->priv->ui_manager, "/MenuBar"));
1882 gtk_box_pack_start ((GtkBox*) main_vbox, menubar, FALSE, FALSE, (guint) 0);
1883 gtk_box_pack_start ((GtkBox*) main_vbox, (GtkWidget*) hbox, TRUE, TRUE, (guint) 0);
1884 gtk_container_add ((GtkContainer*) self, (GtkWidget*) main_vbox);
1885 gtk_widget_show_all ((GtkWidget*) main_vbox);
1886 gtk_widget_hide ((GtkWidget*) self->priv->vbox_right);
1887 _g_object_unref0 (menubar);
1888 _g_object_unref0 (main_vbox);
1889 _g_object_unref0 (hbox);
1890 _g_object_unref0 (services_vbox);
1891 _g_object_unref0 (services_vbox_alignment);
1892 _g_object_unref0 (services_vbox_title);
1893 _g_object_unref0 (login_vbox);
1894 _g_object_unref0 (login_vbox_alignment);
1895 _g_object_unref0 (login_table);
1896 _g_object_unref0 (remember_checkbutton);
1897 _g_object_unref0 (password_label);
1898 _g_object_unref0 (username_label);
1899 _g_object_unref0 (login_vbox_title);
1900 _g_object_unref0 (vbox_left);
1901 _g_object_unref0 (scroll);
1902 _g_object_unref0 (viewport);
1906 static void main_window_set_atk_name_description (MainWindow* self, GtkWidget* widget, const char* name, const char* description) {
1907 AtkObject* atk_widget;
1908 g_return_if_fail (self != NULL);
1909 g_return_if_fail (widget != NULL);
1910 g_return_if_fail (name != NULL);
1911 g_return_if_fail (description != NULL);
1912 atk_widget = _g_object_ref0 (gtk_widget_get_accessible (widget));
1913 atk_object_set_name (atk_widget, name);
1914 atk_object_set_description (atk_widget, description);
1915 _g_object_unref0 (atk_widget);
1919 static void _gtk_main_quit_gtk_object_destroy (GtkObject* _sender, gpointer self) {
1924 static void main_window_connect_signals (MainWindow* self) {
1925 g_return_if_fail (self != NULL);
1926 g_signal_connect ((GtkObject*) self, "destroy", (GCallback) _gtk_main_quit_gtk_object_destroy, NULL);
1930 static guint _dynamic_request_name0 (DBusGProxy* self, const char* param1, guint param2, GError** error) {
1932 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);
1940 static void _vala_dbus_register_object (DBusConnection* connection, const char* path, void* object) {
1941 const _DBusObjectVTable * vtable;
1942 vtable = g_type_get_qdata (G_TYPE_FROM_INSTANCE (object), g_quark_from_static_string ("DBusObjectVTable"));
1944 vtable->register_object (connection, path, object);
1946 g_warning ("Object does not implement any D-Bus interface");
1951 static void _vala_dbus_unregister_object (gpointer connection, GObject* object) {
1953 path = g_object_steal_data ((GObject*) object, "dbus_object_path");
1954 dbus_connection_unregister_object_path (connection, path);
1959 static void main_window_init_ipc_server (MainWindow* self) {
1960 GError * _inner_error_ = NULL;
1961 g_return_if_fail (self != NULL);
1963 DBusGConnection* conn;
1966 MoonshotServer* _tmp0_;
1967 conn = dbus_g_bus_get (DBUS_BUS_SESSION, &_inner_error_);
1968 if (_inner_error_ != NULL) {
1969 if (_inner_error_->domain == DBUS_GERROR) {
1970 goto __catch4_dbus_gerror;
1972 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);
1973 g_clear_error (&_inner_error_);
1976 bus = dbus_g_proxy_new_for_name (conn, "org.freedesktop.DBus", "/org/freedesktop/DBus", "org.freedesktop.DBus");
1977 reply = _dynamic_request_name0 (bus, "org.janet.Moonshot", (guint) 0, &_inner_error_);
1978 if (_inner_error_ != NULL) {
1979 _g_object_unref0 (bus);
1980 _dbus_g_connection_unref0 (conn);
1981 if (_inner_error_->domain == DBUS_GERROR) {
1982 goto __catch4_dbus_gerror;
1986 g_assert (reply == DBUS_REQUEST_NAME_REPLY_PRIMARY_OWNER);
1987 self->priv->ipc_server = (_tmp0_ = moonshot_server_new ((GtkWindow*) self), _g_object_unref0 (self->priv->ipc_server), _tmp0_);
1988 _vala_dbus_register_object (dbus_g_connection_get_connection (conn), "/org/janet/moonshot", (GObject*) self->priv->ipc_server);
1989 _g_object_unref0 (bus);
1990 _dbus_g_connection_unref0 (conn);
1993 __catch4_dbus_gerror:
1997 _inner_error_ = NULL;
1999 fprintf (stderr, "%s\n", e->message);
2004 if (_inner_error_ != NULL) {
2005 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);
2006 g_clear_error (&_inner_error_);
2012 gint main_window_main (char** args, int args_length1) {
2015 gtk_init (&args_length1, &args);
2016 bindtextdomain (GETTEXT_PACKAGE, LOCALEDIR);
2017 bind_textdomain_codeset (GETTEXT_PACKAGE, "UTF-8");
2018 textdomain (GETTEXT_PACKAGE);
2019 window = g_object_ref_sink (main_window_new ());
2020 gtk_widget_show ((GtkWidget*) window);
2023 _g_object_unref0 (window);
2028 int main (int argc, char ** argv) {
2030 return main_window_main (argv, argc);
2034 static void main_window_class_init (MainWindowClass * klass) {
2035 main_window_parent_class = g_type_class_peek_parent (klass);
2036 g_type_class_add_private (klass, sizeof (MainWindowPrivate));
2037 G_OBJECT_CLASS (klass)->finalize = main_window_finalize;
2041 static void main_window_instance_init (MainWindow * self) {
2042 self->priv = MAIN_WINDOW_GET_PRIVATE (self);
2043 self->priv->ui_manager = gtk_ui_manager_new ();
2047 static void main_window_finalize (GObject* obj) {
2049 self = MAIN_WINDOW (obj);
2050 _g_object_unref0 (self->priv->ui_manager);
2051 _g_object_unref0 (self->priv->search_entry);
2052 _g_object_unref0 (self->priv->vbox_right);
2053 _g_object_unref0 (self->priv->custom_vbox);
2054 _g_object_unref0 (self->priv->services_internal_vbox);
2055 _g_object_unref0 (self->priv->username_entry);
2056 _g_object_unref0 (self->priv->password_entry);
2057 _g_object_unref0 (self->priv->listmodel);
2058 _g_object_unref0 (self->priv->filter);
2059 _g_object_unref0 (self->identities_manager);
2060 __g_slist_free_g_object_unref0 (self->priv->candidates);
2061 _g_object_unref0 (self->priv->ipc_server);
2062 _g_object_unref0 (self->priv->default_id_card);
2063 _g_queue_free0 (self->request_queue);
2064 _g_hash_table_unref0 (self->priv->service_button_map);
2065 G_OBJECT_CLASS (main_window_parent_class)->finalize (obj);
2069 GType main_window_get_type (void) {
2070 static volatile gsize main_window_type_id__volatile = 0;
2071 if (g_once_init_enter (&main_window_type_id__volatile)) {
2072 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 };
2073 GType main_window_type_id;
2074 main_window_type_id = g_type_register_static (GTK_TYPE_WINDOW, "MainWindow", &g_define_type_info, 0);
2075 g_once_init_leave (&main_window_type_id__volatile, main_window_type_id);
2077 return main_window_type_id__volatile;
2081 static void _vala_array_destroy (gpointer array, gint array_length, GDestroyNotify destroy_func) {
2082 if ((array != NULL) && (destroy_func != NULL)) {
2084 for (i = 0; i < array_length; i = i + 1) {
2085 if (((gpointer*) array)[i] != NULL) {
2086 destroy_func (((gpointer*) array)[i]);
2093 static void _vala_array_free (gpointer array, gint array_length, GDestroyNotify destroy_func) {
2094 _vala_array_destroy (array, array_length, destroy_func);
2099 static gint _vala_array_length (gpointer array) {
2103 while (((gpointer*) array)[length]) {
2111 static int _vala_strcmp0 (const char * str1, const char * str2) {
2113 return -(str1 != str2);
2116 return str1 != str2;
2118 return strcmp (str1, str2);