-
-
Notifications
You must be signed in to change notification settings - Fork 0
Home
Adrian L Lange edited this page Nov 6, 2022
·
6 revisions
local button = CreateFrame('Button', 'MyButton', UIParent)
button:SetSize(50, 50)
local texture = button:CreateTexture()
texture:SetAllPoints()
texture:SetColorTexture(0, 0, 1)
local function onPositionChanged(frame, layoutName, point, x, y)
-- from here you can save the position into a savedvariable
MyButtonDB[layoutName].point = point
MyButtonDB[layoutName].x = x
MyButtonDB[layoutName].y = y
end
local defaultPosition = {
point = 'CENTER',
x = 0,
y = 0,
}
local LEM = LibStub('LibEditMode')
LEM:AddFrame(button, onPositionChanged, defaultPosition)
-- additional (anonymous) callbacks
LEM:RegisterCallback('enter', function()
-- from here you can show your button if it was hidden
end)
LEM:RegisterCallback('exit', function()
-- from here you can hide your button if it's supposed to be hidden
end)
LEM:RegisterCallback('layout', function(layoutName)
-- this will be called every time the Edit Mode layout is changed (which also happens at login),
-- use it to load the saved button position from savedvariables and position it
if not MyButtonDB then
MyButtonDB = {}
end
if not MyButtonDB[layoutName] then
MyButtonDB[layoutName] = CopyTable(defaultPosition)
end
button:ClearAllPoints()
button:SetPoint(MyButtonDB[layoutName].point, MyButtonDB[layoutName].x, MyButtonDB[layoutName].y)
end)
LEM:AddFrameSettings({
{
name = 'Button scale',
kind = LEM.SettingType.Slider,
default = 1,
get = function(layoutName)
return MyButtonDB[layoutName].scale
end,
set = function(layoutName, value)
MyButtonDB[layoutName].scale = value
button:SetScale(value)
end,
minValue = 0.1,
maxValue = 5,
valueStep = 0.1,
formatter = function(value)
return FormatPercentage(value, true)
end,
}
})