r21164 - gnucash/trunk/src/gnome - Restructure file to make it easier to read

Geert Janssens gjanssens at code.gnucash.org
Thu Aug 11 16:35:12 EDT 2011


Author: gjanssens
Date: 2011-08-11 16:35:12 -0400 (Thu, 11 Aug 2011)
New Revision: 21164
Trac: http://svn.gnucash.org/trac/changeset/21164

Modified:
   gnucash/trunk/src/gnome/dialog-lot-viewer.c
Log:
Restructure file to make it easier to read

Modified: gnucash/trunk/src/gnome/dialog-lot-viewer.c
===================================================================
--- gnucash/trunk/src/gnome/dialog-lot-viewer.c	2011-08-11 20:26:16 UTC (rev 21163)
+++ gnucash/trunk/src/gnome/dialog-lot-viewer.c	2011-08-11 20:35:12 UTC (rev 21164)
@@ -118,8 +118,57 @@
                          gpointer user_data);
 
 /* ======================================================================== */
-/* Put the splits into the split list */
+/* Get the realized gains for this lot.  This routine or a variant of it
+ * should probably be moved to gnc-lot.c.
+ * The conceptual difficulty here is that this works only if all of the
+ * realized gains in the lot are of the
+ */
 
+static gnc_commodity *
+find_first_currency (GNCLot *lot)
+{
+    SplitList *split_list, *node;
+
+    split_list = gnc_lot_get_split_list(lot);
+    for (node = split_list; node; node = node->next)
+    {
+        Split *s = node->data;
+        Transaction *trans;
+        if (FALSE == gnc_numeric_zero_p(xaccSplitGetAmount(s))) continue;
+        trans = xaccSplitGetParent (s);
+        return xaccTransGetCurrency (trans);
+    }
+    return NULL;
+}
+
+static gnc_numeric
+get_realized_gains (GNCLot *lot, gnc_commodity *currency)
+{
+    gnc_numeric zero = gnc_numeric_zero();
+    gnc_numeric gains = zero;
+    SplitList *split_list, *node;
+
+    if (!currency) return zero;
+
+    split_list = gnc_lot_get_split_list(lot);
+    for (node = split_list; node; node = node->next)
+    {
+        Split *s = node->data;
+        Transaction *trans;
+
+        if (FALSE == gnc_numeric_zero_p(xaccSplitGetAmount(s))) continue;
+        trans = xaccSplitGetParent (s);
+        if (FALSE == gnc_commodity_equal (xaccTransGetCurrency(trans), currency)) continue;
+
+        gains = gnc_numeric_add (gains, xaccSplitGetValue (s), GNC_DENOM_AUTO, GNC_HOW_DENOM_FIXED);
+    }
+    return gains;
+}
+
+
+/* ======================================================================== */
+/* Populate the split list view based on the currently selected lot */
+
 static void
 lv_show_splits (GNCLotViewer *lv)
 {
@@ -214,7 +263,7 @@
 }
 
 /* ======================================================================== */
-/* Remove all splits from the split list */
+/* Remove all splits from the split list view */
 
 static void
 lv_clear_splits (GNCLotViewer *lv)
@@ -224,8 +273,9 @@
 
 /* ======================================================================== */
 /* Save potential changes to the currently selected lot */
+
 static void
-lv_save_current_row (GNCLotViewer *lv)
+lv_save_current_lot (GNCLotViewer *lv)
 {
     GNCLot *lot = lv->selected_lot;
     const char * str;
@@ -249,41 +299,9 @@
 }
 
 /* ======================================================================== */
-/* Select a row in the lot list */
+/* Clear all information related to the currently selected lot */
 
 static void
