]> git.gir.st - VimFx.git/blob - extension/packages/prefs.coffee
Updated README.md and bumped version to 0.2
[VimFx.git] / extension / 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 addon_id: 'VimFx@akhodakivskiy.github.com'
10 hint_chars: 'asdfgercvhjkl;uinm'
11 disabled: false
12 scroll_step: 60
13 black_list: ''
14
15 # Get Firefox preference value of type specified in `PREFS`
16 getFFPref = do ->
17 branch = Services.prefs.getBranch PREF_BRANCH
18
19 return (key) ->
20 value = PREFS[key]
21
22 # Return default value if the preference value hasn't been set yet
23 if branch.getPrefType(key) == branch.PREF_INVALID
24 return value;
25
26 switch typeof value
27 when 'boolean'
28 return branch.getBoolPref key
29 when 'number'
30 return branch.getIntPref key
31 else
32 return branch.getCharPref key
33
34 # Assign and save Firefox preference value
35 setFFPref = do ->
36 branch = Services.prefs.getBranch PREF_BRANCH
37
38 return (key, value) ->
39 switch typeof value
40 when 'boolean'
41 branch.setBoolPref(key, value)
42 when 'number'
43 branch.setIntPref(key, value)
44 else
45 branch.setCharPref(key, String(value));
46
47 # Set default values and update previously stored values for the preferences
48 do ->
49 branch = Services.prefs.getBranch PREF_BRANCH
50 for key in Object.keys(PREFS)
51 if branch.getPrefType(key) == branch.PREF_INVALID
52 setFFPref key, PREFS[key]
53 else
54 PREFS[key] = getFFPref key
55
56 # Monitor preference changes and update values in local cache - PREFS
57 installPrefObserver = ->
58 branch = Services.prefs.getBranch(PREF_BRANCH)
59
60 observer =
61 observe: (subject, topic, data) ->
62 if topic == 'nsPref:changed' and data in Object.keys(PREFS)
63 PREFS[data] = getFFPref data
64
65 branch.addObserver "", observer, false
66 unload -> branch.removeObserver "", observer
67
68 # Get preference value from local cache - PREFS
69 getPref = (key) -> return PREFS[key]
70
71 # Set preference value
72 setPref = (key, value) -> setFFPref key, value
73
74 exports.getPref = getPref
75 exports.setPref = setPref
76 exports.installPrefObserver = installPrefObserver
Imprint / Impressum