r15692 - gnucash/branches/register-rewrite/src/gnome-utils - Use Planner's cell-renderer-date in the transaction treeview for date-entry.

Chris Shoemaker chris at cvs.gnucash.org
Thu Mar 8 16:41:13 EST 2007


Author: chris
Date: 2007-03-08 16:41:12 -0500 (Thu, 08 Mar 2007)
New Revision: 15692
Trac: http://svn.gnucash.org/trac/changeset/15692

Modified:
   gnucash/branches/register-rewrite/src/gnome-utils/gnc-tree-view-transaction.c
   gnucash/branches/register-rewrite/src/gnome-utils/gnc-tree-view.c
   gnucash/branches/register-rewrite/src/gnome-utils/gnc-tree-view.h
Log:
Use Planner's cell-renderer-date in the transaction treeview for date-entry.


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-03-08 21:40:06 UTC (rev 15691)
+++ gnucash/branches/register-rewrite/src/gnome-utils/gnc-tree-view-transaction.c	2007-03-08 21:41:12 UTC (rev 15692)
@@ -138,10 +138,10 @@
      gtvt_edited_cb, NULL, gtmt_sort_by_date},
     {COL_NUM, GNC_TREE_MODEL_TRANSACTION_COL_NUM,
      "Num", "num", "0000xx", -1,
-     gtvt_edited_cb, NULL, NULL},
+     gtvt_edited_cb, get_editable_start_editing_cb, NULL},
     {COL_DESCRIPTION, GNC_TREE_MODEL_TRANSACTION_COL_DESCRIPTION,
      "Description", "description", "xxxxxxxxxxxxxxxxxxx", -1,
-     gtvt_edited_cb, NULL, NULL},
+     gtvt_edited_cb, get_editable_start_editing_cb, NULL},
     {COL_ACCOUNT, -1,
      "Transfer", "transfer", "xxxxxxxxxxxxxxxxxxx", -1,
      NULL /*FIXME?*/, start_edit, NULL},
@@ -998,8 +998,17 @@
     switch (viewcol) {
     case COL_DATE:
         if (is_trans) {
-            //TimeSpec ts;
-            //xaccTransSetDatePostedTS (trans, &ts);
+            GDate date;
+            g_date_set_parse(&date, new_text);
+            if (g_date_valid(&date)) {
+                begin_edit(tv, split, trans);
+                g_print(new_text);
+                xaccTransSetDate(trans, g_date_get_day(&date), 
+                                 g_date_get_month(&date), 
+                                 g_date_get_year(&date));
+            } else {
+                PERR("invalid date `%s`", new_text);
+            }
         }
         break;
     case COL_NUM: // aka "ACTION"
@@ -1023,9 +1032,10 @@
             xaccTransSetDescription(trans, new_text);
         break;
     case COL_NOTES:
-        if (is_trans)
+        if (is_trans) {
             begin_edit(tv, split, trans);
             xaccTransSetNotes(trans, new_text);
+        }
         break;
     case COL_AMOUNT:
     case COL_RATE:
@@ -1497,6 +1507,10 @@
                 f_model, GNC_TREE_MODEL_ACCOUNT_COL_NAME,
                 def.sort_fn);
             g_object_unref(G_OBJECT(f_model));
