Choice Box in der Kanalliste :-(

  • Hi!


    Ich habe mit meinem Instant EPG Timer Plugin jetzt die Möglichkeit geschaffen das man in der Kanalliste auf jedem Kanal mit der Record Taste einen Instant Timer starten kann.


    In den neuen Defaul (FHD) Skins hat das aber den Effekt aus dem Screenshot.


    Das Menu funktioniert zwar, ist durch eine geringere z position aber nur diffus im Hintergrund der Kanalliste zu sehen. zPosition 1000 bei der Channel Selection ist .... nicht sehr Plugin freundlich.


    Ich kann jetzt zwar der Choice Box in der skin_default*.xml eine zPosition von 1001 spendieren, damit sie wieder im Vordergrund ist, aber das kann nicht ganz der Sinn der Sache sein :loudly_crying_face:

  • Das sehe ich schon ein aber dann wird es ziemlich schwer da Plugins irgendwas anzeigen zu lassen. Ich müsste jetzt meine eigene ChoiceBox class machen um der dann einen Skin mit einer höheren z-Position zu spendieren, oder mit applySingleAttribute an allem vorbei irgendwie die zPosition zu manipulieren :loudly_crying_face:


    Plugins die irgendwas mit der Message box anzeigen würden dann ja auch hinten bleiben falls man gerade mal die Kanalliste offen hat.


    Ich habe das Plugin mit dem Metrix Style von arki entwickelt und der hat keine explizite zPosition bei der ChannelSelection und dort funktioniert es wie gewünscht.


    Wenn das so gewünscht ist dann dürfte aber auch die Choice Box nicht den Input Focus der Fernbedienung bekommen, sondern bei der Kanalliste bleiben. So ist das jetzt einfach ...seltsam... und bei einer nicht transparenten Kanalliste wäre es dann Blindflug.


    So böse ist mein Wunsch ja nicht, auch die Kanalliste mit Plugins aufzupeppen, nur macht Ihr es einem damit nicht leichter.


    Die Möglichkeit auf JEDEM Kanal eine Sofortaufnahme zu starten/stoppen ist nämlich durchaus ein Mehrwert, nur würde ich das eben gerne so wie ursprünglich geplant mit möglichst wenig neuem Code machen, sonst artet das aus :face_blowing_a_kiss:

    2 Mal editiert, zuletzt von Lost in Translation ()

  • Gut dann gehe ich mich jetzt eine Runde schämen, aber damit es Plugins in der Kanalliste schwer zu machen führt dann zu Ansätzen wie Vali's EPG wo gleich die ganze Kanalliste überschreiben wird, das ist auch nicht gerade Best Practice :grinning_squinting_face:


    Von dort habe ich übrigens ja die Idee des Timer setzens direkt in der Kanalliste :smiling_face_with_halo:


    Aber ich wollte eh immer schon mal ausprobieren ob man nicht skin Attribute on the fly überschreiben kann bzw. ausprobieren was man so alles in der skin.py an methoden überschreiben kann :pouting_face:

  • Wenn das ghost gemacht hat dann denke hat das einen Sinn gehabt wenn du da jetzt Sachen über schreibst kann es auch zu andern nicht guten Sachen führen.
    Es gibt im dreamos ein zpos handling und da wird viel vom system geregelt und im skin gibt man nur noch wenig an ,dabei hat sich sicherlich dream was gedacht und nicht alles ist falsch nur weil jetzt jemand was über schreiben möchte.
    Man kann sicherlich aber eventuell solltest da mal ghost fragen warum sie das gemacht haben und was man da mit dem was du da machst eventuell besser machen als stumpf Sachen aus der skin.py zu über schreiben und eventuell andere Sachen kaputt machen.

  • Ich sage ja nicht das es falsch ist und ich verstehe sogar recht gut warum die Kanalliste normal alles zudecken soll, nur hat das eben auch negative Effekte wenn man dort was dazu bauen will. Nur weil sich noch nicht alle Skinnder daran halten muss es ja nicht schlecht sein was da umgesetzt wurde :grinning_squinting_face:


    Nur würde ich gerne jetzt mit möglichst wenig Aufwand und Kollateralschaden wieder aus diesem Jammertal rauskommen.


    Aber ich habe grade nachgesehen, man kann der Choice Box einen skin_name mitübergeben, vielleicht kann ich damit für diesen Fall eine höhere zPosition reinschummeln, mal sehen ...


    Aber vielleicht hat ja Ghost auch noch eine bessere Idee ...

    2 Mal editiert, zuletzt von Lost in Translation ()

  • ein .hide() und danach wieder ein .show() geht nicht auf die Senderliste? Ist auch ein hässlicher Workaround. Eigentlich sollte hier von e2 immer automatisch eine zPosition+1 gegenüber parent vergeben werden. Dann würde das generell klappen.

    Gruss
    Dre


    Boxen (im Einsatz): DM920, DM900, DMOne
    Developer Project Merlin - we are OpenSource

  • wenn du nichts bei der zPosition angibst funktioniert es ja auch so.


    Ich habe erstmal als Workaround die Choice Box komplett umgangen und lasse den Timer aus dem EPG direkt anlegen, weil meistens wollen die Leute eh nichts anderes, und wenn (noch) kein EPG da ist wird sowieso ein unbegrenzter Timer angelegt.


    Bei der Timer Selection beim Löschen die ja ein eine eigene Class mit eigenem Skin ist wird die Kanalliste ja sauber ausgeblendet und wenn man die Timer Selection closed wieder angezeigt, wahrscheinlich werde ich das bei der Choice Box auch so machen müssen, das ist noch am saubersten. Nur hat die TimerSelection auch keine zPosition, ich muss erst verstehen warum es dabei geht und mit der ChoiceBox nicht.

  • hast du ein +1 bei der Message Box geskinned ?

  • GM das ist der name="Toast" screen und der hat wie auch die Choicebox im Skin keine zpos. sondern wird vom System passend angezeigt ,das ist also dort in den py´s schon richtig passend drin.

  • nein dann wird einfach gestacked nur ab 1000 sollte das eigentlich nur mehr absolut gehen wenn ich Ghost richtig verstanden habe. Wenn ich bei der Choice Box zpos 1001 reinschreibe geht's ja auch mit dem Original skins aber das macht dann andere sachen kaputt.


    Ich verstehe nur nicht warum es mit dem Screen auf Menu in der kanalliste funktioniert oder dem Timer anzeige screen zum Auswaehlen was man loeschen soll, die haben kein zpos wie die ChoiceBox und es wird richtig angezeigt....aber halt bei ausgeblendeter Kanalliste statt einem Overlay. Das wuerde mir als Loesung ja schon reichen, aber so ist es einfach seltsam.

    Einmal editiert, zuletzt von Lost in Translation ()

  • dann mach dort mal ein -1 rein dann müsstest du das gleiche Verhalten kriegen.


    Die Message und die Choice sind die einzigen die noch diesen mit applet embeddeden python Code haben um dynamisch Sachen wie Size rechnen zu können und das macht die ganze Sache komisch.


    Wenn ich mir die ChoiceBox auf eine eigene kopiere und skin mit fixen sizes mache weil ich ja weis wie die Menu Einträge beim Instant Record Menu aussehen habe ich das Problem nämlich nicht.

  • den python Code braucht man eigentlich gar nicht, ich hab das jetzt bei mir stehen, alles läuft und die Screens laden deutlich schneller
    <screen name="ChoiceBox" position="center,center" size="650,590" title="Input">
    <widget name="text" position="25,10" size="610,220" font="Regular;24" enableWrapAround="1" />
    <widget name="list" position="20,240" size="610,336" itemHeight="28" scrollbarMode="showOnDemand" />
    </screen>

  • ja aber das maxcht nur Sinn wenn du fixes Sizes vergeben willst in deinem Skin, damit werden die Sachen aber zwangsweise unnötig groß damit du für alle Eventualitäten bereit bist.

  • Nur ist das oben, wie zombi bereits geschrieben hat, ein Toast und nicht eine MessageBox

    Gruss
    Dre


    Boxen (im Einsatz): DM920, DM900, DMOne
    Developer Project Merlin - we are OpenSource

  • gutemine mag Toast :smiling_face:


    Der hat in der Toast.py aber ein hardcoded zPosition=9999, insofern gewinnt der immer.


    Ich bin eh schon beim Überlegen das auf eine Menu List umzubauen und mir das selber zu skinnen, weil so wird mir das langsam zu blöde.