Top > OOoBasic > Generic > OOoBasicpkg

#contents

*OOo Basic マクロ配布パッケージ [#mc7875de]

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

**パッケージの作成 [#ldc8c1d9]

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

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

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

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

**パッケージの構成 [#r47e3ae7]

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

**パスワード保護されたパッケージ [#db402e26]

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

-パスワードを知らなくてもマクロの実行はできる

-パスワードを知らないとマクロの内容を閲覧、編集できない

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

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

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

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

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

**メニューとツールバー [#s1932f91]

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>



***メニューの追加 [#e46987e6]

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


***ツールバーの追加 [#uf500d19]

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

***設定項目 [#kc4e9deb]

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

:<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&amp;location=application</value>|OpenOffice.org Basic のマクロを実行するようにするにはこのように記述します。vnd.sun.star.script: から始めて、ライブラリ名.モジュール名.サブルーチン名とし、さらに ?language=Basic&amp; 次に、マクロのある場所 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 を指定しています。複数あるときにはコロン : で区切ります。

**メニューアイコン [#s99a9144]

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

などとします。


**設定ファイル [#y6863ab2]

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

&ref(Addons.xcu);
**情報 [#s8bcc232]

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

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

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