gnucash master: Multiple changes pushed

Geert Janssens gjanssens at code.gnucash.org
Sat Mar 8 11:48:37 EST 2014


Updated	 via  https://github.com/Gnucash/gnucash/commit/af4a5d44 (commit)
	 via  https://github.com/Gnucash/gnucash/commit/40febc5f (commit)
	from  https://github.com/Gnucash/gnucash/commit/7dbe4c7a (commit)



commit af4a5d440ae1a419c0d741af77151cbecc8899e0
Author: Geert Janssens <janssens-geert at telenet.be>
Date:   Sat Mar 8 17:47:06 2014 +0100

    Bug 725534 - Scheduled transactions columns widths not retrieved

diff --git a/src/gnome/gnc-plugin-page-sx-list.c b/src/gnome/gnc-plugin-page-sx-list.c
index b416600..3d547b9 100644
--- a/src/gnome/gnc-plugin-page-sx-list.c
+++ b/src/gnome/gnc-plugin-page-sx-list.c
@@ -66,6 +66,7 @@
 #include "gnc-icons.h"
 #include "gnc-main-window.h"
 #include "gnc-plugin-page-sx-list.h"
+#include "gnc-session.h"
 #include "gnc-sx-instance-dense-cal-adapter.h"
 #include "gnc-sx-instance-model.h"
 #include "gnc-sx-list-tree-model-adapter.h"
@@ -79,7 +80,7 @@
 G_GNUC_UNUSED static QofLogModule log_module = GNC_MOD_GUI_SX;
 
 #define PLUGIN_PAGE_SX_LIST_CM_CLASS "plugin-page-sx-list"
-#define STATE_SECTION "window/pages/sx_list"
+#define STATE_SECTION "SX Transaction List"
 
 typedef struct GncPluginPageSxListPrivate
 {
@@ -474,6 +475,8 @@ gnc_plugin_page_sx_list_create_widget (GncPluginPage *plugin_page)
                              gnc_plugin_page_sx_list_refresh_cb,
                              gnc_plugin_page_sx_list_close_cb,
                              page);
+    gnc_gui_component_set_session (priv->gnc_component_id,
+                                   gnc_get_current_session());
 
     return priv->widget;
 }

commit 40febc5ff88c995124b3f9ed7e499a8cdec6c7e8
Author: Geert Janssens <janssens-geert at telenet.be>
Date:   Sat Mar 8 17:46:12 2014 +0100

    Refactor state saving function out of widget destruction

