CSV import
Christian Stimming
stimming at tuhh.de
Wed May 30 16:11:29 EDT 2007
Am Dienstag, 29. Mai 2007 18:57 schrieb Josh Sled:
> "Benjamin Sperisen" <lasindi at gmail.com> writes:
> > Now that I have code that can load CSV files, I think I can move to
> > the next phase: loading the files into GnuCash. I've been looking
> > through the code trying to figure out how to write an importer plugin,
> > but I'm a bit lost. Is there some documentation you could point me to
> > that explains how to write a plugin? All I really need is code that
> > adds a menu item for the importer and calls an event handler that I
> > can write; then I'll have the "glue" between the code I've got and the
> > rest of GnuCash.
>
> I suggest looking at:
>
> - src/gnome/gnc-plugin-basic-commands.c, which is similar, being the core
> "plugin" for the basic commands/menu items.
>
> - src/import-export/ofx/gnc-plugin-ofx.c, which is even more similar, as
> it's basically the same thing. :)
I suggest even stronger to look at import-export/ofx, as this is pretty much
exactly that kind of framework you need:
- gncmod-ofx-import.c defines a loadable module. For a csv module, replace
all "ofx" by "csv" and there you are.
- gnc-plugin-ofx.c defines the gnc-plugin methods and registers this plugin
with the gnc_plugin_manager by calling gnc_plugin_manager_add_plugin(); the
actual *location* of a menu entry is defined in gnc-plugin-ofx-ui.xml which
is loaded at run-time. The mapping of the "OfxImportAction" of the ui.xml
file to an actual C callback is done in the gnc_plugin_actions struct in
gnc-plugin-ofx.c.
- The callback function that is run on clicking a menu item is
gnc_plugin_ofx_cmd_import() in gnc-plugin-ofx.c which calls the actual import
function. For menu item callbacks that also lookup the account window that
was opened, see import-export/hbci/gnc-plugin-hbci.c, although this is
considerably more involved.
Also, I think you don't need to create a gncmod module (the first point above)
but instead you could probably add the CSV importer directly into the
src/import-export/ directory and call the registration code from
libgncmod_generic_import_gnc_module_init() in gncmod-generic-import.c. But if
you prefer a separate CSV module, feel free to take the OFX module as a
template which will fit quite well.
Regards,
Christian
More information about the gnucash-devel
mailing list