[FAQ] Neuen Screen aus importierten .py Componenten erstellen?

  • Hallo,


    wollte mal fragen ob es eine "recht einfache Möglichkeit gibt einen Screen aus importierten Componenten zu erstellen?



    In meinem Versuch z.b. für das Autotimer-Plugin benötige ich den Screen: "AutoTimerFAQ"


    Leider habe ich für diesen Screen im Plugin selbst keinen eigenen Screen gefunden :loudly_crying_face:


    Habe nun nach Stunden der suche und es experimentierens dies Weg gefunden, und weiß nicht ob er der richtige Ideale Weg ist.
    Evtl. gibt es ja auch eine Leichteren, bzw, besseren weg?



    zu meiner Vorgehensweise:


    Das einzigste was ich nach langen suchen zum screen name="AutoTimerFAQ" gefunden habe ist in der
    /usr/lib/enigma2/python/Plugins/Extensions/AutoTimer/AutoTimerOverview.py folgender Eintrag:


    Python
    elif ret == "faq":
    				from Plugins.SystemPlugins.MPHelp import PluginHelp, XMLHelpReader
    				from Tools.Directories import resolveFilename, SCOPE_PLUGINS
    				reader = XMLHelpReader(resolveFilename(SCOPE_PLUGINS, "Extensions/AutoTimer/faq.xml"), translate=_)
    				autotimerFaq = PluginHelp(*reader)
    				autotimerFaq.open(self.session)



    Also habe ich mir erst einmal den Eintrag (SCOPE_PLUGINS, "Extensions/AutoTimer/faq.xml") angeschaut.
    Welcher den FAQ-Text beinhaltet, aber keinen direkten Screen und auch keinen Hinweis wie ich diesen EIntrag einbinden kann....


    Dann habe ich mir als zweites die oberste Zeile vorgenommen und diese entsprechenden .py Dateien genauer betrachtet:
    - from Plugins.SystemPlugins.MPHelp import PluginHelp, XMLHelpReader


    in der /usr/lib/enigma2/python/Plugins/SystemPlugins/MPHelp/ bin ich dann fündig geworden,
    und habe folgenden möglichen Screen gefunden:




    Diesen Screen habe ich mir dann als Vorlage genommen um diesen Screen dann für den screen name="AutoTimerFAQ" umzubauen.




    Hatte zwar schon vorher versucht den Screen selbst zu gestalten aber leider knallte mir immer das Enigam2 weg, der Entscheidende Eintrag den ich benötigte war dies:


    Code
    <!-- Detail Text -->
    		<widget name="detailtext" position="10,75" size="1240,630" font="Regular;30"/>



    Evtl.kann dieses Beitrag von mir den einen oder anderen Helfen, wenn er mal auf ein gleiches öder ähnliches Problem stößt.
    Ob diese Vorgehensweise natürlich die richtige isr, das weiß ich nicht, aber evtl. kann ja ein "erfahrener" Skinner oder Phyton bzw. XML programmierer dazu mehr aussagen?


    Zumindest hatte ich bis zu diesem Lösungsweg etliche Stunden der Suche und des Experimentieren benötigt,
    und will es einem anderen Unerfahrenen, wie Mir hiermit einiges an Zeit ersparen :winking_face:

    Bilder

    MfG EgLe



    Kernel : Linux 6.1.26-1-MANJARO (64-bit)-MANJARO (LTS)
    GUI : KDE 5.105.0 / Plasma 5.27.4
    Machine : Intel NUC8i7HVK
    Graphics : Radeon RX Vega M GH
    CPU : Intel Core i7-8809G @ 8x 4.2GHz
    RAM : Gskill F4-3000C16S-16GRS Speicherkarte so D4 3000 16GB C16 Rip

  • Hallo arki,


    ja habe es gefunden, zum Glück :grinning_squinting_face:


    Naja wollte halt wissen ob die Vorgehensweise soweit richtig ist :question_mark:



    Weiterhin Weiß ich ja als Laie, ja nicht das dies der selbe Screen ist wie die von dir genannten, bin ja kein Profi :frowning_face:




    Und dieser Thread , soll ja auch den anderen Anfänger evtl. das Leben etwas erleichtern :question_mark:

    MfG EgLe



    Kernel : Linux 6.1.26-1-MANJARO (64-bit)-MANJARO (LTS)
    GUI : KDE 5.105.0 / Plasma 5.27.4
    Machine : Intel NUC8i7HVK
    Graphics : Radeon RX Vega M GH
    CPU : Intel Core i7-8809G @ 8x 4.2GHz
    RAM : Gskill F4-3000C16S-16GRS Speicherkarte so D4 3000 16GB C16 Rip

  • EgLe
    Du musst doch überhaupt garkein AutoTimerFAQ skinnen,in einigen Plugins ist es einprogrammiert das sie zum anzeigen der Faq den screen name="MPHelp" nutzen und genau den musst du skinnen nix weiter.


    Das ist so als wenn in einem Plugin zb. der Choicebox screen aufgerufen wird (es gibt halt globale screens die von mehreren Plugins genutzt werden ,das ist und war schon immer so) :winking_face:

  • Hallo zombi,


    EgLe
    Du musst doch überhaupt garkein AutoTimerFAQ skinnen,in einigen Plugins ist es einprogrammiert das sie zum anzeigen der Faq den screen name="MPHelp" nutzen und genau den musst du skinnen nix weiter.


    Ahh, jetzt verstehe ich....


    Und ich glaube mit dieser Aussage verstehe ich auch die Antwort-Frage von "arki" :smiling_face_with_sunglasses:


    Gut dann muss ich ja meinen selbst neu erstellenden Screen "AutoTimerFAQ" nur umbenenen zu screen name="MPHelp",
    dann habe ich damit gleich mehrere mit erschlagen :thumbs_up:

    MfG EgLe



    Kernel : Linux 6.1.26-1-MANJARO (64-bit)-MANJARO (LTS)
    GUI : KDE 5.105.0 / Plasma 5.27.4
    Machine : Intel NUC8i7HVK
    Graphics : Radeon RX Vega M GH
    CPU : Intel Core i7-8809G @ 8x 4.2GHz
    RAM : Gskill F4-3000C16S-16GRS Speicherkarte so D4 3000 16GB C16 Rip

  • Hallo,


    hmm, würde mir gerne von dem Plugin "Bonjour" einen Screen in FHD erstellen...


    In der /usr/lib/enigma2/python/Plugins/Extensions/Bonjour/plugin.py habe ich folgenden Eintrag gefunden:


    XML
    class BonjourScreen(Screen):	
    	skin = """
    	<screen position="center,center" size="600,400" title="Bonjour" >
    		<widget name="menuList" position="10,10" size="580,380" scrollbarMode="showOnDemand" />
    	</screen>"""


    Also habe ich mir zuerst einen Screen gemacht in der Art wie:




    XML
    <!-- Bonjour / (plugin-extention) -->        
           	<screen name="BonjourScreen" position="center,195" size="1280,720" title="Bonjour" >
    		<widget name="menuList" position="20,20" size="1240,680" scrollbarMode="showOnDemand" />
    	</screen>


    Nun habe ich noch das Problem mit dem widget name="menulist",
    so wie ich das sehe gibt es dafür in der skin.xml kein eigene Componente zum Anpassen für die Schriften und Anstände.


    Und in der plugin.py von Bonjour selbst finde ich dies dazu:


    XML
    self["menuList"] = MenuList([], content=eListboxPythonMultiContent)
    		self["menuList"].l.setItemHeight(75)
    		self["menuList"].l.setFont(0, gFont("Regular", 20) )
    		self["menuList"].l.setFont(1, gFont("Regular", 16) )

    Kann ich jetzt dieses Widget beeinflussen?


    Wenn ja, wie kann ich den erkennen das man dies beeinflussen kann?


    Im Moment sieht das ganze bei mir echt beschissen aus, siehe Screenshot :winking_face:

    Bilder

    MfG EgLe



    Kernel : Linux 6.1.26-1-MANJARO (64-bit)-MANJARO (LTS)
    GUI : KDE 5.105.0 / Plasma 5.27.4
    Machine : Intel NUC8i7HVK
    Graphics : Radeon RX Vega M GH
    CPU : Intel Core i7-8809G @ 8x 4.2GHz
    RAM : Gskill F4-3000C16S-16GRS Speicherkarte so D4 3000 16GB C16 Rip

  • Die einzelnen Elemente der MenuList werden in __buildMenuEntry() fix festgelegt. Das müsste man im Code anpassen, damit es skinbar wird.

    Gruss
    Dre


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

  • Hallo,


    habe da noch einen solcher Kanditaten gefunden :frowning_face:


    Und zwar wenn man das Plugin "Trackkautoselect" installiert.


    Und dann über die Audiotaste dieses Aufruft erscheint ja dann mittels der
    Menütaste der Screen name="TrackAutoselectSetup".


    Wenn man nun im Setup über die Blaue Taste "Bearbeiten" geht erscheint ein weitere Screen.
    Diesen kann ich leider nicht definieren :frowning_face:


    Über die Methode mit der Skin.py bekomme ich nur diese Ausgabe..



    Und in den entsprechenden .py Dateien im Plugin habe ich keinen weiteren "definierten" Screen ausser dem fürs Setup gefunden :frowning_face:


    Wie kann man nun diesen Screen evtl. skinnen, bzw, wie geht man da vor dies heraus zu finden :question_mark:

    Bilder

    MfG EgLe



    Kernel : Linux 6.1.26-1-MANJARO (64-bit)-MANJARO (LTS)
    GUI : KDE 5.105.0 / Plasma 5.27.4
    Machine : Intel NUC8i7HVK
    Graphics : Radeon RX Vega M GH
    CPU : Intel Core i7-8809G @ 8x 4.2GHz
    RAM : Gskill F4-3000C16S-16GRS Speicherkarte so D4 3000 16GB C16 Rip

  • Ich hätte auf TrackAutoselectPreferenceListScreen getippt. Aber ich verifziere das noch kurz.


    Edit: ist so

    Gruss
    Dre


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

  • Hallo dre,

    Ich hätte auf TrackAutoselectPreferenceListScreen getippt. Aber ich verifziere das noch kurz.


    Edit: ist so


    Ohh Mensch du hast recht danke,
    hatte gar nicht gesehen das dieser Screen doch definiert ist :loudly_crying_face:


    Besten Dank Dir :grinning_squinting_face:

    MfG EgLe



    Kernel : Linux 6.1.26-1-MANJARO (64-bit)-MANJARO (LTS)
    GUI : KDE 5.105.0 / Plasma 5.27.4
    Machine : Intel NUC8i7HVK
    Graphics : Radeon RX Vega M GH
    CPU : Intel Core i7-8809G @ 8x 4.2GHz
    RAM : Gskill F4-3000C16S-16GRS Speicherkarte so D4 3000 16GB C16 Rip