| Sponsored Ads |
|
|||||||
| Help on Development Want to help with the development of MediaPortal 2? Then this is the right place for you. |
![]() |
|
|
LinkBack | Thread Tools | Display Modes |
|
|
#11 (permalink) | |
|
Portal Member
Join Date: Oct 2006
Posts: 54
Thanks: 1
Thanked 1 Time in 1 Post
Country:
|
Quote:
In the architecture overview you show a nice modular structure. Will there be APIs defining the interaction between modules? While APIs do take time and effort to create and maintain I believe that they improve stability by isolating the modules from each other. Like DricuS I was going to try my hand at contributing to MP, but when I found out that there wasn't even an API between the core and the skin I backed off. In the 'Compiling' document it says that Visual C# Express is a prerequisite but is unsupported. Is there a technical reason to not support C# Express? Or is this perhaps a way to ensure that anyone who wants to develop for MP has a certain level of proficiency (assuming that anyone who pays significant money for the full package will likely have more skill than someone who just downloads the freebie). Please don't misunderstand me - establishing a minimum requirement for developers isn't necessarily a bad idea, but it will certainly reduce the number of developers. A middle ground might be to require Visual Studio for the core, but support C# Express for plugins. Blackheart |
|
|
|
|
|
|
#12 (permalink) | ||
|
Portal Developer
Join Date: May 2005
Location: Switzerland
Posts: 1,279
Thanks: 4
Thanked 55 Times in 34 Posts
|
Hi Blackheart,
Thanks for you comments. Quote:
I will post new pages as they are available. Quote:
I cannot promise a team supported VS express solution file any time soon. VS Express can be used to compile the core (if you create your own solution file) and can definitely be used for plugin development. The problem is that we use solution folders which are not supported by VS Express. These need to be flattened out in a VS Express solution. We are certainly not trying to exclude any developers and welcome comments and feedback, but please bear with us, because the MediaPortal II project is still in an early stage of development. Regards, /James Last edited by James; 2008-01-07 at 19:44. |
||
|
|
|
|
|
#13 (permalink) | |
|
Portal Developer
Join Date: Apr 2004
Location: The Netherlands
Age: 36
Posts: 1,515
Thanks: 3
Thanked 119 Times in 44 Posts
Country:
|
Quote:
That is: - the skinengine does not know about any plugins or models - the plugins and models dont know about any gui The advantage here is that: 1) you can use any behaviour from any model in any GUI screen , example show weather info on the home-menu 2) We can easily extend skinengines without breaking the plugins & models 3) We can even switch skinengines (like we do now with the new WPF engine) without breaking the plugins 4) It gives much more freedom to skinners This is the reason why you dont see a pre-defined API between the skin and the plugins/models. The skinengine uses databinding to databind to properties and collections which are provided by the plugins/models. And for executing commands, the skinengine uses reflection to do it. So using the skinengine you can: - databind your GUI controls to any property or collection exposed by plugins/models - databind your GUI controls to any property or collection exposed by the core - let the GUI call any method on your model using commands - let the GUI call any method on the core using commands An example how this is done in the new WPF engine: Databinding: Code:
<Canvas xmlns:local="clr-namespace:Model;assembly=mymovies">
...
<ListView ... ItemsSource="{Binding Movies}" ... />
...
</Canvas>
finds & instansiates the Model class from it and sets the instance of the Model class it into the Context of the canvas The second line draws a list view where the items in the listview are databound. The databinding is set the the Movies property and since the Context of the canvas is set to mymovies.Model the complete databinding will be set to public IEnumerable mymovies.Model.Movies {get;} property As long as this property returns an IEnumerable the listview will be able to draw the items (Note that for a ListView the model will usually return an ItemsCollection which is a class defined in the Core This class simply holds a collection of ListItem and can send events when the collection changes so the skinengine can update its databinding and refresh the listview ) Commands: Code:
<ListView ... Command="{Binding Path=Select}" CommandParameter="{Binding Path=this.CurrentItem}" .../>
When you click on an item in the listview, it will call: public mymovies.Model.Select( ListItem currentItem) The movies model will handle the select and might for example update its Movies property if you are browising your movies folder. As you can see no interfaces are needed between the skinengine & plugins/models because of the databinding & command architecture. Frodo Last edited by frodo; 2008-01-08 at 07:32. |
|
|
|
|
|
|
#14 (permalink) |
|
Portal Developer
Join Date: May 2005
Location: Switzerland
Posts: 1,279
Thanks: 4
Thanked 55 Times in 34 Posts
|
We have been putting work into the documentation and are making progress
-> MediaPortal2 Development - MediaPortal Wiki Documentation |
|
|
|
![]() |
| Bookmarks |
| Thread Tools | |
| Display Modes | |
|
|
Similar Threads
|
||||
| Thread | Thread Starter | Forum | Replies | Last Post |
| Calling owner's of myBlaster Code & MPTray Code [SageTV] | matrix35 | MediaPortal 1 Talk | 3 | 2007-01-12 09:28 |
| Skin documentation | TVGuy | Skins | 1 | 2005-04-06 00:49 |