Simplified Libreoffice API
Noel Power
nopower at suse.com
Tue Mar 12 05:11:51 PDT 2013
On 12/03/13 09:15, Michael Meeks wrote:
> Hi Rodolfo,
[...]
>
> I think a better approach is to re-use the existing compatibility API
> that we implement and expose it into StarBasic in some pleasant way; it
> should be possible to do things like:
>
> ActiveSheet.Range("A1") = 3
>
> for example - and get something useful; currently it's necessary to
> enable a compatibility mode with a setting in each file to get that
> going, and then mixing in old-style UNO APIs for missing pieces is
> harder, but ...
>
> Re-using, extending and improving our interoperable API there makes
> much more sense (to me) than creating yet-another binding :-)
>
> How does that sound ?
I'm not convinced that I really agree with that, I mean no problem with
improving the interoperable API, any help offered with that always
welcome, I mean reusing that api for libreoffice wholesale, I feel there
are a number of problems
a) More than setting a compatibility mode is required, some stuff will
work with the compatability mode but alot of stuff wont, for technical
reasons there are ( at least ) some temporary objects and associations
created on import ( of a native Microsoft document ) that are needed for
things to work correctly.
b) More than the above the main problem here is that while some objects
and api do map well to libreoffice some don't, considering the main
focus of the interoperability API is to behave like Excel that's not a
surprise but trying to use that api for Libreoffice would cause
problems, Libreoffice isn't Excel and in lots of places the model(s) and
behaviours just dont match. We would end up trying to make the
compatability API have sortof a 'Libreoffice' mode I feel ( which is as
evil as creating another binding )
However I don't see such a 'Simplified' API as yet another binding but
just an extension of the existing api. An easier to use more
user-centric api could ( and would ) also be reused by the
interoperatbility API ( and or any other scripting language/clients )
>
> Failing that - IMHO we need to move away from a 'pure generic
> interface' approach with UNO, and move towards more of using interfaces
> to expose an object hierarchy
I think at least the ground blocks for this have been laid with Noel
Grandins work to convert services to the new service specifications,
that should at least for example in the future allow basic to define
some stronger types ( than Object ), that would in turn allow the IDE to
do some sort of primitive code-completion ( I intend to create a gsoc
task for this ) - but... yes if the existing api/model sucks ( and it
does ) then this wont help with that :-( But... maybe it will encourage
people to create some less fine grained api ( built on top of the
existing interface focused crud ) - that is my hope at least
> - and annotating those interfaces with
> more information: defaults for parameters, default-methods, etc. to make
> the scripting bindings truly useful. That would make UNO
> object-interfaces more usable from other languages like C++ too since
> currently for optional / defaulting arguments we have to use the 'Any'
> type
of course such enhancements imho are welcome regardless
HTH ( but I fear it didn't )
Noel
More information about the LibreOffice
mailing list