Top > OOoBasic > Generic > Gallery
*ギャラリー [#me7e738a]

ギャラリー操作とギャラリーアイテムの利用。ギャラリーは com.sun.star.gallery.GalleryThemeProvider から利用できます。

#contents

**GalleryThemeProvider [#e31d7253]
ギャラリーを操作するときやギャラリーのアイテムにアクセスするときは GalleryThemeProvider サービスを利用します。
  oGTP = CreateUnoService("com.sun.star.gallery.GalleryThemeProvider")
**テーマ [#w1aa78b1]
テーマごとに分かれているギャラリーの個別のテーマにアクセスするには 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

**アイテム [#wb02d9b8]
テーマオブジェクトから個別のアイテムを取得するには 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 プロパティで判断します。
***アイテムの種類 [#l8913efe]
テーマに含まれるアイテムは、画像、メディア、図形描写の三種類があります。アイテムの GalleryItemType プロパティを com.sun.star.gallery.GalleryItemType 定数と比較して判断します。

|GalleryItemType|値|説明|h
|EMPTY|0|空|
|GRAPHIC|1|画像|
|MEDIA|2|サウンドや動画|
|DRAWING|3|図形描写オブジェクト|
**アイテムの取り扱い [#pabc229c]
アイテムのプロパティは次のものです。アイテムの種類によって利用するプロパティが異なります。

|プロパティ|型|説明|h
|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 サービスです。
**アイテムの挿入 [#b3def2b6]

テーマにアイテムを追加するには com.sun.star.gallery.XGalleryTheme インターフェースのメソッドを利用します。

***URLから追加 [#v9f21390]
画像、サウンド、ビデオファイルなどを 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 から挿入 [#xbd9cb37]
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

***図形描写を追加 [#c2bb6bef]

insertDrawingByIndex メソッドがうまくいかない・・・。

- &oooissue(80810);
**アイテムの削除 [#o76afc49]
アイテムの削除は removeByIndex メソッドで行います。

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