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参照。