Hello Geert, thank you very much for your extensive answer. I'll work through it and ask again. As I've said it's something I've been wondering about for a while. For some python scripts I've used external config files but I think it makes more sense to have config stored in one place.
regards, Christoph Am 23.05.2015 um 11:16 schrieb Geert Janssens: > On Monday 11 May 2015 10:29:17 Christoph Holtermann wrote: >> Dear developers, >> >> I have been wondering for some while if it is possible >> for extensions like in the python bindings to save settings >> in the place gnucash does. >> >> regards, >> >> Christoph Holtermann > Hi Christoph, > > That's a short question which requires a long answer. > > To start there are several places where gnucash stores settings > depending on the scope of these settings. > > Settings that affect all the user's books are stored via the gsettings > mechanism (which has different backends depending on the OS). > > Settings that are related to a book are stored in a file in > .gnucash/books. These settings mostly save gui state so as such they may > be of less interest. > > The gsettings interface is wrapped via the gnc_prefs api in gnucash. The > gnc_prefs api is described here: > http://code.gnucash.org/docs/HEAD/group__Preferences.html > > Via this api it should be relatively easy to read or modify any setting > that is defined in the gnucash code. > > And there's the catch. Only settings that are defined can easily be > manipulated. That's a limitation of the underlying gsettings interface. > > Nothing however is stopping you from defining your own set of > preferences in an extension written using the python bindings. It will > likely be more complicated to write such an extension, mainly due to the > way gsettings works. > > New preference options are defined as a "schema" in an xml file. You > will find several such schema files in the gnucash source tree in the > various gchemas directories (for example: src/gnome-utils/gschemas). > > This schema file then has to be compiled and installed in a place where > the gsettings library can find it. If you don't want to or can't install > the compiled schema in the system libraries, you can also install it in > a non-standard location and set the XDG_DATA_DIRS environment variable > properly so your schema file will be found. GnuCash uses this mechanism > itself when it's configured to be installed in a directory other than > the default (/usr/bin). An example can be found in > $PREFIX/etc/gnucash/environment in such a case. Note that this file is > not using shell script notation, so if you want to set the environment > variable, you will have to transliterate the example (; -> : and adding > $ signs for inclusion of other environment variables). > > So depending on the build system surrounding your python extension, > wanting to use the gnc preferences system suddenly adds quite a bit of > overhead. I have no idea if gsettings has some useful python bindings > itself that may simplify this. > > The above is a rough overview only. If you need more details or > specifics feel free to ask. > > Regards, > > Geert -- --- Nachricht gesendet von C. Holtermann --- - - - Verschlüsselte Nachrichten können über - - den öffentlichen Schlüssel auf folgendem - - Keyserver an mich gesendet werden: - http://pgp.mit.edu:11371/pks/lookup?op=get&search=0x4DD9CF0482B0620B _______________________________________________ gnucash-devel mailing list gnucash-devel@gnucash.org https://lists.gnucash.org/mailman/listinfo/gnucash-devel