いいかげんに Y901x が落ちまくる件とソート問題を解決させねば。
なんとかさせないと追加機能もやれないよ。
落ちる件は色々試しているんだがまだ原因が解らない、困った…
ソートに関しては自力を諦め Nautilus のコードをひたすら追う。
libnautilus-private/nautilus-file.c
に compare_by_display_name というソレっぽい関数をやっと見つける。
display_name_collation_key を strcmp で比較しているだけなのか。
g_utf8_collate_key_for_filename という glib の関数で代入している。
あれ、もしかして数値もドットもこの関数一つで解決してまうの?
Python には実装されていないようで。
最近のバージョンではあるかもと dir() で探しまくるも見つからず。
とにかくこの関数でどう変換されるのか気になるので C でやってみる。
Ubuntu 10.04 デフォルトでは gcc はあるけど gtk や glib のヘッダは無い。
Glade を入れれば依存関係で Devhelp を含めまとめて入るので Glade を入れる。
/* gcc b.c `pkg-config --cflags --libs gtk+-2.0` */ #include <stdio.h> #include <gtk/gtk.h> #include <glib.h> int main() { gchar *c; c = "a1.mp4"; gchar *u; u = g_utf8_collate_key_for_filename (c, -1); printf("%s to %s\n", c, u); /*g_free(c); is Segmentation fault*/ g_free(u); return 0; }
久々の C なんだがこんな感じでよかったかなぁ…
strcpy で警告になったのが Visual Studio と同じだったが代替が解らない。
とにかく結果。
なんだかよく解らないのに変換されとる。
後は比較関数を作って実験して上手くいったら…
Python で使うんだが、ctypes しか手が無いかな?