Originally Posted by Fizzlemizz
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.
|
Just like I said before. I took your other advice (in another forum thread), but since my knowledge of LUA is low, I probably didn't copy everything.
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, ...)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()
updateList()
f:Show()
end)
btn:RegisterForClicks("AnyUp")
SLASH_HUBB1 = "/hubb"
SlashCmdList["HUBB"] = function(msg)
updateData()
updateList()
f:Show()
end
This code almost works. It saves the position of the button
But the button does not display the table if I press the left mouse button. But if I press the left mouse button and shift and try to move the button, the table window turns on. What could be the problem?