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 で発言したものの再録です