SHOW:
|
|
- or go back to the newest paste.
1 | local isUsing = true | |
2 | local maxX, maxY = term.getSize() | |
3 | local color1 = colors.lime | |
4 | local color2 = colors.white | |
5 | if fs.exists("/.todocfg") then | |
6 | local opfile = fs.open("/.todocfg", "r") | |
7 | color1 = tonumber(opfile.readLine()) | |
8 | color2 = tonumber(opfile.readLine()) | |
9 | opfile.close() | |
10 | end | |
11 | buff_mouse = 0 | |
12 | redrawTimer = os.startTimer(0) | |
13 | fista = 1 | |
14 | local colnames = {[0] = "White", | |
15 | [1] = "Orange", | |
16 | [2] = "Magenta", | |
17 | [3] = "Light Blue", | |
18 | [4] = "Yellow", | |
19 | [5] = "Lime", | |
20 | [6] = "Pink", | |
21 | [7] = "Gray", | |
22 | [8] = "Light Gray", | |
23 | [9] = "Cyan", | |
24 | [10] = "Purple", | |
25 | [11] = "Blue", | |
26 | [12] = "Brown", | |
27 | [13] = "Green", | |
28 | [14] = "Red", | |
29 | [15] = "Black"} | |
30 | ||
31 | local numconv = {[0] = colors.white, | |
32 | [1] = colors.orange, | |
33 | [2] = colors.magenta, | |
34 | [3] = colors.lightBlue, | |
35 | [4] = colors.yellow, | |
36 | [5] = colors.lime, | |
37 | [6] = colors.pink, | |
38 | [7] = colors.gray, | |
39 | [8] = colors.lightGray, | |
40 | [9] = colors.cyan, | |
41 | [10] = colors.purple, | |
42 | [11] = colors.blue, | |
43 | [12] = colors.brown, | |
44 | [13] = colors.green, | |
45 | [14] = colors.red, | |
46 | [15] = colors.black} | |
47 | ||
48 | --Maybe need to rewrite this :P | |
49 | local choice = 0 | |
50 | local choice2 = 0 | |
51 | while numconv[choice] ~= color1 do | |
52 | choice=choice+1 | |
53 | end | |
54 | while numconv[choice2] ~= color2 do | |
55 | choice2=choice2+1 | |
56 | end | |
57 | local taskFile = "/.tasks" | |
58 | local page = 1 | |
59 | local Options = false | |
60 | ||
61 | local function getTasks() | |
62 | if not fs.exists(taskFile) then | |
63 | local A = fs.open(taskFile, "w") | |
64 | A.write("{}") | |
65 | A.close() | |
66 | return {} | |
67 | else | |
68 | local A = fs.open(taskFile, "r") | |
69 | local tmp = textutils.unserialize(A.readAll()) | |
70 | A.close() | |
71 | return tmp | |
72 | end | |
73 | end | |
74 | ||
75 | - | redrawTimer = os.startTimer(.83) |
75 | + | |
76 | function input_buffer() | |
77 | if fista == 1 then | |
78 | fista = 0 | |
79 | coroutine.yield() | |
80 | end | |
81 | -- while isUsing and not Options do | |
82 | while true do | |
83 | buffTimer = os.startTimer(.1) | |
84 | ||
85 | --sleep(0) | |
86 | buff_ev, grhshsr, wbxPos, wbyPos = os.pullEvent() | |
87 | if buff_ev == "mouse_click" then | |
88 | buff_mouse = 1 | |
89 | buff_xPos = wbxPos | |
90 | buff_yPos = wbyPos | |
91 | --break | |
92 | else | |
93 | ||
94 | end | |
95 | if ev == "timer" then | |
96 | break | |
97 | end | |
98 | end | |
99 | coroutine.yield() | |
100 | end | |
101 | ||
102 | ||
103 | function time_refresh() | |
104 | --time start | |
105 | if isUsing and not Options then | |
106 | local tasks = getTasks() | |
107 | local nMaxY = maxY - 2 | |
108 | ||
109 | term.clear() | |
110 | term.setCursorPos(1,1) | |
111 | term.setBackgroundColour(color1) | |
112 | if color1 ~= color2 and color1 ~= colors.white then | |
113 | term.setTextColour(color2) | |
114 | elseif color1 == color2 and color1 ~= colors.white then | |
115 | term.setTextColor(colors.white) | |
116 | else | |
117 | term.setTextColor(colors.black) | |
118 | end | |
119 | ||
120 | term.clearLine() | |
121 | print(" + / - ") | |
122 | term.setCursorPos(maxX-12,1) | |
123 | print(" Opt Exit") | |
124 | ||
125 | ||
126 | ||
127 | --redrawTimer = os.startTimer(.83) | |
128 | redrawTimer = os.startTimer(.1) | |
129 | ||
130 | ||
131 | time_nospace_zero = string.gsub(textutils.formatTime(os.time(), false), " ", "") | |
132 | time_nospace_10error = string.gsub(time_nospace_zero, "0:", "12:") | |
133 | ||
134 | time_nospace = string.gsub(time_nospace_10error, "112:", "10:") | |
135 | ||
136 | timeposfloat = (maxX / 2) - (#time_nospace / 2) | |
137 | timepos = math.floor(timeposfloat+2.6) - 1 | |
138 | term.setCursorPos(timepos,1) | |
139 | print(time_nospace) | |
140 | coroutine.yield() | |
141 | ||
142 | end | |
143 | end | |
144 | ||
145 | time_refresh() | |
146 | parallel.waitForAny(input_buffer, time_refresh) | |
147 | time_refresh() | |
148 | local function redraw(page) | |
149 | ||
150 | if isUsing and not Options then | |
151 | local tasks = getTasks() | |
152 | local nMaxY = maxY - 2 | |
153 | ||
154 | term.clear() | |
155 | term.setCursorPos(1,1) | |
156 | term.setBackgroundColour(color1) | |
157 | if color1 ~= color2 and color1 ~= colors.white then | |
158 | term.setTextColour(color2) | |
159 | elseif color1 == color2 and color1 ~= colors.white then | |
160 | term.setTextColor(colors.white) | |
161 | else | |
162 | term.setTextColor(colors.black) | |
163 | end | |
164 | term.clearLine() | |
165 | print(" + / - ") | |
166 | term.setCursorPos(maxX-12,1) | |
167 | print(" Opt Exit") | |
168 | parallel.waitForAny(input_buffer, time_refresh) | |
169 | --time end | |
170 | ||
171 | for i=1, nMaxY do | |
172 | if i%2 == 1 and color1 ~= color2 then | |
173 | term.setBackgroundColour(color2) | |
174 | term.setTextColour(color1) | |
175 | elseif color1 ~= color2 then | |
176 | term.setBackgroundColour(color1) | |
177 | term.setTextColour(color2) | |
178 | elseif color1 == colors.white then | |
179 | term.setBackgroundColor(color1) | |
180 | term.setTextColor(colors.black) | |
181 | else | |
182 | term.setBackgroundColor(color1) | |
183 | term.setTextColor(colors.black) | |
184 | end | |
185 | ||
186 | term.setCursorPos(1,1+i) | |
187 | term.clearLine() | |
188 | ||
189 | local num = i+(nMaxY*(page-1)) | |
190 | ||
191 | if tasks[num] ~= nil then | |
192 | write(num..": "..tasks[num]) | |
193 | else | |
194 | write(num..": ") | |
195 | end | |
196 | end | |
197 | ||
198 | if maxY%2 == 0 and color1 ~= color2 then | |
199 | term.setBackgroundColour(color2) | |
200 | term.setTextColour(color1) | |
201 | elseif color1 ~= color2 then | |
202 | term.setBackgroundColour(color1) | |
203 | term.setTextColour(color2) | |
204 | elseif color1 == colors.white then | |
205 | term.setBackgroundColor(color1) | |
206 | term.setTextColor(colors.black) | |
207 | else | |
208 | term.setBackgroundColor(color1) | |
209 | term.setTextColor(colors.white) | |
210 | end | |
211 | term.setCursorPos(2,maxY) | |
212 | term.clearLine() | |
213 | write("<") | |
214 | term.setCursorPos((maxX/2-#tostring(page)/2)+1,maxY) | |
215 | write(page) | |
216 | term.setCursorPos(maxX-1,maxY) | |
217 | write(">") | |
218 | ||
219 | ||
220 | ||
221 | elseif not isUsing and not Options then --Exited program | |
222 | term.setBackgroundColor(colors.black) | |
223 | term.setTextColor(colors.white) | |
224 | term.clear() | |
225 | term.setCursorPos(1,1) | |
226 | print("Goodbye !") | |
227 | elseif isUsing and Options then | |
228 | term.setBackgroundColor(colors.gray) | |
229 | if color1 ~= colors.white then | |
230 | term.setTextColor(colors.white) | |
231 | else | |
232 | term.setTextColor(colors.black) | |
233 | end | |
234 | term.clear() | |
235 | color1 = numconv[choice] | |
236 | color2 = numconv[choice2] | |
237 | term.setCursorPos(1,1) | |
238 | term.setBackgroundColor(color1) | |
239 | term.clearLine() | |
240 | term.setCursorPos(maxX-(maxX-2),1) | |
241 | print("Options") | |
242 | term.setCursorPos(math.ceil(maxX/2)+1,1) | |
243 | print("|") | |
244 | term.setCursorPos(maxX-6,1) | |
245 | print("Return") | |
246 | term.setBackgroundColor(colors.gray) | |
247 | term.setTextColor(colors.white) | |
248 | term.setCursorPos(15,3) | |
249 | print("<->") | |
250 | paintutils.drawLine(14,4,14+string.len(colnames[choice]),4,numconv[choice]) | |
251 | term.setCursorPos(3,4) | |
252 | if color1 ~= colors.white then | |
253 | term.setTextColor(colors.white) | |
254 | else | |
255 | term.setTextColor(colors.black) | |
256 | end | |
257 | print("1st color : " .. colnames[choice]) | |
258 | term.setBackgroundColor(colors.gray) | |
259 | paintutils.drawLine(14,6,14+string.len(colnames[choice2]),6,numconv[choice2]) | |
260 | if color2 ~= colors.white then | |
261 | term.setTextColor(colors.white) | |
262 | else | |
263 | term.setTextColor(colors.black) | |
264 | end | |
265 | term.setCursorPos(3,6) | |
266 | print("2nd color : " .. colnames[choice2]) | |
267 | term.setBackgroundColor(colors.gray) | |
268 | term.setTextColor(colors.white) | |
269 | term.setCursorPos(15,7) | |
270 | print("<->") | |
271 | term.setCursorPos(5,10) | |
272 | print("About this program") | |
273 | term.setCursorPos(4,12) | |
274 | print("HD's Todo list V1.6") | |
275 | term.setCursorPos(1,14) | |
276 | print("-masterdisasterHD : Orignal program and idea") | |
277 | term.setCursorPos(1,17) | |
278 | print("-s0r00t : V1.5 enhancements") | |
279 | ||
280 | end | |
281 | end | |
282 | ||
283 | local function saveTasks(tbl) | |
284 | local A = fs.open(taskFile, "w") | |
285 | A.write(textutils.serialize(tbl)) | |
286 | A.close() | |
287 | end | |
288 | ||
289 | local function addTask() | |
290 | local tasks = getTasks() | |
291 | term.setBackgroundColour(colors.black) | |
292 | term.setTextColour(colors.white) | |
293 | term.clear() | |
294 | term.setCursorPos(1,1) | |
295 | term.setCursorBlink(true) | |
296 | write("Task: ") | |
297 | local tsk = read() | |
298 | table.insert(tasks, tsk) | |
299 | saveTasks(tasks) | |
300 | end | |
301 | ||
302 | local function delTask() | |
303 | local tasks = getTasks() | |
304 | term.setBackgroundColour(colors.black) | |
305 | term.setTextColour(colors.white) | |
306 | term.clear() | |
307 | term.setCursorPos(1,1) | |
308 | write("Task number: ") | |
309 | local tsknmbr = tonumber(read()) | |
310 | table.remove(tasks, tsknmbr) | |
311 | saveTasks(tasks) | |
312 | end | |
313 | ||
314 | local function showTask(pg, pos, h, w) | |
315 | local tasks = getTasks() | |
316 | local step1 = (h-2)*(pg-1) | |
317 | local step2 = (pos-1)+step1 | |
318 | term.setBackgroundColour(color2) | |
319 | term.setTextColour(color1) | |
320 | term.clear() | |
321 | term.setCursorPos(1,1) | |
322 | if tasks[step2] ~= nil then | |
323 | write("Task #"..step2..":") | |
324 | local text = tasks[step2] | |
325 | local k = 1 | |
326 | for i=1, h-1 do | |
327 | term.setCursorPos(1,i+1) | |
328 | for j=1,w do | |
329 | write(string.sub(text, k, k)) | |
330 | k = k + 1 | |
331 | end | |
332 | end | |
333 | term.setCursorPos(1,h) | |
334 | write("Press any key to continue") | |
335 | os.pullEvent("key") | |
336 | end | |
337 | end | |
338 | ||
339 | --Program loop | |
340 | redraw(page) | |
341 | local maxX, maxY = term.getSize() | |
342 | while isUsing do | |
343 | - | elseif ev == "timer" then |
343 | + | |
344 | - | time_refresh() |
344 | + | |
345 | ||
346 | ||
347 | if ev == "mouse_click" then | |
348 | mouseclc = 1 | |
349 | end | |
350 | if buff_mouse == 1 then | |
351 | mouseclc = 1 | |
352 | end | |
353 | ||
354 | if ev == "mouse_click" or buff_mouse == 1 then | |
355 | --if buff_mouse == 1 then | |
356 | --if mouseclc == 1 then | |
357 | if buff_mouse == 1 then | |
358 | xPos = buff_xPos | |
359 | yPos = buff_yPos | |
360 | buff_mouse = 0 | |
361 | end | |
362 | if xPos ~= nil then | |
363 | if yPos ~= nil then | |
364 | ||
365 | ||
366 | if xPos == 2 and yPos == 1 and not Options then | |
367 | addTask() | |
368 | elseif xPos == 6 and yPos == 1 and not Options then | |
369 | delTask() | |
370 | elseif xPos >= maxX-12 and xPos <= maxX-4 and yPos == 1 and not Options then | |
371 | Options = true | |
372 | elseif xPos >=maxX-3 and xPos <= maxX and yPos == 1 and not Options then | |
373 | isUsing = false | |
374 | elseif xPos == 2 and yPos == maxY and not Options then | |
375 | if page > 1 then | |
376 | page = page - 1 | |
377 | end | |
378 | elseif xPos == maxX-1 and yPos == maxY and not Options then | |
379 | page = page + 1 | |
380 | elseif xPos > 1 and yPos < maxY and not Options then | |
381 | showTask(page, yPos, maxY, maxX) | |
382 | elseif xPos >= maxX-6 and xPos <= maxX-1 and yPos == 1 and Options then | |
383 | Options = false | |
384 | local opfile = fs.open("/.todocfg", "w") | |
385 | opfile.writeLine(color1) | |
386 | opfile.write(color2) | |
387 | opfile.close() | |
388 | elseif xPos == 15 and yPos == 3 and Options then | |
389 | if choice-1 ~= -1 then | |
390 | choice = choice-1 | |
391 | else | |
392 | choice = 15 | |
393 | end | |
394 | redraw(page) | |
395 | elseif xPos == 17 and yPos == 3 and Options then | |
396 | if choice+1 ~= 16 then | |
397 | choice = choice+1 | |
398 | else | |
399 | choice = 0 | |
400 | end | |
401 | redraw(page) | |
402 | elseif xPos == 15 and yPos == 7 and Options then | |
403 | if choice2-1 ~= -1 then | |
404 | choice2 = choice2-1 | |
405 | else | |
406 | choice2 = 15 | |
407 | end | |
408 | redraw(page) | |
409 | elseif xPos == 17 and yPos == 7 and Options then | |
410 | if choice2+1 ~= 16 then | |
411 | choice2 = choice2+1 | |
412 | else | |
413 | choice2 = 0 | |
414 | end | |
415 | mouseclc = 1 | |
416 | redraw(page) | |
417 | end | |
418 | end | |
419 | end | |
420 | elseif ev == "mouse_scroll" then | |
421 | if b == -1 then | |
422 | if page > 1 then page = page - 1 end | |
423 | elseif b == 1 then | |
424 | page = page + 1 | |
425 | end | |
426 | ||
427 | elseif ev == "timer" then | |
428 | parallel.waitForAny(input_buffer, time_refresh) | |
429 | redrawTimer = os.startTimer(.1) | |
430 | end | |
431 | redraw(page) | |
432 | end |