Top > OOoBasic > Generic > toolbar

ツールバー Edit

ツールバーの取り扱い。

OpenOffice.org 2.0 系が対象です。OpenOffice.org 1.0 系ではマクロでツールバーを変更することが出来ません。

コンフィグマネジャーサプライヤー Edit

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

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

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

コンフィグマネジャー Edit

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

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

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

ツールバー設定 Edit

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

Dim sToolbar As String
Dim oToolbarSettings As Object

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

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

ツールバー設定の内容 Edit

ツールバーの設定の内容を見てみます。

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

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

CommandURLHelpURLLabelTypeStyleIsVisible
.uno:OpenUrl00False
.uno:AddDirecthelpid:55370256True
.uno:NewDochelpid:550000False
.uno:Openhelpid:550100True
.uno:Savehelpid:550500True
.uno:SaveAshelpid:550200False
.uno:SendMail533100True
1
.uno:ExportDirectToPDFhelpid:667400True
.uno:PrintDefaulthelpid:550900True
.uno:SendFaxhelpid:2002800False
1
.uno:Cuthelpid:571000True
.uno:Copyhelpid:571100True
.uno:Pastehelpid:571200True
1
.uno:Undohelpid:570100True
.uno:Redohelpid:570000True
1
.uno:HelpIndexhelpid:540100True
.uno:ExtendedHelp540200False
  • CommandURL メニューコマンド
  • HelpURL ヘルプの ID
  • Label 表示テキスト
  • Type ボタンのタイプ
  • Style ボタンのスタイル
  • IsVisible 表示するかどうか

区切りの部分では、CommandURL および Type の二つの項目しか設定しません。

タイプ Edit

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

com.sun.star.ui.ItemType
DEFAULT0普通のボタン
SEPARATOR_LINE1区切り線
SEPARATOR_SPACE2スペース
SEPARATOR_LINEBREAK3改行

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

設定の変更 Edit

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

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)

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

新規ツールバー Edit

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

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

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

ツールバーの削除 Edit

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

 oModCfgMgr.removeSettings(sToolbar)

 oModCfgMgr.store()

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

ツールバーのアイコン Edit

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

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

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

oImageManager = oModCfgMgr.ImageManager

外部ファイルからのアイコン Edit

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

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

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

サブメニュー Edit

3.3 からメニュー項目を設定するとツールバーのボタンにサブメニューを設定できます。

ツールバー名一覧 Edit

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

Writer Edit

com.sun.star.text.TextDocument
private:resource/toolbar/drawingobjectbarprivate:resource/toolbar/moreformcontrols
private:resource/toolbar/calloutshapesprivate:resource/toolbar/insertbar
private:resource/toolbar/starshapesprivate:resource/menubar/menubar
private:resource/toolbar/formtextobjectbarprivate:resource/toolbar/basicshapes
private:resource/toolbar/drawbarprivate:resource/toolbar/mediaobjectbar
private:resource/toolbar/drawtextobjectbarprivate:resource/toolbar/graphicobjectbar
private:resource/toolbar/extrusionobjectbarprivate:resource/toolbar/fontworkshapetype
private:resource/toolbar/alignmentbarprivate:resource/statusbar/statusbar
private:resource/toolbar/numobjectbarprivate:resource/toolbar/viewerbar
private:resource/toolbar/optimizetablebarprivate:resource/toolbar/arrowshapes
private:resource/toolbar/tableobjectbarprivate:resource/toolbar/flowchartshapes
private:resource/toolbar/textobjectbarprivate:resource/toolbar/insertobjectbar
private:resource/toolbar/standardbarprivate:resource/toolbar/formcontrols
private:resource/toolbar/formsfilterbarprivate:resource/toolbar/frameobjectbar
private:resource/toolbar/symbolshapesprivate:resource/toolbar/formsnavigationbar
private:resource/toolbar/fullscreenbarprivate:resource/toolbar/colorbar
private:resource/toolbar/graffilterbarprivate:resource/toolbar/oleobjectbar
private:resource/toolbar/formdesignprivate:resource/toolbar/fontworkobjectbar
private:resource/toolbar/toolbarprivate:resource/toolbar/bezierobjectbar
private:resource/toolbar/previewobjectbar

Calc Edit

