Top > OOoBasic > Generic > OOoBasicpkg

OOo Basic マクロ配布パッケージ Edit

OOo Basic のマクロを配布するときのパッケージの作り方。OpenOffice.org 2.0 から、OOo Basic のライブラリを uno パッケージとして保存できるようになりました。

パッケージの作成 Edit

まず、配布するライブラリを用意します。

ツールメニュー - マクロ - マクロの管理 - OpenOffice.org Basic で開くダイアログから、管理ボタンを押して OpenOffice.org Basic マクロの管理ダイアログを開きます。

ライブラリタブを選択して、パッケージを作成したいライブラリを選択します。そして、Export ボタンをクリック。Export as package を選択して OK ボタンを押します。

パッケージを保存すると、名前に uno.pkg が付いた名前でパッケージが保存されます。

パッケージの構成 Edit

uno.pkg は zip ファイルなので、名前を uno.pkg.zip などとしてやると圧縮ファイルを解凍できます。

パスワード保護されたパッケージ Edit

パスワードで保護されたパッケージを作成することもできます。注意点は以下の2点です。

  • パスワードを知らなくてもマクロの実行はできる
  • パスワードを知らないとマクロの内容を閲覧、編集できない

マクロの内容を知られたくないときにはパスワードで保護したパッケージにするといいでしょう。

パッケージを Export ボタンで保存するまえに、パスワードボタンをクリックしてライブラリをパスワードでロックします。あとは、パッケージのエクスポートと同じ方法で保存します。

これでパスワードロックされたパッケージが作成できます。

パスワードで保護したパッケージはパッケージマネジャーからインストールすることができます。実行するときには、ツールメニュー - マクロ - マクロの実行から行います。マクロの管理 - OpenOffice.org Basic からは実行できません。

パスワード保護された uno パッケージには "Module1.pba" といったようなコンパイル済みのバイナリが保存されます。パスワードがなければ内容を見ることはできません。

メニューとツールバー Edit

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>

メニューの追加 Edit

ツールメニューの一番下にアドオン用のメニュー項目が用意されていますので、そこに新しくメニューを追加するファイルです。次のような内容にします。日本語などを含める際には文字コードを 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&amp;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>

ツールバーの追加 Edit

ツールバーにも追加できます。アドオンメニューのツールバーにアイコンが追加できます。メニューバー設定と同じファイル 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&amp;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>

設定項目 Edit

各設定項目について説明します。

<node oor:name="Submenu">
サブメニューエントリーを指定します。ツールバーでは使えません。
<node oor:name="m1" oor:op="replace">
メニューエントリーです。m1 の部分を適当に付けます。他のメニューと同じにならないようにする必要があります。
<prop oor:name="URL" oor:type="xs:string">
メニューを選んだときに実行するコマンドを次の value タグで指定します。
<value>vnd.sun.star.script:Hello.Module1.Main?language=Basic&location=application</value>
OpenOffice.org Basic のマクロを実行するようにするにはこのように記述します。vnd.sun.star.script: から始めて、ライブラリ名.モジュール名.サブルーチン名とし、さらに ?language=Basic& 次に、マクロのある場所 location=application を指定します。document を指定することはほとんどないと思います。
<prop oor:name="Title" oor:type="xs:string">
メニューに表示する文字列を次の value タグで指定します。
<value xml:lang="ja">Hello(~H)</value>
日本語用のメニューに表示する文字列です。
<prop oor:name="Target" oor:type="xs:string">
メニューが実行されたときのターゲットフレームを指定します。
<value>_self</value>
普通は、ターゲットフレームには _self を指定します。
<prop oor:name="Context" oor:type="xs:string">
メニューを表示するドキュメントの種類を指定します。この項目を追加しても動作していない気がします (OOo 2.0.3)。
<value>com.sun.star.sheet.SpreadsheetDocument</value>
ここでは Calc を指定しています。複数あるときにはコロン : で区切ります。

メニューアイコン Edit

メニューのアイコンを 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">

などとします。

設定ファイル Edit

例として設定ファイル Addons.xcu を置いておきます。コピーして使用すると楽です。

fileAddons.xcu

情報 Edit

設定ファイルに関しては以下のファイルを参照してください。

OpenOffice.org 2.0\share\registry\schema\org\openoffice\Office\Addons.xcu

Attach file: fileAddons.xcu 174 download [Information]

Reload   New Lower page making Edit Freeze Diff Upload Copy Rename   Front page List of pages Search Recent changes Backup   Help   RSS of recent changes