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