Top > Extensions > AddonsToolbar
* ツールバー [#cf63cbff]
ツールバーも拡張機能独自のツールバーを作成する、または特定の位置にボタンを追加することができます。

Apache OpenOffice 4.0 以降は [[../AddonsToolbar2]] 参照

#contents
***ツールバーの追加 [#l17f718a]
ツールバーは OfficeToolBar ノードに独自のノードを追加することで行います。

子ノードがメニュー項目への追加より一つ深くなっていることに注意。それ以外はメニュー項目の追加と同じです。

#code(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">
   <node oor:name="OfficeToolBar">
    <node oor:name="mytools.calc.annotation.OfficeToolBar" oor:op="replace">
     <node oor:name="a11_show1" oor:op="replace">
      <prop oor:name="Title" oor:type="xs:string">
       <value xml:lang="en-US">Show All</value>
       <value xml:lang="ja">コメントの全表示</value>
      </prop>
      <prop oor:name="URL" oor:type="xs:string">
       <value>vnd.sun.star.script:myts?language=Basic&amp;location=application</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>
      <prop oor:name="ImageIdentifier" oor:type="xs:string">
       <value>%origin%/icons/allshow</value>
      </prop>
     </node>
    </node>
   </node>
  </node>
 </oor:component-data>
}}

ツールバーボタンの順番はノード名によって決まります。上記では a11_show1 の部分によってソートされます。
***特定の位置への追加 [#q8392b73]
特定の位置へのボタンの追加は OfficeToolbarMerging ノードに項目を追加することで行います。

メニューの特定の位置への追加と同じような形になります。
#code(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">
   <node oor:name="OfficeToolbarMerging">
    <node oor:name="mytools.calc.annotation.AddonButton" oor:op="replace">
     <node oor:name="a11_show1" oor:op="replace">
      <prop oor:name="MergeToolBar">
       <value>standardbar</value>
      </prop>
      <prop oor:name="MergePoint">
       <value>.uno:Paste</value>
      </prop>
      <prop oor:name="MergeCommand">
       <value>AddAfter</value>
      </prop>
      <prop oor:name="MergeFallback">
       <value>AddLast</value>
      </prop>
      <prop oor:name="MergeContext">
       <value>com.sun.star.sheet.SpreadsheetDocument</value>
      </prop>
      <node oor:name="ToolBarItems">
       <node oor:name="btn_01" oor:op="replace">
        <prop oor:name="Title" oor:type="xs:string">
         <value xml:lang="en-US">Show All</value>
         <value xml:lang="ja">コメントの全表示</value>
        </prop>
        <prop oor:name="URL" oor:type="xs:string">
         <value>vnd.sun.star.script:Std.Mod.M1?language=Basic&amp;location=application</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>
        <prop oor:name="ImageIdentifier">
         <value>%origin%/icons/allexchange</value>
        </prop>
       </node>
      </node>
     </node>
    </node>
   </node>
  </node>
 </oor:component-data>
}}

|項目|説明|h
|MergeToolBar|追加するツールバー名を内部名で指定します。[[ツールバー名一覧>OOoBasic/Generic/toolbar#n55a7f3d]]などから探します。private:resource/toolbar/ の部分を省いて指定します。|
|MergePoint|追加する位置を指定します。|
|MergeCommand|追加する方法を指定します。AddAfter, AddBefore, Replace, Remove (後ろに追加、前に追加、置換、削除) が利用できます。|
|MergeFallback|追加位置が見つからなかったときの動作を指定します。AddFirst, AddLast, Ignore (最初に追加、最後に追加、無視) が利用できます。|
|MergeContext|追加するモジュール名を指定します。|
**ツールバー名 [#c756c719]
メニューの表示 - ツールバー項目に表示されるツールバー名を指定するには別の設定ファイルが必要です。

ツールバー名は user/registry/data/org/openoffice/Office/UI 以下にある xxxWindowState.xcu ファイルに保存されます。これと同じものを拡張機能に含めることでツールバーの名称を指定します。

表示するモジュールに対応した設定ファイルが必要です。Context で指定した数だけ用意する必要があります。Writer と Calc を指定したのであれば、WriterWindowState.xcu と CalcWindowState.xcu を用意する。(実際のファイル名は違ってもよい。)

以下のファイルは Calc 用で CalcWindowState を変更します。State ノード内に子ノードとして private:resource/toolbar/addon_ で始まり、上記 OfficeToolBar の子ノードで指定した名前をつなげます。
#code(xcu){{
   <node oor:name="AddonUI">
     <node oor:name="OfficeToolBar">
    ->  <node oor:name="my.calc.ann.ToolBar" oor:op="replace">
}}
ツールバー名は UIName 要素に指定します。ローカライズできます。
#code(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="CalcWindowState" 
oor:package="org.openoffice.Office.UI">
<node oor:name="UIElements">
<node oor:name="States">
<node oor:name="private:resource/toolbar/addon_my.calc.ann.ToolBar" oor:op="replace">
 <prop oor:name="UIName" oor:type="xs:string">
  <value xml:lang="en">Note Tools</value>
  <value xml:lang="ja">コメントツール</value>
 </prop>
</node>
</node>
</node>
</oor:component-data>
}}
途中からこのファイルを用意してもツールバー名に反映されないことがあります。これはコンフィグレーションファイルの三相による問題です。[[Configuration>Extensions/Configuration]] 参照。
**区切り線 [#p1aba058]
メニューやツールバーボタンの区切り線は次のような項目入れます。URL を private:separator とします。
#code(xcu){{
 <node oor:name="a24_sep1" oor:op="replace">
  <prop oor:name="URL" oor:type="xs:string">
   <value>private:separator</value>
  </prop>
  <prop oor:name="Context" oor:type="xs:string">
   <value></value>
  </prop>
 </node>
}}

**複数のツールバー [#zd07725a]
一つの Addons.xcu ファイルでは一つのツールバーしか作成できません。[[i86536>http://www.openoffice.org/issues/show_bug.cgi?id=86536]] しかし、二つ以上の設定ファイルを用意すれば二つ以上のツールバーを利用できます。

(Addons.xcu ファイルと書いていますが、ファイル名はこの通りにする必要はありません。)

"OfficeToolBar" ノードに追加する子ノード名をそれぞれ違うものにしておきます。

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