com.sun.star.sheet.SpreadsheetDocument
private:resource/toolbar/calloutshapesprivate:resource/menubar/menubar
private:resource/toolbar/starshapesprivate:resource/toolbar/basicshapes
private:resource/toolbar/formtextobjectbarprivate:resource/toolbar/mediaobjectbar
private:resource/toolbar/drawbarprivate:resource/toolbar/graphicobjectbar
private:resource/toolbar/extrusionobjectbarprivate:resource/toolbar/fontworkshapetype
private:resource/toolbar/alignmentbarprivate:resource/statusbar/statusbar
private:resource/toolbar/formsobjectbarprivate:resource/toolbar/viewerbar
private:resource/toolbar/textobjectbarprivate:resource/toolbar/arrowshapes
private:resource/toolbar/standardbarprivate:resource/toolbar/flowchartshapes
private:resource/toolbar/formsfilterbarprivate:resource/toolbar/insertobjectbar
private:resource/toolbar/symbolshapesprivate:resource/toolbar/formcontrols
private:resource/toolbar/fullscreenbarprivate:resource/toolbar/formsnavigationbar
private:resource/toolbar/graffilterbarprivate:resource/toolbar/colorbar
private:resource/toolbar/formatobjectbarprivate:resource/toolbar/drawobjectbar
private:resource/toolbar/formdesignprivate:resource/toolbar/fontworkobjectbar
private:resource/toolbar/toolbarprivate:resource/toolbar/insertcellsbar
private:resource/toolbar/moreformcontrolsprivate:resource/toolbar/previewbar
private:resource/toolbar/insertbar

Draw Edit

com.sun.star.drawing.DrawingDocument
private:resource/toolbar/drawingobjectbarprivate:resource/toolbar/moreformcontrols
private:resource/toolbar/calloutshapesprivate:resource/toolbar/insertbar
private:resource/toolbar/starshapesprivate:resource/menubar/menubar
private:resource/toolbar/formtextobjectbarprivate:resource/toolbar/basicshapes
private:resource/toolbar/masterviewtoolbarprivate:resource/toolbar/mediaobjectbar
private:resource/toolbar/arrowsbarprivate:resource/toolbar/graphicobjectbar
private:resource/toolbar/textbarprivate:resource/toolbar/linesbar
private:resource/toolbar/extrusionobjectbarprivate:resource/toolbar/fontworkshapetype
private:resource/toolbar/alignmentbarprivate:resource/toolbar/optionsbar
private:resource/toolbar/positionbarprivate:resource/statusbar/statusbar
private:resource/toolbar/ellipsesbarprivate:resource/toolbar/viewerbar
private:resource/toolbar/textobjectbarprivate:resource/toolbar/arrowshapes
private:resource/toolbar/standardbarprivate:resource/toolbar/choosemodebar
private:resource/toolbar/formsfilterbarprivate:resource/toolbar/flowchartshapes
private:resource/toolbar/symbolshapesprivate:resource/toolbar/formcontrols
private:resource/toolbar/fullscreenbarprivate:resource/toolbar/formsnavigationbar
private:resource/toolbar/gluepointsobjectbarprivate:resource/toolbar/colorbar
private:resource/toolbar/3dobjectsbarprivate:resource/toolbar/zoombar
private:resource/toolbar/graffilterbarprivate:resource/toolbar/fontworkobjectbar
private:resource/toolbar/formdesignprivate:resource/toolbar/connectorsbar
private:resource/toolbar/toolbarprivate:resource/toolbar/bezierobjectbar

Impress Edit

com.sun.star.presentation.PresentationDocument
private:resource/toolbar/drawingobjectbarprivate:resource/toolbar/formdesign
private:resource/toolbar/calloutshapesprivate:resource/toolbar/toolbar
private:resource/toolbar/starshapesprivate:resource/toolbar/moreformcontrols
private:resource/toolbar/formtextobjectbarprivate:resource/toolbar/insertbar
private:resource/toolbar/masterviewtoolbarprivate:resource/menubar/menubar
private:resource/toolbar/arrowsbarprivate:resource/toolbar/basicshapes
private:resource/toolbar/textbarprivate:resource/toolbar/mediaobjectbar
private:resource/toolbar/slideviewtoolbarprivate:resource/toolbar/graphicobjectbar
private:resource/toolbar/extrusionobjectbarprivate:resource/toolbar/linesbar
private:resource/toolbar/alignmentbarprivate:resource/toolbar/fontworkshapetype
private:resource/toolbar/positionbarprivate:resource/toolbar/optionsbar
private:resource/toolbar/ellipsesbarprivate:resource/statusbar/statusbar
private:resource/toolbar/textobjectbarprivate:resource/toolbar/viewerbar
private:resource/toolbar/standardbarprivate:resource/toolbar/arrowshapes
private:resource/toolbar/formsfilterbarprivate:resource/toolbar/choosemodebar
private:resource/toolbar/symbolshapesprivate:resource/toolbar/flowchartshapes
private:resource/toolbar/fullscreenbarprivate:resource/toolbar/formcontrols
private:resource/toolbar/outlinetoolbarprivate:resource/toolbar/formsnavigationbar
private:resource/toolbar/gluepointsobjectbarprivate:resource/toolbar/colorbar
private:resource/toolbar/commontaskbarprivate:resource/toolbar/zoombar
private:resource/toolbar/3dobjectsbarprivate:resource/toolbar/fontworkobjectbar
private:resource/toolbar/graffilterbarprivate:resource/toolbar/connectorsbar
private:resource/toolbar/slideviewobjectbarprivate:resource/toolbar/bezierobjectbar

Math Edit

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 Edit

com.sun.star.script.BasicIDE
private:resource/toolbar/macrobarprivate:resource/menubar/menubar
private:resource/toolbar/standardbarprivate: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