GnuCash 038f90a+
Loading...
Searching...
No Matches
Public Member Functions
GncFinishTreeview Class Reference

Public Member Functions

 GncFinishTreeview (GtkBuilder *builder)
 
void load (const EntryVec &list_of_splits)
 Extract the information from the StockTransactionEntries in the vector created by the model's make_list_of_splits function and write it into the list view.
 

Detailed Description

Definition at line 2300 of file assistant-stock-transaction.cpp.

Constructor & Destructor Documentation

◆ GncFinishTreeview()

GncFinishTreeview::GncFinishTreeview ( GtkBuilder *  builder)

Definition at line 2312 of file assistant-stock-transaction.cpp.

2312 :
2313 m_treeview{get_widget (builder, "transaction_view")}
2314{
2315 auto view = GTK_TREE_VIEW (m_treeview);
2316 gtk_tree_view_set_grid_lines (GTK_TREE_VIEW(view), gnc_tree_view_get_grid_lines_pref ());
2317
2318 auto store = gtk_list_store_new (NUM_SPLIT_COLS, G_TYPE_STRING, G_TYPE_STRING,
2319 G_TYPE_STRING, G_TYPE_STRING, G_TYPE_STRING,
2320 G_TYPE_STRING, G_TYPE_STRING);
2321 gtk_tree_view_set_model(view, GTK_TREE_MODEL(store));
2322 gtk_tree_selection_set_mode (gtk_tree_view_get_selection (view),
2323 GTK_SELECTION_NONE);
2324 g_object_unref(store);
2325
2326 auto renderer = gtk_cell_renderer_text_new();
2327 auto column = gtk_tree_view_column_new_with_attributes
2328 (_("Account"), renderer, "text", SPLIT_COL_ACCOUNT, nullptr);
2329 gtk_tree_view_append_column(view, column);
2330
2331 renderer = gtk_cell_renderer_text_new();
2332 g_object_set (renderer, "ellipsize", PANGO_ELLIPSIZE_END, nullptr);
2333 column = gtk_tree_view_column_new_with_attributes
2334 (_("Memo"), renderer, "text", SPLIT_COL_MEMO, nullptr);
2335 gtk_tree_view_column_set_expand (column, true);
2336 gtk_tree_view_append_column(view, column);
2337
2338 renderer = gtk_cell_renderer_text_new();
2339 gtk_cell_renderer_set_alignment (renderer, 1.0, 0.5);
2340 gtk_cell_renderer_set_padding (renderer, 5, 0);
2341 column = gtk_tree_view_column_new_with_attributes
2342 (_("Debit"), renderer, "text", SPLIT_COL_DEBIT, nullptr);
2343 gtk_tree_view_append_column(view, column);
2344
2345 renderer = gtk_cell_renderer_text_new();
2346 gtk_cell_renderer_set_alignment (renderer, 1.0, 0.5);
2347 gtk_cell_renderer_set_padding (renderer, 5, 0);
2348 column = gtk_tree_view_column_new_with_attributes
2349 (_("Credit"), renderer, "text", SPLIT_COL_CREDIT, nullptr);
2350 gtk_tree_view_append_column(view, column);
2351
2352 renderer = gtk_cell_renderer_text_new();
2353 gtk_cell_renderer_set_alignment (renderer, 1.0, 0.5);
2354 gtk_cell_renderer_set_padding (renderer, 5, 0);
2355 column = gtk_tree_view_column_new_with_attributes
2356 (_("Units"), renderer,
2357 "text", SPLIT_COL_UNITS,
2358 "foreground", SPLIT_COL_UNITS_COLOR,
2359 nullptr);
2360 gtk_tree_view_append_column(view, column);
2361 gtk_tree_view_set_tooltip_column(GTK_TREE_VIEW(m_treeview),
2362 SPLIT_COL_TOOLTIP);}

Member Function Documentation

◆ load()

void GncFinishTreeview::load ( const EntryVec &  list_of_splits)

Extract the information from the StockTransactionEntries in the vector created by the model's make_list_of_splits function and write it into the list view.

Definition at line 2365 of file assistant-stock-transaction.cpp.

2366{
2367 auto gtv = GTK_TREE_VIEW(m_treeview);
2368 bool negative_in_red = gnc_prefs_get_bool (GNC_PREFS_GROUP_GENERAL,
2369 GNC_PREF_NEGATIVE_IN_RED);
2370 auto list = GTK_LIST_STORE(gtk_tree_view_get_model(gtv));
2371 gtk_list_store_clear(list);
2372 for (const auto &entry : list_of_splits) {
2373 GtkTreeIter iter;
2374 auto memo{entry->memo()};
2375 auto tooltip = (memo && *memo ?
2376 g_markup_escape_text(memo, -1) : strdup(""));
2377 /* print_value and print_amount rely on xaccPrintAmount that
2378 * uses static memory so the result needs to be copied
2379 * immediately or the second call overwrites the results of
2380 * the first one.
2381 */
2382 auto char2str{[](const char* str) -> std::string {
2383 return std::string{ str ? str : "" }; }};
2384 auto amount{char2str(entry->print_value())};
2385 auto units{char2str(entry->has_amount() ?
2386 entry->print_amount(entry->debit_side() ? entry->amount() :
2387 gnc_numeric_neg(entry->amount())) : "")};
2388 auto units_in_red{negative_in_red && !entry->debit_side()};
2389 gtk_list_store_append(list, &iter);
2390 gtk_list_store_set(
2391 list, &iter,
2392 SPLIT_COL_ACCOUNT,
2393 entry->print_account(), SPLIT_COL_MEMO,
2394 entry->memo(), SPLIT_COL_TOOLTIP, tooltip, SPLIT_COL_DEBIT,
2395 entry->debit_side() ? amount.c_str() : nullptr,
2396 SPLIT_COL_CREDIT,
2397 entry->debit_side() ? nullptr : amount.c_str(),
2398 SPLIT_COL_UNITS, units.c_str(),
2399 SPLIT_COL_UNITS_COLOR, units_in_red ? "red" : nullptr, -1);
2400 g_free(tooltip);
2401 }
2402}
gnc_numeric gnc_numeric_neg(gnc_numeric a)
Returns a newly created gnc_numeric that is the negative of the given gnc_numeric value.
gboolean gnc_prefs_get_bool(const gchar *group, const gchar *pref_name)
Get a boolean value from the preferences backend.

The documentation for this class was generated from the following file: