開発中のGUI部品である国際化TextArea, TextLine, Buttonと垂直方向Scrollbarオブジェクト、およびレイアウトマネージャ、コントロールマネージャを利用した、実装例としてのエディタです。
ニュース
2001-06-25
editor-20010625.tar.gzをリリース(リリースノート)。
特徴
X11R6の環境下で動作する本エディタの特徴は以下の通りです。
- ロケールにより国際化に対応
- 現時点では左から右に書く言語のみを扱える(はず)。国際化テキストの入力にはXIMプロトコルを使用するIMサーバ(例えば日本語の場合kinput2やVJE-Deltaなど)が必要。
- 可変長の文字幅をもつフォントを使用可能
- フォントセットが定義されれば、任意のサイズ、可変長の文字幅をもつのフォントが使用可能(ただし、IMサーバはサポートしないかもしれない)。
- リソースによりカスタマイズ可能
- 前景色、背景色などをはじめ、キーバインディングも変更可能。
- セレクションによるカットアンドペーストに対応
- エディタなら当然の機能(ただしコンパウンドテキストの転送は、お互いのクライアントが同じロケールで動作していないと成功しない)。
- スケーラブルな編集記号
- 改行記号、行連結記号、タブ記号、EOF記号などはスケーリングされる。
スクリーンショット
ウィンドウマネージャにはqvwmを使用している。
On-The-Spot入力の様子
漢字は固定幅のフォントで英数字は可変長の場合
フォントにはリコーのTrueTypeWorld平成角ゴシックW3とアドビのHelveticaを使用(16pt)。IMサーバはVJE-Delta(フォントを変更するようにパッチを当てたもの)。
漢字と英数字の両方が可変長の場合
フォントにはリコーのTrueTypeWorld平成角ゴシックW3とアドビのHelveticaを使用(16pt)。
スクロールバーと領域選択
タブ
フォントにはリコーのTrueTypeWorld平成角ゴシックW3とアドビのCourierを使用(16pt)。
背景ピクスマップ
ダウンロード・ビルド
最新版はeditor-20010625.tar.gz
です。動作確認したプラットフォームはFreeBSD 2.2.8だけですが、Solarisでも動くと思います。
tar ballを展開後、環境に合うようにImakefile
を編集してください。アイコンウィンドウを用いる場合は、shape extentionとXpmライブラリを使用するので、Imakefile
で次のように定義します。
#define ShapeIcon
あとはxmkmf -a ; make
で完了するはずです。
使用法
次のように起動します。
% setenv LANG
ロケール名
% setenv XMODIFIERS @im=IMサーバ名
% xrdb -merge リソースファイル
% editor ファイル名
FreeBSDでは、実際には次のようになります。
% setenv LANG ja_JP.EUC
% setenv XMODIFIERS @im=vje
% xrdb -merge Editor.ad
% editor sample.doc
起動後、編集領域をクリックすれば、編集が可能になります。左から1番目のボタンをクリックすると編集テキストを指定のファイル名で保存します。左から2番目のボタンをクリックすると編集テキストを放棄し、指定のファイル名の内容を読み込みます。ウィンドウマネージャから「ウィンドウを閉じる」を選択すると終了します。
「On-The-Spot入力(その場入力)」の制限
Kinput2がバージョン3以降でOn-The-Spotをサポートしたのをきっかけに、この国際化エディタもOn-The-Spot入力をサポートすることにしました。ただし、今のところ次のような制限があります。
- TextArea/TextLineで利用可能。前編集文字列がある場合は、通常のキーイベントを無視するため、カーソルの移動などの操作はXIMサーバ側の操作に依存する。
- 前編集文字列が存在する状態でフォーカスが移動(スクロールバーの操作、画面のリサイズなどでポインタがグラブされる場合も含む)すると、その前編集文字列はキャンセルされる。
- 前編集文字列が存在する状態では、マウスによるカーソル移動はできない。
前編集文字列の前景色はリソース
editor.edit.text.preedited
editor.filename.text.preedited
で指定します。
On-The-Spot入力を利用するには、リソースeditor.ximStyle
に
PreeditCallbacks
,StatusNone
PreeditCallbacks
,StatusNothing
PreeditCallbacks
,StatusArea
のいずれかを指定します。状態表示領域はOn-The-Spotに対応していないので、
PreeditCallbacks
,StatusCallbacks
は利用できません。
リソース
リソース一覧を用意しておきました。
ボタンのラベル文字列を設定しないと実用的ではないでしょう。それ以外はデフォルトのまま使用しても問題ないでしょう。一応サンプルのリソースファイルを用意しておきました。
やること
以下の課題がある。
- サポートするセレクションターゲットの数を増やす。
- プロパティ名の命名規則を考える。
- Insertキーでセレクションを挿入する。
- 背景ピクスマップのビジュアルクラスの確認。
- 背景ピクスマップをクリアできるようにする。
- タブの間隔をリソースで指定可能に。
- 描画速度を速くする。
- ウィンドウの際の再フォーマットの処理を軽くする。
- コマンドラインオプションから設定を得る。
- エラー処理をもっと丁寧に。