openoffice-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Matthias Seidel <>
Subject Re: Just a little side note on the scripting framework ...
Date Sat, 16 Jun 2018 20:10:06 GMT
Hi Rony,

Am 15.06.2018 um 10:49 schrieb Rony G. Flatscher (Apache):
> Hi Mattias,
> On 14.06.2018 22:54, Matthias Seidel wrote:
>> Am 14.06.2018 um 20:54 schrieb Rony G. Flatscher (Apache):
>>> A friend has LibreOffice installed (due to a better mail-merge-support I understand)
and I came up
>>> with a script to help her taking advantage of the writer component. The script
is written in ooRexx
>>> for which I authored an OOo scripting provider that works on OOo, making ooRexx
an additional macro
>>> language for OOo.
>> That's very interesting!
>> I know Object Rexx from my times with OS/2 (in fact I am still running
>> it in a VM).
> That's funny, me too!
> ;-)

In fact, even OpenOffice is available for it:

> (At one point in time one could create a password protected OS/2 WPS-Folder in ten lines
of Object
> Rexx code using the SOM - system object model - support! Powerful stuff.)
> The source code of IBM Object Rexx got handed over to the non-profit SIG Rexx Language
> (, which has been releasing opensource versions under the name
of "Open Object
> Rexx (ooRexx)" ever since.
> I use ooRexx to teach Business Administration students oo-programming from zero knowledge
> programming Windows, MS Office, Linux, MacOSX, OpenOffice, platform independent GUIs
(awt, swing,
> JavaFX) in *one* semester!
> Currently the official 5.0 beta (release quality) version of ooRexx is available for
Windows and
> Linux from <>.
> There is a MacOSX version that includes the latest ooRexx 5.0 beta together with the
Java bridge
> "BSF4ooRexx" at
> <>.
>> Is your scripting provider available somewhere?
> Yes, it is contained in the package BSF4ooRexx, which is a bridge from ooRexx to Java
and includes
> among other things special support for OpenOffice programming and can be obtained from
> <>. Unzip the archive,
go into the
> directory "bsf4oorexx/install" and then into "windows" or "linux" and run the "install"
script. If
> the installer sees OOo installed, it will linstall the ooRexx script provider. (If you
change the
> AOO installation or Java, then run "BSF4ooRexx -> Installation -> Reinstall".)
> Note: on Windows you need to make sure to have the same bitness as AOO (assuming 32-bit
> installation) for ooRexx and Java (you can install Java 8 for 32-bit in addition).
> Once installed use the "BSF4ooRexx" menu and pick the option "Samples" and open the "index.html"
> file, which gives brief explanations of the samples. Use the link "OOo" to get into the
OOo related
> samples (there are many samples that demonstrate how to use OOo writer, calc and impress).
> Also, if you program for OOo and like to learn about the definitions of UNO classes,
you could use
> the supplied "UNO_API_info.rxo", which can be used from any other programming/scripting
> Choose the "BSF4ooRexx" menu then the option "Utilities", go into "OOo/UNO_API_info".
Look at the
> file "read-me-UNO_API_info.html" which shows and explains the GUI interface and how to
use this
> ooRexx utilitiy from OOo Basic, Java, JavaScript, ooRexx and Python via UNO Dispatch.
> ---
> To learn about BSF4ooRexx you could go through my PDF slides at
> <>, where
> <AutoJava-BSF4ooRexx-04-OOo-ACE12.pdf> explains OOo programming.
> An introduction to ooRexx is given in the slides at
> <>, the PDF slides starting
with "ooRexx".
> If you have any questions related to ooRexx, BSF4ooRexx and/or UNO/OOo support, please
let me know.
> Have fun :)

Thanks! That's a lot of useful information.
It will take me some time to read (and understand) it... ;-)


> ---rony
> P.S.: The LO-adjusted provider support will be in the next beta of BSF4ooRexx which I
plan for the
> beginning of July.
>>> Now, installing that package on her machine the scripts work from outside of
LO flawlessly, however
>>> ooRexx does not get registered as another macro language in LO (missing from
the "Macro" menu).
>>> After researching this issue for quite some time now, it turns out that LO removed
a method in
>>> ClassLoaderFactory and changed the signature of the remaining method by removing
the throws clause,
>>> causing a need to compile the script language provider against OOo's ScriptFramework.jar,
if the
>>> script provider is to run against OOo, and having the need to compile it separately
against LO's
>>> version of ScriptFramework.jar, which is a PITA.
>>> In the case that there are other script provider programmers hanging around,
this is what I did in
>>> order to get a single version that runs also against LO, if there is a need to
>>> ClassLoaderFactory (maybe in the XScript implementation part):
>>>          ... cut ...
>>>           // instead of: cl = ClassLoaderFactory.getURLClassLoader( metaData
>>>           // load and run the method dynamically at runtime:
>>>           Class clfClz=Class.forName("");
>>>           Class smdClz=Class.forName("");
>>>           Method meth =clfClz.getMethod("getURLClassLoader", new Class<?>[]{smdClz}
>>>           cl=(ClassLoader) meth.invoke(null,  new Object  []{metaData});
>>>          ... cut ...   
>>> Again, this is just a side note for other script provider implementors who get
hit by this LO
>>> pecularity.
>>> Also: in the "description.xml" deployment file make sure that  the element
>>> " has a value "3.4" or higher (cf.
>>> <>),
such that the extension is
>>> not regarded as "legacy" by LO.
>>> In the end, with the above changes, the ooRexx scripting provider again gets
accepted as a macro
>>> language for LO.
>>> The reference remains OOo, which has been working in all other aspects of the
Macro menu (run, edit,
>>> making the installed macros available etc.) as per the specifications, whereas
LO has some problems
>>> in that area (shared scripts not showing up, listing of the script language in
the menu disappears,
>>> if the menu got used, still user macros remain visible and executable).
>>> ---rony
> ---------------------------------------------------------------------
> To unsubscribe, e-mail:
> For additional commands, e-mail:

View raw message