aber zurueck zum skin thema...
wenn man es vereinfacht betrachtet, dann ist doch das interface zwischen plugin und skin:
- eine menge von converters, renders und sources
- eine menge von skin variablen, die im plugin mit applySkin angewandt werden
- und ne menge von pics

MovieCockpit
-
-
-
so, version 2.0.0 hat jetzt templated design... (die gelben zeilen sind die selektierten, auf die man dann file operationen anwenden kann)
dabei hab ich templates mit traditionellen skin parametern kombiniert, weil ich bei den templates nicht immer die positionen und groessen explizit angeben wollte.so sieht dann ein template aus:
und die skin parameter:
mein fazit: templates bieten jede menge an flexibilitaet und vereinfachen den code erheblich. -
die umstellung auf templates schliesse ich jetzt mit der version 2.3.0 mal ab.
das template konzept hat mir ja gleich gefallen, bis auf eine sache: das ausrechnen der positionen und sizes.
um das zu vermeiden, habe ich das template erweitert um list_styles, wo man zusaetzlich die zeilenhoehe und die anzahl der linien in einer zeile angibt, und template_attributes, wo man konstanten fuer die berechnung der positionierungen und groessen angibt.
im template selbst sind dann nur noch formeln, die position und groesse automatisch ausrechnen.
der code dazu ist so generisch gehalten, dass man bei aenderungen nur das template file und nicht den code aendern muss. auch die attribute im skin-file fallen weg. -
um die crashes, die @zombi produziert hat besser analysieren zu koennen, habe ich einen debug mode eingebaut, der in den settings aktiviert werden kann.
da werden dann zum einen alle prints aktiviert (normalerweise sind die meisten auskommentiert), und bei einem crash oder gui restart wird automatisch ein logfile generiert und mit dem crashlog zusammen in ein tar-file gepackt, dass dann einfach hochgeladen werden kann. -
-
-
mittlerweile habe ich den code ja "schön" aufgeraeumt, strukturiert, vereinheitlicht.
nur an das emc mediacenter und infobarsupport habe ich mich noch nicht so richtig rangetraut. da ist ne menge audio track und subtitle support drin, den ich nicht so richtig verstehe.
die generelle frage waere, ist das code aus alten e2 zeiten, der heute noch fuer dreamos gebraucht wird? oder koennte man den eliminieren, weil dreamos diese funktionalitaet mittlerweile integriert hat?
danke.
-
habe auch hier fertig...
wer mag: please help yourself
-
in der zwischenzeit habe ich weitergebastelt und neue "use cases" implementiert:
- smart jump: da das spulen auf den alten boxen suboptimal ist, wird ja empfohlen die sprung-zahlen-tasten zu verwenden. das ist mir aber zu umständlich. deshalb habe ich einen smart-jump implementiert, der mit den bouquet-tasten gesteuert wird und die sprungweite smart anpasst, je nachdem ob man am sendungsanfang oder mittendrin ist. die sprungweite (5 min, 1 min, 10 s) wird dabei beim bouquet vor/zurueck automatisch wie bei einem automatischen getriebe angepasst und man ist mit ein paar bouquet vor/zurueck spruengen am ziel
- archive funktion: wegen der probleme mit den grossen platten, die auch mit den neuen boxen inkl. seven weiterexistieren werden, gehe ich davon aus, dass man ein zweistufiges disk system brauchen wird: eine kleine lokale platte und eine grosse externe usb-platte oder nas (ja, ich weiss, dass man auch direkt auf nas aufnehmen kann, will ich aber nicht). bisher habe ich die files immer manuell von der internen auf die externe gemoved. das geht jetzt automatisch, solange auf der externen platz ist.
- file operationen: habe ich jetzt komplett im hintergrund mit task manager implementiert. d.h. man kann beim verschieben von files, das ja minuten dauern kann, die box ohne einschränkungen weiterbenutzen. und falls man power-off drückt, wird man darauf hingewiesen, dass noch operationen am laufen sind, kann sie canceln oder weiterlaufen lassen... wie bei aufnahmen.
- mountmanager: erkennt automatisch, ob ein netzwerk-laufwerk online oder offline geht und vermeidet unschoene zahnraedchen.
danke an alle, die mir dabei hilfestellungen gegeben haben.
-
ich bin ja ein fan von use-cases... und ein use-case, der mir bisher gefehlt hat war: bei aufnahmen nachschauen zu koennen, ob es eine wiederholung ist, die ich (vor jahren) bereits gesehen habe (gerade im sommer werden ja viele wiederholungen gesendet).
daher habe ich eine film log file von geloeschten filmen implementiert, die man in die movieliste einblenden kann und dann sofort sieht, ob man den film bereits gesehen hat oder nicht
das ganze zahlt sich natuerlich erst in jahren aus, wenn genug filme im log file gesammelt sind...
-
HI, me again.
And again, thanks for your work.
This time, my italian translation for MovieCockpit plugin, based on v12.1.3
As usual, let me know if something doesn't fit your needs.
-
-
covers werden nur bei der aufnahme geladen, wenn das in den settings aktiviert ist.
wenn schon welche existieren (moviefilename.jpg) werden die angezeigt.
-
covers werden nur bei der aufnahme geladen, wenn das in den settings aktiviert ist.
genau, das meine ich. Hat nun in 5 Probeaufnahmen nicht funktioniert bei mir. Aber wenn es bei dir geht, dann liegt der Fehler bestimmt bei mir.
-
-
Bekomme es leider auf meiner Two mit AIO nicht zum laufen. Wo steckt der Fehler
Code
Display MoreMay 26 15:21:11 dreambox enigma2[3057]: profile: LOAD:Plugin-SessionStart: MovieCockpit: 100 May 26 15:21:11 dreambox enigma2[3057]: MVC: INFO: plugin.py: autoStart: +++ Version: 16.0.4 starts... May 26 15:21:11 dreambox enigma2[3057]: MNC: INFO: MountCockpit.py: onMountsChange: bookmarks: {'MVC': []} May 26 15:21:11 dreambox enigma2[3057]: EXCEPTION IN PYTHON STARTUP CODE: May 26 15:21:11 dreambox enigma2[3057]: ------------------------------------------------------------ May 26 15:21:11 dreambox enigma2[3057]: Traceback (most recent call last): May 26 15:21:11 dreambox enigma2[3057]: File "/usr/lib/enigma2/python/mytest.py", line 837, in <module> May 26 15:21:11 dreambox enigma2[3057]: runScreenTest() May 26 15:21:11 dreambox enigma2[3057]: File "/usr/lib/enigma2/python/mytest.py", line 622, in runScreenTest May 26 15:21:11 dreambox enigma2[3057]: session = Session(desktop = getDesktop(0), summary_desktop = getDesktop(1), navigation = nav) May 26 15:21:11 dreambox enigma2[3057]: File "/usr/lib/enigma2/python/mytest.py", line 313, in __init__ May 26 15:21:11 dreambox enigma2[3057]: p(reason=0, session=self) May 26 15:21:11 dreambox enigma2[3057]: File "/usr/lib/enigma2/python/Plugins/Plugin.py", line 120, in __call__ May 26 15:21:11 dreambox enigma2[3057]: return self._fnc(*args, **kwargs) May 26 15:21:11 dreambox enigma2[3057]: File "/usr/lib/enigma2/python/Plugins/Extensions/MovieCockpit/plugin.py", line 63, in autoStart May 26 15:21:11 dreambox enigma2[3057]: MountCockpit.getInstance().registerBookmarks(ID, config.plugins.moviecockpit.bookmarks.value) May 26 15:21:11 dreambox enigma2[3057]: File "/usr/lib/enigma2/python/Plugins/SystemPlugins/MountCockpit/MountCockpit.py", line 67, in registerBookmarks May 26 15:21:11 dreambox enigma2[3057]: self.onMountsChange() May 26 15:21:11 dreambox enigma2[3057]: File "/usr/lib/enigma2/python/Plugins/SystemPlugins/MountCockpit/MountCockpit.py", line 111, in onMountsChange May 26 15:21:11 dreambox enigma2[3057]: mount_points = parseMounts() May 26 15:21:11 dreambox enigma2[3057]: File "/usr/lib/enigma2/python/Plugins/SystemPlugins/MountCockpit/MountUtils.py", line 33, in parseMounts May 26 15:21:11 dreambox enigma2[3057]: fstab_mounts = parseMountFile("/etc/fstab") May 26 15:21:11 dreambox enigma2[3057]: File "/usr/lib/enigma2/python/Plugins/SystemPlugins/MountCockpit/MountUtils.py", line 47, in parseMountFile May 26 15:21:11 dreambox enigma2[3057]: _, mount_point, _, _, _, _ = Util.parseFstabLine(line) May 26 15:21:11 dreambox enigma2[3057]: TypeError: 'NoneType' object is not iterable May 26 15:21:11 dreambox enigma2[3057]: ------------------------------------------------------------ May 26 15:21:11 dreambox enigma2[3057]: (exit code 5) May 26 15:21:11 dreambox enigma2[3057]: thread joined 0 May 26 15:21:13 dreambox enigma2[3057]: main thread is non-idle! display spinner!
-
der fehler steckt im code... da fehlte ein if... hab's geaendert.
apt update
apt upgrade