|
farmbuyer@1
|
1 local nametag, addon = ...
|
|
farmbuyer@1
|
2
|
|
farmbuyer@1
|
3 addon.defaults = {
|
|
farmbuyer@1
|
4 profile = {
|
|
farmbuyer@1
|
5 enable = true,
|
|
farmbuyer@1
|
6 guildcontrol = true,
|
|
farmbuyer@1
|
7 },
|
|
farmbuyer@1
|
8 }
|
|
farmbuyer@1
|
9
|
|
farmbuyer@1
|
10
|
|
farmbuyer@1
|
11 addon.options = {
|
|
farmbuyer@1
|
12 name = "",
|
|
farmbuyer@1
|
13 type = 'group',
|
|
farmbuyer@1
|
14 childGroups = 'tab',
|
|
farmbuyer@1
|
15 handler = addon, -- functions listed as strings called as addon:func
|
|
farmbuyer@1
|
16 get = "GetOption",
|
|
farmbuyer@1
|
17 set = "SetOption",
|
|
farmbuyer@1
|
18 args = {
|
|
farmbuyer@1
|
19 general = {
|
|
farmbuyer@1
|
20 name = "General",
|
|
farmbuyer@1
|
21 desc = "General options",
|
|
farmbuyer@1
|
22 type = 'group',
|
|
farmbuyer@1
|
23 order = 10,
|
|
farmbuyer@1
|
24 args = {
|
|
farmbuyer@1
|
25 version = {
|
|
farmbuyer@1
|
26 --name = filled in during OnInit
|
|
farmbuyer@1
|
27 type = 'description',
|
|
farmbuyer@1
|
28 fontSize = "large",
|
|
farmbuyer@1
|
29 cmdHidden = true,
|
|
farmbuyer@1
|
30 width = 'full',
|
|
farmbuyer@1
|
31 order = 1,
|
|
farmbuyer@1
|
32 },
|
|
farmbuyer@1
|
33 enable = {
|
|
farmbuyer@1
|
34 name = "Enable",
|
|
farmbuyer@1
|
35 desc = "Use this addon",
|
|
farmbuyer@1
|
36 type = 'toggle',
|
|
farmbuyer@1
|
37 arg = "ToggleEnable",
|
|
farmbuyer@1
|
38 order = 5,
|
|
farmbuyer@1
|
39 },
|
|
farmbuyer@1
|
40 guildcontrol = {
|
|
farmbuyer@1
|
41 name = "Guild Control for non-GMs",
|
|
farmbuyer@1
|
42 desc = [[Make the grayed-out Guild Control button activate this addon instead.]],
|
|
farmbuyer@1
|
43 type = 'toggle',
|
|
farmbuyer@1
|
44 order = 10,
|
|
farmbuyer@1
|
45 },
|
|
farmbuyer@1
|
46 break1 = {
|
|
farmbuyer@1
|
47 name = '',
|
|
farmbuyer@1
|
48 type = 'description',
|
|
farmbuyer@1
|
49 cmdHidden = true,
|
|
farmbuyer@1
|
50 width = 'full',
|
|
farmbuyer@1
|
51 order = 14,
|
|
farmbuyer@1
|
52 },
|
|
farmbuyer@1
|
53 popup = {
|
|
farmbuyer@1
|
54 name = "/wrdw",
|
|
farmbuyer@1
|
55 desc = "Toggle WRDW window",
|
|
farmbuyer@1
|
56 type = 'execute',
|
|
farmbuyer@1
|
57 func = function()
|
|
farmbuyer@1
|
58 InterfaceOptionsFrameCancel:Click()
|
|
farmbuyer@1
|
59 HideUIPanel(GameMenuFrame)
|
|
farmbuyer@1
|
60 addon:BuildWindow()
|
|
farmbuyer@1
|
61 end,
|
|
farmbuyer@1
|
62 order = 15,
|
|
farmbuyer@1
|
63 },
|
|
farmbuyer@1
|
64 },
|
|
farmbuyer@1
|
65 },
|
|
farmbuyer@1
|
66 --profiles = filled in OnInit
|
|
farmbuyer@1
|
67 },
|
|
farmbuyer@1
|
68 }
|
|
farmbuyer@1
|
69
|
|
farmbuyer@1
|
70
|
|
farmbuyer@1
|
71 -----------------------------------------------------------------------------
|
|
farmbuyer@1
|
72 -- other locals
|
|
farmbuyer@1
|
73 local AceGUI = LibStub("AceGUI-3.0")
|
|
farmbuyer@1
|
74 local st_rowheight = 25
|
|
farmbuyer@1
|
75 local st_displayed_rows = 15 --math.floor(366/st_rowheight)
|
|
farmbuyer@1
|
76 local sidetabs
|
|
farmbuyer@1
|
77 local incomplete
|
|
farmbuyer@1
|
78
|
|
farmbuyer@1
|
79 -- Remove children widgets without explicitly Release()'ing them.
|
|
farmbuyer@1
|
80 local function DisownChildren (container)
|
|
farmbuyer@1
|
81 for i,v in ipairs(container.children) do
|
|
farmbuyer@1
|
82 container.children[i] = nil
|
|
farmbuyer@1
|
83 v.frame:Hide()
|
|
farmbuyer@1
|
84 v.frame:ClearAllPoints()
|
|
farmbuyer@1
|
85 end
|
|
farmbuyer@1
|
86 end
|
|
farmbuyer@1
|
87
|
|
farmbuyer@1
|
88
|
|
farmbuyer@1
|
89 -----------------------------------------------------------------------------
|
|
farmbuyer@1
|
90 addon = LibStub("AceAddon-3.0"):NewAddon(addon, nametag,
|
|
farmbuyer@1
|
91 "AceConsole-3.0", "AceEvent-3.0")
|
|
farmbuyer@1
|
92
|
|
farmbuyer@1
|
93 -- Thanks to jerry for the nifty arg idea.
|
|
farmbuyer@1
|
94 function addon:SetOption (info, value)
|
|
farmbuyer@1
|
95 local name = info[#info]
|
|
farmbuyer@1
|
96 self.db.profile[name] = value
|
|
farmbuyer@1
|
97 local arg = info.arg
|
|
farmbuyer@1
|
98 if arg then self[arg](self) end
|
|
farmbuyer@1
|
99 end
|
|
farmbuyer@1
|
100
|
|
farmbuyer@1
|
101 function addon:GetOption (info)
|
|
farmbuyer@1
|
102 local name = info[#info]
|
|
farmbuyer@1
|
103 return self.db.profile[name]
|
|
farmbuyer@1
|
104 end
|
|
farmbuyer@1
|
105
|
|
farmbuyer@1
|
106 function addon:OnInitialize()
|
|
farmbuyer@1
|
107 self.db = LibStub("AceDB-3.0"):New("wrdwDB", self.defaults, --[[Default=]]true)
|
|
farmbuyer@1
|
108
|
|
farmbuyer@1
|
109 local AceDBOptions = LibStub("AceDBOptions-3.0", true)
|
|
farmbuyer@1
|
110 if AceDBOptions then
|
|
farmbuyer@1
|
111 self.options.args.profiles = AceDBOptions:GetOptionsTable(self.db)
|
|
farmbuyer@1
|
112 self.options.args.profiles.order = 200
|
|
farmbuyer@1
|
113 end
|
|
farmbuyer@1
|
114
|
|
farmbuyer@1
|
115 self.options.args.general.args.version.name =
|
|
farmbuyer@1
|
116 "|cff30adffVersion " .. (GetAddOnMetadata(nametag, "Version") or "?") .. "|r"
|
|
farmbuyer@1
|
117 LibStub("AceConfig-3.0"):RegisterOptionsTable(nametag, self.options)
|
|
farmbuyer@1
|
118 self.optionsFrame = LibStub("AceConfigDialog-3.0"):AddToBlizOptions(nametag, "WhichRankDoesWhat")
|
|
farmbuyer@1
|
119 --self.optionsFrame.okay = function() pattern_editing_safe = false end
|
|
farmbuyer@1
|
120 --self.optionsFrame.refresh = self.optionsFrame.okay
|
|
farmbuyer@1
|
121 --self.optionsFrame.cancel = self.optionsFrame.okay
|
|
farmbuyer@1
|
122
|
|
farmbuyer@1
|
123 self:SetEnabledState(self.db.profile.enable)
|
|
farmbuyer@1
|
124 self.OnInitialize = nil
|
|
farmbuyer@1
|
125 end
|
|
farmbuyer@1
|
126
|
|
farmbuyer@1
|
127
|
|
farmbuyer@1
|
128 function addon:OnEnable()
|
|
farmbuyer@1
|
129 self:RegisterEvent("GUILD_RANKS_UPDATE")
|
|
farmbuyer@1
|
130 self:RegisterChatCommand("wrdw", "OnChatCommand")
|
|
farmbuyer@1
|
131
|
|
farmbuyer@1
|
132 if (not IsGuildLeader()) and self.db.profile.guildcontrol then
|
|
farmbuyer@1
|
133 local function onclick() addon:BuildWindow() end
|
|
farmbuyer@1
|
134 local function onenter(this) GameTooltip_AddNewbieTip(this, GUILDCONTROL, 1.0, 1.0, 1.0, "/wrdw", 1) end
|
|
farmbuyer@1
|
135 GuildFrame_LoadUI()
|
|
farmbuyer@1
|
136 hooksecurefunc("GuildFrame_CheckPermissions", function()
|
|
farmbuyer@1
|
137 GuildControlButton:Enable()
|
|
farmbuyer@1
|
138 GuildControlButton:SetScript("OnClick", onclick)
|
|
farmbuyer@1
|
139 GuildControlButton:SetScript("OnEnter", onenter)
|
|
farmbuyer@1
|
140 end)
|
|
farmbuyer@1
|
141 end
|
|
farmbuyer@1
|
142 end
|
|
farmbuyer@1
|
143
|
|
farmbuyer@1
|
144 function addon:OnDisable()
|
|
farmbuyer@1
|
145 self:Print([[You will need to relog or /reload to fully disable this addon.]])
|
|
farmbuyer@1
|
146 end
|
|
farmbuyer@1
|
147
|
|
farmbuyer@1
|
148 function addon:ToggleEnable()
|
|
farmbuyer@1
|
149 if self.db.profile.enable then
|
|
farmbuyer@1
|
150 self:Enable()
|
|
farmbuyer@1
|
151 else
|
|
farmbuyer@1
|
152 self:Disable()
|
|
farmbuyer@1
|
153 end
|
|
farmbuyer@1
|
154 end
|
|
farmbuyer@1
|
155
|
|
farmbuyer@1
|
156 function addon:OnChatCommand (input)
|
|
farmbuyer@1
|
157 if not input or input:trim() == "" then
|
|
farmbuyer@1
|
158 if self.display and self.display:IsShown() then
|
|
farmbuyer@1
|
159 self.display:Hide()
|
|
farmbuyer@1
|
160 else
|
|
farmbuyer@1
|
161 self:BuildWindow()
|
|
farmbuyer@1
|
162 end
|
|
farmbuyer@1
|
163 else
|
|
farmbuyer@1
|
164 --LibStub("AceConfigCmd-3.0").HandleCommand(self, "wrdw", nametag, input)
|
|
farmbuyer@1
|
165 LibStub("AceConfigDialog-3.0"):Open(nametag)
|
|
farmbuyer@1
|
166 end
|
|
farmbuyer@1
|
167 end
|
|
farmbuyer@1
|
168
|
|
farmbuyer@1
|
169
|
|
farmbuyer@1
|
170 -- Something somewhere has changed, redo the cache
|
|
farmbuyer@1
|
171 function addon:GUILD_RANKS_UPDATE()
|
|
farmbuyer@1
|
172 self.perms = nil
|
|
farmbuyer@1
|
173 if (not incomplete) and self.display and self.display:IsVisible() then
|
|
farmbuyer@1
|
174 self.display:SetStatusText([[|cffff1010Guild flags have changed!|r You must close and reopen this window to display the changes.]])
|
|
farmbuyer@1
|
175 end
|
|
farmbuyer@1
|
176 end
|
|
farmbuyer@1
|
177
|
|
farmbuyer@1
|
178
|
|
farmbuyer@1
|
179 function addon:BuildPerms()
|
|
farmbuyer@1
|
180 assert(UIParentLoadAddOn("Blizzard_GuildControlUI"))
|
|
farmbuyer@2
|
181 local check = "|TInterface\\Buttons\\UI-CheckBox-Check:"..(st_rowheight+5).."|t"
|
|
farmbuyer@1
|
182
|
|
farmbuyer@1
|
183 -- http://www.wowace.com/addons/lib-st/pages/set-data/minimal-dataset-format/
|
|
farmbuyer@1
|
184 local p,v = {}, {}
|
|
farmbuyer@1
|
185 for r = 1, GuildControlGetNumRanks() do
|
|
farmbuyer@1
|
186 GuildControlSetRank(r)
|
|
farmbuyer@1
|
187
|
|
farmbuyer@1
|
188 -- permissions
|
|
farmbuyer@1
|
189 local flags = { GuildControlGetRankFlags() }
|
|
farmbuyer@1
|
190 local row = { GuildControlGetRankName(r) }
|
|
farmbuyer@1
|
191 for c = 1, NUM_RANK_FLAGS do if c ~= 14 then
|
|
farmbuyer@1
|
192 local newcol = #row + 1
|
|
farmbuyer@1
|
193 if c == 15 or c == 16 then
|
|
farmbuyer@1
|
194 local val = GetGuildBankWithdrawGoldLimit()
|
|
farmbuyer@1
|
195 row[newcol] = flags[c] and ((val == -1) and check or val) or ""
|
|
farmbuyer@1
|
196 else
|
|
farmbuyer@1
|
197 row[newcol] = flags[c] and check or ""
|
|
farmbuyer@1
|
198 end
|
|
farmbuyer@1
|
199 end end
|
|
farmbuyer@1
|
200 p[r] = row
|
|
farmbuyer@1
|
201
|
|
farmbuyer@1
|
202 -- guild vault
|
|
farmbuyer@1
|
203 local banktabs = {}
|
|
farmbuyer@1
|
204 for t = 1, GetNumGuildBankTabs() do
|
|
farmbuyer@1
|
205 -- isViewable, canDeposit, editText, numWithdrawals
|
|
farmbuyer@1
|
206 banktabs[t] = { row[1], GetGuildBankTabPermissions(t) }
|
|
farmbuyer@1
|
207 banktabs[t][2] = banktabs[t][2] and check or ""
|
|
farmbuyer@1
|
208 banktabs[t][3] = banktabs[t][3] and check or ""
|
|
farmbuyer@1
|
209 banktabs[t][4] = banktabs[t][4] and check or ""
|
|
farmbuyer@1
|
210 local withdraw = banktabs[t][5]
|
|
farmbuyer@1
|
211 banktabs[t][5] = (withdraw == -1) and check or (withdraw == 0) and "" or withdraw
|
|
farmbuyer@1
|
212 end
|
|
farmbuyer@1
|
213 v[r] = banktabs
|
|
farmbuyer@1
|
214 end
|
|
farmbuyer@1
|
215 self.perms = p
|
|
farmbuyer@1
|
216 -- This one needs to be turned inside-out to match the data requirements
|
|
farmbuyer@1
|
217 self.vault = {}
|
|
farmbuyer@1
|
218 for t = 1, GetNumGuildBankTabs() do
|
|
farmbuyer@1
|
219 self.vault[t] = {}
|
|
farmbuyer@1
|
220 for r = 1, #v do
|
|
farmbuyer@1
|
221 self.vault[t][r] = v[r][t]
|
|
farmbuyer@1
|
222 end
|
|
farmbuyer@1
|
223 end
|
|
farmbuyer@1
|
224 end
|
|
farmbuyer@1
|
225
|
|
farmbuyer@1
|
226
|
|
farmbuyer@1
|
227 local function setstatus(txt) addon.display:SetStatusText(txt) end
|
|
farmbuyer@1
|
228
|
|
farmbuyer@1
|
229 local make_sidetab
|
|
farmbuyer@1
|
230 do
|
|
farmbuyer@1
|
231 local lastclicked
|
|
farmbuyer@1
|
232 local function OnClick (thistab)
|
|
farmbuyer@1
|
233 if thistab == lastclicked then return end
|
|
farmbuyer@1
|
234 for i = 1, #sidetabs do
|
|
farmbuyer@1
|
235 sidetabs[i]:SetChecked(false)
|
|
farmbuyer@1
|
236 end
|
|
farmbuyer@1
|
237 thistab:SetChecked(true) -- should be redundant, but just in case
|
|
farmbuyer@1
|
238 lastclicked = thistab
|
|
farmbuyer@1
|
239 if thistab.callback then
|
|
farmbuyer@1
|
240 thistab:callback(thistab:GetID())
|
|
farmbuyer@1
|
241 end
|
|
farmbuyer@1
|
242 end
|
|
farmbuyer@1
|
243
|
|
farmbuyer@1
|
244 -- Some magic numbers here wrt the index
|
|
farmbuyer@1
|
245 function make_sidetab (index, callback)
|
|
farmbuyer@1
|
246 if not sidetabs then
|
|
farmbuyer@1
|
247 sidetabs = {}
|
|
farmbuyer@1
|
248 end
|
|
farmbuyer@1
|
249
|
|
farmbuyer@1
|
250 local tab = CreateFrame("CheckButton", "WRDWTab"..index, addon.display.frame, "SpellBookSkillLineTabTemplate", index)
|
|
farmbuyer@1
|
251 if index > 1 then
|
|
farmbuyer@1
|
252 tab:SetPoint("TOPLEFT", sidetabs[index-1], "BOTTOMLEFT", 0, -17)
|
|
farmbuyer@1
|
253 else
|
|
farmbuyer@1
|
254 tab:SetNormalTexture("Interface\\SpellBook\\GuildSpellbooktabBG")
|
|
farmbuyer@1
|
255 tab.TabardEmblem:Show()
|
|
farmbuyer@1
|
256 tab.TabardIconFrame:Show()
|
|
farmbuyer@1
|
257 SetLargeGuildTabardTextures("player", tab.TabardEmblem, tab:GetNormalTexture(), tab.TabardIconFrame)
|
|
farmbuyer@1
|
258 tab:SetPoint("TOPLEFT", addon.display.frame, "TOPRIGHT", 0, -17)
|
|
farmbuyer@1
|
259 end
|
|
farmbuyer@1
|
260 tab:SetScript("OnClick", OnClick)
|
|
farmbuyer@1
|
261 --tab:SetChecked(false) -- is default
|
|
farmbuyer@1
|
262 tab:Show()
|
|
farmbuyer@1
|
263 tab.callback = callback
|
|
farmbuyer@1
|
264 sidetabs[index] = tab
|
|
farmbuyer@1
|
265 return tab
|
|
farmbuyer@1
|
266 end
|
|
farmbuyer@1
|
267
|
|
farmbuyer@1
|
268 function addon:BuildVaultTabs()
|
|
farmbuyer@1
|
269 incomplete = nil
|
|
farmbuyer@1
|
270 local offset = 1 -- number of tabs already made
|
|
farmbuyer@1
|
271 local function pick_a_tab (tab, id)
|
|
farmbuyer@1
|
272 DisownChildren(self.display)
|
|
farmbuyer@1
|
273 self.display:AddChild(self.vault_sts[id-offset])
|
|
farmbuyer@1
|
274 end
|
|
farmbuyer@1
|
275 for t = 1, GetNumGuildBankTabs() do
|
|
farmbuyer@1
|
276 local name, icon = GetGuildBankTabInfo(t)
|
|
farmbuyer@1
|
277 incomplete = incomplete or icon == [[Interface\Icons\INV_Misc_QuestionMark]]
|
|
farmbuyer@1
|
278 local tab = make_sidetab(t+offset, pick_a_tab)
|
|
farmbuyer@1
|
279 tab:SetNormalTexture(icon)
|
|
farmbuyer@1
|
280 tab.tooltip = name
|
|
farmbuyer@1
|
281 end
|
|
farmbuyer@1
|
282 if incomplete then
|
|
farmbuyer@1
|
283 setstatus[[Guild vault information is incomplete. Be closer to a vault, and give it some time. You may need to relog and/or open the guild roster/vault to force a client update.]]
|
|
farmbuyer@1
|
284 end
|
|
farmbuyer@1
|
285 end
|
|
farmbuyer@1
|
286 end
|
|
farmbuyer@1
|
287
|
|
farmbuyer@1
|
288
|
|
farmbuyer@1
|
289 local function st_OnEnter (rowFrame, cellFrame, data, cols, row, realrow, column, sttable, button, ...)
|
|
farmbuyer@1
|
290 if (row == nil) or (realrow == nil) then -- mouseover column header
|
|
farmbuyer@1
|
291 setstatus(cellFrame:GetText():gsub('\n',' '))
|
|
farmbuyer@1
|
292 return true
|
|
farmbuyer@1
|
293 end
|
|
farmbuyer@1
|
294 return false -- continue with default highlighting behavior
|
|
farmbuyer@1
|
295 end
|
|
farmbuyer@1
|
296 local function st_OnLeave (rowFrame, cellFrame, data, cols, row, realrow, column, sttable, button, ...)
|
|
farmbuyer@1
|
297 setstatus("")
|
|
farmbuyer@1
|
298 return false -- continue with default un-highlighting behavior
|
|
farmbuyer@1
|
299 end
|
|
farmbuyer@1
|
300 local function st_OnClick (rowFrame, cellFrame, data, cols, row, realrow, column, sttable, button, ...)
|
|
farmbuyer@1
|
301 if (row == nil) or (realrow == nil) then return true end -- click column header, suppress reordering
|
|
farmbuyer@1
|
302 -- more here?
|
|
farmbuyer@1
|
303 return true -- do not do anything further
|
|
farmbuyer@1
|
304 end
|
|
farmbuyer@1
|
305
|
|
farmbuyer@1
|
306
|
|
farmbuyer@1
|
307 function addon:BuildMainST (permissions, parent_frame)
|
|
farmbuyer@1
|
308 -- if this language uses a trailing colon, strip it
|
|
farmbuyer@1
|
309 local tmp = GUILDCONTROL_RANKLABEL:gsub(":$","")
|
|
farmbuyer@1
|
310 local cols = {{
|
|
farmbuyer@1
|
311 name = tmp,
|
|
farmbuyer@1
|
312 width = 10 * #tmp,
|
|
farmbuyer@1
|
313 }}
|
|
farmbuyer@1
|
314 for i = 1, NUM_RANK_FLAGS do if i ~= 14 then
|
|
farmbuyer@1
|
315 table.insert(cols,{
|
|
farmbuyer@1
|
316 name = _G['GUILDCONTROL_OPTION'..i],
|
|
farmbuyer@1
|
317 width = 62,
|
|
farmbuyer@1
|
318 })
|
|
farmbuyer@1
|
319 end end
|
|
farmbuyer@1
|
320
|
|
farmbuyer@1
|
321 local ST = LibStub("ScrollingTable"):CreateST (cols, st_displayed_rows, st_rowheight, nil, parent_frame)
|
|
farmbuyer@1
|
322 ST:Hide()
|
|
farmbuyer@1
|
323
|
|
farmbuyer@1
|
324 ST:SetData(permissions, --[[minimal format=]]true)
|
|
farmbuyer@1
|
325 ST:RegisterEvents{
|
|
farmbuyer@1
|
326 OnEnter = st_OnEnter,
|
|
farmbuyer@1
|
327 OnLeave = st_OnLeave,
|
|
farmbuyer@1
|
328 OnClick = st_OnClick,
|
|
farmbuyer@1
|
329 OnDoubleClick = st_OnClick,
|
|
farmbuyer@1
|
330 }
|
|
farmbuyer@1
|
331
|
|
farmbuyer@1
|
332 return ST
|
|
farmbuyer@1
|
333 end
|
|
farmbuyer@1
|
334
|
|
farmbuyer@1
|
335 function addon:BuildVaultSTs (permissions, parent_frame)
|
|
farmbuyer@1
|
336 self.vault_sts = {}
|
|
farmbuyer@1
|
337 local cols = {
|
|
farmbuyer@1
|
338 self.main_st.st.cols[1],
|
|
farmbuyer@1
|
339 { name = GUILDCONTROL_VIEW_TAB, width = 80 },
|
|
farmbuyer@1
|
340 { name = GUILDCONTROL_DEPOSIT_ITEMS, width = 80 },
|
|
farmbuyer@1
|
341 { name = GUILDCONTROL_UPDATE_TEXT, width = 80 },
|
|
farmbuyer@1
|
342 { name = GUILDCONTROL_WITHDRAW_ITEMS, width = 150 },
|
|
farmbuyer@1
|
343 }
|
|
farmbuyer@1
|
344
|
|
farmbuyer@1
|
345 for tab = 1, #permissions do
|
|
farmbuyer@1
|
346 local ST = LibStub("ScrollingTable"):CreateST (cols, st_displayed_rows, st_rowheight, nil, parent_frame)
|
|
farmbuyer@1
|
347 ST:Hide()
|
|
farmbuyer@1
|
348 ST:SetData(permissions[tab], --[[minimal format=]]true)
|
|
farmbuyer@1
|
349 ST:RegisterEvents{
|
|
farmbuyer@1
|
350 OnEnter = st_OnEnter,
|
|
farmbuyer@1
|
351 OnLeave = st_OnLeave,
|
|
farmbuyer@1
|
352 OnClick = st_OnClick,
|
|
farmbuyer@1
|
353 OnDoubleClick = st_OnClick,
|
|
farmbuyer@1
|
354 }
|
|
farmbuyer@1
|
355 self.vault_sts[tab] = ST
|
|
farmbuyer@1
|
356 end
|
|
farmbuyer@1
|
357 end
|
|
farmbuyer@1
|
358
|
|
farmbuyer@1
|
359
|
|
farmbuyer@1
|
360 function addon:BuildWindow()
|
|
farmbuyer@1
|
361 local need_tabs
|
|
farmbuyer@1
|
362 if self.display then
|
|
farmbuyer@1
|
363 self.display:Hide()
|
|
farmbuyer@1
|
364 else
|
|
farmbuyer@1
|
365 self.display = AceGUI:Create("Frame")
|
|
farmbuyer@1
|
366 self.display:SetTitle("Which Rank Does What")
|
|
farmbuyer@1
|
367 self.display:SetLayout("Fill")
|
|
farmbuyer@1
|
368 self.display:SetStatusTable{
|
|
farmbuyer@1
|
369 width = 1225,
|
|
farmbuyer@1
|
370 height = 500,
|
|
farmbuyer@1
|
371 }
|
|
farmbuyer@1
|
372 self.display:ApplyStatus()
|
|
farmbuyer@1
|
373 self.display:SetCallback("OnClose", function(_d)
|
|
farmbuyer@1
|
374 if incomplete or (not self.perms) then
|
|
farmbuyer@1
|
375 -- stuff changed while open
|
|
farmbuyer@1
|
376 self.perms = nil
|
|
farmbuyer@1
|
377 self.display = nil
|
|
farmbuyer@1
|
378 sidetabs = nil
|
|
farmbuyer@1
|
379 AceGUI:Release(_d)
|
|
farmbuyer@1
|
380 end
|
|
farmbuyer@1
|
381 end)
|
|
farmbuyer@1
|
382 if self.display.EnableResize then
|
|
farmbuyer@1
|
383 self.display:EnableResize(false)
|
|
farmbuyer@1
|
384 end
|
|
farmbuyer@1
|
385 need_tabs = true
|
|
farmbuyer@1
|
386 end
|
|
farmbuyer@1
|
387
|
|
farmbuyer@1
|
388 if not self.perms then
|
|
farmbuyer@1
|
389 need_tabs = true
|
|
farmbuyer@1
|
390 self:BuildPerms() -- creates self.perms and self.vault
|
|
farmbuyer@1
|
391 DisownChildren(self.display)
|
|
farmbuyer@1
|
392 -- Could be new rows, fewer rows, changed tickboxes... ugh, trying to
|
|
farmbuyer@1
|
393 -- update the scrolltable is a pain. Throw it out and start over.
|
|
farmbuyer@1
|
394 if self.main_st and self.main_st.st then
|
|
farmbuyer@1
|
395 self.main_st:Release()
|
|
farmbuyer@1
|
396 end
|
|
farmbuyer@1
|
397 if self.vault_sts then for i = 1, #self.vault_sts do
|
|
farmbuyer@1
|
398 if self.vault_sts[i] and self.vault_sts[i].st then
|
|
farmbuyer@1
|
399 self.vault_sts[i]:Release()
|
|
farmbuyer@1
|
400 end
|
|
farmbuyer@1
|
401 end end
|
|
farmbuyer@1
|
402 self.main_st = nil
|
|
farmbuyer@1
|
403 self.vault_sts = nil
|
|
farmbuyer@1
|
404 end
|
|
farmbuyer@1
|
405 if not self.main_st then
|
|
farmbuyer@1
|
406 local st = self:BuildMainST (self.perms, self.display.content)
|
|
farmbuyer@1
|
407 self.main_st = AceGUI:Create("lib-st"):WrapST(st)
|
|
farmbuyer@1
|
408 self.main_st.head_offset = 20
|
|
farmbuyer@1
|
409 --st_widget.tail_offset = 5
|
|
farmbuyer@1
|
410 self.display:AddChild(self.main_st)
|
|
farmbuyer@1
|
411
|
|
farmbuyer@1
|
412 self:BuildVaultSTs (self.vault, self.display.content)
|
|
farmbuyer@1
|
413 for i,st in ipairs(self.vault_sts) do
|
|
farmbuyer@1
|
414 self.vault_sts[i] = AceGUI:Create("lib-st"):WrapST(st)
|
|
farmbuyer@1
|
415 self.vault_sts[i].head_offset = 20
|
|
farmbuyer@1
|
416 end
|
|
farmbuyer@1
|
417 end
|
|
farmbuyer@1
|
418
|
|
farmbuyer@1
|
419 if need_tabs or incomplete then
|
|
farmbuyer@1
|
420 local maintab = make_sidetab(1, function (this, id)
|
|
farmbuyer@1
|
421 DisownChildren(self.display)
|
|
farmbuyer@1
|
422 self.display:AddChild(self.main_st)
|
|
farmbuyer@1
|
423 end)
|
|
farmbuyer@1
|
424 maintab.tooltip = [[Rank permissions]]
|
|
farmbuyer@1
|
425 maintab:SetChecked(true)
|
|
farmbuyer@1
|
426 self:BuildVaultTabs()
|
|
farmbuyer@1
|
427 end
|
|
farmbuyer@1
|
428
|
|
farmbuyer@1
|
429 self.display:Show()
|
|
farmbuyer@1
|
430 return self.display
|
|
farmbuyer@1
|
431 end
|
|
farmbuyer@1
|
432
|
|
farmbuyer@1
|
433 -- vim:noet
|