Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- local args = {...}
- local tasks = {}
- local currentTask = "tasks"
- local running = true
- local state = "list"
- local timer
- if #args > 0 then
- currentTask = args[1]
- end
- function loadTasks(fileName)
- if fs.exists(fileName) then
- local file = fs.open(fileName,"r")
- local i = 1
- local tmpTasks = {}
- while true do
- tmpTasks[i] = file.readLine()
- if tmpTasks[i] == nil then
- break
- end
- i = i + 1
- end
- file.close()
- return tmpTasks
- end
- return {}
- end
- function saveTasks(fileName, taskTable)
- local file = fs.open(fileName,"w")
- for i = 1, #taskTable, 1 do
- file.writeLine(taskTable[i])
- end
- file.close()
- end
- local selectedMenuItem= 1
- function printTasks(taskTable)
- local padding = 2
- local w, h = term.getSize()
- term.clear()
- if #taskTable > 0 then
- for i=1, #taskTable do
- if i == selectedMenuItem then
- term.setBackgroundColor(colors.white)
- term.setTextColor(colors.black)
- else
- term.setBackgroundColor(colors.black)
- term.setTextColor(colors.white)
- end
- term.setCursorPos(padding, padding+i-1)
- local completed = false
- if i == 2 then
- completed = true
- end
- if completed then
- term.write("[X] "..taskTable[i])
- else
- term.write("[_] "..taskTable[i])
- end
- term.setBackgroundColor(colors.black)
- term.setTextColor(colors.white)
- end
- else
- term.setCursorPos(padding, padding)
- term.write("No tasks found.")
- end
- term.setCursorPos(2, h - 1)
- term.write("Up/Down/Enter - [A]dd - [D]elete - [Q]uit")
- end
- local currentMessage = {}
- function showMessage(messageTable)
- state = "msg"
- currentMessage = messageTable
- end
- function displayMsg(messageTable)
- local padding = 6
- local w, h = term.getSize()
- term.clear()
- term.setBackgroundColor(colors.black)
- term.setTextColor(colors.white)
- for i=1, #messageTable do
- term.setCursorPos(padding, padding+i-1)
- term.write(messageTable[i])
- end
- term.setCursorPos(2, h - 1)
- term.write("Press [ENTER] to continue")
- end
- function displayAddItem()
- local padding = 6
- local w, h = term.getSize()
- term.clear()
- term.setBackgroundColor(colors.black)
- term.setTextColor(colors.white)
- term.setCursorPos(padding, padding)
- term.write("Add Task")
- term.setCursorPos(padding, padding+1)
- term.write("-----------------------")
- term.setCursorPos(2, h - 2)
- term.write("Press [ENTER] to insert new item")
- term.setCursorPos(2, h - 1)
- term.write("Enter nothing (blank string) to cancel")
- --we have to draw the whole screen first!
- term.setCursorPos(padding, padding+3)
- term.write("Task Name: ")
- local newTask = read()
- if newTask ~= "" then
- tasks[#tasks+1] = newTask
- end
- state = "list" --return our state back to the main list
- end
- tasks = loadTasks(currentTask)
- timer = os.startTimer(0)
- while running do
- local event, p1 = os.pullEvent()
- if event == "key" then
- if state == "list" then
- if p1 == keys.q then
- running = false
- elseif p1 == keys.up then
- selectedMenuItem=selectedMenuItem-1
- if selectedMenuItem <= 0 then
- selectedMenuItem = #tasks
- end
- elseif p1 == keys.down then
- selectedMenuItem=selectedMenuItem+1
- if selectedMenuItem > #tasks then
- selectedMenuItem = 1
- end
- elseif p1 == keys.a then
- state = "additem"
- elseif p1 == keys.d then
- table.remove(tasks, selectedMenuItem)
- elseif p1 == keys.enter then
- showMessage({
- "You selected number: #"..selectedMenuItem,
- "",
- "Value: "..tasks[selectedMenuItem]
- })
- end
- elseif state == "msg" then
- if p1 == keys.enter then
- state = "list"
- end
- end
- end
- if event == "timer" and p1 == timer then
- if state == "list" then
- printTasks(tasks)
- elseif state == "additem" then
- displayAddItem()
- elseif state == "msg" then
- displayMsg(currentMessage)
- end
- timer = os.startTimer(0.1)
- end
- end
- saveTasks(currentTask, tasks)
- term.clear()
- term.setCursorPos(1,1)
- term.write("Thanks for using my task program")
- term.setCursorPos(1,3)
- sleep(2)
Advertisement
Add Comment
Please, Sign In to add comment