SHOW:
|
|
- or go back to the newest paste.
| 1 | - | local primaryColour = colors.cyan |
| 1 | + | local barTextColour = colors.lime |
| 2 | - | local secondaryColour = colors.blue |
| 2 | + | local barColour = colors.white |
| 3 | ||
| 4 | local primaryColour = colors.white | |
| 5 | - | "monitor_0", |
| 5 | + | local secondaryColour = colors.lime |
| 6 | - | "monitor_1" |
| 6 | + | |
| 7 | local monitors = {
| |
| 8 | ||
| 9 | } | |
| 10 | - | if not peripheral.isPresent(v) then |
| 10 | + | |
| 11 | local printers = {
| |
| 12 | ||
| 13 | } | |
| 14 | ||
| 15 | for i,v in ipairs(monitors) do | |
| 16 | if not peripheral.isPresent(v) or peripheral.getType(v) ~= "monitor" then | |
| 17 | table.remove(monitors, i) | |
| 18 | end | |
| 19 | end | |
| 20 | ||
| 21 | for i,v in ipairs(printers) do | |
| 22 | if not peripheral.isPresent(v) or peripheral.getTye(v) ~= "printer" then | |
| 23 | table.remove(printers, i) | |
| 24 | end | |
| 25 | end | |
| 26 | ||
| 27 | local taskFile = ".tasks" | |
| 28 | ||
| 29 | if not fs.exists(taskFile) then | |
| 30 | A = fs.open(taskFile, "w") | |
| 31 | A.write(textutils.serialize({ "Made by HD -click me!" }))
| |
| 32 | A.close() | |
| 33 | end | |
| 34 | ||
| 35 | local A = 0 | |
| 36 | ||
| 37 | function remoteTasks() | |
| 38 | for i,v in ipairs(rs.getSides()) do | |
| 39 | if peripheral.isPresent(v) and peripheral.getType(v) == "modem" then | |
| 40 | rednet.open(v) | |
| 41 | end | |
| 42 | end | |
| 43 | ||
| 44 | while true do | |
| 45 | os.queueEvent("")
| |
| 46 | os.pullEvent() | |
| 47 | local id, cmd = rednet.receive() | |
| 48 | local cmd = textutils.unserialize(cmd) | |
| 49 | if type(cmd) == "table" then | |
| 50 | if cmd["command"] == "add" then | |
| 51 | local A = getTasks() | |
| 52 | table.insert(A, cmd["input"]) | |
| 53 | saveTasks(A) | |
| 54 | elseif cmd["command"] == "del" then | |
| 55 | local A = getTasks() | |
| 56 | if A[tonumber(cmd["input"])] ~= nil then | |
| 57 | table.remove(A, tonumber(cmd["input"])) | |
| 58 | saveTasks(A) | |
| 59 | end | |
| 60 | end | |
| 61 | end | |
| 62 | end | |
| 63 | end | |
| 64 | ||
| 65 | local function clear() | |
| 66 | if #monitors >= 1 then | |
| 67 | for i,v in ipairs(monitors) do | |
| 68 | peripheral.call(v, "setCursorPos", 1, 1) | |
| 69 | peripheral.call(v, "setBackgroundColour", colors.black) | |
| 70 | peripheral.call(v, "setTextColour", colors.white) | |
| 71 | peripheral.call(v, "clear") | |
| 72 | end | |
| 73 | end | |
| 74 | ||
| 75 | term.setCursorPos(1,1) | |
| 76 | term.setBackgroundColour(colors.black) | |
| 77 | term.setTextColour(colors.white) | |
| 78 | term.clear() | |
| 79 | end | |
| 80 | ||
| 81 | function getTasks() | |
| 82 | if not fs.exists(taskFile) then | |
| 83 | return {}
| |
| 84 | else | |
| 85 | local file = fs.open(taskFile, "r") | |
| 86 | local tmp = textutils.unserialize(file.readAll()) | |
| 87 | file.close() | |
| 88 | return tmp | |
| 89 | end | |
| 90 | end | |
| 91 | - | screen.setBackgroundColour(colors.lightBlue) |
| 91 | + | |
| 92 | - | screen.setTextColour(colors.gray) |
| 92 | + | |
| 93 | ||
| 94 | local text = "HD's Todo list." | |
| 95 | local tasks = getTasks() | |
| 96 | local maxX, maxY = screen.getSize() | |
| 97 | local maxY = maxY - 2 | |
| 98 | ||
| 99 | --[[ Text ]]-- | |
| 100 | --clear() | |
| 101 | ||
| 102 | screen.setCursorPos(1,1) | |
| 103 | screen.setBackgroundColour(barColour) | |
| 104 | screen.setTextColour(barTextColour) | |
| 105 | screen.clearLine() | |
| 106 | screen.setCursorPos(maxX/2-#text/2, 1) | |
| 107 | screen.write(text) | |
| 108 | -------------- | |
| 109 | ||
| 110 | for i=1, maxY do | |
| 111 | if i % 2 == 0 then | |
| 112 | screen.setBackgroundColour(primaryColour) | |
| 113 | screen.setTextColour(secondaryColour) | |
| 114 | elseif i % 2 == 1 then | |
| 115 | screen.setBackgroundColour(secondaryColour) | |
| 116 | screen.setTextColour(primaryColour) | |
| 117 | end | |
| 118 | ||
| 119 | - | screen.setBackgroundColour(colors.lightBlue) |
| 119 | + | |
| 120 | - | screen.setTextColour(colors.gray) |
| 120 | + | |
| 121 | ||
| 122 | local num = i+(maxY*(page-1)) | |
| 123 | ||
| 124 | if tasks[num] ~= nil then | |
| 125 | screen.write(num..": "..tasks[num]) | |
| 126 | else | |
| 127 | screen.write(num..": ") | |
| 128 | end | |
| 129 | end | |
| 130 | ||
| 131 | screen.setBackgroundColour(barColour) | |
| 132 | screen.setTextColour(barTextColour) | |
| 133 | screen.setCursorPos(2, maxY+2) | |
| 134 | screen.clearLine() | |
| 135 | screen.write("Back")
| |
| 136 | screen.setCursorPos(maxX/2-#(tostring(page))/2, maxY+2) | |
| 137 | screen.write(tostring(page)) | |
| 138 | screen.setCursorPos(maxX-#"Next", maxY+2) | |
| 139 | screen.write("Next")
| |
| 140 | ||
| 141 | term.clear() | |
| 142 | term.setCursorPos(1,1) | |
| 143 | term.setCursorPos(2,2) | |
| 144 | write("HD's Todo list v1.0 (its improved :D)")
| |
| 145 | term.setCursorPos(2, 6) | |
| 146 | term.setTextColour(colors.lime) | |
| 147 | write("Add Task")
| |
| 148 | term.setTextColour(colors.red) | |
| 149 | term.setCursorPos(2, 8) | |
| 150 | write("Remove Task")
| |
| 151 | term.setTextColour(colors.white) | |
| 152 | end | |
| 153 | ||
| 154 | local function showTask(pos, page, max, mon) | |
| 155 | local pos = pos - 1 | |
| 156 | local screen = peripheral.wrap(mon) | |
| 157 | local num = pos+(max*(page-1)) | |
| 158 | local tasks = getTasks() | |
| 159 | ||
| 160 | if tasks[num] ~= nil then | |
| 161 | clear() | |
| 162 | --error(num) | |
| 163 | --screen.write(tasks[num]) | |
| 164 | --local sizeX, sizeY = term.getSize() | |
| 165 | --term.setCursorPos(sizeX/2-#"Pull any event to continue"/2, sizeY) | |
| 166 | --write("Pull any event to continue")
| |
| 167 | ||
| 168 | if #monitors >= 1 then | |
| 169 | for i,v in ipairs(monitors) do | |
| 170 | peripheral.call(v, "write", tasks[num]) | |
| 171 | local sizeX, sizeY = peripheral.call(v, "getSize") | |
| 172 | peripheral.call(v, "setCursorPos", (sizeX/2-#"Remove Task"/2)+1, sizeY) | |
| 173 | peripheral.call(v, "write", "Remove Task") | |
| 174 | end | |
| 175 | end | |
| 176 | end | |
| 177 | ||
| 178 | local ev, _, xPos, yPos = os.pullEvent("monitor_touch")
| |
| 179 | local sizeX, sizeY = peripheral.call(_, "getSize") | |
| 180 | if xPos >= sizeX/2-#"Remove Task"/2 and xPos <= (sizeX/2+#"Remove Task"/2)-1 and yPos == sizeY then | |
| 181 | local A = getTasks() | |
| 182 | table.remove(A, num) | |
| 183 | saveTasks(A) | |
| 184 | else | |
| 185 | ||
| 186 | end | |
| 187 | end | |
| 188 | ||
| 189 | local function addTask() | |
| 190 | local tasks = getTasks() | |
| 191 | term.clear() | |
| 192 | term.setCursorPos(2,2) | |
| 193 | write("Task: ")
| |
| 194 | tsk = read() | |
| 195 | table.insert(tasks, tsk) | |
| 196 | saveTasks(tasks) | |
| 197 | end | |
| 198 | ||
| 199 | local function delTask() | |
| 200 | local tasks = getTasks() | |
| 201 | term.clear() | |
| 202 | term.setCursorPos(2,2) | |
| 203 | write("Task number: ")
| |
| 204 | nmbr = tonumber(read()) | |
| 205 | if tasks[nmbr] ~= nil then | |
| 206 | table.remove(tasks, nmbr) | |
| 207 | end | |
| 208 | ||
| 209 | saveTasks(tasks) | |
| 210 | end | |
| 211 | ||
| 212 | function saveTasks(tbl) | |
| 213 | local A = fs.open(taskFile, "w") | |
| 214 | A.write(textutils.serialize(tbl)) | |
| 215 | A.close() | |
| 216 | end | |
| 217 | ||
| 218 | local pageNmr = 1 | |
| 219 | ||
| 220 | function iCanRun() | |
| 221 | ||
| 222 | while true do | |
| 223 | if monitors[1] ~= nil then | |
| 224 | clear() | |
| 225 | for _,v in ipairs(monitors) do | |
| 226 | local A = peripheral.wrap(v) | |
| 227 | redraw(A, pageNmr) | |
| 228 | os.queueEvent("")
| |
| 229 | os.pullEvent() | |
| 230 | end | |
| 231 | end | |
| 232 | --redraw(term, pageNmr) | |
| 233 | ||
| 234 | local maxX, maxY = term.getSize() | |
| 235 | local ev, _, xPos, yPos = os.pullEvent() | |
| 236 | local mon = false | |
| 237 | ||
| 238 | if ev == "monitor_touch" then | |
| 239 | local mon = true | |
| 240 | maxX, maxY = (peripheral.wrap(_)).getSize() | |
| 241 | end | |
| 242 | ||
| 243 | if ev == "monitor_touch" then | |
| 244 | if xPos >= 2 and xPos <= 5 and yPos == maxY then | |
| 245 | if pageNmr > 1 then | |
| 246 | pageNmr = pageNmr - 1 | |
| 247 | end | |
| 248 | elseif xPos >= maxX-4 and xPos <= maxX-1 and yPos == maxY then | |
| 249 | pageNmr = pageNmr + 1 | |
| 250 | elseif yPos > 1 and yPos < maxY then | |
| 251 | showTask(yPos, pageNmr, maxX, _) | |
| 252 | end | |
| 253 | elseif ev == "mouse_click" then | |
| 254 | if yPos == 6 then | |
| 255 | addTask() | |
| 256 | elseif yPos == 8 then | |
| 257 | delTask() | |
| 258 | end | |
| 259 | end | |
| 260 | sleep(.001) | |
| 261 | end | |
| 262 | ||
| 263 | end | |
| 264 | ||
| 265 | parallel.waitForAny(iCanRun, remoteTasks) |