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