+        } else if (col_list[i] == COL_DATE) {
+            col = gnc_tree_view_add_calendar_column (
+                GNC_TREE_VIEW(tv), def.title, def.pref_name, NULL, def.sizer,
+                def.modelcol, def.visibility_model_col, def.sort_fn);
         } else {
             col = gnc_tree_view_add_text_column (
                 GNC_TREE_VIEW(tv), def.title, def.pref_name, NULL, def.sizer,
@@ -1566,6 +1580,8 @@
 }
 
 /* CONTROL */
+
+/* For handling keynav */
 static gboolean
 gtvt_key_press_cb(GtkWidget *treeview, GdkEventKey *event, gpointer unused)
 {

Modified: gnucash/branches/register-rewrite/src/gnome-utils/gnc-tree-view.c
===================================================================
--- gnucash/branches/register-rewrite/src/gnome-utils/gnc-tree-view.c	2007-03-08 21:40:06 UTC (rev 15691)
+++ gnucash/branches/register-rewrite/src/gnome-utils/gnc-tree-view.c	2007-03-08 21:41:12 UTC (rev 15692)
@@ -1919,7 +1919,84 @@
   return column;
 }
 
+//#include "gtkcellrenderercalendar.h"
+#include "planner-cell-renderer-date.h"
+#include <libplanner/mrp-application.h>
+
+/** This function adds a new text column to a GncTreeView base view.
+ *  It takes all the parameters necessary to hook a GtkTreeModel
+ *  column to a GtkTreeViewColumn.  If the tree has a gconf section
+ *  associated with it, this function also wires up the column so that
+ *  its visibility and width are remembered.
+ *
+ *  Parameters are defined in gnc-tree-view.h
+ */
 GtkTreeViewColumn *
+gnc_tree_view_add_calendar_column (GncTreeView *view,
+                                   const gchar *column_title,
+                                   const gchar *pref_name,
+                                   const gchar *stock_icon_name,
+                                   const gchar *sizing_text,
+                                   gint model_data_column,
+                                   gint model_visibility_column,
+                                   GtkTreeIterCompareFunc column_sort_fn)
+{
+  GtkTreeViewColumn *column;
+  GtkCellRenderer *renderer;
+  PangoLayout* layout;
+  int default_width, title_width;
+
+  g_return_val_if_fail (GNC_IS_TREE_VIEW(view), NULL);
+
+  column = gtk_tree_view_column_new ();
+  gtk_tree_view_column_set_title (column, column_title);
+
+  /* Set up an icon renderer if requested */
+  if (stock_icon_name) {
+    renderer = gtk_cell_renderer_pixbuf_new ();
+    g_object_set (renderer, "stock-id", stock_icon_name, NULL);
+    gtk_tree_view_column_pack_start (column, renderer, FALSE);
+  }
+
+  /* Set up a text renderer and attributes */
+  //renderer = gtk_cell_renderer_calendar_new ();
+  {
+      static gboolean planner_inited = FALSE;
+      if (!planner_inited) {
+          /* This is so that libplanner gets initialized. */
+          MrpApplication *mrp_app = mrp_application_new();
+          planner_inited = TRUE;
+      }
+  }
+  renderer = planner_cell_renderer_date_new(FALSE);
+  gtk_tree_view_column_pack_start (column, renderer, TRUE);
+
+  /* Set renderer attributes controlled by the model */
+  if (model_data_column != GNC_TREE_VIEW_COLUMN_DATA_NONE)
+    gtk_tree_view_column_add_attribute (column, renderer,
+					"text", model_data_column);
+  if (model_visibility_column != GNC_TREE_VIEW_COLUMN_VISIBLE_ALWAYS)
+    gtk_tree_view_column_add_attribute (column, renderer,
+					"visible", model_visibility_column);
+
+  /* Default size is the larger of the column title and the sizing text */
+  layout = gtk_widget_create_pango_layout (GTK_WIDGET(view), column_title);
+  pango_layout_get_pixel_size(layout, &title_width, NULL);
+  g_object_unref(layout);
+  layout = gtk_widget_create_pango_layout (GTK_WIDGET(view), sizing_text);
+  pango_layout_get_pixel_size(layout, &default_width, NULL);
+  g_object_unref(layout);
+  default_width = MAX(default_width, title_width);
+  if (default_width)
+    default_width += 10; /* padding on either side */
+  gnc_tree_view_column_properties (view, column, pref_name, model_data_column,
+				   default_width, TRUE, column_sort_fn);
+
+  gnc_tree_view_append_column (view, column);
+  return column;
+}
+
+GtkTreeViewColumn *
 gnc_tree_view_add_combo_column (GncTreeView *view,
                                 const gchar *column_title,
                                 const gchar *pref_name,

Modified: gnucash/branches/register-rewrite/src/gnome-utils/gnc-tree-view.h
===================================================================
--- gnucash/branches/register-rewrite/src/gnome-utils/gnc-tree-view.h	2007-03-08 21:40:06 UTC (rev 15691)
+++ gnucash/branches/register-rewrite/src/gnome-utils/gnc-tree-view.h	2007-03-08 21:41:12 UTC (rev 15692)
@@ -189,6 +189,15 @@
 			       gint model_data_column,
 			       gint model_visibility_column,
 			       GtkTreeIterCompareFunc column_sort_fn);
+GtkTreeViewColumn *
+gnc_tree_view_add_calendar_column (GncTreeView *view,
+                                   const gchar *column_title,
+                                   const gchar *pref_name,
+                                   const gchar *stock_icon_name,
+                                   const gchar *sizing_text,
+                                   gint model_data_column,
+                                   gint model_visibility_column,
+                                   GtkTreeIterCompareFunc column_sort_fn);
 
 /** This function adds a new combobox column to a GncTreeView base
  *  view.  The parameters it takes in common with



More information about the gnucash-changes mailing list