mirror of
https://github.com/Insality/druid
synced 2025-09-27 18:12:21 +02:00
Update editor scripts
This commit is contained in:
122
druid/editor_scripts/druid_settings.lua
Normal file
122
druid/editor_scripts/druid_settings.lua
Normal file
@@ -0,0 +1,122 @@
|
||||
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
|
Reference in New Issue
Block a user