|
|
|
|
|
PlaceObj('XTemplate', { |
|
group = "GedApps", |
|
id = "ModEditor", |
|
save_in = "Ged", |
|
PlaceObj('XTemplateWindow', { |
|
'__class', "GedApp", |
|
'Translate', true, |
|
'Title', "Mod Editor", |
|
'AppId', "ModEditor", |
|
'InitialWidth', 1100, |
|
}, { |
|
PlaceObj('XTemplateFunc', { |
|
'name', "Open(self, ...)", |
|
'func', function (self, ...) |
|
MountFolder(self.mod_content_path, self.mod_os_path) |
|
return GedApp.Open(self, ...) |
|
end, |
|
}), |
|
PlaceObj('XTemplateAction', { |
|
'ActionId', "File", |
|
'ActionName', T(174683227646, "File"), |
|
'ActionMenubar', "main", |
|
'OnActionEffect', "popup", |
|
}, { |
|
PlaceObj('XTemplateAction', { |
|
'ActionId', "Save", |
|
'ActionName', T(280146583573, "Save"), |
|
'ActionIcon', "CommonAssets/UI/Ged/save.tga", |
|
'ActionToolbar', "main", |
|
'ActionShortcut', "Ctrl-S", |
|
'OnAction', function (self, host, source, ...) |
|
host:Send("GedSaveMod") |
|
end, |
|
}), |
|
PlaceObj('XTemplateAction', { |
|
'ActionId', "OpenFolder", |
|
'ActionName', T(595712252411, "Open Folder"), |
|
'ActionIcon', "CommonAssets/UI/Ged/explorer.tga", |
|
'ActionToolbar', "main", |
|
'ActionShortcut', "Ctrl-O", |
|
'OnAction', function (self, host, source, ...) |
|
host:Op("GedOpOpenModFolder", "root") |
|
end, |
|
}), |
|
PlaceObj('XTemplateAction', { |
|
'ActionId', "GenTransTbl", |
|
'ActionName', T(727097690549, "Export Translation Table"), |
|
'OnAction', function (self, host, source, ...) |
|
host:Op("GedOpGenTTableMod", "root") |
|
end, |
|
}), |
|
PlaceObj('XTemplateAction', { |
|
'ActionId', "PackMod", |
|
'ActionName', T(906167416126, "Pack Mod"), |
|
'OnAction', function (self, host, source, ...) |
|
host:Op("GedOpPackMod", "root") |
|
end, |
|
}), |
|
PlaceObj('XTemplateCode', { |
|
'run', function (self, parent, context) |
|
if XTemplates.ModEditorPlatformActions then |
|
XTemplates.ModEditorPlatformActions:Eval(parent, context) |
|
end |
|
end, |
|
}), |
|
PlaceObj('XTemplateGroup', { |
|
'__condition', function (parent, context) return Platform.steam end, |
|
}, { |
|
PlaceObj('XTemplateAction', { |
|
'RolloverText', T(966025188900, "Upload to Steam"), |
|
'RolloverDisabledText', T(131688119141, "Uploading to Steam is unavailable"), |
|
'ActionId', "SteamUpload", |
|
'ActionName', T(740063077677, "Upload to Steam"), |
|
'ActionIcon', "CommonAssets/UI/Ged/steam.tga", |
|
'ActionToolbar', "main", |
|
'ActionToolbarSplit', true, |
|
'ActionState', function (self, host) |
|
return not host.steam_login and "disabled" |
|
end, |
|
'OnAction', function (self, host, source, ...) |
|
host:Op("GedOpUploadModToSteam", "root") |
|
end, |
|
}), |
|
}), |
|
PlaceObj('XTemplateGroup', { |
|
'__condition', function (parent, context) return Platform.epic end, |
|
}, { |
|
PlaceObj('XTemplateAction', { |
|
'RolloverText', T(602897019334, "Upload to Epic Games"), |
|
'RolloverDisabledText', T(584040368360, "Uploading to Epic Games is unavailable"), |
|
'ActionId', "EpicUpload", |
|
'ActionName', T(848185994514, "Upload to Epic Games"), |
|
'ActionIcon', "CommonAssets/UI/Ged/epic_up", |
|
'ActionToolbar', "main", |
|
'ActionToolbarSplit', true, |
|
'ActionState', function (self, host) |
|
|
|
end, |
|
'OnAction', function (self, host, source, ...) |
|
host:Op("GedOpUploadModToEpic", "root") |
|
end, |
|
}), |
|
}), |
|
}), |
|
PlaceObj('XTemplateAction', { |
|
'ActionId', "Edit", |
|
'ActionName', T(786174819535, "Edit"), |
|
'ActionMenubar', "main", |
|
'OnActionEffect', "popup", |
|
}, { |
|
PlaceObj('XTemplateAction', { |
|
'ActionId', "Cut", |
|
'ActionName', T(718930329684, "Cut"), |
|
'ActionIcon', "CommonAssets/UI/Ged/cut.tga", |
|
'ActionToolbar', "main", |
|
'ActionShortcut', "Ctrl-X", |
|
'OnAction', function (self, host, source, ...) |
|
local panel = host:GetLastFocusedPanel() |
|
if panel == host.idItems then |
|
host:Op("GedOpCutModItem", panel.context, panel:GetMultiSelection()) |
|
end |
|
end, |
|
'ActionContexts', { |
|
"ContentRootPanelAction", |
|
"ContentChildPanelAction", |
|
"PresetsChildAction", |
|
}, |
|
'replace_matching_id', true, |
|
}), |
|
PlaceObj('XTemplateAction', { |
|
'ActionId', "Copy", |
|
'ActionName', T(191389011800, "Copy"), |
|
'ActionIcon', "CommonAssets/UI/Ged/copy.tga", |
|
'ActionToolbar', "main", |
|
'ActionShortcut', "Ctrl-C", |
|
'OnAction', function (self, host, source, ...) |
|
local panel = host:GetLastFocusedPanel() |
|
if panel == host.idItems then |
|
host:Op("GedOpCopyModItem", panel.context, panel:GetMultiSelection()) |
|
elseif panel == host.idItemProperties then |
|
host:Op("GedOpPropertyCopy", panel.context, panel:GetSelectedProperties(), panel.context) |
|
end |
|
end, |
|
'ActionContexts', { |
|
"PresetsChildAction", |
|
"ContentRootPanelAction", |
|
"ContentChildPanelAction", |
|
"PropAction", |
|
}, |
|
'replace_matching_id', true, |
|
}), |
|
PlaceObj('XTemplateAction', { |
|
'ActionId', "Paste", |
|
'ActionName', T(749315791356, "Paste"), |
|
'ActionIcon', "CommonAssets/UI/Ged/paste.tga", |
|
'ActionToolbar', "main", |
|
'ActionShortcut', "Ctrl-V", |
|
'OnAction', function (self, host, source, ...) |
|
local panel = host:GetLastFocusedPanel() |
|
if panel == host.idItems then |
|
host:Op("GedOpPasteModItem", panel.context, panel:GetMultiSelection()) |
|
elseif panel:IsKindOf("GedPropPanel") then |
|
host:Op("GedOpPropertyPaste", panel.context) |
|
end |
|
end, |
|
'ActionContexts', { |
|
"PresetsChildAction", |
|
"ContentRootPanelAction", |
|
"ContentChildPanelAction", |
|
"PropAction", |
|
}, |
|
'replace_matching_id', true, |
|
}), |
|
PlaceObj('XTemplateAction', { |
|
'ActionId', "Duplicate", |
|
'ActionName', T(284844710474, "Duplicate"), |
|
'ActionIcon', "CommonAssets/UI/Ged/duplicate.tga", |
|
'ActionToolbar', "main", |
|
'ActionToolbarSplit', true, |
|
'ActionShortcut', "Ctrl-D", |
|
'OnAction', function (self, host, source, ...) |
|
local panel = host:GetLastFocusedPanel() |
|
if panel == host.idItems then |
|
host:Op("GedOpDuplicateModItem", panel.context, panel:GetMultiSelection()) |
|
end |
|
end, |
|
'ActionContexts', { |
|
"PresetsChildAction", |
|
"ContentRootPanelAction", |
|
"ContentChildPanelAction", |
|
}, |
|
'replace_matching_id', true, |
|
}), |
|
PlaceObj('XTemplateAction', { |
|
'ActionName', T(930594708322, "-----"), |
|
'ActionMenubar', "Edit", |
|
}), |
|
PlaceObj('XTemplateAction', { |
|
'ActionId', "MoveOutwards", |
|
'ActionName', T(556803322410, "Move Out"), |
|
'ActionIcon', "CommonAssets/UI/Ged/left.tga", |
|
'ActionMenubar', "Edit", |
|
'ActionToolbar', "main", |
|
'ActionShortcut', "Alt-Left", |
|
'OnAction', function (self, host, source, ...) |
|
local panel = host:GetLastFocusedPanel() |
|
if panel == host.idItems then |
|
host:Op("GedOpTreeMoveItemOutwards", panel.context, panel:GetMultiSelection()) |
|
end |
|
end, |
|
}), |
|
PlaceObj('XTemplateAction', { |
|
'ActionId', "MoveInwards", |
|
'ActionName', T(384052770742, "Move In"), |
|
'ActionIcon', "CommonAssets/UI/Ged/right.tga", |
|
'ActionMenubar', "Edit", |
|
'ActionToolbar', "main", |
|
'ActionShortcut', "Alt-Right", |
|
'OnAction', function (self, host, source, ...) |
|
local panel = host:GetLastFocusedPanel() |
|
if panel == host.idItems then |
|
host:Op("GedOpTreeMoveItemInwards", panel.context, panel:GetMultiSelection()) |
|
end |
|
end, |
|
}), |
|
PlaceObj('XTemplateAction', { |
|
'ActionId', "MoveUp", |
|
'ActionName', T(459268168316, "Move Up"), |
|
'ActionIcon', "CommonAssets/UI/Ged/up.tga", |
|
'ActionMenubar', "Edit", |
|
'ActionToolbar', "main", |
|
'ActionShortcut', "Alt-Up", |
|
'OnAction', function (self, host, source, ...) |
|
local panel = host:GetLastFocusedPanel() |
|
if panel == host.idItems then |
|
host:Op("GedOpTreeMoveItemUp", panel.context, panel:GetMultiSelection()) |
|
end |
|
end, |
|
}), |
|
PlaceObj('XTemplateAction', { |
|
'ActionId', "MoveDown", |
|
'ActionName', T(203305089151, "Move Down"), |
|
'ActionIcon', "CommonAssets/UI/Ged/down.tga", |
|
'ActionMenubar', "Edit", |
|
'ActionToolbar', "main", |
|
'ActionShortcut', "Alt-Down", |
|
'OnAction', function (self, host, source, ...) |
|
local panel = host:GetLastFocusedPanel() |
|
if panel == host.idItems then |
|
host:Op("GedOpTreeMoveItemDown", panel.context, panel:GetMultiSelection()) |
|
end |
|
end, |
|
}), |
|
PlaceObj('XTemplateAction', { |
|
'ActionId', "DeleteItem", |
|
'ActionName', T(931048354633, "Delete Item"), |
|
'ActionIcon', "CommonAssets/UI/Ged/delete.tga", |
|
'ActionToolbar', "main", |
|
'ActionToolbarSplit', true, |
|
'ActionShortcut', "Delete", |
|
'OnAction', function (self, host, source, ...) |
|
host:Op("GedOpDeleteModItem", "root", host.idItems:GetMultiSelection()) |
|
end, |
|
}), |
|
PlaceObj('XTemplateAction', { |
|
'ActionName', T(298776341838, "-----"), |
|
'ActionMenubar', "Edit", |
|
}), |
|
PlaceObj('XTemplateAction', { |
|
'ActionId', "Undo", |
|
'ActionName', T(704182154993, "Undo"), |
|
'ActionIcon', "CommonAssets/UI/Ged/undo.tga", |
|
'ActionToolbar', "main", |
|
'ActionShortcut', "Ctrl-Z", |
|
'OnAction', function (self, host, source, ...) |
|
host:Undo() |
|
end, |
|
}), |
|
PlaceObj('XTemplateAction', { |
|
'ActionId', "Redo", |
|
'ActionName', T(825249904824, "Redo"), |
|
'ActionIcon', "CommonAssets/UI/Ged/redo.tga", |
|
'ActionToolbar', "main", |
|
'ActionToolbarSplit', true, |
|
'ActionShortcut', "Ctrl-Y", |
|
'OnAction', function (self, host, source, ...) |
|
host:Redo() |
|
end, |
|
}), |
|
}), |
|
PlaceObj('XTemplateAction', { |
|
'comment', "in file menu", |
|
'ActionName', T(649145838532, "-----"), |
|
'ActionMenubar', "File", |
|
}), |
|
PlaceObj('XTemplateAction', { |
|
'comment', "in file menu", |
|
'ActionId', "BugReport", |
|
'ActionName', T(972701350134, "Report a bug"), |
|
'ActionIcon', "CommonAssets/UI/Ged/warning_button.png", |
|
'ActionMenubar', "File", |
|
'ActionToolbar', "main", |
|
'ActionShortcut', "Ctrl-F1", |
|
'OnAction', function (self, host, source, ...) |
|
CreateRealTimeThread(GedCreateXBugReportDlg) |
|
end, |
|
'replace_matching_id', true, |
|
}), |
|
PlaceObj('XTemplateAction', { |
|
'comment', "in file menu", |
|
'ActionId', "Help", |
|
'ActionName', T(124350738980, "Help"), |
|
'ActionIcon', "CommonAssets/UI/Ged/help.tga", |
|
'ActionMenubar', "File", |
|
'ActionToolbar', "main", |
|
'ActionShortcut', "Ctrl-H", |
|
'OnAction', function (self, host, source, ...) |
|
host:Op("GedOpModItemHelp", "root", host.idItems:GetSelection()) |
|
end, |
|
}), |
|
PlaceObj('XTemplateAction', { |
|
'comment', "in file menu", |
|
'ActionName', T(650063819060, "-----"), |
|
'ActionMenubar', "File", |
|
}), |
|
PlaceObj('XTemplateAction', { |
|
'comment', "in file menu", |
|
'ActionId', "Exit", |
|
'ActionName', T(874097506037, "Exit"), |
|
'ActionMenubar', "File", |
|
'OnAction', function (self, host, source, ...) |
|
host:Exit() |
|
end, |
|
}), |
|
PlaceObj('XTemplateAction', { |
|
'ActionId', "Cheats", |
|
'ActionName', T(501723542931, "Cheats"), |
|
'ActionMenubar', "main", |
|
'OnActionEffect', "popup", |
|
}, { |
|
PlaceObj('XTemplateTemplate', { |
|
'__template', "ModEditorCheats", |
|
}), |
|
}), |
|
PlaceObj('XTemplateAction', { |
|
'ActionId', "NewItem", |
|
'ActionName', T(727038768556, "New"), |
|
'ActionMenubar', "main", |
|
'OnActionEffect', "popup", |
|
'ActionContexts', { |
|
"ItemModPanelAction", |
|
}, |
|
}, { |
|
PlaceObj('XTemplateCode', { |
|
'run', function (self, parent, context) |
|
local submenus = { } |
|
local standalone_entries = {} |
|
for i, item in ipairs(context.mod_items) do |
|
local submenu = item.EditorSubmenu |
|
if not submenu or submenu == "" then |
|
table.insert(standalone_entries, item) |
|
goto continue |
|
end |
|
if not submenus[submenu] then |
|
local items = { item } |
|
submenus[submenu] = items |
|
table.insert(submenus, submenu) |
|
else |
|
table.insert(submenus[submenu], item) |
|
end |
|
::continue:: |
|
end |
|
table.sort(submenus) |
|
table.sort(standalone_entries, function (a, b) return a.Class:lower() < b.Class:lower() end) |
|
table.remove_entry(submenus, "Other") |
|
table.insert(submenus, "Other") |
|
for i, item in ipairs(standalone_entries) do |
|
local action = { |
|
ActionId = "new" .. item.Class, |
|
ActionName = Untranslated(item.EditorName or item.Class), |
|
ActionIcon = item.EditorIcon, |
|
ActionShortcut = item.EditorShortcut, |
|
ActionMenubar = "NewItem", |
|
OnAction = function(self, host, source) |
|
host:Op("GedOpNewModItem", "root", host.idItems:GetSelection(), item.Class) |
|
end, |
|
} |
|
XAction:new(action, parent, context, true) |
|
end |
|
for i, submenu in ipairs(submenus) do |
|
local items = submenus[submenu] |
|
local submenu_id = "new" .. submenu .. "Menu" |
|
local submenu_action = { |
|
ActionId = submenu_id, |
|
ActionName = Untranslated(submenu) .. "...", |
|
OnActionEffect = "popup", |
|
ActionMenubar = "NewItem", |
|
} |
|
XAction:new(submenu_action, parent, context, true) |
|
|
|
for i, item in ipairs(items) do |
|
local action = { |
|
ActionId = "new" .. item.Class, |
|
ActionName = Untranslated(item.EditorName or item.Class), |
|
ActionIcon = item.EditorIcon, |
|
ActionShortcut = item.EditorShortcut, |
|
ActionMenubar = submenu_id, |
|
OnAction = function(self, host, source) |
|
host:Op("GedOpNewModItem", "root", host.idItems:GetSelection(), item.Class) |
|
end, |
|
} |
|
XAction:new(action, parent, context, true) |
|
end |
|
end |
|
end, |
|
}), |
|
}), |
|
PlaceObj('XTemplateWindow', nil, { |
|
PlaceObj('XTemplateWindow', { |
|
'__context', function (parent, context) return "root" end, |
|
'__class', "GedTreePanel", |
|
'Id', "idItems", |
|
'Title', "Mod Items", |
|
'ActionContext', "ItemModPanelAction", |
|
'Format', "<EditorView>", |
|
'SelectionBind', "SelectedItem, SelectedObject", |
|
'OnSelectionChanged', function (self, selection) end, |
|
'OnCtrlClick', function (self, selection) end, |
|
'OnAltClick', function (self, selection) |
|
local gedApp = GetDialog(self) |
|
if not gedApp.mod_folder_supported then return end |
|
gedApp:Op("GedOpRelocateModItemToFolder", "root", selection, self:GetSelection()) |
|
end, |
|
'OnDoubleClick', function (self, selection) end, |
|
'DragAndDrop', true, |
|
'ChildActionContext', "ItemModPanelAction", |
|
}, { |
|
PlaceObj('XTemplateWindow', { |
|
'__condition', function (parent, context) return true end, |
|
'Id', "idBottomButtons", |
|
'ZOrder', 2, |
|
'Margins', box(7, 7, 7, 7), |
|
'HAlign', "right", |
|
'VAlign', "bottom", |
|
'LayoutMethod', "HList", |
|
'LayoutHSpacing', 7, |
|
}, { |
|
PlaceObj('XTemplateWindow', { |
|
'__class', "XButton", |
|
'RolloverTemplate', "GedToolbarRollover", |
|
'RolloverAnchor', "top", |
|
'RolloverText', T(149723581950, "Create new Mod Item"), |
|
'Id', "idNewModItem", |
|
'ZOrder', 2, |
|
'HAlign', "right", |
|
'VAlign', "center", |
|
'MinWidth', 45, |
|
'MinHeight', 45, |
|
'Background', RGBA(255, 255, 255, 0), |
|
'FocusedBackground', RGBA(255, 255, 255, 0), |
|
'RolloverBackground', RGBA(255, 255, 255, 0), |
|
'PressedBackground', RGBA(255, 255, 255, 0), |
|
}, { |
|
PlaceObj('XTemplateFunc', { |
|
'name', "OnSetRollover(self, rollover)", |
|
'func', function (self, rollover) |
|
XButton.OnSetRollover(self, rollover) |
|
if rollover then |
|
self[1]:SetBackground(RGB(128, 128, 128)) |
|
else |
|
self[1]:SetBackground(RGB(105, 105, 105)) |
|
end |
|
end, |
|
}), |
|
PlaceObj('XTemplateFunc', { |
|
'name', "OnPress(self)", |
|
'func', function (self) |
|
local items = {} |
|
local mod_items = GetDialog(self).mod_items |
|
for _, entry in ipairs(mod_items) do |
|
table.insert(items, { |
|
category = entry.EditorSubmenu or "", |
|
text = entry.EditorName, |
|
value = entry.Class, |
|
documentation = entry.Documentation, |
|
}) |
|
end |
|
|
|
CreateRealTimeThread(function() |
|
GedOpenCreateItemPopup(g_GedApp.idItems, "New Mod Item", items, self, function(class) |
|
if self.window_state == "destroying" then return end |
|
g_GedApp:Op("GedOpNewModItem", "root", g_GedApp.idItems:GetSelection(), class) |
|
end) |
|
end) |
|
end, |
|
}), |
|
PlaceObj('XTemplateWindow', { |
|
'__class', "XFrame", |
|
'Background', RGBA(105, 105, 105, 255), |
|
'Image', "CommonAssets/UI/round-frame-20", |
|
'FrameBox', box(9, 9, 9, 9), |
|
}), |
|
PlaceObj('XTemplateWindow', { |
|
'__class', "XImage", |
|
'Image', "CommonAssets/UI/Ged/Plus", |
|
}), |
|
}), |
|
PlaceObj('XTemplateWindow', { |
|
'__condition', function (parent, context) return GetDialog(parent).mod_folder_supported end, |
|
'__class', "XButton", |
|
'RolloverTemplate', "GedToolbarRollover", |
|
'RolloverAnchor', "top", |
|
'RolloverText', T(976724333601, "Add selected items to New Folder"), |
|
'Id', "idNewModFolder", |
|
'ZOrder', 2, |
|
'HAlign', "right", |
|
'VAlign', "center", |
|
'MinWidth', 45, |
|
'MinHeight', 45, |
|
'Background', RGBA(255, 255, 255, 0), |
|
'FocusedBackground', RGBA(255, 255, 255, 0), |
|
'RolloverBackground', RGBA(255, 255, 255, 0), |
|
'PressedBackground', RGBA(255, 255, 255, 0), |
|
}, { |
|
PlaceObj('XTemplateFunc', { |
|
'name', "OnSetRollover(self, rollover)", |
|
'func', function (self, rollover) |
|
XButton.OnSetRollover(self, rollover) |
|
if rollover then |
|
self[1]:SetBackground(RGB(128, 128, 128)) |
|
else |
|
self[1]:SetBackground(RGB(105, 105, 105)) |
|
end |
|
end, |
|
}), |
|
PlaceObj('XTemplateFunc', { |
|
'name', "OnPress(self)", |
|
'func', function (self) |
|
CreateRealTimeThread(function() |
|
local panel = g_GedApp.idItems |
|
g_GedApp:Op("GedOpAddModItemsToFolder", panel.context, panel:GetMultiSelection()) |
|
end) |
|
end, |
|
}), |
|
PlaceObj('XTemplateWindow', { |
|
'__class', "XFrame", |
|
'Background', RGBA(105, 105, 105, 255), |
|
'Image', "CommonAssets/UI/round-frame-20", |
|
'FrameBox', box(9, 9, 9, 9), |
|
}), |
|
PlaceObj('XTemplateWindow', { |
|
'__class', "XImage", |
|
'Image', "CommonAssets/UI/Ged/NewFolder", |
|
}), |
|
}), |
|
}), |
|
PlaceObj('XTemplateTemplate', { |
|
'__template', "GedStatusBar", |
|
'Background', RGBA(255, 0, 0, 255), |
|
'FormatFunc', "GedModStatusText", |
|
}), |
|
}), |
|
}), |
|
PlaceObj('XTemplateWindow', { |
|
'__context', function (parent, context) return "SelectedItem" end, |
|
'__class', "GedBindView", |
|
'BindView', "SubItems", |
|
'BindRoot', "root", |
|
'BindFunc', "GedDynamicItemsMenu", |
|
'ControlId', "idItems", |
|
'GetBindParams', function (self, control) return "ModItem", control:GetSelection() end, |
|
'OnViewChanged', function (self, value, control) |
|
RebuildSubItemsActions(control, value, "New Element", "main", "main") |
|
end, |
|
}), |
|
PlaceObj('XTemplateWindow', { |
|
'__class', "XPanelSizer", |
|
}), |
|
PlaceObj('XTemplateWindow', { |
|
'__context', function (parent, context) return "SelectedObject" end, |
|
'__class', "GedPropPanel", |
|
'Id', "idItemProperties", |
|
'MinWidth', 300, |
|
'Title', "Item Properties", |
|
'HideFirstCategory', true, |
|
'RootObjectBindName', "SelectedItem", |
|
}, { |
|
PlaceObj('XTemplateWindow', { |
|
'__context', function (parent, context) return "SelectedItem" end, |
|
'__class', "GedBindView", |
|
'BindView', "PresetEditor", |
|
'BindRoot', "SelectedItem", |
|
'BindFunc', "GedGetModItemDockedActions", |
|
'ControlId', "idPanelDockedButtons", |
|
'OnViewChanged', function (self, value, control) |
|
if not control then return end |
|
local visible = not not next(value) |
|
control:SetVisible(visible) |
|
local list = self:ResolveId("idList") |
|
list:SetContext(value, true) |
|
end, |
|
}), |
|
PlaceObj('XTemplateWindow', { |
|
'Id', "idPanelDockedButtons", |
|
'ZOrder', 2, |
|
'Margins', box(0, 3, 0, 0), |
|
'Dock', "bottom", |
|
'FoldWhenHidden', true, |
|
}, { |
|
PlaceObj('XTemplateWindow', { |
|
'__context', function (parent, context) |
|
return context |
|
end, |
|
'__class', "XContentTemplate", |
|
'Id', "idList", |
|
'ZOrder', 2, |
|
'Padding', box(15, 15, 15, 15), |
|
'HAlign', "center", |
|
'VAlign', "center", |
|
'LayoutMethod', "HWrap", |
|
'LayoutHSpacing', 15, |
|
'LayoutVSpacing', 15, |
|
'FoldWhenHidden', true, |
|
'OnContextUpdate', function (self, context, ...) |
|
if self.RespawnOnContext then |
|
if self.window_state == "open" then |
|
self:RespawnContent() |
|
end |
|
else |
|
local respawn_value = self:RespawnExpression(context) |
|
if rawget(self, "respawn_value") ~= respawn_value then |
|
self.respawn_value = respawn_value |
|
if self.window_state == "open" then |
|
self:RespawnContent() |
|
end |
|
end |
|
end |
|
end, |
|
}, { |
|
PlaceObj('XTemplateForEach', { |
|
'array', function (parent, context) |
|
if type(context) ~= "table" then return context end |
|
local result = {} |
|
for id, data in pairs(context) do |
|
table.insert(result, { |
|
id = id, name = data.name, |
|
rolloverText = data.rolloverText, |
|
op = data.op |
|
}) |
|
end |
|
return result |
|
end, |
|
'map', function (parent, context, array, i) |
|
return array and array[i] |
|
end, |
|
'__context', function (parent, context, item, i, n) |
|
return context |
|
end, |
|
'run_before', function (parent, context, item, i, n, last) |
|
|
|
end, |
|
'run_after', function (child, context, item, i, n, last) |
|
child:SetText(item.name) |
|
child:SetRolloverText(item.rolloverText) |
|
child:SetOnPress(function(child) |
|
local app = GetParentOfKind(child, "GedApp") |
|
local panel = app:ResolveId("idItems") |
|
if panel then |
|
app:Op(item.op, "SelectedItem") |
|
end |
|
end) |
|
end, |
|
}, { |
|
PlaceObj('XTemplateWindow', { |
|
'__class', "XTextButton", |
|
'RolloverTemplate', "GedToolbarRollover", |
|
'RolloverAnchor', "top", |
|
'Id', "idOpenInPresetEditorButton", |
|
'BorderWidth', 2, |
|
'Padding', box(2, 2, 2, 2), |
|
'HAlign', "center", |
|
}), |
|
}), |
|
}), |
|
}), |
|
}), |
|
}), |
|
}) |
|
|
|
|