Some of that code is completely broken so I assumed you were posting example code and would make changes to the real code. You should be getting errors from BugGrabber/Bugsack . Install them if you haven't yet.
Code:
btn:SetScript("OnClick:, function(self, button, ...)
Is an unfinished script handler, no
end) .
Whereas
Code:
btn:SetScript('OnDragStop', btn.StopMovingOrSizing)
Is finished but then the next few lines look like they are supposed to be part of the OnDragStop script but end up being incomplete (it has an
end with no
function(...) to start the block and a
) after the
end with no SetScript to start the bracket pair.
Here is the code with a print to fill in the OnClick, a fix that may or may not be what you intend for the OnDragStop script and I commented out the
updateData() because addon.db isn't created in the code shown. Add it back if it is in another .lua file but the code as is should at least work for demonstrating the SetUserPlaced() saving the button position.
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() --commented out because addon.db hasn't been created... in the code at least
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
local btn = CreateFrame("Button", "Hubb777MovingButton", UIParent, "UIPanelButtonTemplate")
btn:SetPoint("CENTER")
btn:SetSize(100, 40)
btn:SetText("Click me")
btn:SetScript("OnClick", function(self, button, ...) print("Hi!") end)
btn:SetMovable(true)
btn:RegisterForDrag('LeftButton')
btn:SetUserPlaced(true)
btn:SetScript('OnDragStart', btn.StartMoving)
btn:SetScript('OnDragStop', function(self)
self:StopMovingOrSizing()
if (button == "RightButton" and self:IsVisible()) then
self:Hide()
end
-- updateData() --commented out because addon.db hasn't been created... in the code at least
updateList()
f:Show()
end)
btn:RegisterForClicks("AnyUp")
SLASH_HUBB1 = "/hubb"
SlashCmdList["HUBB"] = function(msg)
updateData()
updateList()
f:Show()
end