[Gnucash-changes] r13361 - gnucash/trunk - Provide a callback
whereby the core register code can tell the upper
David Hampton
hampton at cvs.gnucash.org
Wed Feb 22 10:41:18 EST 2006
Author: hampton
Date: 2006-02-22 10:41:18 -0500 (Wed, 22 Feb 2006)
New Revision: 13361
Trac: http://svn.gnucash.org/trac/changeset/13361
Modified:
gnucash/trunk/ChangeLog
gnucash/trunk/src/gnome/gnc-plugin-page-register.c
gnucash/trunk/src/register/ledger-core/split-register-control.c
gnucash/trunk/src/register/ledger-core/split-register.c
gnucash/trunk/src/register/ledger-core/split-register.h
Log:
Provide a callback whereby the core register code can tell the upper
layers that it has moved from an expanded transaction to a collapsed
transaction. This lets the upper layer adjust the "split" transaction
toolbar button properly. Fixes 332165.
Modified: gnucash/trunk/ChangeLog
===================================================================
--- gnucash/trunk/ChangeLog 2006-02-22 14:22:30 UTC (rev 13360)
+++ gnucash/trunk/ChangeLog 2006-02-22 15:41:18 UTC (rev 13361)
@@ -1,3 +1,13 @@
+2006-02-22 David Hampton <hampton at employees.org>
+
+ * src/register/ledger-core/split-register.[ch]:
+ * src/register/ledger-core/split-register-control.c:
+ * src/gnome/gnc-plugin-page-register.c: Provide a callback whereby
+ the core register code can tell the upper layers that it has moved
+ from an expanded transaction to a collapsed transaction. This
+ lets the upper layer adjust the "split" transaction toolbar button
+ properly. Fixes 332165.
+
2006-02-21 David Hampton <hampton at employees.org>
* src/gnome/gnc-plugin-page-register.c: Fix from Andreas Köhler to
Modified: gnucash/trunk/src/gnome/gnc-plugin-page-register.c
===================================================================
--- gnucash/trunk/src/gnome/gnc-plugin-page-register.c 2006-02-22 14:22:30 UTC (rev 13360)
+++ gnucash/trunk/src/gnome/gnc-plugin-page-register.c 2006-02-22 15:41:18 UTC (rev 13361)
@@ -146,6 +146,8 @@
static void gnc_plugin_page_help_changed_cb( GNCSplitReg *gsr, GncPluginPageRegister *register_page );
static void gnc_plugin_page_register_refresh_cb (GHashTable *changes, gpointer user_data);
+static void gnc_plugin_page_register_update_split_button (SplitRegister *reg, GncPluginPageRegister *page);
+
/************************************************************/
/* Actions */
/************************************************************/
@@ -407,6 +409,7 @@
GncPluginPageRegisterPrivate *priv;
GncPluginPage *plugin_page;
GNCSplitReg *gsr;
+ SplitRegister *reg;
const GList *item;
GList *book_list;
gchar *label;
@@ -440,6 +443,10 @@
gnc_plugin_page_add_book (plugin_page, (QofBook *)item->data);
// Do not free the list. It is owned by the query.
+ reg = gnc_ledger_display_get_split_register(priv->ledger);
+ gnc_split_register_set_trans_collapsed_cb
+ (reg, (GFunc)gnc_plugin_page_register_update_split_button, register_page);
+
priv->component_manager_id = 0;
return plugin_page;
}
@@ -578,6 +585,26 @@
static void
+gnc_plugin_page_register_update_split_button (SplitRegister *reg, GncPluginPageRegister *page)
+{
+ GtkActionGroup *action_group;
+ GtkAction *action;
+ gboolean expanded;
+
+ expanded = gnc_split_register_current_trans_expanded(reg);
+
+ action_group = gnc_plugin_page_get_action_group(GNC_PLUGIN_PAGE(page));
+ action = gtk_action_group_get_action (action_group,
+ "SplitTransactionAction");
+
+ g_signal_handlers_block_by_func
+ (action, gnc_plugin_page_register_cmd_expand_transaction, page);
+ gtk_toggle_action_set_active (GTK_TOGGLE_ACTION(action), expanded);
+ g_signal_handlers_unblock_by_func
+ (action, gnc_plugin_page_register_cmd_expand_transaction, page);
+}
+
+static void
gnc_plugin_page_register_update_toolbar (GncPluginPageRegister *page, SplitRegisterStyle style)
{
GtkActionGroup *action_group;
Modified: gnucash/trunk/src/register/ledger-core/split-register-control.c
===================================================================
--- gnucash/trunk/src/register/ledger-core/split-register-control.c 2006-02-22 14:22:30 UTC (rev 13360)
+++ gnucash/trunk/src/register/ledger-core/split-register-control.c 2006-02-22 15:41:18 UTC (rev 13361)
@@ -448,7 +448,7 @@
reg->style == REG_STYLE_JOURNAL);
}
- info->trans_expanded = FALSE;
+ gnc_split_register_collapse_current_trans(reg);
do_refresh = TRUE;
}
Modified: gnucash/trunk/src/register/ledger-core/split-register.c
===================================================================
--- gnucash/trunk/src/register/ledger-core/split-register.c 2006-02-22 14:22:30 UTC (rev 13360)
+++ gnucash/trunk/src/register/ledger-core/split-register.c 2006-02-22 15:41:18 UTC (rev 13361)
@@ -229,6 +229,29 @@
reg->table->current_cursor_loc.vcell_loc);
}
+void
+gnc_split_register_collapse_current_trans (SplitRegister *reg)
+{
+ SRInfo *info = gnc_split_register_get_info (reg);
+
+ if (!reg)
+ return;
+
+ info->trans_expanded = FALSE;
+ if (reg->expand_changed_cb)
+ (reg->expand_changed_cb)(reg, reg->expand_changed_cb_data);
+}
+
+void
+gnc_split_register_set_trans_collapsed_cb (SplitRegister *reg, GFunc cb, gpointer cb_data)
+{
+ if (!reg)
+ return;
+
+ reg->expand_changed_cb = cb;
+ reg->expand_changed_cb_data = cb_data;
+}
+
gboolean
gnc_split_register_current_trans_expanded (SplitRegister *reg)
{
@@ -540,7 +563,7 @@
info->cursor_hint_trans_split = trans_split;
info->cursor_hint_cursor_class = CURSOR_CLASS_TRANS;
- info->trans_expanded = FALSE;
+ gnc_split_register_collapse_current_trans(reg);
}
/* Refresh the GUI. */
@@ -928,7 +951,7 @@
return;
}
- info->trans_expanded = FALSE;
+ gnc_split_register_collapse_current_trans(reg);
gnc_suspend_gui_refresh ();
@@ -980,7 +1003,7 @@
if (xaccSplitGetReconcile (split) == VREC)
return;
- info->trans_expanded = FALSE;
+ gnc_split_register_collapse_current_trans(reg);
gnc_suspend_gui_refresh ();
@@ -1029,7 +1052,7 @@
if (xaccSplitGetReconcile (split) != VREC)
return;
- info->trans_expanded = FALSE;
+ gnc_split_register_collapse_current_trans(reg);
gnc_suspend_gui_refresh ();
Modified: gnucash/trunk/src/register/ledger-core/split-register.h
===================================================================
--- gnucash/trunk/src/register/ledger-core/split-register.h 2006-02-22 14:22:30 UTC (rev 13360)
+++ gnucash/trunk/src/register/ledger-core/split-register.h 2006-02-22 15:41:18 UTC (rev 13361)
@@ -240,6 +240,9 @@
{
Table * table; /**< The table itself that implements the underlying GUI. */
+ GFunc expand_changed_cb;
+ gpointer expand_changed_cb_data;
+
SplitRegisterType type;
SplitRegisterStyle style;
@@ -410,6 +413,14 @@
void gnc_split_register_expand_current_trans (SplitRegister *reg,
gboolean expand);
+/** Mark the current transaction as collapsed, and do callbacks. */
+void gnc_split_register_collapse_current_trans (SplitRegister *reg);
+
+/** Register a callback function for when the register closes a
+ * transaction without the user explicitly asking for this to
+ * be changed. */
+void gnc_split_register_set_trans_collapsed_cb (SplitRegister *reg, GFunc cb, gpointer cb_data);
+
/** Return TRUE if current trans is expanded and style is REG_STYLE_LEDGER. */
gboolean gnc_split_register_current_trans_expanded (SplitRegister *reg);
More information about the gnucash-changes
mailing list