cancelOperation

OS Xアプリケーションにおける環境設定ウィンドウの作り方 ? Genji App Blog

esc でウインドウを閉じるには cancelOperation を処理するだけなのか。
でも書いてあるとおり macOS でこの動作は一時的なウインドウのみ。

オリジナルは Eye of GNOME に合わせて esc で終了できるようにしているけど。
macOS 版では本体を閉じる設定は無しにしたほうがいいようだ。
設定ウインドウやサムネイルウインドウに適用することに。

それから、macOS ってスピンボタンが全然使われていないよね。
NSStepper というものが一応あるんだけど、どのアプリも使っていない。
macOS っぽいものにしたいのでサムネイルサイズ設定は NSSlider にする。
80-200 の 20px ステップで問題無いだろう。

それから、macOS アプリの設定はどれも全体設定になっている。
つまりグローバル変数にする必要がある。
どうせなら NSApp にくっつけときたいよね、ということで。

class ComipoliApplication(NSApplication):
    # global variable
    init_frame = None
    esc_close = False
    is_pdf = False
    thumbnail_height = 120
    is_unrar = False
    is_7za = False

def main():
    #NSApplication.sharedApplication()
    ComipoliApplication.sharedApplication()

サブクラスにしちゃえです。

それと macOS でマウスを使っている人はいない、と思う。
マウスカーソルを変更してクリックでページめくりもいらないな。

設定は二つだけになってもーた。
そんなこんなで、こいつでやりたかった機能は全部付いた。
PyObjC の参考にでも使ってね。
comipoli_pyobjc_3.tar.gz

後は app 化。
py2app ってのでイケるらしいけど分割ファイルでの手段が見付からない。
たいした行数ではないので一つのソースにまとめてもいいんだけど。