LibreOffice(6)IDLリファレンスでOpenOffice.org APIを知る

ラベル:

前の関連記事:LibreOffice(5)PythonでLibreOfficeが動く仕組み:UNO


StarOfficeの販売会社をSun Microsystemsが買収してそのStarOfficeをもとにOpenOffice.orgプロジェクトを開始し、そのOpenOffice.orgがApche OpenOfficeとLibreOfficeに分岐しました。この経過がわかっているとIDLリファレンスにでてくる名前の由来がちょっとわかるかもしれません。

OpenOffice.org API $$$\subseteq$$$ UNO IDL


LibreOfficeのそれぞれの機能がUNOの組み合わせで成り立っているので、UNOのAPIであるUNOIDLのなかにLibreOfficeのAPIが含まれることになります。

現在のところUNOIDLにLibreOffice以外のAPIはないのでOpenOffice.org API=UNO IDLとなります。

UNOIDLはIDL referenceのGlobal Module com から始まります。


2行目にこのモジュールにある項目へのリンクがあります。

モジュールcomにはNestd Modulesの項目しかありません。

モジュールcomにはsunというモジュールが入れ子になっているという意味です。

モジュールsunにはモジュールstarが入れ子になっています。

このモジュールstar以下がLibreOfficeに関するIDLになります。

モジュールの表記は入れ子になったモジュールをドットで繋いで表現します。

モジュールstarはcom.sun.starと表記します。

sunはSun Microsystems、starはStarOfficeに由来しているのでしょう。

今後UNOを使ったアプリができるとcomの下に新しいIDLが追加される日がくるでしょう。

XSCRIPTCONTEXTの情報をIDLリファレンスでみる


手始めにLibreOffice(4)PyCharmからLibreOfficeを動かす(オートメーション)で使ったXSCRIPTCONTEXTの情報をIDLリファレンスで見てみます。

unopy.pyの4行目に着目します。
from com.sun.star.script.provider import XScriptContext
これはcom.sun.star.script.providerモジュールからXScriptContextを導入するという意味です。

とうことでcom.sun.starからscriptproviderとNested Modulesをたどっていきます。


com.sun.star.script.providerモジュールのページにたどりつきました。

上のINTERFACESをクリックしてInterfacesの項目に飛びます。

なぜInterfacesの項目にいきなり飛ぶのかというとXScriptContextのようにXから始まるIDLはすべてインターフェースと決まっているからです。


XScriptContextが2番目にありますね。

XScriptContext This interface is provided to scripts, and provides a means of access to the various interfaces which they might need to perform some action on a document. It is required to be passed as the first argument for any Java scripts.

Java scriptsがうんぬんと書いてありますがPythonスクリプトでも同じように使えます。

これがUNOのうまい仕組みなのです。

XScriptContextのリンクをクリックするとLibreOffice(4)PyCharmからLibreOfficeを動かす(オートメーション)で使ったgetDocument、getDesktop、getComponentContextのメソッドの解説が書いてありますね。


ノ( ̄0 ̄;)\オー!!ノー!!!!

LibreOffice 4.2 SDK API Referenceがちゃんとありました


IDLリファレンスのXScriptContextの前にunpublished と書いてあるのでLibreOfficeで実装されているのにおかしいな、と思って調べたらなんとLibreOffice4.2のLibreOffice 4.2 SDK API Referenceというのがちゃんとありました。


とてもあっさりしたメインページですが上のNamespacesを選択するとAPIをたどっていけます。

上のIDL Referenceでみたのと同じXScriptContextのページです。

LibreOffice: XScriptContext Interface Reference


これにはunpublished とは書いてないですね。

import "XScriptContext.idl"と書いてありますがLibreOffice(4)PyCharmからLibreOfficeを動かすのunopy.pyではIDL Referenceの書き方import XScriptContextでちゃんと動きました。

逆にimport "XScriptContext.idl"import "XScriptContext"import XScriptContext.idlではこの部分にエラーがでてきて動きませんでした。

これはソフトウェア開発キット(SDK)のAPIなのでコンパイル前の書式ということかもしれません。

XScriptContext.idlをクリックするとその中身が見れます。

LibreOfficeをインストールしたC:\Program Files (x86)\LibreOffice 4\内を検索してもXScriptContext.idlというファイルはでてきませんでした。

ダウンロード » LibreOffice : 自由なオープンソースのオフィススイートから「ソフトウェア開発キット(SDK)」ダウンロードしてインストールするとsdkフォルダの中にXScriptContext.idlというファイルがありましたが、sdkインストール後でもimport "XScriptContext.idl"ではやはりエラーがでました。

ネット上の情報はOpenOffice.org APIつまりIDLリファレンスへリンクしているものが多いです。

IDL RefereceはLibreOffice 4.2 SDK API Referenceとほぼ同じのようですが、LibreOffice 4.2 SDK API ReferenceについてくるInheritance diagramがわかりやすいのでこちらの方を参照していこうと思います。

参考にしたサイト


API - Apache OpenOffice Wiki
OpenOffice.org API=UNO IDLなのでOpenOffice.org APIはIDL referenceで調べます。

Module star
OpenOffice.org APIリファレンスであるIDL referenceの入り口。

IDL Reference を理解する - N->N->N
IDL Referenceの解説。

LibreOffice 4.2 SDK API Reference
OpenOffice.org APIはLibreOfficeではLibreOffice 4.2 SDK APIに引き継がれてるようです。

ダウンロード » LibreOffice : 自由なオープンソースのオフィススイート
「ソフトウェア開発キット(SDK)」をインストールするとLibreOffice 4.2 SDK APIローカルで見れます。

次の関連記事:LibreOffice(7)Pythonマクロ独習の資料を集める

PR

0 件のコメント:

コメントを投稿