summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorLogan Rathbone <poprocks@gmail.com>2021-02-14 22:27:01 -0500
committerLogan Rathbone <poprocks@gmail.com>2021-02-14 22:27:01 -0500
commit2aac67b9c184ad533510d61569a5763e87ecf7f3 (patch)
tree9be8a26d0a33c78fd549890fd7655923028178d6 /src
parent71744aa4b388754b20bbcdbf7dabf482202fee79 (diff)
downloadzenity-2aac67b9c184ad533510d61569a5763e87ecf7f3.tar.gz
Mass cleanup and finish meson migration.
Autotools purged.
Diffstat (limited to 'src')
-rw-r--r--src/Makefile.am57
-rw-r--r--src/about.c48
-rw-r--r--src/calendar.c5
-rw-r--r--src/color.c22
-rw-r--r--src/entry.c4
-rw-r--r--src/main.c21
-rw-r--r--src/meson.build10
-rw-r--r--src/msg.c20
-rw-r--r--src/notification.c12
-rw-r--r--src/progress.c33
-rw-r--r--src/scale.c4
-rw-r--r--src/text.c6
-rw-r--r--src/tree.c128
-rw-r--r--src/util.c105
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),
diff --git a/src/main.c b/src/main.c
index 3649ad5..01545be 100644
--- a/src/main.c
+++ b/src/main.c
@@ -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
diff --git a/src/msg.c b/src/msg.c
index e7af4f7..5b8e7a9 100644
--- a/src/msg.c
+++ b/src/msg.c
@@ -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),
diff --git a/src/text.c b/src/text.c
index 291b5da..09c8c43 100644
--- a/src/text.c
+++ b/src/text.c
@@ -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 ();
diff --git a/src/tree.c b/src/tree.c
index 26a9ca4..5f99583 100644
--- a/src/tree.c
+++ b/src/tree.c
@@ -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
diff --git a/src/util.c b/src/util.c
index 4a92149..51cfe27 100644
--- a/src/util.c
+++ b/src/util.c
@@ -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);
}