gnucash maint: Multiple changes pushed

Christopher Lam clam at code.gnucash.org
Wed Apr 14 09:27:40 EDT 2021


Updated	 via  https://github.com/Gnucash/gnucash/commit/668986ce (commit)
	 via  https://github.com/Gnucash/gnucash/commit/57f14e48 (commit)
	from  https://github.com/Gnucash/gnucash/commit/490f9a80 (commit)



commit 668986ce97ed0de545762080c9e58487e957674d
Merge: 490f9a803 57f14e488
Author: Christopher Lam <christopher.lck at gmail.com>
Date:   Wed Apr 14 21:22:32 2021 +0800

    Merge branch 'sx-progress' into maint #965


commit 57f14e488ad67708e4caeb0a44624c005355fecd
Author: Christopher Lam <christopher.lck at gmail.com>
Date:   Tue Apr 6 09:06:52 2021 +0800

    [dialog-sx-editor]: Extract update_sensitivity
    
    Refactors and centralises SX GtkWidget property sensitivities logic
    into one function, with the following logic:
    
    * SX properties are disabled if the SX enabledOpt is FALSE
    * if autocreate then enable 'notify when autocreating'

diff --git a/gnucash/gnome/dialog-sx-editor.c b/gnucash/gnome/dialog-sx-editor.c
index 4432f43b7..1bc03a85e 100644
--- a/gnucash/gnome/dialog-sx-editor.c
+++ b/gnucash/gnome/dialog-sx-editor.c
@@ -128,6 +128,7 @@ struct _GncSxEditorDialog
     GtkToggleButton *optEndDate;
     GtkToggleButton *optEndNone;
     GtkToggleButton *optEndCount;
+    EndType end_type;
     GtkEntry *endCountSpin;
     GtkEntry *endRemainSpin;
     GNCDateEdit *endDateEntry;
@@ -1010,43 +1011,63 @@ gnc_sxed_save_sx (GncSxEditorDialog *sxed)
     gnc_sx_commit_edit (sxed->sx);
 }
 
+static void
+update_sensitivity (GncSxEditorDialog *sxed)
+{
+    gboolean enabled = gtk_toggle_button_get_active (sxed->enabledOpt);
+    gboolean autocreate = gtk_toggle_button_get_active (sxed->autocreateOpt);
+    gboolean advance = gtk_toggle_button_get_active (sxed->advanceOpt);
+    gboolean remind = gtk_toggle_button_get_active (sxed->remindOpt);
+    gboolean type_date = (sxed->end_type == END_DATE);
+    gboolean type_occur = (sxed->end_type == END_OCCUR);
+
+    gnc_suspend_gui_refresh ();
+
+    gtk_widget_set_sensitive (GTK_WIDGET (sxed->autocreateOpt), enabled);
+    gtk_widget_set_sensitive (GTK_WIDGET (sxed->notifyOpt), enabled && autocreate);
+
+    gtk_widget_set_sensitive (GTK_WIDGET (sxed->advanceOpt), enabled);
+    gtk_widget_set_sensitive (GTK_WIDGET (sxed->advanceSpin), enabled && advance);
+
+    gtk_widget_set_sensitive (GTK_WIDGET (sxed->remindOpt), enabled);
+    gtk_widget_set_sensitive (GTK_WIDGET (sxed->remindSpin), enabled && remind);
+
+    gtk_widget_set_sensitive (GTK_WIDGET (sxed->optEndNone), enabled);
+    gtk_widget_set_sensitive (GTK_WIDGET (sxed->optEndDate), enabled);
+    gtk_widget_set_sensitive (GTK_WIDGET (sxed->optEndCount), enabled);
+
+    gtk_widget_set_sensitive (GTK_WIDGET (sxed->endDateEntry), enabled && type_date);
+    gtk_widget_set_sensitive (GTK_WIDGET (sxed->endCountSpin), enabled && type_occur);
+    gtk_widget_set_sensitive (GTK_WIDGET (sxed->endRemainSpin), enabled && type_occur);
+
+    gtk_widget_set_sensitive (gtk_notebook_get_nth_page (sxed->notebook, 1), enabled);
+    gtk_widget_set_sensitive (gtk_notebook_get_nth_page (sxed->notebook, 2), enabled);
+
+    gnc_resume_gui_refresh ();
+}
 
 static void
 enabled_toggled_cb (GtkToggleButton *o, GncSxEditorDialog *sxed)
 {
-    return;
+    update_sensitivity (sxed);
 }
 
-
 static void
 autocreate_toggled_cb (GtkToggleButton *o, GncSxEditorDialog *sxed)
 {
-    if (!gtk_toggle_button_get_active (o))
-    {
-        gtk_toggle_button_set_active (sxed->notifyOpt, FALSE);
-    }
-    gtk_widget_set_sensitive (GTK_WIDGET (sxed->notifyOpt),
-                              gtk_toggle_button_get_active (o));
+    update_sensitivity (sxed);
 }
 
-
 static void
 advance_toggled_cb (GtkButton *o, GncSxEditorDialog *sxed)
 {
-
-    gtk_widget_set_sensitive (GTK_WIDGET (sxed->advanceSpin),
-                              gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (sxed->advanceOpt)));
-    gtk_editable_set_editable (GTK_EDITABLE (sxed->advanceSpin), TRUE);
+    update_sensitivity (sxed);
 }
 
-
 static void
 remind_toggled_cb (GtkButton *o, GncSxEditorDialog *sxed)
 {
-
-    gtk_widget_set_sensitive (GTK_WIDGET (sxed->remindSpin),
-                              gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (sxed->remindOpt)));
-    gtk_editable_set_editable (GTK_EDITABLE (sxed->remindSpin), TRUE);
+    update_sensitivity (sxed);
 }
 
 
@@ -1497,9 +1518,8 @@ schedXact_editor_populate (GncSxEditorDialog *sxed)
 static void
 set_endgroup_toggle_states (GncSxEditorDialog *sxed, EndType type)
 {
-    gtk_widget_set_sensitive (GTK_WIDGET (sxed->endDateEntry), (type == END_DATE));
-    gtk_widget_set_sensitive (GTK_WIDGET (sxed->endCountSpin), (type == END_OCCUR));
-    gtk_widget_set_sensitive (GTK_WIDGET (sxed->endRemainSpin), (type == END_OCCUR));
+    sxed->end_type = type;
+    update_sensitivity (sxed);
 }
 
 



Summary of changes:
 gnucash/gnome/dialog-sx-editor.c | 62 ++++++++++++++++++++++++++--------------
 1 file changed, 41 insertions(+), 21 deletions(-)



More information about the gnucash-changes mailing list