annotate ui/GemTab.lua @ 51:6f1bb8fcf64d v18

AskMrRobot.toc - Added line for new SettingsTab file AskMrRobotUi.lua - Added code for new Settings menu amr-constants.lua - Added instance IDs for all WoD 6.0 5-mans and Raids. - Removed legacy SoO IDs. config.lua - Removed "Interface/Addons" options area, migrated all settings to main addon window. localization/localization.en.lua - Added new strings for new Settings tab and new Raid auto-logging ui/CombatLogTab.lua - Removed legacy SoO code - Added auto-logging settings for Highmaul and Blackrock Foundry. ui/SettingsTab.lua - new main window tab for Minimap and Auction House settings options
author TuhMuffinMan <TuhMuffinMan>
date Fri, 28 Nov 2014 13:09:52 -0600
parents e77e01abce98
children
rev   line source
adam@0 1 local _, AskMrRobot = ...
yellowfive@11 2 local L = AskMrRobot.L;
adam@0 3
adam@0 4 StaticPopupDialogs["AUTOGEM_FINISHED"] = {
yellowfive@11 5 text = L.AMR_GEMTAB_FINISHED,
yellowfive@11 6 button1 = L.AMR_GEMTAB_BUTTON_OK,
adam@0 7 timeout = 0,
adam@0 8 whileDead = true,
adam@0 9 hideOnEscape = true,
adam@0 10 preferredIndex = 3, -- avoid some UI taint, see http://www.wowace.com/announcements/how-to-avoid-some-ui-taint/
adam@0 11 }
adam@0 12
adam@0 13 StaticPopupDialogs["AUTOGEM_ONCE"] = {
yellowfive@11 14 text = L.AMR_GEMTAB_AUTOGEMMING_IN_PROGRESS,
yellowfive@11 15 button1 = L.AMR_GEMTAB_BUTTON_OK,
adam@0 16 timeout = 0,
adam@0 17 whileDead = true,
adam@0 18 hideOnEscape = true,
adam@0 19 preferredIndex = 3, -- avoid some UI taint, see http://www.wowace.com/announcements/how-to-avoid-some-ui-taint/
adam@0 20 }
adam@0 21
adam@0 22 -- initialize the GemTab class
adam@0 23 AskMrRobot.GemTab = AskMrRobot.inheritsFrom(AskMrRobot.Frame)
adam@0 24
adam@0 25 local MAX_SLOTS = 4
adam@0 26
adam@0 27 -- GemTab contructor
adam@17 28 function AskMrRobot.GemTab:new(parent)
adam@0 29 -- create a new frame (if one isn't supplied)
adam@17 30 local tab = AskMrRobot.Frame:new(nil, parent)
adam@0 31 tab:SetPoint("TOPLEFT")
adam@0 32 tab:SetPoint("BOTTOMRIGHT")
adam@0 33 -- use the GemTab class
adam@0 34 setmetatable(tab, { __index = AskMrRobot.GemTab })
adam@0 35 tab:Hide()
adam@0 36
adam@0 37 local text = tab:CreateFontString("AmrGemsText1", "ARTWORK", "GameFontNormalLarge")
adam@0 38 text:SetPoint("TOPLEFT", 0, -5)
yellowfive@11 39 text:SetText(L.AMR_GEMTAB_GEMS)
adam@0 40
adam@0 41 tab.stamp = AskMrRobot.RobotStamp:new(nil, tab)
adam@0 42 tab.stamp:Hide()
yellowfive@11 43 tab.stamp.smallText:SetText(L.AMR_GEMTAB_OPTIMAL)
adam@0 44 tab.stamp:SetPoint("TOPLEFT", text, "BOTTOMLEFT", 2, -15)
adam@0 45 tab.stamp:SetPoint("RIGHT", tab, "RIGHT", -20, 0)
adam@0 46
adam@0 47 text = tab:CreateFontString("AmrGemsText2", "ARTWORK", "GameFontWhite")
yellowfive@11 48 text:SetText(L.AMR_GEMTAB_X_OPTIMIZE)
adam@0 49 text:SetPoint("TOPLEFT", "AmrGemsText1", "BOTTOMLEFT", 0, -20)
adam@0 50 text:SetWidth(200)
adam@0 51 text:SetJustifyH("LEFT")
adam@0 52 tab.gemsTextToOptimize = text
adam@0 53
adam@0 54 -- autogem button
adam@0 55 tab.button = CreateFrame("Button", "AmrAutoGemButton", tab, "UIPanelButtonTemplate")
adam@0 56 tab.button:SetPoint("TOP", "AmrGemsText1", "BOTTOM", 0, -16)
adam@0 57 tab.button:SetPoint("RIGHT", -40, 0)
yellowfive@11 58 tab.button:SetText(L.AMR_GEMTAB_AUTOGEM_BUTTON)
adam@0 59 tab.button:SetWidth(150)
adam@0 60 tab.button:SetHeight(20)
adam@0 61 tab.button:SetScript("OnClick", function() tab:startAutoGem() end)
adam@0 62 tab.button:Hide()
adam@0 63
adam@0 64 -- autogem checkbox button
adam@0 65 tab.usePerfectButton = CreateFrame("CheckButton", "AmrUsePerfectButton", tab, "ChatConfigCheckButtonTemplate")
adam@0 66 tab.preferPerfects = true
adam@0 67 tab.usePerfectButton:SetChecked(tab.preferPerfects)
adam@0 68 tab.usePerfectButton:SetPoint("TOPLEFT", "AmrAutoGemButton", "BOTTOMLEFT", 0, -4)
adam@0 69 tab.usePerfectButton:SetScript("OnClick", function () tab.preferPerfects = tab.usePerfectButton:GetChecked() end)
adam@0 70 local text3 = getglobal(tab.usePerfectButton:GetName() .. 'Text')
yellowfive@11 71 text3:SetText(L.AMR_GEMTAB_PREFER_PERFECT)
adam@0 72 text3:SetWidth(150)
adam@0 73 text3:SetPoint("TOPLEFT", tab.usePerfectButton, "TOPRIGHT", 2, -4)
adam@0 74 tab.usePerfectButton:Hide()
adam@0 75
adam@0 76 tab.gemSlotHeader = tab:CreateFontString("AmrBadGemSlot0", "ARTWORK", "GameFontNormal")
adam@0 77 tab.gemSlotHeader:SetPoint("TOPLEFT", "AmrGemsText2", "BOTTOMLEFT", 0, -20)
yellowfive@11 78 tab.gemSlotHeader:SetText(L.AMR_GEMTAB_SLOT)
adam@0 79 tab.gemSlotHeader:SetWidth(90)
adam@0 80 tab.gemSlotHeader:SetJustifyH("LEFT")
adam@0 81 tab.gemSlotHeader:Hide()
adam@0 82 tab.gemCurrentHeader = tab:CreateFontString("AmrBadGemCurrent0_1", "ARTWORK", "GameFontNormal")
adam@0 83 tab.gemCurrentHeader:SetPoint("TOPLEFT", "AmrBadGemSlot0", "TOPLEFT", 88, 0)
adam@0 84 tab.gemCurrentHeader:SetWidth(110)
yellowfive@11 85 tab.gemCurrentHeader:SetText(L.AMR_GEMTAB_CURRENT)
adam@0 86 tab.gemCurrentHeader:SetJustifyH("LEFT")
adam@0 87 tab.gemCurrentHeader:Hide()
adam@0 88 tab.gemOptimizedHeader = tab:CreateFontString("AmrBadGemOptimized0_1", "ARTWORK", "GameFontNormal")
adam@0 89 tab.gemOptimizedHeader:SetPoint("TOPLEFT", "AmrBadGemCurrent0_1", "TOPLEFT", 70, 0)
adam@0 90 tab.gemOptimizedHeader:SetPoint("RIGHT", -30, 0)
yellowfive@11 91 tab.gemOptimizedHeader:SetText(L.AMR_GEMTAB_OPTIMIZED)
adam@0 92 tab.gemOptimizedHeader:SetJustifyH("LEFT")
adam@0 93 tab.gemOptimizedHeader:Hide()
adam@0 94
adam@0 95 tab.fauxScroll = CreateFrame("ScrollFrame", "testme", tab, "FauxScrollFrameTemplate")
adam@0 96 tab.fauxScroll:SetPoint("BOTTOMRIGHT", -40, 15)
adam@0 97 tab.fauxScroll:SetPoint("TOPLEFT", "AmrBadGemSlot0", "BOTTOMLEFT", -12, -5)
adam@0 98 tab.fauxScroll.parent = tab
adam@0 99 tab.fauxScroll:SetScript("OnVerticalScroll", AskMrRobot.GemTab.OnVerticalScroll)
adam@0 100
adam@0 101 tab.jewelPanels = {}
adam@0 102 for i = 1, MAX_SLOTS do
adam@0 103
adam@0 104 tab.jewelPanels[i] = AskMrRobot.JewelPanel:new("AmrBadGemSlot" .. i, tab)
adam@0 105 if i == 1 then
adam@0 106 tab.jewelPanels[i]:SetPoint("TOPLEFT", "AmrBadGemSlot" .. (i-1), "BOTTOMLEFT", -12, -5)
adam@0 107 --tab.jewelPanels[i]:SetPoint("TOPLEFT")
adam@0 108 else
adam@0 109 tab.jewelPanels[i]:SetPoint("TOPLEFT", "AmrBadGemSlot" .. (i-1), "BOTTOMLEFT", 0, -5)
adam@0 110 end
adam@0 111 tab.jewelPanels[i]:SetPoint("RIGHT", -40, 0)
adam@0 112 end
adam@0 113
adam@0 114 return tab
adam@0 115 end
adam@0 116
adam@0 117 function AskMrRobot.GemTab:startAutoGem()
adam@0 118 if AskMrRobot.AutoGem(self.preferPerfects) == false then
adam@0 119 StaticPopup_Show("AUTOGEM_ONCE")
adam@0 120 end
adam@0 121 end
adam@0 122
adam@0 123 function AskMrRobot.GemTab:Update()
adam@0 124 self.count = 0
adam@0 125
adam@0 126 local i = 1
adam@0 127 local badGemTotal = 0
adam@0 128
adam@17 129 if AskMrRobot.ComparisonResult.gems then
adam@17 130 for iSlot = 1, #AskMrRobot.slotIds do
adam@17 131 local slotId = AskMrRobot.slotIds[iSlot]
adam@17 132 local badGems = AskMrRobot.ComparisonResult.gems[slotId]
adam@17 133 if badGems ~= nil then
adam@17 134 self.count = self.count + 1
adam@17 135 if i <= MAX_SLOTS then
adam@17 136 self.jewelPanels[i]:Show()
adam@17 137 end
adam@17 138 for g = 1, #badGems.optimized do
adam@17 139 if not AskMrRobot.AreGemsCompatible(badGems.optimized[g], badGems.current[g]) then
adam@17 140 badGemTotal = badGemTotal + 1
adam@17 141 end
adam@17 142 end
adam@17 143 i = i + 1
adam@0 144 end
adam@0 145 end
adam@0 146 end
adam@0 147
yellowfive@11 148 self.gemsTextToOptimize:SetFormattedText(L.AMR_GEMTAB_TO_OPTIMIZE, badGemTotal)
adam@0 149
adam@0 150 --hide/show the headers, depending on if we have any bad gems
adam@0 151 if self.count == 0 then
adam@0 152 self.gemSlotHeader:Hide()
adam@0 153 self.gemCurrentHeader:Hide()
adam@0 154 self.gemOptimizedHeader:Hide()
adam@0 155 self.gemsTextToOptimize:Hide()
adam@0 156 self.button:Hide()
adam@0 157 self.usePerfectButton:Hide()
adam@0 158 self.stamp:Show()
adam@0 159 else
adam@0 160 self.gemSlotHeader:Show()
adam@0 161 self.gemCurrentHeader:Show()
adam@0 162 self.gemOptimizedHeader:Show()
adam@0 163 self.gemsTextToOptimize:Show()
adam@17 164 --self.button:Show()
adam@17 165 --self.usePerfectButton:Show()
adam@0 166 self.stamp:Hide()
adam@0 167 end
adam@0 168
adam@0 169 for i = self.count + 1, MAX_SLOTS do
adam@0 170 self.jewelPanels[i]:Hide()
adam@0 171 i = i + 1
adam@0 172 end
adam@0 173
adam@0 174 AskMrRobot.GemTab.OnUpdate(self.fauxScroll, self.count, #self.jewelPanels, self.jewelPanels[1]:GetHeight())
adam@0 175 end
adam@0 176
adam@0 177 function AskMrRobot.GemTab.OnVerticalScroll(scrollframe, offset)
adam@0 178 local self = scrollframe.parent
adam@0 179 FauxScrollFrame_OnVerticalScroll(self.fauxScroll, offset, self.jewelPanels[1]:GetHeight(), AskMrRobot.GemTab.OnUpdate)
adam@0 180 end
adam@0 181
adam@0 182 function AskMrRobot.GemTab.OnUpdate(scrollframe)
adam@0 183 local self = scrollframe.parent
adam@0 184 FauxScrollFrame_Update(self.fauxScroll, self.count, #self.jewelPanels, self.jewelPanels[1]:GetHeight())
adam@0 185 local offset = FauxScrollFrame_GetOffset(scrollframe)
adam@0 186
adam@0 187 local i = 1
adam@17 188 if AskMrRobot.ComparisonResult.gems then
adam@17 189 for iSlot = 1, #AskMrRobot.slotIds do
adam@17 190 local slotId = AskMrRobot.slotIds[iSlot]
adam@17 191 local badGems = AskMrRobot.ComparisonResult.gems[slotId]
adam@17 192 if badGems ~= nil then
adam@17 193 if offset > 0 then
adam@17 194 offset = offset - 1
adam@17 195 else
adam@0 196
adam@17 197 if i > MAX_SLOTS then
adam@17 198 break
adam@17 199 end
adam@17 200
adam@17 201 self.jewelPanels[i]:SetItemLink(AskMrRobot.slotDisplayText[slotId], AmrDb.Equipped[AmrDb.ActiveSpec][slotId])
adam@17 202 self.jewelPanels[i]:SetOptimizedGems(badGems.optimized, badGems.current)
adam@17 203 i = i + 1
adam@17 204 end
adam@0 205 end
adam@0 206 end
adam@0 207 end
adam@0 208 end