Next Button

前々回の更新で Comipoli にマウスのスワイプで次ページ機能を付けた。
二週間使ってみたけど駄目だこりゃ、どうしても使い辛い。

スワイプはタッチパネルだから直感的に使えるとよく解った。
マウスはやはり移動とクリック以外をさせてはいけない。
eog の次画像表示がボタンになったのは多分散々議論した結果なのだろう。

それとフルスクリーン化はやはりダブルクリックですよね。
スワイプ操作とバッティングするので外したけどあったほうが良さげ。
なんたって操作性を eog 同様にしたいんだからそうするべき。

ということで Comipoli にもストック画像でボタンを追加。
具体的には go-next-symbolic 等を。

GTK3 Demo – L’Isola di Niente

ってコレはどうやって ClutterImage に取り込みするのだ?
GtkButton なら簡単なんだけど、手段が解らない。

しかたがないので自作画像で。
XPM は透過属性があるので RGBA_8888 を指定。
#2E2E2E でダークテーマの色とほぼ一致するみたい。

#!/usr/bin/env python3

from gi.repository import GdkPixbuf, Clutter, Cogl

ICON_RIGHT = [
"32 32 3 1",
" 	c None",
".	c #2E2E2E",
"+	c #FFFFFF",
".........+......................",
".........++.....................",
".........+++....................",
".........++++...................",
".........+++++..................",
".........++++++.................",
".........+++++++................",
".........++++++++...............",
".........+++++++++..............",
".........++++++++++.............",
".........+++++++++++............",
".........++++++++++++...........",
".........+++++++++++++..........",
".........++++++++++++++.........",
".........+++++++++++++++........",
".........+++++++++++++++........",
".........+++++++++++++++........",
".........+++++++++++++++........",
".........++++++++++++++.........",
".........+++++++++++++..........",
".........++++++++++++...........",
".........+++++++++++............",
".........++++++++++.............",
".........+++++++++..............",
".........++++++++...............",
".........+++++++................",
".........++++++.................",
".........+++++..................",
".........++++...................",
".........+++....................",
".........++.....................",
".........+......................"]

ICON_LEFT = [
"32 32 3 1",
" 	c None",
".	c #2E2E2E",
"+	c #FFFFFF",
"......................+.........",
".....................++.........",
"....................+++.........",
"...................++++.........",
"..................+++++.........",
".................++++++.........",
"................+++++++.........",
"...............++++++++.........",
"..............+++++++++.........",
".............++++++++++.........",
"............+++++++++++.........",
"...........++++++++++++.........",
"..........+++++++++++++.........",
".........++++++++++++++.........",
"........+++++++++++++++.........",
"........+++++++++++++++.........",
"........+++++++++++++++.........",
"........+++++++++++++++.........",
".........++++++++++++++.........",
"..........+++++++++++++.........",
"...........++++++++++++.........",
"............+++++++++++.........",
".............++++++++++.........",
"..............+++++++++.........",
"...............++++++++.........",
"................+++++++.........",
".................++++++.........",
"..................+++++.........",
"...................++++.........",
"....................+++.........",
".....................++.........",
"......................+........."]

class ComipoliGoButton(Clutter.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)
        self.connect("enter-event", self.on_enter_event)
        self.connect("leave-event", self.on_leave_event)
        self.props.opacity = 0x00
        self.set_reactive(True)

    def on_enter_event(self, actor, event):
        self.props.opacity = 0xff

    def on_leave_event(self, actor, event):
        self.props.opacity = 0x00

で。
eog の表示はウザいのでマウスカーソルが乗った時だけ表示させる。
ボタンを大きくしたいので縦に引伸し、これはウインドウ側に実装。

Linux アプリケーション – L’Isola di Niente

で上記スクリーンショットのようになりました。
いや、バージョンが上がったら画像はまた変更するけど。
ストックの取り込みが解ったら変更するかもしれない。

ウインドウの隅にカーソルを移動するだけだから直感的に使えると思う。
そういえばマウスジェスチャってすっかり廃れたよね。
マウスボタンを押しながら移動ってやっぱり全然直感的じゃないのよ。

キモヲタならロッカージェスチャとかホイールのほうがいいとか言うかも。
それを言うのは Windows しか使えない人だけですから。
特に右クリックはコンテキストメニュー以外には使ってはいけない。
というのが現在の Mac と GNOME が共通する思想です。