diff options
author | Berislav Kovacki <pantokrator@pantokrator.net> | 2010-02-23 18:24:20 +0000 |
---|---|---|
committer | Lucas Rocha <lucasr@litl.com> | 2010-02-23 18:25:21 +0000 |
commit | 4ccc7f6fac79a189e0c0c4896bb2f0f38d38d7c7 (patch) | |
tree | 39cdd77c84879fe9c23768bd0d0d186149e4b135 /src/option.c | |
parent | Bug 593926 - --progress needs a --nocancel option (diff) | |
download | zenity-4ccc7f6fac79a189e0c0c4896bb2f0f38d38d7c7.tar.gz zenity-4ccc7f6fac79a189e0c0c4896bb2f0f38d38d7c7.tar.bz2 zenity-4ccc7f6fac79a189e0c0c4896bb2f0f38d38d7c7.zip |
Bug 540169 - Zenity should offer color selection dialog
Diffstat (limited to 'src/option.c')
-rw-r--r-- | src/option.c | 90 |
1 files changed, 90 insertions, 0 deletions
diff --git a/src/option.c b/src/option.c index bc09009a..00467452 100644 --- a/src/option.c +++ b/src/option.c @@ -108,6 +108,11 @@ static gint zenity_scale_step; static gboolean zenity_scale_print_partial; static gboolean zenity_scale_hide_value; +/* Color Selection Dialog Options */ +static gboolean zenity_colorsel_active; +static gchar *zenity_colorsel_color; +static gboolean zenity_colorsel_show_palette; + /* Miscelaneus Options */ static gboolean zenity_misc_about; static gboolean zenity_misc_version; @@ -818,6 +823,39 @@ static GOptionEntry scale_options[] = { } }; +static GOptionEntry color_selection_options[] = { + { + "color-selection", + '\0', + G_OPTION_FLAG_IN_MAIN, + G_OPTION_ARG_NONE, + &zenity_colorsel_active, + N_("Display color selection dialog"), + NULL + }, + { + "color", + '\0', + 0, + G_OPTION_ARG_STRING, + &zenity_colorsel_color, + N_("Set the color"), + N_("VALUE") + }, + { + "show-palette", + '\0', + 0, + G_OPTION_ARG_NONE, + &zenity_colorsel_show_palette, + N_("Show the palette"), + NULL + }, + { + NULL + } +}; + static GOptionEntry miscellaneous_options[] = { { "about", @@ -862,6 +900,7 @@ zenity_option_init (void) { results->text_data = g_new0 (ZenityTextData, 1); results->tree_data = g_new0 (ZenityTreeData, 1); results->notification_data = g_new0 (ZenityNotificationData, 1); + results->color_data = g_new0 (ZenityColorData, 1); } void @@ -897,6 +936,9 @@ zenity_option_free (void) { if (zenity_question_cancel_button) g_free (zenity_question_cancel_button); + if (zenity_colorsel_color) + g_free (zenity_colorsel_color); + g_option_context_free (ctx); } @@ -1116,6 +1158,19 @@ zenity_scale_pre_callback (GOptionContext *context, } static gboolean +zenity_color_pre_callback (GOptionContext *context, + GOptionGroup *group, + gpointer data, + GError **error) +{ + zenity_colorsel_active = FALSE; + zenity_colorsel_color = NULL; + zenity_colorsel_show_palette = FALSE; + + return TRUE; +} + +static gboolean zenity_misc_pre_callback (GOptionContext *context, GOptionGroup *group, gpointer data, @@ -1481,6 +1536,30 @@ zenity_scale_post_callback (GOptionContext *context, } static gboolean +zenity_color_post_callback (GOptionContext *context, + GOptionGroup *group, + gpointer data, + GError **error) +{ + zenity_option_set_dialog_mode (zenity_colorsel_active, MODE_COLOR); + + if (results->mode == MODE_COLOR) { + results->color_data->color = zenity_colorsel_color; + results->color_data->show_palette = zenity_colorsel_show_palette; + } else { + if (zenity_colorsel_color) + zenity_option_error (zenity_option_get_name(color_selection_options, &zenity_colorsel_color), + ERROR_SUPPORT); + + if (zenity_colorsel_show_palette) + zenity_option_error (zenity_option_get_name(color_selection_options, &zenity_colorsel_show_palette), + ERROR_SUPPORT); + } + + return TRUE; +} + +static gboolean zenity_misc_post_callback (GOptionContext *context, GOptionGroup *group, gpointer data, @@ -1643,6 +1722,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 color selection option entries */ + a_group = g_option_group_new("color-selection", + N_("Color selection options"), + N_("Show color selection options"), NULL, NULL); + g_option_group_add_entries(a_group, color_selection_options); + g_option_group_set_parse_hooks (a_group, + zenity_color_pre_callback, zenity_color_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"), |