LibreOffice5(25)MRI - UNO Object Inspection Tool:その1

2016-02-12

旧ブログ

t f B! P L

前の関連記事:LibreOffice5(24)unoinsp.py:出力を抑制するインターフェイスの指定方法を追加


LibreOffice(44)UNOオブジェクトの属性3:Writerドキュメントに出力のコメントでもお勧めされたインスペクタのMRIを使ってみます。linuxBean14.04(83)LibreOfiice5.0.2のインストールでやったlinuxBean14.04のLibreOffice5.0.2.2にインストールします。

MRIのダウンロードとインストール


MRI - UNO Object Inspection Tool | Apache OpenOffice Extensionsの右にある「Download extension」をクリック。

MRI-1.3.1.oxtファイルがダウンロードされました。

LibreOfficeを起動してツール→拡張機能マネージャー。

「追加」ボタンをクリック。

MRI-1.3.1.oxtファイルを選択。


ライセンス条項を確認したら「許可」。


LibreOfficeを再起動してインストール完了です。

ツール→アドオン→MRI、で開いているドキュメントをインスペクトする



ツール→アドオン→MRI。

この方法ではXDesktopインターフェイスのgetCurrentComponent()で得られたオブジェクトに対してインスペクトした結果が表示されます。

MRI<-selectionの場合はgetCurrentComponent().getCurrentSelection()で得られたオブジェクトに対してインスペクトした結果になります。

Writerのドキュメントを開いた状態でツール→アドオン→MRI、とやってみます。


これはXSCRIPTCONTEXT.getDocument()で得られたWriterドキュメントに対してインスペクトした結果になります。

それぞれのタブにはこのオブジェクトがもっているすべてのプロパティ、メソッド、インターフェイス、サービスが一覧にされています。

Toolsメニューの設定


まずToolsメニューからMRIに関する設定を行います。

Abbreviatedのチェックをはずすと型情報の表示でcom.sun.starが省略されず表示されます。

Pseud Properyにチェックをつけていると、getやsetから始まるメソッドで取得や設定できる値もプロパティとして表示してくれます。

例えばgetArgs()メソッドがあるとPropertiesタブにArgsというPseudプロパティが表示されます。

MethodsタブのgetArgs()メソッドは表示されたままです。

このチェックは外して使うことにしました。

ただ、これはチェックを外しても次回起動するとチェックが入ってしまいますの毎回外さないといけません。

Show Labelsのチェックをはずすと各タブの先頭行の項目名の表示が省略されます。


Codeという項目がありこれのCodeにチェックが入っているとウィンドウの下の枠に選択した言語のコードが表示されます。

うーん。なにのコードを表示しているのかよくわかりません。

これもチェックは外すことにしました。

Tools→Configurationの設定



OpenOffice.org SDK Directoryのhttp://api.openoffice.org/をhttp://api.libreoffice.org/に書き換えるとLibreOfficeのAPIリファレンスに繋がるかと期待しましたがダメでした。

IDL reference is generated by Doxygenにチェックつけてもダメでした。

ブラウザはlinuxBean14.04(99)Chromeに代わってChromiumのインストールのChromiumに変更しました。

それ以外はデフォルトのままです。

サービスタブ


Services_ja · hanya/MRI Wiki · GitHub


サービスタブにはSupported Service NamesとAvailable Service Namesが出力されています。

Supported Service NamesはオブジェクトがサポートしているXServiceInfoサービスのでgetSupportedServiceNames()得られたものです。

Available Service NamesはXMultiServiceFactoryインターフェイスのgetAvailableServiceNames()メソッド、XMultiComponentFactoryインターフェイスのgetAvailableServiceNames()メソッド、XContentEnumerationAccessインターフェイスのgetAvailableServiceNames()メソッドから得られたものです。

LibreOffice5(24)unoinsp.py:出力を抑制するインターフェイスの指定方法を追加のunoinsp.pyでみるとWriterドキュメントはXMultiServiceFactoryインターフェイスしかもっていませんので、Available Service Namesで得られたサービス名はcreateInstance()メソッドかcreateInstanceWithArguments()メソッドでインスタンス化できることになります。

試しにやってみるとcom.sun.star.form.component.DateFieldをcreateInstance()でインスタンス化できました。

コンポーネントコンテクストを渡してコンクストの伝播をするXMultiComponentFactoryではなくXMultiServiceFactoryを使っているのはコンポーネントコンテクストを渡すまでもなくコンテクストが自明だからでしょうか。

ざっとAvailable Service Names一覧をみたところドキュメントと強く関係するものばかりに見えます。

ちょっといまのところ私にはこれ以上の使い方はわかりませんがそのうち出てくるでしょう。

インターフェイスタブ


Interfaces_ja · hanya/MRI Wiki · GitHub

インターフェイスタブにはInterfacesとListenersの項があります。

これは単に「Listener」という名前で分類されているように思えます。

メソッドダブ


Methods_ja · hanya/MRI Wiki · GitHub


1行にメソッド名、引数、戻り値の型、所属するインーターフェイス名、例外名の順に出力されています。


メソッドの行をダブルクリックすると引数を入力するダイアログがでてきます。

文字列型はそのまま入力できますがそれ以外の型の場合は参照ボタンをクリックするとHistoryダイアログができます。


Historyの項目はここでは入力できませんでした。


Macro→bundle.py→Add css.uno.XComponentContext to the history、で現在開いているオブジェクトの型をHistoryに追加することができました。


メソッドに引数に入れたいのはインターフェイス名ではなくインスタンスなのですが、それの入れ方はいまのところわかりません。

「IDL Ref.」や「Ref.」ボタンをクリックするとウェブブラウザが起動しOpenOfficeのIDLリファレンスのページが開きます。

プロパティタブ


Properties_ja · hanya/MRI Wiki · GitHub


1行にプロパティ名、型、値、Info、Attr.、Handleの順に出力されています。

Tools→Pseud Propertyにチェックをつけているとgetやsetから始まるメソッドで取得や設定できる値もプロパティとしてその行にはInfo.にPseudと表示されます。

Attr.はどこから判断しているのかいまのところはわかりません。

Handleが何を表しているのかわかりません。

参考にしたサイト


MRI - UNO Object Inspection Tool | Apache OpenOffice Extensions
MRIのダウンロードサイト。

Home_ja · hanya/MRI Wiki · GitHub
MRIの使い方。

次の関連記事:LibreOffice5(26)MRI - UNO Object Inspection Tool:その2

ブログ検索 by Blogger

Translate

最近のコメント

Created by Calendar Gadget

QooQ