View difference between Paste ID: T0rLxw7w and hnkw5rQH
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