Posts by Sven H

    Faca

    Hmm, das kann ich hier so leider nicht nachstellen.


    Hast du an der skin.xml etwas angepasst ?

    Wenn ja, liegt vermutlich dort der Fehler.


    Welchen Skin nutzt du ?

    Falls es der Shadow-FHD ist, dann mach mal ein Update auf die aktuelle Version vom ihad.


    Versuche auch mal, ob es mit dieser Version funktioniert.

    Die Datei aus dem Anhang in diesen Ordner auf die Box kopieren (vorhandene Datei überschreiben):

    usr/lib/enigma2/python/Plugins/Extensions/ChannelSelectionPlus/

    Das geht auch während die Box in der Dauerschleife ist - wenn es nach dem Kopieren nach 1-2 Schleifen immer noch nicht geht, dann hilft das erstmal nicht.


    @All

    Falls jemand im Setup nur noch eine Text-Auswahl in den Kanallisteneinstellungen für die Template-Auswahl hat, dann sollte diese Version auch Abhilfe schaffen.


    Edit:

    Dateianhang entfernt - aktueller Download im Post #1

    Im Post #1 gibt es jetzt die Version 0.0.9-r7


    Änderungen zur 0.0.9-r6:

    • optionales default-picon speziell für das ChannelSelectionPlus-Plugin
      (picon_default_csp.png im Skin-Pfad mit Fallback auf picon_default.png)
    • schneller Template-Wechsel mit "<<" und ">>" (Spultasten) jetzt direkt in der Kanalliste möglich
      (das war bisher nur in der Setup-Vorschau mit rechts/links möglich)
    • Optimierung der Template-Funktion "MultiContentTemplateColor" (dort kann jetzt im Template anstatt der lfd.Nr. für die Template-Farbe auch ein Farbname aus dem Skin mitgegeben werden)
    • der 2. übergebene Wert in den Template-Optionen für den scrollbarMode wird jetzt vom Plugin gesetzt
    • neue Textwerte primetimeEventName (text=31), primetimeEventTime (text=32) und primetimeHeading (text=35)
    • neue Template-Optionen "moreNextEvents":(x,w) (text=33) und "primetimeEvents":(x,w) (text=34)
      ],True,None,{"moreNextEvents":(5,250), "primetimeEvents":(1,0)}),
      Damit werden Event-Listen analog des EventList-Converters befüllt (die 1. Zahl hinter der Option bedeutet die Anzahl der Events/Zeilen, die 2. Zahl ist die Breite der Texte, um einen Zeilenumbruch zu verhindern - bei Breite 0 erfolgt keine Text-Kürzung)


    In den Screenshots sieht man, was mit den neuen Template-Optionen möglich ist.


    Vielen Dank an zombi für die optischen Ideen und die Tests :thumbup:

    Dachte ich mir schon ;)


    Im __init__, wo du das initiateDialog machst, muss noch das rein:

    Code
    self.onClose.append(self.deleteProgressDialog)

    Und dann das noch in die Screen-Class als zusätzliche Function reinnehmen:

    Code
    def deleteProgressDialog(self):
        self.session.deleteDialog(self.progress)

    Das self.progress.close() im Callback muss da raus.

    1. den Screen anstelle von self.session.open(Progress) mit self.session.instantiateDialog(Progress) der Variablen self.progress zuweisen

    dann self.progress.show(), um ihn einzublenden bzw. self.progress.hide() zum Ausblenden

    (dafür benötigst du das showProgress/HideProgress im Progress-Screen nicht unbedingt)


    2. im Skin des Screens in der ersten Zeile das flags="wfNoBorder" mit angeben:

    Code
    <screen position="center,80" size="330,40" title="Prograss" flags="wfNoBorder">

    Ich habe in Post #1 die Version 0.0.9-r6 hochgeladen.


    Änderungen zur 0.0.9-r5:

    - 3 neue Textwerte zur optimierten Anzeige in der Kanalliste

    * nextEventName_text # text=28 (hier wird nur der nextEventName angezeigt, bei text=21 wird Zeit+Name angezeigt)

    * nextEventTime_text # text=29 for example '14.30 - 15.30'

    * nowEventTime_text # text=30 for example '12.00 - 14.30'


    Hier sieht man, was man damit machen kann (Bild 1 - hier auch als Anlage mit zombi's Erlaubnis):

    https://www.i-have-a-dreambox.…ostID=2273761#post2273761


    cino

    Your wish is not really a useful addition for me.
    Sorry, but that does a lot more work than it's useful.

    Genau, im Screen wird ein dict mitgegeben, weshalb es da mit self["eins"] geht ;)


    Wenn man das in die Class b() auch reinnimmt, dann klappt es auch mit dem angeführten Beispiel:

    Python
    class b(dict):
        def __init__(self):
            dict.__init__(self)
            print ("Hello world 2")
            self["eins"] = a()
            self["eins"].test()

    Ansonsten ginge es auch mit self.eins, wie alpha schon meinte.

    Python
    class b():
        def __init__(self):
            print ("Hello world 2")
            self.eins = a()
            self.eins.test()

    So kannst du einen Tastendruck senden:

    Python
    from enigma import eActionMap
    eActionMap.getInstance().keyPressed(remotetype,key,flag)

    Die 3 Werte sind dabei wie folgt zu belegen:


    Remotetype
    TYPE_STANDARD = "dreambox remote control (native)"
    TYPE_ADVANCED = "dreambox advanced remote control (native)"
    TYPE_KEYBOARD = "dreambox ir keyboard"


    Key

    Welche Taste, welchen Tastencode hat, findest du hier:

    git.opendreambox.org Git - enigma2.git/blob - usr/lib/enigma2/python/keyids.py


    Flags
    FLAG_MAKE = 0 # m = make -> Normal key press
    FLAG_BREAK = 1 # b = break -> Key released
    FLAG_REPEAT = 2 # r = repeat -> Key locked (pressed continuously)
    FLAG_LONG = 3 # l = long -> Long key press
    FLAG_ASCII = 4 # ??


    Beim Senden von Tasten ist es ratsam immer das MAKE und ein BREAK zu senden.

    Also den Befehl 2x ausführen nur jedesmal für das andere Flag.

    Bei LONG sind es 3 Befehle: MAKE, LONG, BREAK


    Beispiel für die OK-Taste ("KEY_OK": 352):

    Python
    from enigma import eActionMap
    eActionMap.getInstance().keyPressed("dreambox advanced remote control (native)",352,0)
    eActionMap.getInstance().keyPressed("dreambox advanced remote control (native)",352,1)

    Ja, das Problem hatte ich im SkinReloader auch schon und da zum Glück schon eine "Lösung" drin ;)


    Die ChannelNumber-Renderer laden beim e2-Start die servicelist der Infobar (ChannelSelection):

    from Screens.InfoBar import InfoBar

    MYCHANSEL = InfoBar.instance.servicelist


    im change() des Renderer greifen sie dann auf das geladene MYCHANSEL zurück.


    Da ich im ChannelSelectionPlus zum live-Umschalten der Kanalliste die servicelist in der Infobar (ChannelSelection) neu belege, läuft der Verweis zur servicelist im Renderer dann wohl ins Leere.

    InfoBar.instance.servicelist = InfoBar.instance.session.instantiateDialog(ChannelSelection, zPosition=0)  


    Keine Ahnung, wie man dem Renderer das mitteilen könnte, dass Infobar.instance.servicelist neu belegt wurde :/

    Hab jetzt als Workaraound einfach ein Reload auf den Renderer-Code gemacht, was glücklicherweise funktioniert.

    Vielleicht gibt es da ja auch eine elegantere Lösung ;)

    Hmm, ist mir vorher gar nicht aufgefallen ;)

    Beim Umschalten des Modus (normale Ansicht <-> Template Ansicht) wird die Kanalliste sofort neu geladen, was leider der Renderer für die Kanalnummer nicht mitbekommt.


    Hab da im Moment auch keine Idee, wie man den Renderer live wieder reaktivieren kann.

    Alternative wäre, dass die aktualisierte Ansicht der Kanalliste erst sichtbar ist, wenn man die Kanalliste nach dem Setup beendet und wieder neu öffnet.

    Aber das finde ich auch nicht gerade perfekt ;)