Last active
October 10, 2020 18:58
-
-
Save WildGenie/0e641c3c34bac7e2945b0dabc36caa14 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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