Can you send link to your git repo with that changes? 24 дек. 2014 г. 18:39 пользователь "David Osguthorpe" < david.osgutho...@gmail.com> написал:
> On Wed, Dec 24, 2014 at 12:25:23PM +0100, Geert Janssens wrote: > > If I understand you correctly you want to separate the options from the > report generating code ? > > So your wrapper script would be responsible for displaying the options > to the user and the > > actual report script only gets the values passed in ? > > > > The way I understand the code that will already be a big work because > the options for each > > report are also defined in the same report scheme file. And the whole > options handling code is > > 90% scheme code. The options themselves live in the guile context, not > in C. Displaying the > > options dialog is about 70% guile code which expects the options to live > in guile. (I happened to > > look at that code flow yesterday, that's why I know). > > > > I have been following the various conversations about python - something I > am more than interested in. > (I did try to allow python calls from guile using a guile module I found > by googling - and returning > data to guile using another such module - but had issues with random > crashes so gave that up - the > modules were also not being maintained). > > However I then found the python module and used that as the basis so that > I now have the ability > to write reports in python > > The only change I made to gnucash was in the python module init script to > call another python script > stored in a users .gnucash directory under a python directory - all python > and compiled python > modules are stored there (ie no need for distribution in gnucash). > > There are 5 compiled modules currently based on pre-gobject introspection > codegen (as used for eg pygtk), > pygkeyfile (as apparently there are no distributed GKeyFile python > bindings), python bindings > generated by codegen for GncPluginPage (for subclassing in python to > create report pages), > GncHtml and GncHtmlWebkit - for final report output. there is also a > swighelper python module for > moving objects between python ctypes and swig instances (python ctypes is > also used to access some > functionality/data). These are setup for compiling in a gnucash source > distribution > - currently in a plugin directory under the python module. > > The rest is all python - and yes this does mean I re-implemented options > in python - although in a JIT > way so options I have not needed are not implemented. GnuCash objects are > accessed using the > distributed python binding classes. > This needs pygtk installed in order to insert into GnuCashs Gtk based GUI > - but the python code is > able to install additional menus for the python reports. > (By the way note that GnuCash is multithreaded because Gtk is > multi-threaded - in the initial > implementation attempts I had issues with python GIL crashes but these > dissappeared when I started > using proper pygobject based implementations of GnuCashs GTypes). > > So far I have the basic hello world report in python (with all options > implemented that it uses), > cash_flow and a multi-commodity price_scatter (which is what started all > this - around gnucash 1.8 I had > a multi-commodity price scatter plot in scheme (the distributed version > only did 1 commodity) which > failed (as I know now) when the plotting switched to Javascript based > graphs - the python reports are > able to use the Javascript plotting features. > > The HTML is generated using the python ElementTree library - all scheme > ignored here > although there is a partial implementation of stylesheets > - the access to GncHtmlWebkit is used for the final display of the HTML > string. > > I have also ignored the KVP code for options - note that options in the > python reports do not > apply to the scheme reports - there is no cross-over. > > This is all done under OSX (Snow Leopard) using MacPorts as the primary > installer of GnuCash, > python 2.7, pygtk etc. - although I have had a small look at working under > Linux - my laptop > dual boots OSX/Linux. > > The code is in a git repository which can be available if there is > interest - although it > contains a lot of history as tried differing approaches. > > David > _______________________________________________ > gnucash-devel mailing list > gnucash-devel@gnucash.org > https://lists.gnucash.org/mailman/listinfo/gnucash-devel > _______________________________________________ gnucash-devel mailing list gnucash-devel@gnucash.org https://lists.gnucash.org/mailman/listinfo/gnucash-devel