John Ralls
474bc360f4
Improve converting vectors to SCM lists.
5 years ago
John Ralls
1cd2cf211c
Specialize QofInstance* options set_value, catch validation exceptions.
...
GncOptionValue<const QofInstance*>.get_value() returns a QofInstance* but
reports store them as strings, either commodity mnemonics or GUIDs.
Specialize set_value/set_default_value from scheme to handle those
possibilities.
GncOptionValidatedValue throws an invalid_argument exception if it's
fed an invalid argument. Catch that so that it doesn't crash the program.
5 years ago
John Ralls
852b2ffc2e
Handle bare currency mnemonics, catch invalid GUID string exceptions.
5 years ago
John Ralls
e43ff93279
Fix some overly-long lines.
5 years ago
John Ralls
1af97ebb9a
Implement registering/unregistering/calling change callbacks.
...
Drives reloading the report when the Apply or OK button is pressed.
5 years ago
John Ralls
86da12d844
Use RGB instead of RGBA for color set for color
5 years ago
Christopher Lam
eafc290034
Merge branch 'maint'
5 years ago
John Ralls
86d7637160
Handle GncOptionMultichoiceValue::set_value parameters
...
that don't match the get_value return type.
5 years ago
John Ralls
b6622a386b
Pick up option aliases recently added in maint.
5 years ago
John Ralls
a97b3e0c6d
Don't let C code destroy the ODB, it's owned by Guile.
5 years ago
John Ralls
a2e1a3e1b8
Extract the GncOptionDB* from the Scheme dispatch function closure.
...
Scheme code keeps the GncOptionDB in a closure. Extract it for C/C++
use. Ownership remains with the closure, don't free the GncOptionDB*.
5 years ago
John Ralls
99eaa81a28
Fix parse of commodity namespace from scheme istream.
...
Just ignore 2 instead of ignoring 1 twice. No ifdef required.
5 years ago
Christopher Lam
a5edacf0fc
[options.scm] Rename option name to "Levels of Subaccounts"
...
Original name "Show Accounts until level". Add backward compatibility
missed in 08f490ee98
5 years ago
John Ralls
0bd9033bb3
Move includes of glib and gtk out or extern C in new cpp files.
5 years ago
John Ralls
0f02236ebe
Fix gcc warnings.
5 years ago
John Ralls
18997db720
Separate GncOptionAccountValue into GncOptionAccountListValue and GncOptionAccountSelValue.
...
They have different get_value() return types so can't cohabit comfortably.
5 years ago
John Ralls
dd8e8b4efa
Evaluate the getter for making invoice options.
5 years ago
John Ralls
05ac056449
Make separate option type for GncOwner.
...
GncOwner is not a QofInstance subclass.
5 years ago
John Ralls
9d150b1ae7
Always set budget option to default budget.
5 years ago
John Ralls
f5d8d508ee
Create the GncOptionVariant's GncOptionValue in place.
...
Saves a temporary, prevents premature unprotecting of Scheme objects.
5 years ago
John Ralls
c034a26ae7
Protect stored scheme option values from the garbage collector.
5 years ago
John Ralls
67dab6b320
Remove business-options.scm and business-prefs.scm.
...
Their functions have been reimplemented elsewhere.
5 years ago
John Ralls
a1af86ed40
Implement gnc:generate-restore-forms, gnc-optiondb-save-to-scheme.
5 years ago
John Ralls
c34986dad4
Change gnc:new-options to return a fake dispatch function.
...
To placate test-report.scm
5 years ago
John Ralls
3f89d063eb
Evaluate default function in gnc:make-account-sel-limited-option.
5 years ago
John Ralls
6eb5dfed51
make-internal fail if there is a ui_item, not if there isn't.
5 years ago
John Ralls
29a2365fdf
Avoid infinite recursion when the alias changes only the section name.
5 years ago
John Ralls
7885353fe3
Bring option aliases up to date.
5 years ago
John Ralls
bbe74aa086
Remove tooltips from multichoice option values.
...
This is the c++options equivalent to 02a6a0ae and e1525721 .
5 years ago
John Ralls
7c6ecafd61
Rewrite options.scm to wrap options.hpp functions where needed.
5 years ago
John Ralls
52ef53a405
Implement multichoice selection options.
5 years ago
John Ralls
7239eb809a
Test more natural way of designating relative dates.
5 years ago
John Ralls
23461f1d6c
The value of a list-option is a list. Duh.
5 years ago
John Ralls
12f8df1eab
Fix test failure: Clear the stream before reusing it.
5 years ago
John Ralls
be322a0d7c
Group GncOptionMultChoiceValue::set_multiple with set_default_multiple.
...
Better readability.
5 years ago
John Ralls
27670a6e98
Make the 'pixel and 'percent SCM symbols C++ constants.
...
Improves efficiency and conciseness.
5 years ago
John Ralls
a94f69d6e0
Pretty up some SFINAE formatting for easier reading.
5 years ago
John Ralls
0f8446a1bb
Remove some no longer needed diagnostics.
5 years ago
John Ralls
f66a918be4
Implement GncOptionValue<const QofQuery*>
...
QofQuery isn't a QofInstance and doesn't have a GUID.
5 years ago
John Ralls
0a8f66ee90
Fold GncOptionGncOwnerValue into GncOptionValue<const QofQuery*>.
...
Reflecting the way Scheme options handles it.
5 years ago
John Ralls
418eb06620
Remove GncOptionDateValue::set_default_value(size_t)
...
Because it's ambiguous with set_default_value(time64).
5 years ago
John Ralls
7d0cdf7c94
Handle #f input to option typemap(in)s.
5 years ago
John Ralls
86a2f1551f
Implement gnc-make-date-option.
5 years ago
John Ralls
693e966bf9
Extract Scheme date handling functions and apply them.
...
Including in RelativeDatePeriodVec typemap, making it work correctly.
5 years ago
John Ralls
63502900f3
Permit GncOptionAccountValue to have a nil default value.
5 years ago
John Ralls
42185c0ec8
typemap for std::size_t
...
Unaccountably missing from swig_guile.
5 years ago
John Ralls
5c74337810
Add function GncOption::set_default_value.
...
Allows reports to derive from other reports and then change the option
default values to suit. If they change only the values and not the defaults
then it's possible to create saved report configs that don't include the
options whose values are changed to the base report's default value. See
https://bugs.gnucash.org/show_bug.cgi?id=642292 .
5 years ago
John Ralls
c04f4a00e0
Replace gnc_make_option<SCM> with gnc_make_scm_option
...
To finesse SWIG_Guile's typedef unsigned long SCM, which causes SFINAE
issues when trying to resolve the template.
5 years ago
John Ralls
e7309f077b
Replace gnc_make_option<gnc_commodity*> with gnc_make_commodity_option.
...
To handle cases where we try to create commodity options with a symbol as
the default instead of a gnc_commodity*.
5 years ago
John Ralls
3aa86ca992
QofInstance* needs a typemap to match the from/to SCM logic.
5 years ago
John Ralls
4a305998e4
GncOptionDateValue set_value_from_scm: 'else' required.
5 years ago
John Ralls
d9984f75ab
Update test-gnc-optiondb.scm for not renaming the RelativeDatePeriod enums.
5 years ago
John Ralls
43cd81ba78
Fix a couple of RangeValue retrieval issues.
5 years ago
John Ralls
9bd3baff63
Change the reldate_values alist from a static to a singleton.
...
A static has to be initialized at library load and Guile
isn't necessarily running then. The singleton gets evaluated at
runtime only if the getter is called from Guile.
5 years ago
John Ralls
534a7c2893
GncOptionMultichoiceValue allow setting a default selection.
...
Instead of arbitrarily using the first allowed value.
Also update tests for the Scheme type addition to
GncMultichoiceOptionChoices, intercept more cases where the value
needs to be transformed, and go back to emitting a string instead of
throwing in GncOptionMultichoiceValue::get_value when m_values has more
than one value.
5 years ago
John Ralls
c62b526ba0
Implement scm_to_value<bool>.
5 years ago
John Ralls
efc7346490
Implement scm_to_value<GncOptionAccountList>.
5 years ago
John Ralls
f20c358ce1
Return a pair in scheme for GncOptionRangeValue<int>.
...
This is a bit of a hack to handle PlotSize options. They're the only
RangeValues that use ints; the rest use doubles because the control is a
GtkSpinButton and that uses doubles. The chart code expects a pair with
either 'pixel or 'percent saying what to put in front of the number. We
hack that too: if value <= 100 then it's percent because 100px is about
3cm on modern monitors and 15mm on HiDPI ones. Bigger numbers are pixels.
5 years ago
John Ralls
b5c0477143
Use the SWIGGED pointer for the SCM value of QofInstance* Values.
...
This effectively reverts b7dd7f.
Note that two cases aren't handled because the types aren't GObjects and
so don't have type macros to decipher them: GncOwner and QofQuery. Since
they're not GObjects they're obviously not QofInstances either and we
need to rethink this value type a bit.
5 years ago
John Ralls
f7f2d22909
Implement gnc-optiondb-foreach.
5 years ago
John Ralls
81d261897e
scm_to_value<QofInstance*>() handle Swigged ptrs as well as GUIDs.
...
Some swigged engine functions used to set options return Swigged ptrs.
5 years ago
John Ralls
16a36d9104
Correctly set value of a GncOptionMultichoiceValue.
...
Accounting for the 3 types of SCM object that we might be handed.
5 years ago
John Ralls
7c1b4b794a
Convert from Scheme date-period symbols to C++ RelativeDatePeriod enum.
...
Create an alist mapping the Scheme symbols to the corresponding Swig
functions that alias the enumerations. When a symbol is received look
up the corresponding function and evaluate it, retrieving the enumeration.
5 years ago
John Ralls
d41292fddd
Make set_selectable a GncOptionsGtkUIItem member function.
...
Callable from the option object with set_ui_item_selectable and from
Scheme as gnc-option-db-set-option-selectable-by-name.
5 years ago
John Ralls
a21f329b1e
Use 100% instead of 20000 px for default Pixmap size.
5 years ago
John Ralls
8c2a8edbed
Implement gnc_option_db_set_string_value and gnc_optiondb_lookup_string_value.
5 years ago
John Ralls
86102e1be7
Return SCM_BOOL_F instead of nullptr to Scheme optiondb-lookup.
...
Because unlike C, Scheme thinks (if 0) should return true. Besides, Swig
hides pointers so a null check doesn't even work.
5 years ago
John Ralls
53ad0ba440
Prevent SWIG from trying to call delete on a std::unique_ptr.
5 years ago
John Ralls
08d1eebba2
Use GUID strings instead of QofInstance* for scheme value of QofInstance.
...
Because that's what gets used everywhere else.
5 years ago
John Ralls
fba0248548
Support different GncOptionMultichoiceValue key types.
...
Scheme can use strings, symbols, or ints as keys in multichoice options,
but C++ can handle only strings. Add conversion and tracking so that the
right key type gets sent back to Scheme.
5 years ago
John Ralls
55a2ed1df8
gnc-optiondb.i uses functions declared in gnc-optiondb.h.
...
So it needs it declared in the swig file.
5 years ago
John Ralls
18b83874fd
Another bit of Remove test-option-utils
5 years ago
John Ralls
0b7ccfbd5b
Create gnc-make-foo-option functions.
...
For compatibility with current Scheme code.
5 years ago
John Ralls
a602f64b17
SFINAE-constrain the GncOption constructor templates.
...
So that one can't instantiate an invalid constructor.
Unfortunately Swig doesn't understand SFINAE and will try to create the
invalid constructors anyway but at least this generates a compile-time
error when it tries to.
5 years ago
John Ralls
43f4bcb610
Make GncOptionUIType an enum class.
...
So that Swig will create properly constrained identifiers for its values.
5 years ago
John Ralls
7fa6778b4b
Add a register_option overload to GncOptionDB
...
For compatibility with existing scheme code.
5 years ago
John Ralls
cb7270cafe
Fix myriad gcc10 complaints.
5 years ago
John Ralls
76b0001cbe
Remove option-util.
5 years ago
John Ralls
e2c87f23c3
Convert optiondb users in gnome and gnome-utils to C++.
...
To enable using std::unique_ptr<GncObjectDB> and avoid memory management
problems.
5 years ago
John Ralls
ea835b31b7
Provide GncOptionPtr& overloads for register-option functions.
...
Simplifies and makes safer calls from Scheme and C++ by not requiring
a raw pointer.
5 years ago
John Ralls
472814d315
Change the normal internal option ValueType to SCM.
...
Internal options are used as a Scheme hack and don't need to be interpreted
on the C side so there's no point in converting them to C types.
5 years ago
John Ralls
e48416010d
Remove redundant GncOptionDB decl.
5 years ago
John Ralls
7022f5222d
Revert gnc_option_db_lookup|set_glist_value to ...scm_value.
...
GLists and SCM lists are not interchangeable.
5 years ago
John Ralls
8c77ce967b
Implement and test obsolete option name aliasing.
5 years ago
John Ralls
90b8fce59f
Fix build after merge.
5 years ago
John Ralls
4f3fd665cf
Fix counter and counter_format storage in KVP.
...
So that they go to their own slots instead of to the options slot.
5 years ago
John Ralls
b19f3d383c
Protect some exceptions from being passed to Swig.
5 years ago
John Ralls
52600bbd1f
Instantiate gnc_register_number_range_option templates in SWIG.
5 years ago
John Ralls
31a0153fec
Another GncOptionDBPtr fix.
5 years ago
John Ralls
85db341afe
Remove test-option-utils
...
It no longer works. Since that's all that test-app-utils called,
delete it too.
5 years ago
John Ralls
21398dfda1
Testing fixups for using GncOptionDB* in register_option functions.
5 years ago
John Ralls
d1cfd62f31
Fix loading text fields from KVP into options.
5 years ago
John Ralls
276d33975a
Remove dialog-options.c, replaced by dialog-options.cpp.
...
Adds new function reset_default_value to GncOption; doing it outside
of the class requires knowing the Type of m_value.
5 years ago
John Ralls
5f9c66aa61
Save all options to KVP if clear_options is true.
5 years ago
John Ralls
6491c98563
Clean up some omitted type-forcing in set_option_from_ui_type() instances.
5 years ago
John Ralls
245a8fccc7
Correctly select UI types for GUID output.
5 years ago
John Ralls
c751e56184
Fix fail to load or save number-range values in KVP.
5 years ago
John Ralls
010ab1a965
Fix free of unallocated ptr crash.
5 years ago
John Ralls
4a4e5d36f8
Enable gnc_register_owner_option to handle the three types that GncOwner aliases.
5 years ago
John Ralls
d8f83d6ee6
Boolean simple won't work if its UI type is INTERNAL.
5 years ago
John Ralls
3514725a97
Make gnc_register_number_range_option a template on ValueType.
...
GtkSpinButton works with doubles, but we want to preserve the
ability to use other types.
It really should have enable_if<is_arithmetic(ValueType)>.
5 years ago
John Ralls
e78c012699
Fill in the book options.
5 years ago
John Ralls
ae79fd016d
More skeletons
5 years ago
John Ralls
28438e3126
Rewire gnome and gnome-utils to use GncOptionDB.
5 years ago
John Ralls
41e59df71f
Remove unused and un-needed function.
5 years ago
John Ralls
1eef796f09
Add some skeleton functions to make the option-using code in gnucash/gnome-utils and gnucash/gnome happy.
5 years ago
John Ralls
99103ffd10
Change gnc-register-option functions to take GncOptionDB*.
...
Instead of std::unique_ptr<GncOptionDB> because there's no way
to get a unique_ptr through a C call.
5 years ago
John Ralls
9111f118e0
Business option create_option_widget specializations.
...
Required creating a registration class for create_option_widget
overload functions because without it the dispatch function
complained of missing symbols at link time.
5 years ago
John Ralls
01c0fe2364
Include what we use.
5 years ago
John Ralls
25b717d47a
Add a rudimentary C API for GncOptionDB.
...
So that most of the gnome-util and gnome consumers don't need to
be converted to C++.
Hide the corresponding functions in options-utils to stop the
compiler whining.
Note that this commit breaks the build but is necessary at
least temporarily to compartmentalize the changes.
5 years ago
John Ralls
4451f58bd6
Rename RelativeDatePeriods missed earlier.
5 years ago
John Ralls
6feb92d4e8
Provide scheme function new-gnc-optiondb.
...
Wraps creating a GncOptionDBPtr, freeing up gnc_option_db_new() to
return a GncOptionDB* for use in C code. Convert gnc_option_db_new()
calls in gtest-gnc-optiondb to call std::make_unique() as well.
5 years ago
John Ralls
f9e136dbac
Get the spelling of GncMultichoiceOptionEntry consistent.
5 years ago
John Ralls
eb6e31f803
dialog-options: Change signature of gnc_option_get_gtk_widget()
...
So that it can be called from C.
5 years ago
John Ralls
67508ea039
Reimplement dialog-options for C++.
5 years ago
John Ralls
3b4785e744
Convert GncOptionSection from a std::pair to a class.
...
Provides find_option(const char*) and foreach_option(func) for easy
iteration. find_option and find_section now return plain const ptrs
instead of std::optionals. Much less cumbersome though the compiler
won't nag if you forget the nullptr check.
5 years ago
John Ralls
c63db36a60
Rename string_equal_charptr to operator==(const std::string&, const char*)
...
Much prettier and more idiomatic as well as being a lot less typing.
5 years ago
John Ralls
0106176436
Provide GncOption::is_alternate() for GncOptionRangeValue<>.
...
Needed for GncOptionUIType::PLOT_SIZE to indicate whether the option
value represents pixels or percent.
5 years ago
John Ralls
5fd53c94de
Provide GncOption::GetLimits for setting a NUMBER_RANGE spin button.
5 years ago
John Ralls
a995343a8b
Provide for multiple selections in GncOptionMultichoiceValue
...
To support the GncOptionUIType::LIST. This UI type is unused in GnuCash
code but might be used in user custom reports.
5 years ago
John Ralls
16da3208fc
Make GncOptionDateValue::get_period_index return value size_t.
...
Instead of int8_t to match the built-in vector index type.
5 years ago
John Ralls
ac0e7063c7
Move the GncOptionUIType and dirty members to GncOptionUIUtem.
...
Even though it makes the class not pure virtual any more it is necessary
behavior common to all possible subclasses.
5 years ago
John Ralls
3200bd4966
Add a multiselect boolean member to GncOptionAccountValue.
...
To support a variation available in dialog-options. Even though it's not
used in any GnuCash code nor documented anywhere it might be in some
custom reports.
5 years ago
John Ralls
fce33799af
Change GncOptionUIItem to be a pure virtual class instead of a templated one.
...
Simplifies the design because derived classes can have whatever save UI class
they need and implement the void(void) set_ui_item_from option and
set_option_from_ui_item with whatever functions are appropriate for
the UI class. No need for callbacks or std::function members.
5 years ago
John Ralls
00aa0f603d
Add a PLOTSIZE option UI type.
...
I'd missed this one earlier.
5 years ago
John Ralls
6c8e0e23f7
Redesign GncOptionDateValue.
...
After getting a better understanding of how it interacts with dialog-options and
finding some additional scheme API needing implementation (exposed only in
hello-world.scm, but possibly used in user-written reports).
Creates a new file-pair, gnc-options-date.[ch]pp to separate the creation of
the static structs with the type info and strings for the various
RelativeDatePeriod values from the already too large gnc-option-impl.
Although the result is a rather C-ish design the alternative with classes
or template specializations would be more complicated and offer no
benefit.
Implements the permissible_values functions of GncOptionMultichoiceValue
for GncDateValue and provides for absolute, relative, and both
UI values for the three widget configs afforded by dialog-options.
5 years ago
John Ralls
08bf3ec5b0
Merge branch 'maint'
5 years ago
Christopher Lam
f1e35daab3
Rename option name from "Extra notes" to "Extra Notes"
5 years ago
Christopher Lam
251db8c37b
Rename option name from "Report title" to "Report Title"
5 years ago
Christopher Lam
2606ddf905
Rename option name from "Invoice number" to "Invoice Number"
...
This ensures it matches all other invoice reports.
5 years ago
John Ralls
3b78b6e894
Change the GncOptionMultichoiceValue permissible value return types to const char*.
...
From std::string. The consumer is a GtkWidget so we might as well do the conversion
inside the class and this will simplify adding these functions to GncOptionDateValue
in the next commit.
5 years ago
John Ralls
d5f6a2539b
Replace GncOption::_get_option() with a friend function swig_get_option.
...
Implemented in gnc-optiondb.i it more clearly indicates the intended
use and restricts the access. Unfortunately further limiting the
friend declaration with #ifdef SWIG prevented the declaration from
working, raising the error "m_option is a private member of GncOption".
5 years ago
John Ralls
93a3716c00
Enable retrieval of a GncOptionDateValue's relative period.
...
So that it can be displayed by dialog-option.
5 years ago
John Ralls
dc876d4041
Provide an accessor to GncOptionAccountValue::m_allowed
...
To enable its use by gnc_account_sel_filter
5 years ago
John Ralls
102f36c3be
Provide more than one Date UI type to match options available in dialog-option.c
...
Also differentiates begin-period and end-period controls.
5 years ago
John Ralls
99c2c5e439
GncOptionUIItem from the GncOptionVariant classes to GncOption.
...
Separating the UI from the data model. Note that the GncOptionVariant
classes still have a GncOptionUIType member to ensure that a
GncOptionUIItem of the right type is attached.
5 years ago
John Ralls
1bea809cec
Remove the UI interface from GncOptionDB.
...
UI operations occur only in dialog-option so there's no need to expose
them from GncOptionDB.
5 years ago
John Ralls
cbf7d70ecd
Integrate gnc-option into app-utils.
...
Includes converting swig-app-utils-guile to c++.
5 years ago
John Ralls
81c5ac6689
Remove the incomplete book-currency code.
...
Not everything from the 6 Book-Currency commits is removed: Switching
the Num and split-action fields and restricting edits of transactions
older than n days were included and those changes are left in place.
Some other partly-implemented features were also part of these commits
and were removed: Options for setting a default capital gains account
and currency, completion of the LIFO cap-gains policy, and creation of
a list of cap-gains policies.
If any of these are to be revived they should each be done in a separate
feature branch and submitted via Github pull request for a code review
before merging; a design discussion on gnucash-devel before restarting
work is also advisable.
5 years ago
John Ralls
aa246d3096
Make implementation classes and template code visible only in app-utils.
...
So only GncOption and the GncOptionDB free-function interface are public.
We don't want to expose template headers widely, it would blow up compilation
times and might lead to one definition rule violations.
5 years ago
John Ralls
20b3ef8a89
Handle some minor differences between libc++ (clang) and libstdc++ (gcc).
5 years ago
John Ralls
cd6ccbe331
Fix account-tree double-free in scheme test when built with gcc.
...
Oddly when built with clang it doesn't exhibit the crash.
5 years ago
John Ralls
691cb0992e
Follow change in loading method for engine's guile bindings.
5 years ago
John Ralls
cbd0607e80
Implement load and store options from/to book options.
5 years ago
John Ralls
5a82aac639
Hide constexpr constants from SWIG.
...
Swig bindings don't need them and SWIG can't digest constexpr.
5 years ago
John Ralls
ffc6866406
Changes to accommodate moving guile engine bindings to bindings/guile.
...
Plus for changing targets gncmod-engine and gncmod-app-utils to
gnc-engine and gnc-app-utils.
5 years ago
John Ralls
009219c63d
Much less ugly and fragile.
...
Finding the right form now relies on the form name instead of its
position in the parse tree.
5 years ago
John Ralls
276641ef15
Change parse of option input to generate a parse tree.
...
This is I hope less brittle than the previous character-counting, though
it's still brittle because it relies instead on counting form-depth.
5 years ago
John Ralls
51a1430c24
Remove stray diagnostic.
5 years ago
John Ralls
76172af239
Implement saving and loading OptionDB items to/from scheme and
...
key-value string representations.
5 years ago
John Ralls
6ab5618b76
Set a 50-character limit on the saved size of option section and name.
...
Allows use of istream::getline() to retrieve the values, simplifying
delimiter detection.
5 years ago
John Ralls
d7a2a0ffff
Make a constant for std::numeric_limits<std::size_t>max().
...
Improves readability.
5 years ago
John Ralls
826d75af16
Use istream::getline instead of std::getline for date option type parsing.
5 years ago
John Ralls
c5294ed6b3
Fix missing-declaration errors in swig-gnc-optiondb-guile.cpp.
5 years ago
John Ralls
7ccba53739
Add stream functions to_scheme and from_scheme to GncOption.
...
These add or parse the textual noise needed to replicate the Scheme options'
serialization technique of saving scheme forms for saving report options
and then evaluating those forms to restore the option values. Required for
backward saved-reports compatibility.
5 years ago
John Ralls
1ea3822665
More operator <</>> Fixups.
5 years ago
John Ralls
98ca190700
Fix commodity in/out to use namespace & mnemonic instead of GUID.
5 years ago
John Ralls
4b997cd025
Fixups for GncOptionDateValue better design.
5 years ago
John Ralls
b2fb57d39e
Fix GncOption::set_value() to work with GncOptionDateValue::set_value(RelativeDatePeriod).
...
Adjusting tests as necessary.
5 years ago
John Ralls
4dcf4a0e6a
Test GncOptionRangeValue as a GncOption.
...
Better representation of how it will be used.
5 years ago
John Ralls
4cabd6c052
Change the GncOptionMultichoiceValue test to use a GncOption.
...
Requires exposing the permissible values functions to GncOption.
5 years ago
John Ralls
e2a36a8be3
Expose function validate to GncOption and test it on GncOptionValidatedValue.
5 years ago
John Ralls
6df516dfcd
Clean up the commodity/currency tests with a better fixture class.
5 years ago
John Ralls
52d0ec5290
Change GncOptionDateValue design to better match usage.
...
Added advantage that it handles (not correctly, but in the same way as
the old code) the ambiguity between a period starting or ending with
the stored value "relative . today".
5 years ago
John Ralls
883127a59d
Implement operators >> and << on GncOption.
5 years ago
John Ralls
e583c84f4e
Clean up comments for GncOptionDateValue.
5 years ago
John Ralls
aaf6b14c67
Remove commented-out code.
5 years ago
John Ralls
1b00399b14
Remove GncOptionValue<std::Vector<GncGUID>>.
...
This going to be the Account List option implementation, but a more
customized approach is better.
5 years ago
John Ralls
5a9c4ccaf8
Clean out copies of the option.scm comments used as a development guide.
5 years ago
John Ralls
b95ea2c4aa
Add Account-list options.
5 years ago
John Ralls
7183e7c43a
Fix begin/end of quarter calculations.
...
Set the period to the calendar year if it's not set in prefs.
Handle correctly the FY start month being after the current month.
5 years ago
John Ralls
399573a89d
Fix multichoice test construction.
5 years ago
John Ralls
12c5b94430
New scheme function gnc_option_default_value.
5 years ago
John Ralls
3f576671aa
Adapt GncOptionMultiChoiceValue to support list options.
...
Main change adds a value field to the constructor to set the value and
default value.
5 years ago
John Ralls
2f2ac99944
Replace the direct wrapping of GncOptionDB-set-option-string-foo.
...
With a simple type-free function gnc_option_set. This mirrors the current
(gnc:option-set(gnc:lookup-option... and takes care of SCM type conversion.
5 years ago
John Ralls
252ba9b477
Change GncOptionDB::lookup_option to gnc_option_value().
...
The old gnc:lookup-option returned the option object so that it could be
manipulated rather than getting its value; gnc_option_value replicates
the behavior of (gnc:option-value (gnc:lookup-option)).
5 years ago
John Ralls
ff7b263a5f
Fix up and test the int specialization of GncOptionRangeValue.
...
Not sure yet that a double one is really needed.
5 years ago
John Ralls
39b7c9c74d
Convert scm_from_value() to templates for stricter overload resolution.
5 years ago
John Ralls
3dc4bc2377
Implement GncOptionDateValue.
5 years ago
John Ralls
435667e8fe
Implement GncOptionMultichoiceValue
...
Replaces GncOptionValue<GncMultiChoiceOptionChoices> because having the
vector as the value obviously wouldn't work and besides it needs
additional functions.
5 years ago
John Ralls
8eedcb6d6d
Extract all SCM functions to gnc-optiondb.i.
...
So that it can be moved to bindings/ when gnc-module-load-begone is ready.
5 years ago
John Ralls
d544f85256
Replace boost::variant and boost::optional with the C++17 std equivs.
5 years ago
John Ralls
694a15ed21
Extract SCM GncOptionDB::lookup_option to gnc-optiondb.i.
5 years ago
John Ralls
16d1f0655b
Get libswig-gnc-optiondb to install in the right place on Windows.
5 years ago
John Ralls
cee3cdaff9
Instantiate GncOption::set_option for guile, initial types string and int.
...
For proof-of-concept. Guile obviously doesn't know about templates.
5 years ago
John Ralls
9cdcaf0da8
Remove GncOptionDB::set_selectable and convert set_option to a template.
5 years ago
John Ralls
935ce6db99
Move the SCM option value conversion from the GncOptionValue classes to GncOption.
5 years ago
John Ralls
e51faff3e3
Throw an exception if one tries to set a GncOption with an unsupported type.
5 years ago
John Ralls
c5fac51a8b
Change the type of OptionUIItem's m_ui_item from void* to GncOptionUIItem.
...
A locally-opaque class wrapping whatever sort of widget ptr one needs.
Thanks, warlord!
5 years ago
John Ralls
3296212aef
Sketch out the rest of the option types.
...
Minimal implentation to get it to compile and pass tests, not functional yet.
5 years ago
John Ralls
0a13b4c518
Fix up the SWIG wrapper for GncOptionDBPtr.
...
Thanks to Flexo@stackoverflow for
https://stackoverflow.com/questions/27693812/how-to-handle-unique-ptrs-with-swig
5 years later, why isn't this in SWIG yet?
5 years ago
John Ralls
4146251cc7
Add GncOptionUIItem manipulation to GncOptionDB.
5 years ago
John Ralls
6ccb9dbb9e
Use a std::unique_ptr<GncOptionDB> instead of a raw ptr.
...
Passing references to it to the gnc_register_option functions.
Not tested yet with SWIG, might not work.
Includes introducing fixtures to gtest-gnc-optiondb.cpp.
5 years ago
John Ralls
94628097e4
Use GncOptionUIType parameters in gnc_register_option functions.
5 years ago
John Ralls
3769a356d5
Extract functions find_section and find_option using boost::optional
...
to handle not-found condition.
5 years ago
John Ralls
6deedd441f
Make the ptr returned by GncOption::get_ui_item() const
...
but not the GtkWidget it points to.
5 years ago
John Ralls
40361ec854
gnc-opption.hpp needs to include <functional>.
5 years ago
John Ralls
41ef2c5d44
Add OptionUIItem composition class to GncOption.
...
Provides a type and a raw pointer member with accessors. The type is one of
enum GncOptionIUType and is either VOID (for internal options that don't
get UI items) or one of the widget types specified in dialog-option.c or
business-options-gnome.c.
5 years ago
John Ralls
083e5b93df
Replace the CRTP class GncOptionBase with direct calls in its former children.
...
Benefit of CRTP too limited to accept the cost of understanding it.
5 years ago
John Ralls
cf0b1da4fa
Remove GncOptionWrapper.
...
Move the GncOptions into the GncOptionDB. This works with tests but
might not with real reports.
5 years ago
John Ralls
2ee0edaa16
Use targets instead of variables for GncOption* tests.
5 years ago
John Ralls
d2655d3fb0
Remove gnc-option-db business convenience functions.
...
gnc_option_db_lookup_invoice_option used only once, so moved its
guts there. The others weren't used at all.
5 years ago
John Ralls
ade7fc8b6e
Initial SWIG of GncOptionDB and Scheme tests.
...
This class will be heavily used by reports so we need to ensure SWIG and
Scheme compatibility from the start.
5 years ago
John Ralls
f3eee511e8
Add free functions to create a new GncOptionDB and to register options.
...
The objective of the free functions is to hide the GncOption from language
bindings so that the GncOptions can be moved into the GncOptionDB instead
of having shared ptrs splattered around the heap. Nearly all access to
the options can then be mediated through the GncOptionDB container.
Note that gnc_option_db_new creates the GncOptionDB on the heap and
returns a raw ptr, so it's up to the creator of the GncOptionDB to
call delete on it when it's no longer needed.
5 years ago
John Ralls
455d3c2d60
Add GncOptionDB class.
5 years ago
John Ralls
16fd632ec8
Make the GncOption member variables private.
...
GncOption is intended to be final, so there's no point in protected members.
5 years ago
John Ralls
13b94d2370
Test integer options, calling get_value with wrong type.
5 years ago
John Ralls
d88ec0dc1b
Replace the gnc_make_foo_option free functions with a template ctor.
...
The free functions will reappear for GncOptionDB. This is to avoid
having to pass naked pointers to Scheme with the attendant object
lifetime issues.
5 years ago
John Ralls
01dc70cc60
Add GncOption accessors for Classifier strings.
5 years ago
John Ralls
01fcae6ac8
Make the OptionClassifier members non-const.
...
Constness deletes the default copy assignment operator, making GncOption
not copy-assignable.
5 years ago
John Ralls
b6fd844774
Wrap GncOptionValue/GncOptionValidatedValue in Boost::Variant.
...
To provide a single type for containers.
5 years ago
John Ralls
c0ba3e2706
[C++ Options] Begin Implementation for basic and validated options.
5 years ago
John Ralls
b495da4e29
[C++ Options] Remove some unused C API from options-utils.
5 years ago
John Ralls
e1c153a516
Bug 798224 - Scheduled transactions are created with date-entered...
...
copied from the template transaction.
5 years ago
Christopher Lam
1b4d30b3b1
Merge branch 'maint'
5 years ago
John Ralls
b33d7eb98d
Doxygenize some function description comments in gnc-ui-util.
5 years ago
John Ralls
7f62c5395a
Bug 743999 - Deleting a digit from an existing number greater than...
...
four digits in length generates an error message.
Because the grouping is off. Checking grouping on input is pointless so
just ignore the grouping separator when parsing number input.
5 years ago
Robert Fewell
7ee9dac2e9
Add filter for currency symbol for GNCAmountEdit widget
...
When pasting an amount that includes the currency symbol the validation
will silently fail which may lead to unusual behaviour.
5 years ago
Robert Fewell
748dbf54e0
Change monetary value for gnc_default_share_print_info
...
Share values are not currencies so set the monetary value to 0 for the
GNCPrintAmountInfo
5 years ago
Robert Fewell
435bb1c76b
Parse the register monetary cells for a currency symbol
...
Add the ability to strip the currency symbol from a registry monetary
cell if it is pasted with one so it can be validated.
5 years ago
Robert Fewell
d55060c0fc
Bug 796761 - Control characters can be pasted in register fields
...
If copied text includes control characters they are inserted when
pasted which can cause alignment issues. This commit filters the
clipboard text for control characters before it is pasted.
5 years ago
Christopher Lam
5ce8f78f77
Merge branch 'maint'
5 years ago
John Ralls
f7f35faefe
Bug 797928 - Since last run asks for security price when no shares traded
...
Refactor a bit to ensure that the same price variable names and transaction
currency is used for both extracting the variables and retrieving
any required exchange rates, and that splits with no formula are
ignored in both cases.
5 years ago
Robert Fewell
33b8a19253
Add depreciation warnings for the removal of individual option tool tips
5 years ago
Robert Fewell
02a6a0ae4a
Remove the function gnc_option_permissible_value_description
...
Remove function and scheme using this function which deals with
individual tool tips on multi-choice options.
5 years ago
Christopher Lam
67e65d436c
Remove duplicate definitions
5 years ago
Christopher Lam
9b671b2039
[date-utilities.scm] remove unused date selectors code & string
5 years ago
Christopher Lam
b06ee5efaf
Merge branch 'maint'
5 years ago
Christopher Lam
d316b01da7
[date-utilities] deprecate unused date selectors
5 years ago
Christopher Lam
d28ff20ff7
Merge branch 'maint'
5 years ago
Geert Janssens
a4cab54afc
i18n - Reuse strings for less translation work
5 years ago
John Ralls
c49b45d8f1
Finish the glib 2.67 fixes for CI tests.
5 years ago
Geert Janssens
e9dfd0d9ea
Still more fixes for Arch ci failure
5 years ago
Geert Janssens
cb04365013
More fixes for Arch ci failure
5 years ago
Christopher Lam
2a2f080813
Merge branch 'maint'
5 years ago
Geert Janssens
fbabcd58e0
Remove dead code
5 years ago
Geert Janssens
b9208eccbf
Remove duplicate declaration
...
The function is also declared and defined in gnc-locale-utils
5 years ago
Geert Janssens
e973a1b60d
Drop default locale currency special case for euro
...
The condition mentioned in the comment no longer applies.
All European locales on Windows (MingW64) properly present EUR
as currency these days
5 years ago
Christopher Lam
87473ed5f9
Merge branch 'maint'
5 years ago
Sumit Bhardwaj
df579c257b
Replace g_memdup by memcpy
...
GLib is deprecating g_memdup. Since older versions of GLib
wouldn't have g_memdup2, this PR replaces occurrences of
g_memdup by memcpy.
5 years ago
Christopher Lam
3739d9121c
[date-utilities.scm] typo fix and deprecate unused functions
5 years ago
Frank H. Ellenberger
93e2829ee5
Merge PR #899 into maint
5 years ago
luz paz
16b4976381
Fix typos in libgnucash/
...
Found via `codespell -q 3 -L ans,ba,parm,parms,numer`
5 years ago
Christopher Lam
b2b8792110
prepend-and-reverse instead of O(N^2) append
5 years ago
Frank H. Ellenberger
6bc8679932
I18N: replace several spourious spaces
5 years ago
John Ralls
7a7c26f87e
Move glib and gtk includes out of extern C for tests.
...
Needed to compile with glib 2.67 and later.
5 years ago
Bill Nottingham
c0f2c3ae25
Fix build with glib2 2.67.x.
...
glib headers should not be included with 'extern "C"'.
5 years ago
Christopher Lam
092040c7fe
Merge branch 'maint'
5 years ago
John Ralls
4359243c08
Move glib and gtk includes out of extern C for tests.
...
Needed to compile with glib 2.67 and later.
5 years ago
Christopher Lam
779c0521e0
[options.scm API] yank canonically-tabbed parent-subtotal-mode
...
'canonically-tabbed option is buggy and has never graduated out of
experimental for 17 years. Time to put it to rest.
All previous saved reports with this option will be switched to 't
i.e. parent-subtotal-mode enabled..
5 years ago