Firefox拡張入門第5回(Prefs.jsmライブラリ)
マッチFOXが生成するPrefs.jsmは、Firefox拡張でユーザ設定(about:configのアレ)を簡単に読み書きできるライブラリです。
ユーザ設定とは
ユーザ設定の項目の値には型があるので気をつけます。
- boolean (真偽値)
- integer (整数)
- string (文字列)
- など。
項目名が他人様のとカブらないように気をつけます。
"ブランチ"にまとめるように心がけましょう。
例えば拡張で使う項目名には"extensions."ブランチを使いましょう。
例: "javascript.options.strict"オプションを扱う
1. ライブラリを new する。
//ブランチを指定します。ピリオドで終わるのがポイント。 var prefs = new Prefs("javascript.options.");
2. trueにする
prefs.set("strict", true);
3. 取得する
var v = prefs.get("strict");
項目の型はライブラリが自動で判断してくれます(手動で指定もできます)。
リファレンスマニュアル
function: Prefs aBranchName 新しいインスタンスを作ります。 aBranchName ブランチ名。文字列。ブランチ名はピリオドで終わる必要があります。 function: get aPrefName &optional aDefaultValue aType 項目の値を取得します。 aPrefName 項目名。文字列。 aDefaultValue 取得に失敗したとき返す値。 aType 項目の型。文字列。下表1参照。 function: set aPrefName aValue &optional aType aRelFileRelativeToKey 項目の値をセットします。 aPrefName 項目名。文字列。 aValue セットする値。 aType 項目の型。文字列。下表2参照。 aRelFileRelativeToKey 相対ファイルパスの元ディレクトリ。"ProfD"など。文字列。 function: clear aPrefName 項目を削除します。 aPrefName 項目名。文字列。 function: getChildList &optional aStartingAt ブランチ以下の項目名たちを配列で返します。 aStartingAt ブランチ名。文字列。
表1(getのaType)
型 | aType | 動作 |
---|---|---|
真偽値 | "boolean" | getBoolPref(aPrefName) |
整数 | "integer" | getIntPref(aPrefName) |
文字列 | "string" | getComplexValue(aPrefName, Ci.nsISupportsString).data |
地域化文字列 | "localized" | getComplexValue(aPrefName, Ci.nsIPrefLocalizedString).data |
絶対ファイルパス | "file" | getComplexValue(aPrefName, Ci.nsILocalFile) |
相対ファイルパス | "relFile" | getComplexValue(aPrefName, Ci.nsIRelativeFilePref) |
表2(setのaType)
型 | aType | 動作 |
---|---|---|
真偽値 | "boolean" | setBoolPref(aPrefName, !!aValue) |
整数 | "integer" | setIntPref(aPrefName, +aValue) |
文字列 | "string" | setComplexValue(aPrefName, Ci.nsISupportsString, nsISupportsStringのインスタンス) |
地域化文字列 | "localized" | setComplexValue(aPrefName, Ci.nsIPrefLocalizedString, nsIPrefLocalizedStringのインスタンス |
絶対ファイルパス | "file" | setComplexValue(aPrefName, Ci.nsILocalFile, aValue) |
相対ファイルパス | "relFile" | setComplexValue(aPrefName, Ci.nsIRelativeFilePref, nsIRelativeFilePrefのインスタンス) |
相対ファイルパスについてはFile I/O - MDC参照。