annotate Modules/Frames.lua @ 61:b24dbfbe2aef

Fixed an infinite loop when when adding items to the Skillet queue from the crafting interface.
author Asa Ayers <Asa.Ayers@Gmail.com>
date Tue, 27 Jul 2010 11:56:00 -0700
parents 4ec321eb0dfe
children e7d287cc3b02
rev   line source
Asa@58 1 local addonName, addonTable = ...;
Asa@58 2 local addon = _G[addonName]
Asa@58 3
Asa@58 4 local AceGUI = LibStub("AceGUI-3.0")
Asa@58 5
Asa@58 6 local tabs = {}
Asa@58 7
Asa@59 8 function addon: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@58 32
Asa@58 33 function addon:CreateFrame(selectedTab)
Asa@59 34
Asa@58 35 if not displayFrame then
Asa@58 36 -- Create the frame container
Asa@58 37 displayFrame = AceGUI:Create("Frame")
Asa@58 38 ItemAuditor:RegisterFrame(displayFrame)
Asa@58 39 local window = displayFrame.frame;
Asa@58 40 -- I have no idea why AceGUI insists on using FULLSCREEN_DIALOG by default.
Asa@58 41 window:SetFrameStrata("MEDIUM")
Asa@58 42 displayFrame:SetTitle("ItemAuditor")
Asa@58 43 displayFrame:SetStatusText("")
Asa@58 44
Asa@58 45 displayFrame:SetLayout("Fill")
Asa@58 46
Asa@58 47 window:SetHeight(500);
Asa@58 48
Asa@58 49 local tabSet = {}
Asa@58 50 for key, data in pairs(tabs) do
Asa@58 51 tinsert(tabSet, {text=data['text'], value=key})
Asa@58 52 -- Default to the first tab.
Asa@58 53 if not selectedTab then
Asa@58 54 selectedTab = key
Asa@58 55 end
Asa@58 56 end
Asa@58 57 -- Each tab can adjust the width as needed.
Asa@58 58 window:SetWidth(300);
Asa@58 59
Asa@58 60 displayFrame.tab = AceGUI:Create("TabGroup")
Asa@58 61 displayFrame.tab:SetLayout("Flow")
Asa@58 62 displayFrame.tab:SetTabs(tabSet)
Asa@58 63 displayFrame.tab:SetCallback("OnGroupSelected", switchTab)
Asa@58 64
Asa@58 65
Asa@58 66 displayFrame:AddChild(displayFrame.tab)
Asa@58 67 end
Asa@58 68
Asa@58 69 if not selectedTab then
Asa@58 70 for key in pairs(tabs) do
Asa@58 71 selectedTab = key
Asa@58 72 break
Asa@58 73 end
Asa@58 74 end
Asa@58 75
Asa@58 76 displayFrame.tab:SelectTab(selectedTab)
Asa@58 77 displayFrame:Show()
Asa@58 78 end
Asa@58 79
Asa@58 80 function addon:UpdateStatusText(message)
Asa@58 81 if displayFrame then
Asa@58 82 displayFrame:SetStatusText(message)
Asa@58 83 end
Asa@58 84 end