困った。
Gtk ? 4.0: Migrating from GTK 3.x to GTK 4
GTK4 Python のページを作っているんだが。
GtkWdget の draw シグナルが廃止されていたのを忘れていた。
つまり枠無しウインドウで背景透過させる手段が無くなった。
これじゃ萌え萌えなデスクトップマスコットが作れないじゃん。
いや作る気は全然無いんだけど。
それと button-press-event 等が GtkGesture を使いなさいに変わった。
GtkGestureClick を試してみたけどダブルクリックの検出ができないみたい。
パンやスワイプが AppKit なんかより簡単に実装できるようになっているけど。
#!/usr/bin/env python3 import gi, sys gi.require_version('Gtk', '4.0') from gi.repository import Gtk class Win(Gtk.ApplicationWindow): ''' GtkPan Sample Code TouchPanel and Mouse ''' def __init__(self, app): Gtk.ApplicationWindow.__init__(self, application=app) # var self.mem_pan = -1 # pan pan = Gtk.GesturePan(orientation=Gtk.Orientation.VERTICAL) pan.connect('pan', self.on_pan) self.add_controller(pan) # resize self.set_default_size(400, 300) def on_pan(self, ges, direction, offset): ''' Pan Up on Quit ''' if direction != self.mem_pan: self.mem_pan = direction if direction == Gtk.PanDirection.UP: self.close() class App(Gtk.Application): def __init__(self): Gtk.Application.__init__(self) def do_startup(self): Gtk.Application.do_startup(self) Win(self) def do_activate(self): self.props.active_window.present() app = App() app.run(sys.argv)
てか GTK4 はマジでタッチパネル前提ってことですね。
過去のを残すと WindowsForm みたいに誰も WPF を使わない、みたいになるし。
AppKit もネットで見つけたコードは非推奨ばかり、みたいになるし。
GTK4 は正常進化に見えて実は過去をバッサリって感じです。
ついでに、GTK+ のドキュメントはプロパティのデフォルト値を書いていない。
GtkPan::orientation のデフォルトは HORIZONTAL だった。
自分で確かめるしか今は手段が無い、面倒なんですけど。
GTK3 のをそのまま書き換えしようと思っていたけど無理だ。
どういう感じでまとめよう?あぁまた更新が滞る。。。。。