Mercurial > wow > askmrrobot
diff Libs/AceGUI-3.0/widgets/AceGUIWidget-Icon.lua @ 57:01b63b8ed811 v21
total rewrite to version 21
author | yellowfive |
---|---|
date | Fri, 05 Jun 2015 11:05:15 -0700 |
parents | |
children | e635cd648e01 |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Libs/AceGUI-3.0/widgets/AceGUIWidget-Icon.lua Fri Jun 05 11:05:15 2015 -0700 @@ -0,0 +1,144 @@ +--[[----------------------------------------------------------------------------- +Icon Widget +-------------------------------------------------------------------------------]] +local Type, Version = "Icon", 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, print = select, pairs, print + +-- WoW APIs +local CreateFrame, UIParent, GetBuildInfo = CreateFrame, UIParent, GetBuildInfo + +--[[----------------------------------------------------------------------------- +Scripts +-------------------------------------------------------------------------------]] +local function Control_OnEnter(frame) + frame.obj:Fire("OnEnter") +end + +local function Control_OnLeave(frame) + frame.obj:Fire("OnLeave") +end + +local function Button_OnClick(frame, button) + frame.obj:Fire("OnClick", button) + AceGUI:ClearFocus() +end + +--[[----------------------------------------------------------------------------- +Methods +-------------------------------------------------------------------------------]] +local methods = { + ["OnAcquire"] = function(self) + self:SetHeight(110) + self:SetWidth(110) + self:SetLabel() + self:SetImage(nil) + self:SetImageSize(64, 64) + self:SetDisabled(false) + end, + + -- ["OnRelease"] = nil, + + ["SetLabel"] = function(self, text) + if text and text ~= "" then + self.label:Show() + self.label:SetText(text) + self:SetHeight(self.image:GetHeight() + 25) + else + self.label:Hide() + self:SetHeight(self.image:GetHeight() + 10) + end + end, + + ["SetImage"] = function(self, path, ...) + local image = self.image + image:SetTexture(path) + + if image:GetTexture() then + local n = select("#", ...) + if n == 4 or n == 8 then + image:SetTexCoord(...) + else + image:SetTexCoord(0, 1, 0, 1) + end + end + end, + + ["SetImageSize"] = function(self, width, height) + self.image:SetWidth(width) + self.image:SetHeight(height) + --self.frame:SetWidth(width + 30) + if self.label:IsShown() then + self:SetHeight(height + 25) + else + self:SetHeight(height + 10) + end + end, + + ["SetDisabled"] = function(self, disabled) + self.disabled = disabled + if disabled then + self.frame:Disable() + self.label:SetTextColor(0.5, 0.5, 0.5) + self.image:SetVertexColor(0.5, 0.5, 0.5, 0.5) + else + self.frame:Enable() + self.label:SetTextColor(1, 1, 1) + self.image:SetVertexColor(1, 1, 1, 1) + end + end +} + +--[[----------------------------------------------------------------------------- +Constructor +-------------------------------------------------------------------------------]] +local function Constructor() + local frame = CreateFrame("Button", nil, UIParent) + frame:Hide() + + frame:EnableMouse(true) + frame:SetScript("OnEnter", Control_OnEnter) + frame:SetScript("OnLeave", Control_OnLeave) + frame:SetScript("OnClick", Button_OnClick) + + local label = frame:CreateFontString(nil, "BACKGROUND", "GameFontHighlight") + label:SetPoint("BOTTOMLEFT") + label:SetPoint("BOTTOMRIGHT") + label:SetJustifyH("CENTER") + label:SetJustifyV("TOP") + label:SetHeight(18) + + local image = frame:CreateTexture(nil, "BACKGROUND") + image:SetWidth(64) + image:SetHeight(64) + image:SetPoint("TOP", 0, -5) + + local highlight = frame:CreateTexture(nil, "HIGHLIGHT") + highlight:SetAllPoints(image) + highlight:SetTexture("Interface\\PaperDollInfoFrame\\UI-Character-Tab-Highlight") + highlight:SetTexCoord(0, 1, 0.23, 0.77) + highlight:SetBlendMode("ADD") + + local widget = { + label = label, + image = image, + frame = frame, + type = Type + } + for method, func in pairs(methods) do + widget[method] = func + end + -- SetText is deprecated, but keep it around for a while. (say, to WoW 4.0) + if (select(4, GetBuildInfo()) < 40000) then + widget.SetText = widget.SetLabel + else + widget.SetText = function(self, ...) print("AceGUI-3.0-Icon: SetText is deprecated! Use SetLabel instead!"); self:SetLabel(...) end + end + + return AceGUI:RegisterAsWidget(widget) +end + +AceGUI:RegisterWidgetType(Type, Constructor, Version)