我がアプリの GTK+ 3 化を進めていく予定であったのだが…
Gst 関連がどうしても上手くいかなくて更新が止まっている…
clipoli も xpm を読み込む方法がイマイチ解らない…
とにかく解った部分から書き出していこう。
そういえばコレは PyGI からなら呼び出しできるのかな?
GLib で普通に g_utf8_collate_key_for_filename が見つかった。
よし試してみよう。
from gi.repository import GLib l = [ "40.txt", "200.txt", "001.txt", "02.txt", "03.txt", "123456.txt"] l.sort(lambda x, y : cmp(GLib.utf8_collate_key_for_filename(x, -1), GLib.utf8_collate_key_for_filename(y, -1))) for s in l: print s ''' output 001.txt 02.txt 03.txt 40.txt 200.txt 123456.txt '''
うん Nautilus 名前順ソートと同じ数値優先順になるね。
もう ctypes という危なっかしいものを使わなくて済みそう。
しかし今更ながら GLib って色々できるんだね。
たとえば日本語を含む UTF-8 文字列の長さを得る関数もある。
(バイト数では日本語は 2〜3 byte になる)
(そうそう、max バイト数未指定の場合は -1 を指定する)
from gi.repository import GLib GLib.utf8_strlen("ちゆ12さい", -1) #=> 6L len("ちゆ12さい") #=> 14
Windows API もこんな感じだったらもっと面白かったのにな。