[gnumeric] Implement input message editing. [Part of #705310]



commit 6f3db5c32e0c5318da08ecebaf4031ef1d3e35b0
Author: Andreas J Guelzow <aguelzow pyrshep ca>
Date:   Sat Aug 3 00:10:34 2013 -0600

    Implement input message editing. [Part of #705310]
    
    2013-08-03  Andreas J. Guelzow <aguelzow pyrshep ca>
    
        * dialog-cell-format.c (input_msg_rebuild_input_msg): new
        (cb_input_msg_rebuild): new
        (cb_input_msg_flag_toggled): rebuild input message
        (fmt_dialog_init_input_msg_page): connect new callbacks

 NEWS                             |    1 +
 src/dialogs/ChangeLog            |    7 +++++++
 src/dialogs/dialog-cell-format.c |   34 ++++++++++++++++++++++++++++++++++
 3 files changed, 42 insertions(+), 0 deletions(-)
---
diff --git a/NEWS b/NEWS
index 7d35a32..fddceac 100644
--- a/NEWS
+++ b/NEWS
@@ -12,6 +12,7 @@ Andreas:
        * Fix crash on corrupted files. [#704636]
        * Fix ODF import of charts with series consisting of multiple ranges. [#704742]
        * Fix ODF export of charts with series consisting of multiple ranges.
+       * Implement input message editing. [Part of #705310]
 
 Jean:
        * Fix text wrap inside sheet objects. [#704417]
diff --git a/src/dialogs/ChangeLog b/src/dialogs/ChangeLog
index 2357b92..ef6f8c0 100644
--- a/src/dialogs/ChangeLog
+++ b/src/dialogs/ChangeLog
@@ -1,3 +1,10 @@
+2013-08-03  Andreas J. Guelzow <aguelzow pyrshep ca>
+
+       * dialog-cell-format.c (input_msg_rebuild_input_msg): new
+       (cb_input_msg_rebuild): new
+       (cb_input_msg_flag_toggled): rebuild input message
+       (fmt_dialog_init_input_msg_page): connect new callbacks
+
 2013-08-02  Andreas J. Guelzow <aguelzow pyrshep ca>
 
        * dialog-cell-format.c: remove dialog_changed and dialog_changed_user_data
diff --git a/src/dialogs/dialog-cell-format.c b/src/dialogs/dialog-cell-format.c
index c4869e9..b33612f 100644
--- a/src/dialogs/dialog-cell-format.c
+++ b/src/dialogs/dialog-cell-format.c
@@ -1963,6 +1963,26 @@ fmt_dialog_init_validation_page (FormatState *state)
 /*****************************************************************************/
 
 static void
+input_msg_rebuild_input_msg (FormatState *state)
+{
+       GnmInputMsg *im;
+       char *msg = gnumeric_textview_get_text (state->input_msg.msg);
+       char const *title = gtk_entry_get_text (state->input_msg.title);
+
+       im = gnm_input_msg_new  (msg, title);
+       g_free (msg);
+       gnm_style_set_input_msg (state->result, im);
+       fmt_dialog_changed (state);
+}
+
+static void
+cb_input_msg_rebuild (G_GNUC_UNUSED void *ignored,
+                     FormatState *state)
+{
+       input_msg_rebuild_input_msg (state);
+}
+
+static void
 cb_input_msg_flag_toggled (GtkToggleButton *button, FormatState *state)
 {
        gboolean flag = gtk_toggle_button_get_active (button);
@@ -1971,6 +1991,14 @@ cb_input_msg_flag_toggled (GtkToggleButton *button, FormatState *state)
        gtk_widget_set_sensitive (GTK_WIDGET (state->input_msg.msg_label), flag);
        gtk_widget_set_sensitive (GTK_WIDGET (state->input_msg.title), flag);
        gtk_widget_set_sensitive (GTK_WIDGET (state->input_msg.msg), flag);
+
+       if (state->enable_edit) {
+               if (flag)
+                       input_msg_rebuild_input_msg (state);
+               else
+                       gnm_style_set_input_msg (state->result, NULL);
+               fmt_dialog_changed (state);
+       }
 }
 
 static void
@@ -2005,6 +2033,12 @@ fmt_dialog_init_input_msg_page (FormatState *state)
        g_signal_connect (G_OBJECT (state->input_msg.flag),
                "toggled",
                G_CALLBACK (cb_input_msg_flag_toggled), state);
+       g_signal_connect (G_OBJECT (state->input_msg.title),
+               "changed",
+               G_CALLBACK (cb_input_msg_rebuild), state);
+       g_signal_connect (G_OBJECT (gtk_text_view_get_buffer (state->input_msg.msg)),
+               "changed",
+               G_CALLBACK (cb_input_msg_rebuild), state);
 
        /* Initialize */
        cb_input_msg_flag_toggled (state->input_msg.flag, state);


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