Extension-Druid/druid/editor_scripts/druid_settings.lua
2025-04-19 18:03:50 +03:00

123 lines
3.1 KiB
Lua

local M = {}
function M.open_settings()
print("Opening Druid settings")
local dialog_component = editor.ui.component(function(props)
local template_path, set_template_path = editor.ui.use_state(editor.prefs.get("druid.widget_template_path"))
-- Check if the template path is valid
local path_valid = editor.ui.use_memo(function(path)
-- Use resource_exists to check if the resource exists
local exists = false
pcall(function()
-- If we can get the text property, the resource exists
local content = editor.get(path, "text")
exists = content ~= nil
end)
return exists
end, template_path)
return editor.ui.dialog({
title = "Druid Settings",
content = editor.ui.vertical({
spacing = editor.ui.SPACING.MEDIUM,
padding = editor.ui.PADDING.MEDIUM,
children = {
editor.ui.label({
text = "Widget Template Path:"
}),
editor.ui.resource_field({
value = template_path,
on_value_changed = set_template_path,
extensions = {"lua", "template"},
padding = editor.ui.PADDING.SMALL
}),
not path_valid and editor.ui.label({
text = "Warning: Path not found!",
color = editor.ui.COLOR.WARNING
}) or nil,
-- Links section title
editor.ui.label({
text = "Documentation:",
color = editor.ui.COLOR.TEXT
}),
-- Documentation buttons
editor.ui.horizontal({
spacing = editor.ui.SPACING.SMALL,
children = {
editor.ui.button({
text = "Project Repository",
on_pressed = function()
editor.browse("https://github.com/Insality/druid")
end
}),
editor.ui.button({
text = "Open Quick API Reference",
on_pressed = function()
editor.browse("https://github.com/Insality/druid/blob/develop/api/quick_api_reference.md")
end
}),
}
}),
-- Sponsor section
editor.ui.label({
text = "Support the project:",
color = editor.ui.COLOR.TEXT
}),
editor.ui.horizontal({
spacing = editor.ui.SPACING.SMALL,
children = {
editor.ui.button({
text = "❤️ Sponsor on GitHub",
on_pressed = function()
editor.browse("https://github.com/sponsors/Insality")
end
}),
editor.ui.button({
text = "☕ Ko-fi",
on_pressed = function()
editor.browse("https://ko-fi.com/insality")
end
}),
editor.ui.button({
text = "☕ Buy Me A Coffee",
on_pressed = function()
editor.browse("https://buymeacoffee.com/insality")
end
})
}
})
}
}),
buttons = {
editor.ui.dialog_button({
text = "Cancel",
cancel = true
}),
editor.ui.dialog_button({
text = "Save",
default = true,
result = { template_path = template_path }
})
}
})
end)
local result = editor.ui.show_dialog(dialog_component({}))
if result and result.template_path then
-- Update the preferences
editor.prefs.set("druid.widget_template_path", result.template_path)
print("Widget template path updated to:", result.template_path)
end
return result
end
return M