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