]> Dogcows Code - chaz/homebank/blobdiff - src/list_upcoming.c
import homebank-5.1.7
[chaz/homebank] / src / list_upcoming.c
index fa370a4738508d19c9902bf887b51fc77c876ec7..786b212914639612a52237ca9759f2eec6e23a64 100644 (file)
@@ -1,5 +1,5 @@
 /*  HomeBank -- Free, easy, personal accounting for everyone.
- *  Copyright (C) 1995-2014 Maxime DOYEN
+ *  Copyright (C) 1995-2018 Maxime DOYEN
  *
  *  This file is part of HomeBank.
  *
  *  along with this program.  If not, see <http://www.gnu.org/licenses/>.
  */
 
+
 #include "homebank.h"
 
 #include "list_upcoming.h"
 
+/****************************************************************************/
+/* Debug macros                                                                                                                                */
+/****************************************************************************/
+#define MYDEBUG 0
+
+#if MYDEBUG
+#define DB(x) (x);
+#else
+#define DB(x);
+#endif
+
 /* our global datas */
 extern struct HomeBank *GLOBALS;
 extern struct Preferences *PREFS;
@@ -33,23 +45,19 @@ sched_lateicon_cell_data_function (GtkTreeViewColumn *col,
                            GtkTreeIter       *iter,
                            gpointer           user_data)
 {
+gchar *iconname = NULL;
 gint nblate;
 
        gtk_tree_model_get(model, iter,
                LST_DSPUPC_NB_LATE, &nblate,
                -1);
 
-       if( nblate > 0 )
-       {
-               g_object_set(renderer, "pixbuf", GLOBALS->lst_pixbuf[LST_PIXBUF_WARNING], NULL, NULL);
-       }
-       else
-               g_object_set(renderer, "pixbuf", NULL, NULL);
+       iconname = ( nblate > 0 ) ? ICONNAME_WARNING : NULL;
 
+       g_object_set(renderer, "icon-name", iconname, NULL);
 }
 
 
-
 /*
 ** remaining cell function
 */
@@ -173,22 +181,25 @@ Payee *pay;
 }
 
 /*
-** wording cell function
+** memo cell function
 */
-static void wording_cell_data_function (GtkTreeViewColumn *col, GtkCellRenderer *renderer, GtkTreeModel *model, GtkTreeIter *iter, gpointer user_data)
+static void memo_cell_data_function (GtkTreeViewColumn *col, GtkCellRenderer *renderer, GtkTreeModel *model, GtkTreeIter *iter, gpointer user_data)
 {
 Archive *arc;
-gchar *txt;
+gchar *memo;
 gint weight;
 
        gtk_tree_model_get(model, iter,
                LST_DSPUPC_DATAS, &arc,
-               LST_DSPUPC_WORDING, &txt,
+               LST_DSPUPC_MEMO, &memo,
                -1);
 
        weight = arc == NULL ? PANGO_WEIGHT_BOLD : PANGO_WEIGHT_NORMAL;
 
-       g_object_set(renderer, "weight", weight, "text", txt, NULL);
+       g_object_set(renderer, "weight", weight, "text", memo, NULL);
+
+       //leak
+       g_free(memo);
 
 }
 
@@ -202,11 +213,13 @@ Archive *arc;
 gdouble expense, income, amount;
 gchar buf[G_ASCII_DTOSTR_BUF_SIZE];
 gint column = GPOINTER_TO_INT(user_data);
+Account *acc;
 gchar *color;
 gint weight;
 
        gtk_tree_model_get(model, iter, 
            LST_DSPUPC_DATAS, &arc,
+               LST_DSPUPC_ACCOUNT, &acc,
                LST_DSPUPC_EXPENSE, &expense,
            LST_DSPUPC_INCOME, &income,
            -1);
