diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/Makefile.am | 57 | ||||
-rw-r--r-- | src/about.c | 48 | ||||
-rw-r--r-- | src/calendar.c | 5 | ||||
-rw-r--r-- | src/color.c | 22 | ||||
-rw-r--r-- | src/entry.c | 4 | ||||
-rw-r--r-- | src/main.c | 21 | ||||
-rw-r--r-- | src/meson.build | 10 | ||||
-rw-r--r-- | src/msg.c | 20 | ||||
-rw-r--r-- | src/notification.c | 12 | ||||
-rw-r--r-- | src/progress.c | 33 | ||||
-rw-r--r-- | src/scale.c | 4 | ||||
-rw-r--r-- | src/text.c | 6 | ||||
-rw-r--r-- | src/tree.c | 128 | ||||
-rw-r--r-- | src/util.c | 105 |
14 files changed, 139 insertions, 336 deletions
diff --git a/src/Makefile.am b/src/Makefile.am deleted file mode 100644 index bcdd205..0000000 --- a/src/Makefile.am +++ /dev/null @@ -1,57 +0,0 @@ -bin_PROGRAMS = zenity - -bin_SCRIPTS = gdialog - -zenity_SOURCES = \ - about.c \ - calendar.c \ - entry.c \ - fileselection.c \ - main.c \ - msg.c \ - notification.c \ - option.c \ - option.h \ - progress.c \ - scale.c \ - text.c \ - tree.c \ - color.c \ - password.c \ - util.c \ - util.h \ - forms.c \ - zenity.h - -zenity_CPPFLAGS = \ - -DGNOMELOCALEDIR=\""$(datadir)/locale"\" \ - -DZENITY_DATADIR=\""$(pkgdatadir)"\" \ - $(AM_CPPFLAGS) - -zenity_CFLAGS = \ - $(ZENITY_CFLAGS) \ - $(LIBNOTIFY_CFLAGS) \ - $(WEBKIT_CFLAGS) \ - $(WARN_CFLAGS) \ - $(AM_CFLAGS) - -zenity_LDFLAGS = \ - $(AM_LDFLAGS) - -zenity_LDADD = \ - $(ZENITY_LIBS) \ - $(LIBNOTIFY_LIBS) \ - $(WEBKIT_LIBS) - -uidir = $(datadir)/zenity - -ui_DATA = \ - zenity.ui - -DISTCLEANFILES= \ - gdialog - -EXTRA_DIST = \ - $(ui_DATA) \ - gdialog \ - gdialog.in diff --git a/src/about.c b/src/about.c index 338cca3..cac56c8 100644 --- a/src/about.c +++ b/src/about.c @@ -34,18 +34,12 @@ #include <config.h> -#define GTK_RESPONSE_CREDITS 0 - -#define ZENITY_CANVAS_X 400.0 -#define ZENITY_CANVAS_Y 280.0 - static GtkWidget *dialog; -static void zenity_about_dialog_response (GtkWidget *widget, - int response, gpointer data); +static void zenity_about_close_cb (GtkWindow *window, gpointer data); /* Sync with the people in the THANKS file */ -static const gchar *const authors[] = {"Glynn Foster <glynn foster sun com>", +static const char *const authors[] = {"Glynn Foster <glynn foster sun com>", "Lucas Rocha <lucasr gnome org>", "Mike Newman <mikegtn gnome org>", NULL}; @@ -56,8 +50,6 @@ static const char *documenters[] = {"Glynn Foster <glynn.foster@sun.com>", "GNOME Documentation Project", NULL}; -static gchar *translators; - static const char *license[] = { N_ ("This program is free software; you can redistribute it and/or modify " "it under the terms of the GNU Lesser General Public License as " @@ -79,15 +71,13 @@ zenity_about (ZenityData *data) { char *license_trans; - translators = _("translator-credits"); - license_trans = g_strconcat ( _(license[0]), "\n", _(license[1]), "\n", _(license[2]), "\n", NULL); dialog = gtk_about_dialog_new (); g_object_set (G_OBJECT (dialog), - "name", + "program-name", "Zenity", "version", VERSION, @@ -100,46 +90,32 @@ zenity_about (ZenityData *data) authors, "documenters", documenters, - "translator-credits", - translators, "website", "https://gitlab.gnome.org/GNOME/zenity", "wrap-license", TRUE, "license", license_trans, + "icon-name", + "zenity", + "logo-icon-name", + "zenity", NULL); g_free (license_trans); - zenity_util_set_window_icon (dialog, - NULL, ZENITY_IMAGE_FULLPATH ("zenity.png")); - - g_signal_connect (G_OBJECT (dialog), - "response", - G_CALLBACK (zenity_about_dialog_response), - data); + g_signal_connect (dialog, "close-request", + G_CALLBACK(zenity_about_close_cb), data); zenity_util_show_dialog (dialog); zenity_util_gapp_main (GTK_WINDOW (dialog)); } static void -zenity_about_dialog_response (GtkWidget *widget, int response, gpointer data) +zenity_about_close_cb (GtkWindow *window, gpointer data) { ZenityData *zen_data = data; - g_return_if_fail (GTK_IS_WINDOW (GTK_WINDOW(widget))); - - switch (response) { - case GTK_RESPONSE_CLOSE: - zen_data->exit_code = zenity_util_return_exit_code (ZENITY_OK); - break; - - default: - /* Esc dialog */ - zen_data->exit_code = zenity_util_return_exit_code (ZENITY_ESC); - break; - } - zenity_util_gapp_quit (GTK_WINDOW(widget)); + zen_data->exit_code = zenity_util_return_exit_code (ZENITY_OK); + zenity_util_gapp_quit (window); } diff --git a/src/calendar.c b/src/calendar.c index f674e4c..07696ab 100644 --- a/src/calendar.c +++ b/src/calendar.c @@ -64,9 +64,8 @@ zenity_calendar (ZenityData *data, ZenityCalendarData *cal_data) if (data->dialog_title) gtk_window_set_title (GTK_WINDOW (dialog), data->dialog_title); - zenity_util_set_window_icon (dialog, - data->window_icon, - ZENITY_IMAGE_FULLPATH ("zenity-calendar.png")); + gtk_window_set_icon_name (GTK_WINDOW(dialog), + "x-office-calendar"); if (data->width > -1 || data->height > -1) gtk_window_set_default_size (GTK_WINDOW(dialog), diff --git a/src/color.c b/src/color.c index 3dd2624..4289407 100644 --- a/src/color.c +++ b/src/color.c @@ -39,7 +39,6 @@ void zenity_colorselection (ZenityData *data, ZenityColorData *color_data) { GtkWidget *dialog; - GtkWidget *button; GdkRGBA color; zen_data = data; @@ -59,31 +58,13 @@ zenity_colorselection (ZenityData *data, ZenityColorData *color_data) if (data->extra_label) { - int i = 0; - - while (data->extra_label[i] != NULL) + for (int i = 0; data->extra_label[i] != NULL; ++i) { gtk_dialog_add_button (GTK_DIALOG (dialog), data->extra_label[i], i); - i++; } } - // FIXME -#if 0 - if (data->ok_label) { - g_object_get (G_OBJECT (dialog), "ok-button", &button, NULL); - gtk_button_set_label (GTK_BUTTON (button), data->ok_label); - g_object_unref (G_OBJECT (button)); - } - - if (data->cancel_label) { - g_object_get (G_OBJECT (dialog), "cancel-button", &button, NULL); - gtk_button_set_label (GTK_BUTTON (button), data->cancel_label); - g_object_unref (G_OBJECT (button)); - } -#endif - if (data->modal) gtk_window_set_modal (GTK_WINDOW (dialog), TRUE); @@ -99,7 +80,6 @@ zenity_colorselection (ZenityData *data, ZenityColorData *color_data) zenity_util_gapp_main (GTK_WINDOW(dialog)); } -// FIXME - this shoudl probably use the color-activated signal static void zenity_colorselection_dialog_response (GtkWidget *widget, int response, gpointer data) diff --git a/src/entry.c b/src/entry.c index 85323e7..f116069 100644 --- a/src/entry.c +++ b/src/entry.c @@ -78,8 +78,8 @@ zenity_entry (ZenityData *data, ZenityEntryData *entry_data) if (data->dialog_title) gtk_window_set_title (GTK_WINDOW(dialog), data->dialog_title); - zenity_util_set_window_icon (dialog, - data->window_icon, ZENITY_IMAGE_FULLPATH ("zenity-entry.png")); + gtk_window_set_icon_name (GTK_WINDOW(dialog), + "insert-text"); if (data->width > -1 || data->height > -1) gtk_window_set_default_size (GTK_WINDOW (dialog), @@ -39,11 +39,12 @@ typedef struct { } ZenityArgs; static void -activate_cb (GtkApplication *app, gpointer user_data) +command_line_cb (GtkApplication *app, + GApplicationCommandLine *command_line, + gpointer user_data) { ZenityArgs *args = user_data; ZenityParsingOptions *results; - int retval; results = zenity_option_parse (args->argc, args->argv); @@ -128,14 +129,11 @@ activate_cb (GtkApplication *app, gpointer user_data) exit (-1); } - retval = results->data->exit_code; - zenity_option_free (); g_free (args); - /* FIXME - pass retval to gapplication properly. - * exit (retval); - */ + g_application_command_line_set_exit_status (command_line, + results->data->exit_code); } int @@ -157,9 +155,12 @@ main (int argc, char *argv[]) args->argc = argc; args->argv = argv; - app = gtk_application_new ("org.gnome.Zenity", G_APPLICATION_FLAGS_NONE); - g_signal_connect (app, "activate", - G_CALLBACK(activate_cb), args); + app = gtk_application_new ("org.gnome.Zenity", + G_APPLICATION_HANDLES_COMMAND_LINE); + + g_signal_connect (app, "command-line", + G_CALLBACK(command_line_cb), args); + status = g_application_run (G_APPLICATION(app), 0, NULL); g_object_unref (app); diff --git a/src/meson.build b/src/meson.build index 374e79a..1d3cd82 100644 --- a/src/meson.build +++ b/src/meson.build @@ -41,3 +41,13 @@ zenity = executable( c_args: zenity_c_args, install: true ) + +if perl.found() + configure_file( + input: 'gdialog.in', + output: 'gdialog', + configuration: zenity_conf, + install_dir: zenity_bindir, + install: true + ) +endif @@ -173,29 +173,29 @@ zenity_msg (ZenityData *data, ZenityMsgData *msg_data) switch (msg_data->mode) { case ZENITY_MSG_WARNING: - zenity_util_set_window_icon_from_icon_name ( - dialog, data->window_icon, "dialog-warning"); + gtk_window_set_icon_name (GTK_WINDOW(dialog), + "dialog-warning"); break; case ZENITY_MSG_QUESTION: - zenity_util_set_window_icon_from_icon_name ( - dialog, data->window_icon, "dialog-question"); + gtk_window_set_icon_name (GTK_WINDOW(dialog), + "dialog-question"); zenity_msg_construct_question_dialog (dialog, msg_data, data); break; case ZENITY_MSG_SWITCH: - zenity_util_set_window_icon_from_icon_name ( - dialog, data->window_icon, "dialog-question"); + gtk_window_set_icon_name (GTK_WINDOW(dialog), + "dialog-question"); break; case ZENITY_MSG_ERROR: - zenity_util_set_window_icon_from_icon_name ( - dialog, data->window_icon, "dialog-error"); + gtk_window_set_icon_name (GTK_WINDOW(dialog), + "dialog-error"); break; case ZENITY_MSG_INFO: - zenity_util_set_window_icon_from_icon_name ( - dialog, data->window_icon, "dialog-information"); + gtk_window_set_icon_name (GTK_WINDOW(dialog), + "dialog-information"); break; default: diff --git a/src/notification.c b/src/notification.c index 20a47f7..e5cfe27 100644 --- a/src/notification.c +++ b/src/notification.c @@ -75,7 +75,7 @@ on_notification_default_action (NotifyNotification *n, zen_data->exit_code = zenity_util_return_exit_code (ZENITY_OK); - exit(zen_data->exit_code); + zenity_util_gapp_quit (NULL); } static GHashTable * @@ -378,10 +378,7 @@ zenity_notification (ZenityData *data, { zenity_notification_listen_on_stdin (data); - /* FIXME - gtk_main () was here. Possibly replace this with the - * zenity_util_gapp_main function and a corresponding _quit in - * place of the exit calls. - */ + zenity_util_gapp_main (NULL); } else { @@ -431,10 +428,7 @@ zenity_notification (ZenityData *data, (GSourceFunc) zenity_util_timeout_handle, NULL); - /* FIXME - gtk_main () was here. Possibly replace this with the - * zenity_util_gapp_main function and a corresponding _quit in - * place of the exit calls. - */ + zenity_util_gapp_main (NULL); } } diff --git a/src/progress.c b/src/progress.c index 69836c4..06e54e0 100644 --- a/src/progress.c +++ b/src/progress.c @@ -156,12 +156,14 @@ zenity_progress_handle_stdin (GIOChannel *channel, GIOCondition condition, static ZenityProgressData *progress_data; static GObject *progress_bar; static GObject *progress_label; + static GtkWindow *parent; float percentage = 0.0; GIOStatus status = G_IO_STATUS_NORMAL; progress_data = data; progress_bar = gtk_builder_get_object (builder, "zenity_progress_bar"); progress_label = gtk_builder_get_object (builder, "zenity_progress_text"); + parent = GTK_WINDOW(gtk_widget_get_native (GTK_WIDGET(progress_bar))); if ((condition & G_IO_IN) != 0) { @@ -259,12 +261,12 @@ zenity_progress_handle_stdin (GIOChannel *channel, GIOCondition condition, gtk_widget_set_sensitive (GTK_WIDGET (button), TRUE); gtk_widget_grab_focus (GTK_WIDGET (button)); - if (progress_data->autoclose) { + if (progress_data->autoclose) + { zen_data->exit_code = zenity_util_return_exit_code (ZENITY_OK); - // FIXME - don't know how to replace gtk_main_quit - // here. - exit(zen_data->exit_code); + + zenity_util_gapp_quit (parent); } } } @@ -296,10 +298,10 @@ zenity_progress_handle_stdin (GIOChannel *channel, GIOCondition condition, g_object_unref (builder); - if (progress_data->autoclose) { + if (progress_data->autoclose) + { zen_data->exit_code = zenity_util_return_exit_code (ZENITY_OK); - // FIXME - not sure how to replace gtk_main_quit here - exit(zen_data->exit_code); + zenity_util_gapp_quit (parent); } g_io_channel_shutdown (channel, TRUE, NULL); @@ -330,18 +332,6 @@ zenity_progress_read_info (ZenityProgressData *progress_data) } } -// FIXME - I don't have context as to what this is supposed to accomplish, -// and it uses signals that are gone in gtk4, so I'm just going to remove -// for now and see if necessary - if so will replace later. -#if 0 -static void -zenity_text_size_allocate (GtkWidget *widget, GtkAllocation *allocation, - gpointer data) -{ - gtk_widget_set_size_request (widget, allocation->width / 2, -1); -} -#endif - void zenity_progress (ZenityData *data, ZenityProgressData *progress_data) { @@ -372,9 +362,8 @@ zenity_progress (ZenityData *data, ZenityProgressData *progress_data) if (data->dialog_title) gtk_window_set_title (GTK_WINDOW(dialog), data->dialog_title); - zenity_util_set_window_icon (dialog, - data->window_icon, - ZENITY_IMAGE_FULLPATH ("zenity-progress.png")); + gtk_window_set_icon_name (GTK_WINDOW(dialog), + "appointment-soon"); if (data->width > -1 || data->height > -1) gtk_window_set_default_size (GTK_WINDOW(dialog), diff --git a/src/scale.c b/src/scale.c index 180a0c3..62714a5 100644 --- a/src/scale.c +++ b/src/scale.c @@ -79,8 +79,8 @@ zenity_scale (ZenityData *data, ZenityScaleData *scale_data) if (data->dialog_title) gtk_window_set_title (GTK_WINDOW (dialog), data->dialog_title); - zenity_util_set_window_icon (dialog, data->window_icon, - ZENITY_IMAGE_FULLPATH ("zenity-scale.png")); + gtk_window_set_icon_name (GTK_WINDOW(dialog), + "dialog-question"); if (data->width > -1 || data->height > -1) { gtk_window_set_default_size (GTK_WINDOW(dialog), @@ -294,8 +294,8 @@ zenity_text (ZenityData *data, ZenityTextData *text_data) if (data->dialog_title) gtk_window_set_title (GTK_WINDOW(dialog), data->dialog_title); - zenity_util_set_window_icon (dialog, data->window_icon, - ZENITY_IMAGE_FULLPATH ("zenity-text.png")); + gtk_window_set_icon_name (GTK_WINDOW(dialog), + "accessories-text-editor"); gtk_dialog_set_default_response (GTK_DIALOG (dialog), GTK_RESPONSE_CLOSE); @@ -373,7 +373,7 @@ zenity_text (ZenityData *data, ZenityTextData *text_data) if (data->modal) gtk_window_set_modal (GTK_WINDOW (dialog), TRUE); -// FIXME - TODO +/* TODO once gtk4 support fully lands in webkitgtk. */ #ifdef HAVE_WEBKITGTK if (text_data->html) { web_kit = webkit_web_view_new (); @@ -35,10 +35,10 @@ #include <config.h> -#define MAX_ELEMENTS_BEFORE_SCROLLING 5 #define PRINT_HIDE_COLUMN_SEPARATOR "," static GtkBuilder *builder; +static GtkTreeView *tree_view; static GSList *selected; static char *separator; static gboolean print_all_columns = FALSE; @@ -138,7 +138,6 @@ static gboolean zenity_tree_handle_stdin (GIOChannel *channel, GIOCondition condition, gpointer data) { - static GtkTreeView *tree_view; GtkTreeModel *model; static GtkTreeIter iter; static int column_count = 0; @@ -149,7 +148,9 @@ zenity_tree_handle_stdin (GIOChannel *channel, GIOCondition condition, static gboolean first_time = TRUE; GIOStatus status = G_IO_STATUS_NORMAL; - tree_view = GTK_TREE_VIEW (data); + /* Make sure global is properly defined */ + g_return_val_if_fail (GTK_IS_TREE_VIEW (tree_view), FALSE); + n_columns = GPOINTER_TO_INT (g_object_get_data (G_OBJECT (tree_view), "n_columns")); editable = @@ -195,8 +196,8 @@ zenity_tree_handle_stdin (GIOChannel *channel, GIOCondition condition, if (status != G_IO_STATUS_NORMAL) { if (error) { - g_warning ( - "zenity_tree_handle_stdin () : %s", error->message); + g_warning ("%s: %s", + __func__, error->message); g_error_free (error); error = NULL; } @@ -239,22 +240,6 @@ zenity_tree_handle_stdin (GIOChannel *channel, GIOCondition condition, &iter, n_columns, TRUE, -1); } - if (row_count == MAX_ELEMENTS_BEFORE_SCROLLING) - { - GtkWidget *scrolled_window; - GtkRequisition rectangle; - - gtk_widget_get_preferred_size (GTK_WIDGET(tree_view), - &rectangle, NULL); - scrolled_window = GTK_WIDGET(gtk_builder_get_object (builder, - "zenity_tree_window")); - gtk_widget_set_size_request (scrolled_window, - -1, rectangle.height); - gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW(scrolled_window), - GTK_POLICY_AUTOMATIC, - GTK_POLICY_AUTOMATIC); - } - column_count++; } while ((g_io_channel_get_buffer_condition (channel) & G_IO_IN) == @@ -273,9 +258,13 @@ zenity_tree_handle_stdin (GIOChannel *channel, GIOCondition condition, } static void -zenity_tree_fill_entries_from_stdin (GtkTreeView *tree_view, gint n_columns, +zenity_tree_fill_entries_from_stdin (GtkTreeView *loc_tv, int n_columns, gboolean toggles, gboolean editable) { + /* No reason this should fail. Sanity check. */ + g_return_if_fail (GTK_IS_TREE_VIEW (tree_view)); + g_assert (loc_tv == tree_view); + g_object_set_data ( G_OBJECT (tree_view), "n_columns", GINT_TO_POINTER (n_columns)); g_object_set_data ( @@ -286,18 +275,22 @@ zenity_tree_fill_entries_from_stdin (GtkTreeView *tree_view, gint n_columns, channel = g_io_channel_unix_new (0); g_io_channel_set_encoding (channel, NULL, NULL); g_io_channel_set_flags (channel, G_IO_FLAG_NONBLOCK, NULL); - g_io_add_watch ( - channel, G_IO_IN | G_IO_HUP, zenity_tree_handle_stdin, tree_view); + g_io_add_watch (channel, + G_IO_IN | G_IO_HUP, zenity_tree_handle_stdin, NULL); } static void -zenity_tree_fill_entries (GtkTreeView *tree_view, const char **args, +zenity_tree_fill_entries (GtkTreeView *loc_tv, const char **args, int n_columns, gboolean toggles, gboolean editable) { GtkTreeModel *model; GtkTreeIter iter; int i = 0; + /* No reason this should fail. Sanity check. */ + g_return_if_fail (GTK_IS_TREE_VIEW (tree_view)); + g_assert (loc_tv == tree_view); + model = gtk_tree_view_get_model (tree_view); g_object_set_data ( @@ -323,26 +316,10 @@ zenity_tree_fill_entries (GtkTreeView *tree_view, const char **args, GTK_LIST_STORE (model), &iter, j, args[i + j], -1); } - if (editable) - gtk_list_store_set ( - GTK_LIST_STORE (model), &iter, n_columns, TRUE, -1); - - if (i == MAX_ELEMENTS_BEFORE_SCROLLING) - { - GtkWidget *scrolled_window; - GtkRequisition rectangle; - - gtk_widget_get_preferred_size ( - GTK_WIDGET (tree_view), &rectangle, NULL); - scrolled_window = GTK_WIDGET ( - gtk_builder_get_object (builder, "zenity_tree_window")); - gtk_widget_set_size_request (scrolled_window, -1, rectangle.height); - gtk_scrolled_window_set_policy ( - GTK_SCROLLED_WINDOW (scrolled_window), - GTK_POLICY_AUTOMATIC, - GTK_POLICY_AUTOMATIC); + if (editable) { + gtk_list_store_set (GTK_LIST_STORE(model), + &iter, n_columns, TRUE, -1); } - i += n_columns; } } @@ -384,7 +361,6 @@ zenity_tree (ZenityData *data, ZenityTreeData *tree_data) { GtkWidget *dialog; GtkWidget *button; - GObject *tree_view; GObject *text; GtkTreeViewColumn *column; GtkListStore *model; @@ -477,15 +453,17 @@ zenity_tree (ZenityData *data, ZenityTreeData *tree_data) gtk_label_set_markup (GTK_LABEL(text), g_strcompress (tree_data->dialog_text)); - zenity_util_set_window_icon (dialog, data->window_icon, - ZENITY_IMAGE_FULLPATH ("zenity-list.png")); + gtk_window_set_icon_name (GTK_WINDOW(dialog), + "view-sort-ascending"); if (data->width > -1 || data->height > -1) { gtk_window_set_default_size (GTK_WINDOW(dialog), data->width, data->height); } - tree_view = gtk_builder_get_object (builder, "zenity_tree_view"); + /* Define global tree_view. */ + tree_view = GTK_TREE_VIEW(gtk_builder_get_object (builder, + "zenity_tree_view")); if (!(tree_data->radiobox || tree_data->checkbox)) { @@ -519,23 +497,23 @@ zenity_tree (ZenityData *data, ZenityTreeData *tree_data) else gtk_list_store_set_column_types (model, n_columns, column_types); - gtk_tree_view_set_model (GTK_TREE_VIEW (tree_view), GTK_TREE_MODEL (model)); + gtk_tree_view_set_model (tree_view, GTK_TREE_MODEL(model)); if (! (tree_data->radiobox || tree_data->checkbox)) { if (tree_data->multi) gtk_tree_selection_set_mode ( - gtk_tree_view_get_selection (GTK_TREE_VIEW (tree_view)), + gtk_tree_view_get_selection (tree_view), GTK_SELECTION_MULTIPLE); else gtk_tree_selection_set_mode ( - gtk_tree_view_get_selection (GTK_TREE_VIEW (tree_view)), + gtk_tree_view_get_selection (tree_view), GTK_SELECTION_SINGLE); } else { gtk_tree_selection_set_mode ( - gtk_tree_view_get_selection (GTK_TREE_VIEW (tree_view)), + gtk_tree_view_get_selection (tree_view), GTK_SELECTION_NONE); } @@ -585,7 +563,7 @@ zenity_tree (ZenityData *data, ZenityTreeData *tree_data) cell_renderer = gtk_cell_renderer_text_new (); g_signal_connect (cell_renderer, "edited", G_CALLBACK (zenity_cell_edited_callback), - gtk_tree_view_get_model (GTK_TREE_VIEW (tree_view))); + gtk_tree_view_get_model (tree_view)); g_object_set_data (G_OBJECT (cell_renderer), "column", @@ -627,7 +605,7 @@ zenity_tree (ZenityData *data, ZenityTreeData *tree_data) cell_renderer = gtk_cell_renderer_text_new (); g_signal_connect (cell_renderer, "edited", G_CALLBACK (zenity_cell_edited_callback), - gtk_tree_view_get_model (GTK_TREE_VIEW (tree_view))); + gtk_tree_view_get_model (tree_view)); g_object_set_data (G_OBJECT (cell_renderer), "column", @@ -657,24 +635,24 @@ zenity_tree (ZenityData *data, ZenityTreeData *tree_data) gtk_tree_view_column_set_visible (column, FALSE); } - gtk_tree_view_append_column (GTK_TREE_VIEW (tree_view), column); + gtk_tree_view_append_column (tree_view, column); column_index++; } if (tree_data->hide_header) - gtk_tree_view_set_headers_visible (GTK_TREE_VIEW (tree_view), FALSE); + gtk_tree_view_set_headers_visible (tree_view, FALSE); if (tree_data->radiobox || tree_data->checkbox) { if (tree_data->data && *tree_data->data) { - zenity_tree_fill_entries (GTK_TREE_VIEW (tree_view), + zenity_tree_fill_entries (tree_view, tree_data->data, n_columns, TRUE, tree_data->editable); } else { - zenity_tree_fill_entries_from_stdin (GTK_TREE_VIEW (tree_view), + zenity_tree_fill_entries_from_stdin (tree_view, n_columns, TRUE, tree_data->editable); @@ -683,13 +661,13 @@ zenity_tree (ZenityData *data, ZenityTreeData *tree_data) else { if (tree_data->data && *tree_data->data) { - zenity_tree_fill_entries (GTK_TREE_VIEW (tree_view), + zenity_tree_fill_entries (tree_view, tree_data->data, n_columns, FALSE, tree_data->editable); } else { - zenity_tree_fill_entries_from_stdin (GTK_TREE_VIEW (tree_view), + zenity_tree_fill_entries_from_stdin (tree_view, n_columns, FALSE, tree_data->editable); @@ -699,7 +677,7 @@ zenity_tree (ZenityData *data, ZenityTreeData *tree_data) zenity_util_show_dialog (dialog); if (tree_data->mid_search) { - gtk_tree_view_set_search_equal_func (GTK_TREE_VIEW (tree_view), + gtk_tree_view_set_search_equal_func (tree_view, (GtkTreeViewSearchEqualFunc) zenity_mid_search_func, model, NULL); @@ -718,7 +696,7 @@ zenity_tree (ZenityData *data, ZenityTreeData *tree_data) static void zenity_tree_dialog_get_selected (GtkTreeModel *model, GtkTreePath *path_buf, - GtkTreeIter *iter, GtkTreeView *tree_view) + GtkTreeIter *iter, gpointer user_data) { GValue value = G_VALUE_INIT; int n_columns, i; @@ -749,7 +727,7 @@ zenity_tree_dialog_get_selected (GtkTreeModel *model, GtkTreePath *path_buf, static gboolean zenity_tree_dialog_toggle_get_selected (GtkTreeModel *model, GtkTreePath *path, - GtkTreeIter *iter, GtkTreeView *tree_view) + GtkTreeIter *iter, gpointer user_data) { GValue toggle_value = G_VALUE_INIT; int n_columns, i; @@ -794,25 +772,25 @@ zenity_tree_dialog_toggle_get_selected (GtkTreeModel *model, GtkTreePath *path, static void zenity_tree_dialog_output (void) { - GObject *tree_view; GtkTreeSelection *selection; GtkTreeModel *model; - tree_view = gtk_builder_get_object (builder, "zenity_tree_view"); - model = gtk_tree_view_get_model (GTK_TREE_VIEW (tree_view)); + g_return_if_fail (GTK_IS_TREE_VIEW (tree_view)); + + model = gtk_tree_view_get_model (tree_view); if (gtk_tree_model_get_column_type (model, 0) == G_TYPE_BOOLEAN) { gtk_tree_model_foreach (model, (GtkTreeModelForeachFunc) zenity_tree_dialog_toggle_get_selected, - GTK_TREE_VIEW (tree_view)); + NULL); } else { - selection = gtk_tree_view_get_selection (GTK_TREE_VIEW (tree_view)); + selection = gtk_tree_view_get_selection (tree_view); gtk_tree_selection_selected_foreach (selection, (GtkTreeSelectionForeachFunc) zenity_tree_dialog_get_selected, - GTK_TREE_VIEW (tree_view)); + NULL); } @@ -871,16 +849,22 @@ zenity_tree_dialog_response (GtkWidget *widget, int response, gpointer data) } static void -zenity_tree_row_activated (GtkTreeView *tree_view, GtkTreePath *tree_path, +zenity_tree_row_activated (GtkTreeView *loc_tv, GtkTreePath *tree_path, GtkTreeViewColumn *tree_col, gpointer data) { + GtkWindow *parent; ZenityData *zen_data = data; + /* No reason this should fail. Sanity check. */ + g_return_if_fail (GTK_IS_TREE_VIEW (tree_view)); + g_assert (loc_tv == tree_view); + zenity_tree_dialog_output (); zen_data->exit_code = zenity_util_return_exit_code (ZENITY_OK); - // FIXME - TEST - not sure how to replace gtk_main_quit here. - exit(zen_data->exit_code); + parent = GTK_WINDOW(gtk_widget_get_native (GTK_WIDGET(tree_view))); + + zenity_util_gapp_quit (parent); } static gboolean @@ -178,6 +178,7 @@ zenity_util_fill_file_buffer (GtkTextBuffer *buffer, const char *filename) { return TRUE; } +#if 0 const char * zenity_util_icon_name_from_filename (const char *filename) { if (!filename || !filename[0]) @@ -193,10 +194,13 @@ zenity_util_icon_name_from_filename (const char *filename) { return "dialog-error"; return NULL; } +#endif +#if 0 void -zenity_util_set_window_icon_from_file ( - GtkWidget *widget, const char *filename) { +zenity_util_set_window_icon_from_file (GtkWidget *widget, + const char *filename) +{ const char *icon_name; icon_name = zenity_util_icon_name_from_filename (filename); @@ -207,10 +211,11 @@ zenity_util_set_window_icon_from_file ( __func__); } } +#endif +#if 0 void -zenity_util_set_window_icon (GtkWidget *widget, - const char *filename, const char *default_file) +zenity_util_set_window_icon (GtkWidget *widget, const char *icon_name) { if (filename != NULL) { zenity_util_set_window_icon_from_file (widget, filename); @@ -219,15 +224,19 @@ zenity_util_set_window_icon (GtkWidget *widget, __func__); } } +#endif +#if 0 void -zenity_util_set_window_icon_from_icon_name ( - GtkWidget *widget, const char *filename, const char *default_icon_name) { +zenity_util_set_window_icon_from_icon_name (GtkWidget *widget, + const char *filename, const char *default_icon_name) +{ if (filename != NULL) zenity_util_set_window_icon_from_file (widget, filename); else gtk_window_set_icon_name (GTK_WINDOW (widget), default_icon_name); } +#endif void zenity_util_show_help (GError **error) { @@ -311,88 +320,7 @@ zenity_util_exit_code_with_data (ZenityExitCode value, ZenityData *zen_data) zen_data->exit_code = zenity_util_return_exit_code (value); } -#if 0 -// FIXME - ??? -//#ifdef GDK_WINDOWING_X11 - -static Window -transient_get_xterm (void) { - const char *wid_str = g_getenv ("WINDOWID"); - if (wid_str) { - char *wid_str_end; - int ret; - Window wid = strtoul (wid_str, &wid_str_end, 10); - if (*wid_str != '\0' && *wid_str_end == '\0' && wid != 0) { - XWindowAttributes attrs; - gdk_error_trap_push (); - ret = XGetWindowAttributes ( - GDK_DISPLAY_XDISPLAY (gdk_display_get_default ()), wid, &attrs); - gdk_flush (); - if (gdk_error_trap_pop () != 0 || ret == 0) { - return None; - } - return wid; - } - } - return None; -} - -static void -transient_x_free (void *ptr) { - if (ptr) - XFree (ptr); -} - -static gboolean -transient_is_toplevel (Window wid) { - XTextProperty prop; - Display *dpy = GDK_DISPLAY_XDISPLAY (gdk_display_get_default ()); - if (!XGetWMName (dpy, wid, &prop)) - return FALSE; - transient_x_free (prop.value); - return !!prop.value; -} - -/* - * GNOME Terminal doesn't give us its toplevel window, but the WM needs a - * toplevel XID for proper stacking. Other terminals work fine without this - * magic. We can't use GDK here since "xterm" is a foreign window. - */ - -static Window -transient_get_xterm_toplevel (void) { - Window xterm = transient_get_xterm (); - Display *dpy = GDK_DISPLAY_XDISPLAY (gdk_display_get_default ()); - while (xterm != None && !transient_is_toplevel (xterm)) { - Window root, parent, *children; - unsigned nchildren; - XQueryTree (dpy, xterm, &root, &parent, &children, &nchildren); - transient_x_free (children); - if (parent == root) - xterm = None; - else - xterm = parent; - } - return xterm; -} - -static void -zenity_util_make_transient (GdkWindow *window, Window parent) { - Window parent_window = parent; - if (parent_window == 0) - parent_window = transient_get_xterm_toplevel (); - if (parent_window != None) { - XSetTransientForHint (GDK_DISPLAY_XDISPLAY (gdk_display_get_default ()), - GDK_WINDOW_XID (window), - parent_window); - } -} - -#endif /* GDK_WINDOWING_X11 */ - -/* helper for common_set_gtkhex_font_from_settings. - * - * This function was written by Matthias Clasen and is included somewhere in +/* This function was written by Matthias Clasen and is included somewhere in * the GTK source tree.. I believe it is also included in libdazzle, but I * didn't want to include a whole dependency just for one function. LGPL, but * credit where credit is due! @@ -522,7 +450,6 @@ zenity_util_pango_font_description_to_css (PangoFontDescription *desc) void zenity_util_show_dialog (GtkWidget *dialog) { - gtk_widget_realize (dialog); // FIXME - doubt this is necessary. gtk_widget_show (dialog); } |