| |||||||
| Plugins/Erweiterungen Alles um Erweiterungen des MediaPortal welche NICHT in Release oder SVN-Versionen enthalten sind! |
![]() |
| | Thread Tools | Display Modes |
| | #1 (permalink) |
| Portal Member Join Date: Dec 2004 Location: Munich
Posts: 60
Thanks: 0
Thanked 0 Times in 0 Posts
| MediaPortal Version: 0.2.0.3 MediaPortal Skin: mce Windows Version: xp sp2 CPU Type: P4 1.8 HDD: Seagate Memory: 768MB Motherboard: md3001 (MSI-6399 OEM) Motherboard Chipset: Intel 845 Motherboard Bios: Video Card: Ati 9550 Video Card Driver: Sound Card: Onboard Sound Card AC3: Nope Sound Card Driver: 1. TV Card: PVR350 1. TV Card Type: hw 1. TV Card Driver: 2. TV Card: 2. TV Card Type: 2. TV Card Driver: 3. TV Card: 3. TV Card Type: 3. TV Card Driver: 4. TV Card: 4. TV Card Type: 4. TV Card Driver: MPEG2 Video Codec: nvidia MPEG2 Audio Codec: nvidia Satelite/CableTV Provider: kabel deutschland HTPC Case: aldi :-) Cooling: Ja Power Supply: auch Remote: Hauppauge mit Girder TV: Philips CRT TV - HTPC Connection: Composite Hallo zusammen, mein erstes Posting im deutschen Forum. Auch von dieser Stelle nochmal vielen vielen Dank an die MP devs, tester, documentation-schreiber, webmaster, moderatoren und alle anderen, die MP zur besten HTPC-Software machen. Dennoch ist es ja work-in-progress und da ich mit meinem Posting im englischen Forum (http://forum.team-mediaportal.com/de...in-t14861.html) bisher keinen Erfolg hatte, probiere ich es hier nochmal... Meine Idee ist es, den PowerScheduler so zu erweitern, dass er in der Einstellung "Shutdown" (also nicht "Hibernate" und "Standby") die Option anbietet, das Program CMOSTimer (www.boraxsoft.de) aufzurufen, um den Computer runterzufahren und über das BIOS wieder aufzuwecken. Das hätte den Vorteil, dass man sich irgendwelche Workarounds mit StartOnWake.exe oder ähnlicher Software sparen kann, wenn man Probleme mit Hibernate oder Standby hat (und die Forenbeiträge der vergangenen Tage zeigen, dass es genügend User gibt, die diese Probleme haben ...). Für die Umsetzung dieser PowerScheduler-Änderungen sehe ich folgende Alternativen: - Einen Patch submitten. Werde ich machen, wenn dieses Posting auch wieder keine Resonanz findet :-) - Eine Kopie von PowerScheduler erstellen und meine Änderungen daran durchführen. M. E. keine Alternative, weil es immer wieder Änderungen am PS gibt, die ich dann jedesmal nachziehen müsste. - Ein Plugin ("BIOSScheduler" oder wie auch immer) von der Klasse MediaPortal.PowerScheduler.PowerScheduler ableiten und nur die Methoden überschreiben, die für die Änderungen relevant sind (PluginName, Shutdown, ...). Das wäre in meinen Augen die eleganteste Lösung, funktioniert aber nicht. Ich vermute, dass es nicht funktioniert, weil die Methoden in PowerScheduler nicht als "virtual" deklariert werden und deshalb in manchen Situationen nicht die mit "new" deklarierten, abgeleiteten Methoden meines BIOSScheduler gezogen werden, sondern die der Basisklasse PowerScheduler. Deswegen habe ich die folgenden Fragen: - Was haltet ihr von so einer Funktionalität - Welches Vorgehen würden die Entwickler bevorzugen? Patch submitten? Oder gibt es Gründe, warum man ein neues Plugin nicht von einem bestehenden Plugin ableiten kann? Oder mache ich etwas falsch? Ich weiß, dass das viel Holz ist und ich auch viele Fragen habe... :-) Ich hoffe, es ist rübergekommen, um was es mir geht. Wenn nicht, dann sagt mir einfach was unklar ist. Viele Grüße, BartManson |
| | |
| | #2 (permalink) |
| Portal Developer Join Date: Apr 2006
Posts: 1,060
Thanks: 23
Thanked 28 Times in 19 Posts
Country: | Hallo, also die Idee hört sich nicht schlecht an. Das mit dem Ableiten sollte eigentlich funktionieren. Ich gehe nur mal davon aus, dass du den Namen des Plugins ändern musst, um einen Konflikt in MP zu vermeiden. Leider kann ich ohne den Code zu sehen nur schwer sagen, was die Ursache sein könnte. Was jetzt den Entwicklern lieber ist kann ich dir natürlich nicht beantworten. Ich denke mal das ein zusätzliches Plugin am Anfang vielleicht mehr Sinn macht, um eine klare Trennung für Bugreports etc. zu haben. Gruß MisterD |
| | |
| | #4 (permalink) |
| Portal Member Join Date: Dec 2004 Location: Munich
Posts: 60
Thanks: 0
Thanked 0 Times in 0 Posts
| Hallo MisterD, danke für dein Feedback. Ich habe mir die ganze Sache nochmal genauer angeschaut und bei MS folgendes gefunden (http://msdn.microsoft.com/library/de...pec_10_5_3.asp): ------------------- schnipp ----------------------- The following example illustrates the differences between virtual and non-virtual methods: using System; class A { public void F() { Console.WriteLine("A.F"); } public virtual void G() { Console.WriteLine("A.G"); } } class B: A { new public void F() { Console.WriteLine("B.F"); } public override void G() { Console.WriteLine("B.G"); } } class Test { static void Main() { B b = new B(); A a = b; a.F(); b.F(); a.G(); b.G(); } } In the example, A introduces a non-virtual method F and a virtual method G. The class B introduces a new non-virtual method F, thus hiding the inherited F, and also overrides the inherited method G. The example produces the output: A.F B.F B.G B.G ---------------- schnapp -------------------- Bezogen auf meinen Fall bedeutet das: A entspricht PowerScheduler B entspricht BIOSScheduler A.F entspricht z. B. protected void PowerScheduler.ShutDown() B.F entspricht protected new void BIOSScheduler.ShutDown() Der PluginManager von MP macht nun in seiner Methode LoadPlugin folgendes: ... plugin = (IPlugin)newObj; ... Meiner Meinung macht er durch diese Zeile aus meinem BIOSScheduler wieder einen PowerScheduler und ruft auch dessen Methoden auf -> a.F() in obigem Beispiel ergibt als Resultat "A.F". Bei mir wäre aber als Resultat "B.F" (also die Methode aus der abgeleiteten Klasse) gewünscht. Ich konnte dieses Verhalten auch bereits nachvollziehen: Sobald ich meinen BIOSScheduler in einer eigenen DLL in das plugin\process-Verzeichnis kopiert hatte, erschienen in der MP-Configuration zwei Plugins "PowerScheduler", obwohl ich die relevanten Methoden und Eigenschaften (PluginName, Description, WindowID usw.) in meinem abgeleiteten Scheduler implementiert hatte. Deswegen nochmal die Frage (vielleicht liest es ja mal ein Entwickler (Bavarian?)): Ist dieses Verhalten so gewünscht oder soll es in Zukunft möglich sein, Plugins von anderen Plugins abzuleiten? Oder hab ich immer noch einen Denkfehler? Viele Grüße, BartManson |
| | |
| | #5 (permalink) |
| Portal Member Join Date: Dec 2004 Location: Munich
Posts: 60
Thanks: 0
Thanked 0 Times in 0 Posts
| Hallo Luna96, danke für den Hinweis, aber ich denke, die CMOSTimer-Integration ist eine Sache, die mit sehr geringem Aufwand in MP realisiert werden könnte, ohne ein externes Programm wie PVR-Scheduler zu benötigen. Wie du hier erkennen kannst, beschäftigt mich die Sache schon etwas länger ... :-) Ciao, BartManson |
| | |
| | #6 (permalink) |
| Portal Developer Join Date: Apr 2006
Posts: 1,060
Thanks: 23
Thanked 28 Times in 19 Posts
Country: | Hallo, ich hab dein Szenario gerade mal ausprobiert und bin dabei auf folgende Lösung gekommen in der Klassendeklaration gekommen: Code: public class BIOSScheduler: PowerScheduler, IPluginReceiver, IWakeable, ISetupForm {
public new string PluginName() {
return "BIOSScheduler";
}
}
Gruß MisterD |
| | |
| | #7 (permalink) |
| Portal Member Join Date: Dec 2004 Location: Munich
Posts: 60
Thanks: 0
Thanked 0 Times in 0 Posts
| Hallo MisterD, danke für den Hinweis, werde es am Wochenende mal ausprobieren ... Da wäre ich vermutlich nie draufgekommen. Ich finde es einfach zu "schräg", in einer abgeleiteten Klasse dieselben Interfaces nochmal explizit zu deklarieren, die bereits von der Basisklasse deklariert werden ... Naja, wenns geht :-) Ciao, BartManson |
| | |
| | #9 (permalink) |
| Portal Member Join Date: Dec 2004 Location: Munich
Posts: 60
Thanks: 0
Thanked 0 Times in 0 Posts
| Hallo elCutty, ja, im Prinzip hat die Möglichkeit von MisterD funktioniert, aber letztendlich ist das PowerScheduler-Plugin nicht so konzipiert worden, dass man eine andere Version davon ableiten kann. Ich bin dann immer wieder an Stellen gestoßen, wo ich mir gewünscht hätte, dass etwas "protected" anstatt "private" wäre ... :-) Letztendlich bin ich zu dem Entschluss gekommen, dass es sinnvoller wäre, den Code zu duplizieren. Darauf habe ich aber irgendwie auch keine Lust, weil sich der PowerScheduler code ja momentan auch noch ziemlich stark verändert (Bugfixing, neue Scheduling-Arten usw.) und ich nicht will, dass ich mit "meinem" scheduler dann immer alle Änderungen nachziehen muss. Vielleicht versuche ich es mal, die Änderungen am aktuellen PS-code durchzuführen und diese Änderungen dann als Patch zu submitten. Allerdings weiß ich nicht, wann ich dazu komme, weil ich irgendwann in den nächsten 14 Tagen Vater werde und meine Prioritäten dann erstmal woanders liegen werden :-) Wenn sich etwas tut werde ich es auf jeden Fall bekannt geben. Viele Grüße, BartManson |
| | |
| | #10 (permalink) |
| Portal Member Join Date: Apr 2007
Posts: 25
Thanks: 0
Thanked 0 Times in 0 Posts
Country: | Hallo BartManson, da wünsche ich dir erst mal alles Gute für die kommenden Wochen und hoffentlich findest du danach irgendwann mal die Zeit da noch mal rein zuschauen. Gruß elCutty |
| | |
![]() |
| Bookmarks |
| Tags |
| ableiten, bestehenden, einem, neues, plugin, programmiertechnisch |
| Thread Tools | |
| Display Modes | |
|
|
Similar Threads | ||||
| Thread | Thread Starter | Forum | Replies | Last Post |
| von einem auf dem anderen tag kein epg mehr | este22 | Media Portal - Support | 6 | 2007-02-14 09:39 |
| Wie ein Plugin für MediaPortal erstellen ? | Ta-uri | Plugins/Erweiterungen | 2 | 2006-11-20 12:42 |
| Erstellung von einem einfachen Info Plugin | HankDerCowboy | Plugins/Erweiterungen | 1 | 2006-09-24 11:23 |
| Gibt es ein Kalender oder Today-Plugin? | Nova | Plugins/Erweiterungen | 7 | 2006-03-01 18:28 |
| Neues Plugin: "MyPlanner" | Nova | Plugins/Erweiterungen | 1 | 2005-11-09 23:16 |