Index: lib/ui.js |
=================================================================== |
--- a/lib/ui.js |
+++ b/lib/ui.js |
@@ -215,6 +215,68 @@ |
}; |
optionsObserver.init(); |
+let InspectorObserver = |
+{ |
+ init: function() |
+ { |
+ let gDevTools; |
+ try |
+ { |
+ ({gDevTools}) = Cu.import("resource:///modules/devtools/gDevTools.jsm", null); |
+ } |
+ catch(e) |
+ { |
+ // No developer tools or unsupported version - ignore. |
+ return; |
+ } |
+ |
+ gDevTools.on("inspector-ready", this.inspectorReady); |
+ onShutdown.add(function() |
+ { |
+ gDevTools.off("inspector-ready", this.inspectorReady); |
+ }.bind(this)); |
+ }, |
+ |
+ get inspectorButtonTooltip() |
+ { |
+ // Randomize URI to work around bug 719376 |
+ let stringBundle = Services.strings.createBundle("chrome://adblockplus/locale/global.properties?" + Math.random()); |
+ let result = stringBundle.GetStringFromName("inspector.button.tooltiptext"); |
+ |
+ delete this.inspectorButtonTooltip; |
+ this.__defineGetter__("inspectorButtonTooltip", function() result); |
+ return this.inspectorButtonTooltip; |
+ }, |
+ |
+ inspectorReady: function(eventName, toolbox, panel) |
+ { |
+ let panelWindow = panel.panelWin; |
+ let inspectBtn = panelWindow.document.getElementById("inspector-breadcrumbs"); |
+ if (!inspectBtn) |
+ return; |
+ |
+ let tooltiptext = InspectorObserver.inspectorButtonTooltip; |
+ button = panelWindow.document.createElement("toolbarbutton"); |
+ button.setAttribute("id", "abp-inspector-toolbarbutton"); |
+ button.setAttribute("class", "devtools-toolbarbutton"); |
+ button.setAttribute("tooltiptext", tooltiptext); |
+ button.setAttribute("tabindex", "0"); |
+ button.addEventListener("command", function() |
+ { |
+ panelWindow.openDialog("chrome://adblockplus/content/ui/ehh-composer.xul", "_blank", |
+ "chrome,centerscreen,resizable,dialog=no", panel.selection.node); |
+ }, false); |
+ |
+ //Override button style for light DevTools theme |
+ let style = panelWindow.document.createProcessingInstruction("xml-stylesheet", 'href="chrome://adblockplus/skin/devToolsOverlay.css" type="text/css"'); |
+ panelWindow.document.insertBefore(style, panelWindow.document.firstChild); |
+ |
+ inspectBtn.parentNode.insertBefore(button, inspectBtn); |
+ } |
+}; |
+ |
+InspectorObserver.init(); |
+ |
/** |
* Session restore observer instance, stored to prevent it from being garbage |
* collected. |