-lv_select_row (GNCLotViewer *lv,
-               GNCLot       *lot)
-{
-    const char * str;
-
-    lv_save_current_row (lv);
-
-    str = gnc_lot_get_title (lot);
-    if (!str) str = "";
-    gtk_entry_set_text (lv->title_entry, str);
-    gtk_editable_set_editable (GTK_EDITABLE(lv->title_entry), TRUE);
-
-    /* Set the notes field */
-    str = gnc_lot_get_notes (lot);
-    if (!str) str = "";
-    xxxgtk_textview_set_text (lv->lot_notes, str);
-    gtk_text_view_set_editable (lv->lot_notes, TRUE);
-
-    /* Don't set until end, to avoid recursion in gtkentry "changed" cb. */
-    lv->selected_lot = lot;
-    lv_show_splits (lv);
-
-#ifdef LOTS_READY_FOR_SHOWTIME
-    gtk_widget_set_sensitive(GTK_WIDGET(lv->regview_button), TRUE);
-#endif
-    gtk_widget_set_sensitive(GTK_WIDGET(lv->delete_button), TRUE);
-    gtk_widget_set_sensitive(GTK_WIDGET(lv->scrub_lot_button), TRUE);
-}
-
-/* ======================================================================== */
-
-static void
 lv_unset_lot (GNCLotViewer *lv)
 {
     /* Set immediately, to avoid recursion in gtkentry "changed" cb. */
@@ -308,107 +326,50 @@
 }
 
 /* ======================================================================== */
-/* De-select a row the the lot list */
+/* Select a row in the lot list */
 
 static void
-lv_unselect_row (GNCLotViewer *lv)
+lv_select_row (GNCLotViewer *lv,
+               GNCLot       *lot)
 {
-    lv_save_current_row (lv);
-    lv_unset_lot (lv);
-}
+    const char * str;
 
-/* ======================================================================== */
-/* Callback triggered when the user changes the selected line in the lot list */
+    lv_save_current_lot (lv);
 
-static void
-lv_selection_changed_cb (GtkTreeSelection *selection,
-                         GNCLotViewer *lv)
-{
-    GNCLot *lot;
-    GtkTreeModel *model;
-    GtkTreeIter iter;
+    str = gnc_lot_get_title (lot);
+    if (!str) str = "";
+    gtk_entry_set_text (lv->title_entry, str);
+    gtk_editable_set_editable (GTK_EDITABLE(lv->title_entry), TRUE);
 
-    if (gtk_tree_selection_get_selected (selection, &model, &iter))
-    {
-        gtk_tree_model_get(model, &iter, LOT_COL_PNTR, &lot, -1);
-        lv_select_row(lv, lot);
-    }
-    else
-    {
-        lv_unselect_row(lv);
-    }
-}
+    /* Set the notes field */
+    str = gnc_lot_get_notes (lot);
+    if (!str) str = "";
+    xxxgtk_textview_set_text (lv->lot_notes, str);
+    gtk_text_view_set_editable (lv->lot_notes, TRUE);
 
+    /* Don't set until end, to avoid recursion in gtkentry "changed" cb. */
+    lv->selected_lot = lot;
+    lv_show_splits (lv);
 
-/* ======================================================================== */
-/* Callback triggered when user types a new lot title into the entry widget */
-
-void
-lv_title_entry_changed_cb (GtkEntry *ent, gpointer user_data)
-{
-    GNCLotViewer *lv = user_data;
-    GtkTreeModel *model;
-    GtkTreeIter iter;
-    GtkTreeSelection *selection;
-    const char * title;
-    title = gtk_entry_get_text (lv->title_entry);
-
-    selection = gtk_tree_view_get_selection(lv->lot_view);
-    if (gtk_tree_selection_get_selected (selection, &model, &iter))
-    {
-        gtk_list_store_set(GTK_LIST_STORE(model), &iter, LOT_COL_TITLE, title, -1);
-    }
+#ifdef LOTS_READY_FOR_SHOWTIME
+    gtk_widget_set_sensitive(GTK_WIDGET(lv->regview_button), TRUE);
+#endif
+    gtk_widget_set_sensitive(GTK_WIDGET(lv->delete_button), TRUE);
+    gtk_widget_set_sensitive(GTK_WIDGET(lv->scrub_lot_button), TRUE);
 }
 
 /* ======================================================================== */
-/* Get the realized gains for this lot.  This routine or a variant of it
- * should probably be moved to gnc-lot.c.
- * The conceptual difficulty here is that this works only if all of the
- * realized gains in the lot are of the
- */
+/* Un-select a row the the lot list */
 
