From 54a8e7079a65d8dd7aea344ece6a8dbc38b3e048 Mon Sep 17 00:00:00 2001 From: Arx Cruz Date: Thu, 18 Nov 2010 14:33:13 -0200 Subject: Fix for bug 412493 --- src/forms.c | 215 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 215 insertions(+) create mode 100644 src/forms.c (limited to 'src/forms.c') diff --git a/src/forms.c b/src/forms.c new file mode 100644 index 00000000..9ad78deb --- /dev/null +++ b/src/forms.c @@ -0,0 +1,215 @@ +/* + * forms.c + * + * Copyright (C) 2010 Arx Cruz + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Library General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Library General Public License for more details. + * + * You should have received a copy of the GNU Library General Public + * License along with this library; if not, write to the + * Free Software Foundation, Inc., 121 Franklin Street, Fifth Floor, + * Boston, MA 02110-1301, USA. + * + * Authors: Arx Cruz + */ + +#include "config.h" +#include +#include "zenity.h" +#include "util.h" + +static ZenityData *zen_data; + +static void zenity_forms_dialog_response (GtkWidget *widget, int response, gpointer data); + +void zenity_forms_dialog (ZenityData *data, ZenityFormsData *forms_data) +{ + GtkBuilder *builder = NULL; + GtkWidget *dialog; + GtkWidget *table; + GtkWidget *text; + + GSList *tmp; + + gint number_of_widgets = g_slist_length (forms_data->list); + + zen_data = data; + + builder = zenity_util_load_ui_file("zenity_forms_dialog", NULL); + + if (builder == NULL) { + data->exit_code = zenity_util_return_exit_code (ZENITY_ERROR); + return; + } + + gtk_builder_connect_signals(builder, NULL); + + dialog = GTK_WIDGET (gtk_builder_get_object (builder, "zenity_forms_dialog")); + + g_signal_connect (G_OBJECT(dialog), "response", + G_CALLBACK (zenity_forms_dialog_response), forms_data); + + if (data->dialog_title) + gtk_window_set_title (GTK_WINDOW (dialog), data->dialog_title); + + if (data->width > -1 || data->height > -1) + gtk_window_set_default_size (GTK_WINDOW (dialog), data->width, data->height); + + text = GTK_WIDGET (gtk_builder_get_object (builder, "zenity_forms_text")); + + if (forms_data->dialog_text) + gtk_label_set_markup (GTK_LABEL (text), g_strcompress (forms_data->dialog_text)); + + table = GTK_WIDGET (gtk_builder_get_object (builder, "zenity_forms_table")); + + gtk_table_resize (GTK_TABLE (table), number_of_widgets, 2); + + int i = 0; + + for (tmp = forms_data->list; tmp; tmp = tmp->next) { + ZenityFormsValue *zenity_value = (ZenityFormsValue *) tmp->data; + GtkWidget *label; + GtkWidget *align; + + label = gtk_label_new(zenity_value->option_value); + + align = gtk_alignment_new (0.0, 0.5, 0.0, 0.0); + gtk_container_add (GTK_CONTAINER (align), label); + + gtk_table_attach (GTK_TABLE (table), + GTK_WIDGET (align), + 0, + 1, + i, + i+1, + GTK_FILL, + GTK_FILL, + 0, + 0); + + switch(zenity_value->type) + { + case ZENITY_FORMS_ENTRY: + zenity_value->forms_widget = gtk_entry_new(); + gtk_table_attach (GTK_TABLE (table), + GTK_WIDGET (zenity_value->forms_widget), + 1, + 2, + i, + i+1, + GTK_EXPAND | GTK_FILL, + GTK_EXPAND | GTK_FILL, + 0, + 0); + break; + case ZENITY_FORMS_PASSWORD: + zenity_value->forms_widget = gtk_entry_new(); + gtk_entry_set_visibility(GTK_ENTRY(zenity_value->forms_widget), + FALSE); + gtk_table_attach (GTK_TABLE (table), + GTK_WIDGET (zenity_value->forms_widget), + 1, + 2, + i, + i+1, + GTK_EXPAND | GTK_FILL, + GTK_EXPAND | GTK_FILL, + 0, + 0); + break; + case ZENITY_FORMS_CALENDAR: + zenity_value->forms_widget = gtk_calendar_new(); + gtk_alignment_set (GTK_ALIGNMENT (align), 0.0, 0.02, 0.0, 0.0); + align = gtk_alignment_new (0.0, 0.5, 0.0, 0.0); + gtk_container_add (GTK_CONTAINER (align), zenity_value->forms_widget); + gtk_table_attach (GTK_TABLE (table), + GTK_WIDGET (align), + 1, + 2, + i, + i+1, + GTK_FILL, + GTK_FILL, + 0, + 0); + break; + default: + zenity_value->forms_widget = gtk_entry_new(); + gtk_table_attach (GTK_TABLE (table), + GTK_WIDGET (zenity_value->forms_widget), + 1, + 2, + i, + i+1, + GTK_EXPAND | GTK_FILL, + GTK_EXPAND | GTK_FILL, + 0, + 0); + break; + } + + i++; + } + + gtk_widget_show_all (GTK_WIDGET (dialog)); + + g_object_unref (builder); + + if (data->timeout_delay > 0) { + g_timeout_add_seconds (data->timeout_delay, (GSourceFunc) zenity_util_timeout_handle, NULL); + } + + gtk_main(); +} + +static void +zenity_forms_dialog_response (GtkWidget *widget, int response, gpointer data) +{ + ZenityFormsData *forms_data = (ZenityFormsData *) data; + GSList *tmp; + guint day, year, month; + GDate *date = NULL; + gchar time_string[128]; + + switch (response) { + case GTK_RESPONSE_OK: + zen_data->exit_code = zenity_util_return_exit_code (ZENITY_OK); + for (tmp = forms_data->list; tmp; tmp = tmp->next) { + ZenityFormsValue *zenity_value = (ZenityFormsValue *) tmp->data; + switch (zenity_value->type) { + case ZENITY_FORMS_PASSWORD: + case ZENITY_FORMS_ENTRY: + g_print("%s", gtk_entry_get_text (GTK_ENTRY (zenity_value->forms_widget))); + break; + case ZENITY_FORMS_CALENDAR: + gtk_calendar_get_date (GTK_CALENDAR (zenity_value->forms_widget), &day, &month, &year); + date = g_date_new_dmy (year, month + 1, day); + g_date_strftime (time_string, 127, forms_data->date_format, date); + g_print ("%s", time_string); + break; + } + if (tmp->next != NULL) + g_print("%s", forms_data->separator); + } + g_print("\n"); + + break; + case GTK_RESPONSE_CANCEL: + zen_data->exit_code = zenity_util_return_exit_code (ZENITY_CANCEL); + break; + + default: + zen_data->exit_code = zenity_util_return_exit_code (ZENITY_ESC); + break; + } + + gtk_main_quit (); +} -- cgit From b39ad33c35bb93c647e7f6f05d1310a0ce6895d5 Mon Sep 17 00:00:00 2001 From: Arx Cruz Date: Thu, 16 Jun 2011 11:07:58 -0300 Subject: Bug 651948 - zenity list does not return default value when timeout is over --- src/forms.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'src/forms.c') diff --git a/src/forms.c b/src/forms.c index 9ad78deb..d6db7787 100644 --- a/src/forms.c +++ b/src/forms.c @@ -164,7 +164,7 @@ void zenity_forms_dialog (ZenityData *data, ZenityFormsData *forms_data) g_object_unref (builder); if (data->timeout_delay > 0) { - g_timeout_add_seconds (data->timeout_delay, (GSourceFunc) zenity_util_timeout_handle, NULL); + g_timeout_add_seconds (data->timeout_delay, (GSourceFunc) zenity_util_timeout_handle, dialog); } gtk_main(); -- cgit From d60e5eeeb379e5444ad218d7335b17eaa821b182 Mon Sep 17 00:00:00 2001 From: Arx Cruz Date: Fri, 17 Jun 2011 10:47:07 -0300 Subject: Now if you use --timeout option, the return code will be properly handled The default behavior will be done (ie. user click on ok button) The return code will be 5 --- src/forms.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'src/forms.c') diff --git a/src/forms.c b/src/forms.c index d6db7787..d59a5afb 100644 --- a/src/forms.c +++ b/src/forms.c @@ -181,7 +181,7 @@ zenity_forms_dialog_response (GtkWidget *widget, int response, gpointer data) switch (response) { case GTK_RESPONSE_OK: - zen_data->exit_code = zenity_util_return_exit_code (ZENITY_OK); + zenity_util_exit_code_with_data(ZENITY_OK, zen_data); for (tmp = forms_data->list; tmp; tmp = tmp->next) { ZenityFormsValue *zenity_value = (ZenityFormsValue *) tmp->data; switch (zenity_value->type) { -- cgit From 6768a40e997697d05008aecdb41815e1dbae61c6 Mon Sep 17 00:00:00 2001 From: Arx Cruz Date: Tue, 26 Jul 2011 14:00:28 -0300 Subject: Fix for bug #611297 Now Zenity have --ok-label and --cancel-label in all dialogs. This patch doesn't break old zenity scripts. --- src/forms.c | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) (limited to 'src/forms.c') diff --git a/src/forms.c b/src/forms.c index d59a5afb..c2b9f851 100644 --- a/src/forms.c +++ b/src/forms.c @@ -36,6 +36,7 @@ void zenity_forms_dialog (ZenityData *data, ZenityFormsData *forms_data) GtkWidget *dialog; GtkWidget *table; GtkWidget *text; + GtkWidget *button; GSList *tmp; @@ -62,7 +63,21 @@ void zenity_forms_dialog (ZenityData *data, ZenityFormsData *forms_data) if (data->width > -1 || data->height > -1) gtk_window_set_default_size (GTK_WINDOW (dialog), data->width, data->height); - + + if (data->ok_label) { + button = GTK_WIDGET (gtk_builder_get_object (builder, "zenity_forms_ok_button")); + gtk_button_set_label (GTK_BUTTON (button), data->ok_label); + gtk_button_set_image (GTK_BUTTON (button), + gtk_image_new_from_stock (GTK_STOCK_OK, GTK_ICON_SIZE_BUTTON)); + } + + if (data->cancel_label) { + button = GTK_WIDGET (gtk_builder_get_object (builder, "zenity_forms_cancel_button")); + gtk_button_set_label (GTK_BUTTON (button), data->cancel_label); + gtk_button_set_image (GTK_BUTTON (button), + gtk_image_new_from_stock (GTK_STOCK_CANCEL, GTK_ICON_SIZE_BUTTON)); + } + text = GTK_WIDGET (gtk_builder_get_object (builder, "zenity_forms_text")); if (forms_data->dialog_text) -- cgit From ed825cf92b9d786b9b13361db4a0e696af347a59 Mon Sep 17 00:00:00 2001 From: Arx Cruz Date: Thu, 13 Oct 2011 13:40:40 -0300 Subject: Initial support for list/tree on --forms option Added zenity --add-list and --list-values on --forms option. This is an initial support. Next steps add support to multiple selections and multiple columns --- src/forms.c | 104 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 102 insertions(+), 2 deletions(-) (limited to 'src/forms.c') diff --git a/src/forms.c b/src/forms.c index c2b9f851..56c6f5ab 100644 --- a/src/forms.c +++ b/src/forms.c @@ -18,7 +18,7 @@ * Free Software Foundation, Inc., 121 Franklin Street, Fifth Floor, * Boston, MA 02110-1301, USA. * - * Authors: Arx Cruz + * Authors: Arx Cruz */ #include "config.h" @@ -27,9 +27,84 @@ #include "util.h" static ZenityData *zen_data; - +static GSList *selected; static void zenity_forms_dialog_response (GtkWidget *widget, int response, gpointer data); +static void zenity_forms_dialog_get_selected (GtkTreeModel *model, GtkTreePath *path_buf, GtkTreeIter *iter, GtkTreeView *tree_view) +{ + GValue value = {0, }; + gtk_tree_model_get_value (model, iter, 0, &value); + selected = g_slist_append (selected, g_value_dup_string (&value)); + g_value_unset (&value); +} + +static void zenity_forms_dialog_output (void) +{ + GSList *tmp; + + for (tmp = selected; tmp; tmp = tmp->next) { + if (tmp->next != NULL) { + g_print ("%s,", (gchar *) tmp->data); + } + else + g_print ("%s", (gchar *) tmp->data); + } + + g_slist_foreach (selected, (GFunc) g_free, NULL); + selected = NULL; +} + +static GtkWidget * +zenity_forms_create_and_fill_list (ZenityFormsData *forms_data, + int list_number, gchar *header) +{ + GtkListStore *list_store; + GtkWidget *tree_view; + GtkWidget *scrolled_window; + GtkCellRenderer *renderer; + + gchar *values; + int i = 0; + + list_store = gtk_list_store_new (1, G_TYPE_STRING); + if (forms_data->list_values) { + values = g_slist_nth_data (forms_data->list_values, list_number); + if (values) { + gchar **row_values = g_strsplit_set (values, "|", -1); + if (row_values) { + GtkTreeIter iter; + gchar *row = row_values[0]; + while (row != NULL) { + gtk_list_store_append (list_store, &iter); + gtk_list_store_set (list_store, &iter, 0, row, -1); + row = row_values[++i]; + } + g_strfreev (row_values); + } + } + } + tree_view = gtk_tree_view_new (); + renderer = gtk_cell_renderer_text_new (); + gtk_tree_view_insert_column_with_attributes (GTK_TREE_VIEW (tree_view), + -1, + header, + renderer, + "text", + 0, + NULL); + + gtk_tree_view_set_model (GTK_TREE_VIEW (tree_view), GTK_TREE_MODEL (list_store)); + g_object_unref (list_store); + scrolled_window = gtk_scrolled_window_new (NULL, NULL); + //gtk_scrolled_window_add_with_viewport (GTK_SCROLLED_WINDOW (scrolled_window), + // GTK_WIDGET (tree_view)); + gtk_container_add (GTK_CONTAINER (scrolled_window), GTK_WIDGET (tree_view)); + gtk_widget_set_size_request (GTK_WIDGET (scrolled_window), -1, 100); + gtk_tree_view_set_headers_visible (GTK_TREE_VIEW (tree_view), FALSE); + + return scrolled_window; +} + void zenity_forms_dialog (ZenityData *data, ZenityFormsData *forms_data) { GtkBuilder *builder = NULL; @@ -41,6 +116,7 @@ void zenity_forms_dialog (ZenityData *data, ZenityFormsData *forms_data) GSList *tmp; gint number_of_widgets = g_slist_length (forms_data->list); + int list_count = 0; zen_data = data; @@ -156,6 +232,22 @@ void zenity_forms_dialog (ZenityData *data, ZenityFormsData *forms_data) 0, 0); break; + case ZENITY_FORMS_LIST: + zenity_value->forms_widget = zenity_forms_create_and_fill_list (forms_data, list_count, + zenity_value->option_value); + gtk_alignment_set (GTK_ALIGNMENT (align), 0.0, 0.02, 0.0, 0.0); + gtk_table_attach (GTK_TABLE (table), + GTK_WIDGET (zenity_value->forms_widget), + 1, + 2, + i, + i+1, + GTK_EXPAND | GTK_FILL, + GTK_EXPAND | GTK_FILL, + 0, + 0); + list_count++; + break; default: zenity_value->forms_widget = gtk_entry_new(); gtk_table_attach (GTK_TABLE (table), @@ -193,6 +285,7 @@ zenity_forms_dialog_response (GtkWidget *widget, int response, gpointer data) guint day, year, month; GDate *date = NULL; gchar time_string[128]; + GtkTreeSelection *selection; switch (response) { case GTK_RESPONSE_OK: @@ -204,6 +297,13 @@ zenity_forms_dialog_response (GtkWidget *widget, int response, gpointer data) case ZENITY_FORMS_ENTRY: g_print("%s", gtk_entry_get_text (GTK_ENTRY (zenity_value->forms_widget))); break; + case ZENITY_FORMS_LIST: + selection = gtk_tree_view_get_selection (GTK_TREE_VIEW (gtk_bin_get_child (GTK_BIN (zenity_value->forms_widget)))); + gtk_tree_selection_selected_foreach (selection, + (GtkTreeSelectionForeachFunc) zenity_forms_dialog_get_selected, + GTK_TREE_VIEW (gtk_bin_get_child (GTK_BIN (zenity_value->forms_widget)))); + zenity_forms_dialog_output (); + break; case ZENITY_FORMS_CALENDAR: gtk_calendar_get_date (GTK_CALENDAR (zenity_value->forms_widget), &day, &month, &year); date = g_date_new_dmy (year, month + 1, day); -- cgit From de352548229f60940ed9cc09bcedc883d104f311 Mon Sep 17 00:00:00 2001 From: Arx Cruz Date: Thu, 13 Oct 2011 15:21:32 -0300 Subject: Revert "Initial support for list/tree on --forms option Added zenity --add-list and --list-values on --forms option. This is an initial support. Next steps add support to multiple selections and multiple columns" This reverts commit ed825cf92b9d786b9b13361db4a0e696af347a59. --- src/forms.c | 104 ++---------------------------------------------------------- 1 file changed, 2 insertions(+), 102 deletions(-) (limited to 'src/forms.c') diff --git a/src/forms.c b/src/forms.c index 56c6f5ab..c2b9f851 100644 --- a/src/forms.c +++ b/src/forms.c @@ -18,7 +18,7 @@ * Free Software Foundation, Inc., 121 Franklin Street, Fifth Floor, * Boston, MA 02110-1301, USA. * - * Authors: Arx Cruz + * Authors: Arx Cruz */ #include "config.h" @@ -27,83 +27,8 @@ #include "util.h" static ZenityData *zen_data; -static GSList *selected; -static void zenity_forms_dialog_response (GtkWidget *widget, int response, gpointer data); - -static void zenity_forms_dialog_get_selected (GtkTreeModel *model, GtkTreePath *path_buf, GtkTreeIter *iter, GtkTreeView *tree_view) -{ - GValue value = {0, }; - gtk_tree_model_get_value (model, iter, 0, &value); - selected = g_slist_append (selected, g_value_dup_string (&value)); - g_value_unset (&value); -} - -static void zenity_forms_dialog_output (void) -{ - GSList *tmp; - - for (tmp = selected; tmp; tmp = tmp->next) { - if (tmp->next != NULL) { - g_print ("%s,", (gchar *) tmp->data); - } - else - g_print ("%s", (gchar *) tmp->data); - } - - g_slist_foreach (selected, (GFunc) g_free, NULL); - selected = NULL; -} - -static GtkWidget * -zenity_forms_create_and_fill_list (ZenityFormsData *forms_data, - int list_number, gchar *header) -{ - GtkListStore *list_store; - GtkWidget *tree_view; - GtkWidget *scrolled_window; - GtkCellRenderer *renderer; - gchar *values; - int i = 0; - - list_store = gtk_list_store_new (1, G_TYPE_STRING); - if (forms_data->list_values) { - values = g_slist_nth_data (forms_data->list_values, list_number); - if (values) { - gchar **row_values = g_strsplit_set (values, "|", -1); - if (row_values) { - GtkTreeIter iter; - gchar *row = row_values[0]; - while (row != NULL) { - gtk_list_store_append (list_store, &iter); - gtk_list_store_set (list_store, &iter, 0, row, -1); - row = row_values[++i]; - } - g_strfreev (row_values); - } - } - } - tree_view = gtk_tree_view_new (); - renderer = gtk_cell_renderer_text_new (); - gtk_tree_view_insert_column_with_attributes (GTK_TREE_VIEW (tree_view), - -1, - header, - renderer, - "text", - 0, - NULL); - - gtk_tree_view_set_model (GTK_TREE_VIEW (tree_view), GTK_TREE_MODEL (list_store)); - g_object_unref (list_store); - scrolled_window = gtk_scrolled_window_new (NULL, NULL); - //gtk_scrolled_window_add_with_viewport (GTK_SCROLLED_WINDOW (scrolled_window), - // GTK_WIDGET (tree_view)); - gtk_container_add (GTK_CONTAINER (scrolled_window), GTK_WIDGET (tree_view)); - gtk_widget_set_size_request (GTK_WIDGET (scrolled_window), -1, 100); - gtk_tree_view_set_headers_visible (GTK_TREE_VIEW (tree_view), FALSE); - - return scrolled_window; -} +static void zenity_forms_dialog_response (GtkWidget *widget, int response, gpointer data); void zenity_forms_dialog (ZenityData *data, ZenityFormsData *forms_data) { @@ -116,7 +41,6 @@ void zenity_forms_dialog (ZenityData *data, ZenityFormsData *forms_data) GSList *tmp; gint number_of_widgets = g_slist_length (forms_data->list); - int list_count = 0; zen_data = data; @@ -232,22 +156,6 @@ void zenity_forms_dialog (ZenityData *data, ZenityFormsData *forms_data) 0, 0); break; - case ZENITY_FORMS_LIST: - zenity_value->forms_widget = zenity_forms_create_and_fill_list (forms_data, list_count, - zenity_value->option_value); - gtk_alignment_set (GTK_ALIGNMENT (align), 0.0, 0.02, 0.0, 0.0); - gtk_table_attach (GTK_TABLE (table), - GTK_WIDGET (zenity_value->forms_widget), - 1, - 2, - i, - i+1, - GTK_EXPAND | GTK_FILL, - GTK_EXPAND | GTK_FILL, - 0, - 0); - list_count++; - break; default: zenity_value->forms_widget = gtk_entry_new(); gtk_table_attach (GTK_TABLE (table), @@ -285,7 +193,6 @@ zenity_forms_dialog_response (GtkWidget *widget, int response, gpointer data) guint day, year, month; GDate *date = NULL; gchar time_string[128]; - GtkTreeSelection *selection; switch (response) { case GTK_RESPONSE_OK: @@ -297,13 +204,6 @@ zenity_forms_dialog_response (GtkWidget *widget, int response, gpointer data) case ZENITY_FORMS_ENTRY: g_print("%s", gtk_entry_get_text (GTK_ENTRY (zenity_value->forms_widget))); break; - case ZENITY_FORMS_LIST: - selection = gtk_tree_view_get_selection (GTK_TREE_VIEW (gtk_bin_get_child (GTK_BIN (zenity_value->forms_widget)))); - gtk_tree_selection_selected_foreach (selection, - (GtkTreeSelectionForeachFunc) zenity_forms_dialog_get_selected, - GTK_TREE_VIEW (gtk_bin_get_child (GTK_BIN (zenity_value->forms_widget)))); - zenity_forms_dialog_output (); - break; case ZENITY_FORMS_CALENDAR: gtk_calendar_get_date (GTK_CALENDAR (zenity_value->forms_widget), &day, &month, &year); date = g_date_new_dmy (year, month + 1, day); -- cgit From 82d09a41f2d7f6c13f207d05f2c594f3657fc599 Mon Sep 17 00:00:00 2001 From: Arx Cruz Date: Wed, 21 Dec 2011 10:20:29 -0200 Subject: Added support to lists on zenity --forms --- src/forms.c | 144 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 142 insertions(+), 2 deletions(-) (limited to 'src/forms.c') diff --git a/src/forms.c b/src/forms.c index c2b9f851..f8f1db53 100644 --- a/src/forms.c +++ b/src/forms.c @@ -18,7 +18,7 @@ * Free Software Foundation, Inc., 121 Franklin Street, Fifth Floor, * Boston, MA 02110-1301, USA. * - * Authors: Arx Cruz + * Authors: Arx Cruz */ #include "config.h" @@ -27,9 +27,124 @@ #include "util.h" static ZenityData *zen_data; - +static GSList *selected; static void zenity_forms_dialog_response (GtkWidget *widget, int response, gpointer data); +static void zenity_forms_dialog_get_selected (GtkTreeModel *model, GtkTreePath *path_buf, GtkTreeIter *iter, GtkTreeView *tree_view) +{ + gint n_columns = 0; + gint i = 0; + + n_columns = gtk_tree_model_get_n_columns (model); + GValue value = {0, }; + for (i = 0; i < n_columns; i++) { + gtk_tree_model_get_value (model, iter, i, &value); + selected = g_slist_append (selected, g_value_dup_string (&value)); + g_value_unset (&value); + } +} + +static void zenity_forms_dialog_output (void) +{ + GSList *tmp; + + for (tmp = selected; tmp; tmp = tmp->next) { + if (tmp->next != NULL) { + g_print ("%s,", (gchar *) tmp->data); + } + else + g_print ("%s", (gchar *) tmp->data); + } + + g_slist_foreach (selected, (GFunc) g_free, NULL); + selected = NULL; +} + +static GtkWidget * +zenity_forms_create_and_fill_list (ZenityFormsData *forms_data, + int list_number, gchar *header) +{ + GtkListStore *list_store; + GtkWidget *tree_view; + GtkWidget *scrolled_window; + GtkCellRenderer *renderer; + GtkTreeViewColumn *column; + GType *column_types = NULL; + gchar *list_values; + gchar *column_values; + + gint i = 0; + /* If no column names available, default is one */ + gint n_columns = 1; + gint column_index = 0; + + tree_view = gtk_tree_view_new (); + + if (forms_data->column_values) { + column_values = g_slist_nth_data (forms_data->column_values, list_number); + if (column_values) { + gchar **values = g_strsplit_set (column_values, "|", -1); + if (values) { + n_columns = g_strv_length (values); + column_types = g_new (GType, n_columns); + for (i = 0; i < n_columns; i++) + column_types[i] = G_TYPE_STRING; + + for (i = 0; i < n_columns; i++) { + gchar *column_name = values[i]; + renderer = gtk_cell_renderer_text_new (); + column = gtk_tree_view_column_new_with_attributes (column_name, + renderer, + "text", column_index, + NULL); + gtk_tree_view_append_column (GTK_TREE_VIEW (tree_view), column); + column_index++; + } + } + } + } + + list_store = g_object_new (GTK_TYPE_LIST_STORE, NULL); + + gtk_list_store_set_column_types (list_store, n_columns, column_types); + + if (forms_data->list_values) { + list_values = g_slist_nth_data (forms_data->list_values, list_number); + if (list_values) { + gchar **row_values = g_strsplit_set (list_values, "|", -1); + if (row_values) { + GtkTreeIter iter; + gchar *row = row_values[0]; + gint position = -1; + i = 0; + + while (row != NULL) { + if (position >= n_columns || position == -1) { + position = 0; + gtk_list_store_append (list_store, &iter); + } + gtk_list_store_set (list_store, &iter, position, row, -1); + position++; + row = row_values[++i]; + } + g_strfreev (row_values); + } + g_free (list_values); + } + } + + gtk_tree_view_set_model (GTK_TREE_VIEW (tree_view), GTK_TREE_MODEL (list_store)); + g_object_unref (list_store); + scrolled_window = gtk_scrolled_window_new (NULL, NULL); + //gtk_scrolled_window_add_with_viewport (GTK_SCROLLED_WINDOW (scrolled_window), + // GTK_WIDGET (tree_view)); + gtk_container_add (GTK_CONTAINER (scrolled_window), GTK_WIDGET (tree_view)); + gtk_widget_set_size_request (GTK_WIDGET (scrolled_window), -1, 100); + gtk_tree_view_set_headers_visible (GTK_TREE_VIEW (tree_view), forms_data->show_header); + + return scrolled_window; +} + void zenity_forms_dialog (ZenityData *data, ZenityFormsData *forms_data) { GtkBuilder *builder = NULL; @@ -41,6 +156,7 @@ void zenity_forms_dialog (ZenityData *data, ZenityFormsData *forms_data) GSList *tmp; gint number_of_widgets = g_slist_length (forms_data->list); + int list_count = 0; zen_data = data; @@ -156,6 +272,22 @@ void zenity_forms_dialog (ZenityData *data, ZenityFormsData *forms_data) 0, 0); break; + case ZENITY_FORMS_LIST: + zenity_value->forms_widget = zenity_forms_create_and_fill_list (forms_data, list_count, + zenity_value->option_value); + gtk_alignment_set (GTK_ALIGNMENT (align), 0.0, 0.02, 0.0, 0.0); + gtk_table_attach (GTK_TABLE (table), + GTK_WIDGET (zenity_value->forms_widget), + 1, + 2, + i, + i+1, + GTK_EXPAND | GTK_FILL, + GTK_EXPAND | GTK_FILL, + 0, + 0); + list_count++; + break; default: zenity_value->forms_widget = gtk_entry_new(); gtk_table_attach (GTK_TABLE (table), @@ -193,6 +325,7 @@ zenity_forms_dialog_response (GtkWidget *widget, int response, gpointer data) guint day, year, month; GDate *date = NULL; gchar time_string[128]; + GtkTreeSelection *selection; switch (response) { case GTK_RESPONSE_OK: @@ -204,6 +337,13 @@ zenity_forms_dialog_response (GtkWidget *widget, int response, gpointer data) case ZENITY_FORMS_ENTRY: g_print("%s", gtk_entry_get_text (GTK_ENTRY (zenity_value->forms_widget))); break; + case ZENITY_FORMS_LIST: + selection = gtk_tree_view_get_selection (GTK_TREE_VIEW (gtk_bin_get_child (GTK_BIN (zenity_value->forms_widget)))); + gtk_tree_selection_selected_foreach (selection, + (GtkTreeSelectionForeachFunc) zenity_forms_dialog_get_selected, + GTK_TREE_VIEW (gtk_bin_get_child (GTK_BIN (zenity_value->forms_widget)))); + zenity_forms_dialog_output (); + break; case ZENITY_FORMS_CALENDAR: gtk_calendar_get_date (GTK_CALENDAR (zenity_value->forms_widget), &day, &month, &year); date = g_date_new_dmy (year, month + 1, day); -- cgit From 5dd7442bd5b544a99553b6e595419ed999ae6eab Mon Sep 17 00:00:00 2001 From: Colin Walters Date: Sun, 12 Aug 2012 12:20:07 -0400 Subject: Fix various compiler warnings (two serious) Missing sentinels can cause crashes. The others are just style. --- src/forms.c | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) (limited to 'src/forms.c') diff --git a/src/forms.c b/src/forms.c index f8f1db53..6a5b08f8 100644 --- a/src/forms.c +++ b/src/forms.c @@ -34,9 +34,9 @@ static void zenity_forms_dialog_get_selected (GtkTreeModel *model, GtkTreePath * { gint n_columns = 0; gint i = 0; + GValue value = {0, }; n_columns = gtk_tree_model_get_n_columns (model); - GValue value = {0, }; for (i = 0; i < n_columns; i++) { gtk_tree_model_get_value (model, iter, i, &value); selected = g_slist_append (selected, g_value_dup_string (&value)); @@ -157,6 +157,7 @@ void zenity_forms_dialog (ZenityData *data, ZenityFormsData *forms_data) gint number_of_widgets = g_slist_length (forms_data->list); int list_count = 0; + int i = 0; zen_data = data; @@ -203,8 +204,6 @@ void zenity_forms_dialog (ZenityData *data, ZenityFormsData *forms_data) gtk_table_resize (GTK_TABLE (table), number_of_widgets, 2); - int i = 0; - for (tmp = forms_data->list; tmp; tmp = tmp->next) { ZenityFormsValue *zenity_value = (ZenityFormsValue *) tmp->data; GtkWidget *label; -- cgit From 1ac1da63f8de626ce10d350be7b29744a743ec95 Mon Sep 17 00:00:00 2001 From: Arx Cruz Date: Tue, 5 Mar 2013 16:56:24 -0300 Subject: But #674881 - Timeout option overriding normal exit code --- src/forms.c | 99 +++++++++++++++++++++++++++++++++---------------------------- 1 file changed, 53 insertions(+), 46 deletions(-) (limited to 'src/forms.c') diff --git a/src/forms.c b/src/forms.c index 6a5b08f8..0bac6679 100644 --- a/src/forms.c +++ b/src/forms.c @@ -44,22 +44,6 @@ static void zenity_forms_dialog_get_selected (GtkTreeModel *model, GtkTreePath * } } -static void zenity_forms_dialog_output (void) -{ - GSList *tmp; - - for (tmp = selected; tmp; tmp = tmp->next) { - if (tmp->next != NULL) { - g_print ("%s,", (gchar *) tmp->data); - } - else - g_print ("%s", (gchar *) tmp->data); - } - - g_slist_foreach (selected, (GFunc) g_free, NULL); - selected = NULL; -} - static GtkWidget * zenity_forms_create_and_fill_list (ZenityFormsData *forms_data, int list_number, gchar *header) @@ -317,49 +301,72 @@ void zenity_forms_dialog (ZenityData *data, ZenityFormsData *forms_data) } static void -zenity_forms_dialog_response (GtkWidget *widget, int response, gpointer data) +zenity_forms_dialog_output (ZenityFormsData *forms_data) { - ZenityFormsData *forms_data = (ZenityFormsData *) data; - GSList *tmp; + GSList *tmp, *tmp2; guint day, year, month; GDate *date = NULL; - gchar time_string[128]; + gchar time_string[128]; GtkTreeSelection *selection; + for (tmp = forms_data->list; tmp; tmp = tmp->next) { + ZenityFormsValue *zenity_value = (ZenityFormsValue *) tmp->data; + switch (zenity_value->type) { + case ZENITY_FORMS_PASSWORD: + case ZENITY_FORMS_ENTRY: + g_print("%s", gtk_entry_get_text (GTK_ENTRY (zenity_value->forms_widget))); + break; + case ZENITY_FORMS_LIST: + selection = gtk_tree_view_get_selection (GTK_TREE_VIEW (gtk_bin_get_child (GTK_BIN (zenity_value->forms_widget)))); + gtk_tree_selection_selected_foreach (selection, + (GtkTreeSelectionForeachFunc) zenity_forms_dialog_get_selected, + GTK_TREE_VIEW (gtk_bin_get_child (GTK_BIN (zenity_value->forms_widget)))); + + for (tmp2 = selected; tmp2; tmp2 = tmp2->next) { + if (tmp->next != NULL) { + g_print ("%s,", (gchar *) tmp2->data); + } + else + g_print ("%s", (gchar *) tmp2->data); + } + + g_slist_foreach (selected, (GFunc) g_free, NULL); + selected = NULL; + + break; + case ZENITY_FORMS_CALENDAR: + gtk_calendar_get_date (GTK_CALENDAR (zenity_value->forms_widget), &day, &month, &year); + date = g_date_new_dmy (year, month + 1, day); + g_date_strftime (time_string, 127, forms_data->date_format, date); + g_print ("%s", time_string); + break; + } + if (tmp->next != NULL) + g_print("%s", forms_data->separator); + } + g_print("\n"); +} + +static void +zenity_forms_dialog_response (GtkWidget *widget, int response, gpointer data) +{ + ZenityFormsData *forms_data = (ZenityFormsData *) data; + switch (response) { case GTK_RESPONSE_OK: + zenity_forms_dialog_output (forms_data); zenity_util_exit_code_with_data(ZENITY_OK, zen_data); - for (tmp = forms_data->list; tmp; tmp = tmp->next) { - ZenityFormsValue *zenity_value = (ZenityFormsValue *) tmp->data; - switch (zenity_value->type) { - case ZENITY_FORMS_PASSWORD: - case ZENITY_FORMS_ENTRY: - g_print("%s", gtk_entry_get_text (GTK_ENTRY (zenity_value->forms_widget))); - break; - case ZENITY_FORMS_LIST: - selection = gtk_tree_view_get_selection (GTK_TREE_VIEW (gtk_bin_get_child (GTK_BIN (zenity_value->forms_widget)))); - gtk_tree_selection_selected_foreach (selection, - (GtkTreeSelectionForeachFunc) zenity_forms_dialog_get_selected, - GTK_TREE_VIEW (gtk_bin_get_child (GTK_BIN (zenity_value->forms_widget)))); - zenity_forms_dialog_output (); - break; - case ZENITY_FORMS_CALENDAR: - gtk_calendar_get_date (GTK_CALENDAR (zenity_value->forms_widget), &day, &month, &year); - date = g_date_new_dmy (year, month + 1, day); - g_date_strftime (time_string, 127, forms_data->date_format, date); - g_print ("%s", time_string); - break; - } - if (tmp->next != NULL) - g_print("%s", forms_data->separator); - } - g_print("\n"); - break; + case GTK_RESPONSE_CANCEL: zen_data->exit_code = zenity_util_return_exit_code (ZENITY_CANCEL); break; + case ZENITY_TIMEOUT: + zenity_forms_dialog_output (forms_data); + zen_data->exit_code = zenity_util_return_exit_code (ZENITY_TIMEOUT); + break; + default: zen_data->exit_code = zenity_util_return_exit_code (ZENITY_ESC); break; -- cgit From 8888114fed6e65da0bf9d4a1642a0b591f14d32f Mon Sep 17 00:00:00 2001 From: Arx Cruz Date: Wed, 25 Sep 2013 09:34:25 -0300 Subject: Added combobox support on forms dialog --- src/forms.c | 71 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 71 insertions(+) (limited to 'src/forms.c') diff --git a/src/forms.c b/src/forms.c index 0bac6679..59c6461f 100644 --- a/src/forms.c +++ b/src/forms.c @@ -44,6 +44,46 @@ static void zenity_forms_dialog_get_selected (GtkTreeModel *model, GtkTreePath * } } +static GtkWidget * +zenity_forms_create_and_fill_combo (ZenityFormsData *forms_data, int combo_number) +{ + GtkListStore *list_store; + GtkWidget *combo_box; + GtkCellRenderer *renderer; + gchar *combo_values; + + list_store = gtk_list_store_new (1, G_TYPE_STRING); + + if (forms_data->combo_values) { + combo_values = g_slist_nth_data (forms_data->combo_values, combo_number); + if (combo_values) { + gchar **row_values = g_strsplit_set (combo_values, "|", -1); + if (row_values) { + gint i = 0; + GtkTreeIter iter; + gchar *row = row_values[i]; + + while (row != NULL) { + gtk_list_store_append (list_store, &iter); + gtk_list_store_set (list_store, &iter, 0, row, -1); + row = row_values[++i]; + } + g_strfreev (row_values); + } + g_free (combo_values); + } + } + + combo_box = gtk_combo_box_new_with_model (GTK_TREE_MODEL (list_store)); + g_object_unref (G_OBJECT (list_store)); + + renderer = gtk_cell_renderer_text_new (); + gtk_cell_layout_pack_start (GTK_CELL_LAYOUT (combo_box), renderer, TRUE); + gtk_cell_layout_set_attributes (GTK_CELL_LAYOUT (combo_box), renderer, "text", 0, NULL); + + return combo_box; +} + static GtkWidget * zenity_forms_create_and_fill_list (ZenityFormsData *forms_data, int list_number, gchar *header) @@ -141,6 +181,7 @@ void zenity_forms_dialog (ZenityData *data, ZenityFormsData *forms_data) gint number_of_widgets = g_slist_length (forms_data->list); int list_count = 0; + int combo_count = 0; int i = 0; zen_data = data; @@ -271,6 +312,21 @@ void zenity_forms_dialog (ZenityData *data, ZenityFormsData *forms_data) 0); list_count++; break; + case ZENITY_FORMS_COMBO: + zenity_value->forms_widget = zenity_forms_create_and_fill_combo (forms_data, combo_count); + gtk_alignment_set (GTK_ALIGNMENT (align), 0.0, 0.02, 0.0, 0.0); + gtk_table_attach (GTK_TABLE (table), + GTK_WIDGET (zenity_value->forms_widget), + 1, + 2, + i, + i+1, + GTK_EXPAND | GTK_FILL, + GTK_EXPAND | GTK_FILL, + 0, + 0); + combo_count++; + break; default: zenity_value->forms_widget = gtk_entry_new(); gtk_table_attach (GTK_TABLE (table), @@ -307,7 +363,10 @@ zenity_forms_dialog_output (ZenityFormsData *forms_data) guint day, year, month; GDate *date = NULL; gchar time_string[128]; + gchar *combo_value = NULL; GtkTreeSelection *selection; + GtkListStore *list_store; + GtkTreeIter iter; for (tmp = forms_data->list; tmp; tmp = tmp->next) { ZenityFormsValue *zenity_value = (ZenityFormsValue *) tmp->data; @@ -340,6 +399,18 @@ zenity_forms_dialog_output (ZenityFormsData *forms_data) g_date_strftime (time_string, 127, forms_data->date_format, date); g_print ("%s", time_string); break; + case ZENITY_FORMS_COMBO: + if (gtk_combo_box_get_active_iter (GTK_COMBO_BOX (zenity_value->forms_widget), &iter)) { + list_store = GTK_LIST_STORE (gtk_combo_box_get_model (GTK_COMBO_BOX (zenity_value->forms_widget))); + gtk_tree_model_get (GTK_TREE_MODEL (list_store), &iter, 0, &combo_value, -1); + g_object_unref (G_OBJECT (list_store)); + + g_print ("%s", combo_value); + g_free (combo_value); + } else + g_print (" "); + break; + } if (tmp->next != NULL) g_print("%s", forms_data->separator); -- cgit From 6fcbb80fd1b5268fbedcdb985ffa873a2e475840 Mon Sep 17 00:00:00 2001 From: Javier Jardón Date: Sun, 22 Mar 2015 04:57:05 +0000 Subject: Do not use an icon for Cancel/OK buttons GTK+ documentation recommends to not use an icons, but use "_OK"/"_Cancel" labels instead --- src/forms.c | 4 ---- 1 file changed, 4 deletions(-) (limited to 'src/forms.c') diff --git a/src/forms.c b/src/forms.c index 59c6461f..072908e6 100644 --- a/src/forms.c +++ b/src/forms.c @@ -209,15 +209,11 @@ void zenity_forms_dialog (ZenityData *data, ZenityFormsData *forms_data) if (data->ok_label) { button = GTK_WIDGET (gtk_builder_get_object (builder, "zenity_forms_ok_button")); gtk_button_set_label (GTK_BUTTON (button), data->ok_label); - gtk_button_set_image (GTK_BUTTON (button), - gtk_image_new_from_stock (GTK_STOCK_OK, GTK_ICON_SIZE_BUTTON)); } if (data->cancel_label) { button = GTK_WIDGET (gtk_builder_get_object (builder, "zenity_forms_cancel_button")); gtk_button_set_label (GTK_BUTTON (button), data->cancel_label); - gtk_button_set_image (GTK_BUTTON (button), - gtk_image_new_from_stock (GTK_STOCK_CANCEL, GTK_ICON_SIZE_BUTTON)); } text = GTK_WIDGET (gtk_builder_get_object (builder, "zenity_forms_text")); -- cgit From fcb28a3a141d272a5ca8ec5ef64233b66a746395 Mon Sep 17 00:00:00 2001 From: Javier Jardón Date: Sun, 22 Mar 2015 08:05:26 +0000 Subject: forms: Use GtkGrid instead deprecated GtkTable/GtkAlignment --- src/forms.c | 98 ++++++++----------------------------------------------------- 1 file changed, 13 insertions(+), 85 deletions(-) (limited to 'src/forms.c') diff --git a/src/forms.c b/src/forms.c index 072908e6..3e19f4c5 100644 --- a/src/forms.c +++ b/src/forms.c @@ -173,13 +173,12 @@ void zenity_forms_dialog (ZenityData *data, ZenityFormsData *forms_data) { GtkBuilder *builder = NULL; GtkWidget *dialog; - GtkWidget *table; + GtkWidget *grid; GtkWidget *text; GtkWidget *button; GSList *tmp; - gint number_of_widgets = g_slist_length (forms_data->list); int list_count = 0; int combo_count = 0; int i = 0; @@ -221,122 +220,51 @@ void zenity_forms_dialog (ZenityData *data, ZenityFormsData *forms_data) if (forms_data->dialog_text) gtk_label_set_markup (GTK_LABEL (text), g_strcompress (forms_data->dialog_text)); - table = GTK_WIDGET (gtk_builder_get_object (builder, "zenity_forms_table")); - - gtk_table_resize (GTK_TABLE (table), number_of_widgets, 2); + grid = GTK_WIDGET (gtk_builder_get_object (builder, "zenity_forms_grid")); for (tmp = forms_data->list; tmp; tmp = tmp->next) { ZenityFormsValue *zenity_value = (ZenityFormsValue *) tmp->data; GtkWidget *label; - GtkWidget *align; label = gtk_label_new(zenity_value->option_value); - - align = gtk_alignment_new (0.0, 0.5, 0.0, 0.0); - gtk_container_add (GTK_CONTAINER (align), label); - - gtk_table_attach (GTK_TABLE (table), - GTK_WIDGET (align), - 0, - 1, - i, - i+1, - GTK_FILL, - GTK_FILL, - 0, - 0); + gtk_widget_set_halign (label, GTK_ALIGN_START); + gtk_grid_attach (GTK_GRID (grid), + label, + 0, i, + 1, 1); switch(zenity_value->type) { case ZENITY_FORMS_ENTRY: zenity_value->forms_widget = gtk_entry_new(); - gtk_table_attach (GTK_TABLE (table), - GTK_WIDGET (zenity_value->forms_widget), - 1, - 2, - i, - i+1, - GTK_EXPAND | GTK_FILL, - GTK_EXPAND | GTK_FILL, - 0, - 0); break; case ZENITY_FORMS_PASSWORD: zenity_value->forms_widget = gtk_entry_new(); gtk_entry_set_visibility(GTK_ENTRY(zenity_value->forms_widget), FALSE); - gtk_table_attach (GTK_TABLE (table), - GTK_WIDGET (zenity_value->forms_widget), - 1, - 2, - i, - i+1, - GTK_EXPAND | GTK_FILL, - GTK_EXPAND | GTK_FILL, - 0, - 0); break; case ZENITY_FORMS_CALENDAR: zenity_value->forms_widget = gtk_calendar_new(); - gtk_alignment_set (GTK_ALIGNMENT (align), 0.0, 0.02, 0.0, 0.0); - align = gtk_alignment_new (0.0, 0.5, 0.0, 0.0); - gtk_container_add (GTK_CONTAINER (align), zenity_value->forms_widget); - gtk_table_attach (GTK_TABLE (table), - GTK_WIDGET (align), - 1, - 2, - i, - i+1, - GTK_FILL, - GTK_FILL, - 0, - 0); break; case ZENITY_FORMS_LIST: zenity_value->forms_widget = zenity_forms_create_and_fill_list (forms_data, list_count, zenity_value->option_value); - gtk_alignment_set (GTK_ALIGNMENT (align), 0.0, 0.02, 0.0, 0.0); - gtk_table_attach (GTK_TABLE (table), - GTK_WIDGET (zenity_value->forms_widget), - 1, - 2, - i, - i+1, - GTK_EXPAND | GTK_FILL, - GTK_EXPAND | GTK_FILL, - 0, - 0); list_count++; break; case ZENITY_FORMS_COMBO: zenity_value->forms_widget = zenity_forms_create_and_fill_combo (forms_data, combo_count); - gtk_alignment_set (GTK_ALIGNMENT (align), 0.0, 0.02, 0.0, 0.0); - gtk_table_attach (GTK_TABLE (table), - GTK_WIDGET (zenity_value->forms_widget), - 1, - 2, - i, - i+1, - GTK_EXPAND | GTK_FILL, - GTK_EXPAND | GTK_FILL, - 0, - 0); combo_count++; break; default: zenity_value->forms_widget = gtk_entry_new(); - gtk_table_attach (GTK_TABLE (table), - GTK_WIDGET (zenity_value->forms_widget), - 1, - 2, - i, - i+1, - GTK_EXPAND | GTK_FILL, - GTK_EXPAND | GTK_FILL, - 0, - 0); break; } + + gtk_grid_attach_next_to (GTK_GRID (grid), + GTK_WIDGET (zenity_value->forms_widget), + label, + GTK_POS_RIGHT, + 1, 1); i++; } -- cgit From ba5ea0386de2a80a664fb28d3af7e8d395968314 Mon Sep 17 00:00:00 2001 From: Gama Anderson Date: Sat, 28 Feb 2015 20:06:09 +0100 Subject: ADD gchar **extra_label TO struct ZenityData this is done to keep the name of the extra buttons ADD general option "extra-button" with string array as argument This will upon consecutive calls save the name of buttons in an array of strings To all MODES, except notification.c and about.c ADD if (data->extra_label) { gint i=0; while(data->extra_label[i]!=NULL){ gtk_dialog_add_button (GTK_DIALOG (dialog), data->extra_label[i], i); i++; } } This add the extra buttons to the dialog. The response is the number of the button To all MODES response, except notification.c and about.c ADD default: if (response < g_strv_length(zen_data->extra_label)) printf("%s\n",zen_data->extra_label[response]); This will print the button name to stdout when they are pressed ADD question option "switch" This will suppress the standard "ok" and "cancel" button in question. This just wort in combination with --extra-button, otherwise error is raised. https://bugzilla.gnome.org/show_bug.cgi?id=118016 --- src/forms.c | 10 ++++++++++ 1 file changed, 10 insertions(+) (limited to 'src/forms.c') diff --git a/src/forms.c b/src/forms.c index 59c6461f..1923790f 100644 --- a/src/forms.c +++ b/src/forms.c @@ -206,6 +206,14 @@ void zenity_forms_dialog (ZenityData *data, ZenityFormsData *forms_data) if (data->width > -1 || data->height > -1) gtk_window_set_default_size (GTK_WINDOW (dialog), data->width, data->height); + if (data->extra_label) { + gint i=0; + while(data->extra_label[i]!=NULL){ + gtk_dialog_add_button (GTK_DIALOG (dialog), data->extra_label[i], i); + i++; + } + } + if (data->ok_label) { button = GTK_WIDGET (gtk_builder_get_object (builder, "zenity_forms_ok_button")); gtk_button_set_label (GTK_BUTTON (button), data->ok_label); @@ -439,6 +447,8 @@ zenity_forms_dialog_response (GtkWidget *widget, int response, gpointer data) break; default: + if (response < g_strv_length(zen_data->extra_label)) + printf("%s\n",zen_data->extra_label[response]); zen_data->exit_code = zenity_util_return_exit_code (ZENITY_ESC); break; } -- cgit From d063797fdfa73e5bec96d9399ab1bf47173a62d4 Mon Sep 17 00:00:00 2001 From: Arx Cruz Date: Fri, 2 Oct 2015 14:35:06 +0200 Subject: Fixing GLib-CRITICAL messages --- src/forms.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'src/forms.c') diff --git a/src/forms.c b/src/forms.c index 53e94238..5241780c 100644 --- a/src/forms.c +++ b/src/forms.c @@ -371,7 +371,7 @@ zenity_forms_dialog_response (GtkWidget *widget, int response, gpointer data) break; default: - if (response < g_strv_length(zen_data->extra_label)) + if (zen_data->extra_label && response < g_strv_length(zen_data->extra_label)) printf("%s\n",zen_data->extra_label[response]); zen_data->exit_code = zenity_util_return_exit_code (ZENITY_ESC); break; -- cgit From 4eddb202cafdcabc254aa941ad1348ff09372627 Mon Sep 17 00:00:00 2001 From: Arx Cruz Date: Fri, 7 Apr 2017 14:00:42 +0200 Subject: Fix style Fixing style in all zenity code, removing useless spaces, empty lines, all code in 80 columns, etc. --- src/forms.c | 708 +++++++++++++++++++++++++++++++----------------------------- 1 file changed, 369 insertions(+), 339 deletions(-) (limited to 'src/forms.c') diff --git a/src/forms.c b/src/forms.c index 5241780c..4e6fca5d 100644 --- a/src/forms.c +++ b/src/forms.c @@ -22,360 +22,390 @@ */ #include "config.h" -#include -#include "zenity.h" #include "util.h" +#include "zenity.h" +#include static ZenityData *zen_data; static GSList *selected; -static void zenity_forms_dialog_response (GtkWidget *widget, int response, gpointer data); - -static void zenity_forms_dialog_get_selected (GtkTreeModel *model, GtkTreePath *path_buf, GtkTreeIter *iter, GtkTreeView *tree_view) -{ - gint n_columns = 0; - gint i = 0; - GValue value = {0, }; - - n_columns = gtk_tree_model_get_n_columns (model); - for (i = 0; i < n_columns; i++) { - gtk_tree_model_get_value (model, iter, i, &value); - selected = g_slist_append (selected, g_value_dup_string (&value)); - g_value_unset (&value); - } +static void zenity_forms_dialog_response ( + GtkWidget *widget, int response, gpointer data); + +static void +zenity_forms_dialog_get_selected (GtkTreeModel *model, GtkTreePath *path_buf, + GtkTreeIter *iter, GtkTreeView *tree_view) { + gint n_columns = 0; + gint i = 0; + GValue value = { + 0, + }; + + n_columns = gtk_tree_model_get_n_columns (model); + for (i = 0; i < n_columns; i++) { + gtk_tree_model_get_value (model, iter, i, &value); + selected = g_slist_append (selected, g_value_dup_string (&value)); + g_value_unset (&value); + } } static GtkWidget * -zenity_forms_create_and_fill_combo (ZenityFormsData *forms_data, int combo_number) -{ - GtkListStore *list_store; - GtkWidget *combo_box; - GtkCellRenderer *renderer; - gchar *combo_values; - - list_store = gtk_list_store_new (1, G_TYPE_STRING); - - if (forms_data->combo_values) { - combo_values = g_slist_nth_data (forms_data->combo_values, combo_number); - if (combo_values) { - gchar **row_values = g_strsplit_set (combo_values, "|", -1); - if (row_values) { - gint i = 0; - GtkTreeIter iter; - gchar *row = row_values[i]; - - while (row != NULL) { - gtk_list_store_append (list_store, &iter); - gtk_list_store_set (list_store, &iter, 0, row, -1); - row = row_values[++i]; - } - g_strfreev (row_values); - } - g_free (combo_values); - } - } - - combo_box = gtk_combo_box_new_with_model (GTK_TREE_MODEL (list_store)); - g_object_unref (G_OBJECT (list_store)); - - renderer = gtk_cell_renderer_text_new (); - gtk_cell_layout_pack_start (GTK_CELL_LAYOUT (combo_box), renderer, TRUE); - gtk_cell_layout_set_attributes (GTK_CELL_LAYOUT (combo_box), renderer, "text", 0, NULL); - - return combo_box; +zenity_forms_create_and_fill_combo ( + ZenityFormsData *forms_data, int combo_number) { + GtkListStore *list_store; + GtkWidget *combo_box; + GtkCellRenderer *renderer; + gchar *combo_values; + + list_store = gtk_list_store_new (1, G_TYPE_STRING); + + if (forms_data->combo_values) { + combo_values = + g_slist_nth_data (forms_data->combo_values, combo_number); + if (combo_values) { + gchar **row_values = g_strsplit_set (combo_values, "|", -1); + if (row_values) { + gint i = 0; + GtkTreeIter iter; + gchar *row = row_values[i]; + + while (row != NULL) { + gtk_list_store_append (list_store, &iter); + gtk_list_store_set (list_store, &iter, 0, row, -1); + row = row_values[++i]; + } + g_strfreev (row_values); + } + g_free (combo_values); + } + } + + combo_box = gtk_combo_box_new_with_model (GTK_TREE_MODEL (list_store)); + g_object_unref (G_OBJECT (list_store)); + + renderer = gtk_cell_renderer_text_new (); + gtk_cell_layout_pack_start (GTK_CELL_LAYOUT (combo_box), renderer, TRUE); + gtk_cell_layout_set_attributes ( + GTK_CELL_LAYOUT (combo_box), renderer, "text", 0, NULL); + + return combo_box; } -static GtkWidget * -zenity_forms_create_and_fill_list (ZenityFormsData *forms_data, - int list_number, gchar *header) -{ - GtkListStore *list_store; - GtkWidget *tree_view; - GtkWidget *scrolled_window; - GtkCellRenderer *renderer; - GtkTreeViewColumn *column; - GType *column_types = NULL; - gchar *list_values; - gchar *column_values; - - gint i = 0; - /* If no column names available, default is one */ - gint n_columns = 1; - gint column_index = 0; - - tree_view = gtk_tree_view_new (); - - if (forms_data->column_values) { - column_values = g_slist_nth_data (forms_data->column_values, list_number); - if (column_values) { - gchar **values = g_strsplit_set (column_values, "|", -1); - if (values) { - n_columns = g_strv_length (values); - column_types = g_new (GType, n_columns); - for (i = 0; i < n_columns; i++) - column_types[i] = G_TYPE_STRING; - - for (i = 0; i < n_columns; i++) { - gchar *column_name = values[i]; - renderer = gtk_cell_renderer_text_new (); - column = gtk_tree_view_column_new_with_attributes (column_name, - renderer, - "text", column_index, - NULL); - gtk_tree_view_append_column (GTK_TREE_VIEW (tree_view), column); - column_index++; - } - } - } - } - - list_store = g_object_new (GTK_TYPE_LIST_STORE, NULL); - - gtk_list_store_set_column_types (list_store, n_columns, column_types); - - if (forms_data->list_values) { - list_values = g_slist_nth_data (forms_data->list_values, list_number); - if (list_values) { - gchar **row_values = g_strsplit_set (list_values, "|", -1); - if (row_values) { - GtkTreeIter iter; - gchar *row = row_values[0]; - gint position = -1; - i = 0; - - while (row != NULL) { - if (position >= n_columns || position == -1) { - position = 0; - gtk_list_store_append (list_store, &iter); - } - gtk_list_store_set (list_store, &iter, position, row, -1); - position++; - row = row_values[++i]; - } - g_strfreev (row_values); - } - g_free (list_values); - } - } - - gtk_tree_view_set_model (GTK_TREE_VIEW (tree_view), GTK_TREE_MODEL (list_store)); - g_object_unref (list_store); - scrolled_window = gtk_scrolled_window_new (NULL, NULL); - //gtk_scrolled_window_add_with_viewport (GTK_SCROLLED_WINDOW (scrolled_window), - // GTK_WIDGET (tree_view)); - gtk_container_add (GTK_CONTAINER (scrolled_window), GTK_WIDGET (tree_view)); - gtk_widget_set_size_request (GTK_WIDGET (scrolled_window), -1, 100); - gtk_tree_view_set_headers_visible (GTK_TREE_VIEW (tree_view), forms_data->show_header); - - return scrolled_window; +static GtkWidget * +zenity_forms_create_and_fill_list ( + ZenityFormsData *forms_data, int list_number, gchar *header) { + GtkListStore *list_store; + GtkWidget *tree_view; + GtkWidget *scrolled_window; + GtkCellRenderer *renderer; + GtkTreeViewColumn *column; + GType *column_types = NULL; + gchar *list_values; + gchar *column_values; + + gint i = 0; + /* If no column names available, default is one */ + gint n_columns = 1; + gint column_index = 0; + + tree_view = gtk_tree_view_new (); + + if (forms_data->column_values) { + column_values = + g_slist_nth_data (forms_data->column_values, list_number); + if (column_values) { + gchar **values = g_strsplit_set (column_values, "|", -1); + if (values) { + n_columns = g_strv_length (values); + column_types = g_new (GType, n_columns); + for (i = 0; i < n_columns; i++) + column_types[i] = G_TYPE_STRING; + + for (i = 0; i < n_columns; i++) { + gchar *column_name = values[i]; + renderer = gtk_cell_renderer_text_new (); + column = gtk_tree_view_column_new_with_attributes ( + column_name, renderer, "text", column_index, NULL); + gtk_tree_view_append_column ( + GTK_TREE_VIEW (tree_view), column); + column_index++; + } + } + } + } + + list_store = g_object_new (GTK_TYPE_LIST_STORE, NULL); + + gtk_list_store_set_column_types (list_store, n_columns, column_types); + + if (forms_data->list_values) { + list_values = g_slist_nth_data (forms_data->list_values, list_number); + if (list_values) { + gchar **row_values = g_strsplit_set (list_values, "|", -1); + if (row_values) { + GtkTreeIter iter; + gchar *row = row_values[0]; + gint position = -1; + i = 0; + + while (row != NULL) { + if (position >= n_columns || position == -1) { + position = 0; + gtk_list_store_append (list_store, &iter); + } + gtk_list_store_set (list_store, &iter, position, row, -1); + position++; + row = row_values[++i]; + } + g_strfreev (row_values); + } + g_free (list_values); + } + } + + gtk_tree_view_set_model ( + GTK_TREE_VIEW (tree_view), GTK_TREE_MODEL (list_store)); + g_object_unref (list_store); + scrolled_window = gtk_scrolled_window_new (NULL, NULL); + // gtk_scrolled_window_add_with_viewport (GTK_SCROLLED_WINDOW + // (scrolled_window), + // GTK_WIDGET (tree_view)); + gtk_container_add (GTK_CONTAINER (scrolled_window), GTK_WIDGET (tree_view)); + gtk_widget_set_size_request (GTK_WIDGET (scrolled_window), -1, 100); + gtk_tree_view_set_headers_visible ( + GTK_TREE_VIEW (tree_view), forms_data->show_header); + + return scrolled_window; } -void zenity_forms_dialog (ZenityData *data, ZenityFormsData *forms_data) -{ - GtkBuilder *builder = NULL; - GtkWidget *dialog; - GtkWidget *grid; - GtkWidget *text; - GtkWidget *button; - - GSList *tmp; - - int list_count = 0; - int combo_count = 0; - int i = 0; - - zen_data = data; - - builder = zenity_util_load_ui_file("zenity_forms_dialog", NULL); - - if (builder == NULL) { - data->exit_code = zenity_util_return_exit_code (ZENITY_ERROR); - return; - } - - gtk_builder_connect_signals(builder, NULL); - - dialog = GTK_WIDGET (gtk_builder_get_object (builder, "zenity_forms_dialog")); - - g_signal_connect (G_OBJECT(dialog), "response", - G_CALLBACK (zenity_forms_dialog_response), forms_data); - - if (data->dialog_title) - gtk_window_set_title (GTK_WINDOW (dialog), data->dialog_title); - - if (data->width > -1 || data->height > -1) - gtk_window_set_default_size (GTK_WINDOW (dialog), data->width, data->height); - - if (data->extra_label) { - gint i=0; - while(data->extra_label[i]!=NULL){ - gtk_dialog_add_button (GTK_DIALOG (dialog), data->extra_label[i], i); - i++; - } - } - - if (data->ok_label) { - button = GTK_WIDGET (gtk_builder_get_object (builder, "zenity_forms_ok_button")); - gtk_button_set_label (GTK_BUTTON (button), data->ok_label); - } - - if (data->cancel_label) { - button = GTK_WIDGET (gtk_builder_get_object (builder, "zenity_forms_cancel_button")); - gtk_button_set_label (GTK_BUTTON (button), data->cancel_label); - } - - text = GTK_WIDGET (gtk_builder_get_object (builder, "zenity_forms_text")); - - if (forms_data->dialog_text) - gtk_label_set_markup (GTK_LABEL (text), g_strcompress (forms_data->dialog_text)); - - grid = GTK_WIDGET (gtk_builder_get_object (builder, "zenity_forms_grid")); - - for (tmp = forms_data->list; tmp; tmp = tmp->next) { - ZenityFormsValue *zenity_value = (ZenityFormsValue *) tmp->data; - GtkWidget *label; - - label = gtk_label_new(zenity_value->option_value); - gtk_widget_set_halign (label, GTK_ALIGN_START); - gtk_grid_attach (GTK_GRID (grid), - label, - 0, i, - 1, 1); - - switch(zenity_value->type) - { - case ZENITY_FORMS_ENTRY: - zenity_value->forms_widget = gtk_entry_new(); - break; - case ZENITY_FORMS_PASSWORD: - zenity_value->forms_widget = gtk_entry_new(); - gtk_entry_set_visibility(GTK_ENTRY(zenity_value->forms_widget), - FALSE); - break; - case ZENITY_FORMS_CALENDAR: - zenity_value->forms_widget = gtk_calendar_new(); - break; - case ZENITY_FORMS_LIST: - zenity_value->forms_widget = zenity_forms_create_and_fill_list (forms_data, list_count, - zenity_value->option_value); - list_count++; - break; - case ZENITY_FORMS_COMBO: - zenity_value->forms_widget = zenity_forms_create_and_fill_combo (forms_data, combo_count); - combo_count++; - break; - default: - zenity_value->forms_widget = gtk_entry_new(); - break; - } - - gtk_grid_attach_next_to (GTK_GRID (grid), - GTK_WIDGET (zenity_value->forms_widget), - label, - GTK_POS_RIGHT, - 1, 1); - - i++; - } - - gtk_widget_show_all (GTK_WIDGET (dialog)); - - g_object_unref (builder); - - if (data->timeout_delay > 0) { - g_timeout_add_seconds (data->timeout_delay, (GSourceFunc) zenity_util_timeout_handle, dialog); - } - - gtk_main(); +void +zenity_forms_dialog (ZenityData *data, ZenityFormsData *forms_data) { + GtkBuilder *builder = NULL; + GtkWidget *dialog; + GtkWidget *grid; + GtkWidget *text; + GtkWidget *button; + + GSList *tmp; + + int list_count = 0; + int combo_count = 0; + int i = 0; + + zen_data = data; + + builder = zenity_util_load_ui_file ("zenity_forms_dialog", NULL); + + if (builder == NULL) { + data->exit_code = zenity_util_return_exit_code (ZENITY_ERROR); + return; + } + + gtk_builder_connect_signals (builder, NULL); + + dialog = + GTK_WIDGET (gtk_builder_get_object (builder, "zenity_forms_dialog")); + + g_signal_connect (G_OBJECT (dialog), + "response", + G_CALLBACK (zenity_forms_dialog_response), + forms_data); + + if (data->dialog_title) + gtk_window_set_title (GTK_WINDOW (dialog), data->dialog_title); + + if (data->width > -1 || data->height > -1) + gtk_window_set_default_size ( + GTK_WINDOW (dialog), data->width, data->height); + + if (data->extra_label) { + gint i = 0; + while (data->extra_label[i] != NULL) { + gtk_dialog_add_button ( + GTK_DIALOG (dialog), data->extra_label[i], i); + i++; + } + } + + if (data->ok_label) { + button = GTK_WIDGET ( + gtk_builder_get_object (builder, "zenity_forms_ok_button")); + gtk_button_set_label (GTK_BUTTON (button), data->ok_label); + } + + if (data->cancel_label) { + button = GTK_WIDGET ( + gtk_builder_get_object (builder, "zenity_forms_cancel_button")); + gtk_button_set_label (GTK_BUTTON (button), data->cancel_label); + } + + text = GTK_WIDGET (gtk_builder_get_object (builder, "zenity_forms_text")); + + if (forms_data->dialog_text) + gtk_label_set_markup ( + GTK_LABEL (text), g_strcompress (forms_data->dialog_text)); + + grid = GTK_WIDGET (gtk_builder_get_object (builder, "zenity_forms_grid")); + + for (tmp = forms_data->list; tmp; tmp = tmp->next) { + ZenityFormsValue *zenity_value = (ZenityFormsValue *) tmp->data; + GtkWidget *label; + + label = gtk_label_new (zenity_value->option_value); + gtk_widget_set_halign (label, GTK_ALIGN_START); + gtk_grid_attach (GTK_GRID (grid), label, 0, i, 1, 1); + + switch (zenity_value->type) { + case ZENITY_FORMS_ENTRY: + zenity_value->forms_widget = gtk_entry_new (); + break; + case ZENITY_FORMS_PASSWORD: + zenity_value->forms_widget = gtk_entry_new (); + gtk_entry_set_visibility ( + GTK_ENTRY (zenity_value->forms_widget), FALSE); + break; + case ZENITY_FORMS_CALENDAR: + zenity_value->forms_widget = gtk_calendar_new (); + break; + case ZENITY_FORMS_LIST: + zenity_value->forms_widget = zenity_forms_create_and_fill_list ( + forms_data, list_count, zenity_value->option_value); + list_count++; + break; + case ZENITY_FORMS_COMBO: + zenity_value->forms_widget = + zenity_forms_create_and_fill_combo ( + forms_data, combo_count); + combo_count++; + break; + default: + zenity_value->forms_widget = gtk_entry_new (); + break; + } + + gtk_grid_attach_next_to (GTK_GRID (grid), + GTK_WIDGET (zenity_value->forms_widget), + label, + GTK_POS_RIGHT, + 1, + 1); + + i++; + } + + gtk_widget_show_all (GTK_WIDGET (dialog)); + + g_object_unref (builder); + + if (data->timeout_delay > 0) { + g_timeout_add_seconds (data->timeout_delay, + (GSourceFunc) zenity_util_timeout_handle, + dialog); + } + + gtk_main (); } static void -zenity_forms_dialog_output (ZenityFormsData *forms_data) -{ - GSList *tmp, *tmp2; - guint day, year, month; - GDate *date = NULL; - gchar time_string[128]; - gchar *combo_value = NULL; - GtkTreeSelection *selection; - GtkListStore *list_store; - GtkTreeIter iter; - - for (tmp = forms_data->list; tmp; tmp = tmp->next) { - ZenityFormsValue *zenity_value = (ZenityFormsValue *) tmp->data; - switch (zenity_value->type) { - case ZENITY_FORMS_PASSWORD: - case ZENITY_FORMS_ENTRY: - g_print("%s", gtk_entry_get_text (GTK_ENTRY (zenity_value->forms_widget))); - break; - case ZENITY_FORMS_LIST: - selection = gtk_tree_view_get_selection (GTK_TREE_VIEW (gtk_bin_get_child (GTK_BIN (zenity_value->forms_widget)))); - gtk_tree_selection_selected_foreach (selection, - (GtkTreeSelectionForeachFunc) zenity_forms_dialog_get_selected, - GTK_TREE_VIEW (gtk_bin_get_child (GTK_BIN (zenity_value->forms_widget)))); - - for (tmp2 = selected; tmp2; tmp2 = tmp2->next) { - if (tmp->next != NULL) { - g_print ("%s,", (gchar *) tmp2->data); - } - else - g_print ("%s", (gchar *) tmp2->data); - } - - g_slist_foreach (selected, (GFunc) g_free, NULL); - selected = NULL; - - break; - case ZENITY_FORMS_CALENDAR: - gtk_calendar_get_date (GTK_CALENDAR (zenity_value->forms_widget), &day, &month, &year); - date = g_date_new_dmy (year, month + 1, day); - g_date_strftime (time_string, 127, forms_data->date_format, date); - g_print ("%s", time_string); - break; - case ZENITY_FORMS_COMBO: - if (gtk_combo_box_get_active_iter (GTK_COMBO_BOX (zenity_value->forms_widget), &iter)) { - list_store = GTK_LIST_STORE (gtk_combo_box_get_model (GTK_COMBO_BOX (zenity_value->forms_widget))); - gtk_tree_model_get (GTK_TREE_MODEL (list_store), &iter, 0, &combo_value, -1); - g_object_unref (G_OBJECT (list_store)); - - g_print ("%s", combo_value); - g_free (combo_value); - } else - g_print (" "); - break; - - } - if (tmp->next != NULL) - g_print("%s", forms_data->separator); - } - g_print("\n"); +zenity_forms_dialog_output (ZenityFormsData *forms_data) { + GSList *tmp, *tmp2; + guint day, year, month; + GDate *date = NULL; + gchar time_string[128]; + gchar *combo_value = NULL; + GtkTreeSelection *selection; + GtkListStore *list_store; + GtkTreeIter iter; + + for (tmp = forms_data->list; tmp; tmp = tmp->next) { + ZenityFormsValue *zenity_value = (ZenityFormsValue *) tmp->data; + switch (zenity_value->type) { + case ZENITY_FORMS_PASSWORD: + case ZENITY_FORMS_ENTRY: + g_print ("%s", + gtk_entry_get_text ( + GTK_ENTRY (zenity_value->forms_widget))); + break; + case ZENITY_FORMS_LIST: + selection = gtk_tree_view_get_selection (GTK_TREE_VIEW ( + gtk_bin_get_child (GTK_BIN (zenity_value->forms_widget)))); + gtk_tree_selection_selected_foreach (selection, + (GtkTreeSelectionForeachFunc) + zenity_forms_dialog_get_selected, + GTK_TREE_VIEW (gtk_bin_get_child ( + GTK_BIN (zenity_value->forms_widget)))); + + for (tmp2 = selected; tmp2; tmp2 = tmp2->next) { + if (tmp->next != NULL) { + g_print ("%s,", (gchar *) tmp2->data); + } else + g_print ("%s", (gchar *) tmp2->data); + } + + g_slist_foreach (selected, (GFunc) g_free, NULL); + selected = NULL; + + break; + case ZENITY_FORMS_CALENDAR: + gtk_calendar_get_date ( + GTK_CALENDAR (zenity_value->forms_widget), + &day, + &month, + &year); + date = g_date_new_dmy (year, month + 1, day); + g_date_strftime ( + time_string, 127, forms_data->date_format, date); + g_print ("%s", time_string); + break; + case ZENITY_FORMS_COMBO: + if (gtk_combo_box_get_active_iter ( + GTK_COMBO_BOX (zenity_value->forms_widget), &iter)) { + list_store = GTK_LIST_STORE (gtk_combo_box_get_model ( + GTK_COMBO_BOX (zenity_value->forms_widget))); + gtk_tree_model_get (GTK_TREE_MODEL (list_store), + &iter, + 0, + &combo_value, + -1); + g_object_unref (G_OBJECT (list_store)); + + g_print ("%s", combo_value); + g_free (combo_value); + } else + g_print (" "); + break; + } + if (tmp->next != NULL) + g_print ("%s", forms_data->separator); + } + g_print ("\n"); } static void -zenity_forms_dialog_response (GtkWidget *widget, int response, gpointer data) -{ - ZenityFormsData *forms_data = (ZenityFormsData *) data; - - switch (response) { - case GTK_RESPONSE_OK: - zenity_forms_dialog_output (forms_data); - zenity_util_exit_code_with_data(ZENITY_OK, zen_data); - break; - - case GTK_RESPONSE_CANCEL: - zen_data->exit_code = zenity_util_return_exit_code (ZENITY_CANCEL); - break; - - case ZENITY_TIMEOUT: - zenity_forms_dialog_output (forms_data); - zen_data->exit_code = zenity_util_return_exit_code (ZENITY_TIMEOUT); - break; - - default: - if (zen_data->extra_label && response < g_strv_length(zen_data->extra_label)) - printf("%s\n",zen_data->extra_label[response]); - zen_data->exit_code = zenity_util_return_exit_code (ZENITY_ESC); - break; - } - - gtk_main_quit (); +zenity_forms_dialog_response (GtkWidget *widget, int response, gpointer data) { + ZenityFormsData *forms_data = (ZenityFormsData *) data; + + switch (response) { + case GTK_RESPONSE_OK: + zenity_forms_dialog_output (forms_data); + zenity_util_exit_code_with_data (ZENITY_OK, zen_data); + break; + + case GTK_RESPONSE_CANCEL: + zen_data->exit_code = zenity_util_return_exit_code (ZENITY_CANCEL); + break; + + case ZENITY_TIMEOUT: + zenity_forms_dialog_output (forms_data); + zen_data->exit_code = zenity_util_return_exit_code (ZENITY_TIMEOUT); + break; + + default: + if (zen_data->extra_label && + response < g_strv_length (zen_data->extra_label)) + printf ("%s\n", zen_data->extra_label[response]); + zen_data->exit_code = zenity_util_return_exit_code (ZENITY_ESC); + break; + } + + gtk_main_quit (); } -- cgit