]> git.gir.st - VimFx.git/blob - extension/packages/prefs.coffee
Merge branch 'develop' into huffman
[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
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 isPrefSet = do ->
32 prefs = Cc['@mozilla.org/preferences-service;1'].getService(Ci.nsIPrefService)
33 branch = prefs.getBranch(PREF_BRANCH)
34
35 return (key) ->
36 branch.prefHasUserValue(key)
37
38 getPref = do ->
39 prefs = Cc['@mozilla.org/preferences-service;1'].getService(Ci.nsIPrefService)
40 branch = prefs.getBranch(PREF_BRANCH)
41
42 return (key, defaultValue = undefined) ->
43 value = getBranchPref(branch, key, defaultValue)
44 return if value == undefined then getDefaultPref(key) else value
45
46 getDefaultPref = (key) -> return DEFAULT_PREF_VALUES[key]
47
48 getFirefoxPref = do ->
49 prefs = Cc['@mozilla.org/preferences-service;1'].getService(Ci.nsIPrefService)
50 branch = prefs.getBranch('')
51
52 return (key, defaultValue = undefined) ->
53 return getBranchPref(branch, key, defaultValue)
54
55 # Assign and save Firefox preference value
56 setPref = do ->
57 prefs = Cc['@mozilla.org/preferences-service;1'].getService(Ci.nsIPrefService)
58 branch = prefs.getBranch(PREF_BRANCH)
59
60 return (key, value) ->
61 switch typeof value
62 when 'boolean'
63 branch.setBoolPref(key, value)
64 when 'number'
65 branch.setIntPref(key, value)
66 when 'string'
67 branch.setCharPref(key, value)
68 else
69 branch.clearUserPref(key)
70
71 DISABLED_COMMANDS = do ->
72 str = getPref('disabled_commands')
73 try
74 return JSON.parse(str)
75 catch err
76 dc = []
77 try
78 for key in str.split('||')
79 for c in key.split('|')
80 dc.push(c) if c
81
82 return dc
83
84 # Enables command
85 enableCommand = (key) ->
86 for c in key.split('|')
87 while (idx = DISABLED_COMMANDS.indexOf(c)) > -1
88 DISABLED_COMMANDS.splice(idx, 1)
89
90 setPref('disabled_commands', JSON.stringify(DISABLED_COMMANDS))
91
92 # Adds command to the disabled list
93 disableCommand = (key) ->
94 for c in key.split('|')
95 if DISABLED_COMMANDS.indexOf(c) == -1
96 DISABLED_COMMANDS.push(c)
97
98 setPref('disabled_commands', JSON.stringify(DISABLED_COMMANDS))
99
100 # Checks if given command is disabled in the preferences
101 isCommandDisabled = (key) ->
102 for c in key.split('|')
103 if DISABLED_COMMANDS.indexOf(c) > -1
104 return true
105
106 return false
107
108 initPrefValues = ->
109 for key, value of DEFAULT_PREF_VALUES
110 if not isPrefSet(key)
111 setPref(key, value)
112
113 exports.isPrefSet = isPrefSet
114 exports.getPref = getPref
115 exports.getDefaultPref = getDefaultPref
116 exports.getFirefoxPref = getFirefoxPref
117 exports.setPref = setPref
118 exports.isCommandDisabled = isCommandDisabled
119 exports.disableCommand = disableCommand
120 exports.enableCommand = enableCommand
121 exports.initPrefValues = initPrefValues
Imprint / Impressum