我がアプリの GTK+ 3 化を進めていく予定であったのだが…
Gst 関連がどうしても上手くいかなくて更新が止まっている…
clipoli も xpm を読み込む方法がイマイチ解らない…
とにかく解った部分から書き出していこう。
そういえばコレは PyGI からなら呼び出しできるのかな?
GLib で普通に g_utf8_collate_key_for_filename が見つかった。
よし試してみよう。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 | 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 を指定する)
1 2 3 | from gi.repository import GLib GLib.utf8_strlen( "ちゆ12さい" , - 1 ) #=> 6L len ( "ちゆ12さい" ) #=> 14 |
Windows API もこんな感じだったらもっと面白かったのにな。