Programming_of_NTE_3


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:

Comments are closed.