# Bruch-einfachere-Addition.py

# ---------------GUI-Abschnitt----------------------------------------------
import wx

class Fenster(wx.Frame):
    """
    Die Klasse Fenster erzeugt einen Frame.
    """
    def __init__(self, parent, title):
        wx.Frame.__init__(self, parent, -1, title,
                          pos=(100, 100), size=(350, 350))

        # Erzeugt die Komponente Menuezeile [menubar]
        menuBar = wx.MenuBar()
        # [noch zu klaeren: ist menuBar nur aus Faulheit als globale Variable definiert
        #  und nicht mit self. ???]

        # und erzeuge fuer die Menuezeile zwei Menuetitel.
        menu1 = wx.Menu()
        menu2 =wx.Menu()

        # Hier wird ein Menuepunkt in den ersten oben erzeugeten Menuetitel
        # eingefuegt. [add an item to the menu]
        # Mit \tKeyName wird ein Auswahlbuchstabe definiert, zudem auch automatisch
        # die Ereignisbehandlung generiert wird.
        # Der Text im dritten Parameter wird in der Statuszeile angezeigt.
        menu1.Append(wx.ID_EXIT, "B&eenden\tAlt-E", "Schliessen der Anwendung")

        # binde den Menuepunkt an seine Ereignisbehandlung [event handler]
        self.Bind(wx.EVT_MENU, self.OnTimeToClose, id=wx.ID_EXIT)

        # Fuege das Menue der Menuezeile hinzu.
        menuBar.Append(menu1, "&Datei")
        menuBar.Append(menu2, "&Hilfe")
        self.SetMenuBar(menuBar)
        # Anlegen der Statuszeile [z.B. fuer die oben definierten Meldungen]
        self.CreateStatusBar()
        

        # Erzeuge die Oberflaeche [wxPanel] fuer die hinzuzufuegenden Elemente.
        panel = wx.Panel(self)

        # Beschriftungen
        text = wx.StaticText(panel, -1, "Mustertext")
        text.SetFont(wx.Font(10, wx.SWISS, wx.NORMAL, wx.BOLD))
        text.SetSize(text.GetBestSize())

        # Textfelder zur Eingabe und Ausgabe 
        self.textfeld1 = wx.TextCtrl(panel, -1, "Eingabe 1", size=(125, -1))
        self.textfeld2 = wx.TextCtrl(panel, -1, "Eingabe 2", size=(125, -1))
        self.textfeld3 = wx.TextCtrl(panel, -1, "Eingabe 3", size=(125, -1))

        # Buttons:
        # Ein Button auf der Oberflaeche zum Beenden der Anwendung ist immer hilfreich.
        endeBtn = wx.Button(panel, -1, "Beenden")
        endeBtn.SetToolTipString("Button beendet die Anwendung")
        # ein weiterer Button
        # Addition
        musterBtn = wx.Button(panel, -1, " ??? ")
        musterBtn.SetToolTipString("ein weiterer Button")

        # ein Bild einbinden
        bild=wx.Bitmap("bild.gif", -1)
        
        
        # Verbinden der Ereignisbehandlung mit den Buttons [event-handler]
        self.Bind(wx.EVT_BUTTON, self.OnTimeToClose, endeBtn)
        self.Bind(wx.EVT_BUTTON, self.OnMusterBtn, musterBtn)
        
        # verticales Box - Layout als Grundlage
        sizer1 = wx.BoxSizer(wx.VERTICAL)
        sizer1.Add(text, 0, wx.ALL, 10)
        sizer1.Add(bild, 0, wx.ALL, 10)
        
        # Hier wird ein Layoutmanager fuer ein tabellarisches Layout [GridSizer] verwendet.
        # Die Anzahl der Spalten wird auf 2 festgesetzt,
        # die 0 sorgt dafuer, das die Zahl der Zeilen automatisch festgelegt wird.
        sizer2 = wx.GridSizer(0, 2)
        # erste Zeile:
        sizer2.Add(endeBtn, 0, wx.ALIGN_CENTER, 10)
        sizer2.Add(self.textfeld1, 0, wx.ALL, 10)
        # zweite Zeile:
        sizer2.Add(self.textfeld2, 0, wx.ALL, 10)
        sizer2.Add(self.textfeld3, 0, wx.ALL, 10)
        # dritte Zeile:
        sizer2.Add(musterBtn, 0, wx.ALL, 10)

        # den zweiten sizer unter dem ersten einordnen
        sizer1.Add(sizer2)
        
        panel.SetSizer(sizer1)
        panel.Layout()


    def OnTimeToClose(self, evt):
        """Ereignisbehandlung fuer den Ende-Button."""
        self.Close()

    def OnMusterBtn(self, evt):
        """Ereignisbehandlung fuer den MusterBtn."""
        print self.holeText1()[0]
        
        
    # Hilfsmethode zum Holen von Text aus dem ersten Textfeld
    def holeText1(self):
        text=self.textfeld1.GetValue()
        text_teile=text.split()
        return text_teile



class MyApp(wx.App):
    def OnInit(self):
        frame = Fenster(None, "Frame Muster - Anwendung")
        print "Ausgaben:"
        self.SetTopWindow(frame)
        frame.Show(True)
        return True
        
app = MyApp(redirect=True)
app.MainLoop()