diff --git a/src/gnome-utils/gnc-tree-view.c b/src/gnome-utils/gnc-tree-view.c
index 36770fa..547d32d 100644
--- a/src/gnome-utils/gnc-tree-view.c
+++ b/src/gnome-utils/gnc-tree-view.c
@@ -340,69 +340,7 @@ gnc_tree_view_destroy (GtkObject *object)
 
     if (priv->state_section)
     {
-        /* Save state. Only store non-default values when possible. */
-        GList *column_list, *tmp;
-        GKeyFile *state_file = gnc_state_get_current();
-        gsize num_cols = 0;
-        gchar *sort_column = gnc_tree_view_get_sort_column (view);
-        gchar *sort_order = gnc_tree_view_get_sort_order (view);
-        gchar **col_order = gnc_tree_view_get_column_order (view, &num_cols);
-
-        /* Default sort column is the first column */
-        if (sort_column &&
-                (gnc_tree_view_find_column_by_name (view, sort_column) !=
-                        gtk_tree_view_get_column (GTK_TREE_VIEW (view), 0)))
-            g_key_file_set_string (state_file, priv->state_section, STATE_KEY_SORT_COLUMN, sort_column);
-        else if (g_key_file_has_key (state_file, priv->state_section, STATE_KEY_SORT_COLUMN, NULL))
-            g_key_file_remove_key (state_file, priv->state_section, STATE_KEY_SORT_COLUMN, NULL);
-        g_free (sort_column);
-
-
-        /* Default sort order is "ascending" */
-        if (g_strcmp0 (sort_order, "descending") == 0)
-            g_key_file_set_string (state_file, priv->state_section, STATE_KEY_SORT_ORDER, sort_order);
-        else if (g_key_file_has_key (state_file, priv->state_section, STATE_KEY_SORT_ORDER, NULL))
-            g_key_file_remove_key (state_file, priv->state_section, STATE_KEY_SORT_ORDER, NULL);
-        g_free (sort_order);
-
-        if (col_order && (num_cols > 0))
-            g_key_file_set_string_list (state_file, priv->state_section, STATE_KEY_COLUMN_ORDER,
-                                        (const gchar**) col_order, num_cols);
-        else if (g_key_file_has_key (state_file, priv->state_section, STATE_KEY_COLUMN_ORDER, NULL))
-            g_key_file_remove_key (state_file, priv->state_section, STATE_KEY_COLUMN_ORDER, NULL);
-
-
-        // ENTER("view %p, wanted %s", view, wanted);
-        column_list = gtk_tree_view_get_columns (GTK_TREE_VIEW (view));
-        for (tmp = column_list; tmp; tmp = g_list_next (tmp))
-        {
-            GtkTreeViewColumn *column = tmp->data;
-            gchar *key=NULL;
-            const gchar *name = g_object_get_data (G_OBJECT (column), PREF_NAME);
-            if (!name)
-                continue;
-
-            if (!g_object_get_data (G_OBJECT (column), ALWAYS_VISIBLE))
-            {
-                key = g_strjoin ("_", name, STATE_KEY_SUFF_VISIBLE, NULL);
-                g_key_file_set_boolean (state_file, priv->state_section, key,
-                                        gtk_tree_view_column_get_visible (column));
-                g_free (key);
-            }
-
-            key = g_strjoin ("_", name, STATE_KEY_SUFF_WIDTH, NULL);
-            if (g_object_get_data (G_OBJECT(column), "default-width") &&
-                (GPOINTER_TO_INT((g_object_get_data (G_OBJECT(column), "default-width")))
-                    != gtk_tree_view_column_get_width (column)))
-            {
-                g_key_file_set_integer (state_file, priv->state_section, key,
-                                        gtk_tree_view_column_get_width (column));
-            }
-            else if (g_key_file_has_key (state_file, priv->state_section, key, NULL))
-                g_key_file_remove_key (state_file, priv->state_section, key, NULL);
-            g_free (key);
-        }
-        g_list_free(column_list);
+        gnc_tree_view_save_state (view);
     }
     g_free(priv->state_section);
     priv->state_section = NULL;
@@ -1145,6 +1083,86 @@ gnc_tree_view_get_state_section (GncTreeView *view)
     return priv->state_section;
 }
 
