Programming of NTEncoding (3)
=============================
ども、GNUE(鵺)っす。
NTEncoding講座の3回目です。
今回は Prefs についてです。
【何故必要か?】
NTEncoding の Prefs には2つの意味があります。
1) エンコーディングの種類を切り替える
パソコンと通信する場合は ShiftJIS ですが、例えばUNIXと通信したい
場合は EUC(変換モジュールはまだない(^^;)とコード変換する必要が
あります。そういった場合、プログラムを変更することなく Prefs で
エンコーディングの種類を切り替えるだけで対応できます。
その他にも、中国語の変換モジュールが作成されれば、そのまま中国語
のコード変換が可能になります。
Web Browser の Encoding 設定をイメージしてもらうとわかりやすいか
もしれません。
2) 変換モジュールの優先順位を決める
NTEncodingではプログラマが用途に応じて変換モジュールをつくること
ができるようになっています。例えば、パッケージのサイズが大きいけ
ど処理速度の速い変換モジュールとか、NEC 外字に対応した変換モジュ
ールなどです。
そうすると、同じ種類の複数の変換モジュールがNewtonにインストール
される可能性があります。そういった場合、どの変換モジュールを使っ
ていいかプログラムがわからなくなってしまいます。そこでどの優先順
位で変換モジュールを使うかを決めるわけです。
【どうやって使うか?】
NTEncoding では NTE_protoPrefsRollItem と NTE_protoPrefsItem という2つ
の proto を用意しています。NTE_protoPrefsRollItem は protoPrefsRollItem
ベースでそのまま RegPrefs や TapBarの kRegTapBarPrefFunc で登録すること
ができます。もっと独自の Prefs にしたいという場合は NTE_protoPrefsItem
を使ってカスタマイズします。
ここでは NTE_protoPrefsRollItem を例にとります。
defineGlobalConstant('kNTE_prefs,
{
_proto: NTE_protoPrefsRollItem,
overview: kAppName, // タイトル
defaultEncoding: '|string.sjis|, // デフォルト
classSpec: {subClass: 'string}, // '|string.xxxx|
のみ選択可能
viewSetupFormScript:
func()
begin
self.appPrefs := getAppPrefs(kAppSymbol, {});
self.prefs := appPrefs.NTEncoding; // prefs を設定
inherited:?viewSetupFormScript();
end,
changedPrefs:
func(slot)
begin
appPrefs.NTEncoding := prefs; // prefs を保存
entryChangeXmit(appPrefs, nil);
end,
});
InstallScript := func(partFrame, removeFrame)
begin
RegPrefs(kAppSymbol, kNTE_prefs);
end;
RemoveScript := func(removeFrame)
begin
UnRegPrefs(kAppSymbol);
end;
この Prefs の設定を使用するには
local prefs := getAppPrefs(kAppSymbol, {}).NTEncoding;
local def := NTE_methods:GetPrefsNTEncoding(prefs, '|string.sjis|);
local str := NTE_methods:uni2code("てすと", def, nil);
を使います。
詳しい使い方に関しては 1.0 SDK のドキュメントを参考にして下さい。
---
(c)1997 GNUE.
※このドキュメントは NIFTY-Serve の FNEWTON で発言したものの再録です
Tags: Newton