Top > OOoBasic > Generic > Gallery

ギャラリー Edit

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

GalleryThemeProvider Edit

ギャラリーを操作するときやギャラリーのアイテムにアクセスするときは GalleryThemeProvider サービスを利用します。

 oGTP = CreateUnoService("com.sun.star.gallery.GalleryThemeProvider")

テーマ Edit

テーマごとに分かれているギャラリーの個別のテーマにアクセスするには 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

アイテム Edit

テーマオブジェクトから個別のアイテムを取得するには 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 プロパティで判断します。

アイテムの種類 Edit

テーマに含まれるアイテムは、画像、メディア、図形描写の三種類があります。アイテムの GalleryItemType プロパティを com.sun.star.gallery.GalleryItemType 定数と比較して判断します。

GalleryItemType説明
EMPTY0
GRAPHIC1画像
MEDIA2サウンドや動画
DRAWING3図形描写オブジェクト

アイテムの取り扱い Edit

アイテムのプロパティは次のものです。アイテムの種類によって利用するプロパティが異なります。

プロパティ説明
Drawing.lang.XComponent図形描写
GalleryItemTypebyteアイテムの種類
Graphic.graphic.XGraphicグラフィック
Thumbnail.graphic.XGraphicサムネイル画像
Titlestringアイテムタイトル
URLstringURL

URL プロパティは画像やサウンド、動画ファイルをドキュメントの挿入するときに利用できます。また、Graphic は TextGraphic オブジェクトや .drawing.GraphicObjectShape を挿入する際に利用します。図形描写をドキュメントに挿入するには Drawing オブジェクトから図形描写オブジェクトコンテナを取得して利用します。

Drawing プロパティから取得できるのは com.sun.star.drawing.DrawingDocument サービスです。

アイテムの挿入 Edit

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

URLから追加 Edit

画像、サウンド、ビデオファイルなどを 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 から挿入 Edit

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

図形描写を追加 Edit

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

アイテムの削除 Edit

アイテムの削除は 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