Mercurial > wow > mailopener
view Libs/AceGUI-3.0/widgets/AceGUIContainer-DropDownGroup.lua @ 1:6f17035de058
MO will now request a server refresh when mail opening has finished, ignoring the timer.
(Collected Module) Fixed the time spent to only be displayed if it is being tracked.
The inventory full sound will properly be played again when your bags change.
| author | Zerotorescue |
|---|---|
| date | Sun, 05 Sep 2010 17:02:19 +0200 |
| parents | 823e33465b6e |
| children |
line wrap: on
line source
--[[----------------------------------------------------------------------------- DropdownGroup Container Container controlled by a dropdown on the top. -------------------------------------------------------------------------------]] local Type, Version = "DropdownGroup", 20 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 assert, pairs, type = assert, pairs, type -- WoW APIs local CreateFrame = CreateFrame --[[----------------------------------------------------------------------------- Scripts -------------------------------------------------------------------------------]] local function SelectedGroup(self, event, value) local group = self.parentgroup local status = group.status or group.localstatus status.selected = value self.parentgroup:Fire("OnGroupSelected", value) end --[[----------------------------------------------------------------------------- Methods -------------------------------------------------------------------------------]] local methods = { ["OnAcquire"] = function(self) self.dropdown:SetText("") self:SetDropdownWidth(200) self:SetTitle("") end, ["OnRelease"] = function(self) self.dropdown.list = nil self.status = nil for k in pairs(self.localstatus) do self.localstatus[k] = nil end end, ["SetTitle"] = function(self, title) self.titletext:SetText(title) self.dropdown.frame:ClearAllPoints() if title and title ~= "" then self.dropdown.frame:SetPoint("TOPRIGHT", -2, 0) else self.dropdown.frame:SetPoint("TOPLEFT", -1, 0) end end, ["SetGroupList"] = function(self,list) self.dropdown:SetList(list) end, ["SetStatusTable"] = function(self, status) assert(type(status) == "table") self.status = status end, ["SetGroup"] = function(self,group) self.dropdown:SetValue(group) local status = self.status or self.localstatus status.selected = group self:Fire("OnGroupSelected", group) end, ["OnWidthSet"] = function(self, width) local content = self.content local contentwidth = width - 26 if contentwidth < 0 then contentwidth = 0 end content:SetWidth(contentwidth) content.width = contentwidth end, ["OnHeightSet"] = function(self, height) local content = self.content local contentheight = height - 63 if contentheight < 0 then contentheight = 0 end content:SetHeight(contentheight) content.height = contentheight end, ["LayoutFinished"] = function(self, width, height) self:SetHeight((height or 0) + 63) end, ["SetDropdownWidth"] = function(self, width) self.dropdown:SetWidth(width) end } --[[----------------------------------------------------------------------------- Constructor -------------------------------------------------------------------------------]] local PaneBackdrop = { bgFile = "Interface\\ChatFrame\\ChatFrameBackground", edgeFile = "Interface\\Tooltips\\UI-Tooltip-Border", tile = true, tileSize = 16, edgeSize = 16, insets = { left = 3, right = 3, top = 5, bottom = 3 } } local function Constructor() local frame = CreateFrame("Frame") frame:SetHeight(100) frame:SetWidth(100) frame:SetFrameStrata("FULLSCREEN_DIALOG") local titletext = frame:CreateFontString(nil, "OVERLAY", "GameFontNormal") titletext:SetPoint("TOPLEFT", 4, -5) titletext:SetPoint("TOPRIGHT", -4, -5) titletext:SetJustifyH("LEFT") titletext:SetHeight(18) local dropdown = AceGUI:Create("Dropdown") dropdown.frame:SetParent(frame) dropdown.frame:SetFrameLevel(dropdown.frame:GetFrameLevel() + 2) dropdown:SetCallback("OnValueChanged", SelectedGroup) dropdown.frame:SetPoint("TOPLEFT", -1, 0) dropdown.frame:Show() dropdown:SetLabel("") local border = CreateFrame("Frame", nil, frame) border:SetPoint("TOPLEFT", 0, -26) border:SetPoint("BOTTOMRIGHT", 0, 3) border:SetBackdrop(PaneBackdrop) border:SetBackdropColor(0.1,0.1,0.1,0.5) border:SetBackdropBorderColor(0.4,0.4,0.4) --Container Support local content = CreateFrame("Frame", nil, border) content:SetPoint("TOPLEFT", 10, -10) content:SetPoint("BOTTOMRIGHT", -10, 10) local widget = { frame = frame, localstatus = {}, titletext = titletext, dropdown = dropdown, border = border, content = content, type = Type } for method, func in pairs(methods) do widget[method] = func end dropdown.parentgroup = widget return AceGUI:RegisterAsContainer(widget) end AceGUI:RegisterWidgetType(Type, Constructor, Version)
