]> git.gir.st - VimFx.git/blob - packages/prefs.coffee
Renamed project to VimFx, hopefully the last time. Added toolbar button
[VimFx.git] / packages / prefs.coffee
1 { classes: Cc, interfaces: Ci } = Components
2
3 PREF_BRANCH = "extension.VimFx.";
4
5 # Default values for the preference
6 # All used preferences should be mentioned here becuase
7 # preference type is derived from here
8 PREFS =
9 hint_chars: 'asdfgercvhjkl;uinm'
10 button_id: 'VimFx-toolbar-button'
11 disabled: false
12
13 # Get Firefox preference value of type specified in `PREFS`
14 getFFPref = do ->
15 branch = Services.prefs.getBranch PREF_BRANCH
16
17 return (key) ->
18 value = PREFS[key]
19
20 # Return default value if the preference value hasn't been set yet
21 if branch.getPrefType(key) == branch.PREF_INVALID
22 return value;
23
24 switch typeof value
25 when 'boolean'
26 return branch.getBoolPref key
27 when 'number'
28 return branch.getIntPref key
29 else
30 return branch.getCharPref key
31
32 # Set firefox preference value
33 setFFPref = do ->
34 branch = Services.prefs.getBranch PREF_BRANCH
35
36 return (key, value) ->
37 switch typeof value
38 when 'boolean'
39 branch.setBoolPref(key, value)
40 when 'number'
41 branch.setIntPref(key, value)
42 else
43 branch.setCharPref(key, String(value));
44
45 # Set default values and update previously stored values for the preferences
46 do ->
47 branch = Services.prefs.getBranch PREF_BRANCH
48 for key in Object.keys(PREFS)
49 if branch.getPrefType(key) == branch.PREF_INVALID
50 setFFPref key, PREFS[key]
51 else
52 PREFS[key] = getFFPref key
53
54 # Monitor preference changes and update values in local cache - PREFS
55 installPrefObserver = ->
56 branch = Services.prefs.getBranch(PREF_BRANCH)
57 .QueryInterface(Components.interfaces.nsIPrefBranch2)
58
59 observer =
60 observe: (subject, topic, data) ->
61 if topic == 'nsPref:changed' and data in Object.keys(PREFS)
62 PREFS[data] = getFFPref data
63
64 branch.addObserver "", observer, false
65 unload -> branch.removeObserver "", observer
66
67 # Get preference value from local cache - PREFS
68 getPref = (key) -> return PREFS[key]
69
70 # Set preference value
71 setPref = (key, value) -> setFFPref key, value
72
73 exports.getPref = getPref
74 exports.setPref = setPref
75 exports.installPrefObserver = installPrefObserver
Imprint / Impressum