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