GTK4 は TreeView の他に IconView も廃止なんだね。
GlidView が後継のようで、Nautilus 43 のもコレっぽい。
GtkDemo にサンプルが無い、自力で試してみよう。
#!/usr/bin/env python3 import gi, sys gi.require_version('Adw', '1') gi.require_version('Gtk', '4.0') from gi.repository import Gtk, Gio, GObject, Adw class Items(GObject.Object): def __init__(self, items): self.items = items super(Items, self).__init__() class TestWindow(Gtk.ApplicationWindow): def __init__(self, app): # Set Adwaita Style manager = Adw.StyleManager.get_default() manager.set_color_scheme(Adw.ColorScheme.DEFAULT) # init Gtk.ApplicationWindow.__init__(self, application=app, title='GridView') # model = Gio.ListStore() model.append(Items(['OM SYSTEM', 'pen'])) model.append(Items(['LUMIX', 'GH6'])) # #sel_model = Gtk.SingleSelection(model=model) sel_model = Gtk.MultiSelection(model=model) # factory1 = Gtk.SignalListItemFactory() factory1.connect('setup', self.on_listitem_setup) factory1.connect('bind', self.on_listitem_bind1) # listnview = Gtk.GridView(model=sel_model, factory=factory1) listnview.connect('activate', self.on_columnview_activate) # self.set_child(listnview) self.set_default_size(200, 200) def on_listitem_setup(self, factory, item): label = Gtk.Label(label='oman') item.set_child(label) def on_listitem_bind1(self, factory, item): l = item.get_item() label = item.get_child() label.props.label = l.items[0] def on_columnview_activate(self, list, pos): print(1) class TestApplication(Gtk.Application): def __init__(self): Gtk.Application.__init__(self, application_id='org.omsystem.om1') def do_activate(self): w = TestWindow(self) w.present() app = TestApplication() app.run(sys.argv)
ちょっと驚いた、という不正確な日本語での表現にしておくけどナルホドなぁ。
完全に GTK4 の ListView と同様の手順、いや当然狙ってそうしたのだろう。
Box を使ってレイアウトすれば Nautilus 43 の見た目にはできるね。
ついでに。
init 直後に書いた Adw 用途の命令って GTK4 全部に影響するのね。
上記のまま全体の DarkMode にしてみたら。
あぁ macOS や iOS の DarkMode は開発者に丸投げだったもんな。
GNOME はこうしたんですね、いや勘違いかもしれないけれど。