forked from Bastion/Bastion
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
88 lines
2.2 KiB
88 lines
2.2 KiB
2 years ago
|
--- @type StdUi
|
||
|
local StdUi = LibStub and LibStub('StdUi', true);
|
||
|
if not StdUi then
|
||
|
return
|
||
|
end
|
||
|
|
||
|
local module, version = 'Label', 3;
|
||
|
if not StdUi:UpgradeNeeded(module, version) then return end;
|
||
|
|
||
|
----------------------------------------------------
|
||
|
--- FontString
|
||
|
----------------------------------------------------
|
||
|
|
||
|
local FontStringMethods = {
|
||
|
SetFontSize = function(self, newSize)
|
||
|
self:SetFont(self:GetFont(), newSize);
|
||
|
end
|
||
|
}
|
||
|
|
||
|
--- @return FontString
|
||
|
function StdUi:FontString(parent, text, inherit)
|
||
|
local fs = parent:CreateFontString(nil, self.config.font.strata, inherit or 'GameFontNormal');
|
||
|
|
||
|
fs:SetText(text);
|
||
|
fs:SetJustifyH('LEFT');
|
||
|
fs:SetJustifyV('MIDDLE');
|
||
|
|
||
|
for k, v in pairs(FontStringMethods) do
|
||
|
fs[k] = v;
|
||
|
end
|
||
|
|
||
|
return fs;
|
||
|
end
|
||
|
|
||
|
----------------------------------------------------
|
||
|
--- Label
|
||
|
----------------------------------------------------
|
||
|
|
||
|
--- @return FontString
|
||
|
function StdUi:Label(parent, text, size, inherit, width, height)
|
||
|
local fs = self:FontString(parent, text, inherit);
|
||
|
if size then
|
||
|
fs:SetFontSize(size);
|
||
|
end
|
||
|
|
||
|
self:SetTextColor(fs, 'normal');
|
||
|
self:SetObjSize(fs, width, height);
|
||
|
|
||
|
return fs;
|
||
|
end
|
||
|
|
||
|
----------------------------------------------------
|
||
|
--- Header
|
||
|
----------------------------------------------------
|
||
|
|
||
|
--- @return FontString
|
||
|
function StdUi:Header(parent, text, size, inherit, width, height)
|
||
|
local fs = self:Label(parent, text, size, inherit or 'GameFontNormalLarge', width, height);
|
||
|
|
||
|
self:SetTextColor(fs, 'header');
|
||
|
|
||
|
return fs;
|
||
|
end
|
||
|
|
||
|
----------------------------------------------------
|
||
|
--- AddLabel
|
||
|
----------------------------------------------------
|
||
|
|
||
|
--- @return FontString
|
||
|
function StdUi:AddLabel(parent, object, text, labelPosition, labelWidth)
|
||
|
local labelHeight = (self.config.font.size) + 4;
|
||
|
local label = self:Label(parent, text, self.config.font.size, nil, labelWidth, labelHeight);
|
||
|
|
||
|
if labelPosition == 'TOP' or labelPosition == nil then
|
||
|
self:GlueAbove(label, object, 0, 4, 'LEFT');
|
||
|
elseif labelPosition == 'RIGHT' then
|
||
|
self:GlueRight(label, object, 4, 0);
|
||
|
else -- labelPosition == 'LEFT'
|
||
|
label:SetWidth(labelWidth or label:GetStringWidth())
|
||
|
self:GlueLeft(label, object, -4, 0);
|
||
|
end
|
||
|
|
||
|
object.label = label;
|
||
|
|
||
|
return label;
|
||
|
end
|
||
|
|
||
|
StdUi:RegisterModule(module, version);
|