annotate AskMrRobotUi.lua @ 55:826f8e68e045 v20

bumped interface version for 6.1 patch
author yellowfive
date Tue, 24 Feb 2015 21:49:57 -0800
parents be5dc6c02f77
children
rev   line source
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,
yellowfive@53 9 combatLog = 3,
yellowfive@53 10 settings = 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
yellowfive@53 70 o.combatLogTab = AskMrRobot.CombatLogTab:new(tabArea)
yellowfive@53 71 o.menu[_menuIds["combatLog"]].element = o.combatLogTab
yellowfive@53 72
TuhMuffinMan>@51 73 o.settingsTab = AskMrRobot.SettingsTab:new(tabArea)
TuhMuffinMan>@51 74 o.menu[_menuIds["settings"]].element = o.settingsTab
TuhMuffinMan>@51 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)
yellowfive@53 127 createButton(L.AMR_UI_MENU_COMBAT_LOG, 0)
TuhMuffinMan>@51 128 createButton(L.AMR_UI_MENU_SETTINGS, 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