chore(libs): sync Ace3 to coa-ace3 (WoWUIDev master @ 52e5f2c)
Bring every embedded Ace3 / CallbackHandler / LibStub copy in line with the canonical Exiles/coa-ace3 bundle so LibStub resolution is predictable across all Exiles forks regardless of which addons are enabled. Libraries updated in this fork: AceAddon-3.0 13 (5 → 13) AceConfig-3.0 3 (2 → 3) AceConfigCmd-3.0 14 (12 → 14) AceConfigDialog-3.0 92 (43 → 92) AceConfigRegistry-3.0 22 (11 → 22) AceConsole-3.0 7 AceDB-3.0 33 (19 → 33) AceDBOptions-3.0 15 (11 → 15) AceEvent-3.0 4 (3 → 4) AceGUI-3.0 41 (30 → 41) AceLocale-3.0 6 (2 → 6) AceTimer-3.0 17 (5 → 17) CallbackHandler-1.0 8 (3 → 8) LibStub 2
This commit is contained in:
@@ -1,219 +1,94 @@
|
||||
local AceGUI = LibStub("AceGUI-3.0")
|
||||
|
||||
-- Lua APIs
|
||||
local select, max = select, math.max
|
||||
|
||||
-- WoW APIs
|
||||
local CreateFrame, UIParent = CreateFrame, UIParent
|
||||
|
||||
-- Global vars/functions that we don't upvalue since they might get hooked, or upgraded
|
||||
-- List them here for Mikk's FindGlobals script
|
||||
-- GLOBALS: GameFontHighlightSmall
|
||||
|
||||
--------------------------
|
||||
-- Label --
|
||||
--------------------------
|
||||
do
|
||||
local Type = "InteractiveLabel"
|
||||
local Version = 6
|
||||
|
||||
local function OnAcquire(self)
|
||||
self:SetHeight(18)
|
||||
self:SetWidth(200)
|
||||
self:SetText("")
|
||||
self:SetImage(nil)
|
||||
self:SetColor()
|
||||
self:SetFontObject()
|
||||
self:SetHighlight()
|
||||
self:SetHighlightTexCoord()
|
||||
end
|
||||
|
||||
local function OnRelease(self)
|
||||
self:SetDisabled(false)
|
||||
self.frame:ClearAllPoints()
|
||||
self.frame:Hide()
|
||||
end
|
||||
|
||||
local function UpdateImageAnchor(self)
|
||||
local width = self.frame.width or self.frame:GetWidth() or 0
|
||||
local image = self.image
|
||||
local label = self.label
|
||||
local frame = self.frame
|
||||
local height
|
||||
|
||||
label:ClearAllPoints()
|
||||
image:ClearAllPoints()
|
||||
|
||||
if self.imageshown then
|
||||
local imagewidth = image:GetWidth()
|
||||
if (width - imagewidth) < 200 or (label:GetText() or "") == "" then
|
||||
--image goes on top centered when less than 200 width for the text, or if there is no text
|
||||
image:SetPoint("TOP",frame,"TOP",0,0)
|
||||
label:SetPoint("TOP",image,"BOTTOM",0,0)
|
||||
label:SetPoint("LEFT",frame,"LEFT",0,0)
|
||||
label:SetWidth(width)
|
||||
height = image:GetHeight() + label:GetHeight()
|
||||
else
|
||||
--image on the left
|
||||
local imageheight = image:GetHeight()
|
||||
local labelheight = label:GetHeight()
|
||||
--center image with label
|
||||
if imageheight > labelheight then
|
||||
image:SetPoint("TOPLEFT",frame,"TOPLEFT",0,0)
|
||||
label:SetPoint("LEFT",image,"RIGHT",0,0)
|
||||
else
|
||||
label:SetPoint("TOPLEFT",frame,"TOPLEFT",imagewidth,0)
|
||||
image:SetPoint("RIGHT",label,"LEFT",0,0)
|
||||
end
|
||||
label:SetWidth(width - imagewidth)
|
||||
height = max(imageheight, labelheight)
|
||||
end
|
||||
else
|
||||
--no image shown
|
||||
label:SetPoint("TOPLEFT",frame,"TOPLEFT",0,0)
|
||||
label:SetWidth(width)
|
||||
height = self.label:GetHeight()
|
||||
end
|
||||
|
||||
self.resizing = true
|
||||
self.frame:SetHeight(height)
|
||||
self.frame.height = height
|
||||
self.resizing = nil
|
||||
end
|
||||
|
||||
local function SetText(self, text)
|
||||
self.label:SetText(text or "")
|
||||
UpdateImageAnchor(self)
|
||||
end
|
||||
|
||||
local function SetColor(self, r, g, b)
|
||||
if not (r and g and b) then
|
||||
r, g, b = 1, 1, 1
|
||||
end
|
||||
self.label:SetVertexColor(r, g, b)
|
||||
end
|
||||
|
||||
local function OnWidthSet(self, width)
|
||||
if self.resizing then return end
|
||||
UpdateImageAnchor(self)
|
||||
end
|
||||
|
||||
local function SetImage(self, path, ...)
|
||||
local image = self.image
|
||||
image:SetTexture(path)
|
||||
|
||||
if image:GetTexture() then
|
||||
self.imageshown = true
|
||||
local n = select('#', ...)
|
||||
if n == 4 or n == 8 then
|
||||
image:SetTexCoord(...)
|
||||
end
|
||||
else
|
||||
self.imageshown = nil
|
||||
end
|
||||
UpdateImageAnchor(self)
|
||||
end
|
||||
|
||||
local function SetFont(self, font, height, flags)
|
||||
self.label:SetFont(font, height, flags)
|
||||
end
|
||||
|
||||
local function SetFontObject(self, font)
|
||||
self.label:SetFontObject(font or GameFontHighlightSmall)
|
||||
end
|
||||
|
||||
local function SetImageSize(self, width, height)
|
||||
self.image:SetWidth(width)
|
||||
self.image:SetHeight(height)
|
||||
UpdateImageAnchor(self)
|
||||
end
|
||||
|
||||
local function SetHighlight(self, ...)
|
||||
self.highlight:SetTexture(...)
|
||||
end
|
||||
|
||||
local function SetHighlightTexCoord(self, ...)
|
||||
if select('#', ...) >= 1 then
|
||||
self.highlight:SetTexCoord(...)
|
||||
else
|
||||
self.highlight:SetTexCoord(0, 1, 0, 1)
|
||||
end
|
||||
end
|
||||
|
||||
local function SetDisabled(self,disabled)
|
||||
self.disabled = disabled
|
||||
if disabled then
|
||||
self.frame:EnableMouse(false)
|
||||
self.label:SetTextColor(0.5, 0.5, 0.5)
|
||||
else
|
||||
self.frame:EnableMouse(true)
|
||||
self.label:SetTextColor(1, 1, 1)
|
||||
end
|
||||
end
|
||||
|
||||
local function OnEnter(this)
|
||||
this.obj.highlight:Show()
|
||||
this.obj:Fire("OnEnter")
|
||||
end
|
||||
|
||||
local function OnLeave(this)
|
||||
this.obj.highlight:Hide()
|
||||
this.obj:Fire("OnLeave")
|
||||
end
|
||||
|
||||
local function OnClick(this, ...)
|
||||
this.obj:Fire("OnClick", ...)
|
||||
AceGUI:ClearFocus()
|
||||
end
|
||||
|
||||
local function Constructor()
|
||||
local frame = CreateFrame("Frame",nil,UIParent)
|
||||
local self = {}
|
||||
self.type = Type
|
||||
|
||||
frame:EnableMouse(true)
|
||||
frame:SetScript("OnEnter", OnEnter)
|
||||
frame:SetScript("OnLeave", OnLeave)
|
||||
frame:SetScript("OnMouseDown", OnClick)
|
||||
|
||||
self.OnRelease = OnRelease
|
||||
self.OnAcquire = OnAcquire
|
||||
self.SetText = SetText
|
||||
self.SetColor = SetColor
|
||||
self.frame = frame
|
||||
self.OnWidthSet = OnWidthSet
|
||||
self.SetImage = SetImage
|
||||
self.SetImageSize = SetImageSize
|
||||
self.SetFont = SetFont
|
||||
self.SetFontObject = SetFontObject
|
||||
self.SetHighlight = SetHighlight
|
||||
self.SetHighlightTexCoord = SetHighlightTexCoord
|
||||
self.SetDisabled = SetDisabled
|
||||
frame.obj = self
|
||||
|
||||
frame:SetHeight(18)
|
||||
frame:SetWidth(200)
|
||||
local label = frame:CreateFontString(nil,"BACKGROUND","GameFontHighlightSmall")
|
||||
label:SetPoint("TOPLEFT",frame,"TOPLEFT",0,0)
|
||||
label:SetWidth(200)
|
||||
label:SetJustifyH("LEFT")
|
||||
label:SetJustifyV("TOP")
|
||||
self.label = label
|
||||
|
||||
local highlight = frame:CreateTexture(nil, "OVERLAY")
|
||||
highlight:SetTexture(nil)
|
||||
highlight:SetAllPoints()
|
||||
highlight:SetBlendMode("ADD")
|
||||
highlight:Hide()
|
||||
self.highlight = highlight
|
||||
|
||||
local image = frame:CreateTexture(nil,"BACKGROUND")
|
||||
self.image = image
|
||||
|
||||
AceGUI:RegisterAsWidget(self)
|
||||
return self
|
||||
end
|
||||
|
||||
AceGUI:RegisterWidgetType(Type,Constructor,Version)
|
||||
end
|
||||
|
||||
--[[-----------------------------------------------------------------------------
|
||||
InteractiveLabel Widget
|
||||
-------------------------------------------------------------------------------]]
|
||||
local Type, Version = "InteractiveLabel", 21
|
||||
local AceGUI = LibStub and LibStub("AceGUI-3.0", true)
|
||||
if not AceGUI or (AceGUI:GetWidgetVersion(Type) or 0) >= Version then return end
|
||||
|
||||
-- Lua APIs
|
||||
local select, pairs = select, pairs
|
||||
|
||||
--[[-----------------------------------------------------------------------------
|
||||
Scripts
|
||||
-------------------------------------------------------------------------------]]
|
||||
local function Control_OnEnter(frame)
|
||||
frame.obj:Fire("OnEnter")
|
||||
end
|
||||
|
||||
local function Control_OnLeave(frame)
|
||||
frame.obj:Fire("OnLeave")
|
||||
end
|
||||
|
||||
local function Label_OnClick(frame, button)
|
||||
frame.obj:Fire("OnClick", button)
|
||||
AceGUI:ClearFocus()
|
||||
end
|
||||
|
||||
--[[-----------------------------------------------------------------------------
|
||||
Methods
|
||||
-------------------------------------------------------------------------------]]
|
||||
local methods = {
|
||||
["OnAcquire"] = function(self)
|
||||
self:LabelOnAcquire()
|
||||
self:SetHighlight()
|
||||
self:SetHighlightTexCoord()
|
||||
self:SetDisabled(false)
|
||||
end,
|
||||
|
||||
-- ["OnRelease"] = nil,
|
||||
|
||||
["SetHighlight"] = function(self, ...)
|
||||
self.highlight:SetTexture(...)
|
||||
end,
|
||||
|
||||
["SetHighlightTexCoord"] = function(self, ...)
|
||||
local c = select("#", ...)
|
||||
if c == 4 or c == 8 then
|
||||
self.highlight:SetTexCoord(...)
|
||||
else
|
||||
self.highlight:SetTexCoord(0, 1, 0, 1)
|
||||
end
|
||||
end,
|
||||
|
||||
["SetDisabled"] = function(self,disabled)
|
||||
self.disabled = disabled
|
||||
if disabled then
|
||||
self.frame:EnableMouse(false)
|
||||
self.label:SetTextColor(0.5, 0.5, 0.5)
|
||||
else
|
||||
self.frame:EnableMouse(true)
|
||||
self.label:SetTextColor(1, 1, 1)
|
||||
end
|
||||
end
|
||||
}
|
||||
|
||||
--[[-----------------------------------------------------------------------------
|
||||
Constructor
|
||||
-------------------------------------------------------------------------------]]
|
||||
local function Constructor()
|
||||
-- create a Label type that we will hijack
|
||||
local label = AceGUI:Create("Label")
|
||||
|
||||
local frame = label.frame
|
||||
frame:EnableMouse(true)
|
||||
frame:SetScript("OnEnter", Control_OnEnter)
|
||||
frame:SetScript("OnLeave", Control_OnLeave)
|
||||
frame:SetScript("OnMouseDown", Label_OnClick)
|
||||
|
||||
local highlight = frame:CreateTexture(nil, "HIGHLIGHT")
|
||||
highlight:SetTexture(nil)
|
||||
highlight:SetAllPoints()
|
||||
highlight:SetBlendMode("ADD")
|
||||
|
||||
label.highlight = highlight
|
||||
label.type = Type
|
||||
label.LabelOnAcquire = label.OnAcquire
|
||||
for method, func in pairs(methods) do
|
||||
label[method] = func
|
||||
end
|
||||
|
||||
return label
|
||||
end
|
||||
|
||||
AceGUI:RegisterWidgetType(Type, Constructor, Version)
|
||||
|
||||
|
||||
Reference in New Issue
Block a user