Code
Lua Code:
local addonName, addon = ...
local CELL_WIDTH = 400
local CELL_HEIGHT = 80
local NUM_CELLS = 2
local data = {}
local f = CreateFrame("Frame", "SimpleScrollFrameTableDemo", UIParent, "BasicFrameTemplateWithInset")
-- Create the button here
local btn = CreateFrame("Button", nil, UIParent, "UIPanelButtonTemplate")
local function updateData()
wipe(data)
for _, item in ipairs(addon.db) do
tinsert(data, {item.announce[GetLocale()], item.icon, item.name})
end
end
f:SetSize(CELL_WIDTH * NUM_CELLS + 80, 600)
f:SetPoint("CENTER")
f:Hide()
f:SetMovable(true)
f:SetScript("OnMouseDown", f.StartMoving)
f:SetScript("OnMouseUp", f.StopMovingOrSizing)
-- I added this OnHide script
f:SetScript("OnHide", function()
btn:Show()
end)
f.scrollFrame = CreateFrame("ScrollFrame", nil, f, "UIPanelScrollFrameTemplate")
f.scrollFrame:SetPoint("TOPLEFT", 12, -32)
f.scrollFrame:SetPoint("BOTTOMRIGHT", -34, 8)
f.scrollFrame.scrollChild = CreateFrame("Frame", nil, f.scrollFrame)
f.scrollFrame.scrollChild:SetSize(100, 100)
f.scrollFrame.scrollChild:SetPoint("TOPLEFT", 5, -5)
f.scrollFrame:SetScrollChild(f.scrollFrame.scrollChild)
local content = f.scrollFrame.scrollChild
content.rows = {}
local function updateList()
for i = 1, #data do
if not content.rows[i] then
local button = CreateFrame("Button", nil, content)
button:SetSize(CELL_WIDTH * NUM_CELLS, CELL_HEIGHT)
button:SetPoint("TOPLEFT", 0, -(i - 1) * CELL_HEIGHT)
button.columns = {}
button.columns[1] = button:CreateFontString(nil, "ARTWORK", "GameFontHighlight")
button.columns[1]:SetPoint("LEFT", (0) * CELL_WIDTH, 0)
button.columns[2] = button:CreateTexture()
button.columns[2]:SetPoint("LEFT", 410, 0, (1) * CELL_WIDTH, 0)
button.columns[3] = button:CreateFontString(nil, "ARTWORK", "GameFontHighlight")
button.columns[3]:SetPoint("LEFT", 480, 0, (2) * CELL_WIDTH, 0)
content.rows[i] = button
end
content.rows[i].columns[1]:SetText(data[i][1])
content.rows[i].columns[2]:SetTexture(data[i][2])
content.rows[i].columns[3]:SetText(data[i][3])
content.rows[i]:Show()
end
for i = #data + 1, #content.rows do
content.rows[i]:Hide()
end
end
-- Set your button options here
btn:SetPoint("CENTER")
btn:SetSize(100, 40)
btn:SetText("Click me")
btn:SetScript("OnClick", function(self, button, ...)
btn:SetMovable(true)
btn:RegisterForDrag('LeftButton')
btn:SetScript('OnDragStart', btn.StartMoving)
btn:SetScript('OnDragStop', btn.StopMovingOrSizing)
if (button == "RightButton" and btn:IsVisible()) then
btn:Hide()
end
updateData()
updateList()
f:Show()
end)
btn:RegisterForClicks("AnyUp")
SLASH_HUBB1 = "/hubb"
SlashCmdList["HUBB"] = function(msg)
updateData()
updateList()
f:Show()
end
A separate code is just a button
Lua Code:
btn:SetPoint("CENTER")
btn:SetSize(100, 40)
btn:SetText("Click me")
btn:SetScript("OnClick", function(self, button, ...)
btn:SetMovable(true)
btn:RegisterForDrag('LeftButton')
btn:SetScript('OnDragStart', btn.StartMoving)
btn:SetScript('OnDragStop', btn.StopMovingOrSizing)
if (button == "RightButton" and btn:IsVisible()) then
btn:Hide()
end
updateData()
updateList()
f:Show()
end)
btn:RegisterForClicks("AnyUp")
At the moment, the button returns to the center when using the command
/reload
Did I redo it correctly?
Lua Code:
btn:RegisterEvent("ADDON_LOADED")
btn:RegisterEvent("PLAYER_LOGOUT")
btn:SetScript("OnEvent", function(self, event, arg1)
if event == "ADDON_LOADED" and arg1 == "HaveWeMet" then
end
btn:SetPoint("CENTER")
btn:SetSize(100, 40)
btn:SetText("Click me")
btn:SetScript("OnClick", function(self, button, ...)
btn:SetMovable(true)
btn:RegisterForDrag('LeftButton')
btn:SetScript('OnDragStart', btn.StartMoving)
btn:SetScript('OnDragStop', btn.StopMovingOrSizing)
if (button == "RightButton" and btn:IsVisible()) then
btn:Hide()
end
updateData()
updateList()
f:Show()
end)
btn:RegisterForClicks("AnyUp")