Difference between revisions of "Tips and Tricks for developing a plugin in Visual Studio 2005 .NET"

From JRiverWiki
Jump to: navigation, search
m (Registering the Event handler)
Line 1: Line 1:
== Prerequisites ==
+
[Programming Plugins in C#.Net]
* Media Center 12.0.213 or higher
+
[MC Plugin Template for Visual Studio]
 
 
== Create a new plugin ==
 
Use the description of Mr ChriZ to create a new Plugin.
 
http://yabb.jriver.com/interact/index.php?topic=32294.0
 
 
 
== Autoresizing of plugin ==
 
Draw a Panel upon the UserControl and do the following:<br>
 
* Set 'Dock' Property to 'Fill'.<br>
 
* Set 'Autosize' Property to 'False'<br>
 
 
 
Your Panel will now automatically be resized to fit into the MC Plugin Area. Anything you put upon the Panel can scale to the size of the Panel using the 'Anchor' or 'Dock' Properties. Don't use the 'Autosize' Property!
 
 
 
== Registering the Event handler ==
 
C# Example: Registering the MJEvent handler.  
 
Note: more information regarding event handling can be found in the topic [[Media_Center_Automation]].
 
 
 
public void Init ( MediaCenter.MCAutomation mcRef )
 
{
 
    try
 
    {
 
        this.mcRef = mcRef;
 
        // This tells MC to also call our MJEvent method
 
        this.mcRef.FireMJEvent += new IMJAutomationEvents_FireMJEventEventHandler ( MJEvent );   
 
    }
 
    catch (Exception e)
 
    {
 
        errorHandler ( e );
 
    }
 
    //Placing anything outside of this
 
    //try catch may cause MC to fail to open.
 
    //Play safe and insert it try area!
 
}
 
 
private void errorHandler (Exception e)
 
{
 
    MessageBox.Show ( "A Fatal error has occured:-" + e.Message +
 
            "\n The Failure Occured" +
 
            "\n In Class Object " + e.Source +
 
            "\n when calling Method " + e.TargetSite +
 
            "\n \n The following Inner Exception was caused" + e.InnerException +
 
            "\n \n The Stack Trace Follows: \n\n" + e.StackTrace );
 
    this.Enabled = false;
 
}
 
 
 
== Handling an event ==
 
C# Example: handle events fired by MC.
 
 
 
private void MJEvent(String s1 , String s2, String s3 )
 
{
 
    switch (s1)
 
    {
 
        case "MJEvent type: MCCommand":
 
            switch (s2)
 
            {
 
                case "MCC: NOTIFY_TRACK_CHANGE":
 
                    // Your code here
 
                    break;
 
 
 
                case "MCC: NOTIFY_PLAYERSTATE_CHANGE":
 
                    // Your code here
 
                    break;
 
 
                case "MCC: NOTIFY_PLAYLIST_ADDED":
 
                    // Your code here
 
                    break;
 
 
 
                case "MCC: NOTIFY_PLAYLIST_INFO_CHANGED":
 
                    // Your code here
 
                    break;
 
 
 
                case "MCC: NOTIFY_PLAYLIST_FILES_CHANGED":
 
                    // Your code here
 
                    break;
 
 
 
                case "MCC: NOTIFY_PLAYLIST_REMOVED":
 
                    // Your code here
 
                    break;
 
 
 
                case "MCC: NOTIFY_PLAYLIST_COLLECTION_CHANGED":
 
                    // Your code here
 
                    break;
 
 
 
                case "MCC: NOTIFY_PLAYLIST_PROPERTIES_CHANGED":
 
                    // Your code here
 
                    break;
 
 
                case "MCC: NOTIFY_SKIN_CHANGED":
 
                    // Your code here
 
                    break;
 
 
                default:
 
                    // Unknown (new?) event
 
                    break;
 
            }
 
 
 
            break;
 
 
 
        default:
 
            // Unknown (new?) type
 
            break;
 
    }
 
}
 

Revision as of 13:22, 13 December 2008

[Programming Plugins in C#.Net] [MC Plugin Template for Visual Studio]