Advertisement
kaibochan

init.lua

Feb 19th, 2025 (edited)
114
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Lua 2.42 KB | None | 0 0
  1. -- Package initialization and loading
  2. local Buffer = require("/apis/gui.buffer")
  3.  
  4. local gui = {}
  5. gui.Element = require("/apis/gui.element")
  6. gui.Display = require("/apis/gui.display")
  7. gui.Text = require("/apis/gui.text")
  8.  
  9. local displays_attached = {}
  10.  
  11. function gui.initializeDisplay(display_device)
  12.     display_width, display_height = display_device.getSize()
  13.    
  14.     local display = gui.Display:new {
  15.         device = display_device,
  16.         is_monitor = false,
  17.         width = display_width,
  18.         height = display_height,
  19.     }
  20.     table.insert(displays_attached, display)
  21.    
  22.     return display
  23. end
  24.  
  25. function gui.doEvents()
  26.     local e = gui.getEvents()
  27.  
  28.     if not e then
  29.         return
  30.     end
  31.  
  32.     if e.name == "monitor_touch" then
  33.         local selected_display = nil
  34.  
  35.         for _, display in ipairs(displays_attached) do
  36.             if peripheral.getName(display.device) == e.display then
  37.                 selected_display = display
  38.                 break
  39.             end
  40.         end
  41.  
  42.         -- get selected element given the x and y
  43.         -- if the element has a callback function associated with
  44.         -- this event, it will be called and given the event object
  45.         local element = selected_display:getSelectedElement(e.x, e.y)
  46.         if element[e.name] then
  47.             element[e.name](element, e)
  48.         end
  49.     end
  50. end
  51.  
  52. function gui.getEvents()
  53.     local event_data = {os.pullEvent()}
  54.  
  55.     if event_data[1] == "monitor_resize" then
  56.         return {
  57.             name = event_data[1],
  58.             display = event_data[2],
  59.         }
  60.     elseif event_data[1] == "monitor_touch" then
  61.         return {
  62.             name = event_data[1],
  63.             display = event_data[2],
  64.             x = event_data[3],
  65.             y = event_data[4],
  66.         }
  67.     elseif event_data[1] == "mouse_click"
  68.         or event_data[1] == "mouse_up"
  69.         or event_data[1] == "mouse_drag" then
  70.         return {
  71.             name = event_data[1],
  72.             button = event_data[2],
  73.             x = event_data[3],
  74.             y = event_data[4],
  75.         }
  76.     elseif event_data[1] == "key" then
  77.         return {
  78.             name = event_data[1],
  79.             key_code = event_data[2],
  80.             is_held = event_data[3],
  81.         }
  82.     elseif event_data[1] == "key_up" then
  83.         return {
  84.             name = event_data[1],
  85.             key_code = event_data[2],
  86.         }
  87.     end
  88. end
  89.  
  90. return gui
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement