Ich habe QuoteColors für Thunderbird 68 komplett korrekt zum Laufen gebracht - jedenfalls fallen mir erstmal keine Fehler mehr auf. Im Gegensatz zu "meinem Vorgänger" auf ATN funktionieren jetzt auch die Optionen wieder korrekt. Ich werde mich bei beiden Autoren (altes "QuoteColor" und "New QuoteColor" melden, um das wieder unter einen Hut zu bekommen.
Für Thunderbird 78 habe ich mir nun ein Herz gefasst und habe Deine Wrapper API eingebaut. Die Optionen funktionieren schon komplett. Ich scheitere aber noch am JS Injection, um die alten Overlays nun zum Laufen zu bekommen. Die drei alten Overlays enthalten quasi Keinen XUL-Code, sondern jeweils nur eingebundene weitere JS Dateien und jeweils einen CDATA-Block mit in bisschen Iinline JavaScript.
Hier ein Beispiel eines alten Overlays:
<?xml version="1.0"?>
<!--
// Quote Colors extension, overlay for messenger.xul
-->
<!DOCTYPE overlay SYSTEM "chrome://quotecolors/locale/qc_options.dtd">
<overlay id="quotecolors" xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul">
<script type="application/x-javascript" src="chrome://quotecolors/content/qc_globals.js"/>
<script type="application/x-javascript" src="chrome://quotecolors/content/qc_overlay.js"/>
<script type="application/x-javascript" src="chrome://quotecolors/content/quotecolors.js"/>
<script type="application/x-javascript">
<![CDATA[
// observe mail pane config changes
QCMailPaneConfigObserver.register();
// observe QC pref changes to reload message
QCPrefUpdateObserver.register();
window.addEventListener("load", QCObj.initMain, false);
window.addEventListener("unload", QCunloadMessenger, false);
]]>
</script>
</overlay>
Alles anzeigen
Daraus habe ich folgende neue JS-Datei gemacht:
// Import any needed modules.
var { Services } = ChromeUtils.import("resource://gre/modules/Services.jsm");
// Load an additional JavaScript file.
Services.scriptloader.loadSubScript("chrome://quotecolors/content/qc_globals.js", window, "UTF-8");
Services.scriptloader.loadSubScript("chrome://quotecolors/content/qc_overlay.js", window, "UTF-8");
Services.scriptloader.loadSubScript("chrome://quotecolors/content/quotecolors.js", window, "UTF-8");
function onLoad(activatedWhileWindowOpen) {
// observe mail pane config changes
QCMailPaneConfigObserver.register();
// observe QC pref changes to reload message
QCPrefUpdateObserver.register();
window.addEventListener("load", QCObj.initMain, false);
window.addEventListener("unload", QCunloadMessenger, false);
}
function onUnload(deactivatedWhileWindowOpen) {
}
Alles anzeigen
Meine background.js sieht so aus:
messenger.WindowListener.registerDefaultPrefs("defaults/preferences/quotecolors.js");
messenger.WindowListener.registerChromeUrl([
["content", "quotecolors", "chrome/content/"],
["locale", "quotecolors", "en-US", "chrome/locale/en-US/"],
["locale", "quotecolors", "de-DE", "chrome/locale/de-DE/"],
["locale", "quotecolors", "es-ES", "chrome/locale/es-ES/"],
["locale", "quotecolors", "fr-FR", "chrome/locale/fr-FR/"],
["locale", "quotecolors", "it-IT", "chrome/locale/it-IT/"],
["locale", "quotecolors", "ja-JP", "chrome/locale/ja-JP/"],
["locale", "quotecolors", "pl-PL", "chrome/locale/pl-PL/"],
["locale", "quotecolors", "cs-CZ", "chrome/locale/cs-CZ/"],
["locale", "quotecolors", "hu-HU", "chrome/locale/hu-HU/"],
["locale", "quotecolors", "ru-RU", "chrome/locale/ru-RU/"],
["locale", "quotecolors", "da-DK", "chrome/locale/da-DK/"]
]);
messenger.WindowListener.registerOptionsPage("chrome://quotecolors/content/options/qc_options.xhtml");
messenger.WindowListener.registerWindow(
"chrome://messenger/content/messenger.xul",
"chrome://quotecolors/content/qc_messengeroverlay.js");
messenger.WindowListener.registerWindow(
"chrome://messenger/content/messageWindow.xul",
"chrome://quotecolors/content/qc_msgwindowoverlay.js");
messenger.WindowListener.registerWindow(
"chrome://messenger/content/msgPrintEngine.xul",
"chrome://quotecolors/content/qc_printpreviewoverlay.js");
// messenger.WindowListener.registerShutdownScript("chrome://quotecolors/content/shutdown.js")
messenger.WindowListener.startListening();
Alles anzeigen
Das erneuerte Overlay (wie auch immer ich das jetzt bezeichnen soll, wenn es jetzt diese neue JS-Datei ist) bleibt letztlich wirkungslos. Fehlermeldungen in der Konsole gibt es keine.