This page is to track the proposed Theme Downloader. This involves three components: mythfrontend (Theme chooser), mythbackend (downloader), and services.mythtv.org (hosts Themes available for download).
Components - Services webpage - http://services.mythtv.org/themes/ - Hosts an 'index generator' that generates static html pages for each aspect ratio for each version of MythTV. These are 'index.html' files put into subdirectories for the aspect ratio with a parent dir of the MythTV version number. The Frontend will reference these via the subdirectory without specifying the 'index.html' portion. This will allow us the future option of switching to a dynamic page such as index.php without breaking existing frontends already deployed. These pages are nothing fancy, they return just a list of theme names that are of the given aspect ratio and compatible with the given MythTV version. The index generator also modifies the themeinfo.xml files to add a downloadurl tag to tell mythfrontend where to download the theme tarball from. This gives us the flexibility of moving the download location or changing the tarball file naming convention at any time. These downloads will probably come directly off the OSUOSL mirrors, so this index generator script will run after the OSUOSL rsync. This index generator may also optionally generate a 'details.html' in each subdirectory which can be viewed in a web browser to view details about the the themes compatible with that version/aspect. This detail includes information from the themeinfo.xml file and also shows the preview image and a link to the download URL. This is for people who want to manually browse the themes rather than using the Frontend theme browser. - Serves up static index pages listing what themes are available for a given MythTV version. Example full URLs: http://services.mythtv.org/themes/repository/0.23/index/All/index.html http://services.mythtv.org/themes/repository/0.23/index/4:3/index.html http://services.mythtv.org/themes/repository/0.23/index/16:9/index.html http://services.mythtv.org/themes/repository/0.23/index/16:10/index.html Frontend will access like this: http://services.mythtv.org/themes/repository/0.23/index/All/ http://services.mythtv.org/themes/repository/0.23/index/4:3/ http://services.mythtv.org/themes/repository/0.23/index/16:9/ http://services.mythtv.org/themes/repository/0.23/index/16:10/ Example Result for /themes/repository/0.23/16:9/: Arclight Graphite LCARS Mythbuntu - Serves up static themeinfo.xml files for the above-named themes. These have been modified by the index generator to include a downloadurl tag to specify where to download the theme from. Query: http://services.mythtv.org/themes/repository/0.23/Graphite/themeinfo.xml Example: http://mythtv.bc2va.org/themes/repository/0.23/Graphite/themeinfo.xml - Serves up static preview images for the above-named themes. Query: http://services.mythtv.org/themes/repository/0.23/Arclight/preview.png Example: http://mythtv.bc2va.org/themes/repository/0.23/Arclight/preview.png - Optionally Serve up static tarballs for the above-named themes. We could include an alternate download url in the themeinfo.xml file for use when the rsync process had not completed yet and a tarball was not available from the mirrors. This might come in handy once we have a theme uploader UI on the website which allows people to upload and/or update their own themes on the website. Query: http://services.mythtv.org/themes/downloads/Graphite/Graphite-1.1_0.23.tar.gz Example: http://mythtv.bc2va.org/themes/download/Graphite/Graphite-1.1_0.23.tar.gz - Installing a new theme on the services website is as simple as: - Copy tarball to .../themes/download/THEMENAME/THEMENAME-THEMEVERSION_MYTHVERSION.tgz (NOTE: this location may change or their may need to be a script which puts the files in the proper location for the OSUOSL rsync job) ie, .../themes/download/Graphite/Graphite-1.1_0.23.tgz - Theme tarball should included a versioned subdir (ie, 'Graphite-1.1_0.23', not 'Graphite') - Unpack themeinfo.xml and preview images into repository dir for correct MythTV version .../themes/repository/0.23/Graphite/themeinfo.xml .../themes/repository/0.23/Graphite/preview.png - Run the 'index generator' script. - The sample services page above parses the themeinfo.xml files to check the aspect ratio as well as to display the Theme information on the human-readable version of the webpage. - mythfrontend - Theme chooser - Gets list of theme names from services webpage - downloads themeinfo.xml file for each theme. downloaded to temp directory under GetConfDir() ~/.mythtv/themedownloader/Graphite-1.1_0.23/themeinfo.xml - parses themeinfo.xml using existing ThemeInfo class to allow displaying theme info on screen. - downloads preview(s) for each theme - presents user with a screen to download/install one or multiple themes - Requests backend to download theme tarball when user picks a theme - Can use a remote theme from the master BE over mythproto or D/L theme from MBE and install locally. - mythbackend (master backend only) - Downloads theme tarballs when requested by the frontend - Sends out myth event when theme is downloaded - Extracts downloaded themes to GetConfDir()/themes - Serves up themes in GetConfDir()/themes subdir via normal mythproto file serving - Serves up theme tarballs over myth proto for any FE to download locally and install.