MozillaZine.jp フォーラム
https://forums.mozillazine.jp/

任意の条件で初期化されたXPCOMコンポーネントを自動的に返す方法について
https://forums.mozillazine.jp/viewtopic.php?f=26&t=5912
ページ 11

作成者:  Piro [ 2007年6月21日(木) 15:10 ]
記事の件名:  任意の条件で初期化されたXPCOMコンポーネントを自動的に返す方法について

新設されたフォーラムに初投稿ドキドキ。

先日からXUL/Migemoフォーク版のAPIを国際化を考慮したものに変更するという試みを行っているのですが、躓いています。

XUL/Migemo [Forked Edition] 0.6.xでAPIまわりがゴタゴタしてる件

このエントリに書いたような経緯で、以下のようなことができないものかと悩んでいます。

コード:
var xmJp = Cc['@piro.sakura.ne.jp/xmigemo/core;1?lang=ja']
                     .getService(Ci.pIXMigemo);
/*
 http://www.cozmixng.org/repos/piro/xulmigemo/tags/0.6.3/components/pXMigemoCore.js
 このpXMigemoCore.jsの中で
  var service = new pXMigemoCore();
  service.init('ja');
 した結果(service)がpIXMigemoのインターフェースでラッピングされて取得できる
*/

var xmEn = Cc['@piro.sakura.ne.jp/xmigemo/core;1?lang=en-US']
                     .getService(Ci.pIXMigemo);
/*
 pXMigemoCore.jsの中で
  var service = new pXMigemoCore();
  service.init('en-US');
 した結果(service)がpIXMigemoのインターフェースでラッピングされて取得できる
*/


わけのわからないままファクトリー(gModule)の定義をいじってみて、

コード:
return (new pXMigemoCore()).QueryInterface(aIID);


この箇所を

コード:
var instance = (new pXMigemoCore()).QueryInterface(aIID);
instance.init('ja');
return instance;


という風にしてみても、意図通りには動いてくれませんでした。

最終的に目指している所は、pXMigemoEngine*.jsといった感じの独自モジュールを開発したらそのファイルをポンとcomponentsフォルダの中に放り込むだけで

コード:
var xmMy = Cc['@piro.sakura.ne.jp/xmigemo/core;1?lang=my-lang']
                     .getService(Ci.pIXMigemo);


という使い方ができるようになればいいなあ、と思っているんですが。

こういう場合はやはり現状のようにファクトリーの自作サービスを用意してそれを使うしか無いのでしょうか?

ページ 11 All times are UTC + 9 hours
Powered by phpBB® Forum Software © phpBB Group
http://www.phpbb.com/