Re: TODO / Wishlist
- From: "" <nick savs net>
- To: "Kevin Connor Arpe" < <kevinarpe gmail com>>
- Cc: gnumeric-list gnome org
- Subject: Re: TODO / Wishlist
- Date: Sun, 6 Jul 2008 13:08:49 +1000
Kevin Connor Arpe wrote:
Hi,
...
I see this:
Scripting. After some vacilation trying to decide between wrapping
Gnumeric's object model, and providing something that is VBA compatible,
the latter won. We'll export an api in C that is compatible with the widely
used VBA interface, and wrap it in several languages (Python, VB.NET, and
C# are likely candidates).
Can someone flesh this out a little? Or point me to old posts on the
matter. I am familiar the Excel VBA model, but I can't get my head around
those two sentences. Is the goal to expose the Gnumeric object model as
the VBA model via a C interface. Then other scripting languages (Python,
Perl, etc.) can build from this object model?
I hadn't seen that bit before :/
I've been looking at generating python bindings for Gnumeric's object model using pygtk codegen techniques,
and have some prototype code and notes (all the gotchas etc. I encountered during prototyping), along with a
rough list of what order to tackle header files in (derived from poring over doxygen header and type
dependency graphs) which I've been meaning to stick up on a wiki somewhere so I don't keep holding up the
show :(
There are 2 problems on my end: (1) Damn global credit crisis... my day job has been insanely busy (2) If you
look at the function type parsing code in h2def.py, it doesn't handle pointer returns (eg. char
*some_function();). I assume there's insider knowledge I'm missing, since PyGTK obviously generates bindings
for the GTK+ API which is full of pointers, but the documentation is nonexistant, I haven't got around to
email the guys, and every weekend something seems to suck up my time...
This is a huge project by itself. Nevertheless, I am interested. Please let
me know where things stand and where I can begin to read code and poke
around. I'll need to start by just reading the code base for a while to get a
feel for how it works.
You can build "libspreadsheet" from the Gnumeric source which looks to me to be a first pass at separating
out and bundling up all the glib-style objects used in Gnumeric. In include/libspreadsheet-1.10/spreadsheet
you have the individual headers. As an example, I can do the following after generating a (fairly useless)
python module:
Python 2.4.4 (#2, Jan 3 2008, 13:36:28)
[GCC 4.2.3 20071123 (prerelease) (Debian 4.2.2-4)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
import pygtk; pygtk.require("2.0")
import libgnumeric
dir(libgnumeric)
['__doc__', '__file__', '__name__', 'gnm_dump_func_defs', 'gnm_init', 'gnm_pre_parse_shutdown',
'gnm_shutdown']
libgnumeric.gnm_init(True)
There's also the "python console/plugin" work in plugins/python-loader/py-gnumeric.c which has semi recent
commits, and they seem to be manually generated python bindings to some of the parts of gnumeric which work
while gnumeric is running (and they have GTK+ signal handling and funky stuff). That looks like a lot of
manual work to me and I would guess it's not maintainable (lots of work to understand, Gnumeric object model
is huge and changing, etc), but it actually _exists_ unlike what I've been trying to work on ;)
I reckon the sanest thing to do would be to get the heavy lifting done with code generation (as in
http://www.ibm.com/developerworks/linux/library/l-wrap/) and then build a pythonic end-user API on top of
that. We could learn a lot from Java-GNOME IMHO
(http://java-gnome.sourceforge.net/4.0/doc/design/1a-Homework.html). When/if I get more time and get over the
h2def problem above, I'd love to be hacking on this, but If other people have more time or are making heaps
more progress, let me know.
Nick
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]