WoWInterface SVN HealMeNow

[/] [trunk/] [Libs/] [AceGUI-3.0/] [widgets/] [AceGUIWidget-InlineGroup.lua] - Rev 3

Compare with Previous | Blame | View Log

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


]]

--------------------------
-- Inline Group          --
--------------------------
--[[
        This is a simple grouping container, no selection
        It will resize automatically to the height of the controls added to it
]]

do
        local Type = "InlineGroup"
        local Version = 4
        
        local function OnAcquire(self)
                self:SetWidth(300)
                self:SetHeight(100)
        end
        
        local function OnRelease(self)
                self.frame:ClearAllPoints()
                self.frame:Hide()
        end

        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 SetTitle(self,title)
                self.titletext:SetText(title)
        end


        local function LayoutFinished(self, width, height)
                self:SetHeight((height or 0) + 40)
        end
        
        local function OnWidthSet(self, width)
                local content = self.content
                local contentwidth = width - 20
                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 - 20
                if contentheight < 0 then
                        contentheight = 0
                end
                content:SetHeight(contentheight)
                content.height = contentheight
        end
        
        local function Constructor()
                local frame = CreateFrame("Frame",nil,UIParent)
                local self = {}
                self.type = Type

                self.OnRelease = OnRelease
                self.OnAcquire = OnAcquire
                self.SetTitle = SetTitle
                self.frame = frame
                self.LayoutFinished = LayoutFinished
                self.OnWidthSet = OnWidthSet
                self.OnHeightSet = OnHeightSet
                
                frame.obj = self
                
                frame:SetHeight(100)
                frame:SetWidth(100)
                frame:SetFrameStrata("FULLSCREEN_DIALOG")
                
                local titletext = frame:CreateFontString(nil,"OVERLAY","GameFontNormal")
                titletext:SetPoint("TOPLEFT",frame,"TOPLEFT",14,0)
                titletext:SetPoint("TOPRIGHT",frame,"TOPRIGHT",-14,0)
                titletext:SetJustifyH("LEFT")
                titletext:SetHeight(18)
                
                self.titletext = titletext      
                
                local border = CreateFrame("Frame",nil,frame)
                self.border = border
                border:SetPoint("TOPLEFT",frame,"TOPLEFT",3,-17)
                border:SetPoint("BOTTOMRIGHT",frame,"BOTTOMRIGHT",-3,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)
                self.content = content
                content.obj = self
                content:SetPoint("TOPLEFT",border,"TOPLEFT",10,-10)
                content:SetPoint("BOTTOMRIGHT",border,"BOTTOMRIGHT",-10,10)
                
                AceGUI:RegisterAsContainer(self)
                return self
        end
        
        AceGUI:RegisterWidgetType(Type,Constructor,Version)
end

Compare with Previous | Blame