r16290 - gnucash/branches/register-rewrite/src/gnome-utils - Jul 9/07 - Initial implementation of auto-completion for the Description
Jeff Green
jeff at cvs.gnucash.org
Mon Jul 9 16:13:09 EDT 2007
Author: jeff
Date: 2007-07-09 16:13:09 -0400 (Mon, 09 Jul 2007)
New Revision: 16290
Trac: http://svn.gnucash.org/trac/changeset/16290
Modified:
gnucash/branches/register-rewrite/src/gnome-utils/gnc-tree-view-transaction.c
Log:
Jul 9/07 - Initial implementation of auto-completion for the Description
column. Adds editing_started_cb function. Causes some problems with the
Account column (selecting account doesn't work or crashes).
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-07-09 19:34:04 UTC (rev 16289)
+++ gnucash/branches/register-rewrite/src/gnome-utils/gnc-tree-view-transaction.c 2007-07-09 20:13:09 UTC (rev 16290)
@@ -98,6 +98,8 @@
static void get_editable_start_editing_cb(
GtkCellRenderer *cr, GtkCellEditable *editable,
const gchar *path, gpointer user_data);
+static void editing_started_cb(GtkCellRenderer*, GtkCellEditable*,
+ const gchar*, gpointer);
static gboolean
gtvt_key_press_cb(GtkWidget *treeview, GdkEventKey *event, gpointer userdata);
@@ -149,7 +151,7 @@
"R", "recn", "x", -1,
gtvt_edited_cb, NULL, NULL},
{COL_AMOUNT, -1,
- "Amt", "amount", "xxxxxx", -1,
+ "Price", "amount", "xxxxxx", -1, //Changed COL_AMOUNT header to "Price" (JG)
gtvt_edited_cb, get_editable_start_editing_cb, NULL},
{COL_VALUE, -1,
"Val", "value", "xxxxxx", -1,
@@ -166,7 +168,7 @@
"Balance", "balance", "xxxxxxx", -1,
NULL, NULL, NULL},
{COL_RATE, -1,
- "Price", "price", "xxxxxx", -1,
+ "Amt", "price", "xxxxxx", -1, //Changed COL_RATE header to "Amt" (JG)
gtvt_edited_cb, get_editable_start_editing_cb,
NULL},
{COL_TYPE, -1,
@@ -968,6 +970,26 @@
#endif
}
+//Callback to set the completion on the cell renderer entry.
+//Connected to the "editing-started" signal from CellRenderer.
+static void
+editing_started_cb(GtkCellRenderer *cell, GtkCellEditable *editable,
+ const gchar *path, gpointer data)
+{
+ if (GTK_IS_ENTRY(editable))
+ {
+ gint column = GPOINTER_TO_INT(g_object_get_data(G_OBJECT(cell),
+ "model_column"));
+ GtkEntry *entry = GTK_ENTRY(editable);
+ GtkEntryCompletion *completion = gtk_entry_completion_new();
+ gtk_entry_completion_set_model(completion, GTK_TREE_MODEL(data));
+ gtk_entry_completion_set_text_column(completion, column);
+ gtk_entry_set_completion(entry, completion);
+ }//if
+ else
+ g_print("CellRenderer completion failed!!\n");
+}//editing_started_cb
+
/* Connected to "edited" from cellrenderer. For reference, see
split-register-model-save.c */
static void
@@ -975,6 +997,7 @@
const gchar *new_text, gpointer data)
{
GtkTreeIter iter;
+ GtkEntryCompletion *completion;
Split *split;
Transaction *trans;
GncTreeViewTransaction *tv = GNC_TREE_VIEW_TRANSACTION(data);
@@ -1515,13 +1538,18 @@
col = gnc_tree_view_add_text_column (
GNC_TREE_VIEW(tv), def.title, def.pref_name, NULL, def.sizer,
def.modelcol, def.visibility_model_col, def.sort_fn);
+ def.editing_started_cb = &editing_started_cb; //Set function pointer
}
g_object_set_data(G_OBJECT(col), DEFAULT_VISIBLE, GINT_TO_POINTER(1));
cr = gnc_tree_view_column_get_renderer(col);
+
if (def.editing_started_cb) {
- g_signal_connect(G_OBJECT(cr), "editing-started",
- (GCallback) def.editing_started_cb, tv);
+ //Store the position of the column in the model
+ g_object_set_data(G_OBJECT(cr), "model_column",
+ GINT_TO_POINTER(def.modelcol));
+ g_signal_connect(G_OBJECT(cr), "editing-started",
+ (GCallback) def.editing_started_cb, get_trans_model_from_view(tv));
}
// This can die when prefs are used.
More information about the gnucash-changes
mailing list