Top > Extensions > MultiComp1
* 複合型拡張機能 [#i8e0ab11]
拡張機能に入れることができるのは一種類に限りません。コンフィグレーション、テンプレート、マクロをひとまとめにしてインストールできます。

ここでは一例として、テンプレートと構成ファイルをまとめて入れることでデフォルトのテンプレートを差し替える拡張機能を作成します。

以下のページも参照してください。
- [[テンプレート拡張機能>Extensions/Template]]
- [[コンフィグレーション拡張機能>Extensions/Configuration]]

#contents

** 利用目的 [#w313a436]
どういった目的でこのデフォルトテンプレート設定を行うのでしょうか?

禁則処理や文字数、両端揃えといった項目が自分の設定に合わない場合や多数の人に変更してもらう場合などに拡張機能として配布すると簡単に設定できます。

自分だけで使用する場合でも、環境が複数あるといったときには容易に持ち運び、設定できます。

多くの人に配布する用途の場合、管理者向けになります。
** パッケージ [#p9e44e4a]
&ref(DefaultTemplateWriter01.oxt);
** ディレクトリ構成 [#x5183296]
拡張機能パッケージ内の構成は次のようになります。

&ref(multicomp-1.png,nolink);

まず、一つ作業用ディレクトリを作成してその中に作成したファイルを保存していくとあとが楽になります。
** テンプレートを作成する [#nc0f93a9]
デフォルトにしたいテンプレートファイルを作成します。適当な設定にしたものを容易してどこかに保存しておきます。保存時にファイルの種類をテンプレートにしておきます。

** テンプレート用表示 [#e8dc90a1]
テンプレートファイルを入れたディレクトリ名をテンプレートダイアログで表示する名称を設定します。

上記のディレクトリ構成の groupuinames.xml ファイルを作成して次のような内容を入力、UTF-8 エンコードで保存します (日本語が入っているときには UTF-8 を使用してください)。

groupuinames.xml
#code(){{
<?xml version="1.0" encoding="UTF-8"?>
<groupuinames:template-group-list xmlns:groupuinames="http://openoffice.org/2006/groupuinames">
 <groupuinames:template-group groupuinames:name="files"
groupuinames:default-ui-name="デフォルトテンプレート" />
</groupuinames:template-group-list>
}}

files ディレクトリが表示ではデフォルトテンプレートとなるように設定しています。ディレクトリ名を日本語などにしないでください。

** テンプレートパス用コンフィグレーション [#p238b4c4]
テンプレートファイルの場所を設定するコンフィグレーションファイルを作成します。

Paths.xcu
#code(xcu){{
<?xml version='1.0' encoding='UTF-8'?>
<oor:component-data oor:package="org.openoffice.Office" oor:name="Paths" 
xmlns:install="http://openoffice.org/2004/installation" 
xmlns:oor="http://openoffice.org/2001/registry" 
xmlns:xs="http://www.w3.org/2001/XMLSchema" 
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
  <node oor:name="Paths">
    <node oor:name="Template" oor:op="fuse">
      <node oor:name="InternalPaths">
        <node oor:name="%origin%/template" oor:op="fuse"/>
      </node>
    </node>
  </node>
</oor:component-data>
}}

拡張機能パッケージにある template ディレクトリを新しいテンプレートパスとして設定します。
** デフォルトテンプレート用コンフィグレーション [#c31e395d]
テンプレートのデフォルト設定を変更するコンフィグレーションファイルを作成します。

Setup.xcu
#code(xcu){{
<?xml version="1.0"?>
<oor:component-data 
xmlns:oor="http://openoffice.org/2001/registry" 
xmlns:install="http://openoffice.org/2004/installation" 
xmlns:xs="http://www.w3.org/2001/XMLSchema" 
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
oor:name="Setup" 
oor:package="org.openoffice">
  <node oor:name="Office">
   <node oor:name="Factories">
    <node oor:name="com.sun.star.text.TextDocument" oor:op="fuse">
     <prop oor:name="ooSetupFactoryTemplateFile" oor:type="xs:string">
      <value>%origin%/template/files/WriterDefault.ott</value>
     </prop>
     </node>
   </node>
  </node>
</oor:component-data>
}}

ファイルパスの設定は下記補足参照。
** パッケージ内容の情報 [#g0f1a98d]
拡張機能マネージャに処理してほしいファイルを知らせるために META-INF/manifest.xml ファイルを作成します。

manifest.xml
#code(){{
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE manifest:manifest PUBLIC "-//OpenOffice.org//DTD Manifest 1.0//EN" "Manifest.dtd">
<manifest:manifest xmlns:manifest="http://openoffice.org/2001/manifest">
 <manifest:file-entry manifest:media-type="application/vnd.sun.star.configuration-data"
 manifest:full-path ="Paths.xcu"/>
 <manifest:file-entry manifest:media-type="application/vnd.sun.star.configuration-data"
 manifest:full-path ="Setup.xcu"/>
</manifest:manifest>
}}

Paths.xcu および Setup.xcu ファイルを種類 application/vnd.sun.star.configuration-data としてインストールさせます。

** パッケージ作成 [#e57406e6]
作成したファイルを上記のようなディレクトリ構成に配置してください。
その後、ディレクトリの一番上でファイルを選択して ZIP アーカイブを作成してください。このとき、全部のファイルを入れたディレクトリを選択してアーカイブを作成してはいけません。

作成した ZIP アーカイブのファイル名を適当な名前に変更してください。ファイルの拡張子は oxt にしておきます。

** インストール [#w9c7b7b9]
+ OpenOffice.org を起動して、メニューからツール - 拡張機能マネージャを選択します
+ 表示される拡張機能マネージャで「マイ拡張機能」を選択します
+ 「追加」ボタンを押します
+ 先ほど作成したファイルを選択、OK ボタンを押します

OpenOffice.org を一度再起動すると設定が有効になります。

** アンインストール [#s3fb6a8b]
+ OpenOffice.org を起動して、メニューからツール - 拡張機能マネージャを選択します
+ 表示される拡張機能マネージャで「マイ拡張機能」の横にある "+" マークをクリックして展開します
+ 先ほど作成した拡張機能名の項目を選択します
+ 「削除」ボタンを押します

** 問題点 [#x4f6851c]
この拡張機能には重大な問題があります。

ユーザー設定に ooSetupFactoryTemplateFile 設定があると設定が有効にならないことです。理由は[[コンフィグレーション拡張機能>Extensions/Configuration]]を参照。

これは、一度でもユーザーが該当するドキュメントの種類のデフォルトテンプレート設定を変更したことがあるとき、設定が有効になりません (有効になっているが、ユーザーの設定が優先されてしまう)。

一度でも設定したことがあり、元に戻したとしても同じです。

利用できるようにするにはユーザー設定中の該当する種類の ooSetupFactoryTemplateFile 設定を削除する必要があります。

(ノードを fuse にせずに replace にしないでください。ユーザー設定が壊れてしまいます。起動時に「言語が判断できずに起動に失敗しました」というような英語のメッセージが出た場合、設定が一部壊れている可能性があります。拡張機能により配置されたコンフィグレーションのファイルを手動で書き直して対処できます)
** 補足 [#cb4eb4d3]
補足説明。

** テンプレートパス設定 [#zb46244d]
Setup.xcu ファイル中で指定するテンプレートファイルのパス設定の方法。

該当するドキュメントの種類のノードの ooSetupFactoryTemplateFile の値にテンプレートファイルのパスを指定します。

%origin% は Setup.xcu ファイルのパスに置換されます。指定するテンプレートファイルはそこから /template/files ディレクトリにファイル名 WriterDefault.ott として入れてあります。

正しく指定しないと拡張機能インストール時にエラーが出ます。
#code(xcu){{
    <node oor:name="com.sun.star.text.TextDocument" oor:op="fuse">
     <prop oor:name="ooSetupFactoryTemplateFile" oor:type="xs:string">
      <value>%origin%/template/files/WriterDefault.ott</value>
     </prop>
     </node>
}}

*** %origin% を使う理由 [#r5c352da]
普通のテンプレートファイルの指定は "$(user)/template/Honyo.ott" のように簡単にできます。しかし、拡張機能でインストールされたテンプレートファイルの指定は次のようになります (長いので改行を入れました)。
 vnd.sun.star.expand:$UNO_USER_PACKAGES_CACHE/uno_packages/48.tmp_
 /DefaultTemplateWriter01.oxt/template/files/WriterDefault.ott
ここで、vnd.sun.star.expand:$UNO_USER_PACKAGES_CACHE の部分はユーザー設定の user/uno_packages/cache に置換されます。パス中に "48.tmp_" というディレクトリ名が含まれています、これは拡張機能インストール時にランダムで作成される名前のため、インストール前には知ることができません。

ここでは Setup.xcu ファイルを拡張機能の一番上のディレクトリに入れたので、%origin% は次のように展開されます。

 vnd.sun.star.expand:$UNO_USER_PACKAGES_CACHE/uno_packages/48.tmp_
 /DefaultTemplateWriter01.oxt

(48.tmp_ の部分はインストール時に決まります)

%origin% を使わなければこのような指定ができません。また、拡張機能でインストールされたテンプレートファイルを別の拡張機能に含めた Setup を使用してデフォルトのテンプレートに指定できません。
*** ファイルの種類と設定項目 [#t6ba58ff]
例では Writer ドキュメントで行いました。その他のドキュメントのデフォルトテンプレートを変更できます。

ドキュメントの種類に応じてノード名を変更します。プロパティ名ooSetupFactoryTemplateFile は同じです。

|種類|ノード名|
|Writer|com.sun.star.text.TextDocument|
|Calc|com.sun.star.sheet.SpreadsheetDocument|
|Impress|com.sun.star.presentation.PresentationDocument|
|Draw|com.sun.star.drawing.DrawingDocument|
|Writer/Web (HTML)|com.sun.star.text.WebDocument|



*** 複数のデフォルトテンプレートの変更 [#nc7c811f]
一つの拡張機能でいくつもの種類のデフォルトテンプレートを変更することもできます。

+ 指定するテンプレートを全て用意する
+ テンプレートをカテゴリに分ける (カテゴリ一つでもかまいません)
+ デフォルトテンプレートを指定する

Setup.xcu ファイル中で複数の項目を作成してそれぞれテンプレートを指定します。

以下の例では Writer および Calc にデフォルトのテンプレート設定を行っています。

#code(xcu){{
<?xml version="1.0"?>
<oor:component-data 
xmlns:oor="http://openoffice.org/2001/registry" 
xmlns:install="http://openoffice.org/2004/installation" 
xmlns:xs="http://www.w3.org/2001/XMLSchema" 
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
oor:name="Setup" 
oor:package="org.openoffice">
  <node oor:name="Office">
   <node oor:name="Factories">
    <node oor:name="com.sun.star.text.TextDocument" oor:op="fuse">
     <prop oor:name="ooSetupFactoryTemplateFile" oor:type="xs:string">
      <value>%origin%/template/files/WriterDefault.ott</value>
     </prop>
     </node>
    <node oor:name="com.sun.star.sheet.SpreadsheetDocument" oor:op="fuse">
     <prop oor:name="ooSetupFactoryTemplateFile" oor:type="xs:string">
      <value>%origin%/template/files/CalcDefault.ott</value>
     </prop>
     </node>
   </node>
  </node>
</oor:component-data>
}}

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