+# A convenient wrapper around wx.TextCtrl to give it a spiffy label.
+class ExtStr(wx.Panel):
+    def __init__(self, parent):
+        wx.Panel.__init__(self, parent, -1)
+        sizer = wx.StaticBoxSizer(wx.StaticBox(self, -1, 'Extension'), wx.HORIZONTAL)
+        self.ctl = wx.TextCtrl(self, -1, value="wav", style = wx.TE_PROCESS_ENTER )
+        sizer.Add(self.ctl, 0, wx.ALL | wx.EXPAND | wx.ALIGN_CENTER, 3)
+        self.Enable(True)
+
+        self.SetSizer(sizer)
+        sizer.Fit(self)
+
+    def Enable(self, value):
+        self.ctl.Enable(value)
+        
+    def SetValue(self, value):
+        self.ctl.SetValue(value)
+    
+    def GetValue(self):
+        return(self.ctl.GetValue())
+        
+ 
+class MimeTypesDemoPanel(wx.Panel):
+    def __init__(self, parent, log):
+        
+        self.log = log
+        
+        wx.Panel.__init__(self, parent, -1)
+
+        # Contains everything
+        tsizer = wx.BoxSizer(wx.VERTICAL)
+        
+        # Contains upper controls
+        usizer = wx.BoxSizer(wx.HORIZONTAL)
+
+        # A little fancy stuff to make things align right.
+        self.ext = ExtStr(self)
+        usizer.Add(self.ext, 0, wx.ALL | wx.ALIGN_TOP, 4)
+        self.ext.Bind(wx.EVT_TEXT_ENTER, self.OnLookup)
+
+        # Select how to look it up
+        self.how = wx.RadioBox(
+                    self, -1, "Lookup method", choices=['By extension', 'By MIME type'], 
+                    majorDimension=2, style=wx.RA_SPECIFY_COLS
+                    )
+        usizer.Add(self.how, 0, wx.ALL | wx.ALIGN_TOP, 4)
+        self.how.SetSelection(0)
+
+        # Trigger a lookup (hitting ENTER in the text ctrl will do the same thing)
+        self.go = wx.Button(self, -1, "Go get it!")
+        usizer.Add(self.go, 0, wx.ALL | wx.ALIGN_CENTER, 4)
+        self.Bind(wx.EVT_BUTTON, self.OnLookup, self.go)
+
+        # StaticBox with larger label than usual
+        lbox = wx.StaticBox(self, -1, 'wx.FileType')
+        lbox.SetFont(
+            wx.Font(
+                self.GetFont().GetPointSize() * 2, 
+                self.GetFont().GetFamily(),
+                self.GetFont().GetStyle(),
+                wx.BOLD
+                ))
+
+        lsizer = wx.StaticBoxSizer(lbox, wx.HORIZONTAL)
+
+        # Contains the wx.FileType info
+        llsizer = wx.GridBagSizer(2, 2)
+        llsizer.AddGrowableCol(2)
+
+        # This will be used for all of the labels that follow (bold label)
+        bfont = wx.Font(
+                    self.GetFont().GetPointSize(), 
+                    self.GetFont().GetFamily(),
+                    self.GetFont().GetStyle(),
+                    wx.BOLD
+                    )
+        
+        #------- Icon info
+
+        t = wx.StaticText(self, -1, 'GetIconInfo: ', style = wx.ALIGN_RIGHT )
+        t.SetFont(bfont)
+        llsizer.Add(t, (0, 0), (1, 1), wx.ALL | wx.EXPAND | wx.ALIGN_CENTER, 2)
+
+        self.icon = wx.StaticBitmap(self, -1, images.getNoIconBitmap())
+        llsizer.Add(self.icon, (0, 1), (1, 1), wx.ALL | wx.EXPAND | wx.ALIGN_CENTER, 2)
+
+        self.iconsource = wx.TextCtrl(self, -1, value="", style = wx.TE_READONLY )
+        llsizer.Add(self.iconsource, (0, 2), (1, 1), wx.ALL | wx.EXPAND | wx.ALIGN_CENTER, 2)
+
+        self.iconoffset = wx.TextCtrl(self, -1, value="", style = wx.TE_READONLY )
+        llsizer.Add(self.iconoffset, (0, 3), (1, 1), wx.ALL | wx.EXPAND | wx.ALIGN_CENTER, 2)
+
+        #------- MIME Type
+
+        t = wx.StaticText(self, -1, 'GetMimeType: ', style = wx.ALIGN_RIGHT )
+        t.SetFont(bfont)
+        llsizer.Add(t, (1, 0), (1, 1), wx.ALL | wx.EXPAND | wx.ALIGN_CENTER, 2)
+
+        self.mimetype = wx.TextCtrl(self, -1, value="", style = wx.TE_READONLY )
+        llsizer.Add(self.mimetype, (1, 1), (1, 3), wx.ALL | wx.EXPAND | wx.ALIGN_CENTER, 2)
+
+        #------- MIME Types
+
+        t = wx.StaticText(self, -1, 'GetMimeTypes: ', style = wx.ALIGN_RIGHT )
+        t.SetFont(bfont)
+        llsizer.Add(t, (2, 0), (1, 1), wx.ALL | wx.EXPAND | wx.ALIGN_CENTER, 2)
+
+        self.mimetypes = wx.TextCtrl(self, -1, value="", style = wx.TE_READONLY )
+        llsizer.Add(self.mimetypes, (2, 1), (1, 3), wx.ALL | wx.EXPAND | wx.ALIGN_CENTER, 2)
+
+        #------- Extensions
+
+        t = wx.StaticText(self, -1, 'GetExtensions: ', style = wx.ALIGN_RIGHT )
+        t.SetFont(bfont)
+        llsizer.Add(t, (3, 0), (1, 1), wx.ALL | wx.EXPAND | wx.ALIGN_CENTER, 2)
+
+        self.extensions = wx.TextCtrl(self, -1, value="", style = wx.TE_READONLY )
+        llsizer.Add(self.extensions, (3, 1), (1, 3), wx.ALL | wx.EXPAND | wx.ALIGN_CENTER, 2)
+
+        #------- Description