

How to make a theme:

Copy the demo theme to an new directory, rename it's theme 
file in your new directory, to the name of your new theme.

Now you have an own theme ;-), all you have to do now is the change the images, 
the theme items, their positions on the screen, the fonts, etc. as you like.

Edit the <new theme>.theme file:

The sections control the behavior how the display look i.e. when replay an dvd,
hearing a radio programm, ....

In each section you can use Items to create your own looking. You can use an item so
often you need it (in the most cases you wont need this). The items are display in the
order you use here. So fist take a background item, and last a message item.

For a list of the items look in the demo theme, nearly all are used their.


-----------------------
 Comments
-----------------------

- comments starting with "//"
- inline comments are possible

-----------------------
 Directives
-----------------------

- #ifdef|#ifndef <value> and #endif in a Section is supported
- the end of a section is implicid a #endif but a 
  warning (Warning: Missing '#endif') will shown in the log
- to define the <value> use "#define <value>"

-----------------------
 Contitions
-----------------------

  Sollen Theme Items nur in bestimmten Situationen angezeigt 
  werden kann dies uber den Parameter condition erreicht werden.
  Bedingungen können aufbauend auf den unten beschriebenen Variablen 
  definiert werden.

  Unterstütze Operatoren:

    <   keiner
    >   größer
    <=  keiner gleich
    >=  größer gleich
    <>  ungleich
    !=  ungleich
    =   gleich
    ==  gleich (c/c++ like ;))

  Beispiel:

    Image condition={musicLoop} == 1,x=25,y=515,width=20,height=20,fit=yes,path=symbols/music-loop.png;
    Image condition={musicLoop} <> 1,x=25,y=515,width=20,height=20,fit=yes,path=symbols/music-noloop.png;

-----------------------
 'Text' item
-----------------------

   item: Text

      x, y, width, height, size, font, ...: -> wie immer ;)

      text:  -> Anzuzeigender Text
                Der Text kann Variablen enthalten, diese werden in 
                geschweiften Klammern angegeben. Für Datum/Zeit Felder
                kann koptional ein Formatsting definiert werden.
                Der Formatstring für Datum/Zeit entspicht dem in der 
                Manpage zu strftime beschriebenen.Anzuzeigende Kommata 
                und Semikola im Formatsring müssen mit '\' maskiert werden

   Variablen:

      t - time     
      a - text (alpha-num)
      n - number 
      f - flag

      Allgemein:

         {time}              - t  // Systemzeit

      Recording Variablen (ReplayNormal, ReplayMP3, MenuRecording):
         {recordingPath}     - a
         {recordingTitle}    - a
         {recordingEventID}  - n
         {recordingPath}     - a
         {recordingTitle}    - a
         {recordingSubTitle} - a
         {recordingTime}     - t
         {recordingChannel}  - a

      EPG Variablen (NormalTV, MenuEvent):
         {eventID}           - n
         {eventTitle}        - a
         {eventSubTitle}     - a
         {eventStartTime}    - t
         {eventEndTime}      - t
      
      In Menüs (Menu...):
         {colCount}          - n     // Spaltenanzahl der aktuellen Zeile 
                                     // (es werden die Tabs des OSD Textes gezählt)

      Music Plugin: (ReplayMP3 mit music Plugin, in der 'Player-View')
         {musicArtist}       - a
         {musicAlbum}        - a
         {musicGenre}        - a
         {musicYear}         - n     // <0 wenn unbekannt
         {musicFilename}     - a
         {musicComment}      - a
         {musicFrequence}    - n
         {musicBitrate}      - n
         {musicStereoMode}   - a
         {musicIndex}        - n     // Numer of Current Track
         {musicCount}        - n     // Count of Tracks in Playlist

         {musicPlayStatus}   - a     // Playing, Stopped, ...

         {musicRating}       - n     // 0-nicht bewertet 3-zum löschen, >3-rating
         {musicLoop}         - f
         {musicShuffle}      - f
         {musicShutdown}     - f
         {musicRecording}    - f

         {musicButtonRed}    - a     // Button-Texte des Music-Plugins
         {musicButtonYellow} - a
         {musicButtonGreen}  - a
         {musicButtonBlue}   - a
         {musicCoverName}    - a     // Cover Image (Pfad)

   Beispiel:

     Text text={time/%d.%m %H:%M},x=520,y=27,width=200,height=40,red=52,green=162,blue=159;


