pygtk3 Variable Parameter

いきなり本題だが、GtkTreeView の並び順を変更するコードを書いていた。
以前の PyGtk では GtkTreePath が単なるタプルだったけどそうではないようだ。

GtkTreeModel
とにかく C 言語と同じように書けばいいだろう。
やってみると凄く簡単にできた、しかし…

''' old
def on_item_up(self, widget, event=None):
    selection = self.custome_treeview.get_selection()
    model, it = selection.get_selected()
    if it:
        path = model.get_path(it)
        if path[0] > 0:
            path2 = (path[0]-1, )
            itprev = model.get_iter(path2)
            if itprev:
                model.swap(it, itprev)
                self.change()
    else:
        self.messagebox(MESSAGE_NON_SELECT)
'''
# new
def on_item_up(self, widget, event=None):
    selection = self.custome_treeview.get_selection()
    model, it = selection.get_selected()
    if it:
        itprev = it.copy()
        if model.iter_previous(itprev):
            model.swap(it, itprev)
            self.change()
    else:
        self.messagebox(MESSAGE_NON_SELECT)

Python なのに戻り値で代入ではなく引数の値が直接変更されている。
model.iter_previous(itprev) が bool 値しか戻さないのでしばし悩んだ。
もしかして、とやってみたらこの結果。

こんなの ctypes の byref 以外で見たことが無い。
IronPython でさえ out だったら戻り値とまとめてタプルで戻すというのに。

てゆーか可能だったんだ。
明示的な型宣言ができない Python では問題がでないだろうか心配。

**********

それより Opera 11.11 の search.ini はどうなっているんだ?
Default Search キーの UUID を手書きで書き換えても本体に適用できない。
書き換えるとたとえ非表示にしていても Google と Yahoo が復活するんだが。
並べ替えは何も問題なく行われるのですが。
わけがわからないよ。

コンボボックスで簡単に変更できるようにしたけどまったく無意味になった。
こんなの酷いよ、あんまりだよ…

しかも Deleted を 1 にして Opera 本体機能で編集するとそのセクションが消滅する。
こんなの絶対おかしいよ。

とにかく現状では Default Search を弄くらず deleted を利用しなければ多分問題ない。
需要ゼロに等しいアプリだからこんなんでいいよね、もう少し改造と Debug をするけど。

GNOME3 の雰囲気に合わせて激シンプルへと向かっている。
バックアップ
seeme-1.9.1.tar.gz