View difference between Paste ID: tVBaSRSG and hWh8h0YQ
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)