------------------
 'TextList' item
------------------

   item: TextList

      x, y:              -> obere linke Ecke der Liste
      width, height:     -> Höhe/Breite der 'ganzen' Liste
      size, font, ...:   -> wie immer ;)

     Variablen:
 
        t - time     
        a - text (alpha-num)
        n - number 
        f - flag

     Music Plugin: (ReplayMP3 mit music Plugin)

         {musicTrack}        - a


   Bemerkung:

      Es werden so viele Einträge angezeit (soweit vorhanden ;)) 
      wie in den vorgegebenen Bereich passen.
   

   Beispiel:

      TextList text={musicTrack},x=245,y=335,height=160,width=450,size=12;

-----------------------------------
 'Column' - 'ColumnSelected' items
-----------------------------------

    item:
        Column             -> the column
        ColumnSelected     -> for the selected column

    x:                  
        not configured     -> x will calculated of the last column's x and width
                              (regarding 'spacing')
        -1                 -> same as 'not configured'
        geater org equal 0 -> uses as absolut position
        less than -1       -> go x pixel back from the actual position
                              which is calculated like 'not configured'
                              (regarding 'spacing')


    height                 -> height of the whole column (including all rows)

    size                   -> font size, the row height will calculatetd 
                              using this value

    width                  -> the column width

    spacing:               -> used for auto calculated x positions, 
                              add some extra space behind this column

    type:
        progress  -> progress bar
        text      -> normal text column (the default)
        image     -> show a image instead of the text. The image name will build of the text.
                     The image is expected in the 'symbols' subdir of the theme.
                     Example: 
                       For The Text "T" (Timer Flag) the image .../DeepBlue/symbols/T.png will used.
                       For The Text "V" (VPS Flag)   the image .../DeepBlue/symbols/V.png will used.


    bar_height: only for 'type=progress'
                  -> height of the progress bar, absolut (bar_height=24) 
                     or in percent (bar_height=50%) of the row height


    number:        
        the # of the original menu column this column depends on


    stat_pic:    only supported for itemColumnSelected
        yes:      -> display a image on position stat_x, stat_y
                     the image path and name is build like:
                     "..../graphTFT/themes/<your-theme>/columnimages/" + <column-text> + ".png";
                     If now image will found, nothing would displayed.
        no:       -> do nothing (default)


    stat_text:    only supported for itemColumnSelected
        yes:      -> display the column text on position stat_x, stat_y
        no:       -> do nothing (default)

      
    scroll:       activate/deactivate the scroll mode for this column
                  only supported for 'ColumnSelected' items

        yes:      -> activate scrolling (depending on plugin settings!)
        no:       -> deactivate scrolling


   Some hints:

   - to display a static picture or a static text depend on a coulumn which you don't like
     to display 'itself' define the coulumn with the stat_** attributes as you like and 
     suppress the column by setting with to -1.
   - itemColumnSelected should always defined before the corresponding itemColumn
     like itemMenuSelected and itemMenu formerly. For the image of the selected column
     (path=) you can use one (wide enough for all columns) and set it for the first column. 
     Alternative it is possible to define one image per column.

   - For epgsearch with an alternative configuration (epgsearchmenu.conf) you have 
     to respect this when creating your theme, in particular the column sequence!


----------------------
 'PartingLine' item
----------------------

    Support of EPG-Search's Parting Lines

    item:  PartingLine
             ->  used for the special parting lines of epgsearch

    path:    ->  the Image shown for lines with text, like "--------------  Thu 07.11.2006 -----------"
    path2:   ->  the Image shown for lines without text, like "------------------------------------------"

    align:  text align
            0 -> left
            1 -> center
            2 -> right
