Mercurial > wow > itemauditor
diff Libs/AceGUI-3.0/widgets/AceGUIWidget-BlizOptionsGroup.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-BlizOptionsGroup.lua Thu May 20 19:22:19 2010 -0700 @@ -0,0 +1,153 @@ +local AceGUI = LibStub("AceGUI-3.0") + + +------------- +-- Widgets -- +------------- +--[[ + Widgets must provide the following functions + Acquire() - Called when the object is aquired, should set everything to a default hidden state + Release() - Called when the object is Released, should remove any anchors and hide the Widget + + And the following members + frame - the frame or derivitive object that will be treated as the widget for size and anchoring purposes + type - the type of the object, same as the name given to :RegisterWidget() + + Widgets contain a table called userdata, this is a safe place to store data associated with the wigdet + It will be cleared automatically when a widget is released + Placing values directly into a widget object should be avoided + + If the Widget can act as a container for other Widgets the following + content - frame or derivitive that children will be anchored to + + The Widget can supply the following Optional Members + + +]] + +---------------------------------- +-- Blizzard Options Group -- +---------------------------------- +--[[ + Group Designed to be added to the bliz interface options panel +]] + +-- WoW APIs +local CreateFrame = CreateFrame + +do + local Type = "BlizOptionsGroup" + local Version = 10 + + local function OnAcquire(self) + + end + + local function OnRelease(self) + self.frame:ClearAllPoints() + self.frame:Hide() + self:SetName() + end + + local function okay(this) + this.obj:Fire("okay") + end + + local function cancel(this) + this.obj:Fire("cancel") + end + + local function defaults(this) + this.obj:Fire("defaults") + end + + local function SetName(self, name, parent) + self.frame.name = name + self.frame.parent = parent + end + + local function OnShow(this) + this.obj:Fire("OnShow") + end + + local function OnHide(this) + this.obj:Fire("OnHide") + end + + local function OnWidthSet(self, width) + local content = self.content + local contentwidth = width - 63 + if contentwidth < 0 then + contentwidth = 0 + end + content:SetWidth(contentwidth) + content.width = contentwidth + end + + + local function OnHeightSet(self, height) + local content = self.content + local contentheight = height - 26 + if contentheight < 0 then + contentheight = 0 + end + content:SetHeight(contentheight) + content.height = contentheight + end + + local function SetTitle(self, title) + local content = self.content + content:ClearAllPoints() + if not title or title == "" then + content:SetPoint("TOPLEFT",self.frame,"TOPLEFT",10,-10) + self.label:SetText("") + else + content:SetPoint("TOPLEFT",self.frame,"TOPLEFT",10,-40) + self.label:SetText(title) + end + content:SetPoint("BOTTOMRIGHT",self.frame,"BOTTOMRIGHT",-10,10) + end + + local function Constructor() + local frame = CreateFrame("Frame") + local self = {} + self.type = Type + + self.OnRelease = OnRelease + self.OnAcquire = OnAcquire + self.frame = frame + self.SetName = SetName + + self.OnWidthSet = OnWidthSet + self.OnHeightSet = OnHeightSet + self.SetTitle = SetTitle + + frame.obj = self + frame.okay = okay + frame.cancel = cancel + frame.defaults = defaults + + frame:Hide() + frame:SetScript("OnHide",OnHide) + frame:SetScript("OnShow",OnShow) + + local label = frame:CreateFontString(nil,"OVERLAY","GameFontNormalLarge") + self.label = label + label:SetPoint("TOPLEFT", frame, "TOPLEFT", 10, -15) + label:SetPoint("BOTTOMRIGHT", frame, "TOPRIGHT", 10, -45) + label:SetJustifyH("LEFT") + label:SetJustifyV("TOP") + + --Container Support + local content = CreateFrame("Frame",nil,frame) + self.content = content + content.obj = self + content:SetPoint("TOPLEFT",frame,"TOPLEFT",15,-10) + content:SetPoint("BOTTOMRIGHT",frame,"BOTTOMRIGHT",-10,10) + + AceGUI:RegisterAsContainer(self) + return self + end + + AceGUI:RegisterWidgetType(Type,Constructor,Version) +end