myspace / CommonLua /Libs /Volumes /XTemplates /XEditorRoomTools.lua
sirnii's picture
Upload 1816 files
b6a38d7 verified
-- ========== GENERATED BY XTemplate Editor (Alt-F3) DO NOT EDIT MANUALLY! ==========
PlaceObj('XTemplate', {
__is_kind_of = "XDarkModeAwareDialog",
group = "Editor",
id = "XEditorRoomTools",
save_in = "Libs/Volumes",
PlaceObj('XTemplateWindow', {
'__class', "XDarkModeAwareDialog",
'Dock', "right",
'FoldWhenHidden', true,
'Background', RGBA(64, 64, 66, 255),
'HandleMouse', true,
'FocusOnOpen', "",
}, {
PlaceObj('XTemplateWindow', {
'__class', "XScrollArea",
'Id', "idScrollArea",
'IdNode', false,
'LayoutMethod', "VList",
'VScroll', "idScroll",
}, {
PlaceObj('XTemplateWindow', {
'__class', "XToolBar",
'MaxWidth', 213,
'LayoutMethod', "VList",
'Background', RGBA(64, 64, 66, 255),
'Toolbar', "EditorRoomWallSelection",
'Show', "text",
'ButtonTemplate', "XEditorRoomToolsButton",
'ToggleButtonTemplate', "XEditorRoomToolsCheckbox",
'ToolbarSectionTemplate', "XEditorToolbarSection",
}, {
PlaceObj('XTemplateFunc', {
'name', "GetActionsHost(self)",
'func', function (self)
return XShortcutsTarget
end,
}),
}),
PlaceObj('XTemplateWindow', {
'__class', "XToolBar",
'Id', "idToolbar",
'LayoutMethod', "VList",
'Background', RGBA(64, 64, 66, 255),
'Toolbar', "EditorRoomTools",
'Show', "text",
'ButtonTemplate', "XEditorRoomToolsButton",
'ToggleButtonTemplate', "XEditorRoomToolsCheckbox",
'ToolbarSectionTemplate', "XEditorRoomToolsSection",
}, {
PlaceObj('XTemplateFunc', {
'name', "GetActionsHost(self)",
'func', function (self)
return XShortcutsTarget
end,
}),
}),
PlaceObj('XTemplateWindow', {
'__class', "XSleekScroll",
'Id', "idScroll",
'Dock', "right",
'MinWidth', 5,
'Target', "idScrollArea",
'AutoHide', true,
}),
}),
PlaceObj('XTemplateWindow', {
'__class', "XText",
'Dock', "bottom",
'Text', "Hold Ctrl for preview\nRight-click to edit programs",
'TextHAlign', "center",
}),
PlaceObj('XTemplateFunc', {
'comment', "highlight related actions, right-click disabled actions",
'name', "Open",
'func', function (self, ...)
self:CreateThread("Rollover", function()
local old_related = {}
local old_hovered_with_ctrl, just_executed
local selection_after_execute
while true do
Sleep(100)
local buttons = GetChildrenOfKind(self, "XTextButton")
for _, button in ipairs(buttons) do
button.Press = function(self, alt, force, gamepad)
if alt then
self:OnAltPress(gamepad) -- activate alt click even if button is disabled
elseif not alt and self.enabled and old_hovered_with_ctrl == self.action then
just_executed = self.action
old_hovered_with_ctrl = nil
editor.ClearSel()
editor.AddToSel(selection_after_execute)
else
XButton.Press(self, alt, force, gamepad)
end
end
end
for _, win in ipairs(old_related) do
win:SetTextStyle(GetDarkModeSetting() and "GedDefaultDarkMode" or "GedDefault")
end
local new_hovered_with_ctrl
local win = self:GetMouseTarget(terminal.GetMousePos())
if win and rawget(win, "action") and rawget(win.action, "GetRelatedActions") then
-- highlight related actions
local related = win.action:GetRelatedActions(XShortcutsTarget) or empty_table
related = table.map(related, function(action) return table.find_value(buttons, "action", action) end)
for _, win in ipairs(related) do win:SetTextStyle("GedHighlight") end
old_related = related
-- from action for speculative execution for a "preview" while holding Ctrl
if terminal.IsKeyPressed(const.vkControl) and win.enabled and win.action ~= just_executed then
new_hovered_with_ctrl = win.action
end
end
-- update "preview"
if new_hovered_with_ctrl ~= old_hovered_with_ctrl then
if old_hovered_with_ctrl then
local sel = editor.GetSel()
if selection_after_execute then
editor.ClearSel()
editor.AddToSel(selection_after_execute)
selection_after_execute = nil
end
XEditorUndo:UndoRedo("undo")
editor.ClearSel()
editor.AddToSel(sel)
end
if new_hovered_with_ctrl then
local sel = editor.GetSel()
GenExtras(new_hovered_with_ctrl.ActionId)
selection_after_execute = editor.GetSel()
editor.ClearSel()
editor.AddToSel(sel)
end
old_hovered_with_ctrl = new_hovered_with_ctrl
end
end
end)
XDarkModeAwareDialog.Open(self, ...)
end,
}),
}),
})