]> git.gir.st - VimFx.git/blob - extension/packages/prefs.coffee
Merge branch 'release-0.4.4'
[VimFx.git] / extension / packages / prefs.coffee
1 { classes: Cc, interfaces: Ci } = Components
2
3 PREF_BRANCH = "extensions.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 DEFAULT_PREF_VALUES =
9 addon_id: 'VimFx@akhodakivskiy.github.com'
10 hint_chars: 'asdfgercvhjkl;uinm'
11 disabled: false
12 scroll_step: 60
13 scroll_time: 100
14 black_list: '*mail.google.com*'
15 blur_on_esc: true
16
17 getBranchPref = (branch, key, defaultValue) ->
18 type = branch.getPrefType(key)
19
20 switch type
21 when branch.PREF_BOOL
22 return branch.getBoolPref key
23 when branch.PREF_INT
24 return branch.getIntPref key
25 when branch.PREF_STRING
26 return branch.getCharPref key
27 else
28 if defaultValue != undefined
29 return defaultValue
30
31 getPref = do ->
32 prefs = Cc["@mozilla.org/preferences-service;1"].getService(Ci.nsIPrefService)
33 branch = prefs.getBranch PREF_BRANCH
34
35 return (key, defaultValue=undefined) ->
36 value = getBranchPref branch, key, defaultValue
37 return if value == undefined then DEFAULT_PREF_VALUES[key] else value
38
39 getFirefoxPref = do ->
40 prefs = Cc["@mozilla.org/preferences-service;1"].getService(Ci.nsIPrefService)
41 branch = prefs.getBranch ''
42
43 return (key, defaultValue=undefined) ->
44 return getBranchPref branch, key, defaultValue
45
46 # Assign and save Firefox preference value
47 setPref = do ->
48 prefs = Cc["@mozilla.org/preferences-service;1"].getService(Ci.nsIPrefService)
49 branch = prefs.getBranch PREF_BRANCH
50
51 return (key, value) ->
52 switch typeof value
53 when 'boolean'
54 branch.setBoolPref(key, value)
55 when 'number'
56 branch.setIntPref(key, value)
57 when 'string'
58 branch.setCharPref(key, value);
59 else
60 branch.clearUserPref(key);
61
62 DISABLED_COMMANDS = do ->
63 str = getPref 'disabled_commands'
64 try
65 return JSON.parse str
66 catch err
67 dc = []
68 try
69 for key in str.split('||')
70 for c in key.split('|')
71 dc.push c if c
72
73 return dc
74
75 # Enables command
76 enableCommand = (key) ->
77 for c in key.split('|')
78 while (idx = DISABLED_COMMANDS.indexOf(c)) > -1
79 DISABLED_COMMANDS.splice(idx, 1)
80
81 setPref 'disabled_commands', JSON.stringify DISABLED_COMMANDS
82
83 # Adds command to the disabled list
84 disableCommand = (key) ->
85 for c in key.split('|')
86 if DISABLED_COMMANDS.indexOf(c) == -1
87 DISABLED_COMMANDS.push c
88
89 setPref 'disabled_commands', JSON.stringify DISABLED_COMMANDS
90
91 # Checks if given command is disabled in the preferences
92 isCommandDisabled = (key) ->
93 for c in key.split('|')
94 if DISABLED_COMMANDS.indexOf(c) > -1
95 return true
96
97 return false
98
99 exports.getPref = getPref
100 exports.getFirefoxPref = getFirefoxPref
101 exports.setPref = setPref
102 exports.isCommandDisabled = isCommandDisabled
103 exports.disableCommand = disableCommand
104 exports.enableCommand = enableCommand
Imprint / Impressum