以前 GtkFlowBox の使い道が解らないとか書いた。
GtkFlowBox | PaePoi
よく考えると Totem のサムネイルに使われていたりする。
そうか、GtkIconView の代わりみたいなものかな。
つまり GtkScrollView を噛ませて画像表示なんかで便利かも。
試しにディレクトリ画像サムネイルを作ってみよう。
#!/usr/bin/env python3
import gi
gi.require_version("Gtk", "3.0")
from gi.repository import Gtk, GLib, Gio, GdkPixbuf
NAE_PATH = "/home/sasakima-nao/pic/game/gf/nae_yuki_ssr"
class FlowBoxTest(Gtk.Window):
"""
Easy GtkIconView
"""
def __init__(self):
Gtk.Window.__init__(self)
# GtkFlowBox
flowbox = Gtk.FlowBox.new()
flowbox.set_valign(Gtk.Align.START)
self.get_all_picture(flowbox)
#flowbox.set_selection_mode(Gtk.SelectionMode.MULTIPLE)
scroll = Gtk.ScrolledWindow.new()
scroll.add(flowbox)
# self
self.index = 0
self.add(scroll)
self.resize(400, 300)
self.show_all()
def do_delete_event(self, event):
Gtk.main_quit()
def get_all_picture(self, flowbox):
"""
Thumbnail JPEG File
"""
d = Gio.file_new_for_path(NAE_PATH);
# Get GFileEnumerator
enum = d.enumerate_children(
Gio.FILE_ATTRIBUTE_STANDARD_CONTENT_TYPE,
Gio.FileQueryInfoFlags.NONE)
for info in enum:
# info is GFileInfo
content_type = info.get_content_type()
if content_type == "image/jpeg":
name = info.get_name()
fullpath = "{0}/{1}".format(NAE_PATH, name)
thumbnail = GdkPixbuf.Pixbuf.new_from_file_at_scale(fullpath, 100, 100, True)
image = Gtk.Image.new_from_pixbuf(thumbnail)
flowbox.add(image)
FlowBoxTest()
Gtk.main()

GtkIconView より圧倒的に簡単だった。
専用のセルレンダラは不要で Widget をそのまま使える。
便利というより簡単で判り易いという使い道みたい。
いや、どんな Widget でも入れられるメリットもある。
でもデータの入れ替えが頻繁な場合は逆に面倒臭くなるなと。
「ドキュメント/ビューアーキテクチャ」とはいったい何だったのか。
ってデータをほとんど入れ替えないならコッチのほうがいいよね。
ということで、優木苗(cv日高里菜)は本当にカワイイです(gf は放置中