2020-04-13 16:33:15 -07:00
|
|
|
zepha.__builtin.gui_env = { Gui = {}}
|
2021-08-22 11:58:52 -07:00
|
|
|
zepha.Gui = zepha.__builtin.gui_env.Gui
|
2020-04-13 16:33:15 -07:00
|
|
|
local env = zepha.__builtin.gui_env
|
2021-09-26 16:22:07 -07:00
|
|
|
setmetatable(env, { __index = _G })
|
2020-03-25 18:27:05 -07:00
|
|
|
|
2020-04-11 16:15:41 -07:00
|
|
|
-- create_element
|
|
|
|
-- Build a GUI Element with the provided constructor data, apply the metatable.
|
|
|
|
local function create_element(elem_type, data)
|
2021-08-20 22:48:38 -07:00
|
|
|
return GuiElement.new(elem_type, data)
|
2020-03-25 18:27:05 -07:00
|
|
|
end
|
|
|
|
|
2020-04-11 16:15:41 -07:00
|
|
|
-- register_element
|
|
|
|
-- Add an element to the Gui namespace.
|
|
|
|
local function register_element(key)
|
2021-09-06 18:33:01 -07:00
|
|
|
if type(key) == 'table' then
|
2021-08-20 22:48:38 -07:00
|
|
|
for _, v in pairs(key) do register_element(v) end
|
2020-04-11 16:15:41 -07:00
|
|
|
return
|
|
|
|
end
|
2020-04-13 16:33:15 -07:00
|
|
|
env.Gui[key] = function(data) return create_element(key, data) end
|
2020-04-11 16:15:41 -07:00
|
|
|
end
|
|
|
|
|
2021-09-06 18:33:01 -07:00
|
|
|
register_element({ 'Box', 'Text' })
|
2020-03-25 18:27:05 -07:00
|
|
|
|
2020-04-13 16:33:15 -07:00
|
|
|
-- zepha.build_gui
|
2020-04-11 16:15:41 -07:00
|
|
|
-- Allows you to Build UI Elements with the GUI namespace outside of a callback.
|
2021-08-20 22:48:38 -07:00
|
|
|
zepha.gui = function(fn)
|
2020-03-25 18:27:05 -07:00
|
|
|
setfenv(fn, env)
|
|
|
|
return fn()
|
|
|
|
end
|