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