annotate main.lua @ 7:332550e56fd2

Handle the case of a guildmaster opening the main window manually. This whole thing should be moved to LoD.
author Farmbuyer of US-Kilrogg <farmbuyer@gmail.com>
date Sat, 10 Dec 2011 19:12:10 +0000
parents e66407f67848
children e6382ba088c3
rev   line source
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@7 134 -- Ideally, most of this stuff wouldn't be done at load time at all; this
farmbuyer@7 135 -- whole addon should be LoD.
farmbuyer@1 136 if (not IsGuildLeader()) and self.db.profile.guildcontrol then
farmbuyer@1 137 local function onclick() addon:BuildWindow() end
farmbuyer@1 138 local function onenter(this) GameTooltip_AddNewbieTip(this, GUILDCONTROL, 1.0, 1.0, 1.0, "/wrdw", 1) end
farmbuyer@1 139 GuildFrame_LoadUI()
farmbuyer@4 140 if not NUM_RANK_FLAGS then
farmbuyer@4 141 UIParentLoadAddOn("Blizzard_GuildControlUI")
farmbuyer@4 142 end
farmbuyer@1 143 hooksecurefunc("GuildFrame_CheckPermissions", function()
farmbuyer@1 144 GuildControlButton:Enable()
farmbuyer@1 145 GuildControlButton:SetScript("OnClick", onclick)
farmbuyer@1 146 GuildControlButton:SetScript("OnEnter", onenter)
farmbuyer@1 147 end)
farmbuyer@1 148 end
farmbuyer@1 149 end
farmbuyer@1 150
farmbuyer@1 151 function addon:OnDisable()
farmbuyer@3 152 self:Print(L["You will need to relog or /reload to fully disable this addon."])
farmbuyer@1 153 end
farmbuyer@1 154
farmbuyer@1 155 function addon:ToggleEnable()
farmbuyer@1 156 if self.db.profile.enable then
farmbuyer@1 157 self:Enable()
farmbuyer@1 158 else
farmbuyer@1 159 self:Disable()
farmbuyer@1 160 end
farmbuyer@1 161 end
farmbuyer@1 162
farmbuyer@1 163 function addon:OnChatCommand (input)
farmbuyer@7 164 if not NUM_RANK_FLAGS then -- in case a GM didn't get it loaded earlier
farmbuyer@7 165 GuildFrame_LoadUI()
farmbuyer@7 166 UIParentLoadAddOn("Blizzard_GuildControlUI")
farmbuyer@7 167 end
farmbuyer@1 168 if not input or input:trim() == "" then
farmbuyer@1 169 if self.display and self.display:IsShown() then
farmbuyer@1 170 self.display:Hide()
farmbuyer@1 171 else
farmbuyer@1 172 self:BuildWindow()
farmbuyer@1 173 end
farmbuyer@1 174 else
farmbuyer@1 175 --LibStub("AceConfigCmd-3.0").HandleCommand(self, "wrdw", nametag, input)
farmbuyer@1 176 LibStub("AceConfigDialog-3.0"):Open(nametag)
farmbuyer@1 177 end
farmbuyer@1 178 end
farmbuyer@1 179
farmbuyer@1 180
farmbuyer@1 181 -- Something somewhere has changed, redo the cache
farmbuyer@3 182 do
farmbuyer@3 183 local text = '|cffff1010' .. L["Guild flags have changed!"] .. '|r' ..
farmbuyer@3 184 L["You must close and reopen this window to display the changes."]
farmbuyer@3 185 function addon:GUILD_RANKS_UPDATE()
farmbuyer@3 186 self.perms = nil
farmbuyer@3 187 if (not incomplete) and self.display and self.display:IsVisible() then
farmbuyer@3 188 self.display:SetStatusText(text)
farmbuyer@3 189 end
farmbuyer@1 190 end
farmbuyer@1 191 end
farmbuyer@1 192
farmbuyer@1 193
farmbuyer@1 194 function addon:BuildPerms()
farmbuyer@1 195 assert(UIParentLoadAddOn("Blizzard_GuildControlUI"))
farmbuyer@2 196 local check = "|TInterface\\Buttons\\UI-CheckBox-Check:"..(st_rowheight+5).."|t"
farmbuyer@1 197
farmbuyer@1 198 -- http://www.wowace.com/addons/lib-st/pages/set-data/minimal-dataset-format/
farmbuyer@1 199 local p,v = {}, {}
farmbuyer@1 200 for r = 1, GuildControlGetNumRanks() do
farmbuyer@1 201 GuildControlSetRank(r)
farmbuyer@1 202
farmbuyer@1 203 -- permissions
farmbuyer@1 204 local flags = { GuildControlGetRankFlags() }
farmbuyer@1 205 local row = { GuildControlGetRankName(r) }
farmbuyer@1 206 for c = 1, NUM_RANK_FLAGS do if c ~= 14 then
farmbuyer@1 207 local newcol = #row + 1
farmbuyer@1 208 if c == 15 or c == 16 then
farmbuyer@1 209 local val = GetGuildBankWithdrawGoldLimit()
farmbuyer@1 210 row[newcol] = flags[c] and ((val == -1) and check or val) or ""
farmbuyer@1 211 else
farmbuyer@1 212 row[newcol] = flags[c] and check or ""
farmbuyer@1 213 end
farmbuyer@1 214 end end
farmbuyer@1 215 p[r] = row
farmbuyer@1 216
farmbuyer@1 217 -- guild vault
farmbuyer@1 218 local banktabs = {}
farmbuyer@1 219 for t = 1, GetNumGuildBankTabs() do
farmbuyer@1 220 -- isViewable, canDeposit, editText, numWithdrawals
farmbuyer@1 221 banktabs[t] = { row[1], GetGuildBankTabPermissions(t) }
farmbuyer@1 222 banktabs[t][2] = banktabs[t][2] and check or ""
farmbuyer@1 223 banktabs[t][3] = banktabs[t][3] and check or ""
farmbuyer@1 224 banktabs[t][4] = banktabs[t][4] and check or ""
farmbuyer@1 225 local withdraw = banktabs[t][5]
farmbuyer@1 226 banktabs[t][5] = (withdraw == -1) and check or (withdraw == 0) and "" or withdraw
farmbuyer@1 227 end
farmbuyer@1 228 v[r] = banktabs
farmbuyer@1 229 end
farmbuyer@1 230 self.perms = p
farmbuyer@1 231 -- This one needs to be turned inside-out to match the data requirements
farmbuyer@1 232 self.vault = {}
farmbuyer@1 233 for t = 1, GetNumGuildBankTabs() do
farmbuyer@1 234 self.vault[t] = {}
farmbuyer@1 235 for r = 1, #v do
farmbuyer@1 236 self.vault[t][r] = v[r][t]
farmbuyer@1 237 end
farmbuyer@1 238 end
farmbuyer@1 239 end
farmbuyer@1 240
farmbuyer@1 241
farmbuyer@1 242 local function setstatus(txt) addon.display:SetStatusText(txt) end
farmbuyer@1 243
farmbuyer@1 244 local make_sidetab
farmbuyer@1 245 do
farmbuyer@1 246 local lastclicked
farmbuyer@1 247 local function OnClick (thistab)
farmbuyer@1 248 if thistab == lastclicked then return end
farmbuyer@1 249 for i = 1, #sidetabs do
farmbuyer@1 250 sidetabs[i]:SetChecked(false)
farmbuyer@1 251 end
farmbuyer@1 252 thistab:SetChecked(true) -- should be redundant, but just in case
farmbuyer@1 253 lastclicked = thistab
farmbuyer@1 254 if thistab.callback then
farmbuyer@1 255 thistab:callback(thistab:GetID())
farmbuyer@1 256 end
farmbuyer@1 257 end
farmbuyer@1 258
farmbuyer@1 259 -- Some magic numbers here wrt the index
farmbuyer@1 260 function make_sidetab (index, callback)
farmbuyer@1 261 if not sidetabs then
farmbuyer@1 262 sidetabs = {}
farmbuyer@1 263 end
farmbuyer@1 264
farmbuyer@1 265 local tab = CreateFrame("CheckButton", "WRDWTab"..index, addon.display.frame, "SpellBookSkillLineTabTemplate", index)
farmbuyer@1 266 if index > 1 then
farmbuyer@1 267 tab:SetPoint("TOPLEFT", sidetabs[index-1], "BOTTOMLEFT", 0, -17)
farmbuyer@1 268 else
farmbuyer@1 269 tab:SetNormalTexture("Interface\\SpellBook\\GuildSpellbooktabBG")
farmbuyer@1 270 tab.TabardEmblem:Show()
farmbuyer@1 271 tab.TabardIconFrame:Show()
farmbuyer@1 272 SetLargeGuildTabardTextures("player", tab.TabardEmblem, tab:GetNormalTexture(), tab.TabardIconFrame)
farmbuyer@1 273 tab:SetPoint("TOPLEFT", addon.display.frame, "TOPRIGHT", 0, -17)
farmbuyer@1 274 end
farmbuyer@1 275 tab:SetScript("OnClick", OnClick)
farmbuyer@1 276 --tab:SetChecked(false) -- is default
farmbuyer@1 277 tab:Show()
farmbuyer@1 278 tab.callback = callback
farmbuyer@1 279 sidetabs[index] = tab
farmbuyer@1 280 return tab
farmbuyer@1 281 end
farmbuyer@1 282
farmbuyer@1 283 function addon:BuildVaultTabs()
farmbuyer@1 284 incomplete = nil
farmbuyer@1 285 local offset = 1 -- number of tabs already made
farmbuyer@1 286 local function pick_a_tab (tab, id)
farmbuyer@1 287 DisownChildren(self.display)
farmbuyer@1 288 self.display:AddChild(self.vault_sts[id-offset])
farmbuyer@1 289 end
farmbuyer@1 290 for t = 1, GetNumGuildBankTabs() do
farmbuyer@1 291 local name, icon = GetGuildBankTabInfo(t)
farmbuyer@1 292 incomplete = incomplete or icon == [[Interface\Icons\INV_Misc_QuestionMark]]
farmbuyer@1 293 local tab = make_sidetab(t+offset, pick_a_tab)
farmbuyer@1 294 tab:SetNormalTexture(icon)
farmbuyer@1 295 tab.tooltip = name
farmbuyer@1 296 end
farmbuyer@1 297 if incomplete then
farmbuyer@3 298 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 299 end
farmbuyer@1 300 end
farmbuyer@1 301 end
farmbuyer@1 302
farmbuyer@1 303
farmbuyer@1 304 local function st_OnEnter (rowFrame, cellFrame, data, cols, row, realrow, column, sttable, button, ...)
farmbuyer@1 305 if (row == nil) or (realrow == nil) then -- mouseover column header
farmbuyer@1 306 setstatus(cellFrame:GetText():gsub('\n',' '))
farmbuyer@1 307 return true
farmbuyer@1 308 end
farmbuyer@1 309 return false -- continue with default highlighting behavior
farmbuyer@1 310 end
farmbuyer@1 311 local function st_OnLeave (rowFrame, cellFrame, data, cols, row, realrow, column, sttable, button, ...)
farmbuyer@1 312 setstatus("")
farmbuyer@1 313 return false -- continue with default un-highlighting behavior
farmbuyer@1 314 end
farmbuyer@1 315 local function st_OnClick (rowFrame, cellFrame, data, cols, row, realrow, column, sttable, button, ...)
farmbuyer@1 316 if (row == nil) or (realrow == nil) then return true end -- click column header, suppress reordering
farmbuyer@1 317 -- more here?
farmbuyer@1 318 return true -- do not do anything further
farmbuyer@1 319 end
farmbuyer@1 320
farmbuyer@1 321
farmbuyer@1 322 function addon:BuildMainST (permissions, parent_frame)
farmbuyer@1 323 -- if this language uses a trailing colon, strip it
farmbuyer@1 324 local tmp = GUILDCONTROL_RANKLABEL:gsub(":$","")
farmbuyer@1 325 local cols = {{
farmbuyer@1 326 name = tmp,
farmbuyer@1 327 width = 10 * #tmp,
farmbuyer@1 328 }}
farmbuyer@1 329 for i = 1, NUM_RANK_FLAGS do if i ~= 14 then
farmbuyer@1 330 table.insert(cols,{
farmbuyer@1 331 name = _G['GUILDCONTROL_OPTION'..i],
farmbuyer@4 332 width = st_colwidth,
farmbuyer@1 333 })
farmbuyer@1 334 end end
farmbuyer@1 335
farmbuyer@1 336 local ST = LibStub("ScrollingTable"):CreateST (cols, st_displayed_rows, st_rowheight, nil, parent_frame)
farmbuyer@1 337 ST:Hide()
farmbuyer@1 338
farmbuyer@1 339 ST:SetData(permissions, --[[minimal format=]]true)
farmbuyer@1 340 ST:RegisterEvents{
farmbuyer@1 341 OnEnter = st_OnEnter,
farmbuyer@1 342 OnLeave = st_OnLeave,
farmbuyer@1 343 OnClick = st_OnClick,
farmbuyer@1 344 OnDoubleClick = st_OnClick,
farmbuyer@1 345 }
farmbuyer@1 346
farmbuyer@1 347 return ST
farmbuyer@1 348 end
farmbuyer@1 349
farmbuyer@1 350 function addon:BuildVaultSTs (permissions, parent_frame)
farmbuyer@1 351 self.vault_sts = {}
farmbuyer@1 352 local cols = {
farmbuyer@1 353 self.main_st.st.cols[1],
farmbuyer@1 354 { name = GUILDCONTROL_VIEW_TAB, width = 80 },
farmbuyer@1 355 { name = GUILDCONTROL_DEPOSIT_ITEMS, width = 80 },
farmbuyer@1 356 { name = GUILDCONTROL_UPDATE_TEXT, width = 80 },
farmbuyer@1 357 { name = GUILDCONTROL_WITHDRAW_ITEMS, width = 150 },
farmbuyer@1 358 }
farmbuyer@1 359
farmbuyer@1 360 for tab = 1, #permissions do
farmbuyer@1 361 local ST = LibStub("ScrollingTable"):CreateST (cols, st_displayed_rows, st_rowheight, nil, parent_frame)
farmbuyer@1 362 ST:Hide()
farmbuyer@1 363 ST:SetData(permissions[tab], --[[minimal format=]]true)
farmbuyer@1 364 ST:RegisterEvents{
farmbuyer@1 365 OnEnter = st_OnEnter,
farmbuyer@1 366 OnLeave = st_OnLeave,
farmbuyer@1 367 OnClick = st_OnClick,
farmbuyer@1 368 OnDoubleClick = st_OnClick,
farmbuyer@1 369 }
farmbuyer@1 370 self.vault_sts[tab] = ST
farmbuyer@1 371 end
farmbuyer@1 372 end
farmbuyer@1 373
farmbuyer@1 374
farmbuyer@1 375 function addon:BuildWindow()
farmbuyer@1 376 local need_tabs
farmbuyer@1 377 if self.display then
farmbuyer@1 378 self.display:Hide()
farmbuyer@1 379 else
farmbuyer@1 380 self.display = AceGUI:Create("Frame")
farmbuyer@1 381 self.display:SetTitle("Which Rank Does What")
farmbuyer@1 382 self.display:SetLayout("Fill")
farmbuyer@1 383 self.display:SetStatusTable{
farmbuyer@4 384 width = (st_colwidth+4) * (NUM_RANK_FLAGS-1) -- flag columns
farmbuyer@4 385 + 105, -- rank label column
farmbuyer@1 386 height = 500,
farmbuyer@1 387 }
farmbuyer@1 388 self.display:ApplyStatus()
farmbuyer@1 389 self.display:SetCallback("OnClose", function(_d)
farmbuyer@1 390 if incomplete or (not self.perms) then
farmbuyer@1 391 -- stuff changed while open
farmbuyer@1 392 self.perms = nil
farmbuyer@1 393 self.display = nil
farmbuyer@1 394 sidetabs = nil
farmbuyer@1 395 AceGUI:Release(_d)
farmbuyer@1 396 end
farmbuyer@1 397 end)
farmbuyer@1 398 if self.display.EnableResize then
farmbuyer@1 399 self.display:EnableResize(false)
farmbuyer@1 400 end
farmbuyer@1 401 need_tabs = true
farmbuyer@1 402 end
farmbuyer@1 403
farmbuyer@1 404 if not self.perms then
farmbuyer@1 405 need_tabs = true
farmbuyer@1 406 self:BuildPerms() -- creates self.perms and self.vault
farmbuyer@1 407 DisownChildren(self.display)
farmbuyer@1 408 -- Could be new rows, fewer rows, changed tickboxes... ugh, trying to
farmbuyer@1 409 -- update the scrolltable is a pain. Throw it out and start over.
farmbuyer@1 410 if self.main_st and self.main_st.st then
farmbuyer@1 411 self.main_st:Release()
farmbuyer@1 412 end
farmbuyer@1 413 if self.vault_sts then for i = 1, #self.vault_sts do
farmbuyer@1 414 if self.vault_sts[i] and self.vault_sts[i].st then
farmbuyer@1 415 self.vault_sts[i]:Release()
farmbuyer@1 416 end
farmbuyer@1 417 end end
farmbuyer@1 418 self.main_st = nil
farmbuyer@1 419 self.vault_sts = nil
farmbuyer@1 420 end
farmbuyer@1 421 if not self.main_st then
farmbuyer@1 422 local st = self:BuildMainST (self.perms, self.display.content)
farmbuyer@1 423 self.main_st = AceGUI:Create("lib-st"):WrapST(st)
farmbuyer@1 424 self.main_st.head_offset = 20
farmbuyer@1 425 --st_widget.tail_offset = 5
farmbuyer@1 426 self.display:AddChild(self.main_st)
farmbuyer@1 427
farmbuyer@1 428 self:BuildVaultSTs (self.vault, self.display.content)
farmbuyer@1 429 for i,st in ipairs(self.vault_sts) do
farmbuyer@1 430 self.vault_sts[i] = AceGUI:Create("lib-st"):WrapST(st)
farmbuyer@1 431 self.vault_sts[i].head_offset = 20
farmbuyer@1 432 end
farmbuyer@1 433 end
farmbuyer@1 434
farmbuyer@1 435 if need_tabs or incomplete then
farmbuyer@1 436 local maintab = make_sidetab(1, function (this, id)
farmbuyer@1 437 DisownChildren(self.display)
farmbuyer@1 438 self.display:AddChild(self.main_st)
farmbuyer@1 439 end)
farmbuyer@1 440 maintab.tooltip = [[Rank permissions]]
farmbuyer@1 441 maintab:SetChecked(true)
farmbuyer@1 442 self:BuildVaultTabs()
farmbuyer@1 443 end
farmbuyer@1 444
farmbuyer@1 445 self.display:Show()
farmbuyer@1 446 return self.display
farmbuyer@1 447 end
farmbuyer@1 448
farmbuyer@1 449 -- vim:noet