import wx, wx.grid

ad = {"Reihtit":
      [
          [['D'], ['1'], ['M'], ['M'], [''], [''], ['']],
          [['D'], ['2'], ['H'], ['H'], ['Zik'], [''], ['']],
          [['D'], ['3'], ['W'], ['W'], ['Wik'], [''], ['']],
          [['D'], ['2'], ['D'], ['P'], ['Plk'], [''], ['']],
          [['D'], [''], ['E'], ['W'], ['Kft'], [''], ['']]
          ],
      "Daten": [
          [['Ea Ind'], [''], [''], [''], [''], ['']],
          [[''], [''], ['H 2'], ['H 3'], [''], ['']],
          [[''], ['C 2, D 1'], ['C 3, D 2, K 1'], ['C 4, S 3'], ['MW 1'], ['']],
          [['H Ind'], [''], [''], [''], [''], ['']],
          [[''], ['C 3'], [''], [''], [''], ['']]
          ]}


Gruppen = {"M": {"Kennung1": ["M"]},
           "T": {"Kennung1": ["T"]},
           "H": {"Kennung1": ["H"]},
           "D": {"Kennung1": ["D"]},
           "E": {"Kennung1": ["E"]}}


class GLBFrame(wx.Frame):
    def __init__(self, parent, id, title):
        wx.Frame.__init__(self, parent, id, title = "GregiListBook")
    
        # # # Teil 1: das Datenpanel in seinem BoxSizer aufbauen
        glbbox = wx.BoxSizer(wx.HORIZONTAL) 
        glb = GListBook(self, wx.ID_ANY)
        glbbox.Add(glb, 1, wx.ALIGN_TOP)
        self.SetSizer(glbbox)

        self.Show()


class GListBook(wx.Listbook):
    def __init__(self, parent, id):
        wx.Listbook.__init__(self, parent, id)

        for reihnum, reihe in enumerate(ad["Reihtit"]):
            datenreihe = ad["Daten"][reihnum]
            if reihe[0][0] != "L":
                neueSeite = wx.Panel(self, wx.ID_ANY)
                obersizer = wx.BoxSizer(wx.HORIZONTAL)
                for grp in ["M", "T", "H", "D", "E"]:
                    mittelpanel = wx.Panel(self, wx.ID_ANY)
                    mittelsizer = wx.BoxSizer(wx.VERTICAL)
                    if reihe[2][0] in Gruppen[grp]["Kennung1"]:
                        unterpanel = wx.Panel(self, wx.ID_ANY)
                        if len(reihe) < len(datenreihe):
                            gridlen = len(datenreihe)
                        else:
                            gridlen = len(reihe)

                        eintragsizer = wx.GridBagSizer()
                        for etn, etr in enumerate(reihe):
                            eintragsizer.Add(wx.StaticText(self, wx.ID_ANY,
                                                str(etr)), (0, etn))
                        for dtn, datetr in enumerate(datenreihe):
                            eintragsizer.Add(wx.StaticText(self, wx.ID_ANY,
                                                str(datetr)), (1, dtn))

                        unterpanel.SetSizer(eintragsizer)
                        mittelsizer.Add(unterpanel)
                    mittelpanel.SetSizer(mittelsizer)
                    obersizer.Add(mittelpanel)
                    
                neueSeite.SetSizer(obersizer)
                self.AddPage(neueSeite, str(reihnum))

if __name__ == "__main__": 

    app = wx.App(0)
    preframe = GLBFrame(None, -1, "GLB")   
    app.MainLoop() 

