Currently if a jump to a filtered register is made, this could be from
a report, other register, reconcile window and transaction associations
and the destination split is not shown the jump will end up at the last
active cell. This could be confusing so add a test for the destination
split being visible and warn the user with an option to temporarily
clear the filter.
This requires a std::locale generated from a boost::locale::generator
The examples already in our code base used the wrong message_path while
creating the generator and as a result our message catalogs weren't found.
As with the std::locale I have added code to create a locale via
boost::locale only once instead of having each c++ file redo the work.
This code expects a message_path to set for the boost generator.
An earlier attempt queried for this path directly from within
gnc-locale-utils using gnc_get_locale_dir (from gnc-path.h).
That however broke several c++ tests depending on gnc_locale_utils as those
then also needed to be linked against gnc-path.o. I couldn't get the linker
to do this properly so I worked around it for now by splitting the boost_locale
functionality in two steps:
- an initializer step that takes the messages_path as a string and will
generate the locale
- a getter to get the locale.
The initializer should only be run once, and before the getter is called.
It won't hurt though if the initializer is called more often.
If the getter is called before the initializer it will still
generate a std::locale but without setting a messages_path. It will then
also log a warning explaining translations may not be properly found.
this commit ensures balance-sheet balances do not ignore closing
entries. ensures equity section includes closing balances from
profit&loss. an addendum to b000d4114
Copy the functions from gnc_main_window that updates the status bar
with the action tooltips to gnc_window so that both GncMainWindow and
GncEmbeddedWindow can use without duplicating code.
The Bill/Invoice due reminder has a column header of 'CN?' which was
unclear of meaning which is 'Is this xxx a Credit Note'. A tooltip
was suggested but a better fix is to change the column to display the
'Type' so you would see Bill, Invoice or 'Credit Note' just like you
see in the find dialog.
There is a difference in the way the sheet is closed between registers
and invoices. The gnc-date-cell-destroy is being called before the
gnc-item_edit_destroying for invoices and so when the item_edit tries
to do the signal disconnect on the popup_item it no longer exists.
Moving the gtk_widget_destroy before ledger_destroy fixes this.
Note manpages for both gnucash and gnucash-cli need revision.
They refer to outdated files and environment variables, and
some more recent command line options are missing.
Note this required the introduction of a '--name' parameter
for the report name to run. Without it the command line
would have to support a variable number of positional
parameters, depending on the context (quotes or report)
and that would complicate the parsing considerably.
The program options libary has a convenience binding for boost::optional
to indicate whether an option is set or not.
Use this to store options passed on the command line directly
in variables for later use. This avoids the need to refer to options
in several locations using a fixed string (like 'help', 'help-gtk', 'nofile',...)
In addition drop a number of obsolete class member variables.
They were leftovers from the conversion to c++ and no longer used.
Reverts 658241d3b because now READONLY session will not delete lock
file. Because reports don't (and shouldn't) modify data. allows
reports to be run on files open in another session.
For clarity. In so doing found the backend behavior a bit inconsistent
so it's modified to do what the enum values indicate.
In the course of changing the various calls I found some implementation
errors in the back end and corrected them.
It's more descriptive and less likely to be confused with the book:id value
in XML files that is the book's GUID.
Also changed the QofSessionImpl::begin new_uri parameter from std::string to
const char*. There's no point in allocating a string just to call
new_uri.c_str() all over the place.