Hi there,

got a few more minutes, so enclosed you'll find the ooRexx version/rendering of the C++/Java version of invoking a script in another language, retrieve its return value and display it in the writer component:

------------------- cut here ------------------
oDesktop = UNO.createDesktop() -- get the default UNO Desktop service object xComponentLoader = oDesktop~XDesktop~XComponentLoader -- get the componentLoader interface

  -- load an empty writer component
oWriterComponent = xComponentLoader~loadComponentFromURL("private:factory/swriter", "_blank", 0, .uno~noProps)

  -- get the script provider from the writer component
oSP=oWriterComponent~XScriptProviderSupplier~getScriptProvider
  -- define the script we wish access to
oScript=oSP~getScript("vnd.sun.star.script:Tools.Misc.GetProductname?language=Basic&location=application")

  -- invoke the script: first define arguments, then invoke it
  -- create 1-dimensional Java array of type Object
arguments =.bsf~bsf.createArray(.bsf4rexx~Object.class, 1)
  -- create 2-dimensional Java array of primitive datatype "short"
indexes   =.bsf~bsf.createArray(.bsf4rexx~short, 1, 1)
  -- create 2-dimensional Java array of type Object
outparam  =.bsf~bsf.createArray(.bsf4rexx~Object.class, 1, 1)
  -- invoke script to get product name (includes version information)
pname=oScript~invoke(arguments, indexes, outparam)

  -- get XTextDocument interface, text and set it to "product name"
oWriterComponent~XTextDocument~getText~setString(pname)

::requires UNO.CLS   -- load ooRexx support for UNO
------------------- cut here ------------------

---rony

P.S.: Line comments start with two consecutive dashes: --


Rony G. Flatscher wrote:


would you have a Java rendering of that interesting code-snippets handy by any chance?

---rony


Well, fulfilling my own request :) here's an example in Java of running a macro via the scripting framework:

------------------- cut here ------------------
class Test {
  public static void main (String args[]) {
// excerpted from "HardFormatting.java" from the OOo development package
    com.sun.star.frame.XDesktop xDesktop = null;
    com.sun.star.lang.XMultiComponentFactory xMCF = null;
    try {
      com.sun.star.uno.XComponentContext xContext = null;

      // (1) bootstrap the UNO runtime environment
      xContext = com.sun.star.comp.helper.Bootstrap.bootstrap();

      // (2) get the service manager
      xMCF = xContext.getServiceManager();
      if( xMCF != null )
      {
        System.out.println("Connected to a running office ...");
        // (3) start up an instance of office
        Object oDesktop = xMCF.createInstanceWithContext(
            "com.sun.star.frame.Desktop", xContext);
        // (4a) get the XDesktop interface object
        xDesktop = (com.sun.star.frame.XDesktop)
            com.sun.star.uno.UnoRuntime.queryInterface(
                com.sun.star.frame.XDesktop.class, oDesktop);

        // (4b) get the desktop's component loader interface object
        com.sun.star.frame.XComponentLoader xComponentLoader =
            (com.sun.star.frame.XComponentLoader)
                com.sun.star.uno.UnoRuntime.queryInterface(
                    com.sun.star.frame.XComponentLoader.class, xDesktop);

            // create an empty text ("swriter") document
com.sun.star.beans.PropertyValue xEmptyArgs[] = // empty property array
            new com.sun.star.beans.PropertyValue[0];

// (5) create an empty word processor ("swriter") component (document)
        com.sun.star.lang.XComponent xComponent =       // text document
xComponentLoader.loadComponentFromURL("private:factory/swriter", "_blank", 0, xEmptyArgs);

com.sun.star.script.provider.XScriptProvider oSP= (com.sun.star.script.provider.XScriptProvider)
            ( ((com.sun.star.script.provider.XScriptProviderSupplier)
                com.sun.star.uno.UnoRuntime.queryInterface(
com.sun.star.script.provider.XScriptProviderSupplier.class, xComponent)).getScriptProvider()
            );

           // load and run script
com.sun.star.script.provider.XScript oScript=oSP.getScript("vnd.sun.star.script:Tools.Misc.GetProductname?language=Basic&location=application");
        System.out.println("oScript=["+oScript+"]");

java.lang.Object arguments [] = {null} , // single-dimensional array outparam [][] = { {null} }; // two-dimensional array short indexes[][]={ {0} }; // two-dimensional array

        Object pname= oScript.invoke(arguments, indexes, outparam);

           // insert product name into text document
com.sun.star.text.XTextDocument xTextDoc = (com.sun.star.text.XTextDocument)
            com.sun.star.uno.UnoRuntime.queryInterface(
                com.sun.star.text.XTextDocument.class, xComponent);

        com.sun.star.text.XText xText = (com.sun.star.text.XText)
            com.sun.star.uno.UnoRuntime.queryInterface(
                com.sun.star.text.XText.class, xTextDoc.getText());

        xText.setString((String) pname);

      }
      else
          System.out.println("Not able to create desktop object.");
    }
    catch( Exception e) {
        e.printStackTrace(System.err);
        System.exit(1);
    }
    System.err.println("Successful run.");
    System.exit(0);
  }
}
------------------- cut here ------------------

---rony


---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]


---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to