You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

105 lines
2.2 KiB

5 years ago
local WIT, core = ...
core.UI.MainWindow = {}
local MainWindow = core.UI.MainWindow
local window = nil
local frame = nil
local navMenu = nil
local currentModule = nil
local AceGUI = LibStub("AceGUI-3.0")
local function setCloseOnEscPress()
local oldCloseSpecialWindows = CloseSpecialWindows
CloseSpecialWindows = function()
if window:IsShown() then
window:Hide()
return true
end
return oldCloseSpecialWindows()
end
end
local function createWindow()
window = AceGUI:Create("Window")
window.frame:SetScale(core.Config.GetScaling())
window:SetWidth(MainWindow.GetWindowWidth())
window:SetHeight(MainWindow.GetWindowHeight())
window:SetTitle(core.GetString("WorthItTitle"))
window:SetLayout("Flow")
window:EnableResize(false)
window:AddChild(core.UI.Header(window))
frame = AceGUI:Create("SimpleGroup")
frame:SetFullWidth(true)
frame:SetFullHeight(true)
frame:SetLayout("Fill")
window:AddChild(frame)
core.UI.SelectModule(core.DashboardModule)
setCloseOnEscPress()
return window
end
function MainWindow.GetWindowWidth()
return GetScreenWidth()*0.6 / core.Config.GetScaling()
end
function MainWindow.GetWindowHeight()
return GetScreenHeight()*0.6 / core.Config.GetScaling()
end
function MainWindow.Init()
if not window then
window = createWindow()
window:Hide()
end
end
function MainWindow.Show()
window = window or createWindow()
window:Show()
end
function MainWindow.Hide()
if window then
window:Hide()
end
end
function MainWindow.Toggle()
if not window or not window:IsShown() then
window = window or createWindow()
window:Show()
else
window:Hide()
end
end
function MainWindow.IsShown()
return window and window:IsShown()
end
function MainWindow.CurrentModule()
return currentModule
end
function MainWindow.ShowModule(module)
if not frame then return end
frame:ReleaseChildren()
if not core.TSMHelper.IsTSMAPIAvailable() or not core.TSMHelper.IsTSMDBAvailable() then
core.InstallationGuide.Draw(frame)
core.UI.DisableHeader()
elseif module.Draw then
module.Draw(frame)
currentModule = module
end
end