adam@0
|
1 local _, AskMrRobot = ...
|
yellowfive@11
|
2 local L = AskMrRobot.L;
|
adam@0
|
3
|
adam@0
|
4 AskMrRobot.AmrUI = AskMrRobot.inheritsFrom(AskMrRobot.Frame)
|
adam@0
|
5
|
adam@17
|
6 local _menuIds = {
|
adam@17
|
7 export = 1,
|
adam@17
|
8 gear = 2,
|
TuhMuffinMan>@51
|
9 settings = 3,
|
TuhMuffinMan>@51
|
10 combatLog = 4,
|
TuhMuffinMan>@51
|
11 help = 5
|
adam@17
|
12 }
|
adam@0
|
13
|
adam@17
|
14 function AskMrRobot.AmrUI:new()
|
adam@17
|
15 local o = AskMrRobot.Frame:new("AskMrRobot_Dialog", nil, "BasicFrameTemplateWithInset")
|
adam@0
|
16
|
adam@17
|
17 -- use the AmrUI class
|
adam@17
|
18 setmetatable(o, { __index = AskMrRobot.AmrUI })
|
adam@0
|
19
|
adam@17
|
20 o:RegisterForDrag("LeftButton");
|
adam@17
|
21 o:SetWidth(615)
|
adam@17
|
22 o:SetHeight(550)
|
adam@17
|
23 o.InsetBg:SetPoint("TOPLEFT", 140, -24)
|
adam@0
|
24
|
adam@17
|
25 o:SetParent("UIParent")
|
adam@17
|
26 o:SetPoint("CENTER")
|
adam@17
|
27 o:Hide()
|
adam@17
|
28 o:EnableMouse(true)
|
adam@17
|
29 o:EnableKeyboard(true)
|
adam@17
|
30 o.hideOnEscape = 1
|
adam@17
|
31 o:SetMovable(true)
|
adam@17
|
32 o:SetToplevel(true)
|
adam@0
|
33
|
adam@17
|
34 o:SetScript("OnDragStart", AskMrRobot.AmrUI.OnDragStart)
|
adam@17
|
35 o:SetScript("OnDragStop", AskMrRobot.AmrUI.OnDragStop)
|
adam@17
|
36 o:SetScript("OnHide", AskMrRobot.AmrUI.OnHide)
|
adam@17
|
37 o:SetScript("OnShow", AskMrRobot.AmrUI.OnShow)
|
adam@0
|
38
|
adam@17
|
39 o:RegisterEvent("AUCTION_HOUSE_CLOSED")
|
adam@17
|
40 o:RegisterEvent("AUCTION_HOUSE_SHOW")
|
adam@17
|
41 o:RegisterEvent("SOCKET_INFO_UPDATE")
|
adam@17
|
42 o:RegisterEvent("SOCKET_INFO_CLOSE")
|
adam@17
|
43
|
adam@17
|
44 o:SetScript("OnEvent", function(...)
|
adam@17
|
45 o:OnEvent(...)
|
adam@17
|
46 end)
|
adam@17
|
47
|
adam@17
|
48 tinsert(UISpecialFrames, o:GetName())
|
adam@17
|
49
|
adam@17
|
50 -- initialize some fields
|
adam@17
|
51 o.initialized = false
|
adam@17
|
52 o.visible = false
|
adam@17
|
53
|
adam@17
|
54 -- title
|
adam@17
|
55 o.TitleText:SetText("--BETA-- Ask Mr. Robot v" .. GetAddOnMetadata(AskMrRobot.AddonName, "Version"))
|
adam@17
|
56
|
adam@17
|
57 -- create the main menu
|
adam@17
|
58 o.menu = o:createMainMenu()
|
adam@17
|
59
|
adam@17
|
60 local tabArea = AskMrRobot.Frame:new(nil, o)
|
adam@17
|
61 tabArea:SetPoint("TOPLEFT", 155, -30)
|
adam@17
|
62 tabArea:SetPoint("BOTTOMRIGHT")
|
adam@17
|
63
|
adam@17
|
64 o.exportTab = AskMrRobot.ExportTab:new(tabArea)
|
adam@17
|
65 o.menu[_menuIds["export"]].element = o.exportTab
|
adam@17
|
66
|
adam@17
|
67 o.gearComparisonTab = AskMrRobot.GearComparisonTab:new(tabArea)
|
adam@17
|
68 o.menu[_menuIds["gear"]].element = o.gearComparisonTab
|
adam@17
|
69
|
TuhMuffinMan>@51
|
70 o.settingsTab = AskMrRobot.SettingsTab:new(tabArea)
|
TuhMuffinMan>@51
|
71 o.menu[_menuIds["settings"]].element = o.settingsTab
|
TuhMuffinMan>@51
|
72
|
adam@17
|
73 o.combatLogTab = AskMrRobot.CombatLogTab:new(tabArea)
|
adam@17
|
74 o.menu[_menuIds["combatLog"]].element = o.combatLogTab
|
adam@17
|
75
|
adam@17
|
76 o.helpTab = AskMrRobot.HelpTab:new(tabArea)
|
adam@17
|
77 o.menu[_menuIds["help"]].element = o.helpTab
|
adam@17
|
78
|
adam@17
|
79 o:Hide()
|
adam@17
|
80 o:ShowMenu("export")
|
adam@17
|
81
|
adam@17
|
82 return o
|
adam@0
|
83 end
|
adam@0
|
84
|
adam@17
|
85 function AskMrRobot.AmrUI:createMainMenu()
|
adam@0
|
86 local buttons = {}
|
adam@0
|
87
|
adam@0
|
88 local function onTabButtonClick(clickedButton, event, ...)
|
adam@0
|
89 for i = 1, #buttons do
|
adam@0
|
90 local button = buttons[i]
|
adam@0
|
91 if clickedButton == button then
|
adam@0
|
92 button.highlight:SetVertexColor(1, 1, 0)
|
adam@0
|
93 button:LockHighlight()
|
adam@17
|
94 if button.element then
|
adam@17
|
95 button.element:Show()
|
adam@17
|
96 end
|
adam@0
|
97 else
|
adam@0
|
98 button.highlight:SetVertexColor(.196, .388, .8)
|
adam@0
|
99 button:UnlockHighlight()
|
adam@0
|
100 if button.element then
|
adam@0
|
101 button.element:Hide()
|
adam@0
|
102 end
|
adam@0
|
103 end
|
adam@0
|
104 end
|
adam@0
|
105 end
|
adam@0
|
106
|
adam@17
|
107 local function createButton(text, spacing)
|
adam@0
|
108 local lastButton = #buttons
|
adam@0
|
109 local i = lastButton + 1
|
adam@0
|
110 local tabButton = CreateFrame("Button", "AmrTabButton" .. i, self, "OptionsListButtonTemplate")
|
adam@0
|
111 tabButton:SetText(text)
|
adam@0
|
112 tabText = tabButton:GetFontString()
|
adam@0
|
113 tabText:SetPoint("LEFT", 6, 0)
|
adam@0
|
114 if i == 1 then
|
adam@0
|
115 tabButton:SetPoint("TOPLEFT", 2, spacing)
|
adam@0
|
116 else
|
adam@0
|
117 tabButton:SetPoint("TOPLEFT", "AmrTabButton" .. lastButton, "BOTTOMLEFT", 0, spacing)
|
adam@0
|
118 end
|
adam@17
|
119 tabButton:SetWidth(140)
|
adam@0
|
120 tabButton:SetHeight(20)
|
adam@0
|
121 tinsert(buttons, tabButton)
|
adam@0
|
122 tabButton:SetScript("OnClick", onTabButtonClick)
|
adam@0
|
123 end
|
adam@0
|
124
|
adam@17
|
125 createButton(L.AMR_UI_MENU_EXPORT, -35)
|
adam@17
|
126 createButton(L.AMR_UI_MENU_GEAR, -20)
|
TuhMuffinMan>@51
|
127 createButton(L.AMR_UI_MENU_SETTINGS, 0)
|
adam@17
|
128 createButton(L.AMR_UI_MENU_COMBAT_LOG, 0)
|
adam@17
|
129 createButton(L.AMR_UI_MENU_HELP, 0)
|
adam@0
|
130
|
adam@0
|
131 return buttons
|
adam@0
|
132 end
|
adam@0
|
133
|
adam@17
|
134 function AskMrRobot.AmrUI:ShowMenu(menu)
|
adam@17
|
135 local id = _menuIds[menu]
|
adam@17
|
136 if id then
|
adam@17
|
137 self.menu[id]:Click()
|
adam@17
|
138 end
|
adam@0
|
139 end
|
adam@0
|
140
|
adam@17
|
141 function AskMrRobot.AmrUI:Toggle()
|
adam@17
|
142 if self.visible then
|
adam@17
|
143 self:Hide()
|
adam@17
|
144 else
|
adam@17
|
145 self.visible = true
|
adam@17
|
146 self:Show()
|
adam@0
|
147 end
|
adam@0
|
148 end
|
adam@0
|
149
|
adam@0
|
150 function AskMrRobot.AmrUI:OnShow()
|
adam@0
|
151
|
adam@0
|
152 end
|
adam@0
|
153
|
adam@0
|
154 function AskMrRobot.AmrUI:OnDragStart()
|
adam@0
|
155 if not self.isLocked then
|
adam@0
|
156 self:StartMoving();
|
adam@0
|
157 end
|
adam@0
|
158 end
|
adam@0
|
159
|
adam@0
|
160 function AskMrRobot.AmrUI:OnDragStop()
|
adam@0
|
161 self:StopMovingOrSizing()
|
adam@0
|
162 end
|
adam@0
|
163
|
adam@0
|
164 function AskMrRobot.AmrUI:OnHide()
|
adam@0
|
165 self.visible = false
|
adam@0
|
166 self:StopMovingOrSizing()
|
adam@0
|
167 end
|
adam@0
|
168
|
adam@0
|
169 function AskMrRobot.AmrUI:OnEvent(frame, event, ...)
|
adam@0
|
170 local handler = self["On_" .. event]
|
adam@0
|
171 if handler then
|
adam@0
|
172 handler(self, ...)
|
adam@0
|
173 end
|
adam@0
|
174 end
|