1 /* coded by Ketmar // Invisible Vector (psyc://ketmar.no-ip.org/~Ketmar)
2 * Understanding is not required. Only obedience.
4 * This program is free software. It comes without any warranty, to
5 * the extent permitted by applicable law. You can redistribute it
6 * and/or modify it under the terms of the Do What The Fuck You Want
7 * To Public License, Version 2, as published by Sam Hocevar. See
8 * http://www.wtfpl.net/txt/copying/ for more details.
10 // WARNING! there is no `require` yet!
11 //Cu.import("resource://gre/modules/Services.jsm", this);
14 ////////////////////////////////////////////////////////////////////////////////
15 const PREF_BRANCH
= "extensions.guerilla.";
18 //libdir: "%PROFILE%/guerillajs/libs",
19 openErrorConsoleOnStartup
: false,
24 jsdir
: "guerillajs", // relative to profile dir
25 libdir
: "guerillajs/libs", // relative to profile dir
26 dbdir
: "guerillajs_data", // relative to profile dir
27 pkgdir
: "guerillajs_packages", // relative to profile dir
31 ////////////////////////////////////////////////////////////////////////////////
33 observe: function (aSubject
, aTopic
, aData
) {
34 //conlog("data: ["+aData+"]; subj="+aSubject+"; topic="+aTopic);
35 let name
= aData
.substr(PREF_BRANCH
.length
);
36 //conlog("name: ["+name+"]");
37 let prf
= Services
.prefs
;
39 case "openErrorConsoleOnStartup": debugOptions
.openConsole
= prf
.getBoolPref(aData
); break;
40 case "debugMode": debugOptions
.debugMode
= prf
.getBoolPref(aData
); break;
41 case "debugCache": debugOptions
.debugCache
= prf
.getBoolPref(aData
); break;
42 case "logEnabled": debugOptions
.logEnabled
= prf
.getBoolPref(aData
); break;
43 case "active": guerillaOptions
.active
= prf
.getBoolPref(aData
); break;
49 function initPrefs () {
50 Services
.prefs
.addObserver(PREF_BRANCH
, PREF_OBSERVER
, false);
54 function deinitPrefs () {
55 Services
.prefs
.removeObserver(PREF_BRANCH
, PREF_OBSERVER
);
59 ////////////////////////////////////////////////////////////////////////////////
60 function setDefaultPrefs () {
61 let branch
= Services
.prefs
.getDefaultBranch(PREF_BRANCH
);
62 for (let [key
, val
] in Iterator(PREFS
)) {
64 case "boolean": branch
.setBoolPref(key
, val
); break;
65 case "number": branch
.setIntPref(key
, val
); break;
66 case "string": branch
.setCharPref(key
, val
); break;
72 ////////////////////////////////////////////////////////////////////////////////
73 function getUserXXDir (name
, createit
) {
76 dn
= Services
.prefs
.getCharPref(PREF_BRANCH
+name
);
79 if (dn
.length
&& dn
[0] == '/') {
80 res
= Cc
["@mozilla.org/file/local;1"].createInstance(Ci
.nsILocalFile
);
83 res
= getProfileDir();
84 if (dn
.length
) res
.append(dn
);
85 if (createit
&& !res
.exists()) res
.create(res
.DIRECTORY_TYPE
, 0750);
91 ////////////////////////////////////////////////////////////////////////////////
92 // get userjs directory
93 function getUserJSDir () { return getUserXXDir("jsdir", true); }
94 addExport("getUserJSDir", getUserJSDir
);
96 function getUserDBDir () { return getUserXXDir("dbdir", true); }
97 addExport("getUserDBDir", getUserDBDir
);
99 function getUserLibDir () { return getUserXXDir("libdir", true); }
100 addExport("getUserLibDir", getUserLibDir
);
102 function getUserPkgDir () { return getUserXXDir("pkgdir", true); }
103 addExport("getUserPkgDir", getUserPkgDir
);
106 ////////////////////////////////////////////////////////////////////////////////
107 function getGuerillaPref (name
) {
108 if (typeof(name
) == "string" && (name
in PREFS
)) {
110 return Services
.prefs
.getBoolPref(PREF_BRANCH
+name
);
114 logError("guerilla: invalid preference request for '"+name
+"'");
117 addExport("getGuerillaPref", getGuerillaPref
);
120 ////////////////////////////////////////////////////////////////////////////////
121 debugOptions
.debugMode
= getGuerillaPref("debugMode");
122 debugOptions
.debugCache
= getGuerillaPref("debugCache");
123 debugOptions
.logEnabled
= getGuerillaPref("logEnabled");
124 debugOptions
.openConsole
= getGuerillaPref("openErrorConsoleOnStartup");
125 guerillaOptions
.active
= getGuerillaPref("active");