annotate Modules/Frames.lua @ 119:d94195157a6b

Moved the check for QAManager so it doesn't interfere with the tooltip or ArkInventory rule.
author Asa Ayers <Asa.Ayers@Gmail.com>
date Thu, 02 Sep 2010 21:16:04 -0700
parents 32d53abee666
children f37ab41f1928
rev   line source
Asa@63 1 local ItemAuditor = select(2, ...)
Asa@63 2 local Frames = ItemAuditor:NewModule("Frames")
Asa@58 3
Asa@58 4 local AceGUI = LibStub("AceGUI-3.0")
Asa@58 5
Asa@58 6 local tabs = {}
Asa@58 7
Asa@65 8 function Frames.RegisterTab(text, value, callback)
Asa@59 9 tabs[value] = {text=text, callback=callback}
Asa@58 10 end
Asa@58 11
Asa@58 12 local displayFrame = false
Asa@58 13 local currentContent = false
Asa@58 14 local function switchTab(container, event, group)
Asa@58 15 if tabs[group] == nil then
Asa@58 16 error(format("Invaid tab name: %s", tostring(group)))
Asa@58 17 end
Asa@58 18 local cb = tabs[group].callback
Asa@58 19
Asa@58 20 container:ReleaseChildren()
Asa@58 21
Asa@58 22 if currentContent then
Asa@58 23 currentContent:Hide()
Asa@58 24 if displayFrame then
Asa@58 25 displayFrame:SetStatusText('')
Asa@58 26 end
Asa@58 27 end
Asa@59 28
Asa@58 29 currentContent = cb(container)
Asa@58 30 end
Asa@58 31
Asa@65 32 function Frames.CreateFrame(selectedTab)
Asa@59 33
Asa@58 34 if not displayFrame then
Asa@58 35 -- Create the frame container
Asa@58 36 displayFrame = AceGUI:Create("Frame")
Asa@58 37 ItemAuditor:RegisterFrame(displayFrame)
Asa@58 38 local window = displayFrame.frame;
Asa@58 39 -- I have no idea why AceGUI insists on using FULLSCREEN_DIALOG by default.
Asa@58 40 window:SetFrameStrata("MEDIUM")
Asa@58 41 displayFrame:SetTitle("ItemAuditor")
Asa@58 42 displayFrame:SetStatusText("")
Asa@58 43
Asa@58 44 displayFrame:SetLayout("Fill")
Asa@58 45
Asa@58 46 window:SetHeight(500);
Asa@58 47
Asa@58 48 local tabSet = {}
Asa@58 49 for key, data in pairs(tabs) do
Asa@58 50 tinsert(tabSet, {text=data['text'], value=key})
Asa@58 51 -- Default to the first tab.
Asa@58 52 if not selectedTab then
Asa@58 53 selectedTab = key
Asa@58 54 end
Asa@58 55 end
Asa@58 56 -- Each tab can adjust the width as needed.
Asa@58 57 window:SetWidth(300);
Asa@58 58
Asa@58 59 displayFrame.tab = AceGUI:Create("TabGroup")
Asa@58 60 displayFrame.tab:SetLayout("Flow")
Asa@58 61 displayFrame.tab:SetTabs(tabSet)
Asa@58 62 displayFrame.tab:SetCallback("OnGroupSelected", switchTab)
Asa@58 63
Asa@58 64
Asa@58 65 displayFrame:AddChild(displayFrame.tab)
Asa@58 66 end
Asa@58 67
Asa@58 68 if not selectedTab then
Asa@58 69 for key in pairs(tabs) do
Asa@58 70 selectedTab = key
Asa@58 71 break
Asa@58 72 end
Asa@58 73 end
Asa@58 74
Asa@58 75 displayFrame.tab:SelectTab(selectedTab)
Asa@58 76 displayFrame:Show()
Asa@58 77 end
Asa@58 78
Asa@65 79 function Frames.UpdateStatusText(message)
Asa@58 80 if displayFrame then
Asa@58 81 displayFrame:SetStatusText(message)
Asa@58 82 end
Asa@65 83 end
Asa@65 84
Asa@65 85 function ItemAuditor:UpdateStatusText(message)
Asa@65 86 return Frames.UpdateStatusText(message)
Asa@65 87 end
Asa@65 88
Asa@65 89 function ItemAuditor:RegisterTab(text, value, callback)
Asa@65 90 return Frames.RegisterTab(text, value, callback)
Asa@65 91 end
Asa@65 92
Asa@65 93 function ItemAuditor:CreateFrame(selectedTab)
Asa@65 94 Frames.CreateFrame(selectedTab)
Asa@65 95 end