widget source="session.CurrentService" per Code aus- und einblenden ???

  • Ich bin so einer, der Vorschläge am Besten am Beispiel versteht.

    Deshalb biete ich für solche Sachen dann auch gelegentlich so ein Test-Plugin, damit andere auch wissen und sehen, was ich meine ;)


    Was mir nur bei der Variante mit dem instantiateDialog aufgefallen ist:

    Das widget bei gelb aus dem Dialog liegt nicht abgedunkelt im Hintergrund beim Einblenden einer Messagebox, sondern leuchtet deutlich kräftiger als die anderen beiden widgets.


    Wenn du das nur für dich verwendest, kannst du auch die Variante "blau" nutzen.

    Variante grün und blau sind nur fehlerbehaftet, wenn ein User sich das widget ggf. anders skinnt und dann mit dem momentanen Code das richtige GUI-Element nicht gefunden wird.

    Gruß Sven (aka Dreamy)


    DM920 mit unstable OE2.5 DP
    One mit unstable OE2.6 DP

  • Jetzt melde ich mich doch nochmal - hatte mich zu früh gefreut. Das .show und .hide des "widget-screens" funktioniert zwar, allerdings scheint dann beim widget-screen manchmal das TV-Bild durch, egal, was ich bei transparent oder z-position einstelle.


    Also nächster Schritt: Nachschauen, obs mit deinem Beispiel einen ähnlichen Effekt hat. Erstes Problem: mein Image (newnigma2, OE2.0) verträgt offensichtlich bei self.myWidgetScreen = self.session.instantiateDialog(myWidgetScreen, zPosition=100) die zPosition nicht (unexpected keyword argument 'zPosition').


    Also im Code an beiden Stellen die zposition gelöscht, und das Testplugin läuft. Funktioniert auch mit Grün und Blau, aber ausgerechnet bei Gelb passiert gar nichts - also kein Gegencheck möglich.


    Dann hab ich mir gedacht, ich versuchs mal mit deiner Methode "blau", scheitere da aber wohl wieder an meiner Blödheit. Wahrscheinlich ist dann das "EventInfo(self.session.nav, EventInfo.NOW)" falsch, wenn ich an session.CurrentService kommen will. Kannst du mir nochmal einen konkreten Tip geben, wie das bei meinem Widget aussehen müsste?


    Ansonsten muss ich halt bei meinem Screen Öffnen und Schliessen bleiben, was zwar weniger elegant ist, aber zumindest auch bei mir funktioniert... :/:/

  • Ok, zu OE2.0 kann ich nichts mehr beitragen.

    Da du deinen Code uns vorenthältst, kann man dazu dann ja auch nichts sagen.


    Wenn ich das zPosition beim instatiateDialog weglasse, wird das widget hinter dem eigentlichen Screen angezeigt.

    Das sehe ich dann so leicht durchschimmern.


    Muss mal schauen, ob ich das auf BLAU auch für CurrentPosition als Bsp. machen kann.

    Gruß Sven (aka Dreamy)


    DM920 mit unstable OE2.5 DP
    One mit unstable OE2.6 DP

  • Hier mal ein erweitertes Test-Plugin, wo bei "blau" zusätzlich dein widget für "session.CurrentService" aus-/eingeblendet wird.

    Das neue widget habe ich mit "myWidget1" markiert, um es beim Suchen eindeutig zu identifizieren.

  • so, nun bin ich doch schneller zum Testen gekommen, als gedacht.. Super, klappt bestens (deine Methode "blau"). :thumbsup::thumbsup::thumbsup: Habs dann auch noch mit ein paar anderen Widgets getestet, alles Bestens.

    Nur hat mich dann noch der Ehrgeiz gepackt, und ich habs mit der Progress-Bar auch noch versucht:

    Da waren aber meine vielen Versuche nicht von Erfolg gekrönt. Nun erwarte ich nicht schon wieder eine mundgerechte Lösung, aber ein Tip, wo ich mich über die benötigten/verfügbaren Attribute/Parameter schlauer machen kann, wäre hilfreich.

    So oder so, schon jetzt wieder viel gelernt! Tausend Dank! :):):thumbup::thumbup:

  • Let me guess that you are trying to hide and show those widgets because they are not showing proper when you watch IPTV??

    Everything in life that's any fun is either immoral, illegal or fattening

  • and: seagen: You are guessing wrong. I am working (playing ? ) on a music-player-plugin, one focus is that this player also is able to play music videos. And on these videos, sometimes I want to have the fullscreen video without any other information, and sometimes I want to see the information (title, progress, next song ....).

    Right now, this is working already, as I mentioned earlier, with a special additional screen for video with Info, and another special additional screen with (Karaoke-style) lyrics. The only reasons why I am asking these questions and doing these trials is that I am looking if there is a more elegant solution. And: to learn a bit more about handling of enigma. :/:/

  • Kannst du dafür nicht den ganzen Screen auf .hide() setzen?


    Oder willst du da wirklich nur gezielt einige GUI-Elemente ausblenden?


    Ich komme wohl erst am Abend dazu, ein Beispiel für die Progressbar zu finden.


    Ansonsten kannst du im Code das jeweilige pprint wieder aktivieren und siehst dann ja alle downstream_elements und kannst es auf dein benötigtes für die progressbar runterfiltern.

    Gruß Sven (aka Dreamy)


    DM920 mit unstable OE2.5 DP
    One mit unstable OE2.6 DP

  • Ganzen Screen auf .hide() setzen: Ja, genau das mach ich im Moment, wenn ich das Video ohne Info als Fullscreen sehen will. Wenn dann zusätzlich die Titel-Infos sehen will, blende ich den Screen wieder ein, mit allem unsichtbar, was ich sonst nicht brauche. Und jetzt kommts: Wenn ich NUR Lyrics (eine Zeile, Karaoke like) sehen will, muss ich bis jetzt eben einen extra Screen öffnen, in dem nur die Karaoke-Zeile drin ist - aber eben mit dem ganzen Schwanz dran, Tastenbedienung, Spulen, Springen, Menü usw.


    Und wenn ich es eben schafffen würde, auch alle "CurrentService"-Elemente bei Bedarf aus- und wieder einzublenden, käme ich mit einem einzigen Screen zurecht. Dann würde bei Lyrics eben alles ausser der Lyrics-Zeile ausgeblendet. Nochmal: Nicht unbedingt notwendig, es funzt im Moment auch so, aber der Ehrgeiz der Vereinfachung (und des tieferen Verständnis) hat mich gepackt.


    Zum pprint: Hab auch bei meinen Versuchen schon jede Menge mitgeloggt bei den "downstream-elements", bin aber nicht dahintergekommen, welches attribut ich bei der progressbar nutzen könnte, um die rauszufinden. Da fehlt wohl doch noch etwas Hintergrundwissen.... :/:/

  • Ok, dann hier mit Progressbar ;)


    Da die Progressbar kein "text"-Attribute haben kann, musste ich die "Markierung" auf das Attribute "myName" umstellen.

    Das scheint bei allen 3 widgets kein Problem darzustellen.

    Files

    Gruß Sven (aka Dreamy)


    DM920 mit unstable OE2.5 DP
    One mit unstable OE2.6 DP

  • Danke dir. Aber schade: Bei mir klappt das nicht. Obs an OE2.0 oder an newnigma liegt, kann ich nicht beurteilen. Offensichlich wird myName bei keinem der widgets als gültiges Attribut erkannt. Wird also wohl nix bei mir. Danke dir trotzdem für deine Hilfe! Gelernt hab ich durch diese Aktion trotzdem wieder einiges. :thumbup::thumbup:

    Muss ich wohl bei meiner weniger eleganten Open-Close-Lösung bleiben, es sei denn, jemand hat noch eine Idee für OE2.0...

  • Dann müsstest du vorhandene Attribute verwenden, um das widget zu identifizieren.
    z.B. position oder size oder color oder in Kombination


    Wenn das nur für dich ist, sollte das auch kein Problem sein.

    Gruß Sven (aka Dreamy)


    DM920 mit unstable OE2.5 DP
    One mit unstable OE2.6 DP

  • Nein, ist halt nicht nur für mich - Yamp Music Player nennt sich das Ding, ursprünglich mal von JohnHenry, seit ein paar Jahren von mir weiterentwickelt, und es gibt auch einen User, der schon viele Skins dafür gemacht hat. Und den will ich natürlich ungern in seiner Kreativität einschränken.

    Wobei - während ich das schreibe, kommt mir grad eine Idee, die auf deiner aufbaut: Ich könnte ja noch ein "Dummy-Widget" einbauen, in das der Skinner die verwendeten Werte für position, size und color reinschreibt und die ich dann zum Vergleich verwende. Ist zwar ein bisschen "von hinten durch die Brust ins Auge", aber in der Richtung werd ich jetzt mal testen....


    Eine Möglichkeit, nach render = "Progress" zu suchen, gibts wohl nicht?

  • Er sucht ja schon nach eSlider, was ja das GUI-Element des renderer Progress ist.


    Wenn aber mehrere Skin-Screens sich an da die session.CurrentPosition anbinden, findest du alle diese.
    Und um dann zu wissen, welches aus deinem Skin-Screen kommt, braucht man eben ein passendes Merkmal zum Filtern/Erkennen.


    Ich muss mal schauen, ob da irgendwo der Screen-Name zum GUI-Element abfragbar ist.
    Dann könnte es darüber laufen ;)

    Gruß Sven (aka Dreamy)


    DM920 mit unstable OE2.5 DP
    One mit unstable OE2.6 DP

  • Schon wieder danke. Zum Weiterlernen ist das sicher hilfreich. Aber für mein aktuelles Problem wird es wohl sogar reichen, wenn ich nur auf den eslider ohne weitere Attribute abfrage, denn wenn das alles so funktioniert, wie ich mir das vorstelle, ist ja dauerhaft nur noch 1 Skin aktiv, in dem ich diese Aus- und Einblendaktion verwende - und da gibt es definitiv auch nur 1 eslider. Und dann sollte doch das reichen (funktioniert, eben getestet). Oder übersehe ich da etwas?


  • Naja, da kann dann beim Parsen auch mal ein widget aus der Infobar oder so kommen, was dann eben mit ausgeblendet wird.


    Bei mir waren da glaub ich mehr als ein GUI-Element das „Position“ im Converter verwendet hatte und als Progress lief.


    Ich schaue Abend mal, ob ich da was finde.

    Gruß Sven (aka Dreamy)


    DM920 mit unstable OE2.5 DP
    One mit unstable OE2.6 DP

  • Hab es jetzt doch mal bei "blau" über self.renderer des Screens geprüft.

    Wenn du im Skin-Screen nur einen Progress mit dem Converter ServicePosition -> Position hast, dann sollte man den rausfiltern können.

    Die anderen widgets mit "myName" als Attribute hab ich erstmal auskommentiert.


    Code
                #find our progress renderer with converter ServicePosition "Position"
                for element in self.renderer:
                    if "Renderer.Progress" in str(element) and "ServicePosition'>(Position)" in str(element.source):
                        if element.instance.isVisible():
                            element.instance.hide()
                        else:
                            element.instance.show()

    Files

    • TestPlugin.py

      (12.26 kB, downloaded 23 times, last: )

    Gruß Sven (aka Dreamy)


    DM920 mit unstable OE2.5 DP
    One mit unstable OE2.6 DP

  • Hi, jetzt bin ich zum Testen gekommen - funzt (natürlich :saint: ) genauso wie meine einfache Abfrage auf eslider, und wenn das für noch etwas mehr Sicherheit sorgt, ist das auch kein Fehler. Einzige Änderung, die ich noch eingebaut habe: Da ich beim Loggen gesehen habe, dass schon sehr viele Renderer gefunden werden, hab ich ein break eingebaut, sobald die Progressbar gefunden wurde.

    Wieder vielen Dank! :thumbsup: Wo kommt man denn an die Infos, die zu so einem Wissen führen???