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! ;-)
(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 Association (http://www.rexxla.org), 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 to 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 <https://sourceforge.net/projects/oorexx/files/oorexx/5.0.0beta/>. There is a MacOSX version that includes the latest ooRexx 5.0 beta together with the Java bridge "BSF4ooRexx" at <https://sourceforge.net/projects/bsf4oorexx/files/beta/20180312/b4r_600_500_64Bit_macosx-20180324.zip/download>. > 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 <https://sourceforge.net/projects/bsf4oorexx/files/beta/20180312/>. 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 language. 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 <http://wi.wu.ac.at/rgf/wu/lehre/autojava/material/foils/>, where <AutoJava-BSF4ooRexx-04-OOo-ACE12.pdf> explains OOo programming. An introduction to ooRexx is given in the slides at <http://wi.wu.ac.at/rgf/wu/lehre/autowin/material/foils/>, 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 :) ---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 use >> 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("com.sun.star.script.framework.provider.ClassLoaderFactory"); >> Class >> smdClz=Class.forName("com.sun.star.script.framework.container.ScriptMetaData"); >> 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 >> "OpenOffice.org-minimal-version has a value "3.4" or higher (cf. >> <https://wiki.documentfoundation.org/Development/Extension_Development>), >> 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: [email protected] For additional commands, e-mail: [email protected]
