wxStyledTextCtrlのUnicode化
2005年12月10日
Honeycombのエディタ部であるwxStyledTextCtrlの設定をいろいろといじっていたのだが、どうもUnicode化する際に色々と手間のかかる仕様らしく、あれこれと調べまわる羽目に。
wxStyledTextCtrlをUnicodeに対応させるためにはwxUSE_UNICODEをコンパイル時にdefineしてやらなければならない。これを定義すると、そもそもTextCtrlの方がUnicode化するので後々操作が楽。その後デフォのwxStyledTextCtrl::LoadFileはUTF-16やUTF-32には使えないのでLoadFileをオーバーライドする。
どういうわけかwxUSE_UNICODEを利用しているにも関わらずchar型でテキストを読み込もうとしている。これはUTF-8しか使えませんということなのだろうか…
バッファとして用いているwxStringのコンストラクタでは*wxConvCurrentを指定しているので、ロケールをそもそもUTF-8にしないとUnicodeを利用するのは無理そうだ。
というわけで、ファイルをバッファに読み込むのは独自に実装するとして、
SetText(バッファ);
EmptyUndoBuffer();
SetSavePoint();
でエディタにバッファを投げ、アンドゥ・セーブポイントを初期化。
InitializePrefsでStyleを拡張子に合わせてセットしてスクリーンショットのような状態まで持っていった。
うーん、なかなか。
wxStyledTextCtrlをUnicodeに対応させるためにはwxUSE_UNICODEをコンパイル時にdefineしてやらなければならない。これを定義すると、そもそもTextCtrlの方がUnicode化するので後々操作が楽。その後デフォのwxStyledTextCtrl::LoadFileはUTF-16やUTF-32には使えないのでLoadFileをオーバーライドする。
どういうわけかwxUSE_UNICODEを利用しているにも関わらずchar型でテキストを読み込もうとしている。これはUTF-8しか使えませんということなのだろうか…
バッファとして用いているwxStringのコンストラクタでは*wxConvCurrentを指定しているので、ロケールをそもそもUTF-8にしないとUnicodeを利用するのは無理そうだ。
というわけで、ファイルをバッファに読み込むのは独自に実装するとして、
SetText(バッファ);
EmptyUndoBuffer();
SetSavePoint();
でエディタにバッファを投げ、アンドゥ・セーブポイントを初期化。
InitializePrefsでStyleを拡張子に合わせてセットしてスクリーンショットのような状態まで持っていった。
うーん、なかなか。
コメント