]> git.gir.st - VimFx.git/blob - extension/packages/prefs.coffee
Fixed default properties
[VimFx.git] / extension / packages / prefs.coffee
1 { classes: Cc, interfaces: Ci } = Components
2
3 { unload } = require 'unload'
4
5 PREF_BRANCH = 'extensions.VimFx.'
6 DEFAULT_PREFS_FILE = 'defaults/preferences/defaults.js'
7
8 # Default values for preferences are now specified in
9 # defaults/preferences/defaults.js
10
11 getBranchPref = (branch, key, defaultValue) ->
12 type = branch.getPrefType(key)
13
14 switch type
15 when branch.PREF_BOOL
16 return branch.getBoolPref(key)
17 when branch.PREF_INT
18 return branch.getIntPref(key)
19 when branch.PREF_STRING
20 return branch.getCharPref(key)
21 else
22 if defaultValue != undefined
23 return defaultValue
24
25 isPrefSet = do ->
26 prefs = Cc['@mozilla.org/preferences-service;1'].getService(Ci.nsIPrefService)
27 branch = prefs.getBranch(PREF_BRANCH)
28
29 return (key) ->
30 branch.prefHasUserValue(key)
31
32 getPref = do ->
33 prefs = Cc['@mozilla.org/preferences-service;1'].getService(Ci.nsIPrefService)
34 branch = prefs.getBranch(PREF_BRANCH)
35
36 return (key, defaultValue = undefined) ->
37 return getBranchPref(branch, key, defaultValue)
38
39 # Unicode String
40 getComplexPref = do ->
41 prefs = Cc['@mozilla.org/preferences-service;1'].getService(Ci.nsIPrefService)
42 branch = prefs.getBranch(PREF_BRANCH)
43
44 return (key) ->
45 return branch.getComplexValue(key, Ci.nsISupportsString).data
46
47 getFirefoxPref = do ->
48 prefs = Cc['@mozilla.org/preferences-service;1'].getService(Ci.nsIPrefService)
49 branch = prefs.getBranch('')
50
51 return (key, defaultValue = undefined) ->
52 return getBranchPref(branch, key, defaultValue)
53
54 makePrefSetter = (branch) ->
55 return (key, value) ->
56 switch typeof value
57 when 'boolean'
58 branch.setBoolPref(key, value)
59 when 'number'
60 branch.setIntPref(key, value)
61 when 'string'
62 branch.setCharPref(key, value)
63 else
64 branch.clearUserPref(key)
65
66 # Assign and save Firefox preference value
67 setPref = do ->
68 prefs = Cc['@mozilla.org/preferences-service;1'].getService(Ci.nsIPrefService)
69 return makePrefSetter(prefs.getBranch(PREF_BRANCH))
70
71 setDefaultPrefs = ->
72 scriptLoader = Cc['@mozilla.org/moz/jssubscript-loader;1'].getService(Ci.mozIJSSubScriptLoader)
73 ioService = Cc['@mozilla.org/network/io-service;1'].getService(Ci.nsIIOService)
74 prefs = Cc["@mozilla.org/preferences-service;1"].getService(Ci.nsIPrefService)
75
76 baseUri = ioService.newURI(__SCRIPT_URI_SPEC__, null, null)
77 uri = ioService.newURI(DEFAULT_PREFS_FILE, null, baseUri)
78
79 if uri.QueryInterface(Ci.nsIFileURL).file.exists()
80 branch = prefs.getDefaultBranch("")
81 scope = { pref: makePrefSetter(branch) }
82 scriptLoader.loadSubScript(uri.spec, scope)
83
84 exports.isPrefSet = isPrefSet
85 exports.getPref = getPref
86 exports.getComplexPref = getComplexPref
87 exports.getFirefoxPref = getFirefoxPref
88 exports.setPref = setPref
89 exports.setDefaultPrefs = setDefaultPrefs
Imprint / Impressum