Add support to separate the selected rows output with a character with '/'
2003-01-14 Glynn Foster <glynn.foster@sun.com> * src/tree.c, src/zenity.h, src/main.c: Add support to separate the selected rows output with a character with '/' used by default.
This commit is contained in:
parent
275dafc66e
commit
f00eb34c06
@ -1,3 +1,9 @@
|
|||||||
|
2003-01-14 Glynn Foster <glynn.foster@sun.com>
|
||||||
|
|
||||||
|
* src/tree.c, src/zenity.h, src/main.c: Add support to
|
||||||
|
separate the selected rows output with a character
|
||||||
|
with '/' used by default.
|
||||||
|
|
||||||
2003-01-13 Glynn Foster <glynn.foster@sun.com>
|
2003-01-13 Glynn Foster <glynn.foster@sun.com>
|
||||||
|
|
||||||
* src/calendar.c: Re-structure the code to pass in the
|
* src/calendar.c: Re-structure the code to pass in the
|
||||||
|
28
src/main.c
28
src/main.c
@ -78,6 +78,7 @@ enum {
|
|||||||
OPTION_INFOTEXT,
|
OPTION_INFOTEXT,
|
||||||
OPTION_FILENAME,
|
OPTION_FILENAME,
|
||||||
OPTION_COLUMN,
|
OPTION_COLUMN,
|
||||||
|
OPTION_SEPERATOR,
|
||||||
OPTION_CHECKLIST,
|
OPTION_CHECKLIST,
|
||||||
OPTION_RADIOLIST,
|
OPTION_RADIOLIST,
|
||||||
OPTION_PROGRESSTEXT,
|
OPTION_PROGRESSTEXT,
|
||||||
@ -431,6 +432,15 @@ struct poptOption list_options[] = {
|
|||||||
N_("Use radio buttons for first column"),
|
N_("Use radio buttons for first column"),
|
||||||
NULL
|
NULL
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"separator",
|
||||||
|
'\0',
|
||||||
|
POPT_ARG_STRING,
|
||||||
|
NULL,
|
||||||
|
OPTION_SEPERATOR,
|
||||||
|
N_("Set output separator character"),
|
||||||
|
NULL
|
||||||
|
},
|
||||||
POPT_TABLEEND
|
POPT_TABLEEND
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -716,6 +726,7 @@ zenity_init_parsing_options (void) {
|
|||||||
results->calendar_data->month = 0;
|
results->calendar_data->month = 0;
|
||||||
results->calendar_data->year = 0;
|
results->calendar_data->year = 0;
|
||||||
results->calendar_data->dialog_text = NULL;
|
results->calendar_data->dialog_text = NULL;
|
||||||
|
results->tree_data->separator = g_strdup ("/");
|
||||||
results->progress_data->percentage = -1;
|
results->progress_data->percentage = -1;
|
||||||
results->progress_data->pulsate = FALSE;
|
results->progress_data->pulsate = FALSE;
|
||||||
results->entry_data->visible = TRUE;
|
results->entry_data->visible = TRUE;
|
||||||
@ -764,6 +775,8 @@ zenity_free_parsing_options (void) {
|
|||||||
case MODE_LIST:
|
case MODE_LIST:
|
||||||
if (results->tree_data->columns)
|
if (results->tree_data->columns)
|
||||||
g_slist_foreach (results->tree_data->columns, (GFunc) g_free, NULL);
|
g_slist_foreach (results->tree_data->columns, (GFunc) g_free, NULL);
|
||||||
|
if (results->tree_data->separator)
|
||||||
|
g_free (results->tree_data->separator);
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
break;
|
break;
|
||||||
@ -856,6 +869,7 @@ void zenity_parse_options_callback (poptContext ctx,
|
|||||||
void *data)
|
void *data)
|
||||||
{
|
{
|
||||||
static gboolean parse_option_dateformat = FALSE;
|
static gboolean parse_option_dateformat = FALSE;
|
||||||
|
static gboolean parse_option_separator = FALSE;
|
||||||
static gint parse_option_text = 0;
|
static gint parse_option_text = 0;
|
||||||
static gint parse_option_file = 0;
|
static gint parse_option_file = 0;
|
||||||
|
|
||||||
@ -1149,6 +1163,20 @@ void zenity_parse_options_callback (poptContext ctx,
|
|||||||
}
|
}
|
||||||
results->tree_data->radiobox = TRUE;
|
results->tree_data->radiobox = TRUE;
|
||||||
break;
|
break;
|
||||||
|
case OPTION_SEPERATOR:
|
||||||
|
if (results->mode != MODE_LIST) {
|
||||||
|
g_printerr (_("--separator is not supported for this dialog\n"));
|
||||||
|
zenity_free_parsing_options ();
|
||||||
|
exit (-1);
|
||||||
|
}
|
||||||
|
if (parse_option_separator == TRUE) {
|
||||||
|
g_printerr (_("--separator given twice for the same dialog\n"));
|
||||||
|
zenity_free_parsing_options ();
|
||||||
|
exit (-1);
|
||||||
|
}
|
||||||
|
results->tree_data->separator = g_strdup (arg);
|
||||||
|
parse_option_separator = TRUE;
|
||||||
|
break;
|
||||||
case OPTION_PERCENTAGE:
|
case OPTION_PERCENTAGE:
|
||||||
if (results->mode != MODE_PROGRESS) {
|
if (results->mode != MODE_PROGRESS) {
|
||||||
g_printerr (_("--percentage is not supported for this dialog\n"));
|
g_printerr (_("--percentage is not supported for this dialog\n"));
|
||||||
|
45
src/tree.c
45
src/tree.c
@ -30,6 +30,8 @@
|
|||||||
#define MAX_ELEMENTS_BEFORE_SCROLLING 8
|
#define MAX_ELEMENTS_BEFORE_SCROLLING 8
|
||||||
|
|
||||||
static GladeXML *glade_dialog;
|
static GladeXML *glade_dialog;
|
||||||
|
static GSList *selected;
|
||||||
|
static gchar *separator;
|
||||||
|
|
||||||
static void zenity_tree_dialog_response (GtkWidget *widget, int response, gpointer data);
|
static void zenity_tree_dialog_response (GtkWidget *widget, int response, gpointer data);
|
||||||
|
|
||||||
@ -70,7 +72,7 @@ zenity_tree_fill_entries (GtkTreeView *tree_view, const gchar **args, gint n_col
|
|||||||
for (j = 0; j < n_columns; j++) {
|
for (j = 0; j < n_columns; j++) {
|
||||||
|
|
||||||
if (toggles && j == 0) {
|
if (toggles && j == 0) {
|
||||||
if (strcmp (args[i+j], "TRUE") == 0 || strcmp (args[i+j], "true") == 0)
|
if (strcmp (args[i+j], "TRUE") == 0)
|
||||||
gtk_list_store_set (GTK_LIST_STORE (model), &iter, j, TRUE, -1);
|
gtk_list_store_set (GTK_LIST_STORE (model), &iter, j, TRUE, -1);
|
||||||
else
|
else
|
||||||
gtk_list_store_set (GTK_LIST_STORE (model), &iter, j, FALSE, -1);
|
gtk_list_store_set (GTK_LIST_STORE (model), &iter, j, FALSE, -1);
|
||||||
@ -112,7 +114,9 @@ zenity_tree (ZenityData *data, ZenityTreeData *tree_data)
|
|||||||
data->exit_code = -1;
|
data->exit_code = -1;
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
separator = g_strdup (tree_data->separator);
|
||||||
|
|
||||||
n_columns = g_slist_length (tree_data->columns);
|
n_columns = g_slist_length (tree_data->columns);
|
||||||
|
|
||||||
if (n_columns == 0) {
|
if (n_columns == 0) {
|
||||||
@ -213,18 +217,18 @@ zenity_tree (ZenityData *data, ZenityTreeData *tree_data)
|
|||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
zenity_tree_dialog_output (GtkTreeModel *model, GtkTreePath *path_buf, GtkTreeIter *iter, GtkTreeView *tree_view)
|
zenity_tree_dialog_get_selected (GtkTreeModel *model, GtkTreePath *path_buf, GtkTreeIter *iter, GtkTreeView *tree_view)
|
||||||
{
|
{
|
||||||
GValue value = {0, };
|
GValue value = {0, };
|
||||||
|
|
||||||
gtk_tree_model_get_value (model, iter, 0, &value);
|
gtk_tree_model_get_value (model, iter, 0, &value);
|
||||||
|
|
||||||
g_printerr ("%s", g_value_get_string (&value));
|
selected = g_slist_append (selected, g_strdup (g_value_get_string (&value)));
|
||||||
g_value_unset (&value);
|
g_value_unset (&value);
|
||||||
}
|
}
|
||||||
|
|
||||||
static gboolean
|
static gboolean
|
||||||
zenity_tree_dialog_toggle_output (GtkTreeModel *model, GtkTreePath *path, GtkTreeIter *iter, gpointer data)
|
zenity_tree_dialog_toggle_get_selected (GtkTreeModel *model, GtkTreePath *path, GtkTreeIter *iter, gpointer data)
|
||||||
{
|
{
|
||||||
GValue toggle_value = {0, };
|
GValue toggle_value = {0, };
|
||||||
|
|
||||||
@ -233,13 +237,37 @@ zenity_tree_dialog_toggle_output (GtkTreeModel *model, GtkTreePath *path, GtkTre
|
|||||||
if (g_value_get_boolean (&toggle_value) == TRUE) {
|
if (g_value_get_boolean (&toggle_value) == TRUE) {
|
||||||
GValue value = {0, };
|
GValue value = {0, };
|
||||||
gtk_tree_model_get_value (model, iter, 1, &value);
|
gtk_tree_model_get_value (model, iter, 1, &value);
|
||||||
g_printerr ("%s", g_value_get_string (&value));
|
selected = g_slist_append (selected, g_strdup (g_value_get_string (&value)));
|
||||||
g_value_unset (&value);
|
g_value_unset (&value);
|
||||||
}
|
}
|
||||||
g_value_unset (&toggle_value);
|
g_value_unset (&toggle_value);
|
||||||
return FALSE;
|
return FALSE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
zenity_tree_dialog_output (void)
|
||||||
|
{
|
||||||
|
GSList *tmp;
|
||||||
|
|
||||||
|
for (tmp = selected; tmp; tmp = tmp->next) {
|
||||||
|
if (tmp->next != NULL) {
|
||||||
|
/* FIXME: There must be a nicer way to do this. This is just arse */
|
||||||
|
if (strstr (separator, "\\n") != NULL)
|
||||||
|
g_printerr ("%s\n", tmp->data);
|
||||||
|
else if (strstr (separator, "\\t") != NULL)
|
||||||
|
g_printerr ("%s\t", tmp->data);
|
||||||
|
else
|
||||||
|
g_printerr ("%s%s", tmp->data, separator);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
g_printerr ("%s\n", tmp->data);
|
||||||
|
}
|
||||||
|
|
||||||
|
g_free (separator);
|
||||||
|
g_slist_foreach (selected, (GFunc) g_free, NULL);
|
||||||
|
selected = NULL;
|
||||||
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
zenity_tree_dialog_response (GtkWidget *widget, int response, gpointer data)
|
zenity_tree_dialog_response (GtkWidget *widget, int response, gpointer data)
|
||||||
{
|
{
|
||||||
@ -255,15 +283,16 @@ zenity_tree_dialog_response (GtkWidget *widget, int response, gpointer data)
|
|||||||
|
|
||||||
if (gtk_tree_model_get_column_type (model, 0) == G_TYPE_BOOLEAN) {
|
if (gtk_tree_model_get_column_type (model, 0) == G_TYPE_BOOLEAN) {
|
||||||
gtk_tree_model_foreach (model,
|
gtk_tree_model_foreach (model,
|
||||||
(GtkTreeModelForeachFunc) zenity_tree_dialog_toggle_output,
|
(GtkTreeModelForeachFunc) zenity_tree_dialog_toggle_get_selected,
|
||||||
NULL);
|
NULL);
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
selection = gtk_tree_view_get_selection (GTK_TREE_VIEW (tree_view));
|
selection = gtk_tree_view_get_selection (GTK_TREE_VIEW (tree_view));
|
||||||
gtk_tree_selection_selected_foreach (selection,
|
gtk_tree_selection_selected_foreach (selection,
|
||||||
(GtkTreeSelectionForeachFunc) zenity_tree_dialog_output,
|
(GtkTreeSelectionForeachFunc) zenity_tree_dialog_get_selected,
|
||||||
GTK_TREE_VIEW (tree_view));
|
GTK_TREE_VIEW (tree_view));
|
||||||
}
|
}
|
||||||
|
zenity_tree_dialog_output ();
|
||||||
zen_data->exit_code = 0;
|
zen_data->exit_code = 0;
|
||||||
gtk_main_quit ();
|
gtk_main_quit ();
|
||||||
break;
|
break;
|
||||||
|
@ -75,6 +75,7 @@ typedef struct {
|
|||||||
GSList *columns;
|
GSList *columns;
|
||||||
gboolean checkbox;
|
gboolean checkbox;
|
||||||
gboolean radiobox;
|
gboolean radiobox;
|
||||||
|
gchar *separator;
|
||||||
const gchar **data;
|
const gchar **data;
|
||||||
} ZenityTreeData;
|
} ZenityTreeData;
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user