import wx


# ---------------------------------------------------------------
class _Preferences_Panel(wx.Panel):
    def __init__(self, parent, id, icon):
        wx.Panel.__init__(self, parent, id)
        self.icon = wx.Bitmap(icon)
        
    def GetIcon(self):
        return self.icon

class _Preferences_Feeds(_Preferences_Panel):
    def __init__(self, parent, id):
        _Preferences_Panel.__init__(self, parent, id, 'feeds.png')
            
class _Preferences_Themes(_Preferences_Panel):
    def __init__(self, parent, id):
        _Preferences_Panel.__init__(self, parent, id, 'themes.png')
    
class _Preferences(wx.Listbook):
    def __init__(self, parent, id):
        wx.Listbook.__init__(self, parent, id)

        self.panels = [
            ('Feeds',  _Preferences_Feeds(self, -1)),
            ('Themes', _Preferences_Themes(self, -1)),
            ]
        
        il = wx.ImageList(32, 32)
        for title, panel in self.panels:
            idx = il.Add(panel.GetIcon())
            self.AddPage(panel, title, idx)
        self.AssignImageList(il)

class Preferences(wx.Dialog):
    def __init__(self, parent, id):
        wx.Dialog.__init__(self, parent, id, 'Test')
        
        sizer = wx.BoxSizer(wx.VERTICAL)
        self.SetSizer(sizer)

        self.lb = _Preferences(self, -1)
        sizer.Add(self.lb, 1, wx.EXPAND)


if __name__ == '__main__':
    app = wx.PySimpleApp()
    dlg = Preferences(None, -1)
    dlg.ShowModal()
    dlg.Destroy()
