Top > OOoBasic > Generic > toolbar
*ツールバー [#h2a6a65b]

ツールバーの取り扱い。

#contents

OpenOffice.org 2.0 系が対象です。OpenOffice.org 1.0 系ではマクロでツールバーを変更することが出来ません。
**コンフィグマネジャーサプライヤー [#zc037828]

ツールバーの変更のためのサービスにアクセスします。

 Dim oModCfgMgrSup As Object
   oModCfgMgrSup = createUnoService( _ 
   "com.sun.star.ui.ModuleUIConfigurationManagerSupplier")

このサービスを利用して、アクセスしたいツールバーのコンフィグマネジャーにアクセスします。

**コンフィグマネジャー [#l8059cd4]

コンフィグマネジャーサプライヤーにアクセスするツールバーの種類を指定して、コンフィグマネジャーを作成します。

 Dim oModCfgMgr As Object
  oModCfgMgr = oModuleCfgMgrSupplier.getUIConfigurationManager(_
    "com.sun.star.sheet.SpreadsheetDocument" )

ここで指定するツールバーの種類は、ドキュメントの種類と同じです。
**ツールバー設定 [#l5e3b757]

ツールバーは、「標準」、「配置」、「挿入」など様々に分かれています。その中から、アクセスしたいものを指定して設定を取得します。

 Dim sToolbar As String
 Dim oToolbarSettings As Object
 
  sToolbar = "private:resource/toolbar/standardbar"
  oToolbarSettings = oModuleCfgMgr.getSettings(sToolbar,true)

ここでは、"private:resource/toolbar/standardbar" を指定して「標準」のツールバーの設定を ''getSettings'' メソッドで取得しています。二つ目の引数は、設定に書き込みできるようにするかどうかを指定します。

**ツールバー設定の内容 [#n86d5139]
ツールバーの設定の内容を見てみます。

ツールバーの個別のボタン設定はインデックスで管理されています。中を覗いてみます。

  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 の部分は区切りに相当します。

//,40,25,15,15,15,15
,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 の二つの項目しか設定しません。

***タイプ [#n7c6115b]
ツールバーの項目のタイプ設定は定数を指定して行います。

//,50,10,25
,com.sun.star.ui.ItemType,==,==
,DEFAULT,0,普通のボタン
,SEPARATOR_LINE,1,区切り線
,SEPARATOR_SPACE,2,スペース
,SEPARATOR_LINEBREAK,3,改行

普通のボタンには com.sun.star.ui.ItemType.DEFAULT を指定します。

**設定の変更 [#rc7a8a69]

ツールバーの設定を変更してツールバーにボタンを追加したり削除したりします。

 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)

ここでは、項目数を調べて最後に追加したツールバーに変更しています。
**新規ツールバー [#k585e69f]

新しくツールバーを作成する方法です。

新しいツールバーの設定を ''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()

設定を保存しなければ、何もないツールバーが表示されたり、ツールバーが実際には追加できていなかったりします。

**ツールバーの削除 [#b52c5426]

ツールバーの削除方法です。''removeSettings'' メソッドで削除します。引数に削除するツールバー名を指定します。

  oModCfgMgr.removeSettings(sToolbar)
 
  oModCfgMgr.store()

削除した後、保存します。

**ツールバーのアイコン [#m2e32d59]

ツールバーのアイコンを指定する方法です。

ツールバーのアイコンは、ツールバーのメニューとは別にコマンドごとに設定します。

イメージマネジャーにアクセスします。

 oImageManager = oModCfgMgr.ImageManager

***外部ファイルからのアイコン [#q4c31cc7]

外部の画像ファイルを読み込んでアイコンに指定する方法です。

グラフィックを読み込むために新しくグラフィックプロバイダーサービスを利用します。

 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()

** サブメニュー [#t7da870a]
3.3 からメニュー項目を設定するとツールバーのボタンにサブメニューを設定できます。
**ツールバー名一覧 [#n55a7f3d]

デフォルトで存在するツールバー名一覧です。


***Writer [#s4ef9867]

//,80,80
,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 [#w5c19fe0]

//,80,80
,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 [#j9f136b2]

//,80,80
,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 [#l8773d05]

//,80,80
,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 [#nf6b01d9]

//,80,80
,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 [#o1eed076]

//,80,80
,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,==

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