-
Notifications
You must be signed in to change notification settings - Fork 4
/
options.js
130 lines (101 loc) · 3.67 KB
/
options.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
// import {THEMES, add_contextual_menu} from 'lib';
var script_to_call = {file:'anchors-reveal.js'};
var menu_id = 'anchors-reveal';
var THEMES = {
'ClassicalYellow' : {
background : 'yellow',
color : 'black'
},
'LightBlue' : {
background : '#aaf',
color : 'black'
},
'WhitePaper' : {
background : 'white',
color : 'black'
},
'GothicAddict' : {
background : 'black',
color : 'white'
},
};
function add_contextual_menu() {
browser.contextMenus.create({
id: menu_id,
title: browser.i18n.getMessage('buttonDescription'),
icons: {
'16': "data/icon-16.png",
'32': "data/icon-32.png"
}
});
browser.contextMenus.onClicked.addListener(function(info, tab) {
if (info.menuItemId === menu_id) {
browser.tabs.executeScript(script_to_call);
}
});
};
// end import
function update_contextual_menu(entry) {
if (entry) {
add_contextual_menu();
} else {
try {
browser.contextMenus.remove(menu_id);
} catch (e) {
}
}
}
var form_parameters;
function saveOptions(event) {
event.preventDefault();
browser.storage.local.set({
theme: form_parameters.theme.value,
menu: form_parameters.menu.checked,
//sidebar: form_parameters.sidebar.checked
});
update_contextual_menu( form_parameters.menu.checked );
}
function restoreOptions() {
function setCurrentThemeChoice(result) {
var theme_restored = result.theme || "ClassicalYellow";
form_parameters.querySelector(`input[name="theme"][value="${theme_restored}"]`).checked = true;
}
function setCurrentMenuChoice(result) {
var is_menu = result.menu || false;
form_parameters.querySelector('input[name="menu"]').checked = is_menu;
}
/*
function setCurrentSidebarChoice(result) {
var is_sidebar = result.sidebar || false;
form_parameters.querySelector('input[name="sidebar"]').checked = is_sidebar;
}
*/
function onError(error) {
console.log(`Error: ${error}`);
}
// BEEEEH , needs refactoring
var getting = browser.storage.local.get('theme');
getting.then(setCurrentThemeChoice, onError);
var getting = browser.storage.local.get('menu');
getting.then(setCurrentMenuChoice, onError);
//var getting = browser.storage.local.get('sidebar');
//getting.then(setCurrentSidebarChoice, onError);
form_parameters = document.getElementById('anchors-reveal-parameters');
form_parameters.addEventListener('input', saveOptions);
// Yes, lazy i18n procedures, as nothing can be done in HTML code (but you can in CSS)
var legends = form_parameters.querySelectorAll('legend')
legends[0].innerHTML = browser.i18n.getMessage('themeParameterDescription');
legends[1].innerText = browser.i18n.getMessage('cumbersomeParametersDescription');
Array.from(form_parameters.querySelectorAll('input[type="radio"]')).
forEach(function(element){
var this_theme = THEMES[element.value];
var demo_label = element.closest('label').querySelector('span');
demo_label.style.color = this_theme.color;
demo_label.style.background = this_theme.background;
demo_label.innerText = browser.i18n.getMessage(`ThemeNamed${element.value}`);
}
);
form_parameters.querySelector('input[name="menu"] + span').innerText = browser.i18n.getMessage('checkContextMenu');
// form_parameters.querySelector('input[name="sidebar"] + span').innerText = browser.i18n.getMessage('checkSidebar');
}
document.addEventListener('DOMContentLoaded', restoreOptions);