Mercurial > wow > itemauditor
comparison Libs/AceGUI-3.0/widgets/AceGUIWidget-DropDownGroup.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 |
comparison
equal
deleted
inserted
replaced
-1:000000000000 | 0:169f5211fc7f |
---|---|
1 local AceGUI = LibStub("AceGUI-3.0") | |
2 | |
3 -- Lua APIs | |
4 local assert, pairs, type = assert, pairs, type | |
5 | |
6 -- WoW APIs | |
7 local CreateFrame = CreateFrame | |
8 | |
9 --[[ | |
10 Selection Group controls all have an interface to select a group for thier contents | |
11 None of them will auto size to thier contents, and should usually be used with a scrollframe | |
12 unless you know that the controls will fit inside | |
13 ]] | |
14 | |
15 -------------------------- | |
16 -- Dropdown Group -- | |
17 -------------------------- | |
18 --[[ | |
19 Events : | |
20 OnGroupSelected | |
21 | |
22 ]] | |
23 do | |
24 local Type = "DropdownGroup" | |
25 local Version = 13 | |
26 | |
27 local function OnAcquire(self) | |
28 self.dropdown:SetText("") | |
29 self:SetDropdownWidth(200) | |
30 self:SetTitle("") | |
31 end | |
32 | |
33 local function OnRelease(self) | |
34 self.frame:ClearAllPoints() | |
35 self.frame:Hide() | |
36 self.dropdown.list = nil | |
37 self.status = nil | |
38 for k in pairs(self.localstatus) do | |
39 self.localstatus[k] = nil | |
40 end | |
41 end | |
42 | |
43 local PaneBackdrop = { | |
44 bgFile = "Interface\\ChatFrame\\ChatFrameBackground", | |
45 edgeFile = "Interface\\Tooltips\\UI-Tooltip-Border", | |
46 tile = true, tileSize = 16, edgeSize = 16, | |
47 insets = { left = 3, right = 3, top = 5, bottom = 3 } | |
48 } | |
49 | |
50 local function SetTitle(self,title) | |
51 self.titletext:SetText(title) | |
52 self.dropdown.frame:ClearAllPoints() | |
53 if title and title ~= "" then | |
54 self.dropdown.frame:SetPoint("TOPRIGHT", self.frame, "TOPRIGHT", -2, 0) | |
55 else | |
56 self.dropdown.frame:SetPoint("TOPLEFT", self.frame, "TOPLEFT", -1, 0) | |
57 end | |
58 end | |
59 | |
60 | |
61 local function SelectedGroup(self,event,value) | |
62 local group = self.parentgroup | |
63 local status = group.status or group.localstatus | |
64 status.selected = value | |
65 self.parentgroup:Fire("OnGroupSelected", value) | |
66 end | |
67 | |
68 local function SetGroupList(self,list) | |
69 self.dropdown:SetList(list) | |
70 end | |
71 | |
72 -- called to set an external table to store status in | |
73 local function SetStatusTable(self, status) | |
74 assert(type(status) == "table") | |
75 self.status = status | |
76 end | |
77 | |
78 local function SetGroup(self,group) | |
79 self.dropdown:SetValue(group) | |
80 local status = self.status or self.localstatus | |
81 status.selected = group | |
82 self:Fire("OnGroupSelected", group) | |
83 end | |
84 | |
85 local function OnWidthSet(self, width) | |
86 local content = self.content | |
87 local contentwidth = width - 26 | |
88 if contentwidth < 0 then | |
89 contentwidth = 0 | |
90 end | |
91 content:SetWidth(contentwidth) | |
92 content.width = contentwidth | |
93 end | |
94 | |
95 | |
96 local function OnHeightSet(self, height) | |
97 local content = self.content | |
98 local contentheight = height - 63 | |
99 if contentheight < 0 then | |
100 contentheight = 0 | |
101 end | |
102 content:SetHeight(contentheight) | |
103 content.height = contentheight | |
104 end | |
105 | |
106 local function LayoutFinished(self, width, height) | |
107 self:SetHeight((height or 0) + 63) | |
108 end | |
109 | |
110 local function SetDropdownWidth(self, width) | |
111 self.dropdown:SetWidth(width) | |
112 end | |
113 | |
114 local function Constructor() | |
115 local frame = CreateFrame("Frame") | |
116 local self = {} | |
117 self.type = Type | |
118 | |
119 self.OnRelease = OnRelease | |
120 self.OnAcquire = OnAcquire | |
121 | |
122 self.SetTitle = SetTitle | |
123 self.SetGroupList = SetGroupList | |
124 self.SetGroup = SetGroup | |
125 self.SetStatusTable = SetStatusTable | |
126 self.SetDropdownWidth = SetDropdownWidth | |
127 self.OnWidthSet = OnWidthSet | |
128 self.OnHeightSet = OnHeightSet | |
129 self.LayoutFinished = LayoutFinished | |
130 | |
131 self.localstatus = {} | |
132 | |
133 self.frame = frame | |
134 frame.obj = self | |
135 | |
136 frame:SetHeight(100) | |
137 frame:SetWidth(100) | |
138 frame:SetFrameStrata("FULLSCREEN_DIALOG") | |
139 | |
140 local titletext = frame:CreateFontString(nil, "OVERLAY", "GameFontNormal") | |
141 titletext:SetPoint("TOPLEFT", frame, "TOPLEFT", 4, -5) | |
142 titletext:SetPoint("TOPRIGHT", frame, "TOPRIGHT", -4, -5) | |
143 titletext:SetJustifyH("LEFT") | |
144 titletext:SetHeight(18) | |
145 self.titletext = titletext | |
146 | |
147 local dropdown = AceGUI:Create("Dropdown") | |
148 self.dropdown = dropdown | |
149 dropdown.frame:SetParent(frame) | |
150 dropdown.frame:SetFrameLevel(dropdown.frame:GetFrameLevel() + 2) | |
151 dropdown.parentgroup = self | |
152 dropdown:SetCallback("OnValueChanged",SelectedGroup) | |
153 dropdown.frame:SetPoint("TOPLEFT",frame,"TOPLEFT", -1, 0) | |
154 dropdown.frame:Show() | |
155 dropdown:SetLabel("") | |
156 | |
157 local border = CreateFrame("Frame",nil,frame) | |
158 self.border = border | |
159 border:SetPoint("TOPLEFT",frame,"TOPLEFT",0,-26) | |
160 border:SetPoint("BOTTOMRIGHT",frame,"BOTTOMRIGHT",0,3) | |
161 | |
162 border:SetBackdrop(PaneBackdrop) | |
163 border:SetBackdropColor(0.1,0.1,0.1,0.5) | |
164 border:SetBackdropBorderColor(0.4,0.4,0.4) | |
165 | |
166 --Container Support | |
167 local content = CreateFrame("Frame",nil,border) | |
168 self.content = content | |
169 content.obj = self | |
170 content:SetPoint("TOPLEFT",border,"TOPLEFT",10,-10) | |
171 content:SetPoint("BOTTOMRIGHT",border,"BOTTOMRIGHT",-10,10) | |
172 | |
173 AceGUI:RegisterAsContainer(self) | |
174 return self | |
175 end | |
176 | |
177 AceGUI:RegisterWidgetType(Type,Constructor,Version) | |
178 end |