Difference between revisions of "Menu theme development guide"

From MythTV Official Wiki
Jump to: navigation, search
Line 1: Line 1:
 
==Introduction==
 
==Introduction==
Menu themes allow the user to customize where certain myth features are located.  By creating a customized menu theme, users can tailor MythTV to there own usage.  The goal of this guide is to familiarize users with the menu's XML format and to create a comprehensive list of actions that will allow the user to invoke plugins and other menus.  This document assumes that mythtv is installed in the "/usr" directory.  If it is installed in the "/usr/local" directory, substitute everywhere that says "/usr/" with "/usr/local/".
+
Menu themes allow the user to customize where certain myth features are located.  By creating a customized menu theme, users can tailor MythTV to there own usage.  The goal of this guide is to familiarize users with the menu's XML format and to create a comprehensive list of actions that will allow the user to invoke plugins and other menus.  This document assumes that mythtv is installed in the "/usr" directory.  If it is installed in the "/usr/local" directory, substitute everywhere that says "/usr/" with "/usr/local/".  This document is currently incomplete.
  
 
==Overview==
 
==Overview==

Revision as of 00:21, 13 March 2006

Introduction

Menu themes allow the user to customize where certain myth features are located. By creating a customized menu theme, users can tailor MythTV to there own usage. The goal of this guide is to familiarize users with the menu's XML format and to create a comprehensive list of actions that will allow the user to invoke plugins and other menus. This document assumes that mythtv is installed in the "/usr" directory. If it is installed in the "/usr/local" directory, substitute everywhere that says "/usr/" with "/usr/local/". This document is currently incomplete.

Overview

Menu themes are a series of XML documents. The XML document defines what "buttons" are shown on each menu. Each XML document describes one menu.

First Step

The first step is to create a directory to hold the menu's XML document. If unsure, a good place is in the home folder. The directory can be called anything that is not already a theme of any kind. To find out what not to call the menu theme, use the following command in a terminal:

$ ls /usr/share/mythtv/themes

Type the following to create a directory for a menutheme in "~/mymenuthemes/mymenu".

$ cd ~
$ mkdir mymenuthemes
$ cd mymenuthemes
$ mkdir mymenu
$ cd mymenu

It is generally a good idea to sketch out how the new menu is to be laid out. This will decrease the chance of error as well as speed up the development process.

Creating a Main Menu

To create the main menu, create a new document called "mainmenu.xml" For example, this command can be typed at the terminal:

$ gedit mainmenu.xml

The first line of the document will always be

<mythmenu name="MAIN">

After the mythmenu tag, one or more button tags will define the buttons shown on the screen. Finally, the document will end with

</mythmenu>

Buttons

A button defines what text appears on the screen and what action will be taken when the user selects the button.

<button>
   <type>SOME_TYPE</type>
   <text>My Text</text>
   <text lang="XX">My Text in XX</text>
   <action>SOME_TYPE_ACTION</action>
   <depends>myplugin</depends>
</button>

Below is a description of each tag

  • <type> This tag defines what kind of button this is. This will determine what picture is shown when the button is highlighted. A list of known types can be found in Apendix A: Types.
  • <text> The default text that appears on the screen. This is generally written in English.
  • <text lang="XX"> Text that will appear if the user's local is XX. There may be more than one of these tags
  • <action> The action that will result when the user selects the button. A complete list of known actions can be found in Apendix B: Actions
  • <depends> Indicates that the button will only be shown if the indicated plugin is installed

TODO: Complete Guide.