前の関連記事: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からscript→providerと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ローカルで見れます。
0 件のコメント:
コメントを投稿