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