summaryrefslogtreecommitdiff
path: root/src/option.c
diff options
context:
space:
mode:
authorArx Cruz <arxcruz@src.gnome.org>2010-07-10 16:13:40 -0300
committerArx Cruz <arxcruz@src.gnome.org>2010-07-12 11:08:26 -0300
commit10d038022014a8069495bd72ccf9ed47fdf9d14d (patch)
tree1534f086e8259514ad9117724eb262a34346b4f1 /src/option.c
parent728c840668de3ec7c8a66842cad1b758c4dc90b3 (diff)
Add new password dialog
Diffstat (limited to 'src/option.c')
-rw-r--r--src/option.c72
1 files changed, 71 insertions, 1 deletions
diff --git a/src/option.c b/src/option.c
index 0046745..b9694fd 100644
--- a/src/option.c
+++ b/src/option.c
@@ -113,6 +113,10 @@ static gboolean zenity_colorsel_active;
static gchar *zenity_colorsel_color;
static gboolean zenity_colorsel_show_palette;
+/* Password Dialog Options */
+static gboolean zenity_password_active;
+static gboolean zenity_password_show_username;
+
/* Miscelaneus Options */
static gboolean zenity_misc_about;
static gboolean zenity_misc_version;
@@ -823,6 +827,30 @@ static GOptionEntry scale_options[] = {
}
};
+static GOptionEntry password_dialog_options[] = {
+ {
+ "password",
+ '\0',
+ G_OPTION_FLAG_IN_MAIN,
+ G_OPTION_ARG_NONE,
+ &zenity_password_active,
+ N_("Display password dialog"),
+ NULL
+ },
+ {
+ "username",
+ '\0',
+ 0,
+ G_OPTION_ARG_NONE,
+ &zenity_password_show_username,
+ N_("Display the username option"),
+ NULL
+ },
+ {
+ NULL
+ }
+};
+
static GOptionEntry color_selection_options[] = {
{
"color-selection",
@@ -901,6 +929,7 @@ zenity_option_init (void) {
results->tree_data = g_new0 (ZenityTreeData, 1);
results->notification_data = g_new0 (ZenityNotificationData, 1);
results->color_data = g_new0 (ZenityColorData, 1);
+ results->password_data = g_new0 (ZenityPasswordData, 1);
}
void
@@ -938,7 +967,7 @@ zenity_option_free (void) {
if (zenity_colorsel_color)
g_free (zenity_colorsel_color);
-
+
g_option_context_free (ctx);
}
@@ -1171,6 +1200,18 @@ zenity_color_pre_callback (GOptionContext *context,
}
static gboolean
+zenity_password_pre_callback (GOptionContext *context,
+ GOptionGroup *group,
+ gpointer data,
+ GError **error)
+{
+ zenity_password_active = FALSE;
+ zenity_password_show_username = FALSE;
+
+ return TRUE;
+}
+
+static gboolean
zenity_misc_pre_callback (GOptionContext *context,
GOptionGroup *group,
gpointer data,
@@ -1560,6 +1601,24 @@ zenity_color_post_callback (GOptionContext *context,
}
static gboolean
+zenity_password_post_callback (GOptionContext *context,
+ GOptionGroup *group,
+ gpointer data,
+ GError **error)
+{
+ zenity_option_set_dialog_mode (zenity_password_active, MODE_PASSWORD);
+ if (results->mode == MODE_PASSWORD) {
+ results->password_data->username = zenity_password_show_username;
+ } else {
+ if (zenity_password_show_username)
+ zenity_option_error (zenity_option_get_name(password_dialog_options, &zenity_password_show_username),
+ ERROR_SUPPORT);
+ }
+
+ return TRUE;
+}
+
+static gboolean
zenity_misc_post_callback (GOptionContext *context,
GOptionGroup *group,
gpointer data,
@@ -1733,6 +1792,17 @@ zenity_create_context (void)
g_option_group_set_translation_domain (a_group, GETTEXT_PACKAGE);
g_option_context_add_group(tmp_ctx, a_group);
+ /* Adds password dialog option entries */
+ a_group = g_option_group_new("password",
+ N_("Password dialog options"),
+ N_("Show password dialog options"), NULL, NULL);
+ g_option_group_add_entries (a_group, password_dialog_options);
+ g_option_group_set_parse_hooks (a_group,
+ zenity_password_pre_callback, zenity_password_post_callback);
+ g_option_group_set_error_hook (a_group, zenity_option_error_callback);
+ g_option_group_set_translation_domain (a_group, GETTEXT_PACKAGE);
+ g_option_context_add_group(tmp_ctx, a_group);
+
/* Adds misc option entries */
a_group = g_option_group_new("misc",
N_("Miscellaneous options"),