OOo Basic マクロ配布パッケージ
OOo Basic のマクロを配布するときのパッケージの作り方。OpenOffice.org 2.0 から、OOo Basic のライブラリを uno パッケージとして保存できるようになりました。 パッケージの作成
まず、配布するライブラリを用意します。 ツールメニュー - マクロ - マクロの管理 - OpenOffice.org Basic で開くダイアログから、管理ボタンを押して OpenOffice.org Basic マクロの管理ダイアログを開きます。 ライブラリタブを選択して、パッケージを作成したいライブラリを選択します。そして、Export ボタンをクリック。Export as package を選択して OK ボタンを押します。 パッケージを保存すると、名前に uno.pkg が付いた名前でパッケージが保存されます。 パッケージの構成
uno.pkg は zip ファイルなので、名前を uno.pkg.zip などとしてやると圧縮ファイルを解凍できます。 パスワード保護されたパッケージ
パスワードで保護されたパッケージを作成することもできます。注意点は以下の2点です。
マクロの内容を知られたくないときにはパスワードで保護したパッケージにするといいでしょう。 パッケージを Export ボタンで保存するまえに、パスワードボタンをクリックしてライブラリをパスワードでロックします。あとは、パッケージのエクスポートと同じ方法で保存します。 これでパスワードロックされたパッケージが作成できます。 パスワードで保護したパッケージはパッケージマネジャーからインストールすることができます。実行するときには、ツールメニュー - マクロ - マクロの実行から行います。マクロの管理 - OpenOffice.org Basic からは実行できません。 パスワード保護された uno パッケージには "Module1.pba" といったようなコンパイル済みのバイナリが保存されます。パスワードがなければ内容を見ることはできません。 メニューとツールバー
OpenOffice.org Basic のパッケージを作成して、そのパッケージをインストールしてもメニューに項目を追加したり、ツールバーを追加したりできません。 そこで、パッケージに Addons.xcu ファイルを追加してメニューに項目を追加したりできるようにします。パスワード保護されたライブラリのパッケージでも利用できます。 Addons.xcu ファイルの内容は次のようにします。 <?xml version='1.0' encoding='UTF-8'?> <oor:component-data xmlns:oor="http://openoffice.org/2001/registry" xmlns:xs="http://www.w3.org/2001/XMLSchema" oor:name="Addons" oor:package="org.openoffice.Office"> <node oor:name="AddonUI"> ここにメニューの追加やツールバーの追加設定を記述する </oor:component-data> メニューの追加
ツールメニューの一番下にアドオン用のメニュー項目が用意されていますので、そこに新しくメニューを追加するファイルです。次のような内容にします。日本語などを含める際には文字コードを UTF-8 にしておきます。 <node oor:name="AddonMenu"> <node oor:name="org.openoffice.addon.mytools" oor:op="replace"> <prop oor:name="Title" oor:type="xs:string"> <value xml:lang="en-US">Hello(~H)</value> <value xml:lang="ja">Hello.(~H)</value> </prop> <prop oor:name="Context" oor:type="xs:string"> <value>com.sun.star.sheet.SpreadsheetDocument</value> </prop> <node oor:name="Submenu"> <node oor:name="m1" oor:op="replace"> <prop oor:name="URL" oor:type="xs:string"> <value>vnd.sun.star.script:Hello.Module1.Main?language=Basic&location=application</value> </prop> <prop oor:name="Title" oor:type="xs:string"> <value xml:lang="en-US">Hello(~H)</value> <value xml:lang="ja">Hello(~H)</value> </prop> <prop oor:name="Target" oor:type="xs:string"> <value>_self</value> </prop> <prop oor:name="Context" oor:type="xs:string"> <value>com.sun.star.sheet.SpreadsheetDocument</value> </prop> </node> </node> </node> </node> </node> ツールバーの追加
ツールバーにも追加できます。アドオンメニューのツールバーにアイコンが追加できます。メニューバー設定と同じファイル Addons.xcu ファイルに書いておきます。 <node oor:name="OfficeToolBar"> <node oor:name="org.openoffice.addon.mytools" oor:op="replace"> <node oor:name="m1" oor:op="replace"> <prop oor:name="URL" oor:type="xs:string"> <value>vnd.sun.star.script:Hello.Module1.Main?language=Basic&location=application</value> </prop> <prop oor:name="Title" oor:type="xs:string"> <value xml:lang="en-US">Hello(~H)</value> <value xml:lang="ja">Hello(~H)</value> </prop> <prop oor:name="Target" oor:type="xs:string"> <value>_self</value> </prop> <prop oor:name="Context" oor:type="xs:string"> <value>com.sun.star.sheet.SpreadsheetDocument</value> </prop> </node> </node> </node> 設定項目
各設定項目について説明します。
メニューアイコン
メニューのアイコンを Addons.xcu ファイルで指定してやることも出来ます。 アイコンの指定の仕方は複数あります。 まずは、メニュー用の bmp ファイルを用意します。サイズは 16 x 16 pixel です。大きいアイコン用のイメージサイズは 26 x 26 pixel です。いつでもキレイに表示するためには両方必要です。色数 1,4,8,16,24 ビットのビットマップファイルが使用できます。透過色としてはマゼンタ (RGB = (255,0,255)) が使用できます。 作成した bmp ファイルには、16 pixel のものには horizontalmerge_16.bmp のように名前をつけます。26 pixel のものには horizontalmerge_26.bmp とします。ハイコントラスト用のものには horizontalmerge_16h.bmp のようにします。 Addons.xcu ファイルのメニュー項目には次のように指定します。 <prop oor:name="ImageIdentifier" oor:type="xs:string"> <value>%origin%/images/horizontalmerge</value> </prop> ImageIdentifier にアイコンファイルを指定します。このとき、%origin% とした部分がインストールされたパッケージのディレクトリ名となります。その中のファイルを指定していることになります。このとき、bmp ファイルの指定には _16.bmp などの部分を省いて指定します。 さらに、パッケージを作成するあとでアイコンファイルを一緒に入れておきます。 また、他の方法でもアイコンを入れることが出来ます。次のように Images ノードを追加してやります。 <node oor:name="Images"> <node oor:name="org.openoffice.addon.mytools" oor:op="replace"> <prop oor:name="URL" oor:type="xs:string"> <value>org.openoffice.addon.mytools.calc:HorizontalMerge</value> </prop> <node oor:name="UserDefinedImages"> <prop oor:name="ImageSmall" oor:type="xs:hexBinary"> <value>424df600000000000000760000002800000010000000100000000 10004000000000080000000120b0000120b0000000000000000000000000 00000008000008000000080800080000000800080008080000080808000c 0c0c0000000ff0000ff000000ffff00ff000000ff00ff00ffff0000fffff f00dddddddddddddddddddddddddddddddddd000000000000dddd0dddddd dddd0dddd0dddddddddd0dddd0dddddddddd0dddd0d0dddddd0d0dddd000 000000000dddd000000000000dddd0d0dddddd0d0dddd0dddddddddd0ddd d0dddddddddd0dddd000000000000ddddddddddddddddddddddddddddddd ddddddddddddddddddd</value> </prop> </node> </node> </node> バイトストリームでアイコンイメージを指定します。画像の読み込みには OOoBasic/Macros/readbyte を利用すると簡単です。 二つ目のアイコンイメージを追加するには、 <node oor:name="org.openoffice.addon.mytools.image2" oor:op="replace"> などとします。 設定ファイル
例として設定ファイル Addons.xcu を置いておきます。コピーして使用すると楽です。 情報
設定ファイルに関しては以下のファイルを参照してください。 OpenOffice.org 2.0\share\registry\schema\org\openoffice\Office\Addons.xcu |