OK Danke, dann bleibe ich zunächst bei der "aborix" Methode, weil so sieht das Doof aus...
[attachment=0]Usercssloader.JPG[/attachment]
userChrome.js Scripte für den Fuchs (Diskussion)
-
Endor -
12. Mai 2015 um 14:19 -
Erledigt
-
-
Meinst oben diesen weißen freien Bereich, hast Du den sonst nicht
oder was sonst?
Mfg.
Endor -
Nee, den CSS-Button neben "Hilfe".... der muss dort verschwinden und in die Statusleiste verschoben werden..
-
Aaa, das meinst Du, ja da müssen wir mal wieder auf unser Genie aborix hoffen,
ob er da eine Idee hat wie man das alles wieder in das Script einbaut.
Mfg.
Endor -
Mit folgender Änderung wird die Schaltfläche, egal ob mit Bezeichnung "CSS" oder mit Grafik, frei verschiebbar:
Im Skript ersetzen wir Zeile 175:
durch
Code
Alles anzeigenCustomizableUI.createWidget({ id: 'usercssloader-menu-item', type: 'custom', defaultArea: CustomizableUI.AREA_MENUBAR, onBuild: function(aDocument) { let toolbaritem = aDocument.createElementNS('http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul', 'toolbaritem'); toolbaritem.id = 'usercssloader-menu-item'; toolbaritem.className = 'chromeclass-toolbar-additional'; return toolbaritem; } }); $('usercssloader-menu-item').appendChild(cssmenu);
Und im CSS-Code aus #1677 ersetzen wir Zeile 4:
durch
Kann sein, dass man für Ränder usw. zusätzlich noch etwas CSS braucht.
-
Hallo aborix.
Vielen Dank funktioniert bestens.
:klasse:Frage, wir hatten in unserer Version auch die Möglichkeit, mit
Mittelklick auf Schaltfläche CSS Stile oder Änderungen zu importieren.
Auch war es möglich einen anderen Dateimanager zu definieren.
Siehst Du Chancen das auch wieder zu implementieren?
Vielen Dank für deine Mühe.
Mfg.
Endor -
Hat jemand noch ein anderes Icon für den Button? Am besten gleich mit Base64-Code.. dieses Icon ist bereits dem CssLive.uc.js-Script zugeordnet...
[attachment=0]CSSButton.JPG[/attachment]
Oh, ja, danke aborix, du bist echt ein Künstler mit dieser Scripterei... :mrgreen: -
wie wäre es damit:
Codedata:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAatJREFUeNqkU7tKA0EUPbM7boISNKhBsLRQ9AMECx8EEQstgqVgL1iYyg+w1UbwC6ziA1TyA7FKjCKiYCGihSAIikiIJptZ7527amIjmmWHnXNn7jn3tSoIAjTzOGjy0cerI2umZtKB+VskylFwXGdds/Pw/AzgG8ByKHrV901OUYV2i41stYP81mFaW+X3MnC5IZctgabkaBmfbDWWo9VCe18WKw0tgX21dfJfgbE9IJEUlccjIJcKbWNi200Ao3X4fNkKasvml8R5p5OUSSn1IPXly9txCreNoCc40wG0tAJ9czZV6UJQEVavHYh2A9lB2sfENr4PuKTjeoInDmhPIqZS30Y/7EkkXFEhyA6QigvM3oo920+XGN8RQcmm4NiicWVtoSkd8wZMnRK1K0T5BTnjCBgXQmyqoilVp91zEZi+ksPnEyIg7skzwU9FiSBZCM+LX63VtkWc48UKfalY1Rdpo0fFyyXDvruNmKOL9dj2ap4oRIgkiMscRLuk759DZIXUDwzrw7765rG8icz1YuMoq18GObDO7Ms3KRb0/vNfulfN/s4fAgwAwWWMUVTgPhoAAAAASUVORK5CYII=
[attachment=0]css.png[/attachment]
Mfg
Endor -
Code
url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAIAAACQkWg2AAABqUlEQVQokWP89OkTAymABc76+fb99YnzXuw7xsrP67RpLiMzMz4NXx8/2+eV8OXhE05JMW45KQYGRgI2nM6r//r4qemEeuX4ELjZf7//+PX+I6eUOLIGJgYGhm9PXrzYf1wuyEslKRyu+sW+Yxs0HDdqO3958ARDw9Pn///9EzbRRZY4XdjIwMCgXZbJKSmGroFdSJCBgeHL/ccI4f//v9x/LOFgqVuZzczOxvD//49Xb/7//QvVwKMkJ6Ctdm/xurdnLqF4kImRgYHh9+cv+3yTNqg53Ji8AKqBkZnJdEI9AwPDHvfYQ+HZ13pn/f//H67r5tRFLw+dlPFxFnewhGpgYGAQMTd03r5QxNzgxb6jN6ct/v/nL1zD5zsPmNjYzGe0CRloMSBHnJChjvO2hb8/f2VkYvzz5SsDAwMTKwsDA8N/BgZGRgZGRiaEp5EBKy/3wzXbNht6MjAwSDrbMGAAFixCXJx86koKod4KYT5EaZAP9ZYP9YZzf3/6wsDIyMjMhFMDHHx79vJQaOaHKzfF7S2YOdix+wEF/P/PyMoiH+JlOacTLgYAnMqRpg2c0p8AAAAASUVORK5CYII=')
[attachment=1]CSS.png[/attachment]
Codeurl('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAupJREFUeNp0U29IU1EUv297e/vjnuFcGmxOP6g4k9p4rqmEUSGBKbJWCm6YI0hIZS5QvxRBpJNJOYgUEQzBjJT+SCLkV0VNnVmI9EHCklQaimxjf59b575crNAf/Dj3vXPO75577rkEj8dDfD4fRaNRdHBwgDDUajXHOCBGRhDEOViewt9jY2NTYLaMRiMiUQLkcjnKy8vjLBbEgEQZTdM3TKbaarU6v1Cj0bTh/8XFxZz/r0BqairS6/XcOl7JIYqMxms1KpXqItgnbrf7vU6n25LJZArwxTiBlJQUxDAMYlkWHQGFUqkodDqdE/PzH0dw6RCvgAoN4XA4wMvMzEQFBQUoFAodyUgkIo5EWNpisVTodIW1IMDk5GS3DwwMdHo8HoqkKAptb29zjUwkSZLYEtBAPoggn8+Lent77w4OPs+1Wq0Vc3Nzs3t7e27OGQwGEZSDd+POH28goAIE0ktKSsqkUimI8pFWq1UsLCx+cjgck/v7+29IdAxisVgl8HRXl91eX295uLOzQx26/MANqG5KKBT+Io9JrhKLxVq73f6gsbHpnkgkWoXKxrmOlrf8Ufm2iNifXxB5RLIBrrSoo8PeZrNZHwUCgTUq4+y4XHUZZRna8Vz0Q9h0OBgc9nu9/wpAslGpzLjQ2elottmaH+/u7q5Iq+xvBYozSA7+AE6gKAbfBMTilGFeQvL17OzcK93dT5tbW23PNjd/zJOa6tdEmrofyl/CDIdCS3jXm4YsJuDztcSiUTORnJyMBAJBtUbDXO3p6atraro1uLa2+gH+jUrqR7H2kvXOeearByFvwpylCRF6NzTjwgI1DKOv7OsbMjU0mIdXVlwTcJ2v/H4/ovVmJNWZ+mEnJvGoWaZyZuPFpAuGxIkkEknX+ro7Vlp6aQS6fRv86cCT+HngKQeeANLAJKCINo0s0+YRV1LZ/Tr81kjYbSY/X0FADzZgvXgowP7HSNwGvi9/RlF2mp11vsQCvwUYAETvSr48wtSaAAAAAElFTkSuQmCC')
[attachment=0]Anpassen.png[/attachment]
-
Nehme ich, vielen Dank!
[attachment=0]userCSS-Button.JPG[/attachment]
Edit: Danke Andreas.. ist aber schon überall eingepflegt... -
Hat jemand noch ein anderes Icon für den Button? Am besten gleich mit Base64-Code.. dieses Icon ist bereits dem CssLive.uc.js-Script zugeordnet...
Pedanterie … Eigentlich ist es andersherum: Endor hatte schon für css-live das Icon verwendet, das er jetzt noch einmal vorschlug und das Du nun verwendest. Ich habe daraufhin rumgemosert, dass ich das für zu blass halte. Ich sehe das immer noch so, wobei das auch auf den Hintergrund ankommt. Loshombre hat dann das andere vorgeschalgen, das nun aber auch (wieder) für den CSS-Loader genutzt wird.Es gäbe da beispielsweise noch Symbole in Category:Cascading Style Sheets icons und der Subkategorie in Wikimedia Commons. Wegen der Lizenz will ich die nur mal verlinken:
- CSS text representation (square).png
- Oxygen480-apps-preferences-web-browser-stylesheets.svg
- Gartoon apps stylesheet replaced.svg – das ähnelt aber stark dem einen bisherigen Logo
- Page css 48.png – allerdings kann es sein, dass das Symbol in geringerer Größe in der Symbolleiste nicht mehr gut aussieht
Die cc-lizenzierten Symbole wären bei Veröffentlichung hier wegen der Lizenzforderung leicht problematisch, aber nur leicht wegen des Aufwandes. -
Jetzt wird hier schon wegen nem kleinen Bild rum gekackt :?
Das CSS Icon hab ich vor langer Zeit wo weg geklaut und jahrelang in meinem Fuchs inne gehabt.
Wo vor Jahren der CSS Loader auf m Markt kam, hab ich mir das Menü zum Button umgebaut mit eben meinem Icon. Noch lange, bevor Hombre aborix das Script zum ersten Mal coolerweise beweglich gemacht hat.
Wo der Loader gestorben ist, hab ich den Button für das neue CSS Script freundlicherweise spendiert.
Jetzt, wo der Loader wiederbelebt wurde, kriegt er von uns natürlich seinen alten Button auch zurück und landet auch so auf Github.
Und wem das nicht gefällt, der kann sich da selbst nen Marienkäfer, oder sonst wat hin malen.Seid doch froh, dass n Schrauber der tollen Loader wieder heile geschraubt und wir den überhaupt wieder gefunden haben.
Kack egal, ob da nun erstmal CSS, oder FITZE FATZE MÜTZE GLATZE, oder eben ein Button steht.
Hauptsache ist erstmal, dass das Moped wieder läuft und das sehr gut und endlich wieder etwas mehr Komfort in dem CSS Gewusel auf der Platte bringt. -
Das hat ja auch niemand in Frage gestellt. Ist doch in Ordnung, nach anderen Icons zu fragen. Auch dafür ist dieses Forum da.
-
Jetzt wird hier schon wegen nem kleinen Bild rum gekackt :?
Das CSS Icon hab ich vor langer Zeit wo weg geklaut und jahrelang in meinem Fuchs inne gehabt.
Wie Sören schon sagte: Ich habe doch gar nichts Negatives über dich geschrieben. Das Symbol oder die Vorlage dazu dürfte übrigens dieses hier sein: Noia 64 apps stylesheet.png. -
Frage, wir hatten in unserer Version auch die Möglichkeit, mit
Mittelklick auf Schaltfläche CSS Stile oder Änderungen zu importieren.
Auch war es möglich einen anderen Dateimanager zu definieren.Testet bitte das Skript mit folgender Änderung. Die Zeilennummern beziehen sich auf das unveränderte Skript. Die Schaltfläche ist verschiebbar, mit Mittelklick wird importiert und am Beginn des geänderten Teils kann man einen anderen Dateimanager festlegen.
Die Zeilen 49 - 320:
Codewindow.UCL = { USE_UC: "UC" in window, AGENT_SHEET: Ci.nsIStyleSheetService.AGENT_SHEET, . . . openFolder: function() { this.FOLDER.launch(); },
werden ersetzt durch
Code
Alles anzeigenwindow.UCL = { // vFileManager: 'C:\\Programme\\totalcmd\\TOTALCMD.EXE', vFileManager: '', USE_UC: "UC" in window, AGENT_SHEET: Ci.nsIStyleSheetService.AGENT_SHEET, USER_SHEET : Ci.nsIStyleSheetService.USER_SHEET, readCSS : {}, get disabled_list() { let obj = []; try { obj = this.prefs.getCharPref("disabled_list").split("|"); } catch(e) {} delete this.disabled_list; return this.disabled_list = obj; }, get prefs() { delete this.prefs; return this.prefs = Services.prefs.getBranch("UserCSSLoader.") }, get styleSheetServices(){ delete this.styleSheetServices; return this.styleSheetServices = Cc["@mozilla.org/content/style-sheet-service;1"].getService(Ci.nsIStyleSheetService); }, get FOLDER() { let aFolder; try { // UserCSSLoader.FOLDER verwenden let folderPath = this.prefs.getCharPref("FOLDER"); aFolder = Cc["@mozilla.org/file/local;1"].createInstance(Ci.nsIFile) aFolder.initWithPath(folderPath); } catch (e) { aFolder = Services.dirsvc.get("UChrm", Ci.nsIFile); aFolder.appendRelativePath("CSS"); } if (!aFolder.exists() || !aFolder.isDirectory()) { aFolder.create(Ci.nsIFile.DIRECTORY_TYPE, 0664); } delete this.FOLDER; return this.FOLDER = aFolder; }, getFocusedWindow: function() { let win = document.commandDispatcher.focusedWindow; if (!win || win == window) win = content; return win; }, init: function() { const cssmenu = $C("menu", { id: "usercssloader-menu", label: "CSS", accesskey: "C", onclick: "if (event.button == 1) UCL.rebuild()" }); const menupopup = $C("menupopup", { id: "usercssloader-menupopup" }); cssmenu.appendChild(menupopup); let menu = $C("menu", { label: "Style Loader Menü", accesskey: "M" }); menupopup.appendChild(menu); let mp = $C("menupopup", { id: "usercssloader-submenupopup" }); menu.appendChild(mp); mp.appendChild($C("menuitem", { label: "Styles importieren", accesskey: "R", acceltext: "Alt + R", oncommand: "UCL.rebuild();" })); mp.appendChild($C("menuseparator")); mp.appendChild($C("menuitem", { label: "CSS Datei erstellen", accesskey: "D", oncommand: "UCL.create();" })); mp.appendChild($C("menuitem", { label: "CSS Ordner öffnen", accesskey: "O", oncommand: "UCL.openFolder();" })); mp.appendChild($C("menuitem", { label: "userChrome.css bearbeiten", hidden: false, oncommand: "UCL.editUserCSS(\'userChrome.css\');" })); mp.appendChild($C("menuitem", { label: "userContent.css bearbeiten", hidden: false, oncommand: "UCL.editUserCSS(\'userContent.css\');" })); mp.appendChild($C("menuseparator")); mp.appendChild($C("menuitem", { label: "Style Test (Chrome)", id: "usercssloader-test-chrome", hidden: true, accesskey: "C", oncommand: "UCL.styleTest(window);" })); mp.appendChild($C("menuitem", { label: "Style Test (Web)", id: "usercssloader-test-content", hidden: true, accesskey: "W", oncommand: "UCL.styleTest();" })); mp.appendChild($C("menuitem", { label: "Styles dieser Seite auf userstyles.org finden", accesskey: "S", oncommand: "UCL.searchStyle();" })); menu = $C("menu", { label: ".uc.css", accesskey: "U", hidden: !UCL.USE_UC }); menupopup.appendChild(menu); mp = $C("menupopup", { id: "usercssloader-ucmenupopup" }); menu.appendChild(mp); mp.appendChild($C("menuitem", { label: "Importieren(.uc.js)", oncommand: "UCL.UCrebuild();" })); mp.appendChild($C("menuseparator", { id: "usercssloader-ucsepalator" })); CustomizableUI.createWidget({ id: 'usercssloader-menu-item', type: 'custom', defaultArea: CustomizableUI.AREA_MENUBAR, onBuild: function(aDocument) { let toolbaritem = aDocument.createElementNS('http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul', 'toolbaritem'); toolbaritem.id = 'usercssloader-menu-item'; toolbaritem.className = 'chromeclass-toolbar-additional'; return toolbaritem; } }); $('usercssloader-menu-item').appendChild(cssmenu); $("mainKeyset").appendChild($C("key", { id: "usercssloader-rebuild-key", oncommand: "UCL.rebuild();", key: "R", modifiers: "alt", })); this.rebuild(); this.initialized = true; if (UCL.USE_UC) { setTimeout(function() { UCL.UCcreateMenuitem(); }, 1000); } window.addEventListener("unload", this, false); }, uninit: function() { const dis = []; for (let x of Object.keys(this.readCSS)) { if (!this.readCSS[x].enabled) dis.push(x); } this.prefs.setCharPref("disabled_list", dis.join("|")); window.removeEventListener("unload", this, false); }, destroy: function() { var i = document.getElementById("usercssloader-menu"); if (i) i.parentNode.removeChild(i); var i = document.getElementById("usercssloader-rebuild-key"); if (i) i.parentNode.removeChild(i); this.uninit(); }, handleEvent: function(event) { switch(event.type){ case "unload": this.uninit(); break; } }, rebuild: function() { let ext = /\.css$/i; let not = /\.uc\.css/i; let files = this.FOLDER.directoryEntries.QueryInterface(Ci.nsISimpleEnumerator); while (files.hasMoreElements()) { let file = files.getNext().QueryInterface(Ci.nsIFile); if (!ext.test(file.leafName) || not.test(file.leafName)) continue; let CSS = this.loadCSS(file); CSS.flag = true; } for (let leafName of Object.keys(this.readCSS)) { const CSS = this.readCSS[leafName]; if (!CSS.flag) { CSS.enabled = false; delete this.readCSS[leafName]; } delete CSS.flag; this.rebuildMenu(leafName); } if (this.initialized) { if (typeof(StatusPanel) !== "undefined") StatusPanel._label = "Style importiert"; else XULBrowserWindow.statusTextField.label = "Styles importieren"; } }, loadCSS: function(aFile) { var CSS = this.readCSS[aFile.leafName]; if (!CSS) { CSS = this.readCSS[aFile.leafName] = new CSSEntry(aFile); if (this.disabled_list.indexOf(CSS.leafName) === -1) { CSS.enabled = true; } } else if (CSS.enabled) { CSS.enabled = true; } return CSS; }, rebuildMenu: function(aLeafName) { var CSS = this.readCSS[aLeafName]; var menuitem = document.getElementById("usercssloader-" + aLeafName); if (!CSS) { if (menuitem) menuitem.parentNode.removeChild(menuitem); return; } if (!menuitem) { menuitem = document.createElement("menuitem"); menuitem.setAttribute("label", aLeafName); menuitem.setAttribute("id", "usercssloader-" + aLeafName); menuitem.setAttribute("class", "usercssloader-item " + (CSS.SHEET == this.AGENT_SHEET? "AGENT_SHEET" : "USER_SHEET")); menuitem.setAttribute("type", "checkbox"); menuitem.setAttribute("autocheck", "false"); menuitem.setAttribute("oncommand", "UCL.toggle('"+ aLeafName +"');"); menuitem.setAttribute("onclick", "UCL.itemClick(event);"); document.getElementById("usercssloader-menupopup").appendChild(menuitem); } menuitem.setAttribute("checked", CSS.enabled); }, toggle: function(aLeafName) { var CSS = this.readCSS[aLeafName]; if (!CSS) return; CSS.enabled = !CSS.enabled; this.rebuildMenu(aLeafName); }, itemClick: function(event) { if (event.button == 0) return; event.preventDefault(); event.stopPropagation(); let label = event.currentTarget.getAttribute("label"); if (event.button == 1) { this.toggle(label); } else if (event.button == 2) { closeMenus(event.target); this.edit(this.getFileFromLeafName(label)); } }, getFileFromLeafName: function(aLeafName) { let f = this.FOLDER.clone(); f.QueryInterface(Ci.nsIFile); // use appendRelativePath f.appendRelativePath(aLeafName); return f; }, styleTest: function(aWindow) { aWindow || (aWindow = this.getFocusedWindow()); new CSSTester(aWindow, function(tester){ if (tester.saved) UCL.rebuild(); }); }, searchStyle: function() { let word; try { word = gBrowser.currentURI.host; } catch { word = gBrowser.currentURI.spec; } openLinkIn("https://userstyles.org/styles/search/" + word, "tab", {}); }, openFolder:function(){ if (this.vFileManager.length != 0) { var file = Cc['@mozilla.org/file/local;1'].createInstance(Ci.nsIFile); var process = Cc['@mozilla.org/process/util;1'].createInstance(Ci.nsIProcess); var args=[this.FOLDER.path]; file.initWithPath(this.vFileManager); process.init(file); // Verzeichnis mit anderem Dateimanager öffnen process.run(false, args, args.length); } else { // Verzeichnis mit Dateimanager des Systems öffnen this.FOLDER.launch(); } },
-
Hallo aborix.
Vielen Dank, funktioniert bestens.
:klasse:Hier die geänderte Version:
https://github.com/Endor8/userChr…CSSLoader.uc.jsEine Frage, ich habe im Script zweimal die Bezeichnung ucsepalator gesehen,
Zeile 177 und Zeile 383 denke mal das sollte eigentlich ucseparator heißen oder was meinst Du?
Habe ich jedenfalls bei beiden geändert.Nur zum besseren Verständnis welches ist eigentlich die aktuelle und richtige Schreibweise zbs:
so
Codelet file = Services.io.getProtocolHandler("file").QueryInterface(Ci.nsIFileProtocolHandler).getFileFromURLSpec(fileURL);
oder so
Codelet file = Services.io.getProtocolHandler("file").QueryInterface(Components.interfaces.nsIFileProtocolHandler).getFileFromURLSpec(fileURL);
also (Ci.nsIFileProtocolHandler) oder (Components.interfaces.nsIFileProtocolHandler)
oder ist das egal?Mfg.
Endor -
[attachment=0]CSSBild.JPG[/attachment]
Ich habe jetzt noch einen alten Code gefunden und mir dieses Icon dort rausgezogen... jetzt gibts kein Vertauschen mehr..
Danke an alle..
@ aborix... klappt wunderbar? -
hombre, wie gehabt :klasse:
N kleines optisches Problem hier am Start. Da du den Button ja jetzt codemäßig "vergewaltigt" hast, geht hier das Menü nicht mehr automatisch auf. Muss jetzt erst auf die Maus hämmern
Das nur so als Info. Ich kann die Modifikation leider eh nicht verwenden, weil ich den verschiebbaren Button nicht in meine verschraubte Menüleiste rein bekomme Aber gut, man kann halt nicht alles haben!Endor, danke fürs Zusammenschrauben :klasse:
-
Ich kann die Modifikation leider eh nicht verwenden, weil ich den verschiebbaren Button nicht in meine verschraubte Menüleiste rein bekommeGeht mir auch so, ich habe den immer direkt neben Hilfe in der Menüleiste.
Zur Zeit habe ich den Button ganz rechts in der Menüleiste.
Mal sehen wie ich den wieder nach links schubse.....An sosnten wie immer gern geschehen. Meister.
Mfg.
Endor -
Ich hab das für mich jetzt so gelöst, dass ich beim Original geblieben bin und nur den Mittelklick am Button mit übernommen hab.
Passt, wackelt und hat Luft! -