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 .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 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 use "#define " ----------------------- 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//columnimages/" + + ".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