Geladene Plugins in einem Plugin zur Laufzeit ermitteln

  • Hi,


    bevor Klaus wieder erschrickt (bezüglich unerwünschten Abhängigkeiten zwischen den Plugins :) ), erkläre ich erst mal, was ich vorhabe: ich zeige in nOpacity im Hauptmenü für die verschiedenen Menüelemente Icons an. Für die VDR eigenen Menüpunkte (Schedules, Channels, ...) kann ich diese Icons mit einem von der verwendeten Sprache unabhängigen Namen ablegen. Für Plugins, die ebenfalls einen Hauptmenüeintrag haben, prüfe ich aktuell nur, ob ein Icon mit genau dem Namen, wie er auch im Hauptmenü angezeigt wird, existiert. Dass die Icons mit diesem Namen (also auch in der entsprechenden Sprache) korrekt vorliegen, darum muss sich der User aktuell selbst kümmern.


    Es kam nun der Vorschlag auf, ob man die Icons nicht mit dem Namen des Plugins ablegen könnte und dann die Icons generisch laden könnte (also z.B. ein burn.png, das geladen wird, wenn im Hauptmenü ein Eintrag "DVD brennen" auftaucht, oder ein femon.png für "Signalstärke anzeigen"). Deshalb die Frage: habe ich irgendwie die Möglichkeit, in einem Plugin (bzw. Skin) zur Laufzeit alle geladenen Plugins in Form eines Plugin-Objekts geliefert zu bekommen? Über die public Plugin Methode "virtual const char *MainMenuEntry(void);" könnte ich mir dann den Hauptmenüeintrag (wohl schon in der korrekten Sprache) holen und hätte genau das, was ich bräuchte.


    Ciao Louis

  • Nur mal als Anmerkung...


    Es kann sein das ein Plugin bei der Abfrage keinen Menutitel zurückgibt, aber später wenn der User ein Menu aufruft schon. Ferner kann der Menutitel dynamisch sein (z.B. hängt confliktcheconly von epgsearch da die Anzahl der Konflikte an, eggtimer hat unterschiedliche Menutitel jenachdem ob gerade nen eggtimer läuft oder nicht usw.).


    cu

  • Hi,


    hmmm...dann gibts halt in diesen Fällen kein Icon :) Schlechter wird es durch diese Methode auf keinen Fall, das würde mit der aktuellen Art und Weise wie die Icons dargestellt werden auch nicht funktionieren.


    Aber trotzdem danke für den Hinweis :)


    PS: was mir gerade noch einfällt...passt zwar nicht ganz zum Thema, aber fast: Boostar hatte mal angemerkt, dass es kein Icon für den Hauptmenüpunkt "Aufzeichnung beenden" gibt...ich wollte das mal irgendwann nachstellen, bin aber bereits daran gescheitert, dass das bei mir gar nicht im Hauptmenü angezeigt wird. Ich hatte diesen Menüpunkt früher bei einer laufenden AdHoc Aufzeichnung auch. Kann man das irgendwo an / abschalten oder hat jemand ne Ahnung, warum das bei mir nicht auftaucht?


    Ciao Louis

  • Ich hatte diesen Menüpunkt früher bei einer laufenden AdHoc Aufzeichnung auch. Kann man das irgendwo an / abschalten oder hat jemand ne Ahnung, warum das bei mir nicht auftaucht?


    Mit "play" (aus live TV herraus) eine vorher gesehene Auzeichnung starten und dann schneiden, dann wird extremenu (und seine Schnttwarteschlange) umgangen.


    Es fällt, als Unterschied zu den anderen, auf das dieser Menueintrag keine Nummer davor hat (jedenfals bei mir, keine Ahnung in wie weit da wieder Patches drinhängen).


    cu

  • Nein, da hast du mich wohl falsch verstanden. Ich meine nicht den Schnitt, sondern den Hauptmenüpunkt "Aufzeichnung beenden" bei einer AdHoc Aufnahme. Extrecmenu benutze ich übrigens nicht...

  • Stimmt, da hatte ich mich verlesen.


    Aber der Menupunkt sollte doch immer da sein wenn man Record drückt. Es sei denn der VDR startet während der Aufnahme neu, dann läuft die Aufnahme ohne Menupunkt als Timer weiter.


    Seltsam das er bei dir fehlt.


    cu

  • Da sagst du was...es kann natürlich durchaus sein, dass ich da mal den VDR neu gestartet habe, in einer Entwicklungsumgebung macht man das ja des öfteren. Ich denke daran hat es gelegen, danke für den Hinweis :)


    Ciao Louis

  • Nur mal als Anmerkung...


    Es kann sein das ein Plugin bei der Abfrage keinen Menutitel zurückgibt, aber später wenn der User ein Menu aufruft schon. Ferner kann der Menutitel dynamisch sein (z.B. hängt confliktcheconly von epgsearch da die Anzahl der Konflikte an, eggtimer hat unterschiedliche Menutitel jenachdem ob gerade nen eggtimer läuft oder nicht usw.).


    cu


    Da gibt es noch mehr Beispiele u.A. das mailbox Plugin, oder auch das fritzbox Plugin, wo dynamisch die Anzahl der Mails, bzw. Anrufe, im Hautmenü angezeigt werden.

  • Hi,


    @Klaus: plugin->Name() wollte ich als Name für die Icons benutzen und über plugin->MainmenuEntry() mappen. Ich komme im Skin doch nur an den im Hauptmenü angezeigten Namen...oder wie genau meinst du das?


    Wenn ich dann noch prüfe, ob der angezeigte Name mit plugin->MainmenuEntry beginnt (und nicht auf exakte Gleichheit) müsste ich auch die meisten der genannten Aussnahmen erwischen...


    Ciao Louis

  • Warum mappst Du nicht über den Plugin-Pointer ? Der sollte sich während der Lufzeit nicht verändern.



    Gesendet von meinem iPad mit Tapatalk HD

    VDR: Thermaltake DH102, Asus M3N78-PRO AMD 4850e, GT 220 passiv, 1x Mystique SaTiX-S2 Dual

  • Die Frage ist, wie man vom ausgewählten Menüpunkt zum Namen des Plugins kommt, der diesen Menüeintrag erzeugt hat.


    Ich weiß ja nicht, wie zeitintensiv das ist, bei jedem Menüpunkt erst den Pluginmanager aufzurufen, alle Plugins zu durchlaufen und zu prüfen, ob der Hauptmenüeintrag mit plugin->MainmenuEntry beginnt, um dann das Plugin und plugin->Name zurückzugeben.

    - Client1: Thermaltake DH 102 mit 7" TouchTFT * Debian Stretch/vdr-2.4.0/graphtft/MainMenuHooks-Patch * Zotac H55-ITX WiFi * Core i3 540 * 4GB RAM ** Zotac GT630 * 1 TB System HDD * 4 GB RAM * Harmony 900 * satip-Plugin

    - Client2: Alfawise H96 Pro Plus * KODI
    - Server: Intel Pentium G3220 * DH87RL * 16GB RAM * 4x4TB 3.5" WD RED + 1x500GB 2.5" * satip-Plugin
    - SAT>IP: Inverto iLNB

  • TheChief: genau das ist mein Plan...das sollte nicht zu zeitintensiv sein, denke ich.


    Nochmal: ich habe im Skin keinen Plugin Pointer, ich habe nur das, was auch wirklich ausgegeben wird. Die Nummer davor schneide ich natürlich vorher ab.



    Ciao Louis

  • Vielleicht kann man ja den VDR Core Code der Menu(-Items) erweitern und noch eine Variable hinzufügen. Sowas wie menuitem->Creator, wo der Pluginname drin steht (oder default vdr).

    - Client1: Thermaltake DH 102 mit 7" TouchTFT * Debian Stretch/vdr-2.4.0/graphtft/MainMenuHooks-Patch * Zotac H55-ITX WiFi * Core i3 540 * 4GB RAM ** Zotac GT630 * 1 TB System HDD * 4 GB RAM * Harmony 900 * satip-Plugin

    - Client2: Alfawise H96 Pro Plus * KODI
    - Server: Intel Pentium G3220 * DH87RL * 16GB RAM * 4x4TB 3.5" WD RED + 1x500GB 2.5" * satip-Plugin
    - SAT>IP: Inverto iLNB

  • Die Frage ist, wie man vom ausgewählten Menüpunkt zum Namen des Plugins kommt, der diesen Menüeintrag erzeugt hat.


    Ich weiß ja nicht, wie zeitintensiv das ist, bei jedem Menüpunkt erst den Pluginmanager aufzurufen, alle Plugins zu durchlaufen und zu prüfen, ob der Hauptmenüeintrag mit plugin->MainmenuEntry beginnt, um dann das Plugin und plugin->Name zurückzugeben.


    Den Aufwand würde ich als minimal einschätzen, und genau so würde ich es machen.


    Klaus

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!