ツールバー 
ツールバーの取り扱い。
OpenOffice.org 2.0 系が対象です。OpenOffice.org 1.0 系ではマクロでツールバーを変更することが出来ません。
コンフィグマネジャーサプライヤー 
ツールバーの変更のためのサービスにアクセスします。
Dim oModCfgMgrSup As Object
oModCfgMgrSup = createUnoService( _
"com.sun.star.ui.ModuleUIConfigurationManagerSupplier")
このサービスを利用して、アクセスしたいツールバーのコンフィグマネジャーにアクセスします。
コンフィグマネジャー 
コンフィグマネジャーサプライヤーにアクセスするツールバーの種類を指定して、コンフィグマネジャーを作成します。
Dim oModCfgMgr As Object
oModCfgMgr = oModuleCfgMgrSupplier.getUIConfigurationManager(_
"com.sun.star.sheet.SpreadsheetDocument" )
ここで指定するツールバーの種類は、ドキュメントの種類と同じです。
ツールバー設定 
ツールバーは、「標準」、「配置」、「挿入」など様々に分かれています。その中から、アクセスしたいものを指定して設定を取得します。
Dim sToolbar As String
Dim oToolbarSettings As Object
sToolbar = "private:resource/toolbar/standardbar"
oToolbarSettings = oModuleCfgMgr.getSettings(sToolbar,true)
ここでは、"private:resource/toolbar/standardbar" を指定して「標準」のツールバーの設定を getSettings メソッドで取得しています。二つ目の引数は、設定に書き込みできるようにするかどうかを指定します。
ツールバー設定の内容 
ツールバーの設定の内容を見てみます。
ツールバーの個別のボタン設定はインデックスで管理されています。中を覗いてみます。
sRes = "," & oMenuItem(0).Name & "," & oMenuItem(1).Name & "," & _
oMenuItem(2).Name & "," & oMenuItem(3).Name & "," & _
oMenuItem(4).Name & "," & oMenuItem(5).Name & Chr(10)
For i = 0 To oToolbarSettings.Count -1
oMenuItem = oToolbarSettings.getByIndex(i)
v = UBound(oMenuItem)
If UBound(oMenuItem()) = 1 Then
sRes = sRes & "," & oMenuItem(0).Value & "," & oMenuItem(1).Value & ",,,,"
else
sRes = sRes & "," & oMenuItem(0).Value & "," & oMenuItem(1).Value & _
"," & oMenuItem(2).Value & "," & oMenuItem(3).Value & _
"," & oMenuItem(4).Value & "," & oMenuItem(5).Value & Chr(10)
End If
Next i
取得結果は次のようになります。CommandURL が空で HelpURL が 1 の部分は区切りに相当します。
CommandURL | HelpURL | Label | Type | Style | IsVisible |
.uno:OpenUrl | | | 0 | 0 | False |
.uno:AddDirect | helpid:5537 | | 0 | 256 | True |
.uno:NewDoc | helpid:5500 | | 0 | 0 | False |
.uno:Open | helpid:5501 | | 0 | 0 | True |
.uno:Save | helpid:5505 | | 0 | 0 | True |
.uno:SaveAs | helpid:5502 | | 0 | 0 | False |
.uno:SendMail | 5331 | | 0 | 0 | True |
| | | 1 | | |
.uno:ExportDirectToPDF | helpid:6674 | | 0 | 0 | True |
.uno:PrintDefault | helpid:5509 | | 0 | 0 | True |
.uno:SendFax | helpid:20028 | | 0 | 0 | False |
| | | 1 | | |
.uno:Cut | helpid:5710 | | 0 | 0 | True |
.uno:Copy | helpid:5711 | | 0 | 0 | True |
.uno:Paste | helpid:5712 | | 0 | 0 | True |
| | | 1 | | |
.uno:Undo | helpid:5701 | | 0 | 0 | True |
.uno:Redo | helpid:5700 | | 0 | 0 | True |
| | | 1 | | |
.uno:HelpIndex | helpid:5401 | | 0 | 0 | True |
.uno:ExtendedHelp | 5402 | | 0 | 0 | False |
- CommandURL メニューコマンド
- HelpURL ヘルプの ID
- Label 表示テキスト
- Type ボタンのタイプ
- Style ボタンのスタイル
- IsVisible 表示するかどうか
区切りの部分では、CommandURL および Type の二つの項目しか設定しません。
タイプ 
ツールバーの項目のタイプ設定は定数を指定して行います。
com.sun.star.ui.ItemType |
DEFAULT | 0 | 普通のボタン |
SEPARATOR_LINE | 1 | 区切り線 |
SEPARATOR_SPACE | 2 | スペース |
SEPARATOR_LINEBREAK | 3 | 改行 |
普通のボタンには com.sun.star.ui.ItemType.DEFAULT を指定します。
設定の変更 
ツールバーの設定を変更してツールバーにボタンを追加したり削除したりします。
sToolbar = "private:resource/toolbar/standardbar"
oToolbarSettings = oModuleCfgMgr.getSettings(sToolbar,true)
設定の変更には次のようなメソッドが利用できます。ツールバーに項目が一つでも含まれているかどうかを調べる hasElements メソッド。ツールバーの項目数を調べる getCount メソッド、このメソッドは区切りも含んだ項目数を戻します。
boolean hasElements ( void )
integer getCount ( void )
指定したインデックスの項目を取得するには getByIndex メソッドを使用します。戻り値は上記で説明した com.sun.star.beans.PropertyValue の配列です。指定したインデックスの位置の項目と置換する replaceByIndex メソッド、指定した位置に項目を挿入する insertByIndex メソッド、指定した項目を削除する removeByIndex メソッドがあります。
.beans.PropertyValue getByIndex ( integer nIndex )
void replaceByIndex ( integer nIndex, .beans.PropertyValue aItem )
void insertByIndex ( integer nIndex, .beans.PropertyValue aItem )
void removeByIndex ( integer nIndex )
ツールバーの項目は例えば、次のようにして作成します。
Function CreateToolbarItem( _
sCommand As String, sLabel As String ) as Variant
Dim aToolbarItem(6) As New com.sun.star.beans.PropertyValue
aToolbarItem(0).Name = "CommandURL"
aToolbarItem(0).Value = sCommand
aToolbarItem(1).Name = "HelpURL"
aToolbarItem(1).Value = "" 'sHelpURL
aToolbarItem(2).Name = "Label"
aToolbarItem(2).Value = sLabel
aToolbarItem(3).Name = "Type"
aToolbarItem(3).Value = 0
aToolbarItem(4).Name = "Style"
aToolbarItem(4).Value = 0
aToolbarItem(5).Name = "IsVisible"
aToolbarItem(5).Value = true 'bIsVisible
CreateToolbarItem = aToolbarItem()
End Function
上記のものを利用して項目を作成し、取得したツールバー設定を利用して変更し、変更された設定と置き換えます。
oToolbarSettings.insertByIndex( _
oToolbarSettings.getCount()-1,CreateToolbarItem(".uno:SaveAs","Save As"))
oModCfgMgr.replaceSettings(sToolbar,oToolbarSettings)
ここでは、項目数を調べて最後に追加したツールバーに変更しています。
新規ツールバー 
新しくツールバーを作成する方法です。
新しいツールバーの設定を createSettings メソッドで作成します。
oToolbarSettings = oModCfgMgr.createSettings()
次に、このツールバーの設定の表示時の名前を設定します。
oToolbarSettings.UIName = "custom_toolbar_1"
この UIName プロパティーを設定しなければ、メニューの表示 - ツールバーに表示されないため、ツールバーが利用できなくなります。
新しく作成したツールバーにメニューボタンを追加します。
oToolbarSettings.insertByIndex(0, _
CreateToolbarItem("macro:///Standard.Module1.Main()","Main"))
insertByIndex メソッドの一つ目の引数は、メニューを挿入するインデックス、二つ目の引数はツールバーのメニュー項目です。
メニューに OOo Basic のマクロを指定するときには、URL に
macro:///LibraryName.ModuleName.SubName
とします。これは、OOo アプリケーションの Basic ライブラリにあるマクロを指定するときです。ドキュメントの Basic ライブラリにあるマクロを指定するときには、
macro://./LibraryName.ModuleName.SubName
とします。
メニューを追加したあとは、ツールバーの設定をモジュールコンフィグマネジャーに追加します。
oModCfgMgr.insertSettings(sToolbar,oToolbarSettings)
さらに、設定を追加した後に store メソッドで設定を保存します。
oModCfgMgr.store()
設定を保存しなければ、何もないツールバーが表示されたり、ツールバーが実際には追加できていなかったりします。
ツールバーの削除 
ツールバーの削除方法です。removeSettings メソッドで削除します。引数に削除するツールバー名を指定します。
oModCfgMgr.removeSettings(sToolbar)
oModCfgMgr.store()
削除した後、保存します。
ツールバーのアイコン 
ツールバーのアイコンを指定する方法です。
ツールバーのアイコンは、ツールバーのメニューとは別にコマンドごとに設定します。
イメージマネジャーにアクセスします。
oImageManager = oModCfgMgr.ImageManager
外部ファイルからのアイコン 
外部の画像ファイルを読み込んでアイコンに指定する方法です。
グラフィックを読み込むために新しくグラフィックプロバイダーサービスを利用します。
Dim oGraphicProv As Object
oGraphicProv = CreateUnoService("com.sun.star.graphic.GraphicProvider")
読み込むグラフィックを指定します。
Dim aMedDesc(0) As New com.sun.star.beans.PropertyValue
aMedDesc(0).Name = "URL"
aMedDesc(0).Value = ConvertToUrl("C:\usr\main_16.bmp")
URL に読み込む画像の URL を指定します。URL 指定の代わりに、読み込む画像を XInputStream で代用できます。com.sun.star.io.InputStream サービスを利用して画像を読み込み InputStream として指定します。
グラフィックプロバイダーにグラフィックを指定して XGraphic インターフェースにアクセスできるようにします。
Dim oGraphic As Object
oGraphic = oGraphicProv.queryGraphic( aMedDesc() )
アイコン画像を挿入します。
sCommandURL = "macro:///Standard.Module1.Main()"
oImageManager.insertImages( 0, Array( sCommandURL ), Array( oGraphic ) )
insertImages メソッドの最初の引数は画像のタイプを指定します。二つ目の引数は画像をアイコンとして指定したいコマンドの URL を配列として指定します。三つ目の引数に XGraphic インターフェースを配列で指定します。
最後に、イメージマネジャーを保存します。
oImageManager.store()
サブメニュー 
3.3 からメニュー項目を設定するとツールバーのボタンにサブメニューを設定できます。
ツールバー名一覧 
デフォルトで存在するツールバー名一覧です。
Writer 
com.sun.star.text.TextDocument |
private:resource/toolbar/drawingobjectbar | private:resource/toolbar/moreformcontrols |
private:resource/toolbar/calloutshapes | private:resource/toolbar/insertbar |
private:resource/toolbar/starshapes | private:resource/menubar/menubar |
private:resource/toolbar/formtextobjectbar | private:resource/toolbar/basicshapes |
private:resource/toolbar/drawbar | private:resource/toolbar/mediaobjectbar |
private:resource/toolbar/drawtextobjectbar | private:resource/toolbar/graphicobjectbar |
private:resource/toolbar/extrusionobjectbar | private:resource/toolbar/fontworkshapetype |
private:resource/toolbar/alignmentbar | private:resource/statusbar/statusbar |
private:resource/toolbar/numobjectbar | private:resource/toolbar/viewerbar |
private:resource/toolbar/optimizetablebar | private:resource/toolbar/arrowshapes |
private:resource/toolbar/tableobjectbar | private:resource/toolbar/flowchartshapes |
private:resource/toolbar/textobjectbar | private:resource/toolbar/insertobjectbar |
private:resource/toolbar/standardbar | private:resource/toolbar/formcontrols |
private:resource/toolbar/formsfilterbar | private:resource/toolbar/frameobjectbar |
private:resource/toolbar/symbolshapes | private:resource/toolbar/formsnavigationbar |
private:resource/toolbar/fullscreenbar | private:resource/toolbar/colorbar |
private:resource/toolbar/graffilterbar | private:resource/toolbar/oleobjectbar |
private:resource/toolbar/formdesign | private:resource/toolbar/fontworkobjectbar |
private:resource/toolbar/toolbar | private:resource/toolbar/bezierobjectbar |
private:resource/toolbar/previewobjectbar | |
Calc 
com.sun.star.sheet.SpreadsheetDocument |
private:resource/toolbar/calloutshapes | private:resource/menubar/menubar |
private:resource/toolbar/starshapes | private:resource/toolbar/basicshapes |
private:resource/toolbar/formtextobjectbar | private:resource/toolbar/mediaobjectbar |
private:resource/toolbar/drawbar | private:resource/toolbar/graphicobjectbar |
private:resource/toolbar/extrusionobjectbar | private:resource/toolbar/fontworkshapetype |
private:resource/toolbar/alignmentbar | private:resource/statusbar/statusbar |
private:resource/toolbar/formsobjectbar | private:resource/toolbar/viewerbar |
private:resource/toolbar/textobjectbar | private:resource/toolbar/arrowshapes |
private:resource/toolbar/standardbar | private:resource/toolbar/flowchartshapes |
private:resource/toolbar/formsfilterbar | private:resource/toolbar/insertobjectbar |
private:resource/toolbar/symbolshapes | private:resource/toolbar/formcontrols |
private:resource/toolbar/fullscreenbar | private:resource/toolbar/formsnavigationbar |
private:resource/toolbar/graffilterbar | private:resource/toolbar/colorbar |
private:resource/toolbar/formatobjectbar | private:resource/toolbar/drawobjectbar |
private:resource/toolbar/formdesign | private:resource/toolbar/fontworkobjectbar |
private:resource/toolbar/toolbar | private:resource/toolbar/insertcellsbar |
private:resource/toolbar/moreformcontrols | private:resource/toolbar/previewbar |
private:resource/toolbar/insertbar | |
Draw 
com.sun.star.drawing.DrawingDocument |
private:resource/toolbar/drawingobjectbar | private:resource/toolbar/moreformcontrols |
private:resource/toolbar/calloutshapes | private:resource/toolbar/insertbar |
private:resource/toolbar/starshapes | private:resource/menubar/menubar |
private:resource/toolbar/formtextobjectbar | private:resource/toolbar/basicshapes |
private:resource/toolbar/masterviewtoolbar | private:resource/toolbar/mediaobjectbar |
private:resource/toolbar/arrowsbar | private:resource/toolbar/graphicobjectbar |
private:resource/toolbar/textbar | private:resource/toolbar/linesbar |
private:resource/toolbar/extrusionobjectbar | private:resource/toolbar/fontworkshapetype |
private:resource/toolbar/alignmentbar | private:resource/toolbar/optionsbar |
private:resource/toolbar/positionbar | private:resource/statusbar/statusbar |
private:resource/toolbar/ellipsesbar | private:resource/toolbar/viewerbar |
private:resource/toolbar/textobjectbar | private:resource/toolbar/arrowshapes |
private:resource/toolbar/standardbar | private:resource/toolbar/choosemodebar |
private:resource/toolbar/formsfilterbar | private:resource/toolbar/flowchartshapes |
private:resource/toolbar/symbolshapes | private:resource/toolbar/formcontrols |
private:resource/toolbar/fullscreenbar | private:resource/toolbar/formsnavigationbar |
private:resource/toolbar/gluepointsobjectbar | private:resource/toolbar/colorbar |
private:resource/toolbar/3dobjectsbar | private:resource/toolbar/zoombar |
private:resource/toolbar/graffilterbar | private:resource/toolbar/fontworkobjectbar |
private:resource/toolbar/formdesign | private:resource/toolbar/connectorsbar |
private:resource/toolbar/toolbar | private:resource/toolbar/bezierobjectbar |
Impress 
com.sun.star.presentation.PresentationDocument |
private:resource/toolbar/drawingobjectbar | private:resource/toolbar/formdesign |
private:resource/toolbar/calloutshapes | private:resource/toolbar/toolbar |
private:resource/toolbar/starshapes | private:resource/toolbar/moreformcontrols |
private:resource/toolbar/formtextobjectbar | private:resource/toolbar/insertbar |
private:resource/toolbar/masterviewtoolbar | private:resource/menubar/menubar |
private:resource/toolbar/arrowsbar | private:resource/toolbar/basicshapes |
private:resource/toolbar/textbar | private:resource/toolbar/mediaobjectbar |
private:resource/toolbar/slideviewtoolbar | private:resource/toolbar/graphicobjectbar |
private:resource/toolbar/extrusionobjectbar | private:resource/toolbar/linesbar |
private:resource/toolbar/alignmentbar | private:resource/toolbar/fontworkshapetype |
private:resource/toolbar/positionbar | private:resource/toolbar/optionsbar |
private:resource/toolbar/ellipsesbar | private:resource/statusbar/statusbar |
private:resource/toolbar/textobjectbar | private:resource/toolbar/viewerbar |
private:resource/toolbar/standardbar | private:resource/toolbar/arrowshapes |
private:resource/toolbar/formsfilterbar | private:resource/toolbar/choosemodebar |
private:resource/toolbar/symbolshapes | private:resource/toolbar/flowchartshapes |
private:resource/toolbar/fullscreenbar | private:resource/toolbar/formcontrols |
private:resource/toolbar/outlinetoolbar | private:resource/toolbar/formsnavigationbar |
private:resource/toolbar/gluepointsobjectbar | private:resource/toolbar/colorbar |
private:resource/toolbar/commontaskbar | private:resource/toolbar/zoombar |
private:resource/toolbar/3dobjectsbar | private:resource/toolbar/fontworkobjectbar |
private:resource/toolbar/graffilterbar | private:resource/toolbar/connectorsbar |
private:resource/toolbar/slideviewobjectbar | private:resource/toolbar/bezierobjectbar |
Math 
com.sun.star.formula.FormulaProperties |
private:resource/toolbar/standardbar |
private:resource/toolbar/fullscreenbar |
private:resource/toolbar/toolbar |
private:resource/menubar/menubar |
private:resource/statusbar/statusbar |
Basic IDE 
com.sun.star.script.BasicIDE |
private:resource/toolbar/macrobar | private:resource/menubar/menubar |
private:resource/toolbar/standardbar | private:resource/toolbar/fullscreenbar |
private:resource/toolbar/insertcontrolsbar |