Classic-Theme-Restorer-Menü (Firefox-Menü) anpassen

  • Zitat von aborix

    Der CTR bringt ja auch ein Menü mit.
    Das kann man mit Skript-Hilfe auch fast beliebig gestalten, wenn auch nicht so bequem wie bei PM.

    Falls du testen magst:

    Installiere in einem neuen Profil den CTR, userChromeJS, das Testskript aus Beitrag 58 und das folgende Skript.
    Damit kommen im Menü ein Eintrag für Neustart und zwei Buttons hinzu.

    aborix, ich habe damit mal ein neues Thema aufgemacht.
    Danke erst mal, das ist eine Alternative, an die ich auch schon gedacht habe, mich aber nicht drangetraut habe. Vielleicht geht es ja mit deiner Hilfe.

    Einmal editiert, zuletzt von bege (10. Oktober 2014 um 13:57)

  • Unerwünschte Einträge kann ich mit CSS ausblenden, das ist kein Problem.

    Die Toolbox, die du eingebaut hast, funktioniert prima.
    Den Neustart-Eintrag habe ich auskommentiert, weil RestartFirefox einen Eintrag im Appmenu erzeugt.

    Um den UserScriptLoader-Button in der ersten Spalte unterzubringen, habe ich dein Script erweitert.


    Funktioniert einwandfrei. Nur wenn ich die Box nicht am Ende der Spalte, sondern unter dem UserCSSLoader einfügen will (Zeile 25), wird die Box nicht angezeigt. Was ist da falsch?

    Der UserCSSLoader wird normalerweise auch am Ende der Spalte angezeigt. Das habe ich im Script geändert, so dass er unter den Web-Entwickler-Tools angezeigt wird.
    Ist es möglich, das stattdessen im neuen Script zu bewerkstelligen? Also nicht jedes Script ändern, um den Platz für die Anzeige zu definieren, sondern im CTR-Appmenu-Script?

    Das betrifft besonders Einträge, die von Add-ons kommen. Lassen die sich auch verschieben?
    So wird das Sitzungsmanager-Menü von TabMixPlus

    Code
    menu[id="appmenu-sessionmanager"]

    unten in der ersten Spalte angezeigt, ich möchte es am Anfang der zweiten Spalte haben.

    Und wie kriege ich Menüs aus der Menüleiste ins CTR-Menü, wie es in Personal Menu möglich war. Ich hatte das Datei- und das Extras-Menü im PM-Menü.

  • Zitat von bege


    Und wie kriege ich Menüs aus der Menüleiste ins CTR-Menü, wie es in Personal Menu möglich war. Ich hatte das Datei- und das Extras-Menü im PM-Menü.

    Selbst rausgekriegt :D

    Code
    var fileMenu = document.getElementById('file-menu');
    			fileMenu.setAttribute('label', 'Datei');
    			pane1.appendChild(fileMenu);
    
    var toolsMenu = document.getElementById('tools-menu');
    			toolsMenu.setAttribute('label', 'Extras');
    			pane2.appendChild(toolsMenu);

    Aber es bleibt das Problem, dass ich diese Einträge nicht mit insertBefore positionieren kann.

    Und wie kriege ich den menuseparator am Anfang einer Spalte weg, wenn ich die darüberliegenden Einträge mit CSS ausgeblendet habe?

  • Das sieht schon sehr gut aus. :klasse:

    Dann versuche ich mal, alle Fragen zu beantworten: :)

    Zitat von bege

    Also nicht jedes Script ändern, um den Platz für die Anzeige zu definieren, sondern im CTR-Appmenu-Script?


    Ja, so habe ich das auch gedacht.

    Zitat


    Das betrifft besonders Einträge, die von Add-ons kommen. Lassen die sich auch verschieben?


    Ja.

    Zitat

    das Datei- und das Extras-Menü
    ...
    Aber es bleibt das Problem, dass ich diese Einträge nicht mit insertBefore positionieren kann.


    Das funktioniert so wie sonst auch, z.B.:
    pane1.insertBefore(fileMenu, document.getElementById('appmenu_savePage'));

    Man braucht nur das Element davor oder danach zu kennen.
    https://developer.mozilla.org/en-US/docs/Web…de.insertBefore

    Das Attribut 'label' ist im Datei- und Extras-Menü bereits mit den richtigen Werten vorhanden.
    Man braucht es also nicht zu setzen, es stört aber auch nicht.

    Zitat

    Und wie kriege ich den menuseparator am Anfang einer Spalte weg, wenn ich die darüberliegenden Einträge mit CSS ausgeblendet habe?


    Wenn man den Eintrag davor kennt, sagen wir, er hat die id id, dann mit CSS so:
    #id + menuseparator {display: none}

    Mit JavaScript entfernt man Elemente mit Node.removeChild.

    Zitat

    [...] ich möchte es am Anfang der zweiten Spalte haben.


    Als Beispiel mit dem Extras-Menü:
    pane2.insertBefore(toolsMenu, pane2.firstChild);

    Alle Elemente müssen vorhanden sein, bevor auf sie zugegriffen wird.
    Bei den standardmäßig vorhandenen und von Erweiterungen mitgebrachten ist das ohnehin der Fall.
    Bei von anderen Skripten erzeugten nicht unbedingt; darum sollen alle Anweisungen, die diese Elemente betreffen, in die setTimeout-Funktion geschrieben werden.

    Sind mehrere Fx-Fenster geöffnet, so existiert das UserCSSLoader-Menü nur im ersten Fenster (siehe auch https://www.camp-firefox.de/forum/viewtopi…=835608#p835608).
    Darum die Abfrage, ob es existiert, damit das Skript nicht mit einer Fehlermeldung an dieser Stelle abbricht:
    if (UCLmenu) ...

    Nebenbei:
    Mit CSS kann man nicht nur ausblenden, sondern oft auch die Reihenfolge ändern.
    https://developer.mozilla.org/en-US/docs/Web…x-ordinal-group

    Schließlich noch ein Skript mit den genannten Änderungen:

  • Also tausend Dank! Wirklich Klasse, sowohl deine Hilfe als auch das Ergebnis. :D

    Das CTR-Menü anzupassen ist wohl eine gewisse Bastelei mit einer JS und einer CSS-Datei, aber ich will das ja nicht jeden Tag verändern. Für mich eine gute Lösung :klasse:

    Mit diesem Code

    CSS
    /* AGENT_SHEET */ 
    
    
    @namespace url("http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul");
    
    
    #sync-setup-appmenu ,menu[label="Internote"],#appmenu_fullScreen,#appmenu_sendLink,#appmenu_downloads,#ctraddon_appmenubox_newtab,#appmenu_newPrivateWindow,#ctraddon_appmenubox_bookmarks,#ctraddon_appmenubox_history,#appmenu_savePage{display: none !important;}


    bekomme ich dieses Ergebnis

    [attachment=0]Screenshot_094.png[/attachment]

    Prost! 8)

  • Nachdem ich mein CTR-Menü also fertig gebastelt habe, bekam ich diese Antwort
    http://forums.mozillazine.org/viewtopic.php?…3975&e=13583975


    Mit diesen Änderung lassen sich mit dem Add-on MenuManipulator http://mozilla.dorando.at auch die Appmenüs in Firefox und Thunderbird ändern.
    Damit geht nicht alles, was mit dem Script geht, aber das Neu-Anlegen, Verschieben und Ausblenden von Menüeinträgen geht damit.

    Einmal editiert, zuletzt von bege (29. Mai 2014 um 20:49)

  • Meine bescheidene Frage:

    Ist oder wird dieses für die Allgemeinheit im CTR "eingebaut", wenn nein, kann die dieses Code über die UserChrome oder Stylish bei mir, zusätzlich zum CTR verwenden und wie ist er kompatibel?

    Danke für die Antworten
    Barbara

    Freundliche Grüße
    Barbara

    ____________

  • Zitat von BarbaraZ-

    Meine bescheidene Frage:

    Ist oder wird dieses für die Allgemeinheit im CTR "eingebaut", wenn nein, kann die dieses Code über die UserChrome oder Stylish bei mir, zusätzlich zum CTR verwenden und wie ist er kompatibel?

    Danke für die Antworten
    Barbara


    Ich glaube kaum, dass das CTR-Menü editierbar wird, aber vielleicht weiß hier jemand mehr. Wer das machen will, muss etwas tiefer einsteigen.
    Also entweder mit MenuManipulator und/oder Scripts.
    Das CSS-Script (zum ausblenden von Einträgen) kannst du mit Stylish verwenden.
    Das JS-Script braucht das userChrome.js-Add-on. https://github.com/ardiman/userChrome.js (Beschreibung auf der Seite ganz unten.)

  • Zitat von bege


    Ich glaube kaum, dass das CTR-Menü editierbar wird

    Dafür gibt es ja das Add-on "Personal Menu", das ist eine feine Sache. Das macht bei mir nur Problem mit Script-Buttons. Deshalb habe ich nach einer Alternative gesucht und mit aborix' Hilfe diese hier gefunden.

  • Du hattest in Beitrag 6 geschrieben:

    Zitat von bege

    Nachdem ich mein CTR-Menü also fertig gebastelt habe, bekam ich diese Antwort
    http://forums.mozillazine.org/viewtopic.php?…3975&e=13583975


    Der Link führt nicht zur Antwort, sondern zu einer Seite mit der Meldung "You have been notified about this topic, please login to view it."

    Ich habe die Seite mit der Antwort verlinkt.
    Ich wusste nicht, daß du schon ein paar Minuten danach die Antwort als Zitat einfügst.
    Es hätte ja auch erst z.B. am nächsten oder übernächsten Tag sein können.

  • aborix,
    kapiert. Normalerweise teste ich meine Links, diesmal habe ich es offensichtlich nicht gemacht. Dein Link landet nicht genau auf dem gleichen Beitrag, deshalb bin ich durcheinander gekommen und meinte, du wolltest auf die Markierung von Änderungen hinweisen. Verwirrung komplett, alles klar ;)

  • Ich habe versucht, ein Widget in eine Toolbox einzufügen, das bleibt aber auf der Navigationsleiste.
    Das Add-on "Addon List Dumper (restartless)" erzeugt keinen Button, sondern ein Widget. Keine Ahnung, was das ist. Jedenfalls reicht es nicht, die ID (widget:addonListDumper@jetpack-eldumper) in der Toolbox hinzuzufügen.
    Geht das mit Widgets gar nicht, oder muss das Skript noch angepasst werden?

  • Wenn das Skript im Prinzip so wie in Beitrag 5 aussieht, setze im setTimeout die Zeit höher, d.h. ersetze 0 durch eine größere Zahl. Teste zuerst mit 100, dann mit 200 usw.

  • Zitat von aborix

    Wenn das Skript im Prinzip so wie in Beitrag 5 aussieht, setze im setTimeout die Zeit höher, d.h. ersetze 0 durch eine größere Zahl. Teste zuerst mit 100, dann mit 200 usw.


    Hab's mit 100er-Schritten bis 1000 probiert, kein Erfolg.
    Die Codezeile sieht so aus:

    Code
    var menuButtonsPane2 = ['console-button','widget:addonListDumper@jetpack-eldumper'];


    So wie eingetragen wird die ID im DOM-Inspector angezeigt.
    Setze ich statt des Widget den Button einer anderen Erweiterung ein, werden beide in der Toolbox angezeigt.

  • Dreh mal die Reihenfolge der ids um, also so:

    Code
    var menuButtonsPane2 = ['widget:addonListDumper@jetpack-eldumper','console-button'];


    Versuche auch, innerhalb der setTimeout-Funktion das Widget nicht in der Toolbox, sondern an anderer Stelle im CTR-Menü einzufügen.

    Teste beides mit hohen Timeout-Werten.

  • Zitat von aborix

    Dreh mal die Reihenfolge der ids um


    Dann werden beide Buttons nicht verschoben, sondern in der nav-bar angezeigt.

    Zitat

    Versuche auch, innerhalb der setTimeout-Funktion das Widget nicht in der Toolbox, sondern an anderer Stelle im CTR-Menü einzufügen.


    Dann verschwindet das Widget zwar von der nav-bar, wird aber nicht im appmenu angezeigt. (Die Toolboxen sind doch deshalb da, weil Buttons nicht direkt im Menü angezeigt werden können, oder?)

    Zitat

    Teste beides mit hohen Timeout-Werten.


    Alles mit verschiedenen Timeout-Werten getestet.