自作のXPCOM
ライセンスはMPL 1.1/GPL 2.0/LGPL 2.1なのでそのライセンスの範囲内でご自由に使用してください。
拡張のcomponentsフォルダに放り込むだけで使えるようになります。
ソースを変更する時はcontractIDを変更してください。contractIDはバージョン以外の所も変更してください(こっちの変更とバッティングしてしまうので)。インターフェースを変更するときは必ずAPI名を変更してください。
compreg.datとxpti.datを消して再起動するまではキャッシュは残るので変更した時はキャッシュを削除してください。
設定関係(nzPref)
設定関係を簡単に扱います。
ソースの例
var pref=Components.classes["@nazo/pref;1"].createInstance(Components.interfaces.nzIPref);
pref.setRoot("test@nazo");
var pref1=pref.getChild("pref1");
pref1.value="test";
alert(pref1.value);
pref1.value=null;//サクージョ
特に問題は無いはず。idlはいったん固める。エラーチェックが適当なのをどうにかしたい
拡張データ関係(nzExtensionCommon)
拡張のバージョンだとかを簡単に取り出します。
- nzExtensionCommon.js
- nzIExtensionCommon.xpt
- nzIExtensionCommon.idl(nzIExtensionCommon.xptのソース。特に必要ない)
ソースの例
var ec=Components.classes["@nazo/extensions/common;1"].createInstance(Components.interfaces.nzIExtensionCommon);
ec.init("test@nazo");
alert(ec.name);
1.5には対応してません(extensionをitemsに変更すればok)。contributorは配列を渡してください。
実行アプリ関連(nzRunningApp)
実行されているアプリケーションを得ます。
ソースの例
var app=Components.classes["@nazo/runapp;1"].createInstance(Components.interfaces.nzIRunningApp);
app.init("test@nazo");
app.getApp();
if(app.isApp(app.FIREFOX)){
//firefoxでの処理
}else if(app.isApp(app.XULRUNNER)){
//xulrunnerでの処理
}
特に問題は無いはず。Flockにはまだ対応してません。それとなるべく比較にはisAppを使うこと。