Willkommen! Melden Sie sich an oder registrieren Sie sich.

Um schreiben oder kommentieren zu können, benötigen Sie ein Benutzerkonto.

Anmelden - oder - Benutzerkonto erstellen

Beliebig viele Bilder ins Plugin

  • Hallo liebes Forum und eine gesundes Neues.

    Ich möchte in einen Plugin beliebig viele Bilder anzeigen lassen.

    Nun weiß ich ja vorher im Plugin nicht, wie viel Bilder wo/wie groß angezeigt werden sollen, das wird je nachdem was man anwählt erst gecheckt.


    Nun gibt es das Modul/Klasse "MultiContentEntryPixmapAlphaTest". Ich habe mir schon so etwas angeschaut. Wäre es das richtige was ich suche?

    Wenn ja, wo/wie muss ich es in der skin Definition mit einbauen?

    Mit "ePixmap" oder muss ich mit "convert type" arbeiten?


    Vorab vielen dank. :)

  • die frage ist, wo du die bilder anzeigen willst.

    MultiContentEntryPixmapAlphaTest verwendet man imho nur fuer das anzeigen von bildern in listen.

    Pixmap waere für das normale anzeigen in einem screen.

    "convert type" sagt mir nix.

  • Das beantwortet die Frage aber nicht. Willst du eine Liste mit Vorschaubildern oder willst du die Bilder eines Verzeichnisses einzeln anzeigen lassen?


    Für Letzteres gibt es bereits den PictureViewer und dann solltest du dich für dein Plugin vielleicht daran orientieren

  • Ich habe einen Ordnern mit Icons (png).

    Das Plugin sucht gewisse Daten von einer Internetseite, und je nachdem sollen in diesen screen, dass den Text aus einer Seite ausgibt auch noch bestimmte Icons ausgeben.

    Z.B.

    Zeile eins wird aus einer Seite "die Farbe ist blau" gelesen, das ist dann meine 1. Zeile im Screen und dahinter soll dann ein blaues Icon stehen.

    Zweite Zeile steht "die Farbe ist grün" dahinter grünes Icon.

    Das ist mein Schema.

    Daher das ich nicht weiß welches Icon an welcher Stelle ist (wechselt immer mal), deshalb meine Frage nach einer Variablen Liste das Icons anordnet.

  • also in einer list :-)

    dafuer brauchst du eine liste mit TemplatedMultiContentComponent und in der kannst du dann text vom typ MultiContentEntryText und bild vom typ MultiContentEntryPixmapAlphaBlend anzeigen lassen.

    das ist aber schon irgendwie advanced... also nicht so einfach.

  • die movielisten sind alle so aufgebaut: movie name und z.b. picon in einer zeile.

    die liste wird dann im plugin mit python code erstellt. im skin ist dann nur noch ein list widget.

    z.b.

    <widget name="list" position="10,90" size="1200,765" itemHeight="45" enableWrapAround="1" scrollbarMode="showAlways"/>

  • Zuerst brauchst du mal einen asynchronen Download des Icons über downloadPage(). Den Pfad (!), wo das Icon lokal zu finden ist, schreibst du in den tuple rein, welcher die Daten für die Liste enthält. Das Bild lädst du in deiner buildFunction (setBuildFunc()) mittels loadPixmap().


    Die Verwendung der buildFunction ist Pflicht, da du dir sonst dein Speicher volllädst.


    Ich hoffe mal für dich, dass du nicht eine Website parsen willst. Das kommt selten gut.

  • nein, so einfach ist das nicht... das wird am ende ein groesseres stueck code.

    schau dir vielleicht mal die merlin movieliste an:

    /usr/lib/enigma2/python/Components/MovieList.py

    und

    /usr/lib/enigma2/python/Screens/MovieSelection.py (dort wird die MovieList aufgerufen)

    das ist zwar etwas mehr, als du brauchst, aber ich habe leider kein einfacheres beispiel parat.

  • Dann wird es wohl nichts, weil ich nicht durchsteige was man wirklich braucht.

    Das widget ist ja klar.

    Dann muss ich das Bild laden mit "loadPixmap" in einer Funktion.

    Dann die funktion in

    Code
    1. MultiContentEntryPixmapAlphaTest(pos=(10,7), size=(17,14), png=self.myfunktion))

    Oder erfordert das noch mehr code?

    Wenn es zu aufwendig ist muss ich es lassen :think:


    Ich habe hier mal eine Klasse vom SoftwareManager das plugin.py angeschaut auf github.

    Könnte jemand mir mal die Stellen markieren, was ich alles zu meinen Vorhaben brauche?

    Das wäre genial und erleuchtend.

  • das ist auf die schnelle betrachtet ein etwas anderer ansatz als in der merlin movieliste. ausserdem haben die zeilen 2 texte and keine pixmap.

    ich würde mal in der MovieList.py die buildListEntry funktion anschauen. die baut eine zeile der movieliste zusammen und ist wie Dre schon gesagt hat, ein zentrales element.

  • Jetzt habe ich mich durchgearbeitet und bin bis "self.l.setBuildFunc(self.buildMovieListEntry)" also wo es überliefert wird.

    Weiter komme ich leider nicht, heißt es muss ja irgendwann mal in der "skin" variable definiert werden?.

  • Du zeigst uns Deinen Code nicht und wir sollen Dir helfen.

    Bei mir entsteht der Eindruck, dass Du glaubst es werden 3-4 Zeilen Code.


    Ich denke es werden für die Liste ungefähr 100 Zeilen und für das drumherum nochmal 200-400 Zeilen.


    Deine Beispiel Einzeiler helfen weder Dir noch uns ;)

    Boxen: DM7080HD, DM820HD, DM8000, DM900ultraHD

    In 50% sitzt das Problem vor dem Gerät und bei den anderen 50% hab ich mich geirrt, dass es nicht davor sitzt :cocksy:

  • die verbindung code nach skin wird so gemacht:

    im code:


    Code
    1. self["list"] = class_in_der_die_liste_generiert_wird()
    2. class class_in_der_die_liste_generiert_wird():
    3.     def buildMovieListEntry(self):
    4.      generiere eine listenzeile
    5.      return listenzeilenelemente


    und im skin:

    <widget name="list" position="10,90" size="1200,765" itemHeight="45" enableWrapAround="1" scrollbarMode="showAlways"/>

    "list" ist die verbindung.

  • Ähm, eher nicht.


    self["list"] = List()


    MovieList verwendet componentSizes und ist daher eher ein schlechtes Beispiel. Ihm reicht TemplatedMultiContent.

    Und ich bin da bei marthom: ohne Code wirds schwierig resp. es wird in Gebastel enden und er wird sich seine Box im schlimmsten Fall abschiessen, im "besseren" Fall nur den Speicher vollmüllen. Aber es soll ja Leute geben, die nach dem Prinzip "Hauptsache es läuft - egal wie" arbeiten.