From 1e1dfef56ec71f732941398529cb1d8c79190c41 Mon Sep 17 00:00:00 2001 From: Mike Newman Date: Sun, 19 Jan 2003 12:13:08 +0000 Subject: [PATCH] Add --editable option to --text-info, and return edited textbuffer contents on dialog close. --- ChangeLog | 6 ++++-- help/C/zenity.xml | 7 +++++++ src/main.c | 24 ++++++++++++++++++++++++ src/text.c | 14 +++++++++++++- src/zenity.h | 2 ++ 5 files changed, 50 insertions(+), 3 deletions(-) diff --git a/ChangeLog b/ChangeLog index 98cd9f1..1cc1b8c 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,6 +1,8 @@ -2003-01-19 Ole Laursen +2003-01-19 Mike Newman - * configure.in: Added da to ALL_LINGUAS. + * src/main.c, src/text.c, src/zenity.h: add an --editable + option to --text-info. If set, return the contents of the + text buffer on dialog close. 2003-01-18 Glynn Foster diff --git a/help/C/zenity.xml b/help/C/zenity.xml index 8a51363..1f722e4 100644 --- a/help/C/zenity.xml +++ b/help/C/zenity.xml @@ -629,6 +629,13 @@ + + --editable + + Allow the displayed text to be edited and returned when the dialog is closed. + + +
diff --git a/src/main.c b/src/main.c index 0e76247..a8e1e0e 100644 --- a/src/main.c +++ b/src/main.c @@ -65,6 +65,7 @@ enum { OPTION_PROGRESS, OPTION_QUESTION, OPTION_TEXTINFO, + OPTION_TEXTEDIT, OPTION_WARNING, OPTION_TITLE, OPTION_ICON, @@ -517,6 +518,15 @@ struct poptOption text_options[] = { N_("Open file"), N_("FILENAME") }, + { + "editable", + '\0', + POPT_ARG_NONE, + NULL, + OPTION_TEXTEDIT, + N_("Allow changes to text"), + NULL + }, POPT_TABLEEND }; @@ -727,6 +737,7 @@ zenity_init_parsing_options (void) { results->calendar_data->month = 0; results->calendar_data->year = 0; results->calendar_data->dialog_text = NULL; + results->text_data->editable = FALSE; results->tree_data->separator = g_strdup ("/"); results->progress_data->percentage = -1; results->progress_data->pulsate = FALSE; @@ -1108,6 +1119,19 @@ void zenity_parse_options_callback (poptContext ctx, } results->entry_data->visible = FALSE; break; + case OPTION_TEXTEDIT: + if (results->mode != MODE_TEXTINFO) { + g_printerr (_("--editable is not supported for this dialog\n")); + zenity_free_parsing_options (); + exit (-1); + } + if (results->text_data->editable == TRUE) { + g_printerr (_("--editable given twice for the same dialog\n")); + zenity_free_parsing_options (); + exit (-1); + } + results->text_data->editable = TRUE; + break; case OPTION_FILENAME: case OPTION_TEXTFILE: diff --git a/src/text.c b/src/text.c index fe9747c..02b2f10 100644 --- a/src/text.c +++ b/src/text.c @@ -25,6 +25,8 @@ #include "zenity.h" #include "util.h" +static ZenityTextData *zen_text_data; + static void zenity_text_dialog_response (GtkWidget *widget, int response, gpointer data); void @@ -35,6 +37,7 @@ zenity_text (ZenityData *data, ZenityTextData *text_data) GtkWidget *text_view; GtkTextBuffer *text_buffer; + zen_text_data = text_data; glade_dialog = zenity_util_load_glade_file ("zenity_text_dialog"); if (glade_dialog == NULL) { @@ -63,7 +66,10 @@ zenity_text (ZenityData *data, ZenityTextData *text_data) text_view = glade_xml_get_widget (glade_dialog, "zenity_text_view"); if (zenity_util_fill_file_buffer (text_buffer, text_data->uri)) gtk_text_view_set_buffer (GTK_TEXT_VIEW (text_view), text_buffer); - + gtk_text_view_set_editable (GTK_TEXT_VIEW(text_view), text_data->editable); + if (text_data->editable) { + zen_text_data->buffer = text_buffer; + } gtk_widget_show (dialog); if (glade_dialog) @@ -79,6 +85,12 @@ zenity_text_dialog_response (GtkWidget *widget, int response, gpointer data) switch (response) { case GTK_RESPONSE_CLOSE: + if (zen_text_data->editable) { + GtkTextIter start,end; + + gtk_text_buffer_get_bounds (zen_text_data->buffer, &start, &end); + g_printerr (gtk_text_buffer_get_text (zen_text_data->buffer, &start, &end, 0)); + } zen_data->exit_code = 0; gtk_main_quit (); break; diff --git a/src/zenity.h b/src/zenity.h index 813fbdd..18da11e 100644 --- a/src/zenity.h +++ b/src/zenity.h @@ -68,6 +68,8 @@ typedef struct { typedef struct { gchar *uri; + gboolean editable; + GtkTextBuffer *buffer; } ZenityTextData; typedef struct {