[Gnucash-changes] r14436 - gnucash/branches/register-rewrite/src/gnome-utils - Add support for negating the account balance.

Chris Shoemaker chris at cvs.gnucash.org
Sun Jun 25 19:42:32 EDT 2006


Author: chris
Date: 2006-06-25 19:42:31 -0400 (Sun, 25 Jun 2006)
New Revision: 14436
Trac: http://svn.gnucash.org/trac/changeset/14436

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
Log:
   Add support for negating the account balance.
   Add support for deleting the selected transaction or split.


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	2006-06-25 23:13:42 UTC (rev 14435)
+++ gnucash/branches/register-rewrite/src/gnome-utils/gnc-tree-view-transaction.c	2006-06-25 23:42:31 UTC (rev 14436)
@@ -290,7 +290,6 @@
     return TRUE;
 }
 
-//FIXME: should this be needed?
 static gboolean
 get_model_iter_from_selection(GncTreeViewTransaction *tv,
                               GtkTreeSelection *sel, GtkTreeIter *iter)
@@ -307,14 +306,28 @@
 
 }
 
+Split *
+gnc_tree_view_transaction_get_selected_split(GncTreeViewTransaction *tv)
+{
+    GtkTreeIter iter;
+    GtkTreeSelection *sel = gtk_tree_view_get_selection(GTK_TREE_VIEW(tv));
+    Split *split = NULL;
+
+    if (get_model_iter_from_selection(tv, sel, &iter)) {
+        GncTreeModelTransaction *model = get_trans_model_from_view(tv);
+        gnc_tree_model_transaction_get_split_and_trans(
+            model, &iter, NULL, NULL, &split, NULL);
+    }
+    return split;
+}
+
 static GtkTreePath *
-get_view_path_from_model_iter(GncTreeViewTransaction *view, GtkTreeIter *iter)
+get_view_path_from_model_iter(GncTreeViewTransaction *tv, GtkTreeIter *iter)
 {
     GncTreeModelSort *s_model;
     GtkTreeIter s_iter;
 
-    s_model = GNC_TREE_MODEL_SORT(gtk_tree_view_get_model(
-                                      GTK_TREE_VIEW(view)));
+    s_model = GNC_TREE_MODEL_SORT(gtk_tree_view_get_model(GTK_TREE_VIEW(tv)));
     gnc_tree_model_sort_convert_child_iter_to_iter(s_model, &s_iter, iter);
     return gtk_tree_model_get_path(GTK_TREE_MODEL(s_model), &s_iter);
 }
@@ -659,6 +672,8 @@
     case COL_BALANCE:
         if (is_trans && trans && anchor) {
             num = xaccTransGetAccountBalance(trans, anchor);
+            if (gnc_reverse_balance(anchor)) 
+                num = gnc_numeric_neg(num);
             s = xaccPrintAmount(num, gnc_account_print_info(
                                         anchor, FALSE));
         } else s = "";
@@ -1277,10 +1292,9 @@
     return;
 }
 
-static void
-delete_row_cb(GtkMenuItem *menuitem, gpointer *userdata)
+void
+gnc_tree_view_transaction_delete_selected(GncTreeViewTransaction *tv)
 {
-    GncTreeViewTransaction *tv = GNC_TREE_VIEW_TRANSACTION(userdata);
     GncTreeModelTransaction *model;
     GtkTreeIter iter;
     GtkTreeSelection *sel;
@@ -1317,58 +1331,30 @@
         }
     }
 }
+#if 0
 
