View difference between Paste ID: JmKzDZem and 7Spj9KBa
SHOW: | | - or go back to the newest paste.
1
local mon = peripheral.wrap("top")
2
mon.setTextScale(1)
3
mon.setTextColor(colors.white)
4
local button={}
5
mon.setBackgroundColor(colors.black)
6
7
function clearTable()
8
   button = {}
9
end
10
               
11
function setTable(name, func, param, xmin, xmax, ymin, ymax)
12
   button[name] = {}
13
   button[name]["func"] = func
14
   button[name]["active"] = false
15
   button[name]["param"] = param
16
   button[name]["xmin"] = xmin
17
   button[name]["ymin"] = ymin
18
   button[name]["xmax"] = xmax
19
   button[name]["ymax"] = ymax
20
end
21
22
function funcName()
23
   print("You clicked buttonText")
24
end
25
        
26
function fillTable()
27
   setTable("ButtonText", funcName, 5, 25, 4, 8)
28
end     
29
30
function fill(text, color, bData)
31
   mon.setBackgroundColor(color)
32
   local yspot = math.floor((bData["ymin"] + bData["ymax"]) /2)
33
   local xspot = math.floor((bData["xmax"] - bData["xmin"] - string.len(text)) /2) +1
34
   for j = bData["ymin"], bData["ymax"] do
35
      mon.setCursorPos(bData["xmin"], j)
36
      if j == yspot then
37
         for k = 0, bData["xmax"] - bData["xmin"] - string.len(text) +1 do
38
            if k == xspot then
39
               mon.write(text)
40
            else
41
               mon.write(" ")
42
            end
43
         end
44
      else
45
         for i = bData["xmin"], bData["xmax"] do
46
            mon.write(" ")
47
         end
48
      end
49
   end
50
   mon.setBackgroundColor(colors.black)
51
end
52
     
53
function screen()
54
   local currColor
55
   for name,data in pairs(button) do
56
      local on = data["active"]
57
      if on == true then currColor = colors.lime else currColor = colors.red end
58
      fill(name, currColor, data)
59
   end
60
end
61
62
function toggleButton(name)
63
   button[name]["active"] = not button[name]["active"]
64
   screen()
65
end     
66
67
function flash(name)
68
   toggleButton(name)
69
   screen()
70
   sleep(0.15)
71
   toggleButton(name)
72
   screen()
73
end
74
                                             
75
function checkxy(x, y)
76
   for name, data in pairs(button) do
77
      if y>=data["ymin"] and  y <= data["ymax"] then
78
         if x>=data["xmin"] and x<= data["xmax"] then
79
            if data["param"] == "" then
80
              data["func"]()
81
            else
82
              data["func"](data["param"])
83
            end
84
            return true
85
            --data["active"] = not data["active"]
86
            --print(name)
87
         end
88
      end
89
   end
90
   return false
91
end
92
     
93
function heading(text)
94
   w, h = mon.getSize()
95
   mon.setCursorPos((w-string.len(text))/2+1, 1)
96
   mon.write(text)
97
end
98
     
99
function label(w, h, text)
100
   mon.setCursorPos(w, h)
101
   mon.write(text)
102
end