GnuCash c935c2f+
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 2297 of file assistant-stock-transaction.cpp.

Constructor & Destructor Documentation

◆ GncFinishTreeview()

GncFinishTreeview::GncFinishTreeview ( GtkBuilder *  builder)

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

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

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