-static void
-do_popup_menu (GtkWidget *treeview, GdkEventButton *event, gpointer userdata)
-{
-    GtkWidget *menu, *menuitem;
-
-    menu = gtk_menu_new ();
-    menuitem = gtk_menu_item_new_with_label(_("delete"));
-
-    g_signal_connect(menuitem, "activate", (GCallback) delete_row_cb,
-                     treeview);
-
-    gtk_menu_shell_append(GTK_MENU_SHELL(menu), menuitem);
-    gtk_menu_set_title(GTK_MENU(menu), "title"); //FIXME
-
-    gtk_widget_show_all(menu);
-
-    /*  gdk_event_get_time() accepts a NULL argument */
-    gtk_menu_popup(GTK_MENU(menu), NULL, NULL, NULL, NULL,
-                   event ? event->button : 0,
-                   gdk_event_get_time((GdkEvent*)event));
-}
-
 static gboolean
 gtvt_button_press_event_handler(GtkWidget *treeview, GdkEventButton *event,
                                 gpointer userdata)
 {
-    /* Ignore double-clicks and triple-clicks */
-    if (event->button == 3 && event->type == GDK_BUTTON_PRESS) {
-        GtkTreeSelection *sel;
-
-        sel = gtk_tree_view_get_selection(GTK_TREE_VIEW(treeview));
-
-        if (gtk_tree_selection_count_selected_rows(sel) <= 1) {
-            GtkTreePath *path;
-
-            /* Get tree path for row that was clicked */
-            if (gtk_tree_view_get_path_at_pos(GTK_TREE_VIEW(treeview),
-                                              (gint) event->x,
-                                              (gint) event->y,
-                                              &path, NULL, NULL, NULL)) {
-                gtk_tree_selection_unselect_all(sel);
-                gtk_tree_selection_select_path(sel, path);
-                gtk_tree_path_free(path);
-            }
+    GtkTreeSelection *sel;
+    
+    sel = gtk_tree_view_get_selection(GTK_TREE_VIEW(treeview));
+    
+    if (gtk_tree_selection_count_selected_rows(sel) <= 1) {
+        GtkTreePath *path;
+        
+        /* Get tree path for row that was clicked */
+        if (gtk_tree_view_get_path_at_pos(GTK_TREE_VIEW(treeview),
+                                          (gint) event->x,
+                                          (gint) event->y,
+                                          &path, NULL, NULL, NULL)) {
+            gtk_tree_selection_unselect_all(sel);
+            gtk_tree_selection_select_path(sel, path);
+            gtk_tree_path_free(path);
         }
-        do_popup_menu(treeview, event, userdata);
-
-        return TRUE;
     }
-
-    return FALSE;
+    do_popup_menu(treeview, event, userdata);   
 }
 
 static gboolean
@@ -1377,6 +1363,7 @@
     do_popup_menu(widget, NULL, userdata);
     return TRUE;
 }
+#endif
 
 /* Creates a treeview with the list of fields */
 static GncTreeViewTransaction *
@@ -1458,10 +1445,6 @@
 
     //gtk_tree_selection_set_mode(gtk_tree_view_get_selection(tv),
     //                            GTK_SELECTION_BROWSE);
-    g_signal_connect(G_OBJECT(tv), "popup-menu",
-                     G_CALLBACK(gtvt_popup_menu_handler), NULL);
-    g_signal_connect(G_OBJECT(tv), "button-press-event",
-                     G_CALLBACK(gtvt_button_press_event_handler), NULL);
     g_signal_connect_after(G_OBJECT(tv), "key-press-event",
                      G_CALLBACK(gtvt_key_press_cb), NULL);
     return tv;

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	2006-06-25 23:13:42 UTC (rev 14435)
+++ gnucash/branches/register-rewrite/src/gnome-utils/gnc-tree-view-transaction.h	2006-06-25 23:42:31 UTC (rev 14436)
@@ -68,6 +68,12 @@
 Account *
 gnc_tree_view_transaction_get_anchor(GncTreeViewTransaction *tv);
 
+Split *
+gnc_tree_view_transaction_get_selected_split(GncTreeViewTransaction *tv);
+
+void
+gnc_tree_view_transaction_delete_selected(GncTreeViewTransaction *tv);
+
 /** @} */
 
 



More information about the gnucash-changes mailing list