# Klassen zur Modellierung einer Lernkarte
# Autor: KB
# Datum: 16.06.09
# Deklaration der Klasse Karte
class Karte(object):
    def __init__(self, stichwort, erlaeuterung):
        self.stichwort = stichwort
        self.erlaeuterung = erlaeuterung
# Deklaration der Klasse Kartenstapel
class Kartenstapel(object):
    def __init__(self):
        self.karten = []
    def getKarte(self, index):
        if index > -1 and index < len(self.karten):
            return self.karten[index]
        else:
            return None
    def getMaxIndex(self):
        return len(self.karten)-1
    def karteHinzufuegen(self, stichwort, erlaeuterung):
        self.karten = self.karten + [Karte(stichwort, erlaeuterung)]
    def karteLoeschen(self, index):
        if index >= 0 and index <= self.getMaxIndex():
            self.karten = self.karten[0:index] + \
                          self.karten[(index+1):len(self.karten)]
    def kartenstapelToString(self):
        text = '' + '\n'
        text = text + '' + '\n'
        for karte in self.karten:
            text = text + '' + '\n'
            text = text + '' + '\n'
            text = text + karte.stichwort + '\n'
            text = text + '' + '\n'
            text = text + '' + '\n'
            text = text + karte.erlaeuterung + '\n'
            text = text + '' + '\n'
            text = text + '' + '\n'
        text = text + '' + '\n'
        return text
    def stringToKartenstapel(self, quelltext):
        stringliste = quelltext.splitlines()
        self.karten = []
        i = 2
        while stringliste[i] == '':
            stichwort = stringliste[i+2]
            erlaeuterung = stringliste[i+5]
            self.karten = self.karten + [Karte(stichwort, erlaeuterung)]
            i = i + 8
# Deklaration der Klasse Kartenmanager
class Kartenmanager(object):
    def __init__(self):
        self.kartenstapel = None
        self.indexAktuelleKarte = -1
    def setKartenstapel(self, kartenstapel):
        self.kartenstapel = kartenstapel
    def anfangKartenstapel(self):
        if self.kartenstapel.getMaxIndex() > -1:
            self.indexAktuelleKarte = 0
    def endeKartenstapel(self):
        if self.kartenstapel.getMaxIndex() > -1:
            self.indexAktuelleKarte = self.kartenstapel.getMaxIndex()
    def weiterKartenstapel(self):
        if self.kartenstapel.getMaxIndex() > -1 and \
           self.indexAktuelleKarte < self.kartenstapel.getMaxIndex():
            self.indexAktuelleKarte = self.indexAktuelleKarte + 1
    def zurueckKartenstapel(self):
        if self.kartenstapel.getMaxIndex() > -1 and \
           self.indexAktuelleKarte > 0:
            self.indexAktuelleKarte = self.indexAktuelleKarte - 1
    def aktuelleKarteLoeschen(self):
        if self.kartenstapel.getMaxIndex() > -1:
            self.kartenstapel.karteLoeschen(self.indexAktuelleKarte)
            if self.indexAktuelleKarte > self.kartenstapel.getMaxIndex():
                self.indexAktuelleKarte = self.indexAktuelleKarte - 1
    def karteHinzufuegen(self, stichwort, erlaeuterung):
        self.kartenstapel.karteHinzufuegen(stichwort, erlaeuterung)
        self.indexAktuelleKarte = self.kartenstapel.getMaxIndex()
    def getAktuelleKarte(self):
        if self.indexAktuelleKarte >= 0 and \
           self.indexAktuelleKarte <= self.kartenstapel.getMaxIndex():
            return self.kartenstapel.getKarte(self.indexAktuelleKarte)
        else:
            return None