annotate main.lua @ 5:d2068b0740aa

TOC bump for 4.2
author Farmbuyer of US-Kilrogg <farmbuyer@gmail.com>
date Tue, 28 Jun 2011 17:32:20 +0000
parents e66407f67848
children 332550e56fd2
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@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