-static gnc_commodity *
-find_first_currency (GNCLot *lot)
+static void
+lv_unselect_row (GNCLotViewer *lv)
 {
-    SplitList *split_list, *node;
-
-    split_list = gnc_lot_get_split_list(lot);
-    for (node = split_list; node; node = node->next)
-    {
-        Split *s = node->data;
-        Transaction *trans;
-        if (FALSE == gnc_numeric_zero_p(xaccSplitGetAmount(s))) continue;
-        trans = xaccSplitGetParent (s);
-        return xaccTransGetCurrency (trans);
-    }
-    return NULL;
+    lv_save_current_lot (lv);
+    lv_unset_lot (lv);
 }
 
-static gnc_numeric
-get_realized_gains (GNCLot *lot, gnc_commodity *currency)
-{
-    gnc_numeric zero = gnc_numeric_zero();
-    gnc_numeric gains = zero;
-    SplitList *split_list, *node;
-
-    if (!currency) return zero;
-
-    split_list = gnc_lot_get_split_list(lot);
-    for (node = split_list; node; node = node->next)
-    {
-        Split *s = node->data;
-        Transaction *trans;
-
-        if (FALSE == gnc_numeric_zero_p(xaccSplitGetAmount(s))) continue;
-        trans = xaccSplitGetParent (s);
-        if (FALSE == gnc_commodity_equal (xaccTransGetCurrency(trans), currency)) continue;
-
-        gains = gnc_numeric_add (gains, xaccSplitGetValue (s), GNC_DENOM_AUTO, GNC_HOW_DENOM_FIXED);
-    }
-    return gains;
-}
-
 /* ======================================================================== */
+/* Populate the lot list view */
 
 static void
 gnc_lot_viewer_fill (GNCLotViewer *lv)
@@ -525,13 +486,59 @@
     GNCLotViewer *lv = user_data;
     GNCLot *lot = lv->selected_lot;
 
-    lv_save_current_row (lv);
+    lv_save_current_lot (lv);
 
     gnc_save_window_size(GCONF_SECTION, GTK_WINDOW(lv->window));
     gtk_widget_destroy (lv->window);
 }
 
+/* ===========================    Callbacks    ============================ */
+/* ======================================================================== */
+/* The lot title in the entry widget changed */
+
 void
