69 lines
3.3 KiB
XML
69 lines
3.3 KiB
XML
<?xml version="1.0"?>
|
|
<!-- Copyright (c) 2017 Haggai Nuchi
|
|
Available for use under the MIT License:
|
|
https://opensource.org/licenses/MIT
|
|
-->
|
|
|
|
<!-- Run userChrome.js/userChrome.xul and .uc.js/.uc.xul/.css files -->
|
|
<bindings xmlns="http://www.mozilla.org/xbl">
|
|
<binding id="js">
|
|
<implementation>
|
|
<constructor><![CDATA[
|
|
if(window.userChromeJsMod) return;
|
|
window.userChromeJsMod = true;
|
|
var chromeFiles = FileUtils.getDir("UChrm", []).directoryEntries;
|
|
var xulFiles = [];
|
|
var sss = Cc['@mozilla.org/content/style-sheet-service;1'].getService(Ci.nsIStyleSheetService);
|
|
while(chromeFiles.hasMoreElements()) {
|
|
var file = chromeFiles.getNext().QueryInterface(Ci.nsIFile);
|
|
var fileURI = Services.io.newFileURI(file);
|
|
if(file.isFile()) {
|
|
type = "none";
|
|
if(/(^userChrome|\.uc)\.js$/i.test(file.leafName)) {
|
|
type = "userchrome/js";
|
|
}
|
|
else if(/(^userChrome|\.uc)\.xul$/i.test(file.leafName)) {
|
|
type = "userchrome/xul";
|
|
}
|
|
else if(/\.as\.css$/i.test(file.leafName)) {
|
|
type = "agentsheet";
|
|
}
|
|
else if(/^(?!(userChrome|userContent)\.css$).+\.css$/i.test(file.leafName)) {
|
|
type = "usersheet";
|
|
}
|
|
if(type != "none") {
|
|
console.log("----------\\ " + file.leafName + " (" + type + ")");
|
|
try {
|
|
if(type == "userchrome/js") {
|
|
Services.scriptloader.loadSubScriptWithOptions(fileURI.spec, {target: window, ignoreCache: true});
|
|
}
|
|
else if(type == "userchrome/xul") {
|
|
xulFiles.push(fileURI.spec);
|
|
}
|
|
else if(type == "agentsheet") {
|
|
if(!sss.sheetRegistered(fileURI, sss.AGENT_SHEET))
|
|
sss.loadAndRegisterSheet(fileURI, sss.AGENT_SHEET);
|
|
}
|
|
else if(type == "usersheet") {
|
|
if(!sss.sheetRegistered(fileURI, sss.USER_SHEET))
|
|
sss.loadAndRegisterSheet(fileURI, sss.USER_SHEET);
|
|
}
|
|
} catch(e) {
|
|
console.log("########## ERROR: " + e + " at " + e.lineNumber + ":" + e.columnNumber);
|
|
}
|
|
console.log("----------/ " + file.leafName);
|
|
}
|
|
}
|
|
}
|
|
setTimeout(function loadXUL() {
|
|
if(xulFiles.length > 0) {
|
|
document.loadOverlay(xulFiles.shift(), null);
|
|
setTimeout(loadXUL, 5);
|
|
}
|
|
}, 0);
|
|
]]></constructor>
|
|
</implementation>
|
|
</binding>
|
|
</bindings>
|
|
|