diff options
-rw-r--r-- | src/libnma/libnma.ver | 8 | ||||
-rw-r--r-- | src/libnma/nma-vpn-password-dialog.c | 228 | ||||
-rw-r--r-- | src/libnma/nma-vpn-password-dialog.h | 25 | ||||
-rw-r--r-- | src/libnma/nma-vpn-password-dialog.ui | 151 |
4 files changed, 262 insertions, 150 deletions
diff --git a/src/libnma/libnma.ver b/src/libnma/libnma.ver index 2f6a1b64..ca7f964a 100644 --- a/src/libnma/libnma.ver +++ b/src/libnma/libnma.ver @@ -99,3 +99,11 @@ global: libnma_1_8_12 { nma_mobile_wizard_get_type; } libnma_1_8_0; + +libnma_1_10_0 { + nma_vpn_password_dialog_field_focus; + nma_vpn_password_dialog_field_get_text; + nma_vpn_password_dialog_field_set_label; + nma_vpn_password_dialog_field_set_text; + nma_vpn_password_dialog_field_set_visible; +} libnma_1_8_12; diff --git a/src/libnma/nma-vpn-password-dialog.c b/src/libnma/nma-vpn-password-dialog.c index 7ff13e66..143347db 100644 --- a/src/libnma/nma-vpn-password-dialog.c +++ b/src/libnma/nma-vpn-password-dialog.c @@ -29,12 +29,9 @@ typedef struct { GtkWidget *message_label; - GtkWidget *password_label; - GtkWidget *password_label_secondary; - GtkWidget *password_label_tertiary; - GtkWidget *password_entry; - GtkWidget *password_entry_secondary; - GtkWidget *password_entry_tertiary; + GtkWidget *field_label[NMA_VPN_PASSWORD_DIALOG_NUM_FIELDS]; + GtkWidget *field_entry[NMA_VPN_PASSWORD_DIALOG_NUM_FIELDS]; + gboolean is_password[NMA_VPN_PASSWORD_DIALOG_NUM_FIELDS]; GtkWidget *show_passwords_checkbox; } NMAVpnPasswordDialogPrivate; @@ -60,30 +57,41 @@ show_passwords_toggled_cb (GtkWidget *widget, gpointer user_data) NMAVpnPasswordDialog *dialog = NMA_VPN_PASSWORD_DIALOG (user_data); NMAVpnPasswordDialogPrivate *priv = NMA_VPN_PASSWORD_DIALOG_GET_PRIVATE (dialog); gboolean visible; + guint i; visible = gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (widget)); - gtk_entry_set_visibility (GTK_ENTRY (priv->password_entry), visible); - gtk_entry_set_visibility (GTK_ENTRY (priv->password_entry_secondary), visible); - gtk_entry_set_visibility (GTK_ENTRY (priv->password_entry_tertiary), visible); + for (i = 0; i < NMA_VPN_PASSWORD_DIALOG_NUM_FIELDS; i++) { + if (priv->is_password[i]) + gtk_entry_set_visibility (GTK_ENTRY (priv->field_entry[i]), visible); + } } static void nma_vpn_password_dialog_class_init (NMAVpnPasswordDialogClass *klass) { GtkWidgetClass *widget_class = GTK_WIDGET_CLASS (klass); + char name[256]; + guint i; g_type_ensure (NM_TYPE_DEVICE); gtk_widget_class_set_template_from_resource (widget_class, "/org/freedesktop/network-manager-applet/nma-vpn-password-dialog.ui"); gtk_widget_class_bind_template_child_private (widget_class, NMAVpnPasswordDialog, message_label); - gtk_widget_class_bind_template_child_private (widget_class, NMAVpnPasswordDialog, password_label); - gtk_widget_class_bind_template_child_private (widget_class, NMAVpnPasswordDialog, password_label_secondary); - gtk_widget_class_bind_template_child_private (widget_class, NMAVpnPasswordDialog, password_label_tertiary); - gtk_widget_class_bind_template_child_private (widget_class, NMAVpnPasswordDialog, password_entry); - gtk_widget_class_bind_template_child_private (widget_class, NMAVpnPasswordDialog, password_entry_secondary); - gtk_widget_class_bind_template_child_private (widget_class, NMAVpnPasswordDialog, password_entry_tertiary); + for (i = 0; i < NMA_VPN_PASSWORD_DIALOG_NUM_FIELDS; i++) { + nm_sprintf_buf (name, "field_label_%u", i); + gtk_widget_class_bind_template_child_full (widget_class, + name, + FALSE, + G_PRIVATE_OFFSET (NMAVpnPasswordDialog, field_label[i])); + nm_sprintf_buf (name, "field_entry_%u", i); + gtk_widget_class_bind_template_child_full (widget_class, + name, + FALSE, + G_PRIVATE_OFFSET (NMAVpnPasswordDialog, field_entry[i])); + } + gtk_widget_class_bind_template_child_private (widget_class, NMAVpnPasswordDialog, show_passwords_checkbox); gtk_widget_class_bind_template_callback (widget_class, dialog_close_callback); @@ -104,13 +112,14 @@ dialog_show_callback (GtkWidget *widget, gpointer callback_data) { NMAVpnPasswordDialog *dialog = NMA_VPN_PASSWORD_DIALOG (callback_data); NMAVpnPasswordDialogPrivate *priv = NMA_VPN_PASSWORD_DIALOG_GET_PRIVATE (dialog); + guint i; - if (gtk_widget_get_visible (priv->password_entry)) - gtk_widget_grab_focus (priv->password_entry); - else if (gtk_widget_get_visible (priv->password_entry_secondary)) - gtk_widget_grab_focus (priv->password_entry_secondary); - else if (gtk_widget_get_visible (priv->password_entry_tertiary)) - gtk_widget_grab_focus (priv->password_entry_tertiary); + for (i = 0; i < NMA_VPN_PASSWORD_DIALOG_NUM_FIELDS; i++) { + if (gtk_widget_get_visible (priv->field_entry[i])) { + gtk_widget_grab_focus (priv->field_entry[i]); + break; + } + } } static void @@ -158,192 +167,181 @@ nma_vpn_password_dialog_run_and_block (NMAVpnPasswordDialog *dialog) } void -nma_vpn_password_dialog_set_password (NMAVpnPasswordDialog *dialog, - const char *password) +nma_vpn_password_dialog_field_set_visible (NMAVpnPasswordDialog *dialog, + guint i, + gboolean visible, + gboolean is_password) { NMAVpnPasswordDialogPrivate *priv; + gboolean show_checkbox = FALSE; g_return_if_fail (NMA_VPN_IS_PASSWORD_DIALOG (dialog)); + g_return_if_fail (i < NMA_VPN_PASSWORD_DIALOG_NUM_FIELDS); priv = NMA_VPN_PASSWORD_DIALOG_GET_PRIVATE (dialog); - gtk_entry_set_text (GTK_ENTRY (priv->password_entry), password ? password : ""); + priv->is_password[i] = is_password; + gtk_widget_set_visible (priv->field_label[i], visible); + gtk_widget_set_visible (priv->field_entry[i], visible); + gtk_entry_set_visibility (GTK_ENTRY (priv->field_entry[i]), !is_password); + + for (i = 0; i < NMA_VPN_PASSWORD_DIALOG_NUM_FIELDS; i++) { + if ( gtk_widget_get_visible (priv->field_label[i]) + && priv->is_password[i]) + show_checkbox = TRUE; + } + + gtk_widget_set_visible (priv->show_passwords_checkbox, show_checkbox); } void -nma_vpn_password_dialog_set_password_secondary (NMAVpnPasswordDialog *dialog, - const char *password_secondary) +nma_vpn_password_dialog_field_focus (NMAVpnPasswordDialog *dialog, + guint i) { NMAVpnPasswordDialogPrivate *priv; g_return_if_fail (NMA_VPN_IS_PASSWORD_DIALOG (dialog)); + g_return_if_fail (i < NMA_VPN_PASSWORD_DIALOG_NUM_FIELDS); priv = NMA_VPN_PASSWORD_DIALOG_GET_PRIVATE (dialog); - gtk_entry_set_text (GTK_ENTRY (priv->password_entry_secondary), - password_secondary ? password_secondary : ""); + if (gtk_widget_get_visible (priv->field_entry[i])) + gtk_widget_grab_focus (priv->field_entry[i]); + } void -nma_vpn_password_dialog_set_password_ternary (NMAVpnPasswordDialog *dialog, - const char *password_tertiary) +nma_vpn_password_dialog_field_set_text (NMAVpnPasswordDialog *dialog, + guint i, + const char *text) { NMAVpnPasswordDialogPrivate *priv; g_return_if_fail (NMA_VPN_IS_PASSWORD_DIALOG (dialog)); + g_return_if_fail (i < NMA_VPN_PASSWORD_DIALOG_NUM_FIELDS); priv = NMA_VPN_PASSWORD_DIALOG_GET_PRIVATE (dialog); - gtk_entry_set_text (GTK_ENTRY (priv->password_entry_tertiary), - password_tertiary ? password_tertiary : ""); + gtk_entry_set_text (GTK_ENTRY (priv->field_entry[i]), text ?: ""); } void -nma_vpn_password_dialog_set_show_password (NMAVpnPasswordDialog *dialog, gboolean show) +nma_vpn_password_dialog_field_set_label (NMAVpnPasswordDialog *dialog, + guint i, + const char *label) { NMAVpnPasswordDialogPrivate *priv; - g_return_if_fail (dialog != NULL); g_return_if_fail (NMA_VPN_IS_PASSWORD_DIALOG (dialog)); + g_return_if_fail (i < NMA_VPN_PASSWORD_DIALOG_NUM_FIELDS); priv = NMA_VPN_PASSWORD_DIALOG_GET_PRIVATE (dialog); - gtk_widget_set_visible (priv->password_label, show); - gtk_widget_set_visible (priv->password_entry, show); + gtk_label_set_text_with_mnemonic (GTK_LABEL (priv->field_label[i]), label); + } -void -nma_vpn_password_dialog_set_show_password_secondary (NMAVpnPasswordDialog *dialog, - gboolean show) +const char * +nma_vpn_password_dialog_field_get_text (NMAVpnPasswordDialog *dialog, guint i) { NMAVpnPasswordDialogPrivate *priv; - g_return_if_fail (dialog != NULL); - g_return_if_fail (NMA_VPN_IS_PASSWORD_DIALOG (dialog)); + g_return_val_if_fail (NMA_VPN_IS_PASSWORD_DIALOG (dialog), NULL); + g_return_val_if_fail (i < NMA_VPN_PASSWORD_DIALOG_NUM_FIELDS, NULL); priv = NMA_VPN_PASSWORD_DIALOG_GET_PRIVATE (dialog); - gtk_widget_set_visible (priv->password_label_secondary, show); - gtk_widget_set_visible (priv->password_entry_secondary, show); + return gtk_entry_get_text (GTK_ENTRY (priv->field_entry[i])); } void -nma_vpn_password_dialog_set_show_password_ternary (NMAVpnPasswordDialog *dialog, - gboolean show) +nma_vpn_password_dialog_set_password (NMAVpnPasswordDialog *dialog, + const char *password) { - NMAVpnPasswordDialogPrivate *priv; - g_return_if_fail (dialog != NULL); - g_return_if_fail (NMA_VPN_IS_PASSWORD_DIALOG (dialog)); + nma_vpn_password_dialog_field_set_text (dialog, 0, password); +} - priv = NMA_VPN_PASSWORD_DIALOG_GET_PRIVATE (dialog); - gtk_widget_set_visible (priv->password_label_tertiary, show); - gtk_widget_set_visible (priv->password_entry_tertiary, show); +void +nma_vpn_password_dialog_set_password_secondary (NMAVpnPasswordDialog *dialog, + const char *password_secondary) +{ + nma_vpn_password_dialog_field_set_text (dialog, 1, password_secondary); } void -nma_vpn_password_dialog_focus_password (NMAVpnPasswordDialog *dialog) +nma_vpn_password_dialog_set_password_ternary (NMAVpnPasswordDialog *dialog, + const char *password_tertiary) { - NMAVpnPasswordDialogPrivate *priv; + nma_vpn_password_dialog_field_set_text (dialog, 2, password_tertiary); +} - g_return_if_fail (dialog != NULL); - g_return_if_fail (NMA_VPN_IS_PASSWORD_DIALOG (dialog)); +void +nma_vpn_password_dialog_set_show_password (NMAVpnPasswordDialog *dialog, gboolean show) +{ + nma_vpn_password_dialog_field_set_visible (dialog, 0, show, TRUE); +} - priv = NMA_VPN_PASSWORD_DIALOG_GET_PRIVATE (dialog); - if (gtk_widget_get_visible (priv->password_entry)) - gtk_widget_grab_focus (priv->password_entry); +void +nma_vpn_password_dialog_set_show_password_secondary (NMAVpnPasswordDialog *dialog, + gboolean show) +{ + nma_vpn_password_dialog_field_set_visible (dialog, 1, show, TRUE); } void -nma_vpn_password_dialog_focus_password_secondary (NMAVpnPasswordDialog *dialog) +nma_vpn_password_dialog_set_show_password_ternary (NMAVpnPasswordDialog *dialog, + gboolean show) { - NMAVpnPasswordDialogPrivate *priv; + nma_vpn_password_dialog_field_set_visible (dialog, 2, show, TRUE); +} - g_return_if_fail (dialog != NULL); - g_return_if_fail (NMA_VPN_IS_PASSWORD_DIALOG (dialog)); +void +nma_vpn_password_dialog_focus_password (NMAVpnPasswordDialog *dialog) +{ + nma_vpn_password_dialog_field_focus (dialog, 0); +} - priv = NMA_VPN_PASSWORD_DIALOG_GET_PRIVATE (dialog); - if (gtk_widget_get_visible (priv->password_entry_secondary)) - gtk_widget_grab_focus (priv->password_entry_secondary); +void +nma_vpn_password_dialog_focus_password_secondary (NMAVpnPasswordDialog *dialog) +{ + nma_vpn_password_dialog_field_focus (dialog, 1); } void nma_vpn_password_dialog_focus_password_ternary (NMAVpnPasswordDialog *dialog) { - NMAVpnPasswordDialogPrivate *priv; - - g_return_if_fail (dialog != NULL); - g_return_if_fail (NMA_VPN_IS_PASSWORD_DIALOG (dialog)); - - priv = NMA_VPN_PASSWORD_DIALOG_GET_PRIVATE (dialog); - if (gtk_widget_get_visible (priv->password_entry_tertiary)) - gtk_widget_grab_focus (priv->password_entry_tertiary); + nma_vpn_password_dialog_field_focus (dialog, 2); } const char * nma_vpn_password_dialog_get_password (NMAVpnPasswordDialog *dialog) { - NMAVpnPasswordDialogPrivate *priv; - - g_return_val_if_fail (NMA_VPN_IS_PASSWORD_DIALOG (dialog), NULL); - - priv = NMA_VPN_PASSWORD_DIALOG_GET_PRIVATE (dialog); - return gtk_entry_get_text (GTK_ENTRY (priv->password_entry)); + return nma_vpn_password_dialog_field_get_text (dialog, 0); } const char * nma_vpn_password_dialog_get_password_secondary (NMAVpnPasswordDialog *dialog) { - NMAVpnPasswordDialogPrivate *priv; - - g_return_val_if_fail (NMA_VPN_IS_PASSWORD_DIALOG (dialog), NULL); - - priv = NMA_VPN_PASSWORD_DIALOG_GET_PRIVATE (dialog); - return gtk_entry_get_text (GTK_ENTRY (priv->password_entry_secondary)); + return nma_vpn_password_dialog_field_get_text (dialog, 1); } const char * nma_vpn_password_dialog_get_password_ternary (NMAVpnPasswordDialog *dialog) { - NMAVpnPasswordDialogPrivate *priv; - - g_return_val_if_fail (NMA_VPN_IS_PASSWORD_DIALOG (dialog), NULL); - - priv = NMA_VPN_PASSWORD_DIALOG_GET_PRIVATE (dialog); - return gtk_entry_get_text (GTK_ENTRY (priv->password_entry_tertiary)); + return nma_vpn_password_dialog_field_get_text (dialog, 2); } void nma_vpn_password_dialog_set_password_label (NMAVpnPasswordDialog *dialog, const char *label) { - NMAVpnPasswordDialogPrivate *priv; - - g_return_if_fail (dialog != NULL); - g_return_if_fail (NMA_VPN_IS_PASSWORD_DIALOG (dialog)); - - priv = NMA_VPN_PASSWORD_DIALOG_GET_PRIVATE (dialog); - - gtk_label_set_text_with_mnemonic (GTK_LABEL (priv->password_label), label); + nma_vpn_password_dialog_field_set_label (dialog, 0, label); } void nma_vpn_password_dialog_set_password_secondary_label (NMAVpnPasswordDialog *dialog, const char *label) { - NMAVpnPasswordDialogPrivate *priv; - - g_return_if_fail (dialog != NULL); - g_return_if_fail (NMA_VPN_IS_PASSWORD_DIALOG (dialog)); - - priv = NMA_VPN_PASSWORD_DIALOG_GET_PRIVATE (dialog); - - gtk_label_set_text_with_mnemonic (GTK_LABEL (priv->password_label_secondary), label); + nma_vpn_password_dialog_field_set_label (dialog, 1, label); } void nma_vpn_password_dialog_set_password_ternary_label (NMAVpnPasswordDialog *dialog, const char *label) { - NMAVpnPasswordDialogPrivate *priv; - - g_return_if_fail (dialog != NULL); - g_return_if_fail (NMA_VPN_IS_PASSWORD_DIALOG (dialog)); - - priv = NMA_VPN_PASSWORD_DIALOG_GET_PRIVATE (dialog); - - gtk_label_set_text_with_mnemonic (GTK_LABEL (priv->password_label_tertiary), label); + nma_vpn_password_dialog_field_set_label (dialog, 2, label); } diff --git a/src/libnma/nma-vpn-password-dialog.h b/src/libnma/nma-vpn-password-dialog.h index 3f9a8fb6..fe0137f0 100644 --- a/src/libnma/nma-vpn-password-dialog.h +++ b/src/libnma/nma-vpn-password-dialog.h @@ -27,6 +27,8 @@ #include <gtk/gtk.h> +#include "nma-version.h" + G_BEGIN_DECLS #define NMA_VPN_TYPE_PASSWORD_DIALOG (nma_vpn_password_dialog_get_type ()) @@ -38,6 +40,8 @@ G_BEGIN_DECLS typedef struct NMAVpnPasswordDialog NMAVpnPasswordDialog; typedef struct NMAVpnPasswordDialogClass NMAVpnPasswordDialogClass; +#define NMA_VPN_PASSWORD_DIALOG_NUM_FIELDS 6 + struct NMAVpnPasswordDialog { GtkDialog parent; }; @@ -85,6 +89,27 @@ const char *nma_vpn_password_dialog_get_password_secondary (NMAVpnPasswordDialog const char *nma_vpn_password_dialog_get_password_ternary (NMAVpnPasswordDialog *dialog); +/* New API */ +NMA_AVAILABLE_IN_1_10 +void nma_vpn_password_dialog_field_set_visible (NMAVpnPasswordDialog *dialog, + guint i, + gboolean visible, + gboolean is_password); +NMA_AVAILABLE_IN_1_10 +void nma_vpn_password_dialog_field_focus (NMAVpnPasswordDialog *dialog, + guint i); +NMA_AVAILABLE_IN_1_10 +void nma_vpn_password_dialog_field_set_text (NMAVpnPasswordDialog *dialog, + guint i, + const char *text); +NMA_AVAILABLE_IN_1_10 +void nma_vpn_password_dialog_field_set_label (NMAVpnPasswordDialog *dialog, + guint i, + const char *label); +NMA_AVAILABLE_IN_1_10 +const char *nma_vpn_password_dialog_field_get_text (NMAVpnPasswordDialog *dialog, + guint i); + G_END_DECLS #endif /* NMA_VPN_PASSWORD_DIALOG_H */ diff --git a/src/libnma/nma-vpn-password-dialog.ui b/src/libnma/nma-vpn-password-dialog.ui index bcbac83c..0e736026 100644 --- a/src/libnma/nma-vpn-password-dialog.ui +++ b/src/libnma/nma-vpn-password-dialog.ui @@ -74,18 +74,105 @@ <property name="visible">True</property> <property name="can_focus">True</property> <property name="receives_default">False</property> - <property name="use_underline">True</property> <property name="halign">start</property> + <property name="use_underline">True</property> <property name="draw_indicator">True</property> <signal name="toggled" handler="show_passwords_toggled_cb" swapped="no"/> </object> <packing> <property name="left_attach">2</property> + <property name="top_attach">7</property> + </packing> + </child> + <child> + <object class="GtkLabel" id="field_label_0"> + <property name="visible">True</property> + <property name="can_focus">False</property> + <property name="no_show_all">True</property> + <property name="label" translatable="yes">_Password:</property> + <property name="use_underline">True</property> + <property name="mnemonic_widget">field_entry_0</property> + <property name="xalign">0</property> + </object> + <packing> + <property name="left_attach">1</property> + <property name="top_attach">1</property> + </packing> + </child> + <child> + <object class="GtkLabel" id="field_label_1"> + <property name="visible">True</property> + <property name="can_focus">False</property> + <property name="no_show_all">True</property> + <property name="label" translatable="yes">_Secondary Password:</property> + <property name="use_underline">True</property> + <property name="mnemonic_widget">field_entry_1</property> + <property name="xalign">0</property> + </object> + <packing> + <property name="left_attach">1</property> + <property name="top_attach">2</property> + </packing> + </child> + <child> + <object class="GtkLabel" id="field_label_2"> + <property name="can_focus">False</property> + <property name="no_show_all">True</property> + <property name="label" translatable="yes">_Tertiary Password:</property> + <property name="use_underline">True</property> + <property name="mnemonic_widget">field_entry_2</property> + <property name="xalign">0</property> + </object> + <packing> + <property name="left_attach">1</property> + <property name="top_attach">3</property> + </packing> + </child> + <child> + <object class="GtkLabel" id="field_label_3"> + <property name="can_focus">False</property> + <property name="no_show_all">True</property> + <property name="label" translatable="yes">Password #3:</property> + <property name="use_underline">True</property> + <property name="mnemonic_widget">field_entry_3</property> + <property name="xalign">0</property> + </object> + <packing> + <property name="left_attach">1</property> <property name="top_attach">4</property> </packing> </child> <child> - <object class="GtkEntry" id="password_entry_tertiary"> + <object class="GtkLabel" id="field_label_4"> + <property name="can_focus">False</property> + <property name="no_show_all">True</property> + <property name="label" translatable="yes">Password #4:</property> + <property name="use_underline">True</property> + <property name="mnemonic_widget">field_entry_4</property> + <property name="xalign">0</property> + </object> + <packing> + <property name="left_attach">1</property> + <property name="top_attach">5</property> + </packing> + </child> + <child> + <object class="GtkLabel" id="field_label_5"> + <property name="can_focus">False</property> + <property name="no_show_all">True</property> + <property name="label" translatable="yes">Password #5:</property> + <property name="use_underline">True</property> + <property name="mnemonic_widget">field_entry_5</property> + <property name="xalign">0</property> + </object> + <packing> + <property name="left_attach">1</property> + <property name="top_attach">6</property> + </packing> + </child> + <child> + <object class="GtkEntry" id="field_entry_0"> + <property name="visible">True</property> <property name="can_focus">True</property> <property name="no_show_all">True</property> <property name="visibility">False</property> @@ -94,11 +181,11 @@ </object> <packing> <property name="left_attach">2</property> - <property name="top_attach">3</property> + <property name="top_attach">1</property> </packing> </child> <child> - <object class="GtkEntry" id="password_entry_secondary"> + <object class="GtkEntry" id="field_entry_1"> <property name="visible">True</property> <property name="can_focus">True</property> <property name="no_show_all">True</property> @@ -112,8 +199,7 @@ </packing> </child> <child> - <object class="GtkEntry" id="password_entry"> - <property name="visible">True</property> + <object class="GtkEntry" id="field_entry_2"> <property name="can_focus">True</property> <property name="no_show_all">True</property> <property name="visibility">False</property> @@ -122,51 +208,46 @@ </object> <packing> <property name="left_attach">2</property> - <property name="top_attach">1</property> + <property name="top_attach">3</property> </packing> </child> <child> - <object class="GtkLabel" id="password_label_tertiary"> - <property name="can_focus">False</property> + <object class="GtkEntry" id="field_entry_3"> + <property name="can_focus">True</property> <property name="no_show_all">True</property> - <property name="label" translatable="yes">_Tertiary Password:</property> - <property name="use_underline">True</property> - <property name="mnemonic_widget">password_entry_tertiary</property> - <property name="xalign">0</property> + <property name="visibility">False</property> + <property name="width_chars">20</property> + <signal name="activate" handler="gtk_window_activate_default" swapped="yes"/> </object> <packing> - <property name="left_attach">1</property> - <property name="top_attach">3</property> + <property name="left_attach">2</property> + <property name="top_attach">4</property> </packing> </child> <child> - <object class="GtkLabel" id="password_label_secondary"> - <property name="visible">True</property> - <property name="can_focus">False</property> + <object class="GtkEntry" id="field_entry_4"> + <property name="can_focus">True</property> <property name="no_show_all">True</property> - <property name="label" translatable="yes">_Secondary Password:</property> - <property name="use_underline">True</property> - <property name="mnemonic_widget">password_entry_secondary</property> - <property name="xalign">0</property> + <property name="visibility">False</property> + <property name="width_chars">20</property> + <signal name="activate" handler="gtk_window_activate_default" swapped="yes"/> </object> <packing> - <property name="left_attach">1</property> - <property name="top_attach">2</property> + <property name="left_attach">2</property> + <property name="top_attach">5</property> </packing> </child> <child> - <object class="GtkLabel" id="password_label"> - <property name="visible">True</property> - <property name="can_focus">False</property> + <object class="GtkEntry" id="field_entry_5"> + <property name="can_focus">True</property> <property name="no_show_all">True</property> - <property name="label" translatable="yes">_Password:</property> - <property name="use_underline">True</property> - <property name="mnemonic_widget">password_entry</property> - <property name="xalign">0</property> + <property name="visibility">False</property> + <property name="width_chars">20</property> + <signal name="activate" handler="gtk_window_activate_default" swapped="yes"/> </object> <packing> - <property name="left_attach">1</property> - <property name="top_attach">1</property> + <property name="left_attach">2</property> + <property name="top_attach">6</property> </packing> </child> <child> @@ -189,18 +270,18 @@ <object class="GtkImage"> <property name="visible">True</property> <property name="can_focus">False</property> + <property name="valign">start</property> <property name="margin_start">6</property> <property name="margin_end">12</property> <property name="margin_top">6</property> <property name="margin_bottom">6</property> - <property name="valign">start</property> <property name="icon_name">dialog-password</property> <property name="icon_size">6</property> </object> <packing> <property name="left_attach">0</property> <property name="top_attach">0</property> - <property name="height">5</property> + <property name="height">8</property> </packing> </child> <child> |