r16418 - gnucash/branches/register-rewrite/src - Initial implementation of copy and paste of Transactions.
Chris Shoemaker
chris at cvs.gnucash.org
Sat Aug 11 17:24:23 EDT 2007
Author: chris
Date: 2007-08-11 17:20:08 -0400 (Sat, 11 Aug 2007)
New Revision: 16418
Trac: http://svn.gnucash.org/trac/changeset/16418
Modified:
gnucash/branches/register-rewrite/src/gnome-utils/gnc-tree-view-transaction.c
gnucash/branches/register-rewrite/src/gnome-utils/gnc-tree-view-transaction.h
gnucash/branches/register-rewrite/src/gnome/gnc-plugin-page-transactions.c
Log:
Initial implementation of copy and paste of Transactions.
Modified: gnucash/branches/register-rewrite/src/gnome/gnc-plugin-page-transactions.c
===================================================================
--- gnucash/branches/register-rewrite/src/gnome/gnc-plugin-page-transactions.c 2007-08-11 21:10:34 UTC (rev 16417)
+++ gnucash/branches/register-rewrite/src/gnome/gnc-plugin-page-transactions.c 2007-08-11 21:20:08 UTC (rev 16418)
@@ -139,14 +139,28 @@
gnc_ui_edit_account_window(acc);
}
-static void gppt_cmd_cut_trans(GtkAction *act, GncPluginPageTransactions *pp)
-{;}
-static void gppt_cmd_copy_trans(GtkAction *act, GncPluginPageTransactions *pp)
-{;}
-static void gppt_cmd_paste_trans(GtkAction *act, GncPluginPageTransactions *pp)
-{;}
-static void gppt_cmd_duplicate_trans(GtkAction *act, GncPluginPageTransactions *pp)
-{;}
+static void
+gppt_cmd_cut_trans(GtkAction *act, GncPluginPageTransactions *pp)
+{
+ g_return_if_fail(GNC_IS_PLUGIN_PAGE_TRANSACTIONS(pp));
+}
+static void
+gppt_cmd_copy_trans(GtkAction *act, GncPluginPageTransactions *pp)
+{
+ g_return_if_fail(GNC_IS_PLUGIN_PAGE_TRANSACTIONS(pp));
+ gnc_tree_view_transaction_copy_trans_to_clipboard(GET_PRIVATE(pp)->tv);
+}
+static void
+gppt_cmd_paste_trans(GtkAction *act, GncPluginPageTransactions *pp)
+{
+ g_return_if_fail(GNC_IS_PLUGIN_PAGE_TRANSACTIONS(pp));
+ gnc_tree_view_transaction_paste_trans_from_clipboard(GET_PRIVATE(pp)->tv);
+}
+static void
+gppt_cmd_duplicate_trans(GtkAction *act, GncPluginPageTransactions *pp)
+{
+ g_return_if_fail(GNC_IS_PLUGIN_PAGE_TRANSACTIONS(pp));
+}
static void
gppt_cmd_delete_trans(GtkAction *act, GncPluginPageTransactions *pp)
Modified: gnucash/branches/register-rewrite/src/gnome-utils/gnc-tree-view-transaction.c
===================================================================
--- gnucash/branches/register-rewrite/src/gnome-utils/gnc-tree-view-transaction.c 2007-08-11 21:10:34 UTC (rev 16417)
+++ gnucash/branches/register-rewrite/src/gnome-utils/gnc-tree-view-transaction.c 2007-08-11 21:20:08 UTC (rev 16418)
@@ -68,6 +68,7 @@
#include "Account.h"
#include "Transaction.h"
+#include "TransactionP.h" // FIXME
#include "Scrub.h"
#include "gnc-component-manager.h"
#include "gnc-icons.h"
@@ -1753,3 +1754,40 @@
xaccTransUnvoid(trans);
}
+static Transaction *clipboard_trans = NULL;
+/* Must never dereference. */
+static const Account *clipboard_acct = NULL;
+
+void gnc_tree_view_transaction_copy_trans_to_clipboard(
+ GncTreeViewTransaction *tv)
+{
+ Transaction *trans;
+
+ g_return_if_fail(GNC_IS_TREE_VIEW_TRANSACTION(tv));
+
+ trans = get_selected_trans(tv);
+ if (!trans)
+ return;
+
+ if (clipboard_trans)
+ xaccFreeTransaction(clipboard_trans);
+
+ clipboard_trans = xaccDupeTransaction(trans);
+ clipboard_acct = tv->priv->anchor;
+}
+
+void gnc_tree_view_transaction_paste_trans_from_clipboard(
+ GncTreeViewTransaction *tv)
+{
+ Transaction *trans;
+
+ g_return_if_fail(GNC_IS_TREE_VIEW_TRANSACTION(tv));
+
+ trans = get_selected_trans(tv);
+ if (!trans || !clipboard_trans)
+ return;
+
+ begin_edit(tv, NULL, trans);
+ xaccTransCopyOntoAndChangeAccount(clipboard_trans, trans, clipboard_acct,
+ tv->priv->anchor);
+}
Modified: gnucash/branches/register-rewrite/src/gnome-utils/gnc-tree-view-transaction.h
===================================================================
--- gnucash/branches/register-rewrite/src/gnome-utils/gnc-tree-view-transaction.h 2007-08-11 21:10:34 UTC (rev 16417)
+++ gnucash/branches/register-rewrite/src/gnome-utils/gnc-tree-view-transaction.h 2007-08-11 21:20:08 UTC (rev 16418)
@@ -88,6 +88,10 @@
void gnc_tree_view_transaction_select_split(GncTreeViewTransaction *tv,
Split *split);
+void gnc_tree_view_transaction_copy_trans_to_clipboard(
+ GncTreeViewTransaction *tv);
+void gnc_tree_view_transaction_paste_trans_from_clipboard(
+ GncTreeViewTransaction *tv);
/** @} */
More information about the gnucash-changes
mailing list