+void gnc_tree_view_save_state (GncTreeView *view)
+{
+    GncTreeViewPrivate *priv;
+
+    ENTER("view %p", view);
+    g_return_if_fail (view != NULL);
+    g_return_if_fail (GNC_IS_TREE_VIEW (view));
+
+    priv = GNC_TREE_VIEW_GET_PRIVATE(view);
+
+    if (priv->state_section)
+    {
+        /* Save state. Only store non-default values when possible. */
+        GList *column_list, *tmp;
+        GKeyFile *state_file = gnc_state_get_current();
+        gsize num_cols = 0;
+        gchar *sort_column = gnc_tree_view_get_sort_column (view);
+        gchar *sort_order = gnc_tree_view_get_sort_order (view);
+        gchar **col_order = gnc_tree_view_get_column_order (view, &num_cols);
+
+        /* Default sort column is the first column */
+        if (sort_column &&
+                (gnc_tree_view_find_column_by_name (view, sort_column) !=
+                        gtk_tree_view_get_column (GTK_TREE_VIEW (view), 0)))
+            g_key_file_set_string (state_file, priv->state_section, STATE_KEY_SORT_COLUMN, sort_column);
+        else if (g_key_file_has_key (state_file, priv->state_section, STATE_KEY_SORT_COLUMN, NULL))
+            g_key_file_remove_key (state_file, priv->state_section, STATE_KEY_SORT_COLUMN, NULL);
+        g_free (sort_column);
+
+
+        /* Default sort order is "ascending" */
+        if (g_strcmp0 (sort_order, "descending") == 0)
+            g_key_file_set_string (state_file, priv->state_section, STATE_KEY_SORT_ORDER, sort_order);
+        else if (g_key_file_has_key (state_file, priv->state_section, STATE_KEY_SORT_ORDER, NULL))
+            g_key_file_remove_key (state_file, priv->state_section, STATE_KEY_SORT_ORDER, NULL);
+        g_free (sort_order);
+
+        if (col_order && (num_cols > 0))
+            g_key_file_set_string_list (state_file, priv->state_section, STATE_KEY_COLUMN_ORDER,
+                                        (const gchar**) col_order, num_cols);
+        else if (g_key_file_has_key (state_file, priv->state_section, STATE_KEY_COLUMN_ORDER, NULL))
+            g_key_file_remove_key (state_file, priv->state_section, STATE_KEY_COLUMN_ORDER, NULL);
+
+
+        // ENTER("view %p, wanted %s", view, wanted);
+        column_list = gtk_tree_view_get_columns (GTK_TREE_VIEW (view));
+        for (tmp = column_list; tmp; tmp = g_list_next (tmp))
+        {
+            GtkTreeViewColumn *column = tmp->data;
+            gchar *key=NULL;
+            const gchar *name = g_object_get_data (G_OBJECT (column), PREF_NAME);
+            if (!name)
+                continue;
+
+            if (!g_object_get_data (G_OBJECT (column), ALWAYS_VISIBLE))
+            {
+                key = g_strjoin ("_", name, STATE_KEY_SUFF_VISIBLE, NULL);
+                g_key_file_set_boolean (state_file, priv->state_section, key,
+                                        gtk_tree_view_column_get_visible (column));
+                g_free (key);
+            }
+
+            key = g_strjoin ("_", name, STATE_KEY_SUFF_WIDTH, NULL);
+            if (g_object_get_data (G_OBJECT(column), "default-width") &&
+                (GPOINTER_TO_INT((g_object_get_data (G_OBJECT(column), "default-width")))
+                    != gtk_tree_view_column_get_width (column)))
+            {
+                g_key_file_set_integer (state_file, priv->state_section, key,
+                                        gtk_tree_view_column_get_width (column));
+            }
+            else if (g_key_file_has_key (state_file, priv->state_section, key, NULL))
+                g_key_file_remove_key (state_file, priv->state_section, key, NULL);
+            g_free (key);
+        }
+        g_list_free(column_list);
+    }
+
+    LEAVE(" ");
+}
+
 
 /** @} */
 
diff --git a/src/gnome-utils/gnc-tree-view.h b/src/gnome-utils/gnc-tree-view.h
index e7f1123..6cef2a6 100644
--- a/src/gnome-utils/gnc-tree-view.h
+++ b/src/gnome-utils/gnc-tree-view.h
@@ -363,6 +363,16 @@ const gchar *gnc_tree_view_get_state_section (GncTreeView *view);
  */
 void gnc_tree_view_remove_state_information(GncTreeView *view);
 
+
+/** This function is called to write the treeview's state
+ *  information (column visibility, width, sorting order,..)
+ *  to the state file.
+ *
+ *  @param view The tree view.
+ */
+void gnc_tree_view_save_state (GncTreeView *view);
+
+
 /** This function set the columns that will be allocated the free space
  *  in the view.
  *



Summary of changes:
 src/gnome-utils/gnc-tree-view.c     | 144 ++++++++++++++++++++----------------
 src/gnome-utils/gnc-tree-view.h     |  10 +++
 src/gnome/gnc-plugin-page-sx-list.c |   5 +-
 3 files changed, 95 insertions(+), 64 deletions(-)



More information about the gnucash-changes mailing list