@@ -215,8 +228,11 @@ gint weight;
                
        if( amount != 0.0)
        {
-               //hb_strfmon(buf, G_ASCII_DTOSTR_BUF_SIZE-1, amount, kcur);
-               mystrfmon(buf, G_ASCII_DTOSTR_BUF_SIZE-1, amount, GLOBALS->minor);
+               if( acc != NULL )
+                       hb_strfmon(buf, G_ASCII_DTOSTR_BUF_SIZE-1, amount, acc->kcur, GLOBALS->minor);
+               else
+                       hb_strfmon(buf, G_ASCII_DTOSTR_BUF_SIZE-1, amount, GLOBALS->kcur, GLOBALS->minor);
+
                color = get_normal_color_amount(amount);
 
                weight = arc == NULL ? PANGO_WEIGHT_BOLD : PANGO_WEIGHT_NORMAL;
@@ -239,18 +255,16 @@ gint weight;
 */
 static void account_cell_data_function (GtkTreeViewColumn *col, GtkCellRenderer *renderer, GtkTreeModel *model, GtkTreeIter *iter, gpointer user_data)
 {
-Archive *arc;
 Account *acc;
 gchar *name = NULL;
 
-       gtk_tree_model_get(model, iter, LST_DSPUPC_DATAS, &arc, -1);
-       if(arc)
+       gtk_tree_model_get(model, iter, 
+               LST_DSPUPC_ACCOUNT, &acc,
+               -1);
+       /* 1378836 display acc or dstacc */
+       if( acc != NULL )
        {
-               acc = da_acc_get(arc->kacc);
-               if( acc )
-               {
-                       name = acc->name;
-               }
+               name = acc->name;
        }
 
        g_object_set(renderer, "text", name, NULL);
@@ -279,6 +293,27 @@ Archive *arc;
 }
 
 
+static void list_upcoming_destroy(GtkTreeView *treeview, gpointer user_data)
+{
+GtkTreeViewColumn  *column;
+
+       DB( g_print ("\n[list_upcoming] destroy\n") );
+
+       //todo: unsafe to use direct column index
+       column = gtk_tree_view_get_column(treeview, 2);
+       if( column )
+       {
+               PREFS->pnl_upc_col_pay_width = gtk_tree_view_column_get_width(column);
+       }
+       
+       column = gtk_tree_view_get_column(treeview, 3);
+       if( column )
+       {
+               PREFS->pnl_upc_col_mem_width = gtk_tree_view_column_get_width(column);
+       }
+
+}
+
 
 GtkWidget *create_list_upcoming(void)
 {
@@ -287,15 +322,17 @@ GtkWidget *view;
 GtkCellRenderer    *renderer;
 GtkTreeViewColumn  *column;
 
+       DB( g_print ("\n[list_upcoming] create\n") );
+
        /* create list store */
        store = gtk_list_store_new(
                NUM_LST_DSPUPC,
                G_TYPE_POINTER,
                G_TYPE_BOOLEAN, /* payee */
-               G_TYPE_STRING,  /* wording */
+               G_TYPE_STRING,  /* memo */
                G_TYPE_DOUBLE,  /* expense */
                G_TYPE_DOUBLE,  /* income */
-               G_TYPE_BOOLEAN, /* account */
+               G_TYPE_POINTER, /* account */
            G_TYPE_BOOLEAN,     /* next on */
                G_TYPE_INT,             /* remaining */
                G_TYPE_INT              /* nb late */
@@ -305,7 +342,7 @@ GtkTreeViewColumn  *column;
        view = gtk_tree_view_new_with_model(GTK_TREE_MODEL(store));
        g_object_unref(store);
 
-       gtk_tree_view_set_rules_hint (GTK_TREE_VIEW (view), PREFS->rules_hint);
+       gtk_tree_view_set_grid_lines (GTK_TREE_VIEW (view), PREFS->grid_lines);
        //gtk_tree_view_set_search_column (GTK_TREE_VIEW (treeview),
        //                             COLUMN_DESCRIPTION);
 
@@ -313,10 +350,10 @@ GtkTreeViewColumn  *column;
 
        /* column : Late */
        column = gtk_tree_view_column_new();
+       //TRANSLATORS: title of list column to inform the scheduled transaction is Late
        gtk_tree_view_column_set_title(column, _("Late"));
 
        renderer = gtk_cell_renderer_pixbuf_new ();
-       gtk_cell_renderer_set_fixed_size(renderer, GLOBALS->lst_pixbuf_maxwidth, -1);
     gtk_tree_view_column_pack_start(column, renderer, TRUE);
        gtk_tree_view_column_set_cell_data_func(column, renderer, sched_lateicon_cell_data_function, NULL, NULL);
 
@@ -326,7 +363,6 @@ GtkTreeViewColumn  *column;
        gtk_tree_view_column_set_cell_data_func(column, renderer, sched_latetext_cell_data_function, NULL, NULL);
 
        //gtk_tree_view_column_set_sort_column_id (column, LST_DSPUPC_NB_LATE);
-       //gtk_tree_view_column_set_resizable(column, TRUE);
        gtk_tree_view_column_set_alignment (column, 0.5);
        gtk_tree_view_append_column (GTK_TREE_VIEW(view), column);
 
@@ -339,46 +375,60 @@ GtkTreeViewColumn  *column;
        gtk_tree_view_column_pack_start(column, renderer, TRUE);
        gtk_tree_view_column_set_cell_data_func(column, renderer, remaining_cell_data_function, NULL, NULL);
        //gtk_tree_view_column_set_sort_column_id (column, LST_DSPUPC_REMAINING);
-       //gtk_tree_view_column_set_resizable(column, TRUE);
        gtk_tree_view_column_set_alignment (column, 0.5);
        gtk_tree_view_append_column (GTK_TREE_VIEW(view), column);
        */
        
        /* column: Next on */
+       renderer = gtk_cell_renderer_text_new ();
+
        column = gtk_tree_view_column_new();
        gtk_tree_view_column_set_title(column, _("Next date"));
-       renderer = gtk_cell_renderer_text_new ();
        gtk_tree_view_column_pack_start(column, renderer, TRUE);
        gtk_tree_view_column_set_cell_data_func(column, renderer, date_cell_data_function, NULL, NULL);
        //gtk_tree_view_column_set_sort_column_id (column, LST_DSPUPC_DATE);
-       gtk_tree_view_column_set_resizable(column, TRUE);
        gtk_tree_view_column_set_alignment (column, 0.5);
        gtk_tree_view_append_column (GTK_TREE_VIEW(view), column);
 
        /* column: Payee */
+       renderer = gtk_cell_renderer_text_new ();
+       g_object_set(renderer, 
+               "ellipsize", PANGO_ELLIPSIZE_END,
+           "ellipsize-set", TRUE,
+           NULL);
        column = gtk_tree_view_column_new();
        gtk_tree_view_column_set_title(column, _("Payee"));
-       renderer = gtk_cell_renderer_text_new ();
        gtk_tree_view_column_pack_start(column, renderer, TRUE);
        gtk_tree_view_column_set_cell_data_func(column, renderer, payee_cell_data_function, NULL, NULL);
+       gtk_tree_view_column_set_resizable(column, TRUE);
        //gtk_tree_view_column_add_attribute(column, renderer, "text", 1);
        //gtk_tree_view_column_set_sort_column_id (column, LST_DSPACC_NAME);
-       gtk_tree_view_column_set_resizable(column, TRUE);
        gtk_tree_view_column_set_alignment (column, 0.5);
+       gtk_tree_view_column_set_min_width(column, HB_MINWIDTH_LIST/2);
        gtk_tree_view_append_column (GTK_TREE_VIEW(view), column);
 
-       /* column: Wording */
+       gtk_tree_view_column_set_fixed_width(column, PREFS->pnl_upc_col_pay_width);
+
+       /* column: Memo */
+       renderer = gtk_cell_renderer_text_new ();
+       g_object_set(renderer, 
+               "ellipsize", PANGO_ELLIPSIZE_END,
+           "ellipsize-set", TRUE,
+           NULL);
+
        column = gtk_tree_view_column_new();
        gtk_tree_view_column_set_title(column, _("Memo"));
-       renderer = gtk_cell_renderer_text_new ();
        gtk_tree_view_column_pack_start(column, renderer, TRUE);
-       gtk_tree_view_column_set_cell_data_func(column, renderer, wording_cell_data_function, NULL, NULL);
+       gtk_tree_view_column_set_cell_data_func(column, renderer, memo_cell_data_function, NULL, NULL);
+       gtk_tree_view_column_set_resizable(column, TRUE);
        //gtk_tree_view_column_add_attribute(column, renderer, "text", 2);
        //gtk_tree_view_column_set_sort_column_id (column, LST_DSPACC_NAME);
-       gtk_tree_view_column_set_resizable(column, TRUE);
        gtk_tree_view_column_set_alignment (column, 0.5);
+       gtk_tree_view_column_set_min_width(column, HB_MINWIDTH_LIST/2);
        gtk_tree_view_append_column (GTK_TREE_VIEW(view), column);
 
+       gtk_tree_view_column_set_fixed_width(column, PREFS->pnl_upc_col_mem_width);
+
        /* column: Amount */
        column = gtk_tree_view_column_new();
        gtk_tree_view_column_set_title(column, _("Expense"));
@@ -387,7 +437,6 @@ GtkTreeViewColumn  *column;
        gtk_tree_view_column_pack_start(column, renderer, TRUE);
        gtk_tree_view_column_set_cell_data_func(column, renderer, amount_cell_data_function, GINT_TO_POINTER(-1), NULL);
        //gtk_tree_view_column_set_sort_column_id (column, LST_DSPACC_NAME);
-       gtk_tree_view_column_set_resizable(column, TRUE);
        gtk_tree_view_column_set_alignment (column, 0.5);
        gtk_tree_view_append_column (GTK_TREE_VIEW(view), column);
 
@@ -399,20 +448,24 @@ GtkTreeViewColumn  *column;
        gtk_tree_view_column_pack_start(column, renderer, TRUE);
        gtk_tree_view_column_set_cell_data_func(column, renderer, amount_cell_data_function, GINT_TO_POINTER(1), NULL);
        //gtk_tree_view_column_set_sort_column_id (column, LST_DSPACC_NAME);
-       gtk_tree_view_column_set_resizable(column, TRUE);
        gtk_tree_view_column_set_alignment (column, 0.5);
        gtk_tree_view_append_column (GTK_TREE_VIEW(view), column);
 
        /* column: Account */
+       renderer = gtk_cell_renderer_text_new ();
+       /*g_object_set(renderer, 
+               "ellipsize", PANGO_ELLIPSIZE_END,
+           "ellipsize-set", TRUE,
+           NULL);*/
+
        column = gtk_tree_view_column_new();
        gtk_tree_view_column_set_title(column, _("Account"));
-       renderer = gtk_cell_renderer_text_new ();
-       g_object_set(renderer, "xalign", 1.0, NULL);
        gtk_tree_view_column_pack_start(column, renderer, TRUE);
        gtk_tree_view_column_set_cell_data_func(column, renderer, account_cell_data_function, NULL, NULL);
-       //gtk_tree_view_column_set_sort_column_id (column, LST_DSPOPE_DATE);
        gtk_tree_view_column_set_resizable(column, TRUE);
+       //gtk_tree_view_column_set_sort_column_id (column, LST_DSPOPE_DATE);
        gtk_tree_view_column_set_alignment (column, 0.5);
+       //gtk_tree_view_column_set_min_width(column, HB_MINWIDTH_LIST);
        gtk_tree_view_append_column (GTK_TREE_VIEW(view), column);
 
 
@@ -429,6 +482,10 @@ GtkTreeViewColumn  *column;
     /* set initial sort order */
     gtk_tree_sortable_set_sort_column_id(GTK_TREE_SORTABLE(store), LST_DSPUPC_REMAINING, GTK_SORT_ASCENDING);
 
+
+       g_signal_connect (view, "destroy", G_CALLBACK (list_upcoming_destroy), NULL);
+
+
        return(view);
 }
 
This page took 0.026268 seconds and 4 git commands to generate.