[gnumeric] Text export: fix handling of custom format in the gui.



commit 49fc2a73050d18b78e0903c32c02a46da348696c
Author: Morten Welinder <terra gnome org>
Date:   Sat Sep 5 20:56:17 2009 -0400

    Text export: fix handling of custom format in the gui.

 NEWS                                |    3 +++
 src/dialogs/ChangeLog               |   11 +++++++++++
 src/dialogs/dialog-stf-export.c     |   31 ++++++++++++++++++++++++++-----
 src/dialogs/dialog-stf-export.glade |    1 -
 4 files changed, 40 insertions(+), 6 deletions(-)
---
diff --git a/NEWS b/NEWS
index 96c90f4..3c15006 100644
--- a/NEWS
+++ b/NEWS
@@ -1,5 +1,8 @@
 Gnumeric 1.9.13
 
+Morten:
+	* Fixes text export GUI issue.  [#594155]
+
 --------------------------------------------------------------------------
 Gnumeric 1.9.12
 
diff --git a/src/dialogs/ChangeLog b/src/dialogs/ChangeLog
index 04ae897..db8c5b2 100644
--- a/src/dialogs/ChangeLog
+++ b/src/dialogs/ChangeLog
@@ -1,3 +1,14 @@
+2009-09-05  Morten Welinder  <terra gnome org>
+
+	* dialog-stf-export.c (sheet_page_separator_menu_changed): Don't
+	make custom format insensitive.  Set format custom's text to match
+	item chosen.
+	(cb_custom_separator_changed): New function.
+	(stf_export_dialog_format_page_init): Hook up
+	cb_custom_separator_changed.  Call
+	sheet_page_separator_menu_changed to boot strap.
+	Fixes #594155.
+
 2009-09-05  Morten Welinder <terra gnome org>
 
 	* Release 1.9.12
diff --git a/src/dialogs/dialog-stf-export.c b/src/dialogs/dialog-stf-export.c
index fb7aa4d..59ec446 100644
--- a/src/dialogs/dialog-stf-export.c
+++ b/src/dialogs/dialog-stf-export.c
@@ -88,18 +88,34 @@ static void
 sheet_page_separator_menu_changed (TextExportState *state)
 {
 	unsigned active = gtk_combo_box_get_active (state->format.separator);
-	if (active < G_N_ELEMENTS (format_seps) && !format_seps[active]) {
-		gtk_widget_set_sensitive (state->format.custom, TRUE);
+	if (active >= G_N_ELEMENTS (format_seps))
+		active = 0;
+
+	if (!format_seps[active]) {
 		gtk_widget_grab_focus (state->format.custom);
 		gtk_editable_select_region (GTK_EDITABLE (state->format.custom), 0, -1);
 	} else {
-		gtk_widget_set_sensitive (state->format.custom, FALSE);
-		/* If we don't use this the selection will remain blue */
-		gtk_editable_select_region (GTK_EDITABLE (state->format.custom), 0, 0);
+		gtk_entry_set_text (GTK_ENTRY (state->format.custom),
+				    format_seps[active]);
 	}
 }
 
 static void
+cb_custom_separator_changed (TextExportState *state)
+{
+	const char *text = gtk_entry_get_text (GTK_ENTRY (state->format.custom));
+	unsigned active = gtk_combo_box_get_active (state->format.separator);
+	unsigned ui;
+
+	for (ui = 0; format_seps[ui]; ui++)
+		if (strcmp (text, format_seps[ui]) == 0)
+			break;
+
+	if (ui != active)
+		gtk_combo_box_set_active (state->format.separator, ui);
+}
+
+static void
 stf_export_dialog_format_page_init (TextExportState *state)
 {
 	GtkWidget *table;
@@ -243,6 +259,11 @@ stf_export_dialog_format_page_init (TextExportState *state)
 	g_signal_connect_swapped (state->format.separator,
 		"changed",
 		G_CALLBACK (sheet_page_separator_menu_changed), state);
+	g_signal_connect_swapped (state->format.custom,
+		"changed",
+		G_CALLBACK (cb_custom_separator_changed), state);
+
+	sheet_page_separator_menu_changed (state);
 }
 
 static gboolean
diff --git a/src/dialogs/dialog-stf-export.glade b/src/dialogs/dialog-stf-export.glade
index e0eed97..2b502fa 100644
--- a/src/dialogs/dialog-stf-export.glade
+++ b/src/dialogs/dialog-stf-export.glade
@@ -687,7 +687,6 @@ Never</property>
 		  <child>
 		    <widget class="GtkEntry" id="format_custom">
 		      <property name="visible">True</property>
-		      <property name="sensitive">False</property>
 		      <property name="can_focus">True</property>
 		      <property name="editable">True</property>
 		      <property name="visibility">True</property>



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]