Erweiterung media.windows-media-foundation.enabled

  • Die Widgets-API wurde entfernt zugunsten der mit Firefox 29 und Australis eingeführten UI-APIs. Seit dem war die Widgets-API deprecated und wurde nun vor kurzem entfernt. Der ActionButton ist vermutlich das, was du jetzt nehmen würdest:

    https://developer.mozilla.org/en-US/Add-ons/…h-Level_APIs/ui

    Ein anderes Problem ist, dass es den Schalter media.windows-media-foundation.enabled ab Firefox 42 überhaupt nicht mehr gibt. Hintergrund dazu:

    https://bugzilla.mozilla.org/show_bug.cgi?id=1185782

  • zitronella, wenn ich richtig verstanden habe was du mit der erweiterung erreichen willst, dann war die einstellung "media.windows-media-foundation.enabled" ja eigentlich nur ein hack dazu.
    mittlerweile gibt es "media.play-stand-alone", was da ohnehin besser passt...

  • ah danke. Das heißt ich bräuchte nur noch einen Umschalter für "media.play-stand-alone" und dieser gilt dann sowohl für mp3 als auch für mp4.
    Gilt das auch auf allen Betriebssystemen (Windows, Linux, OSX) gleichermaßen?
    Dann müsste ich aber trotzdem das Add-on umschreiben, damit es wieder funktioniert.

    Hilfe auch im deutschsprachigen Matrix-Chat möglich oder im IRC-Chat
    Meine Anleitungstexte dürfen gerne "geklaut" und weiter verwendet/kopiert werden ;)

  • Diese Option sollte plattformunabhängig sein, jap.
    Weißt du, wie du das Add-on umschreiben musst, damit es wieder funktioniert?

    Der Weg über Python zum Kompilieren des Add-ons ("cfx") ist übrigens auch nicht mehr der bevorzugte Weg, stattdessen ist JPM der neue bevorzugte Weg. Aber darum kann man sich später auch noch kümmern. Erst einmal sollte das Add-on wieder laufen. ;)

  • Zitat von Sören Hentzschel

    Weißt du, wie du das Add-on umschreiben musst, damit es wieder funktioniert?


    Nein, nicht wirklich. Ich habe halt immer per Hand in der main.js den Code geändert und dann durch ausprobieren (trial and error) versucht heraus zu finden obs klappt. :D

    Hilfe auch im deutschsprachigen Matrix-Chat möglich oder im IRC-Chat
    Meine Anleitungstexte dürfen gerne "geklaut" und weiter verwendet/kopiert werden ;)

  • Schau mal hier rein:
    http://git.agenedia.com/firefox-add-on…src/lib/main.js

    Du findest dort ein solches Konstrukt:

    Code
    try {
      // ActionButton-Code
    }
    catch (e) {
      // Widget-Code
    }

    Auf diese Weise hatte konnte ich ältere und neuere Firefox-Versionen unterstützen, im nächsten Update wird es nur noch den ActionButton-Code geben. Aber du siehst an dem Beispielcode die Unterschiede zwischen beiden APIs, beide Blöcke machen das Gleiche, aber in dem einen Fall ist es die Widget-API, in dem anderen der ActionButton. Der ActionButton integriert sich halt wesentlich besser in Firefox 29 aufwärts. Daran kannst du dich orientieren. Du brauchst nicht beide Blöcke, auch das try und das catch kannst du weglassen, du brauchst nur den Teil innerhalb von try { }.

    require('sdk/ui/button/action').ActionButton({
    // Code
    });

    kannst du natürlich auch wie die anderen Modulimporte so schreiben:

    const actionbutton = require('sdk/ui/button/action');

    und dann:

    actionbutton.ActionButton({
    // Code
    });

    Ich hatte das an dieser Stelle so geschrieben, weil ich nur den relevanten Teil importieren wollte. Aber wenn du dann eh nur die ActionButton-API nutzt, ist das ja kein Thema. Kannst es aber auch genauso schreiben wie es in dem Beispiel ist, ist eine Geschmacksfrage, das funktioniert weder besser noch schlechter.

    Nachtrag: ich sehe gerade, dass in meinem Add-on in beiden Blöcken eine vollkommen unterschiedliche ID steht. Schön, dass mir dieser Fehler nach über einem Jahr auch mal auffällt. :D Aber nicht schlimm, das hat keine Auswirkungen auf die Funktionalität.

  • Danke. Aber die Icons sind nicht sichbar. Was ist falsch?

    Ja, ich habe noch die alten about:config Einträge drin, aber das sollte ja nicht das Problem sein.

    Hilfe auch im deutschsprachigen Matrix-Chat möglich oder im IRC-Chat
    Meine Anleitungstexte dürfen gerne "geklaut" und weiter verwendet/kopiert werden ;)

  • Das passt schon, dass du noch die alten about:config-Einträge verwendest. Eine Baustelle nach der anderen ist zielführender als alles auf einmal zu ändern und dann nicht zu wissen, welche Änderung nun das Problem ist, wenn etwas nicht geht. ;)

    Ich würde sagen, es liegt an deniem contentURL-Attribut, das gibt es in der Widget-API, aber der ActionButton kennt ein solches Attribut nicht. Siehe verlinktes Code-Beispiel, du benötigst ein Attribut mit dem Namen icon, dem du verschiedene Größen mitgibst. In meinem Beispiel siehst du 18px, 32px, 36px und 64px als Größen. 18px ist für die Symbolleiste, 36px entsprechendes für HiDPI-Bildschirme, 32px ist für das Menü und das Anpassen-Fenster, 64px entsprechendes für HiDPI-Bildschirme.

  • langsam verzweifle ich :-??? weiterhin nix zu sehen.

    Hilfe auch im deutschsprachigen Matrix-Chat möglich oder im IRC-Chat
    Meine Anleitungstexte dürfen gerne "geklaut" und weiter verwendet/kopiert werden ;)

  • 'enabled-18.png' : 'disabled-18.png

    und die folgenden drei Zeilen sind auch keine valide Syntax.

    Wenn du in deine Zeile weiter oben schaust:

    let icon = true === prefs.get('media.windows-media-foundation.enabled') ? 'enabled.png' : 'disabled.png';

    Das ist allgemein formuliert:

    let <variblenname> = <bedingung> ? <wenn erfüllt> : <wenn nicht erfüllt>

    Ich denke, deswegen hast du 'enabled-18.png' : 'disabled-18.png' geschrieben, aber <wenn erfüllt> : <wenn nicht erfüllt> ist keine gültige Syntax, da das nur ein halbes Konstrukt ist und nicht ohne Bedingung und das Fragezeichen funktionieren kann.

    Es wäre auch nicht schön, viermal die gleiche Bedingung abzufragen. Also schlage ich sowas vor:

    Code
    icon : {
      '18' : data.url(icon18),
      '32' : data.url(icon32),
      '36' : data.url(icon36),
      '64' : data.url(icon64),
    }
  • ich habe versucht es umzusetzen. Aber mit null Ahnung von Code ist das für mich eigentlich unmöglich zu durchblicken, trotz deiner Erklärungen. Mir fehlen dazu einfach die Grundkenntnisse. :oops: Zumindest funktioniert es so immer noch nicht :traurig:

    Hilfe auch im deutschsprachigen Matrix-Chat möglich oder im IRC-Chat
    Meine Anleitungstexte dürfen gerne "geklaut" und weiter verwendet/kopiert werden ;)

  • Zitat

    Could not read chrome manifest 'file:///C:/Program%20Files%20(x86)/Mozilla%20Firefox/chrome.manifest'.
    chrome://browser/content/browser.xul : Unable to run script because scripts are blocked internally.

    Hilfe auch im deutschsprachigen Matrix-Chat möglich oder im IRC-Chat
    Meine Anleitungstexte dürfen gerne "geklaut" und weiter verwendet/kopiert werden ;)

  • Ich hab deinen Beitrag mal in das richtige Thema verschoben. ;) Ja, da ist tatsächlich ein Syntax-Fehler im Add-on. Nach dem icon-Attribut fehlt das Komma. Weiter unten stimmt auch was nicht:


    Ein "else" kann nur auf ein "if" folgen, nicht auf ein Objekt wie in dem Fall das "icon"-Attribut.

  • Zitat von Sören Hentzschel

    h hab deinen Beitrag mal in das richtige Thema verschoben. ;)


    Danke :shock: hab ich wohl wo anders gepostet... gar nicht gemerkt.

    Zitat von Sören Hentzschel

    Weiter unten stimmt auch was nicht:

    Und wie wäre es richtig? Ich blicks nicht. Ich habe doch nur aus dem vorherigen die Icon-Bezeichnung angepasst.

    Der Teil ist jetzt hoffentlich richtig?

    Code
    actionbutton.ActionButton({
                id: 'quickmediacodec',
                label: _('LABEL_1'),
                icon : {
                 '18' : data.url(icon18),
                 '32' : data.url(icon32),
                 '36' : data.url(icon36),
                 '64' : data.url(icon64)
        },
                onClick: function()

    Hilfe auch im deutschsprachigen Matrix-Chat möglich oder im IRC-Chat
    Meine Anleitungstexte dürfen gerne "geklaut" und weiter verwendet/kopiert werden ;)

  • Ja, der Teil ist nun richtig.

    Zum anderen Teil, von der Syntax her wie folgt. Aber ich habe nicht überprüft, ob es funktioniert, nur die Syntax repariert.

    Wobei ich nicht glaube, dass das so funktionieren kann. Mach aus "icon" mal "this.icon", denn auf diese Weise hattest du es ja vorher bei Verwendung der alten API auch mit dem "contentURL"-Attribut umgesetzt.

  • funktioniert weiterhin nicht:

    Hilfe auch im deutschsprachigen Matrix-Chat möglich oder im IRC-Chat
    Meine Anleitungstexte dürfen gerne "geklaut" und weiter verwendet/kopiert werden ;)