+lv_title_entry_changed_cb (GtkEntry *ent, gpointer user_data)
+{
+    GNCLotViewer *lv = user_data;
+    GtkTreeModel *model;
+    GtkTreeIter iter;
+    GtkTreeSelection *selection;
+    const char * title;
+    title = gtk_entry_get_text (lv->title_entry);
+
+    selection = gtk_tree_view_get_selection(lv->lot_view);
+    if (gtk_tree_selection_get_selected (selection, &model, &iter))
+    {
+        gtk_list_store_set(GTK_LIST_STORE(model), &iter, LOT_COL_TITLE, title, -1);
+    }
+}
+
+/* ======================================================================== */
+/* Selection in the lot list view changed */
+
+static void
+lv_selection_changed_cb (GtkTreeSelection *selection,
+                         GNCLotViewer *lv)
+{
+    GNCLot *lot;
+    GtkTreeModel *model;
+    GtkTreeIter iter;
+
+    if (gtk_tree_selection_get_selected (selection, &model, &iter))
+    {
+        gtk_tree_model_get(model, &iter, LOT_COL_PNTR, &lot, -1);
+        lv_select_row(lv, lot);
+    }
+    else
+    {
+        lv_unselect_row(lv);
+    }
+}
+
+/* ======================================================================== */
+/* Lot viewer window closed */
+
+void
 lv_window_destroy_cb (GtkObject *object, gpointer user_data)
 {
     GNCLotViewer *lv = user_data;
@@ -614,7 +621,7 @@
         break;
 
     case RESPONSE_NEW_LOT:
-        lv_save_current_row (lv);
+        lv_save_current_lot (lv);
         lot = gnc_lot_make_default (lv->account);
         xaccAccountInsertLot (lv->account, lot);
         break;
@@ -624,7 +631,7 @@
 /* ======================================================================== */
 
 static void
-lv_init_split_view (GNCLotViewer *lv)
+lv_init_lot_view (GNCLotViewer *lv)
 {
     GtkTreeView *view;
     GtkListStore *store;
@@ -632,58 +639,52 @@
     GtkTreeSelection *selection;
     GtkCellRenderer *renderer;
 
-    g_return_if_fail(GTK_IS_TREE_VIEW(lv->split_view));
+    g_return_if_fail(GTK_IS_TREE_VIEW(lv->lot_view));
 
-    view = lv->split_view;
-    store = gtk_list_store_new(NUM_SPLIT_COLS, G_TYPE_STRING, G_TYPE_STRING,
+    view = lv->lot_view;
+    store = gtk_list_store_new(NUM_LOT_COLS, G_TYPE_STRING, G_TYPE_STRING,
                                G_TYPE_STRING, G_TYPE_STRING, G_TYPE_STRING,
-                               G_TYPE_STRING, G_TYPE_STRING,
                                G_TYPE_POINTER);
     gtk_tree_view_set_model(view, GTK_TREE_MODEL(store));
     g_object_unref(store);
-    lv->split_store = store;
+    lv->lot_store = store;
 
     /* Set up the columns */
     renderer = gtk_cell_renderer_text_new();
-    column = gtk_tree_view_column_new_with_attributes(_("Date"), renderer,
-             "text", SPLIT_COL_DATE, NULL);
+    column = gtk_tree_view_column_new_with_attributes(_("Opened"), renderer,
+             "text", LOT_COL_OPEN, NULL);
     gtk_tree_view_append_column(view, column);
 
     renderer = gtk_cell_renderer_text_new();
-    column = gtk_tree_view_column_new_with_attributes(_("Num"), renderer,
-             "text", SPLIT_COL_NUM, NULL);
+    column = gtk_tree_view_column_new_with_attributes(_("Closed"), renderer,
+             "text", LOT_COL_CLOSE, NULL);
     gtk_tree_view_append_column(view, column);
 
     renderer = gtk_cell_renderer_text_new();
-    column = gtk_tree_view_column_new_with_attributes(_("Description"), renderer,
-             "text", SPLIT_COL_DESCRIPTION, NULL);
+    column = gtk_tree_view_column_new_with_attributes(_("Title"), renderer,
+             "text", LOT_COL_TITLE, NULL);
     gtk_tree_view_append_column(view, column);
 
     renderer = gtk_cell_renderer_text_new();
-    column = gtk_tree_view_column_new_with_attributes(_("Amount"), renderer,
-             "text", SPLIT_COL_AMOUNT, NULL);
+    column = gtk_tree_view_column_new_with_attributes(_("Balance"), renderer,
+             "text", LOT_COL_BALN, NULL);
     gtk_tree_view_append_column(view, column);
 
     renderer = gtk_cell_renderer_text_new();
-    column = gtk_tree_view_column_new_with_attributes(_("Value"), renderer,
-             "text", SPLIT_COL_VALUE, NULL);
+    column = gtk_tree_view_column_new_with_attributes(_("Gains"), renderer,
+             "text", LOT_COL_GAINS, NULL);
     gtk_tree_view_append_column(view, column);
 
-    renderer = gtk_cell_renderer_text_new();
-    column = gtk_tree_view_column_new_with_attributes(_("Gain/Loss"), renderer,
-             "text", SPLIT_COL_GAIN_LOSS, NULL);
-    gtk_tree_view_append_column(view, column);
-
-    renderer = gtk_cell_renderer_text_new();
-    column = gtk_tree_view_column_new_with_attributes(_("Balance"), renderer,
-             "text", SPLIT_COL_BALANCE, NULL);
-    gtk_tree_view_append_column(view, column);
+    /* Set up the selection callbacks */
+    selection =  gtk_tree_view_get_selection(view);
+    g_signal_connect(selection, "changed",
+                     G_CALLBACK(lv_selection_changed_cb), lv);
 }
 
 /* ======================================================================== */
 
 static void
-lv_init_lot_view (GNCLotViewer *lv)
+lv_init_split_view (GNCLotViewer *lv)
 {
     GtkTreeView *view;
     GtkListStore *store;
@@ -691,46 +692,52 @@
     GtkTreeSelection *selection;
     GtkCellRenderer *renderer;
 
-    g_return_if_fail(GTK_IS_TREE_VIEW(lv->lot_view));
+    g_return_if_fail(GTK_IS_TREE_VIEW(lv->split_view));
 
-    view = lv->lot_view;
-    store = gtk_list_store_new(NUM_LOT_COLS, G_TYPE_STRING, G_TYPE_STRING,
+    view = lv->split_view;
+    store = gtk_list_store_new(NUM_SPLIT_COLS, G_TYPE_STRING, G_TYPE_STRING,
                                G_TYPE_STRING, G_TYPE_STRING, G_TYPE_STRING,
+                               G_TYPE_STRING, G_TYPE_STRING,
                                G_TYPE_POINTER);
     gtk_tree_view_set_model(view, GTK_TREE_MODEL(store));
     g_object_unref(store);
-    lv->lot_store = store;
+    lv->split_store = store;
 
     /* Set up the columns */
     renderer = gtk_cell_renderer_text_new();
-    column = gtk_tree_view_column_new_with_attributes(_("Opened"), renderer,
-             "text", LOT_COL_OPEN, NULL);
+    column = gtk_tree_view_column_new_with_attributes(_("Date"), renderer,
+             "text", SPLIT_COL_DATE, NULL);
     gtk_tree_view_append_column(view, column);
 
     renderer = gtk_cell_renderer_text_new();
-    column = gtk_tree_view_column_new_with_attributes(_("Closed"), renderer,
-             "text", LOT_COL_CLOSE, NULL);
+    column = gtk_tree_view_column_new_with_attributes(_("Num"), renderer,
+             "text", SPLIT_COL_NUM, NULL);
     gtk_tree_view_append_column(view, column);
 
     renderer = gtk_cell_renderer_text_new();
-    column = gtk_tree_view_column_new_with_attributes(_("Title"), renderer,
-             "text", LOT_COL_TITLE, NULL);
+    column = gtk_tree_view_column_new_with_attributes(_("Description"), renderer,
+             "text", SPLIT_COL_DESCRIPTION, NULL);
     gtk_tree_view_append_column(view, column);
 
     renderer = gtk_cell_renderer_text_new();
-    column = gtk_tree_view_column_new_with_attributes(_("Balance"), renderer,
-             "text", LOT_COL_BALN, NULL);
+    column = gtk_tree_view_column_new_with_attributes(_("Amount"), renderer,
+             "text", SPLIT_COL_AMOUNT, NULL);
     gtk_tree_view_append_column(view, column);
 
     renderer = gtk_cell_renderer_text_new();
-    column = gtk_tree_view_column_new_with_attributes(_("Gains"), renderer,
-             "text", LOT_COL_GAINS, NULL);
+    column = gtk_tree_view_column_new_with_attributes(_("Value"), renderer,
+             "text", SPLIT_COL_VALUE, NULL);
     gtk_tree_view_append_column(view, column);
 
-    /* Set up the selection callbacks */
-    selection =  gtk_tree_view_get_selection(view);
-    g_signal_connect(selection, "changed",
-                     G_CALLBACK(lv_selection_changed_cb), lv);
+    renderer = gtk_cell_renderer_text_new();
+    column = gtk_tree_view_column_new_with_attributes(_("Gain/Loss"), renderer,
+             "text", SPLIT_COL_GAIN_LOSS, NULL);
+    gtk_tree_view_append_column(view, column);
+
+    renderer = gtk_cell_renderer_text_new();
+    column = gtk_tree_view_column_new_with_attributes(_("Balance"), renderer,
+             "text", SPLIT_COL_BALANCE, NULL);
+    gtk_tree_view_append_column(view, column);
 }
 
 /* ======================================================================== */



More information about the gnucash-changes mailing list