mirror of
https://github.com/Refactorio/RedMew.git
synced 2024-12-14 10:13:13 +02:00
113 lines
2.7 KiB
Lua
113 lines
2.7 KiB
Lua
local Gui = require 'utils.gui'
|
|
local Model = require 'features.gui.debug.model'
|
|
local Color = require 'resources.color_presets'
|
|
|
|
local dump = Model.dump
|
|
|
|
local Public = {}
|
|
|
|
local ignore = {
|
|
_G = true,
|
|
assert = true,
|
|
collectgarbage = true,
|
|
error = true,
|
|
getmetatable = true,
|
|
ipairs = true,
|
|
load = true,
|
|
loadstring = true,
|
|
next = true,
|
|
pairs = true,
|
|
pcall = true,
|
|
print = true,
|
|
rawequal = true,
|
|
rawlen = true,
|
|
rawget = true,
|
|
rawset = true,
|
|
select = true,
|
|
setmetatable = true,
|
|
tonumber = true,
|
|
tostring = true,
|
|
type = true,
|
|
xpcall = true,
|
|
_VERSION = true,
|
|
module = true,
|
|
require = true,
|
|
package = true,
|
|
unpack = true,
|
|
table = true,
|
|
string = true,
|
|
bit32 = true,
|
|
math = true,
|
|
debug = true,
|
|
serpent = true,
|
|
log = true,
|
|
table_size = true,
|
|
global = true,
|
|
remote = true,
|
|
commands = true,
|
|
settings = true,
|
|
rcon = true,
|
|
script = true,
|
|
util = true,
|
|
mod_gui = true,
|
|
game = true
|
|
}
|
|
|
|
local header_name = Gui.uid_name()
|
|
local left_panel_name = Gui.uid_name()
|
|
local right_panel_name = Gui.uid_name()
|
|
|
|
Public.name = '_G'
|
|
|
|
function Public.show(container)
|
|
local main_flow = container.add {type = 'flow', direction = 'horizontal'}
|
|
|
|
local left_panel = main_flow.add {type = 'scroll-pane', name = left_panel_name}
|
|
local left_panel_style = left_panel.style
|
|
left_panel_style.width = 300
|
|
|
|
for key, value in pairs(_G) do
|
|
if not ignore[key] then
|
|
local header =
|
|
left_panel.add({type = 'flow'}).add {type = 'label', name = header_name, caption = tostring(key)}
|
|
Gui.set_data(header, value)
|
|
end
|
|
end
|
|
|
|
local right_panel = main_flow.add {type = 'text-box', name = right_panel_name}
|
|
right_panel.word_wrap = true
|
|
right_panel.read_only = true
|
|
right_panel.selectable = true
|
|
|
|
local right_panel_style = right_panel.style
|
|
right_panel_style.vertically_stretchable = true
|
|
right_panel_style.horizontally_stretchable = true
|
|
|
|
Gui.set_data(left_panel, {right_panel = right_panel, selected_header = nil})
|
|
end
|
|
|
|
Gui.on_click(
|
|
header_name,
|
|
function(event)
|
|
local element = event.element
|
|
local value = Gui.get_data(element)
|
|
|
|
local left_panel = element.parent.parent
|
|
local left_panel_data = Gui.get_data(left_panel)
|
|
local right_panel = left_panel_data.right_panel
|
|
local selected_header = left_panel_data.selected_header
|
|
|
|
if selected_header then
|
|
selected_header.style.font_color = Color.white
|
|
end
|
|
|
|
element.style.font_color = Color.orange
|
|
left_panel_data.selected_header = element
|
|
|
|
local content = dump(value)
|
|
right_panel.text = content
|
|
end
|
|
)
|
|
|
|
return Public
|