Wiki Navigation
- Loading...
Read Documentation & source code
- Use the MediaPortal source code (Git)
- Read documentation - MediaPortal Development
Using an on-screen keyboard
VirtualKeyboard keyboard = (VirtualKeyboard)GUIWindowManager.GetWindow((int)GUIWindow.Window.WINDOW_VIRTUAL_KEYBOARD); if (null == keyboard) return; keyboard.Reset(); keyboard.Text = strLine; keyboard.DoModal(GetID); if (keyboard.IsConfirmed) { // Do something here. The typed value is stored in "keyboard.Text" }
Use the following code do display the web keyboard:
DialogWebKeyboard keyboard = (DialogWebKeyboard)GUIWindowManager.GetWindow((int)GUIWindow.Window.WINDOW_VIRTUAL_WEB_KEYBOARD); ...
Activating other window and returning back
//Activate new window GUIWindowManager.ActivateWindow(YOUR_TO_BE_ACTIVATED_WINDOW_ID); ... //Show the previous window (go back) GUIWindowManager.ShowPreviousWindow();
- FYI: still looking how to transfer data other than strings between the windows. If you know - shoot me a message..
- See the "properties" or "configuration" tips if you want to transfer strings
Logging
Use class Log for logging. You can log Info, Error, Warn and Debug. There are a lot of different methods for additional formatting.
Log.Info("My plugin: started");
Configuration
Note: you can have as many as you need configuration files. Use common sence - do not create separate file for each setting. Example:
// Read configuration settings using (Settings reader = new Settings(Config.GetFile(Config.Dir.Config, "mediaportal.xml"))) { setting = reader.GetValue("section_name", "setting_name"); }
Properties
You can store and read string properties.
// Save a property GUIPropertyManager.SetProperty("#status", "Ready"); // Read a property value string strUrl = GUIPropertyManager.GetProperty("#urltonavigate");
Creating a new element
- You can dynamically create and render new elements and then access them as if they were in the XML-file.
public override void AllocResources() { base.AllocResources(); mylabel = new GUILabelControl(5678, 999, 300, 400, 200, 100, string.Empty, "This is a new string to render in a label", 0xFFFFFFFF, GUIControl.Alignment.Left, false); mylabel.AllocResources(); } public override void Render(float timePassed) { base.Render(timePassed); mylabel.Render(timePassed); }
Dialogs
Message/Error Box
This is how to present an "OK" dialog (it can be used do display error messages as well":
/// <summary> /// Shows the Error Dialog /// </summary> private void ShowErrorDialog(string messsage) { GUIDialogOK dlgOK = (GUIDialogOK)GUIWindowManager.GetWindow((int)GUIWindow.Window.WINDOW_DIALOG_OK); if (dlgOK != null) { dlgOK.SetHeading("Error" /* or Message */); dlgOK.SetLine(1, messsage); dlgOK.SetLine(2, ""); dlgOK.DoModal(PARENT_WINDOW_ID); } }
Context Menu
To show a context menu (in the middle of the screen):
private int ShowContextMenu() { GUIDialogMenu dlgMenu = (GUIDialogMenu)GUIWindowManager.GetWindow((int)GUIWindow.Window.WINDOW_DIALOG_MENU); if (dlgMenu != null) { dlgMenu.Reset(); dlgMenu.SetHeading("Header"); dlgMenu.Add("line 1"); dlgMenu.Add("line 2"); ... dlgMenu.DoModal(PARENT_WINDOW_ID); if (dlgMenu.SelectedLabel == -1) // Nothing was selected return EventAction.Nothing; return dlgMenu.SelectedLabel; } }
Enum Selection Dialog
To show a selection Dialog for values from a given Enum and returns the selected value. (using generics) T must be of Enum type...
public T ShowEnumSelectionDialog<T>() { GUIDialogSelect2 dlgSelect = (GUIDialogSelect2)GUIWindowManager.GetWindow((int)GUIWindow.Window.WINDOW_DIALOG_SELECT2); dlgSelect.Reset(); dlgSelect.SetHeading("Selection: " + typeof(T).ToString()); Enum.GetNames(typeof(T)).ToList().ForEach(dlgSelect.Add); dlgSelect.DoModal(GUIWindowManager.ActiveWindow); try { return Enum<T>.Parse(dlgSelect.SelectedLabelText); } catch { return default (T); } }
Helper class for parsing enum value:
public static class Enum<T> { public static T Parse(string value) { return (T)Enum.Parse(typeof(T), value); } public static IList<T> GetValues() { IList<T> list = new List<T>(); foreach (object value in Enum.GetValues(typeof(T))) { list.Add((T)value); } return list; } }
Usage:
MyEnum myEnumValue = ShowEnumSelectionDialog<MyEnum>();
Unconfirmed Tips & Tricks
Interface for NON-GUI plugins
- Found here: https://forum.team-mediaportal.com/interface_non_gui_plugins-t538.html (by Frodo)
namespace MediaPortal.GUI.Library { public interface IPlugin { void Start(); void Stop(); } }
The actual plugin is run from the plugin/process folder, but to get it to show up in the configuration window (and get to the plugins setup screens) you have to have a copy in the plugins/windows folder too.
This page has no comments.