# MehrListenVerwaltung import pickle import os import sys # globale Constante true, false = 1, 0 # meine verbesserte Eingaberoutine def myinput(prompt = ''): a = raw_input(prompt) try: b = int(a) except ValueError: b = -1 return b class HListe: # Objektinitialisierung def __init__(self): self.aktu = [] # aktu ist die aktuelle Liste self.listname = '' # der name der aktu self.iflist = false # wurde liste geändert? if os.path.isfile('MyLists.p'): f = open('MyLists.p', "r") self.HL = pickle.load(f) f.close() else: self.HL = {} if self.HL: titel = self.HL.keys() self.listname = titel[0] self.aktu = self.HL[self.listname] else: print 'leer' self.aktu = [] # Funktionen zur Listenverwaltung def newlist(self): self.listname = raw_input('name of list: ') eintrag = '*' self.aktu = [] while eintrag <> '': eintrag = raw_input('new entry: ') if eintrag <> '': self.aktu.append(eintrag) print "list closed! " self.HL[self.listname] = self.aktu self.iflist = true def zeiglists(self): if self.HL: print self.HL.keys() else: print 'not empty!' def zeigall(self): # reine Servicefunktion (hidden) if self.HL: print self.HL else: print 'list empty!' def newaktu(self, pos): if (pos == -1) or (pos > len(self.HL.keys())-1): print "break change" else: new_listname = self.HL.keys()[pos] # weil die Liste gleich automatisch umorganisiert wird! self.HL[self.listname] = self.aktu self.listname = new_listname self.aktu = self.HL[self.listname] def killlist(self, pos): if (pos == -1) or (pos > len(self.HL.keys())-1): print "break delete" else: if self.listname == self.HL.keys()[pos]: print "aktulist is protected!" else: del self.HL[self.HL.keys()[pos]] # Funktionen zur Eintragsverwaltung def hinzu(self, eintrag, wo = 'a'): # einen neuen zusaetzlichen Eintrag vornehmen if wo == 'a': self.aktu.append(eintrag) else: self.aktu.insert(0, eintrag) def list(self, kandidat): if kandidat == []: print "no empty" return false else: for x in range(0, len(kandidat)): if len(kandidat) > 10: if x < 10: print '', print x, kandidat[x] return true def raus(self, pos): if (pos == -1) or (pos > len(self.aktu)-1): print "break delete" else: del self.aktu[pos] # Shellfunktionen def help(self): print "[shell : (h)elp, (q)uit]" print "[lists : (l)ists, (n)ewlist, (c)hangelist, (k)ill]" print "[entry : (v)iewlist, (a)dd, (d)el, (e)dit, (u)p]" print def rette(self): # die aktuelle Liste kommt wieder ins Dir{} if self.aktu != []: self.HL[self.listname] = self.aktu # die Listen werden eingefroren f = open('MyLists.p', "w") pickle.dump(self.HL, f) f.close() def version(self): # wird nur beim Start gezeigt print "ToDo-Multilist-System for Python" print "Vers. 2.02 9/2000, = help" print def shell(self): self.version() while 1: print befehl = raw_input(self.listname + '> ') if befehl == 'h': # die Hilfefunktion self.help() elif befehl == 'l': print "Listenuebersicht:" self.list(self.HL.keys()) elif befehl == 'n': self.newlist() elif befehl == 's': # reiner interner Servicebefehl self.zeigall() elif befehl == 'k': self.list(self.HL.keys()) # ohne Eingabepruefung self.killlist(myinput('position for kill: ')) elif befehl == 'c': if self.list(self.HL.keys()): # ohne Eingabepruefung self.newaktu(myinput('position of new aktu-list: ')) else: print "can't changes" # falls noch garnichts drin steht elif befehl == 'v': self.list(self.aktu) elif befehl == 'd': # bisher ohne Eingabepruefung self.raus(myinput('position of entry: ')) elif befehl == 'a': self.hinzu(raw_input('new: ')) elif befehl == 'q': self.rette() break else: print "command not defined!" # ab hier Hauptprogramm if __name__ == '__main__': l = HListe() print l.shell() else: print "wrong name: ", __name__ print 'bye'