Skip to content

Instantly share code, notes, and snippets.

@WildGenie
Last active October 10, 2020 18:58
Show Gist options
  • Save WildGenie/0e641c3c34bac7e2945b0dabc36caa14 to your computer and use it in GitHub Desktop.
Save WildGenie/0e641c3c34bac7e2945b0dabc36caa14 to your computer and use it in GitHub Desktop.
class Todo:
todos = []
selectedIndex = None
FILENAME = "todos.txt"
def addJob(self, job):
self.todos.append(job)
def removeJob(self, index=None):
self.todos.pop((index or self.selectedIndex) - 1)
def printJobs(self):
for i, job in enumerate(self.todos):
print(f"{i + 1}. {job}")
def printJob(self, index=None):
i = (index or self.selectedIndex) - 1
job = self.todos[i]
print(f"{i + 1}. {job}")
def updateJob(self, job, index=None):
self.todos[(index or self.selectedIndex) - 1] = job
def printCommands(self):
if self.selectedIndex:
self.printJob()
print("-" * 5)
print("E. Edit Note")
print("D. Delete Note")
print("L. List Notes")
else:
self.printJobs()
print("-" * 5)
print("A. Add Note")
print("C. Clear Notes")
print("S. Save Notes")
print("-" * 5)
print("X. Exit")
def loadJobs(self):
self.todos = []
with open(self.FILENAME, "a+") as f:
for line in f:
self.todos.append(line.strip())
def saveJobs(self):
with open(self.FILENAME, "w+") as f:
f.writelines("%s\n" % job for job in self.todos)
def clearJobs(self):
self.todos = []
def command(self, cmd):
if self.selectedIndex:
if cmd == "e":
self.updateJob(input("Enter your note: "))
print("Note updated")
elif cmd == "d":
self.removeJob()
self.selectedIndex = None
elif cmd == "l":
self.selectedIndex = None
elif cmd == "x":
return True
else:
print("Unknown command")
else:
if cmd == "a":
self.addJob(input("Enter your note: "))
elif cmd == "c":
self.clearJobs()
elif cmd == "s":
self.saveJobs()
elif cmd.isdigit():
i = int(cmd)
if len(self.todos) >= i > 0:
self.selectedIndex = i
else:
print("Invalid note number")
elif cmd == "x":
return True
else:
print("Unknown command or index")
return False
tl = Todo()
tl.loadJobs()
tl.printCommands()
while not tl.command(input()):
tl.printCommands()
tl.saveJobs()
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment