以前wxStyledTextCtrl/wxScintillaの日本語入力の不具合を改修したと書いた。
改修したwxStyledTextCtrl/wxScintillaはWindowsのみ日本語入力が直っており、
Linux(GTK版)は依然としておかしいまま。
なのでwxWidgets自体あきらめてGTKを使おうかと考えて現在GTKを色々調べている。
GTKはWindowsでも使用することができるのでクロスプラットフォームという点では
wxWidgetsと大して変わらない。
そうして今回は別の方法を試していて新たな問題にぶち当たった。
いざGTK版の自作テキストエディタを作成し始めた。
Linux版は至って順調。GUIがきれいにまとまっている。
Windows版は・・・独自の描画をしているためWindows本来のGUIではないため少々違和感がある。
ただこれは専用のライブラリを同梱すればGUIだけはWindows本来のものと同じになるため
たいした問題ではないだろう。
GTKにはGtkSourceViewというテキストコントロールがあり使い方も結構簡単に様々な言語の色分けが実現できる。
GtkSourceViewがScintillaと違う点は次のものがある。
・表示(View)と表示内容(Buffer)のクラスが分かれており、自由にViewとBufferを接続することが出来る。
→ちょっと工夫するだけで文章の分割表示などが実現可能
・言語の色分けの定義に外部のXMLファイルを使うことが出来る。(動的に言語設定を増やすことが可能)
→Scintillaはどうもソースコードレベルで組み込んでしまっている?
・改行文字の表示が判別できない(常に一定のマーク)
→Scintillaは表示を分けられる
などがあるが概ねコーディングしやすい設計になっている。
WindowsでもLinuxでもそれは変わらず、非常に安心していた。
が、Windows版で非常に大きな問題発見。
巨大ファイルを開いた時にテキストの表示が非常に遅い!!
これはWindows版geditやnotecaseでも同様で、GTK全般で遅いようだ。
原因は多分、独自の描画をしているためだろう。
こればかりはどうしようもない・・・。
試したのは24MBのテキストファイル。
比較対象はEmEditorや旧バージョンの自作テキストエディタ。
■ファイルを開くテスト
EmEditor・・・神速。すっげぇ性能だな。
新旧自作テキストエディタ・・・どっこいどっこい。旧バージョンの方が若干早い。
■スクロール・カーソル移動
EmEditor・・・高速
旧自作テキストエディタ・・・高速
新自作テキストエディタ・・・劇的に遅い。ちなみにLinux版では意外や意外、結構早い。
Linux版はいいとしても、Windows版がこれでは不評を買うだろう。
仕方ない。最後の方法だ。
wxSourceViewの開発だ。
Windows版ではwxStyledTextCtrl、Linux版ではwxSourceViewを使い、
内部でインターフェースを合わせて新バージョンの自作テキストエディタを実現するしかない。
こうすることで若干の表示や機能の違いはあれど、両方の環境で日本語入力が正常に出来る
テキストエディタを実現できそう。
さて、wxSourceViewの開発をするか。
改修したwxStyledTextCtrl/wxScintillaはWindowsのみ日本語入力が直っており、
Linux(GTK版)は依然としておかしいまま。
なのでwxWidgets自体あきらめてGTKを使おうかと考えて現在GTKを色々調べている。
GTKはWindowsでも使用することができるのでクロスプラットフォームという点では
wxWidgetsと大して変わらない。
そうして今回は別の方法を試していて新たな問題にぶち当たった。
いざGTK版の自作テキストエディタを作成し始めた。
Linux版は至って順調。GUIがきれいにまとまっている。
Windows版は・・・独自の描画をしているためWindows本来のGUIではないため少々違和感がある。
ただこれは専用のライブラリを同梱すればGUIだけはWindows本来のものと同じになるため
たいした問題ではないだろう。
GTKにはGtkSourceViewというテキストコントロールがあり使い方も結構簡単に様々な言語の色分けが実現できる。
GtkSourceViewがScintillaと違う点は次のものがある。
・表示(View)と表示内容(Buffer)のクラスが分かれており、自由にViewとBufferを接続することが出来る。
→ちょっと工夫するだけで文章の分割表示などが実現可能
・言語の色分けの定義に外部のXMLファイルを使うことが出来る。(動的に言語設定を増やすことが可能)
→Scintillaはどうもソースコードレベルで組み込んでしまっている?
・改行文字の表示が判別できない(常に一定のマーク)
→Scintillaは表示を分けられる
などがあるが概ねコーディングしやすい設計になっている。
WindowsでもLinuxでもそれは変わらず、非常に安心していた。
が、Windows版で非常に大きな問題発見。
巨大ファイルを開いた時にテキストの表示が非常に遅い!!
これはWindows版geditやnotecaseでも同様で、GTK全般で遅いようだ。
原因は多分、独自の描画をしているためだろう。
こればかりはどうしようもない・・・。
試したのは24MBのテキストファイル。
比較対象はEmEditorや旧バージョンの自作テキストエディタ。
■ファイルを開くテスト
EmEditor・・・神速。すっげぇ性能だな。
新旧自作テキストエディタ・・・どっこいどっこい。旧バージョンの方が若干早い。
■スクロール・カーソル移動
EmEditor・・・高速
旧自作テキストエディタ・・・高速
新自作テキストエディタ・・・劇的に遅い。ちなみにLinux版では意外や意外、結構早い。
Linux版はいいとしても、Windows版がこれでは不評を買うだろう。
仕方ない。最後の方法だ。
wxSourceViewの開発だ。
Windows版ではwxStyledTextCtrl、Linux版ではwxSourceViewを使い、
内部でインターフェースを合わせて新バージョンの自作テキストエディタを実現するしかない。
こうすることで若干の表示や機能の違いはあれど、両方の環境で日本語入力が正常に出来る
テキストエディタを実現できそう。
さて、wxSourceViewの開発をするか。
※コメント投稿者のブログIDはブログ作成者のみに通知されます