This repository has been archived by the owner on Aug 27, 2024. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathJackJackGUI.lua
78 lines (61 loc) · 2.32 KB
/
JackJackGUI.lua
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
-- set addon namespace
local addonName, addon = ...
local AceGUI = LibStub("AceGUI-3.0")
local MAIN_FRAME_STYLE = {
["WIDTH"] = 350
}
local mainFrame, tabs, minimizeFunc
function addon:showDirections() tabs:SelectTab("directions") end
local function maximizeWindow() mainFrame:Minimize(false) end
local function afterSelectTab(tabs, callbackName, tabName)
tabs:ReleaseChildren()
minimizeFunc = function (minimized) end -- dummy function that does nothing in case tab panel doesn't minimize
if tabName == "locations" then
local searchPanel, minimizeSearchPanel = addon:SearchPanel(maximizeWindow)
tabs:AddChild(searchPanel)
minimizeFunc = minimizeSearchPanel
elseif tabName == "directions" then
tabs:AddChild(addon:DirectionsPanel(addon.AddonState.directions))
end
minimizeFunc(mainFrame:GetMinimized())
end
function addon:initGUI()
-- main JJWindow
mainFrame = AceGUI:Create("JJWindow")
mainFrame.frame:SetParent(WorldMapFrame)
mainFrame:SetTitle("JackJack")
mainFrame:SetPoint("TOPLEFT", "WorldMapFrame", "TOPRIGHT")
mainFrame:SetWidth(MAIN_FRAME_STYLE.WIDTH)
mainFrame:SetLayout("Flow")
-- tabs
tabs = AceGUI:Create("TabGroup")
tabs:SetTabs({
{value = "locations", text = "Locations"},
{value = "directions", text = "Directions"}
})
tabs:SetCallback("OnGroupSelected", afterSelectTab)
tabs:SelectTab("locations")
tabs:SetFullHeight(true)
tabs:SetFullWidth(true)
tabs:SetLayout("Flow")
-- add all the elements
mainFrame:AddChild(tabs)
-- set minimize behavior
mainFrame:SetCallback("OnMinimizeStateChanged", function(_, _, minimize, maximizedHeight)
addon.Settings.profile.gui.maximizedHeight = maximizedHeight
addon.Settings.profile.gui.minimized = minimize
minimizeFunc(minimize)
end)
-- set close behavior
mainFrame:SetCallback("ClosedWithCloseBtn", function()
addon.Settings.profile.gui.closed = true
end)
-- restore gui state from saved variables
mainFrame:SetMaximizedHeight(addon.Settings.profile.gui.maximizedHeight)
mainFrame:Minimize(addon.Settings.profile.gui.minimized)
minimizeFunc(addon.Settings.profile.gui.minimized)
if addon.Settings.profile.gui.closed then
mainFrame:Hide()
end
return mainFrame
end