Mercurial > wow > itemauditor
diff Libs/AceGUI-3.0/widgets/AceGUIWidget-Icon.lua @ 0:169f5211fc7f
First public revision.
At this point ItemAuditor watches mail for auctions sold or purchased, watches for buy/sell (money and 1 item type change) and conversions/tradeskills. Milling isn't working yet because there is too much time between the first event and the last event.
author | Asa Ayers <Asa.Ayers@Gmail.com> |
---|---|
date | Thu, 20 May 2010 19:22:19 -0700 |
parents | |
children |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Libs/AceGUI-3.0/widgets/AceGUIWidget-Icon.lua Thu May 20 19:22:19 2010 -0700 @@ -0,0 +1,149 @@ +local AceGUI = LibStub("AceGUI-3.0") + +-- Lua APIs +local select = select + +-- WoW APIs +local CreateFrame, UIParent = CreateFrame, UIParent + +-------------------------- +-- Label -- +-------------------------- +do + local Type = "Icon" + local Version = 11 + + local function OnAcquire(self) + self:SetHeight(110) + self:SetWidth(110) + self:SetLabel("") + self:SetImage(nil) + self:SetImageSize(64, 64) + end + + local function OnRelease(self) + self.frame:ClearAllPoints() + self.frame:Hide() + self:SetDisabled(false) + end + + local function SetLabel(self, text) + if text and text ~= "" then + self.label:Show() + self.label:SetText(text) + self.frame:SetHeight(self.image:GetHeight() + 25) + else + self.label:Hide() + self.frame:SetHeight(self.image:GetHeight() + 10) + end + 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(...) + else + image:SetTexCoord(0, 1, 0, 1) + end + else + self.imageshown = nil + end + end + + local function SetImageSize(self, width, height) + self.image:SetWidth(width) + self.image:SetHeight(height) + --self.frame:SetWidth(width + 30) + if self.label:IsShown() then + self.frame:SetHeight(height + 25) + else + self.frame:SetHeight(height + 10) + end + end + + local function SetDisabled(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) + end + end + + local function OnClick(this, button) + this.obj:Fire("OnClick", button) + AceGUI:ClearFocus() + 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 Constructor() + local frame = CreateFrame("Button",nil,UIParent) + local self = {} + self.type = Type + + self.OnRelease = OnRelease + self.OnAcquire = OnAcquire + self.SetLabel = SetLabel + self.frame = frame + self.SetImage = SetImage + self.SetImageSize = SetImageSize + + -- SetText should be deprecated along the way + self.SetText = SetLabel + self.SetDisabled = SetDisabled + + frame.obj = self + + frame:SetHeight(110) + frame:SetWidth(110) + frame:EnableMouse(true) + frame:SetScript("OnClick", OnClick) + frame:SetScript("OnLeave", OnLeave) + frame:SetScript("OnEnter", OnEnter) + local label = frame:CreateFontString(nil,"BACKGROUND","GameFontHighlight") + label:SetPoint("BOTTOMLEFT",frame,"BOTTOMLEFT",0,0) + label:SetPoint("BOTTOMRIGHT",frame,"BOTTOMRIGHT",0,0) + label:SetJustifyH("CENTER") + label:SetJustifyV("TOP") + label:SetHeight(18) + self.label = label + + local image = frame:CreateTexture(nil,"BACKGROUND") + self.image = image + image:SetWidth(64) + image:SetHeight(64) + image:SetPoint("TOP",frame,"TOP",0,-5) + + local highlight = frame:CreateTexture(nil,"OVERLAY") + self.highlight = highlight + highlight:SetAllPoints(image) + highlight:SetTexture("Interface\\PaperDollInfoFrame\\UI-Character-Tab-Highlight") + highlight:SetTexCoord(0,1,0.23,0.77) + highlight:SetBlendMode("ADD") + highlight:Hide() + + AceGUI:RegisterAsWidget(self) + return self + end + + AceGUI:RegisterWidgetType(Type,Constructor,Version) +end +