ClutterActor on the GtkWidget

今頃気が付いた、sushi は cbr/cbz を表示できる!

あ、sushi は nautilus で Space キーにてプレビューする拡張。
macOS のプレビューと同じものね、Fedora には最初から入っている。

でも巨大ファイルだと最初の表示が遅いなぁ。
CPU 全コアを使って展開しているけど全部読み込むまで表示されないっぽい。
マルチスレッドのほうがいいというわけではないのね。
Evince と同じなので多分 gir で Evince を使って…

そうか、gir で Evince を使えばいいのか!
読み込みの工夫で初回表示を早くできれば我がアプリに使えるかも。
sushi は Gjs だ、早速コードを見てみよう。

gedit /usr/share/sushi/js/viewers/evince.js

gtkclutter

うぅ、思ったより解析に時間が掛りそうだ。
いやまてよ、この下のほうのコードはまさか。
おまけで ClutterActor 上に GTK+ 部品を乗せる方法が解ったぞ。

#class ComipoliGoButton(Clutter.Actor):
class ComipoliGoButton(GtkClutter.Actor):
    def __init__(self, right):
        '''Clutter.Actor.__init__(self)
        if right:
            pixbuf = GdkPixbuf.Pixbuf.new_from_xpm_data(ICON_RIGHT)
        else:
            pixbuf = GdkPixbuf.Pixbuf.new_from_xpm_data(ICON_LEFT)
        image = Clutter.Image()
        image.set_data(
            pixbuf.get_pixels(),
            Cogl.PixelFormat.RGBA_8888,
            pixbuf.get_width(),
            pixbuf.get_height(),
            pixbuf.get_rowstride()
        )
        self.set_content(image)'''
        GtkClutter.Actor.__init__(self)
        if right:
            self.icon = Gtk.Button.new_from_icon_name("go-next-symbolic", Gtk.IconSize.MENU)
        else:
            self.icon = Gtk.Button.new_from_icon_name("go-previous-symbolic", Gtk.IconSize.MENU)
        #self.set_content(self.icon)
        self.props.contents = self.icon
        self.icon.show()
        #self.connect("enter-event", self.on_enter_event)
        #self.connect("leave-event", self.on_leave_event)
        #self.props.opacity = 0x00
        self.set_reactive(True)

うんうん。

gtkclutter2

ClutterActor 継承をヤメにして GtkClutterActor にする。
set_content だと例外になるけど property なら何故かセット可能。
上に GtkWidget があるせいで enter-event が動作しないので変える。
コレだけで普通に GtkWidget と相互の上下関係が作れる、やったね。

よし久々に comipoli の更新でもするか。
でも今日は「名駅周辺でポケボール集め」という大切な大切な用事が…
我が町でポケ GO をやっているとすぐ無くなっちゃうのは痛い。