summaryrefslogtreecommitdiff
path: root/src/tree.c
diff options
context:
space:
mode:
authorGlynn Foster <glynn.foster@sun.com>2004-07-19 01:01:28 +0000
committerGlynn Foster <gman@src.gnome.org>2004-07-19 01:01:28 +0000
commitffaed088561e8c0a085fd2797543aaef65419f0c (patch)
treef1b9c6773cb568195fd5c9b2384dc20f08b1a2e0 /src/tree.c
parentb986224682b864b25125bf73ae38f47e0fe883b1 (diff)
Add new option for --print-column, based on a patch by Paul Bolle. Fixes
2004-07-19 Glynn Foster <glynn.foster@sun.com> * src/main.c, src/tree.c, src/zenity.h, help/C/zenity.xml: Add new option for --print-column, based on a patch by Paul Bolle. Fixes #144496.
Diffstat (limited to 'src/tree.c')
-rw-r--r--src/tree.c65
1 files changed, 55 insertions, 10 deletions
diff --git a/src/tree.c b/src/tree.c
index bc1cc1c..e828dfc 100644
--- a/src/tree.c
+++ b/src/tree.c
@@ -33,6 +33,8 @@
static GladeXML *glade_dialog;
static GSList *selected;
static gchar *separator;
+static gboolean print_all_columns = FALSE;
+static gint print_column_n = 1;
static void zenity_tree_dialog_response (GtkWidget *widget, int response, gpointer data);
@@ -139,7 +141,7 @@ zenity_tree_handle_stdin (GIOChannel *channel,
}
if (toggles && column_count == 0) {
- if (strcmp (zenity_util_strip_newline (string->str), "TRUE") == 0)
+ if (strcmp (g_strdown (zenity_util_strip_newline (string->str)), "true") == 0)
gtk_list_store_set (GTK_LIST_STORE (model), &iter, column_count, TRUE, -1);
else
gtk_list_store_set (GTK_LIST_STORE (model), &iter, column_count, FALSE, -1);
@@ -207,6 +209,8 @@ zenity_tree_fill_entries (GtkTreeView *tree_view,
model = gtk_tree_view_get_model (tree_view);
+ g_object_set_data (G_OBJECT (tree_view), "n_columns", (gint *) n_columns);
+
while (args[i] != NULL) {
gint j;
@@ -215,7 +219,7 @@ zenity_tree_fill_entries (GtkTreeView *tree_view,
for (j = 0; j < n_columns; j++) {
if (toggles && j == 0) {
- if (strcmp (args[i+j], "TRUE") == 0)
+ if (strcmp (g_strdown ((gchar *) args[i+j]), "true") == 0)
gtk_list_store_set (GTK_LIST_STORE (model), &iter, j, TRUE, -1);
else
gtk_list_store_set (GTK_LIST_STORE (model), &iter, j, FALSE, -1);
@@ -288,6 +292,13 @@ zenity_tree (ZenityData *data, ZenityTreeData *tree_data)
n_columns = g_slist_length (tree_data->columns);
+ if (tree_data->print_column) {
+ if (strcmp (g_strdown (tree_data->print_column), "all") == 0)
+ print_all_columns = TRUE;
+ else
+ print_column_n = atoi (tree_data->print_column);
+ }
+
if (n_columns == 0) {
g_printerr (_("No column titles specified for List dialog.\n"));
data->exit_code = zenity_util_return_exit_code (ZENITY_ERROR);
@@ -454,25 +465,58 @@ static void
zenity_tree_dialog_get_selected (GtkTreeModel *model, GtkTreePath *path_buf, GtkTreeIter *iter, GtkTreeView *tree_view)
{
GValue value = {0, };
+ gint n_columns, i;
+
+ n_columns = GPOINTER_TO_INT (g_object_get_data (G_OBJECT (tree_view), "n_columns"));
- gtk_tree_model_get_value (model, iter, 0, &value);
+ if (print_all_columns) {
+ for (i = 0; i < n_columns; i++) {
+ gtk_tree_model_get_value (model, iter, i, &value);
- selected = g_slist_append (selected, g_strdup (g_value_get_string (&value)));
- g_value_unset (&value);
+ selected = g_slist_append (selected, g_strdup (g_value_get_string (&value)));
+ g_value_unset (&value);
+ }
+ return;
+ }
+
+ if (print_column_n > 0 && print_column_n <= n_columns) {
+ gtk_tree_model_get_value (model, iter, print_column_n - 1, &value);
+
+ selected = g_slist_append (selected, g_strdup (g_value_get_string (&value)));
+ g_value_unset (&value);
+ }
}
static gboolean
-zenity_tree_dialog_toggle_get_selected (GtkTreeModel *model, GtkTreePath *path, GtkTreeIter *iter, gpointer data)
+zenity_tree_dialog_toggle_get_selected (GtkTreeModel *model, GtkTreePath *path, GtkTreeIter *iter, GtkTreeView *tree_view)
{
GValue toggle_value = {0, };
+ gint n_columns, i;
+
+ n_columns = GPOINTER_TO_INT (g_object_get_data (G_OBJECT (tree_view), "n_columns"));
gtk_tree_model_get_value (model, iter, 0, &toggle_value);
if (g_value_get_boolean (&toggle_value)) {
GValue value = {0, };
- gtk_tree_model_get_value (model, iter, 1, &value);
- selected = g_slist_append (selected, g_strdup (g_value_get_string (&value)));
- g_value_unset (&value);
+
+ if (print_all_columns) {
+ for (i = 1; i < n_columns; i++) {
+ gtk_tree_model_get_value (model, iter, i, &value);
+
+ selected = g_slist_append (selected, g_strdup (g_value_get_string (&value)));
+ g_value_unset (&value);
+ }
+ g_value_unset (&toggle_value);
+ return FALSE;
+ }
+
+ if (print_column_n > 0 && print_column_n <= n_columns) {
+ gtk_tree_model_get_value (model, iter, print_column_n, &value);
+
+ selected = g_slist_append (selected, g_strdup (g_value_get_string (&value)));
+ g_value_unset (&value);
+ }
}
g_value_unset (&toggle_value);
return FALSE;
@@ -510,7 +554,8 @@ zenity_tree_dialog_response (GtkWidget *widget, int response, gpointer data)
model = gtk_tree_view_get_model (GTK_TREE_VIEW (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, NULL);
+ gtk_tree_model_foreach (model, (GtkTreeModelForeachFunc) zenity_tree_dialog_toggle_get_selected,
+ GTK_TREE_VIEW (tree_view));
else {
selection = gtk_tree_view_get_selection (GTK_TREE_VIEW (tree_view));
gtk_tree_selection_selected_foreach (selection,