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.
qof_session_begin (..., ..., ignore_lock=TRUE, ..., ...) will
force-open a datafile currently in use in another session.
This will unfortunately delete any existing .LCK file.
To my knowledge there is no read-only qofsession which will leave .LCK
file intact. Therefore to prevent possible dataloss, it is best to
disallow opening a locked file which prevents deletion of .LCK file.
If --run-report="Reportname" matches multiple reports, offer a
disambiguation. Will show guid and display the options selected in the
saved report. Example:
"Multicolumn View" matches multiple reports. Select guid instead:
* guid: 2f17ecb535f24a3a9f314bc5855569e5
General / Number of columns: 2.0
General / Report name: A saved-report based on multicolumn-view
General / Stylesheet: Easy
* guid: d8ba4a2e89e8479ca9f6eccdeb164588
As gnucash and most gnucash-cli commands will work on an input file
it makes sense to use the common positional input-file parameter everywhere.
It's still optional for a normal gnucash run though. It will fall back to
to last-used file as before.
A --add-price-quotes run on the other hand will bail out with an error
message. As this command is typically run unattended in a cron script
it's safer to explicitly request a file to work on.
Right now it doesn't make a difference as the end of main
is currently never reached. However with some additional
tweaks it can be, and that would allow the application
destructor to be called for a nicer cleanup on exit.