gnc_tree_model_selection_get_type is being replaced by that provided by G_DEFINE_TYPE_WITH_CODE
and G_ADD_PRIVATE. Replace g_type_add_interface_static by G_IMPLEMENT_INTERFACE.
gnc_tree_model_owner_get_type is being replaced by that provided by G_DEFINE_TYPE_WITH_CODE
and G_ADD_PRIVATE. Replace g_type_add_interface_static by G_IMPLEMENT_INTERFACE.
gnc_tree_view_account_get_type is being replaced by that
provided by G_DEFINE_TYPE_WITH_CODE and G_ADD_PRIVATE.
Replace g_type_add_interface_static by G_IMPLEMENT_INTERFACE.
Use built-in glib functions to retrieve the list of per-currency price
lists, concatenate them into a single list, instead of doing it all in
hand-rolled loops.
Sorting is preformed by the calling GncTreeViewPrice so this removes
sorting from gnc_pricedb_nth_price.
There's no concurrency concern because gnc_pricedb_nth_price is a
GUI callback and so must run in the GUI thread.
Re-introducing the fgets() call in e4836f3c that has been removed in
bf55c30 triggers the "ignoring return value of fgets, declared with
attribute warn_unused_result" error. The even better way is to actually
use the return value and check it for non-NULL because only then
we did a successful fgets call where we can use its result.
These functions allow the saving and restoring of the GncTreeViewAccount
filter settings to the state file. Currently they are only saved if the
page is left open when Gnucash is closed.
It seems that std::locales created by boost::locale::generator are
not entirely compatible: If used to create a new locale with a facet
for boost::date_time one ends up with the C locale and the facet.
For the time being avoid the problem by using boost::locale to format
dates and times. std::chrono gets calendar functions in C++20 so we
can switch date-time backends once we can adopt it.
The BIC code for SEPA transfer used to be mandantory, but turned optional
more recently and the local IBAN code is sufficient. Gnucash still
checked the local BIC code existence and forced the user to get it
from somewhere. This is no longer needed - local IBAN is enough.
The visibility of the entered content was set to FALSE (=invisible) always,
which was wrong for certain types of input as indicated by the GUI_INPUT_FLAGS.
This should now be honored and visibility set to TRUE (=visible) for
the correct flags.
797029 Import Customer & Vendors: blank name and company in import data row crashes GnuCash
797031 Import customer & Vendors: import can create customer and vendors without address data
797030 Import Customer & Vendors: several issues with the matching of data rows
We can't use std::locale::global because all streams imbue it by
default and if it's not 'C' (aka std::locale::classic) then we
must imbue all the streams that we don't want localized, and that's
most of them.
Provides error checking for setting the C++ locale from the environment.
This is necessary both because the environment might have an invalid
locale, which would cause an unhandled exception crash.
On windows std::locale("") can't handle some Microsoft-style locale
strings (e.g. Spanish_Spain) so we use boost::locale's gen("") function
to set the locale--though even that can't handle a Microsoft-style
locale string with an appended charset (e.g. Spanish_Spain.1252) and
that's what glibc's setlocale(LC_ALL, NULL) emits.