64 γραμμές
2.0 KiB
Lua
64 γραμμές
2.0 KiB
Lua
--[[descriptionData = {
|
|
type = "description",
|
|
title = "My Title", --(optional)
|
|
text = "My description text to display.",
|
|
width = "full", --or "half" (optional)
|
|
reference = "MyAddonDescription" --(optional) unique global reference to control
|
|
} ]]
|
|
|
|
|
|
local widgetVersion = 6
|
|
local LAM = LibStub("LibAddonMenu-2.0")
|
|
if not LAM:RegisterWidget("description", widgetVersion) then return end
|
|
|
|
local wm = WINDOW_MANAGER
|
|
local tinsert = table.insert
|
|
|
|
local function UpdateValue(control)
|
|
if control.title then
|
|
control.title:SetText(control.data.title)
|
|
end
|
|
control.desc:SetText(control.data.text)
|
|
end
|
|
|
|
local MIN_HEIGHT = 26
|
|
function LAMCreateControl.description(parent, descriptionData, controlName)
|
|
local control = LAM.util.CreateBaseControl(parent, descriptionData, controlName)
|
|
local isHalfWidth = control.isHalfWidth
|
|
local width = control:GetWidth()
|
|
control:SetResizeToFitDescendents(true)
|
|
|
|
if isHalfWidth then
|
|
control:SetDimensionConstraints(width / 2, MIN_HEIGHT, width / 2, MIN_HEIGHT * 4)
|
|
else
|
|
control:SetDimensionConstraints(width, MIN_HEIGHT, width, MIN_HEIGHT * 4)
|
|
end
|
|
|
|
control.desc = wm:CreateControl(nil, control, CT_LABEL)
|
|
local desc = control.desc
|
|
desc:SetVerticalAlignment(TEXT_ALIGN_TOP)
|
|
desc:SetFont("ZoFontGame")
|
|
desc:SetText(descriptionData.text)
|
|
desc:SetWidth(isHalfWidth and width / 2 or width)
|
|
|
|
if descriptionData.title then
|
|
control.title = wm:CreateControl(nil, control, CT_LABEL)
|
|
local title = control.title
|
|
title:SetWidth(isHalfWidth and width / 2 or width)
|
|
title:SetAnchor(TOPLEFT, control, TOPLEFT)
|
|
title:SetFont("ZoFontWinH4")
|
|
title:SetText(descriptionData.title)
|
|
desc:SetAnchor(TOPLEFT, title, BOTTOMLEFT)
|
|
else
|
|
desc:SetAnchor(TOPLEFT)
|
|
end
|
|
|
|
control.UpdateValue = UpdateValue
|
|
|
|
if control.panel.data.registerForRefresh or control.panel.data.registerForDefaults then --if our parent window wants to refresh controls, then add this to the list
|
|
tinsert(control.panel.controlsToRefresh, control)
|
|
end
|
|
|
|
return control
|
|
|
|
end |