ギャラリー 
ギャラリー操作とギャラリーアイテムの利用。ギャラリーは com.sun.star.gallery.GalleryThemeProvider から利用できます。
GalleryThemeProvider 
ギャラリーを操作するときやギャラリーのアイテムにアクセスするときは GalleryThemeProvider サービスを利用します。
oGTP = CreateUnoService("com.sun.star.gallery.GalleryThemeProvider")
テーマ 
テーマごとに分かれているギャラリーの個別のテーマにアクセスするには com.sun.star.container.XNameAccess インターフェースのメソッドを利用します。
テーマの名前を取得するには getElementNames を利用します。
Sub gallery_1
oGTP = CreateUnoService("com.sun.star.gallery.GalleryThemeProvider")
sNames = oGTP.getElementNames()
sTxt = ""
For i = 0 To UBound(sNames)
sTxt = sTxt & sNames(i) & chr(10)
Next i
msgbox sTxt
End Sub
テーマ内のアイテムにアクセスするにはまずテーマオブジェクトを取得します。
Sub gallery_2
oGTP = CreateUnoService("com.sun.star.gallery.GalleryThemeProvider")
sName = "Backgrounds"
If oGTP.hasByName(sName) Then
oTheme = oGTP.getByName(sName)
msgbox oTheme.Count
End If
End Sub
新しいテーマを作成するには次のようにします。
Sub gallery_3
oGTP = CreateUnoService("com.sun.star.gallery.GalleryThemeProvider")
sName = "New Theme"
If NOT oGTP.hasByName(sName) Then
oGTP.insertNewByName(sName)
msgbox oGTP.hasByName(sName)
End If
End Sub
アイテム 
テーマオブジェクトから個別のアイテムを取得するには com.sun.star.container.XIndexAccess インターフェースのメソッドを利用します。インデックスでしかアクセスできません。
Sub gallery_4
oGTP = CreateUnoService("com.sun.star.gallery.GalleryThemeProvider")
sName = "Backgrounds"
If oGTP.hasByName(sName) Then
oTheme = oGTP.getByName(sName)
nCount = oTheme.getCount()
oItem = oTheme.getByIndex(nCount -1)
msgbox oItem.Title
End If
End Sub
アイテムをドキュメントに挿入するときなどは種類によって取り扱い方が違います。これはアイテムの GalleryItemType プロパティで判断します。
アイテムの種類 
テーマに含まれるアイテムは、画像、メディア、図形描写の三種類があります。アイテムの GalleryItemType プロパティを com.sun.star.gallery.GalleryItemType 定数と比較して判断します。
GalleryItemType | 値 | 説明 |
EMPTY | 0 | 空 |
GRAPHIC | 1 | 画像 |
MEDIA | 2 | サウンドや動画 |
DRAWING | 3 | 図形描写オブジェクト |
アイテムの取り扱い 
アイテムのプロパティは次のものです。アイテムの種類によって利用するプロパティが異なります。
プロパティ | 型 | 説明 |
Drawing | .lang.XComponent | 図形描写 |
GalleryItemType | byte | アイテムの種類 |
Graphic | .graphic.XGraphic | グラフィック |
Thumbnail | .graphic.XGraphic | サムネイル画像 |
Title | string | アイテムタイトル |
URL | string | URL |
URL プロパティは画像やサウンド、動画ファイルをドキュメントの挿入するときに利用できます。また、Graphic は TextGraphic オブジェクトや .drawing.GraphicObjectShape を挿入する際に利用します。図形描写をドキュメントに挿入するには Drawing オブジェクトから図形描写オブジェクトコンテナを取得して利用します。
Drawing プロパティから取得できるのは com.sun.star.drawing.DrawingDocument サービスです。
アイテムの挿入 
テーマにアイテムを追加するには com.sun.star.gallery.XGalleryTheme インターフェースのメソッドを利用します。
URLから追加 
画像、サウンド、ビデオファイルなどを URL から追加するときに利用します。insertURLByIndex メソッドで追加します。
Sub gallery_5
oGTP = CreateUnoService("com.sun.star.gallery.GalleryThemeProvider")
sName = "New Theme"
sURL = "file:///C:/Users/Desktop/Images/img-1.png"
If oGTP.hasByName(sName) Then
oTheme = oGTP.getByName(sName)
nCount = oTheme.getCount()
msgbox oTheme.insertURLByIndex(sURL,nCount)
End If
End Sub
メソッドの返り値は挿入されたインデックスになります。-1 は挿入失敗を示します。
XGraphic から挿入 
com.sun.star.graphic.XGraphic インターフェースを利用して画像をテーマに追加できます。
Sub gallery_6
oGTP = CreateUnoService("com.sun.star.gallery.GalleryThemeProvider")
sName = "New Theme"
If oGTP.hasByName(sName) Then
oTheme = oGTP.getByName(sName)
nCount = oTheme.getCount()
oDoc = ThisComponent
oSelection = oDoc.getCurrentSelection()
If oSelection.supportsService("com.sun.star.text.TextGraphicObject") Then
msgbox oTheme.insertGraphicByIndex(oSelection.Graphic,nCount)
oTheme.update()
End If
End If
End Sub
図形描写を追加 
insertDrawingByIndex メソッドがうまくいかない・・・。
アイテムの削除 
アイテムの削除は removeByIndex メソッドで行います。