Basic MythTV plugin configuration

From Bitpost wiki

Plugin support in MythTV is great, but a little rough around the edges to set up. Here is a quick setup HOWTO.

  1. In the mythplugins project, select an existing plugin to clone, and copy the directory.
  2. In the mythplugins project, update the configuration file to build your new plugin.
  3. In your plugin's main.cpp, update setupKeys(), replacing REG_JUMP actions with new ones.
  4. In the mythtv project, add a button to the XML ui to access your plugin via your new REG_JUMP action.
  5. Bang away on your new plugin!

Details

  1. I chose to clone mythmusic.
     cd mythplugins
     cp -r mythmusic mythdj
     cd mythdj
     mv mythmusic.pro mythdj.pro
     emacs mythdj.pro (s&r as needed)
     mv mythmusic mythdj
     cd mythdj
     mv mythmusic.pro mythdj.pro
     emacs mythdj.pro (s&r as needed)
    

    Then I search-and-replaced all instances of [mythmusic] with [mythdj], and [MythMusic] with [MythDJ], in the entire mythdj plugin folder.

  2. Here's what I needed to add to [mythplugins/configure]:
     dj="yes"
     ---
     MythDJ related options:
       --enable-mythdj          MDM build the mythdj plugin [$dj]
     ---
      --enable-mythdj) dj="yes"
      ;;
      --disable-mythdj) dj="no"
      ;;
     ---
     if test "$dj" = "yes" ; then
       echo "        MythDJ         plugin will be built"
       echo "SUBDIRS += mythdj" >> ./config.pro
     else
       echo "        MythDJ         plugin will not be built"
     fi
     ---
     ###########################################################
     #                                                         #
     #  MythDJ related configuration options                   #
     #  (similar to MythMusic)                                 #
     #                                                         #
     ###########################################################
     (basically a copy of MythMusic with s&r of 'music' with 'dj')
    
  3. In my case, I removed all REG_JUMP, REG_JUMPEX, REG_KEY and REG_MEDIA_HANDLER macros from setupKeys(), and replaced them with one new REG_JUMP action "Start DJ".
  4. In my case, I added the following block to [mythtv/programs/mythfrontend/library.xml]:
       <button>
          <type>DJ_PLAY</type>
          <text>Start DJ</text>
          <action>JUMP Start DJ</action>
          <depends>mythmusic</depends>
          <depends>mythdj</depends>
       </button>
    
  5. I'm doing it now!