以前 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 は放置中