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
|
/* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this file,
* You can obtain one at http://mozilla.org/MPL/2.0/. */
import { CustomizableUI } from "resource:///modules/CustomizableUI.sys.mjs";
export var Buttons = {
init(libDir) {
createWidget();
},
configurations: {
navBarButtons: {
selectors: ["#nav-bar"],
applyConfig: async () => {
CustomizableUI.addWidgetToArea(
"screenshot-widget",
CustomizableUI.AREA_NAVBAR
);
},
},
tabsToolbarButtons: {
selectors: ["#TabsToolbar"],
applyConfig: async () => {
CustomizableUI.addWidgetToArea(
"screenshot-widget",
CustomizableUI.AREA_TABSTRIP
);
},
},
menuPanelButtons: {
selectors: ["#widget-overflow"],
applyConfig: async () => {
CustomizableUI.addWidgetToArea(
"screenshot-widget",
CustomizableUI.AREA_FIXED_OVERFLOW_PANEL
);
},
async verifyConfig() {
let browserWindow =
Services.wm.getMostRecentWindow("navigator:browser");
if (browserWindow.PanelUI.panel.state == "closed") {
return "The button isn't shown when the panel isn't open.";
}
return undefined;
},
},
custPaletteButtons: {
selectors: ["#customization-palette"],
applyConfig: async () => {
CustomizableUI.removeWidgetFromArea("screenshot-widget");
},
async verifyConfig() {
let browserWindow =
Services.wm.getMostRecentWindow("navigator:browser");
if (
browserWindow.document.documentElement.getAttribute("customizing") !=
"true"
) {
return "The button isn't shown when we're not in customize mode.";
}
return undefined;
},
},
},
};
function createWidget() {
let id = "screenshot-widget";
let spec = {
id,
label: "My Button",
removable: true,
tooltiptext: "",
type: "button",
};
CustomizableUI.createWidget(spec);
// Append a <style> for the image
let browserWindow = Services.wm.getMostRecentWindow("navigator:browser");
let st = browserWindow.document.createElementNS(
"http://www.w3.org/1999/xhtml",
"style"
);
let styles =
"" +
"#screenshot-widget > .toolbarbutton-icon {" +
" list-style-image: url(chrome://browser/skin/thumb-down.svg);" +
"}";
st.appendChild(browserWindow.document.createTextNode(styles));
browserWindow.document.documentElement.appendChild(st);
}
|