Hallo,
ich versuche gerade c++ zu lernen allerdings mit mässigen Erfolg, ich muss wohl noch eine Menge lesen .
Ich versuche es dabei direkt mit einem Plugin für den VDR (erstmals nur Menü aufbauen und per Tasten zu steuern).
Sicherlich schaue ich mir dabei andere Plugins an um zu verstehen wie es dort gelöst wurde, allerdings verstehe ich das meiste mit meinen derzeitigen Kenntnissen nicht .
Die Dokumentation ist im Bezug auf die Programmierung eines Plugins für den VDR schon sehr dürftig für einen Anfänger. Die Plugins.html, Doxygen(?) sowie die wenigen VDR-Wiki Einträge habe ich schon gelesen (aber auch noch nicht alles verstanden).
Momentan habe ich Probleme mit den c++ Klassen, bzw. in Zusammenhang mit den Klassen des VDRs (wer macht was, wie wird es angesprochen und wie baue ich es in das Test-Plugin ein).
Derzeitiger Stand meines Lern-Plugins ist:
Ich kann das Test-Plugin aufrufen und mittels Farbtasten jeweils einen Text (für jede Taste) im Plugin anzeigen lassen bzw. ein Submenu aufrufen. Ebenfalls existiert auch schon ein Setupmenü was Einstellungen in die setup.conf speichert (dies habe ich von anderen Plugins herausgeholt).
Nun ein/das Problem:
Ich möchte nun mittels Farbtaste eine Eingabe machen (eine Zahl eingeben und einer Variable übergeben) im jeweils akt. Menu.
Dies versuche ich mit cMenuEditIntItem wie im SetupMenü auch, allerdings funktioniert dies nicht so wie ich es erwarte(?).
Das cMenuEditIntItem erscheint zwar im OSD, aber das was ich eingebe erscheint nicht im OSD (aber im LOG erscheint cStatus "OsdCurrentItem Set link: ^IXX -> das Plugin bzw. cMenuEditIntItem nimmt also Eingaben entgegen)???
Das cMenuEditIntItem bleibt auch die ganze Zeit dann im OSD hängen --> ich dachte es mir aber so --> Farbtaste drücken - Zahl eingeben und OK drücken - und das cMenuEditIntItem verschwindet wieder.
Irgendwie hängt er da in einer Schleife (??) bzw. ich mache da was verkehrt!
Wenn ich schon mal dabei bin noch zwei weitere Fragen:
1. Bei den eOSState-ProcessKey wird mittels case jeweils das Ergebnis der Tasten ausgewertet. Warum machen manche Plugins innerhalb des case nochmals ein "if (this->Current() != 0)"?
2. Worin besteht der Unterschied innerhalb des case bei eOSState zwischen "break;" und "return osContinue;" ?
Ich kann keinen Unterschied bei den beiden Statements in meinem Test-Plugin feststellen.
Gruß,
Chuck
Ich hänge mal den Code an, ich hoffe es ist nicht alles falsch .