]> git.gir.st - VimFx.git/blob - extension/packages/prefs.coffee
Translate bloom filter options
[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: 'fjdksla;ghrueiwovncm'
11 disabled: false
12 scroll_step_lines: 6
13 black_list: '*mail.google.com*'
14 blur_on_esc: true
15 leave_dt_on_esc: false
16 hints_bloom_data: ''
17 hints_bloom_on: true
18
19
20 getBranchPref = (branch, key, defaultValue) ->
21 type = branch.getPrefType(key)
22
23 switch type
24 when branch.PREF_BOOL
25 return branch.getBoolPref(key)
26 when branch.PREF_INT
27 return branch.getIntPref(key)
28 when branch.PREF_STRING
29 return branch.getCharPref(key)
30 else
31 if defaultValue != undefined
32 return defaultValue
33
34 isPrefSet = do ->
35 prefs = Cc['@mozilla.org/preferences-service;1'].getService(Ci.nsIPrefService)
36 branch = prefs.getBranch(PREF_BRANCH)
37
38 return (key) ->
39 branch.prefHasUserValue(key)
40
41 getPref = do ->
42 prefs = Cc['@mozilla.org/preferences-service;1'].getService(Ci.nsIPrefService)
43 branch = prefs.getBranch(PREF_BRANCH)
44
45 return (key, defaultValue = undefined) ->
46 value = getBranchPref(branch, key, defaultValue)
47 return if value == undefined then getDefaultPref(key) else value
48
49 getDefaultPref = (key) -> return DEFAULT_PREF_VALUES[key]
50
51 getFirefoxPref = do ->
52 prefs = Cc['@mozilla.org/preferences-service;1'].getService(Ci.nsIPrefService)
53 branch = prefs.getBranch('')
54
55 return (key, defaultValue = undefined) ->
56 return getBranchPref(branch, key, defaultValue)
57
58 # Assign and save Firefox preference value
59 setPref = do ->
60 prefs = Cc['@mozilla.org/preferences-service;1'].getService(Ci.nsIPrefService)
61 branch = prefs.getBranch(PREF_BRANCH)
62
63 return (key, value) ->
64 switch typeof value
65 when 'boolean'
66 branch.setBoolPref(key, value)
67 when 'number'
68 branch.setIntPref(key, value)
69 when 'string'
70 branch.setCharPref(key, value)
71 else
72 branch.clearUserPref(key)
73
74 DISABLED_COMMANDS = do ->
75 str = getPref('disabled_commands')
76 try
77 return JSON.parse(str)
78 catch err
79 dc = []
80 try
81 for key in str.split('||')
82 for c in key.split('|')
83 dc.push(c) if c
84
85 return dc
86
87 # Enables command
88 enableCommand = (key) ->
89 for c in key.split('|')
90 while (idx = DISABLED_COMMANDS.indexOf(c)) > -1
91 DISABLED_COMMANDS.splice(idx, 1)
92
93 setPref('disabled_commands', JSON.stringify(DISABLED_COMMANDS))
94
95 # Adds command to the disabled list
96 disableCommand = (key) ->
97 for c in key.split('|')
98 if DISABLED_COMMANDS.indexOf(c) == -1
99 DISABLED_COMMANDS.push(c)
100
101 setPref('disabled_commands', JSON.stringify(DISABLED_COMMANDS))
102
103 # Checks if given command is disabled in the preferences
104 isCommandDisabled = (key) ->
105 for c in key.split('|')
106 if DISABLED_COMMANDS.indexOf(c) > -1
107 return true
108
109 return false
110
111 initPrefValues = ->
112 for key, value of DEFAULT_PREF_VALUES
113 if not isPrefSet(key)
114 setPref(key, value)
115
116 exports.isPrefSet = isPrefSet
117 exports.getPref = getPref
118 exports.getDefaultPref = getDefaultPref
119 exports.getFirefoxPref = getFirefoxPref
120 exports.setPref = setPref
121 exports.isCommandDisabled = isCommandDisabled
122 exports.disableCommand = disableCommand
123 exports.enableCommand = enableCommand
124 exports.initPrefValues = initPrefValues
Imprint / Impressum