+/* = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = */
+static void list_split_number_cell_data_function (GtkTreeViewColumn *col, GtkCellRenderer *renderer, GtkTreeModel *model, GtkTreeIter *iter, gpointer user_data)
+{
+GtkTreePath *path;
+gint *indices;
+gchar num[16];
+
+ path = gtk_tree_model_get_path(model, iter);
+ indices = gtk_tree_path_get_indices(path);
+ //num = gtk_tree_path_to_string(path);
+ g_snprintf(num, 15, "%d", 1 + *indices);
+ gtk_tree_path_free(path);
+
+ g_object_set(renderer, "text", num, NULL);
+
+}
+
+
+static void list_split_amount_cell_data_function (GtkTreeViewColumn *col, GtkCellRenderer *renderer, GtkTreeModel *model, GtkTreeIter *iter, gpointer user_data)
+{
+Split *split;
+gchar buf[G_ASCII_DTOSTR_BUF_SIZE];
+gdouble amount;
+gchar *color;
+
+ gtk_tree_model_get(model, iter, 0, &split, -1);
+
+ //hb_strfmon(buf, G_ASCII_DTOSTR_BUF_SIZE-1, amount, ope->kcur, GLOBALS->minor);
+ amount = split->amount;
+ g_snprintf(buf, G_ASCII_DTOSTR_BUF_SIZE-1, "%.2f", amount);
+
+ color = get_normal_color_amount(amount);
+ g_object_set(renderer,
+ "foreground", color,
+ "text", buf,
+ NULL);
+
+}
+
+
+static void list_split_memo_cell_data_function (GtkTreeViewColumn *col, GtkCellRenderer *renderer, GtkTreeModel *model, GtkTreeIter *iter, gpointer user_data)
+{
+Split *split;
+
+ gtk_tree_model_get(model, iter, 0, &split, -1);
+
+ g_object_set(renderer, "text", split->memo, NULL);
+}
+
+
+static void list_split_category_cell_data_function (GtkTreeViewColumn *col, GtkCellRenderer *renderer, GtkTreeModel *model, GtkTreeIter *iter, gpointer user_data)
+{
+Split *split;
+Category *cat;
+
+ gtk_tree_model_get(model, iter, 0, &split, -1);
+
+ cat = da_cat_get(split->kcat);
+ if( cat != NULL )
+ {
+ g_object_set(renderer, "text", cat->fullname, NULL);
+ }
+ else
+ g_object_set(renderer, "text", "", NULL);
+}
+
+
+static void list_split_populate(struct ui_split_dialog_data *data)
+{
+GtkTreeModel *model;
+GtkTreeIter iter;
+Split *split;
+gint count, i;
+
+ DB( g_print("\n[list_split] populate\n") );
+
+ count = da_splits_length (data->tmp_splits);
+
+ if( count <= 0 )
+ return;
+
+ model = gtk_tree_view_get_model(GTK_TREE_VIEW(data->LV_split));
+
+ gtk_list_store_clear (GTK_LIST_STORE(model));
+
+ g_object_ref(model); /* Make sure the model stays with us after the tree view unrefs it */
+ gtk_tree_view_set_model(GTK_TREE_VIEW(data->LV_split), NULL); /* Detach model from view */
+
+ /* populate */
+ for(i=0 ; i < count ; i++)
+ {
+ split = da_splits_get(data->tmp_splits, i);
+
+ DB( g_print("- set split %d : %d, %.2f, %s\n", i, split->kcat, split->amount, split->memo) );
+
+ gtk_list_store_append (GTK_LIST_STORE(model), &iter);
+ gtk_list_store_set (GTK_LIST_STORE(model), &iter,
+ 0, split,
+ -1);
+
+ }
+
+ gtk_tree_view_set_model(GTK_TREE_VIEW(data->LV_split), model); /* Re-attach model to view */
+ g_object_unref(model);
+}
+
+
+
+
+
+static GtkWidget *
+list_split_new(void)
+{
+GtkListStore *store;
+GtkWidget *treeview;
+GtkCellRenderer *renderer;
+GtkTreeViewColumn *column;
+
+ DB( g_print("\n[ui_split_listview] new\n") );
+
+
+ // create list store
+ store = gtk_list_store_new(1,
+ G_TYPE_POINTER
+ );
+
+ // treeview
+ treeview = gtk_tree_view_new_with_model(GTK_TREE_MODEL(store));
+ g_object_unref(store);
+
+ gtk_tree_view_set_grid_lines (GTK_TREE_VIEW (treeview), PREFS->grid_lines);
+
+ //column 0: line number
+ renderer = gtk_cell_renderer_text_new ();
+ g_object_set(renderer, "xalign", 1.0, NULL);
+ column = gtk_tree_view_column_new_with_attributes("#", renderer, NULL);
+ gtk_tree_view_column_set_alignment (column, 1.0);
+ gtk_tree_view_column_set_cell_data_func(column, renderer, list_split_number_cell_data_function, NULL, NULL);
+ gtk_tree_view_column_set_sizing (column, GTK_TREE_VIEW_COLUMN_AUTOSIZE);
+ gtk_tree_view_append_column (GTK_TREE_VIEW(treeview), column);
+
+
+ // column 1: category
+ renderer = gtk_cell_renderer_text_new ();
+ g_object_set(renderer,
+ "ellipsize", PANGO_ELLIPSIZE_END,
+ "ellipsize-set", TRUE,
+ NULL);
+
+ column = gtk_tree_view_column_new_with_attributes(_("Category"), renderer, NULL);
+
+ //gtk_tree_view_column_set_alignment (column, 0.5);
+ gtk_tree_view_column_set_resizable(column, TRUE);
+
+ //gtk_tree_view_column_set_sort_column_id (column, sortcolumnid);
+ //gtk_tree_view_column_set_fixed_width( column, HB_MINWIDTH_LIST);
+ gtk_tree_view_column_set_expand (column, TRUE);
+ gtk_tree_view_column_set_cell_data_func(column, renderer, list_split_category_cell_data_function, NULL, NULL);
+ gtk_tree_view_append_column (GTK_TREE_VIEW(treeview), column);
+
+ // column 2: 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_with_attributes(_("Memo"), renderer, NULL);
+
+ //gtk_tree_view_column_set_alignment (column, 0.5);
+ gtk_tree_view_column_set_resizable(column, TRUE);
+
+ //gtk_tree_view_column_set_sort_column_id (column, sortcolumnid);
+ //gtk_tree_view_column_set_fixed_width( column, HB_MINWIDTH_LIST);
+ gtk_tree_view_column_set_expand (column, TRUE);
+ gtk_tree_view_column_set_cell_data_func(column, renderer, list_split_memo_cell_data_function, NULL, NULL);
+ gtk_tree_view_append_column (GTK_TREE_VIEW(treeview), column);
+
+
+ // column 3: amount
+ renderer = gtk_cell_renderer_text_new ();
+ g_object_set(renderer, "xalign", 1.0, NULL);
+
+ column = gtk_tree_view_column_new_with_attributes(_("Amount"), renderer, NULL);
+
+ gtk_tree_view_column_set_alignment (column, 1.0);
+ gtk_tree_view_column_set_resizable(column, TRUE);
+ //gtk_tree_view_column_set_sort_column_id (column, sortcolumnid);
+ gtk_tree_view_column_set_fixed_width( column, HB_MINWIDTH_LIST);
+ gtk_tree_view_column_set_cell_data_func(column, renderer, list_split_amount_cell_data_function, NULL, NULL);
+ gtk_tree_view_append_column (GTK_TREE_VIEW(treeview), column);
+
+
+ // column empty
+ //column = gtk_tree_view_column_new();
+ //gtk_tree_view_append_column (GTK_TREE_VIEW(treeview), column);
+
+
+ // treeviewattribute
+ gtk_tree_view_set_headers_visible (GTK_TREE_VIEW(treeview), TRUE);
+ gtk_tree_view_set_reorderable (GTK_TREE_VIEW(treeview), TRUE);
+
+ //gtk_tree_sortable_set_default_sort_func(GTK_TREE_SORTABLE(store), ui_acc_listview_compare_func, NULL, NULL);
+ //gtk_tree_sortable_set_sort_column_id(GTK_TREE_SORTABLE(store), GTK_TREE_SORTABLE_DEFAULT_SORT_COLUMN_ID, GTK_SORT_ASCENDING);
+
+ return treeview;
+}
+
+
+
+