Mercurial > wow > askmrrobot
diff Libs/AceGUI-3.0/widgets/AceGUIContainer-InlineGroup.lua @ 57:01b63b8ed811 v21
total rewrite to version 21
author | yellowfive |
---|---|
date | Fri, 05 Jun 2015 11:05:15 -0700 |
parents | |
children |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Libs/AceGUI-3.0/widgets/AceGUIContainer-InlineGroup.lua Fri Jun 05 11:05:15 2015 -0700 @@ -0,0 +1,103 @@ +--[[----------------------------------------------------------------------------- +InlineGroup Container +Simple container widget that creates a visible "box" with an optional title. +-------------------------------------------------------------------------------]] +local Type, Version = "InlineGroup", 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 pairs = pairs + +-- WoW APIs +local CreateFrame, UIParent = CreateFrame, UIParent + +--[[----------------------------------------------------------------------------- +Methods +-------------------------------------------------------------------------------]] +local methods = { + ["OnAcquire"] = function(self) + self:SetWidth(300) + self:SetHeight(100) + self:SetTitle("") + end, + + -- ["OnRelease"] = nil, + + ["SetTitle"] = function(self,title) + self.titletext:SetText(title) + end, + + + ["LayoutFinished"] = function(self, width, height) + if self.noAutoHeight then return end + self:SetHeight((height or 0) + 40) + end, + + ["OnWidthSet"] = function(self, width) + local content = self.content + local contentwidth = width - 20 + 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 - 20 + if contentheight < 0 then + contentheight = 0 + end + content:SetHeight(contentheight) + content.height = contentheight + 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", nil, UIParent) + frame:SetFrameStrata("FULLSCREEN_DIALOG") + + local titletext = frame:CreateFontString(nil, "OVERLAY", "GameFontNormal") + titletext:SetPoint("TOPLEFT", 14, 0) + titletext:SetPoint("TOPRIGHT", -14, 0) + titletext:SetJustifyH("LEFT") + titletext:SetHeight(18) + + local border = CreateFrame("Frame", nil, frame) + border:SetPoint("TOPLEFT", 0, -17) + border:SetPoint("BOTTOMRIGHT", -1, 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, + content = content, + titletext = titletext, + type = Type + } + for method, func in pairs(methods) do + widget[method] = func + end + + return AceGUI:RegisterAsContainer(widget) +end + +AceGUI:RegisterWidgetType(Type, Constructor, Version)