Mercurial > wow > icu
comparison Libs/AceGUI-3.0/widgets/AceGUIContainer-InlineGroup.lua @ 0:98c6f55e6619
First commit
author | Xiiph |
---|---|
date | Sat, 05 Feb 2011 16:45:02 +0100 |
parents | |
children |
comparison
equal
deleted
inserted
replaced
-1:000000000000 | 0:98c6f55e6619 |
---|---|
1 --[[----------------------------------------------------------------------------- | |
2 InlineGroup Container | |
3 Simple container widget that creates a visible "box" with an optional title. | |
4 -------------------------------------------------------------------------------]] | |
5 local Type, Version = "InlineGroup", 20 | |
6 local AceGUI = LibStub and LibStub("AceGUI-3.0", true) | |
7 if not AceGUI or (AceGUI:GetWidgetVersion(Type) or 0) >= Version then return end | |
8 | |
9 -- Lua APIs | |
10 local pairs = pairs | |
11 | |
12 -- WoW APIs | |
13 local CreateFrame, UIParent = CreateFrame, UIParent | |
14 | |
15 --[[----------------------------------------------------------------------------- | |
16 Methods | |
17 -------------------------------------------------------------------------------]] | |
18 local methods = { | |
19 ["OnAcquire"] = function(self) | |
20 self:SetWidth(300) | |
21 self:SetHeight(100) | |
22 end, | |
23 | |
24 -- ["OnRelease"] = nil, | |
25 | |
26 ["SetTitle"] = function(self,title) | |
27 self.titletext:SetText(title) | |
28 end, | |
29 | |
30 | |
31 ["LayoutFinished"] = function(self, width, height) | |
32 if self.noAutoHeight then return end | |
33 self:SetHeight((height or 0) + 40) | |
34 end, | |
35 | |
36 ["OnWidthSet"] = function(self, width) | |
37 local content = self.content | |
38 local contentwidth = width - 20 | |
39 if contentwidth < 0 then | |
40 contentwidth = 0 | |
41 end | |
42 content:SetWidth(contentwidth) | |
43 content.width = contentwidth | |
44 end, | |
45 | |
46 ["OnHeightSet"] = function(self, height) | |
47 local content = self.content | |
48 local contentheight = height - 20 | |
49 if contentheight < 0 then | |
50 contentheight = 0 | |
51 end | |
52 content:SetHeight(contentheight) | |
53 content.height = contentheight | |
54 end | |
55 } | |
56 | |
57 --[[----------------------------------------------------------------------------- | |
58 Constructor | |
59 -------------------------------------------------------------------------------]] | |
60 local PaneBackdrop = { | |
61 bgFile = "Interface\\ChatFrame\\ChatFrameBackground", | |
62 edgeFile = "Interface\\Tooltips\\UI-Tooltip-Border", | |
63 tile = true, tileSize = 16, edgeSize = 16, | |
64 insets = { left = 3, right = 3, top = 5, bottom = 3 } | |
65 } | |
66 | |
67 local function Constructor() | |
68 local frame = CreateFrame("Frame", nil, UIParent) | |
69 frame:SetFrameStrata("FULLSCREEN_DIALOG") | |
70 | |
71 local titletext = frame:CreateFontString(nil, "OVERLAY", "GameFontNormal") | |
72 titletext:SetPoint("TOPLEFT", 14, 0) | |
73 titletext:SetPoint("TOPRIGHT", -14, 0) | |
74 titletext:SetJustifyH("LEFT") | |
75 titletext:SetHeight(18) | |
76 | |
77 local border = CreateFrame("Frame", nil, frame) | |
78 border:SetPoint("TOPLEFT", 0, -17) | |
79 border:SetPoint("BOTTOMRIGHT", -1, 3) | |
80 border:SetBackdrop(PaneBackdrop) | |
81 border:SetBackdropColor(0.1, 0.1, 0.1, 0.5) | |
82 border:SetBackdropBorderColor(0.4, 0.4, 0.4) | |
83 | |
84 --Container Support | |
85 local content = CreateFrame("Frame", nil, border) | |
86 content:SetPoint("TOPLEFT", 10, -10) | |
87 content:SetPoint("BOTTOMRIGHT", -10, 10) | |
88 | |
89 local widget = { | |
90 frame = frame, | |
91 content = content, | |
92 titletext = titletext, | |
93 type = Type | |
94 } | |
95 for method, func in pairs(methods) do | |
96 widget[method] = func | |
97 end | |
98 | |
99 return AceGUI:RegisterAsContainer(widget) | |
100 end | |
101 | |
102 AceGUI:RegisterWidgetType(Type, Constructor, Version) |