From b7802a1b383ec57a289fcf5568789b0cbf82b483 Mon Sep 17 00:00:00 2001 From: HonorGoG Date: Mon, 6 Aug 2018 22:01:06 -0700 Subject: [PATCH] Throw away... --- Titan/TitanMovable.lua | 775 -------------------------------- TitanLocation/TitanLocation.lua | 565 ------------------------ TitanPerformance/TitanPerformance.lua | 780 --------------------------------- 3 files changed, 2120 deletions(-) delete mode 100644 Titan/TitanMovable.lua delete mode 100644 TitanLocation/TitanLocation.lua delete mode 100644 TitanPerformance/TitanPerformance.lua diff --git a/Titan/TitanMovable.lua b/Titan/TitanMovable.lua deleted file mode 100644 index 6cce7b1..0000000 --- a/Titan/TitanMovable.lua +++ /dev/null @@ -1,775 +0,0 @@ ---[[ File -NAME: TitanMovable.lua -DESC: Contains the routines to adjust the Blizzard frames to make room for the Titan bars the user has selected. -There are a select set of Blizzard frames at the top of screen and at the bottom of the screen that Titan will move. -Each frame adjusted has an entry in TitanMovableData. TitanMovableData is local and not directly accessible via addons. -However addons can tell Titan to not adjust some or all frames using TitanUtils_AddonAdjust(frame, bool). Addons that replace all or parts of the Blizzard UI use this. - -The user can turn turn on / off the adjusting of all top frames or all bottom frames. -In addition the user can select to turn off / on adjusting of select top frames (minimap or ticket frame) or select bottom frames (chat / log or bags) -:DESC ---]] --- Globals - --- Locals -local _G = getfenv(0); -local InCombatLockdown = _G.InCombatLockdown; - ---[[ Titan -Declare the Ace routines - local AceTimer = LibStub("AceTimer-3.0") - i.e. TitanPanelAce.ScheduleTimer("LDBToTitanSetText", TitanLDBRefreshButton, 2); - or - i.e. TitanPanelAce:ScheduleTimer(TitanLDBRefreshButton, 2); - - Be careful that the 'self' is proper to cancel timers!!! ---]] -local TitanPanelAce = LibStub("AceAddon-3.0"):NewAddon("TitanPanel", "AceHook-3.0", "AceTimer-3.0") - ---Determines the optimal magic number based on resolution ---local menuBarTop = 55; ---local width, height = string.match((({GetScreenResolutions()})[GetCurrentResolution()] or ""), "(%d+).-(%d+)"); ---if ( tonumber(width) / tonumber(height ) > 4/3 ) then - --Widescreen resolution --- menuBarTop = 75; ---end - ---[[From Resike to prevent tainting stuff to override the SetPoint calls securely. -hooksecurefunc(FrameRef, "SetPoint", function(self) - if self.moving then - return - end - self.moving = true - self:SetMovable(true) - self:SetUserPlaced(true) - self:ClearAllPoints() - self:SetPoint("CENTER", UIParent, "CENTER", 0, 0) - self:SetMovable(false) - self.moving = nil -end) ---]] - ---[[ Titan -TitanMovable is a local table that is cleared then filled with the frames Titan needs to check and adjust, if necessary, with each 'adjust frame' check. ---]] -local TitanMovable = {}; ---[[ Titan -NAME: TitanMovableData table -DESC: TitanMovableData is a local table that holds each frame Titan may need to adjust. It also has the anchor points and offsets needed to make room for the Titan bar(s) - -The index is the frame name. Each record contains: -frameName - frame name (string) to adjust -frameArchor - the frame anchor point -xArchor - anchor relative to the frameName -y - any additional adjustment in the y axis -position - top or bottom -addonAdj - true if another addon is taking responsibility of adjusting this frame, if false Titan will use the user setttings to adjust or not -:DESC ---]] -local TitanMovableData = { - PlayerFrame = {frameName = "PlayerFrame", frameArchor = "TOPLEFT", xArchor = "LEFT", y = -4, - position = TITAN_PANEL_PLACE_TOP, addonAdj = false}, - TargetFrame = {frameName = "TargetFrame", frameArchor = "TOPLEFT", xArchor = "LEFT", y = -4, - position = TITAN_PANEL_PLACE_TOP, addonAdj = false}, - PartyMemberFrame1 = {frameName = "PartyMemberFrame1", frameArchor = "TOPLEFT", xArchor = "LEFT", y = -128, - position = TITAN_PANEL_PLACE_TOP, addonAdj = false}, - TicketStatusFrame = {frameName = "TicketStatusFrame", frameArchor = "TOPRIGHT", xArchor = "RIGHT", y = 0, - position = TITAN_PANEL_PLACE_TOP, addonAdj = false}, - BuffFrame = {frameName = "BuffFrame", frameArchor = "TOPRIGHT", xArchor = "RIGHT", y = -13, - position = TITAN_PANEL_PLACE_TOP, addonAdj = false}, - MinimapCluster = {frameName = "MinimapCluster", frameArchor = "TOPRIGHT", xArchor = "RIGHT", y = 0, - position = TITAN_PANEL_PLACE_TOP, addonAdj = false}, --- WorldStateAlwaysUpFrame = {frameName = "WorldStateAlwaysUpFrame", frameArchor = "TOP", xArchor = "CENTER", y = -15, --- position = TITAN_PANEL_PLACE_TOP, addonAdj = false}, - MainMenuBar = {frameName = "MainMenuBar", frameArchor = "BOTTOM", xArchor = "CENTER", y = 0, - position = TITAN_PANEL_PLACE_BOTTOM, addonAdj = false}, - MultiBarRight = {frameName = "MultiBarRight", frameArchor = "BOTTOMRIGHT", xArchor = "RIGHT", y = 98, - position = TITAN_PANEL_PLACE_BOTTOM, addonAdj = false}, - OverrideActionBar = {frameName = "OverrideActionBar", frameArchor = "BOTTOM", xArchor = "CENTER", y = 0, - position = TITAN_PANEL_PLACE_BOTTOM, addonAdj = false}, - MicroButtonAndBagsBar = {frameName = "MicroButtonAndBagsBar", frameArchor = "BOTTOMRIGHT", xArchor = "RIGHT", y = 0, - position = TITAN_PANEL_PLACE_BOTTOM, addonAdj = false}, -} - ---[[ local -NAME: TitanMovableFrame_CheckThisFrame -DESC: Add the given frame to the list so it will be checked. Once 'full' the table will be looped through to see if the frame must be moved or not. -VAR: frameName - frame to check -OUT: None -NOTE: -- The frame is added to TitanMovable. -:NOTE ---]] -local function TitanMovableFrame_CheckThisFrame(frameName) - -- For safety check if the frame is in the table to adjust - if TitanMovableData[frameName] then - table.insert(TitanMovable, frameName) - end -end - ---[[ Titan -NAME: TitanMovable_AdjustTimer -DESC: Cancel then add the given timer. The timer must be in TitanTimers. -VAR: ttype - The timer type (string) as defined in TitanTimers -OUT: None ---]] -function TitanMovable_AdjustTimer(ttype) - local timer = TitanTimers[ttype] - if timer then - TitanPanelAce.CancelAllTimers(timer.obj) - TitanPanelAce.ScheduleTimer(timer.obj, timer.callback, timer.delay) - end -end - ---[[ Titan -NAME: TitanMovable_AddonAdjust -DESC: Set the given frame to be adjusted or not by another addon. This is called from TitanUtils for a developer API. -VAR: frame - frame name (string) -VAR: bool - true (addon will adjust) or false (Titan will use its settings) -OUT: None ---]] -function TitanMovable_AddonAdjust(frame, bool) - for index, value in pairs(TitanMovableData) do - frameData = value - if frameData then - frameName = frameData.frameName; - end - - if (frame == frameName) then - frameData.addonAdj = bool - end - end -end - ---[[ API -NAME: TitanMovable_GetPanelYOffset -DESC: Get the Y axis offset Titan needs (1 or 2 bars) at the given position - top or bottom. -VAR: framePosition - TITAN_PANEL_PLACE_TOP or TITAN_PANEL_PLACE_BOTTOM -OUT: Y axis offset, in pixels -NOTE: -- The prefered method to determine the Y offset needed by using TitanUtils_GetBarAnchors(). -:NOTE ---]] -function TitanMovable_GetPanelYOffset(framePosition) -- used by other addons - -- Both top & bottom are figured out but only the - -- requested postion is returned - local barnum_top = 0; - local barnum_bot = 0 - - -- If user has the top adjust set then determine the - -- top offset - if not TitanPanelGetVar("ScreenAdjust") then - if TitanPanelGetVar("Bar_Show") then - barnum_top = 1 - end - if TitanPanelGetVar("Bar2_Show") then - barnum_top = 2 - end - end - -- If user has the top adjust set then determine the - -- bottom offset - if not TitanPanelGetVar("AuxScreenAdjust") then - if TitanPanelGetVar("AuxBar_Show") then - barnum_bot = 1 - end - if TitanPanelGetVar("AuxBar2_Show") then - barnum_bot = 2 - end - end - - local scale = TitanPanelGetVar("Scale") - -- return the requested offset - -- 0 will be returned if the user has not bars showing - -- or the scale is not valid - if scale and framePosition then - if framePosition == TITAN_PANEL_PLACE_TOP then - return (-TITAN_PANEL_BAR_HEIGHT * scale)*(barnum_top); - elseif framePosition == TITAN_PANEL_PLACE_BOTTOM then - return (TITAN_PANEL_BAR_HEIGHT * scale)*(barnum_bot)-1; - -- no idea why -1 is needed... seems anchoring to bottom is off a pixel - end - end - return 0 -end - ---[[ local -NAME: TitanMovableFrame_GetXOffset -DESC: Get the x axis offset Titan needs to adjust the given frame. -VAR: frame - frame object -VAR: point - "LEFT" / "RIGHT" / "TOP" / "BOTTOM" / "CENTER" -OUT: int - X axis offset, in pixels ---]] -local function TitanMovableFrame_GetXOffset(frame, point) - -- A valid frame and point is required - -- Determine a proper X offset using the given point (position) - local ret = 0 -- In case the inputs were invalid or the point was not relevant to the frame then return 0 - if frame and point then - if point == "LEFT" and frame:GetLeft() and UIParent:GetLeft() then - ret = frame:GetLeft() - UIParent:GetLeft(); - elseif point == "RIGHT" and frame:GetRight() and UIParent:GetRight() then - ret = frame:GetRight() - UIParent:GetRight(); - elseif point == "TOP" and frame:GetTop() and UIParent:GetTop() then - ret = frame:GetTop() - UIParent:GetTop(); - elseif point == "BOTTOM" and frame:GetBottom() and UIParent:GetBottom() then - ret = frame:GetBottom() - UIParent:GetBottom(); - elseif point == "CENTER" and frame:GetLeft() and frame:GetRight() - and UIParent:GetLeft() and UIParent:GetRight() then - local framescale = frame.GetScale and frame:GetScale() or 1; - ret = (frame:GetLeft()* framescale + frame:GetRight() - * framescale - UIParent:GetLeft() - UIParent:GetRight()) / 2; - end - end - - return ret -end - ---[[ Titan -NAME: TitanMovableFrame_CheckFrames -DESC: Determine the frames that may need to be moved at the given position. -VAR: position - TITAN_PANEL_PLACE_TOP / TITAN_PANEL_PLACE_BOTTOM / TITAN_PANEL_PLACE_BOTH -OUT: None ---]] -function TitanMovableFrame_CheckFrames(position) - -- reset the frames to move - TitanMovable = {}; - - -- check top as requested - if (position == TITAN_PANEL_PLACE_TOP) - or position == TITAN_PANEL_PLACE_BOTH then - -- Move PlayerFrame - TitanMovableFrame_CheckThisFrame(PlayerFrame:GetName()) - - -- Move TargetFrame - TitanMovableFrame_CheckThisFrame(TargetFrame:GetName()) - - -- Move PartyMemberFrame - TitanMovableFrame_CheckThisFrame(PartyMemberFrame1:GetName()) - - -- Move TicketStatusFrame - if TitanPanelGetVar("TicketAdjust") then - TitanMovableFrame_CheckThisFrame(TicketStatusFrame:GetName()) - end - - -- Move MinimapCluster - if not CleanMinimap then - if not TitanPanelGetVar("MinimapAdjust") then - TitanMovableFrame_CheckThisFrame(MinimapCluster:GetName()) - end - end - -- Move BuffFrame - TitanMovableFrame_CheckThisFrame(BuffFrame:GetName()) - - -- Move UIWidgetTopCenterContainerFrame - TitanMovableFrame_CheckThisFrame(UIWidgetTopCenterContainerFrame:GetName()); - ---[[ -- Move OrderHallCommandBar - if OrderHallCommandBar then - TitanMovableFrame_CheckThisFrame(OrderHallCommandBar:GetName()); - end]]-- - end - - -- check bottom as requested - if (position == TITAN_PANEL_PLACE_BOTTOM) - or position == TITAN_PANEL_PLACE_BOTH then - - -- Move MainMenuBar - TitanMovableFrame_CheckThisFrame(MainMenuBar:GetName()); - - -- Move OverrideActionBar - TitanMovableFrame_CheckThisFrame(OverrideActionBar:GetName()); - - -- Move MicroButtonAndBagsBar - TitanMovableFrame_CheckThisFrame(MicroButtonAndBagsBar:GetName()); - end -end - ---[[ Titan -NAME: TitanMovableFrame_MoveFrames -DESC: Actually adjust the frames at the given position. -VAR: position - TITAN_PANEL_PLACE_TOP / TITAN_PANEL_PLACE_BOTTOM / TITAN_PANEL_PLACE_BOTH -OUT: None ---]] -function TitanMovableFrame_MoveFrames(position) - -- Once the frames to check have been collected, - -- move them as needed. - local frameData, frame, frameName, frameArchor, xArchor, y, xOffset, yOffset, panelYOffset; - - -- Collect the frames we need to move - TitanMovableFrame_CheckFrames(position); - - -- move them... - if not InCombatLockdown() then - local adj_frame = true - for index, value in pairs(TitanMovable) do - adj_frame = true -- assume the frame is to be adjusted - frameData = TitanMovableData[value]; - if frameData then - frame = _G[frameData.frameName]; - frameName = frameData.frameName; - frameArchor = frameData.frameArchor; - end - - if (frame and (frame:IsUserPlaced())) - then - -- The user has positioned the frame - adj_frame = false - end - if frameData.addonAdj then - -- An addon has taken control of the frame - adj_frame = false - end - - if adj_frame then - xArchor = frameData.xArchor; - y = frameData.y; - - panelYOffset = TitanMovable_GetPanelYOffset(frameData.position); - xOffset = TitanMovableFrame_GetXOffset(frame, xArchor); - - -- properly adjust buff frame(s) if GM Ticket is visible - - -- Use IsShown rather than IsVisible. In some cases (after closing - -- full screen map) the ticket may not yet be visible. - if (frameName == "BuffFrame") - and TicketStatusFrame:IsShown() - and TitanPanelGetVar("TicketAdjust") then - yOffset = (-TicketStatusFrame:GetHeight()) - + panelYOffset - else - yOffset = y + panelYOffset; - end - - -- properly adjust MinimapCluster if its border is hidden - if frameName == "MinimapCluster" - and MinimapBorderTop - and not MinimapBorderTop:IsShown() then - yOffset = yOffset + (MinimapBorderTop:GetHeight() * 3/5) - 5 - end - - -- adjust the MainMenuBar according to its scale - if frameName == "MainMenuBar" and MainMenuBar:IsVisible() then - local framescale = MainMenuBar:GetScale() or 1; - yOffset = yOffset / framescale; - if ( StatusTrackingBarManager:GetNumberVisibleBars() == 2 ) then - yOffset = yOffset + 17; - elseif ( StatusTrackingBarManager:GetNumberVisibleBars() == 1 ) then - yOffset = yOffset + 14; - end - end - - -- account for Reputation Status Bar (doh) - local playerlevel = UnitLevel("player"); - if frameName == "MultiBarRight" - and ReputationWatchStatusBar:IsVisible() - and playerlevel < _G["MAX_PLAYER_LEVEL"] then - yOffset = yOffset + 8; - end - - frame:ClearAllPoints(); - frame:SetPoint(frameArchor, "UIParent", frameArchor, - xOffset, yOffset); - else - --Leave frame where it is as it has been moved by a user - end - -- Move bags as needed - UpdateContainerFrameAnchors(); - end - else - -- nothing to do - end -end - ---[[ Titan -NAME: TitanAdjustBottomFrames -DESC: Adjust the frames at TITAN_PANEL_PLACE_BOTTOM. -VAR: None -OUT: None ---]] -function TitanAdjustBottomFrames() - TitanPanel_AdjustFrames(TITAN_PANEL_PLACE_BOTTOM, true) -end - ---[[ Titan -NAME: Titan_FCF_UpdateDockPosition -DESC: Secure post hook to help adjust the chat / log frame. -VAR: None -OUT: None -NOTE: -- This is required because Blizz adjusts the chat frame relative to other frames so some of the Blizz code is copied. -- If in combat or if the user has moved the chat frame then no action is taken. -- The frame is adjusted in the Y axis only. -:NOTE ---]] -local function Titan_FCF_UpdateDockPosition() - if not Titan__InitializedPEW - or not TitanPanelGetVar("LogAdjust") - or TitanPanelGetVar("AuxScreenAdjust") then - return - end - - if not InCombatLockdown() or (InCombatLockdown() - and not _G["DEFAULT_CHAT_FRAME"]:IsProtected()) then - local panelYOffset = TitanMovable_GetPanelYOffset(TITAN_PANEL_PLACE_BOTTOM); - local scale = TitanPanelGetVar("Scale"); - if scale then - panelYOffset = panelYOffset + (24 * scale) -- after 3.3.5 an additional adjust was needed. why? idk - end - ---[[ Blizz code - if _G["DEFAULT_CHAT_FRAME"]:IsUserPlaced() then - if _G["SIMPLE_CHAT"] ~= "1" then return end - end - - local chatOffset = 85 + panelYOffset; - if GetNumShapeshiftForms() > 0 or HasPetUI() or PetHasActionBar() then - if MultiBarBottomLeft:IsVisible() then - chatOffset = chatOffset + 55; - else - chatOffset = chatOffset + 15; - end - elseif MultiBarBottomLeft:IsVisible() then - chatOffset = chatOffset + 15; - end - _G["DEFAULT_CHAT_FRAME"]:SetPoint("BOTTOMLEFT", "UIParent", "BOTTOMLEFT", 32, chatOffset); - FCF_DockUpdate(); ---]] - if ( DEFAULT_CHAT_FRAME:IsUserPlaced() ) then - return; - end - - local chatOffset = 85 + panelYOffset; -- Titan change to adjust Y offset - if ( GetNumShapeshiftForms() > 0 or HasPetUI() or PetHasActionBar() ) then - if ( MultiBarBottomLeft:IsShown() ) then - chatOffset = chatOffset + 55; - else - chatOffset = chatOffset + 15; - end - elseif ( MultiBarBottomLeft:IsShown() ) then - chatOffset = chatOffset + 15; - end - DEFAULT_CHAT_FRAME:SetPoint("BOTTOMLEFT", "UIParent", "BOTTOMLEFT", - 32, chatOffset); - FCF_DockUpdate(); - end -end - ---[[ Titan -NAME: Titan_ContainerFrames_Relocate -DESC: Secure post hook to help adjust the bag frames. -VAR: None -OUT: None -NOTE: -- The frame is adjusted in the Y axis only. -- The Blizz routine "ContainerFrames_Relocate" should be examined for any conditions it checks and any changes to the SetPoint. -If Blizz changes the anchor points the SetPoint here must change as well!! -The Blizz routine calculates X & Y offsets to UIParent (screen) so there is not need to store the prior offsets. -Like the Blizz routine we search through the visible bags. Unlike the Blizz routine we only care about the first of each column to adjust for Titan. -This way the Blizz code does not need to be copied here. -:NOTE ---]] -local function Titan_ContainerFrames_Relocate() - if not TitanPanelGetVar("BagAdjust") then - return - end - - local panelYOffset = TitanMovable_GetPanelYOffset(TITAN_PANEL_PLACE_BOTTOM) - local off_y = 10000 -- something ridiculously high - local bottom_y = 0 - local right_x = 0 - - for index, frameName in ipairs(ContainerFrame1.bags) do - frame = _G[frameName]; - if frame:GetBottom() then bottom_y = frame:GetBottom() end - if ( bottom_y < off_y ) then - -- Start a new column - right_x = frame:GetRight() - frame:ClearAllPoints(); - frame:SetPoint("BOTTOMRIGHT", frame:GetParent(), - "BOTTOMLEFT", -- changed because we are taking the current x value - right_x, -- x is not adjusted - bottom_y + panelYOffset -- y - ) - end - off_y = bottom_y - end -end - ---[[ Titan -NAME: TitanMovableFrame_AdjustBlizzardFrames -DESC: Calls the helper routines to adjust the chat / log frame and bag frames. -VAR: None -OUT: None -NOTE: -- This is required because Blizz (or addons) could adjust the chat frame outside the events that Titan registers for. -- If in combat or if the user has moved the chat frame then no action is taken. -- The frame is adjusted in the Y axis only. -:NOTE ---]] -local function TitanMovableFrame_AdjustBlizzardFrames() - if not InCombatLockdown() then - Titan_FCF_UpdateDockPosition(); - Titan_ContainerFrames_Relocate(); - end -end - ---[[ Titan -NAME: Titan_AdjustUIScale -DESC: Adjust the scale of Titan bars and plugins to the user selected scaling. This is called by the secure post hooks to the 'Video Options Frame'. -VAR: None -OUT: None ---]] -local function Titan_AdjustUIScale() - Titan_AdjustScale() -end - ---[[ Titan -NAME: Titan_Hook_Adjust_Both -DESC: Adjust top and bottom frames. This is called by the secure post hooks. -VAR: None -OUT: None -NOTE: -- Starts a timer () which is a callback to Titan_ManageFramesNew. -- These could arrive quickly. To prevent many adjusts from stacking, cancel any pending then queue this one. -:NOTE ---]] -local function Titan_Hook_Adjust_Both() - TitanMovable_AdjustTimer("Adjust") -end - ---[[ Titan -NAME: TitanPanel_AdjustFrames -DESC: Adjust the frames at the given position. -VAR: position - TITAN_PANEL_PLACE_TOP / TITAN_PANEL_PLACE_BOTTOM / TITAN_PANEL_PLACE_BOTH -VAR: blizz - true or false -OUT: None -NOTE: -- if blizz is true then the post hook code for chat / log frame and the bag frames is run -:NOTE ---]] -function TitanPanel_AdjustFrames(position, blizz) - -- Adjust frame positions top only, bottom only, or both - TitanMovableFrame_MoveFrames(position) - - -- move the Blizzard frames if requested - if blizz and position == (TITAN_PANEL_PLACE_BOTTOM or TITAN_PANEL_PLACE_TOP) then - TitanMovableFrame_AdjustBlizzardFrames() - end -end - ---[[ Titan -NAME: Titan_ManageFramesNew -DESC: Adjust the frames at TITAN_PANEL_PLACE_BOTH. -VAR: None -OUT: None ---]] -function Titan_ManageFramesNew() - TitanPanel_AdjustFrames(TITAN_PANEL_PLACE_BOTH, false) - return -end - ---[[ Titan -NAME: Titan_AdjustScale -DESC: Update the bars and plugins to the user selected scale. -VAR: None -OUT: None -NOTE: -- Ensure Titan has done its initialization before this is run. -:NOTE ---]] -function Titan_AdjustScale() - -- Only adjust if Titan is fully initialized - if Titan__InitializedPEW then - TitanPanel_SetScale(); - - TitanPanel_ClearAllBarTextures() - TitanPanel_CreateBarTextures() - - for idx,v in pairs (TitanBarData) do - TitanPanel_SetTexture(TITAN_PANEL_DISPLAY_PREFIX..TitanBarData[idx].name - , TITAN_PANEL_PLACE_TOP); - end - - TitanPanelBarButton_DisplayBarsWanted() - TitanPanel_RefreshPanelButtons(); - end -end - -function Titan_ManageFramesTest1() - if Titan__InitializedPEW then - -- We know the desired bars are now drawn so we can adjust - if InCombatLockdown() then - else ---TitanDebug ("Titan_ManageFramesTest1 ") - left = floor(OverrideActionBar:GetLeft() + 0.5) - left = GetScreenWidth() / 2 - bot = floor(OverrideActionBar:GetBottom() + 0.5) -TitanDebug("... OverrideActionBar " -..(bot or "?").." " -..(left or "?").." " -) - point, relFrame, relPoint, xOff, yOff = OverrideActionBar:GetPoint(OverrideActionBar:GetNumPoints()) - OverrideActionBar:ClearAllPoints() - OverrideActionBar:SetPoint("BOTTOM", TitanPanelBottomAnchor, "TOP", left, 0) - OverrideActionBar:SetPoint(point, relFrame, relPoint, xOff, TitanPanelBottomAnchor:GetTop()+0) - left = OverrideActionBar:GetCenter() - bot = OverrideActionBar:GetBottom() -TitanDebug("... OverrideActionBar " -..(bot or "?").." " -..(left or "?").." " -) - - end - end --- There is a chance the person stays in combat so this could --- keep looping... -end - -function Titan_GetFrameOrigPositions() - local orig = {} - local frameData - local point, relTo, relPoint, xOff, yOff = "", {}, "", 0, 0 - local relFrame = "" - for index, value in pairs(TitanMovableData) do - frameData = TitanMovableData[index]; - if frameData then - point, relTo, relPoint, xOff, yOff = "", {}, "", 0, 0 - frame = _G[frameData.frameName]; - point, relTo, relPoint, xOff, yOff = frame:GetPoint(frame:GetNumPoints()) -TitanDebug("Orig: " -..frameData.frameName.." " -..relTo:GetName() or "?".." " -) - orig = { - point = point, - relTo = relTo, - relPoint = relPoint, - xOff = xOff, - yOff = yOff, - } - TitanMovableOrig[frameData.frameName] = orig - end - end -end - -function Titan_SetFrameOrigPositions() - local left = 0 - local bot = 0 - -- TESTING!!! -TitanDebug("TESTING!!: Setting frames to Titan anchor " -..(TitanPanelBottomAnchor:GetTop() or "?").." " -) - left = MainMenuBar:GetLeft() - left = GetScreenWidth() / 2 - bot = MainMenuBar:GetBottom() -TitanDebug("... MainMenuBar " -..(bot or "?").." " -..(left or "?").." " -) --- local point, relFrame, relPoint, xOff, yOff = MainMenuBar:GetPoint(MainMenuBar:GetNumPoints()) - MainMenuBar:ClearAllPoints() - MainMenuBar:SetPoint("BOTTOM", TitanPanelBottomAnchor, "TOP", left, 0) --- MainMenuBar:SetPoint(point, relFrame, relPoint, xOff, TitanPanelBottomAnchor:GetTop()+0) - left = MainMenuBar:GetLeft() - bot = MainMenuBar:GetBottom() -TitanDebug("... MainMenuBar " -..(bot or "?").." " -..(left or "?").." " -) - - left = floor(OverrideActionBar:GetLeft() + 0.5) - left = GetScreenWidth() / 2 - bot = floor(OverrideActionBar:GetBottom() + 0.5) -TitanDebug("... OverrideActionBar " -..(bot or "?").." " -..(left or "?").." " -) --- point, relFrame, relPoint, xOff, yOff = OverrideActionBar:GetPoint(OverrideActionBar:GetNumPoints()) - OverrideActionBar:ClearAllPoints() - OverrideActionBar:SetPoint("BOTTOM", TitanPanelBottomAnchor, "TOP", left, 0) --- OverrideActionBar:SetPoint(point, relFrame, relPoint, xOff, TitanPanelBottomAnchor:GetTop()+0) - left = OverrideActionBar:GetCenter() - bot = OverrideActionBar:GetBottom() -TitanDebug("... OverrideActionBar " -..(bot or "?").." " -..(left or "?").." " -) - - if false then - left = MultiBarRight:GetLeft() - MultiBarRight:ClearAllPoints() - MultiBarRight:SetPoint("BOTTOMLEFT", TitanPanelBottomAnchor, "TOP", left, 98) - - left = TargetFrame:GetLeft() - TargetFrame:ClearAllPoints() - TargetFrame:SetPoint("TOPLEFT", TitanPanelTopAnchor, "BOTTOM", left, -4) - - left = PlayerFrame:GetLeft() - PlayerFrame:ClearAllPoints() - PlayerFrame:SetPoint("TOPLEFT", TitanPanelTopAnchor, "BOTTOM", left, -4) - - left = PartyMemberFrame1:GetLeft() - PartyMemberFrame1:ClearAllPoints() - PartyMemberFrame1:SetPoint("TOPLEFT", TitanPanelTopAnchor, "BOTTOM", left, -128) - - left = TicketStatusFrame:GetLeft() - TicketStatusFrame:ClearAllPoints() - TicketStatusFrame:SetPoint("TOPLEFT", TitanPanelTopAnchor, "BOTTOM", left, 0) - - left = BuffFrame:GetLeft() - BuffFrame:ClearAllPoints() - BuffFrame:SetPoint("TOPLEFT", TitanPanelTopAnchor, "BOTTOM", left, -13) - - left = MinimapCluster:GetLeft() - MinimapCluster:ClearAllPoints() - MinimapCluster:SetPoint("TOPLEFT", TitanPanelTopAnchor, "BOTTOM", left, 0) - end -end - ---[[ Titan -NAME: TitanMovable_SecureFrames -DESC: Once Titan is initialized create the post hooks we need to help adjust frames properly. -VAR: None -OUT: None -NOTE: -- The secure post hooks are required because Blizz adjusts frames Titan is interested in at times other than the events Titan registers for. -- This used to be inline code but was moved to a routine to avoid errors as Titan loaded. -:NOTE ---]] -function TitanMovable_SecureFrames() - if not TitanPanelAce:IsHooked("FCF_UpdateDockPosition", Titan_FCF_UpdateDockPosition) then - TitanPanelAce:SecureHook("FCF_UpdateDockPosition", Titan_FCF_UpdateDockPosition) -- FloatingChatFrame - end - if not TitanPanelAce:IsHooked("UIParent_ManageFramePositions", Titan_Hook_Adjust_Both) then - TitanPanelAce:SecureHook("UIParent_ManageFramePositions", Titan_Hook_Adjust_Both) -- UIParent.lua - TitanPanel_AdjustFrames(TITAN_PANEL_PLACE_BOTTOM, false) - end - - if not TitanPanelAce:IsHooked(TicketStatusFrame, "Show", Titan_Hook_Adjust_Both) then - -- Titan Hooks to Blizzard Frame positioning functions - --TitanPanelAce:SecureHook("TicketStatusFrame_OnShow", Titan_Hook_Adjust_Both) -- HelpFrame.xml - --TitanPanelAce:SecureHook("TicketStatusFrame_OnHide", Titan_Hook_Adjust_Both) -- HelpFrame.xml - TitanPanelAce:SecureHook(TicketStatusFrame, "Show", Titan_Hook_Adjust_Both) -- HelpFrame.xml - TitanPanelAce:SecureHook(TicketStatusFrame, "Hide", Titan_Hook_Adjust_Both) -- HelpFrame.xml - TitanPanelAce:SecureHook(MainMenuBar, "Show", Titan_Hook_Adjust_Both) -- HelpFrame.xml - TitanPanelAce:SecureHook(MainMenuBar, "Hide", Titan_Hook_Adjust_Both) -- HelpFrame.xml - TitanPanelAce:SecureHook(OverrideActionBar, "Show", Titan_Hook_Adjust_Both) -- HelpFrame.xml - TitanPanelAce:SecureHook(OverrideActionBar, "Hide", Titan_Hook_Adjust_Both) -- HelpFrame.xml --- TitanPanelAce:SecureHook(OverrideActionBar, "Show", Titan_ManageFramesTest1) -- HelpFrame.xml --- TitanPanelAce:SecureHook(OverrideActionBar, "Hide", Titan_ManageFramesTest1) -- HelpFrame.xml - TitanPanelAce:SecureHook("UpdateContainerFrameAnchors", Titan_ContainerFrames_Relocate) -- ContainerFrame.lua - TitanPanelAce:SecureHook(WorldMapFrame, "Hide", Titan_Hook_Adjust_Both) -- WorldMapFrame.lua - TitanPanelAce:SecureHook("BuffFrame_Update", Titan_Hook_Adjust_Both) -- BuffFrame.lua - end - - if not TitanPanelAce:IsHooked("VideoOptionsFrameOkay_OnClick", Titan_AdjustUIScale) then - -- Properly Adjust UI Scale if set - -- Note: These are the least intrusive hooks we could think of, to properly adjust the Titan Bar(s) - -- without having to resort to a SetCvar secure hook. Any addon using SetCvar should make sure to use the 3rd - -- argument in the API call and trigger the CVAR_UPDATE event with an appropriate argument so that other addons - -- can detect this behavior and fire their own functions (where applicable). - TitanPanelAce:SecureHook("VideoOptionsFrameOkay_OnClick", Titan_AdjustUIScale) -- VideoOptionsFrame.lua - TitanPanelAce:SecureHook(VideoOptionsFrame, "Hide", Titan_AdjustUIScale) -- VideoOptionsFrame.xml - end - --- TitanPanelAce:SecureHook(OverrideActionBar, "SetPoint", Titan_ManageFramesTest1) -- -end diff --git a/TitanLocation/TitanLocation.lua b/TitanLocation/TitanLocation.lua deleted file mode 100644 index 4f0d584..0000000 --- a/TitanLocation/TitanLocation.lua +++ /dev/null @@ -1,565 +0,0 @@ --- ************************************************************************** --- * TitanLocation.lua --- * --- * By: TitanMod, Dark Imakuni, Adsertor and the Titan Development Team --- ************************************************************************** - --- ******************************** Constants ******************************* -local _G = getfenv(0); -local TITAN_LOCATION_ID = "Location"; -local OFFSET_X = 0.0022 -- 0.0022; -local OFFSET_Y = -0.0262 -- -0.0262; -local cachedX = 0 -local cachedY = 0 -local updateTable = {TITAN_LOCATION_ID, TITAN_PANEL_UPDATE_BUTTON}; --- ******************************** Variables ******************************* -local L = LibStub("AceLocale-3.0"):GetLocale("Titan", true) -local AceTimer = LibStub("AceTimer-3.0") -local LocationTimer = nil; --- ******************************** Functions ******************************* - --- ************************************************************************** --- NAME : TitanPanelLocationButton_OnLoad() --- DESC : Registers the plugin upon it loading --- ************************************************************************** -function TitanPanelLocationButton_OnLoad(self) - self.registry = { - id = TITAN_LOCATION_ID, - category = "Built-ins", - version = TITAN_VERSION, - menuText = L["TITAN_LOCATION_MENU_TEXT"], - buttonTextFunction = "TitanPanelLocationButton_GetButtonText", - tooltipTitle = L["TITAN_LOCATION_TOOLTIP"], - tooltipTextFunction = "TitanPanelLocationButton_GetTooltipText", - icon = "Interface\\AddOns\\TitanLocation\\TitanLocation", - iconWidth = 16, - controlVariables = { - ShowIcon = true, - ShowLabelText = true, - ShowRegularText = false, - ShowColoredText = true, - DisplayOnRightSide = false - }, - savedVariables = { - ShowZoneText = 1, - ShowCoordsOnMap = true, - ShowCursorOnMap = true, - ShowLocOnMiniMap = 1, - ShowIcon = 1, - ShowLabelText = 1, - ShowColoredText = 1, - CoordsFormat1 = 1, - CoordsFormat2 = false, - CoordsFormat3 = false, - UpdateWorldmap = false, - } - }; - - self:RegisterEvent("ZONE_CHANGED"); - self:RegisterEvent("ZONE_CHANGED_INDOORS"); - self:RegisterEvent("ZONE_CHANGED_NEW_AREA"); - self:RegisterEvent("PLAYER_ENTERING_WORLD"); -end - --- ************************************************************************** --- NAME : TitanPanelLocationButton_OnShow() --- DESC : Display button when plugin is visible --- ************************************************************************** -function TitanPanelLocationButton_OnShow() - local mapID = C_Map.GetBestMapForUnit("player"); - WorldMapFrame:SetMapID(mapID); - TitanPanelLocation_HandleUpdater(); -end - --- ************************************************************************** --- NAME : TitanPanelLocationButton_OnHide() --- DESC : Destroy repeating timer when plugin is hidden --- ************************************************************************** -function TitanPanelLocationButton_OnHide() - AceTimer.CancelTimer("TitanPanelLocation", LocationTimer, true) - LocationTimer = nil; -end - --- ************************************************************************** --- NAME : TitanPanelLocationButton_GetButtonText(id) --- DESC : Calculate coordinates and then display data on button --- VARS : id = button ID --- ************************************************************************** -function TitanPanelLocationButton_GetButtonText(id) - local button, id = TitanUtils_GetButton(id, true); - - button.px, button.py = TitanPanelGetPlayerMapPosition(); - -- cache coordinates for update checking later on - cachedX = button.px; - cachedY = button.py; - if button.px == nil then button.px = 0 end - if button.py == nil then button.py = 0 end - local locationText = ""; - if (TitanGetVar(TITAN_LOCATION_ID, "CoordsFormat1")) then - locationText = format(L["TITAN_LOCATION_FORMAT"], 100 * button.px, 100 * button.py); - elseif (TitanGetVar(TITAN_LOCATION_ID, "CoordsFormat2")) then - locationText = format(L["TITAN_LOCATION_FORMAT2"], 100 * button.px, 100 * button.py); - elseif (TitanGetVar(TITAN_LOCATION_ID, "CoordsFormat3")) then - locationText = format(L["TITAN_LOCATION_FORMAT3"], 100 * button.px, 100 * button.py); - end - - if button.px == 0 and button.py == 0 then - locationText = ""; - end - - if (TitanGetVar(TITAN_LOCATION_ID, "ShowZoneText")) then - if (TitanUtils_ToString(button.subZoneText) == '') then - if (button.zoneText == '') then - _, _, button.zoneText = C_Map.GetMapInfo(C_Map.GetBestMapUnit("player")); - end - locationText = TitanUtils_ToString(button.zoneText)..' '..locationText; - else - locationText = TitanUtils_ToString(button.subZoneText)..' '..locationText; - end - else - if button.px == 0 and button.py == 0 then - locationText = L["TITAN_LOCATION_NO_COORDS"]; - end - end - - local locationRichText; - if (TitanGetVar(TITAN_LOCATION_ID, "ShowColoredText")) then - if (TitanPanelLocationButton.isArena) then - locationRichText = TitanUtils_GetRedText(locationText); - elseif (TitanPanelLocationButton.pvpType == "friendly") then - locationRichText = TitanUtils_GetGreenText(locationText); - elseif (TitanPanelLocationButton.pvpType == "hostile") then - locationRichText = TitanUtils_GetRedText(locationText); - elseif (TitanPanelLocationButton.pvpType == "contested") then - locationRichText = TitanUtils_GetNormalText(locationText); - else - locationRichText = TitanUtils_GetNormalText(locationText); - end - else - locationRichText = TitanUtils_GetHighlightText(locationText); - end - - return L["TITAN_LOCATION_BUTTON_LABEL"], locationRichText; -end - --- ************************************************************************** --- NAME : TitanPanelLocationButton_GetTooltipText() --- DESC : Display tooltip text --- ************************************************************************** -function TitanPanelLocationButton_GetTooltipText() - local pvpInfoRichText; - - pvpInfoRichText = ""; - if (TitanPanelLocationButton.pvpType == "sanctuary") then - pvpInfoRichText = TitanUtils_GetGreenText(SANCTUARY_TERRITORY); - elseif (TitanPanelLocationButton.pvpType == "arena") then - TitanPanelLocationButton.subZoneText = TitanUtils_GetRedText(TitanPanelLocationButton.subZoneText); - pvpInfoRichText = TitanUtils_GetRedText(CONTESTED_TERRITORY); - elseif (TitanPanelLocationButton.pvpType == "friendly") then - pvpInfoRichText = TitanUtils_GetGreenText(format(FACTION_CONTROLLED_TERRITORY, TitanPanelLocationButton.factionName)); - elseif (TitanPanelLocationButton.pvpType == "hostile") then - pvpInfoRichText = TitanUtils_GetRedText(format(FACTION_CONTROLLED_TERRITORY, TitanPanelLocationButton.factionName)); - elseif (TitanPanelLocationButton.pvpType == "contested") then - pvpInfoRichText = TitanUtils_GetRedText(CONTESTED_TERRITORY); - else - --pvpInfoRichText = TitanUtils_GetNormalText(CONTESTED_TERRITORY); - end - - return "".. - L["TITAN_LOCATION_TOOLTIP_ZONE"].."\t"..TitanUtils_GetHighlightText(TitanPanelLocationButton.zoneText).."\n".. - TitanUtils_Ternary((TitanPanelLocationButton.subZoneText == ""), "", L["TITAN_LOCATION_TOOLTIP_SUBZONE"].."\t"..TitanUtils_GetHighlightText(TitanPanelLocationButton.subZoneText).."\n").. - TitanUtils_Ternary((pvpInfoRichText == ""), "", L["TITAN_LOCATION_TOOLTIP_PVPINFO"].."\t"..pvpInfoRichText.."\n").. - "\n".. - TitanUtils_GetHighlightText(L["TITAN_LOCATION_TOOLTIP_HOMELOCATION"]).."\n".. - L["TITAN_LOCATION_TOOLTIP_INN"].."\t"..TitanUtils_GetHighlightText(GetBindLocation()).."\n".. - TitanUtils_GetGreenText(L["TITAN_LOCATION_TOOLTIP_HINTS_1"]).."\n".. - TitanUtils_GetGreenText(L["TITAN_LOCATION_TOOLTIP_HINTS_2"]); -end - --- ************************************************************************** --- NAME : TitanPanelLocationButton_OnEvent() --- DESC : Parse events registered to plugin and act on them --- ************************************************************************** -function TitanPanelLocationButton_OnEvent(self, event, ...) - if event == "PLAYER_ENTERING_WORLD" then - if not TitanGetVar(TITAN_LOCATION_ID, "ShowLocOnMiniMap") and MinimapBorderTop and MinimapBorderTop:IsShown() then - TitanPanelLocationButton_LocOnMiniMap() - end - end - if TitanGetVar(TITAN_LOCATION_ID, "UpdateWorldmap") then - local mapID = C_Map.GetBestMapForUnit("player") - WorldMapFrame:SetMapID(mapID) - end - TitanPanelLocationButton_UpdateZoneInfo(self); - TitanPanelPluginHandle_OnUpdate(updateTable); - TitanPanelLocation_HandleUpdater(); -end - --- function to throttle down unnecessary updates -function TitanPanelLocationButton_CheckForUpdate() - local mapID = C_Map.GetBestMapForUnit("player") - local tempx, tempy = TitanPanelGetPlayerMapPosition(); - if tempx ~= cachedX or tempy ~= cachedY then - TitanPanelPluginHandle_OnUpdate(updateTable); - end -end - --- ************************************************************************** --- NAME : TitanPanelLocation_HandleUpdater() --- DESC : Check to see if you are inside an instance --- ************************************************************************** -function TitanPanelLocation_HandleUpdater() - if TitanPanelLocationButton:IsVisible() and not LocationTimer then - LocationTimer = AceTimer.ScheduleRepeatingTimer("TitanPanelLocation", TitanPanelLocationButton_CheckForUpdate, 0.5) - end -end - --- ************************************************************************** --- NAME : TitanPanelLocationButton_OnClick(button) --- DESC : Copies coordinates to chat line for shift-LeftClick --- VARS : button = value of action --- ************************************************************************** -function TitanPanelLocationButton_OnClick(self, button) - if (button == "LeftButton") then - if (IsShiftKeyDown()) then - local activeWindow = ChatEdit_GetActiveWindow(); - if ( activeWindow ) then - if (TitanGetVar(TITAN_LOCATION_ID, "CoordsFormat1")) then - message = TitanUtils_ToString(self.zoneText).." ".. - format(L["TITAN_LOCATION_FORMAT"], 100 * self.px, 100 * self.py); - elseif (TitanGetVar(TITAN_LOCATION_ID, "CoordsFormat2")) then - message = TitanUtils_ToString(self.zoneText).." ".. - format(L["TITAN_LOCATION_FORMAT2"], 100 * self.px, 100 * self.py); - elseif (TitanGetVar(TITAN_LOCATION_ID, "CoordsFormat3")) then - message = TitanUtils_ToString(self.zoneText).." ".. - format(L["TITAN_LOCATION_FORMAT3"], 100 * self.px, 100 * self.py); - end - activeWindow:Insert(message); - end - else - --WorldMap_ToggleSizeUp(); - if (not GetCVarBool("miniWorldMap")) then - --/; # Deprecated in WoW 8.0.1 - end - ToggleFrame(WorldMapFrame); - end - end ---[[ --- Works great when map is small. When map is large, Titan stays on top. --- Sometimes other buttons stay on top of map. --- Think we'd have to adjust strata of anything touched by TitanMovable - if (button == "LeftButton") then - if ( WORLDMAP_SETTINGS.size == WORLDMAP_WINDOWED_SIZE ) then - if ( WorldMapFrame:IsVisible() ) then - WorldMapFrame:Hide() - else - WorldMapFrame:Show() - end - end - end ---]] -end - --- ************************************************************************** --- NAME : TitanPanelLocationButton_UpdateZoneInfo() --- DESC : Update data on button --- ************************************************************************** -function TitanPanelLocationButton_UpdateZoneInfo(self) - local _ = nil - self.zoneText = GetZoneText(); - self.subZoneText = GetSubZoneText(); - --self.minimapZoneText = GetMinimapZoneText(); - self.pvpType, _, self.factionName = GetZonePVPInfo(); -end - --- ************************************************************************** --- NAME : TitanPanelRightClickMenu_PrepareLocationMenu() --- DESC : Display rightclick menu options --- ************************************************************************** -function TitanPanelRightClickMenu_PrepareLocationMenu() - local info - - -- level 2 - if _G["L_UIDROPDOWNMENU_MENU_LEVEL"] == 2 then - if _G["L_UIDROPDOWNMENU_MENU_VALUE"] == "Options" then - TitanPanelRightClickMenu_AddTitle(L["TITAN_PANEL_OPTIONS"], _G["L_UIDROPDOWNMENU_MENU_LEVEL"]); - info = {}; - info.text = L["TITAN_LOCATION_MENU_SHOW_ZONE_ON_PANEL_TEXT"]; - info.func = TitanPanelLocationButton_ToggleDisplay; - info.checked = TitanGetVar(TITAN_LOCATION_ID, "ShowZoneText"); - L_UIDropDownMenu_AddButton(info, _G["L_UIDROPDOWNMENU_MENU_LEVEL"]); - - info = {}; - info.text = L["TITAN_LOCATION_MENU_SHOW_COORDS_ON_MAP_TEXT"]; - info.func = TitanPanelLocationButton_ToggleLocationOnMap; - info.checked = TitanGetVar(TITAN_LOCATION_ID, "ShowCoordsOnMap"); - L_UIDropDownMenu_AddButton(info, _G["L_UIDROPDOWNMENU_MENU_LEVEL"]); - - info = {}; - info.text = L["TITAN_LOCATION_MENU_SHOW_LOC_ON_MINIMAP_TEXT"]; - info.func = TitanPanelLocationButton_ToggleLocOnMiniMap; - info.checked = TitanGetVar(TITAN_LOCATION_ID, "ShowLocOnMiniMap"); - info.disabled = InCombatLockdown() - L_UIDropDownMenu_AddButton(info, _G["L_UIDROPDOWNMENU_MENU_LEVEL"]); - - info = {}; - info.text = L["TITAN_LOCATION_MENU_UPDATE_WORLD_MAP"]; - info.func = function() - TitanToggleVar(TITAN_LOCATION_ID, "UpdateWorldmap"); - end - info.checked = TitanGetVar(TITAN_LOCATION_ID, "UpdateWorldmap"); - info.disabled = InCombatLockdown() - L_UIDropDownMenu_AddButton(info, _G["L_UIDROPDOWNMENU_MENU_LEVEL"]); - end - if _G["L_UIDROPDOWNMENU_MENU_VALUE"] == "CoordFormat" then - TitanPanelRightClickMenu_AddTitle(L["TITAN_LOCATION_FORMAT_COORD_LABEL"], _G["L_UIDROPDOWNMENU_MENU_LEVEL"]); - info = {}; - info.text = L["TITAN_LOCATION_FORMAT_LABEL"]; - info.func = function() - TitanSetVar(TITAN_LOCATION_ID, "CoordsFormat1", 1); - TitanSetVar(TITAN_LOCATION_ID, "CoordsFormat2", nil); - TitanSetVar(TITAN_LOCATION_ID, "CoordsFormat3", nil); - TitanPanelButton_UpdateButton(TITAN_LOCATION_ID); - end - info.checked = TitanGetVar(TITAN_LOCATION_ID, "CoordsFormat1"); - L_UIDropDownMenu_AddButton(info, _G["L_UIDROPDOWNMENU_MENU_LEVEL"]); - - info = {}; - info.text = L["TITAN_LOCATION_FORMAT2_LABEL"]; - info.func = function() - TitanSetVar(TITAN_LOCATION_ID, "CoordsFormat1", nil); - TitanSetVar(TITAN_LOCATION_ID, "CoordsFormat2", 1); - TitanSetVar(TITAN_LOCATION_ID, "CoordsFormat3", nil); - TitanPanelButton_UpdateButton(TITAN_LOCATION_ID); - end - info.checked = TitanGetVar(TITAN_LOCATION_ID, "CoordsFormat2"); - L_UIDropDownMenu_AddButton(info, _G["L_UIDROPDOWNMENU_MENU_LEVEL"]); - - info = {}; - info.text = L["TITAN_LOCATION_FORMAT3_LABEL"]; - info.func = function() - TitanSetVar(TITAN_LOCATION_ID, "CoordsFormat1", nil); - TitanSetVar(TITAN_LOCATION_ID, "CoordsFormat2", nil); - TitanSetVar(TITAN_LOCATION_ID, "CoordsFormat3", 1); - TitanPanelButton_UpdateButton(TITAN_LOCATION_ID); - end - info.checked = TitanGetVar(TITAN_LOCATION_ID, "CoordsFormat3"); - L_UIDropDownMenu_AddButton(info, _G["L_UIDROPDOWNMENU_MENU_LEVEL"]); - end - return - end - - -- level 1 - TitanPanelRightClickMenu_AddTitle(TitanPlugins[TITAN_LOCATION_ID].menuText); - - info = {}; - info.notCheckable = true - info.text = L["TITAN_PANEL_OPTIONS"]; - info.value = "Options" - info.hasArrow = 1; - L_UIDropDownMenu_AddButton(info); - - info = {}; - info.notCheckable = true - info.text = L["TITAN_LOCATION_FORMAT_COORD_LABEL"]; - info.value = "CoordFormat" - info.hasArrow = 1; - L_UIDropDownMenu_AddButton(info); - - TitanPanelRightClickMenu_AddSpacer(); - TitanPanelRightClickMenu_AddToggleIcon(TITAN_LOCATION_ID); - TitanPanelRightClickMenu_AddToggleLabelText(TITAN_LOCATION_ID); - TitanPanelRightClickMenu_AddToggleColoredText(TITAN_LOCATION_ID); - TitanPanelRightClickMenu_AddSpacer(); - TitanPanelRightClickMenu_AddCommand(L["TITAN_PANEL_MENU_HIDE"], TITAN_LOCATION_ID, TITAN_PANEL_MENU_FUNC_HIDE); -end - --- ************************************************************************** --- NAME : TitanPanelLocationButton_ToggleDisplay() --- DESC : Set option to show zone text --- ************************************************************************** -function TitanPanelLocationButton_ToggleDisplay() - TitanToggleVar(TITAN_LOCATION_ID, "ShowZoneText"); - TitanPanelButton_UpdateButton(TITAN_LOCATION_ID); -end - --- ************************************************************************** --- NAME : TitanPanelLocationButton_ToggleLocationOnMap() --- DESC : Set option to show player coordinates on map --- ************************************************************************** -function TitanPanelLocationButton_ToggleLocationOnMap() - TitanToggleVar(TITAN_LOCATION_ID, "ShowCoordsOnMap"); - if (TitanGetVar(TITAN_LOCATION_ID, "ShowCoordsOnMap")) then - TitanMapPlayerLocation:Show(); - else - TitanMapPlayerLocation:Hide(); - end -end - --- ************************************************************************** --- NAME : TitanPanelLocationButton_ToggleCursorLocationOnMap() --- DESC : Set option to show cursor coordinates on map --- ************************************************************************** -function TitanPanelLocationButton_ToggleCursorLocationOnMap() - TitanToggleVar(TITAN_LOCATION_ID, "ShowCursorOnMap"); - if (TitanGetVar(TITAN_LOCATION_ID, "ShowCursorOnMap")) then - TitanMapCursorLocation:Show(); - else - TitanMapCursorLocation:Hide(); - end -end - -function TitanPanelLocationButton_ToggleLocOnMiniMap() - TitanToggleVar(TITAN_LOCATION_ID, "ShowLocOnMiniMap"); - TitanPanelLocationButton_LocOnMiniMap() -end - -function TitanPanelLocationButton_LocOnMiniMap() - if TitanGetVar(TITAN_LOCATION_ID, "ShowLocOnMiniMap") then - MinimapBorderTop:Show() - MinimapZoneTextButton:Show() - MiniMapWorldMapButton:Show() - else - MinimapBorderTop:Hide() - MinimapZoneTextButton:Hide() - MiniMapWorldMapButton:Hide() - end - -- adjust MiniMap frame if needed - TitanMovableFrame_CheckFrames(1); - TitanMovableFrame_MoveFrames(1, TitanPanelGetVar("ScreenAdjust")); -end - --- ************************************************************************** --- NAME : TitanPanelLocationButton_ToggleColor() --- DESC : Set option to show colored text --- ************************************************************************** -function TitanPanelLocationButton_ToggleColor() - TitanToggleVar(TITAN_LOCATION_ID, "ShowColoredText"); - TitanPanelButton_UpdateButton(TITAN_LOCATION_ID); -end - --- ************************************************************************** --- NAME : TitanMapFrame_OnUpdate() --- DESC : Update coordinates on map --- ************************************************************************** -function TitanMapFrame_OnUpdate(self, elapsed) - -- using :Hide / :Show prevents coords from running - -- TitanMapFrame:Hide() -- hide parent - - -- Determine the text to show for player coords - ---[[ - if WorldMapFrame:IsVisible() then - TitanMapPlayerLocation:SetText(""); - else - self.px, self.py = TitanPanelGetPlayerMapPosition(); - if self.px == nil then self.px = 0 end - if self.py == nil then self.py = 0 end - if self.px == 0 and self.py == 0 then - playerLocationText = L["TITAN_LOCATION_NO_COORDS"] - else - if (TitanGetVar(TITAN_LOCATION_ID, "CoordsFormat1")) then - playerLocationText = format(L["TITAN_LOCATION_FORMAT"], 100 * self.px, 100 * self.py); - elseif (TitanGetVar(TITAN_LOCATION_ID, "CoordsFormat2")) then - playerLocationText = format(L["TITAN_LOCATION_FORMAT2"], 100 * self.px, 100 * self.py); - elseif (TitanGetVar(TITAN_LOCATION_ID, "CoordsFormat3")) then - playerLocationText = format(L["TITAN_LOCATION_FORMAT3"], 100 * self.px, 100 * self.py); - end - end - TitanMapPlayerLocation:SetText(format(L["TITAN_LOCATION_MAP_PLAYER_COORDS_TEXT"], TitanUtils_GetHighlightText(playerLocationText))); - end -]] - if WorldMapFrame:IsMaximized() then - self.px, self.py = TitanPanelGetPlayerMapPosition(); - if self.px == nil then self.px = 0 end - if self.py == nil then self.py = 0 end - if self.px == 0 and self.py == 0 then - playerLocationText = L["TITAN_LOCATION_NO_COORDS"] - else - if (TitanGetVar(TITAN_LOCATION_ID, "CoordsFormat1")) then - playerLocationText = format(L["TITAN_LOCATION_FORMAT"], 100 * self.px, 100 * self.py); - elseif (TitanGetVar(TITAN_LOCATION_ID, "CoordsFormat2")) then - playerLocationText = format(L["TITAN_LOCATION_FORMAT2"], 100 * self.px, 100 * self.py); - elseif (TitanGetVar(TITAN_LOCATION_ID, "CoordsFormat3")) then - playerLocationText = format(L["TITAN_LOCATION_FORMAT3"], 100 * self.px, 100 * self.py); - end - end - TitanMapPlayerLocation:SetText(format(L["TITAN_LOCATION_MAP_PLAYER_COORDS_TEXT"], TitanUtils_GetHighlightText(playerLocationText))); - else - TitanMapPlayerLocation:SetText(""); - end - - -- Determine the text to show for cursor coords - - -- calc cursor position on the map - local cursorLocationText, playerLocationText; - local x, y = GetCursorPosition(); - x = x / WorldMapFrame:GetEffectiveScale(); - y = y / WorldMapFrame:GetEffectiveScale(); - - local centerX, centerY = WorldMapFrame:GetCenter(); - local width = WorldMapFrame:GetWidth(); - local height = WorldMapFrame:GetHeight(); - local cx = ((x - (centerX - (width/2))) / width) -- OFFSET_X - local cy = ((centerY + (height/2) - y ) / height) -- OFFSET_Y - -- cut off if the cursor coords are beyond the map, show 0,0 - if cx < 0 or cx > 1 or cy < 0 or cy > 1 then - cx = 0 - cy = 0 - end - -- per the user requested format - if (TitanGetVar(TITAN_LOCATION_ID, "CoordsFormat1")) then - cursorLocationText = format(L["TITAN_LOCATION_FORMAT"], 100 * cx, 100 * cy); - elseif (TitanGetVar(TITAN_LOCATION_ID, "CoordsFormat2")) then - cursorLocationText = format(L["TITAN_LOCATION_FORMAT2"], 100 * cx, 100 * cy); - elseif (TitanGetVar(TITAN_LOCATION_ID, "CoordsFormat3")) then - cursorLocationText = format(L["TITAN_LOCATION_FORMAT3"], 100 * cx, 100 * cy); - end - if (TitanGetVar(TITAN_LOCATION_ID, "ShowCoordsOnMap")) then - TitanMapCursorLocation:SetText(format(L["TITAN_LOCATION_MAP_CURSOR_COORDS_TEXT"], - TitanUtils_GetHighlightText(cursorLocationText))); - else - TitanMapCursorLocation:SetText(""); - end - - -- Determine where to show the text - - -- * - TitanMapPlayerLocation:ClearAllPoints() ---[[ - if ( WorldMapFrame:IsVisible() ) then - -- ** - TitanMapPlayerLocation:SetPoint("TOPLEFT", WorldMapFrame, "TOPLEFT", 75, -12) - else - x_offset = (WorldMapFrame:GetWidth() / 1.6) -- left fifth of map - - (TitanMapPlayerLocation:GetWidth() / 1.8) -- center of coords - TitanMapPlayerLocation:SetPoint("BOTTOMLEFT", WorldMapFrame, "BOTTOMLEFT", x_offset, 10) - end -]] - if WorldMapFrame:IsMaximized() then - x_offset = (WorldMapFrame:GetWidth() / 1.6) -- left fifth of map - - (TitanMapPlayerLocation:GetWidth() / 1.8) -- center of coords - TitanMapPlayerLocation:SetPoint("BOTTOMLEFT", WorldMapFrame, "BOTTOMLEFT", x_offset, 10) - else - TitanMapPlayerLocation:SetPoint("TOPLEFT", WorldMapFrame, "TOPLEFT", 75, -12) - end -end - --- ************************************************************************** --- NAME : TitanPanelGetPlayerMapPosition() --- DESC : Get the player coordinates --- VARS : x = location on x axis, y = location on y axis --- ************************************************************************** -function TitanPanelGetPlayerMapPosition() - local mapID = C_Map.GetBestMapForUnit("player") - if mapID == nil then - return nil, nil - end - - local position = C_Map.GetPlayerMapPosition(mapID, "player") - if position == nil then - return nil, nil - else - return position:GetXY() - end -end diff --git a/TitanPerformance/TitanPerformance.lua b/TitanPerformance/TitanPerformance.lua deleted file mode 100644 index 5e7ffc8..0000000 --- a/TitanPerformance/TitanPerformance.lua +++ /dev/null @@ -1,780 +0,0 @@ --- ************************************************************************** --- * TitanPerformance.lua --- * --- * By: TitanMod, Dark Imakuni, Adsertor and the Titan Development Team --- ************************************************************************** - --- ******************************** Constants ******************************* -local TITAN_PERFORMANCE_ID = "Performance"; -local TITAN_PERF_FRAME_SHOW_TIME = 0.5; -local updateTable = {TITAN_PERFORMANCE_ID, TITAN_PANEL_UPDATE_ALL}; - -local TITAN_FPS_THRESHOLD_TABLE = { - Values = { 20, 30 }, - Colors = { RED_FONT_COLOR, NORMAL_FONT_COLOR, GREEN_FONT_COLOR }, -} -local TITAN_LATENCY_THRESHOLD_TABLE = { - Values = { PERFORMANCEBAR_LOW_LATENCY, PERFORMANCEBAR_MEDIUM_LATENCY }, - Colors = { GREEN_FONT_COLOR, NORMAL_FONT_COLOR, RED_FONT_COLOR }, -} -local TITAN_MEMORY_RATE_THRESHOLD_TABLE = { - Values = { 1, 2 }, - Colors = { GREEN_FONT_COLOR, NORMAL_FONT_COLOR, RED_FONT_COLOR }, -} - --- ******************************** Variables ******************************* -local _G = getfenv(0); -local topAddOns; -local memUsageSinceGC = {}; -local counter = 1; --counter for active addons -local L = LibStub("AceLocale-3.0"):GetLocale("Titan", true) -local AceTimer = LibStub("AceTimer-3.0") -local PerfTimer = nil; --- ******************************** Functions ******************************* - --- ************************************************************************** --- NAME : TitanPanelPerformanceButton_OnLoad() --- DESC : Registers the plugin upon it loading --- ************************************************************************** -function TitanPanelPerformanceButton_OnLoad(self) - self.registry = { - id = TITAN_PERFORMANCE_ID, - category = "Built-ins", - version = TITAN_VERSION, - menuText = L["TITAN_PERFORMANCE_MENU_TEXT"], - buttonTextFunction = "TitanPanelPerformanceButton_GetButtonText"; - tooltipCustomFunction = TitanPanelPerformanceButton_SetTooltip; - icon = "Interface\\AddOns\\TitanPerformance\\TitanPerformance", - iconWidth = 16, - controlVariables = { - ShowIcon = true, - ShowLabelText = true, - ShowRegularText = false, - ShowColoredText = true, - DisplayOnRightSide = false, - }, - savedVariables = { - ShowFPS = 1, - ShowLatency = 1, - ShowWorldLatency = 1, - ShowMemory = 1, - ShowAddonMemory = false, - ShowAddonIncRate = false, - NumOfAddons = 5, - AddonMemoryType = 1, - ShowIcon = 1, - ShowLabelText = false, - ShowColoredText = 1, - } - }; - - self.fpsSampleCount = 0; - self:RegisterEvent("PLAYER_ENTERING_WORLD"); -end - -function TitanPanelPerformanceButton_OnShow() - if not PerfTimer then - PerfTimer = AceTimer.ScheduleRepeatingTimer("TitanPanelPerformance", TitanPanelPerformanceButtonHandle_OnUpdate, 1.5 ) - end -end - -function TitanPanelPerformanceButton_OnHide() - AceTimer.CancelTimer("TitanPanelPerformance", PerfTimer, true) - PerfTimer = nil; -end - --- ************************************************************************** --- NAME : TitanPanelPerformanceButton_OnUpdate(elapsed) --- DESC : Update button data --- VARS : elapsed = --- ************************************************************************** -function TitanPanelPerformanceButtonHandle_OnUpdate() - TitanPanelPluginHandle_OnUpdate(updateTable); - if not (TitanPanelRightClickMenu_IsVisible()) and _G["TitanPanelPerfControlFrame"]:IsVisible() and not (MouseIsOver(_G["TitanPanelPerfControlFrame"])) then - _G["TitanPanelPerfControlFrame"]:Hide(); - end -end - -function TitanPanelPerformanceButton_OnEvent(self, event, ...) - if event == "PLAYER_ENTERING_WORLD" then - local i; - topAddOns = {} - -- scan how many addons are active - local count = GetNumAddOns(); - local ActiveAddons = 0; - for i=1, count do - if IsAddOnLoaded(i) then - ActiveAddons = ActiveAddons + 1; - end - end - ---TitanDebug("NumOfAddons: " .. TitanGetVar(TITAN_PERFORMANCE_ID, "NumOfAddons")); ---TitanDebug("ActiveAddons: " .. ActiveAddons); - - if ActiveAddons < TitanGetVar(TITAN_PERFORMANCE_ID, "NumOfAddons") then - counter = ActiveAddons; - else - counter = TitanGetVar(TITAN_PERFORMANCE_ID, "NumOfAddons"); - end - --set the counter to the proper number of active addons that are being monitored - for i=1, counter do - topAddOns[i] = {name = '', value = 0} - end - end -end - --- ************************************************************************** --- NAME : TitanPanelPerformanceButton_GetButtonText(id) --- DESC : Calculate performance based logic for button text --- VARS : id = button ID --- ************************************************************************** -function TitanPanelPerformanceButton_GetButtonText(id) - local button = _G["TitanPanelPerformanceButton"]; - local color, fpsRichText, latencyRichText, memoryRichText; - local showFPS = TitanGetVar(TITAN_PERFORMANCE_ID, "ShowFPS"); - local showLatency = TitanGetVar(TITAN_PERFORMANCE_ID, "ShowLatency"); - local showWorldLatency = TitanGetVar(TITAN_PERFORMANCE_ID, "ShowWorldLatency") - local showMemory = TitanGetVar(TITAN_PERFORMANCE_ID, "ShowMemory"); - - -- Update real time data - TitanPanelPerformanceButton_UpdateData() - - -- FPS text - if ( showFPS ) then - local fpsText = format(L["TITAN_FPS_FORMAT"], button.fps); - if ( TitanGetVar(TITAN_PERFORMANCE_ID, "ShowColoredText") ) then - color = TitanUtils_GetThresholdColor(TITAN_FPS_THRESHOLD_TABLE, button.fps); - fpsRichText = TitanUtils_GetColoredText(fpsText, color); - else - fpsRichText = TitanUtils_GetHighlightText(fpsText); - end - end - - -- Latency text - latencyRichText = "" - if ( showLatency ) then - local latencyText = format(L["TITAN_LATENCY_FORMAT"], button.latencyHome); - if ( TitanGetVar(TITAN_PERFORMANCE_ID, "ShowColoredText") ) then - color = TitanUtils_GetThresholdColor(TITAN_LATENCY_THRESHOLD_TABLE, button.latencyHome); - latencyRichText = TitanUtils_GetColoredText(latencyText, color); - else - latencyRichText = TitanUtils_GetHighlightText(latencyText) - end - end - - if ( showWorldLatency ) then - local latencyWorldText = format(L["TITAN_LATENCY_FORMAT"], button.latencyWorld); - if ( showLatency ) then - latencyRichText = latencyRichText.."/" - end - if ( TitanGetVar(TITAN_PERFORMANCE_ID, "ShowColoredText") ) then - color = TitanUtils_GetThresholdColor(TITAN_LATENCY_THRESHOLD_TABLE, button.latencyWorld); - latencyRichText = latencyRichText..TitanUtils_GetColoredText(latencyWorldText, color); - else - latencyRichText = latencyRichText..TitanUtils_GetHighlightText(latencyWorldText); - end - end - - -- Memory text - if ( showMemory ) then - local memoryText = format(L["TITAN_MEMORY_FORMAT"], button.memory/1024); - memoryRichText = TitanUtils_GetHighlightText(memoryText); - end - - if ( showFPS ) then - if ( showLatency or showWorldLatency ) then - if ( showMemory ) then - return L["TITAN_FPS_BUTTON_LABEL"], fpsRichText, L["TITAN_LATENCY_BUTTON_LABEL"], latencyRichText, L["TITAN_MEMORY_BUTTON_LABEL"], memoryRichText; - else - return L["TITAN_FPS_BUTTON_LABEL"], fpsRichText, L["TITAN_LATENCY_BUTTON_LABEL"], latencyRichText; - end - else - if ( showMemory ) then - return L["TITAN_FPS_BUTTON_LABEL"], fpsRichText, L["TITAN_MEMORY_BUTTON_LABEL"], memoryRichText; - else - return L["TITAN_FPS_BUTTON_LABEL"], fpsRichText; - end - end - else - if ( showLatency or showWorldLatency ) then - if ( showMemory ) then - return L["TITAN_LATENCY_BUTTON_LABEL"], latencyRichText, L["TITAN_MEMORY_BUTTON_LABEL"], memoryRichText; - else - return L["TITAN_LATENCY_BUTTON_LABEL"], latencyRichText; - end - else - if ( showMemory ) then - return L["TITAN_MEMORY_BUTTON_LABEL"], memoryRichText; - else - return; - end - end - end -end - --- ************************************************************************** --- NAME : Stats_UpdateAddonsList(self, watchingCPU) --- DESC : Execute garbage collection for Leftclick on button --- ************************************************************************** -local function Stats_UpdateAddonsList(self, watchingCPU) - if(watchingCPU) then - UpdateAddOnCPUUsage() - else - UpdateAddOnMemoryUsage() - end - - local total = 0 - local i,j,k; - local showAddonRate = TitanGetVar(TITAN_PERFORMANCE_ID, "ShowAddonIncRate"); - for i=1, GetNumAddOns() do - local value = (watchingCPU and GetAddOnCPUUsage(i)) or GetAddOnMemoryUsage(i) - local name = GetAddOnInfo(i) - total = total + value - - for j,addon in ipairs(topAddOns) do - if(value > addon.value) then - for k = counter, 1, -1 do - if(k == j) then - topAddOns[k].value = value - topAddOns[k].name = GetAddOnInfo(i) - break - elseif(k ~= 1) then - topAddOns[k].value = topAddOns[k-1].value - topAddOns[k].name = topAddOns[k-1].name - end - end - break - end - end - end - - GameTooltip:AddLine(' ') - - if (total > 0) then - if(watchingCPU) then - GameTooltip:AddLine('|cffffffff'..L["TITAN_PERFORMANCE_ADDON_CPU_USAGE_LABEL"]) - else - GameTooltip:AddLine('|cffffffff'..L["TITAN_PERFORMANCE_ADDON_MEM_USAGE_LABEL"]) - end - - if not watchingCPU then - if (showAddonRate == 1) then - GameTooltip:AddDoubleLine(LIGHTYELLOW_FONT_COLOR_CODE..L["TITAN_PERFORMANCE_ADDON_NAME_LABEL"],LIGHTYELLOW_FONT_COLOR_CODE..L["TITAN_PERFORMANCE_ADDON_USAGE_LABEL"].."/"..L["TITAN_PERFORMANCE_ADDON_RATE_LABEL"]..":") - else - GameTooltip:AddDoubleLine(LIGHTYELLOW_FONT_COLOR_CODE..L["TITAN_PERFORMANCE_ADDON_NAME_LABEL"],LIGHTYELLOW_FONT_COLOR_CODE..L["TITAN_PERFORMANCE_ADDON_USAGE_LABEL"]..":") - end - end - - if watchingCPU then - GameTooltip:AddDoubleLine(LIGHTYELLOW_FONT_COLOR_CODE..L["TITAN_PERFORMANCE_ADDON_NAME_LABEL"],LIGHTYELLOW_FONT_COLOR_CODE..L["TITAN_PERFORMANCE_ADDON_USAGE_LABEL"]..":") - end - - for _,addon in ipairs(topAddOns) do - if(watchingCPU) then - local diff = addon.value/total * 100; - local incrate = ""; - incrate = format("(%.2f%%)", diff); - if (showAddonRate == 1) then - GameTooltip:AddDoubleLine(NORMAL_FONT_COLOR_CODE..addon.name," |cffffffff"..format("%.3f",addon.value)..L["TITAN_MILLISECOND"].." "..GREEN_FONT_COLOR_CODE..incrate); - else - GameTooltip:AddDoubleLine(NORMAL_FONT_COLOR_CODE..addon.name," |cffffffff"..format("%.3f",addon.value)..L["TITAN_MILLISECOND"]); - end - else - local diff = addon.value - (memUsageSinceGC[addon.name]) - if diff < 0 or memUsageSinceGC[addon.name]== 0 then - memUsageSinceGC[addon.name] = addon.value; - end - local incrate = ""; - if diff > 0 then - incrate = format("(+%.2f) "..L["TITAN_KILOBYTES_PER_SECOND"], diff); - end - if (showAddonRate == 1) then - if TitanGetVar(TITAN_PERFORMANCE_ID, "AddonMemoryType") == 1 then - GameTooltip:AddDoubleLine(NORMAL_FONT_COLOR_CODE..addon.name," |cffffffff"..format(L["TITAN_MEMORY_FORMAT"], addon.value/1000).." "..GREEN_FONT_COLOR_CODE..incrate) - else - if addon.value > 1000 then - GameTooltip:AddDoubleLine(NORMAL_FONT_COLOR_CODE..addon.name," |cffffffff"..format(L["TITAN_MEMORY_FORMAT"], addon.value/1000).." "..GREEN_FONT_COLOR_CODE..incrate) - else - GameTooltip:AddDoubleLine(NORMAL_FONT_COLOR_CODE..addon.name," |cffffffff"..format(L["TITAN_MEMORY_FORMAT_KB"], addon.value).." "..GREEN_FONT_COLOR_CODE..incrate) - end - end - else - if TitanGetVar(TITAN_PERFORMANCE_ID, "AddonMemoryType") == 1 then - GameTooltip:AddDoubleLine(NORMAL_FONT_COLOR_CODE..addon.name," |cffffffff"..format(L["TITAN_MEMORY_FORMAT"], addon.value/1000)) - else - if addon.value > 1000 then - GameTooltip:AddDoubleLine(NORMAL_FONT_COLOR_CODE..addon.name," |cffffffff"..format(L["TITAN_MEMORY_FORMAT"], addon.value/1000)) - else - GameTooltip:AddDoubleLine(NORMAL_FONT_COLOR_CODE..addon.name," |cffffffff"..format(L["TITAN_MEMORY_FORMAT_KB"], addon.value)) - end - end - end - end - end - - GameTooltip:AddLine(' ') - - if(watchingCPU) then - GameTooltip:AddDoubleLine(LIGHTYELLOW_FONT_COLOR_CODE..L["TITAN_PERFORMANCE_ADDON_TOTAL_CPU_USAGE_LABEL"], format("%.3f",total)..L["TITAN_MILLISECOND"]) - else - if TitanGetVar(TITAN_PERFORMANCE_ID, "AddonMemoryType") == 1 then - GameTooltip:AddDoubleLine(LIGHTYELLOW_FONT_COLOR_CODE..L["TITAN_PERFORMANCE_ADDON_TOTAL_MEM_USAGE_LABEL"],format(L["TITAN_MEMORY_FORMAT"], total/1000)) - else - if total > 1000 then - GameTooltip:AddDoubleLine(LIGHTYELLOW_FONT_COLOR_CODE..L["TITAN_PERFORMANCE_ADDON_TOTAL_MEM_USAGE_LABEL"], format(L["TITAN_MEMORY_FORMAT"], total/1000)) - else - GameTooltip:AddDoubleLine(LIGHTYELLOW_FONT_COLOR_CODE..L["TITAN_PERFORMANCE_ADDON_TOTAL_MEM_USAGE_LABEL"], format(L["TITAN_MEMORY_FORMAT_KB"], total)) - end - end - end - end -end - --- ************************************************************************** --- NAME : TitanPanelPerformanceButton_SetTooltip() --- DESC : Display tooltip text --- ************************************************************************** -function TitanPanelPerformanceButton_SetTooltip() - local button = _G["TitanPanelPerformanceButton"]; - local showFPS = TitanGetVar(TITAN_PERFORMANCE_ID, "ShowFPS"); - local showLatency = TitanGetVar(TITAN_PERFORMANCE_ID, "ShowLatency"); - local showWorldLatency = TitanGetVar(TITAN_PERFORMANCE_ID, "ShowWorldLatency") - local showMemory = TitanGetVar(TITAN_PERFORMANCE_ID, "ShowMemory"); - local showAddonMemory = TitanGetVar(TITAN_PERFORMANCE_ID, "ShowAddonMemory"); - - -- Tooltip title - GameTooltip:SetText(L["TITAN_PERFORMANCE_TOOLTIP"], HIGHLIGHT_FONT_COLOR.r, HIGHLIGHT_FONT_COLOR.g, HIGHLIGHT_FONT_COLOR.b); - - -- FPS tooltip - if ( showFPS ) then - local fpsText = format(L["TITAN_FPS_FORMAT"], button.fps); - local avgFPSText = format(L["TITAN_FPS_FORMAT"], button.avgFPS); - local minFPSText = format(L["TITAN_FPS_FORMAT"], button.minFPS); - local maxFPSText = format(L["TITAN_FPS_FORMAT"], button.maxFPS); - - GameTooltip:AddLine("\n"); - GameTooltip:AddLine(TitanUtils_GetHighlightText(L["TITAN_FPS_TOOLTIP"])); - GameTooltip:AddDoubleLine(L["TITAN_FPS_TOOLTIP_CURRENT_FPS"], TitanUtils_GetHighlightText(fpsText)); - GameTooltip:AddDoubleLine(L["TITAN_FPS_TOOLTIP_AVG_FPS"], TitanUtils_GetHighlightText(avgFPSText)); - GameTooltip:AddDoubleLine(L["TITAN_FPS_TOOLTIP_MIN_FPS"], TitanUtils_GetHighlightText(minFPSText)); - GameTooltip:AddDoubleLine(L["TITAN_FPS_TOOLTIP_MAX_FPS"], TitanUtils_GetHighlightText(maxFPSText)); - end - - -- Latency tooltip - if ( showLatency or showWorldLatency ) then - local latencyText = format(L["TITAN_LATENCY_FORMAT"], button.latencyHome); - local latencyWorldText = format(L["TITAN_LATENCY_FORMAT"], button.latencyWorld); - local bandwidthInText = format(L["TITAN_LATENCY_BANDWIDTH_FORMAT"], button.bandwidthIn); - local bandwidthOutText = format(L["TITAN_LATENCY_BANDWIDTH_FORMAT"], button.bandwidthOut); - - GameTooltip:AddLine("\n"); - GameTooltip:AddLine(TitanUtils_GetHighlightText(L["TITAN_LATENCY_TOOLTIP"])); - if showLatency then GameTooltip:AddDoubleLine(L["TITAN_LATENCY_TOOLTIP_LATENCY_HOME"], TitanUtils_GetHighlightText(latencyText)); end - if showWorldLatency then GameTooltip:AddDoubleLine(L["TITAN_LATENCY_TOOLTIP_LATENCY_WORLD"], TitanUtils_GetHighlightText(latencyWorldText)); end - GameTooltip:AddDoubleLine(L["TITAN_LATENCY_TOOLTIP_BANDWIDTH_IN"], TitanUtils_GetHighlightText(bandwidthInText)); - GameTooltip:AddDoubleLine(L["TITAN_LATENCY_TOOLTIP_BANDWIDTH_OUT"], TitanUtils_GetHighlightText(bandwidthOutText)); - end - - -- Memory tooltip - if ( showMemory ) then - local memoryText = format(L["TITAN_MEMORY_FORMAT"], button.memory/1024); - local initialMemoryText = format(L["TITAN_MEMORY_FORMAT"], button.initialMemory/1024); - local sessionTime = time() - button.startSessionTime; - local rateRichText, timeToGCRichText, rate, timeToGC, color; - if ( sessionTime == 0 ) then - rateRichText = TitanUtils_GetHighlightText("N/A"); - else - rate = (button.memory - button.initialMemory) / sessionTime; - color = TitanUtils_GetThresholdColor(TITAN_MEMORY_RATE_THRESHOLD_TABLE, rate); - rateRichText = TitanUtils_GetColoredText(format(L["TITAN_MEMORY_RATE_FORMAT"], rate), color); - end - if ( button.memory == button.initialMemory ) then - timeToGCRichText = TitanUtils_GetHighlightText("N/A"); - end - - GameTooltip:AddLine("\n"); - GameTooltip:AddLine(TitanUtils_GetHighlightText(L["TITAN_MEMORY_TOOLTIP"])); - GameTooltip:AddDoubleLine(L["TITAN_MEMORY_TOOLTIP_CURRENT_MEMORY"], TitanUtils_GetHighlightText(memoryText)); - GameTooltip:AddDoubleLine(L["TITAN_MEMORY_TOOLTIP_INITIAL_MEMORY"], TitanUtils_GetHighlightText(initialMemoryText)); - GameTooltip:AddDoubleLine(L["TITAN_MEMORY_TOOLTIP_INCREASING_RATE"], rateRichText); - end - - if ( showAddonMemory == 1 ) then - for _,i in pairs(topAddOns) do - i.name = ''; - i.value = 0; - end - Stats_UpdateAddonsList(self, GetCVar('scriptProfile') == '1' and not IsModifierKeyDown()) - end - - GameTooltip:AddLine(TitanUtils_GetGreenText(L["TITAN_PERFORMANCE_TOOLTIP_HINT"])); -end - --- ************************************************************************** --- NAME : TitanPanelRightClickMenu_PreparePerformanceMenu() --- DESC : Display rightclick menu options --- ************************************************************************** -function TitanPanelRightClickMenu_PreparePerformanceMenu() - local info - - -- level 3 - if _G["L_UIDROPDOWNMENU_MENU_LEVEL"] == 3 and _G["L_UIDROPDOWNMENU_MENU_VALUE"]== "AddonControlFrame" then - TitanPanelPerfControlFrame:Show() - return - end - - -- level 2 - if _G["L_UIDROPDOWNMENU_MENU_LEVEL"] == 2 then - if _G["L_UIDROPDOWNMENU_MENU_VALUE"] == "Options" then - TitanPanelRightClickMenu_AddTitle(L["TITAN_PANEL_OPTIONS"], _G["L_UIDROPDOWNMENU_MENU_LEVEL"]); - - local temptable = {TITAN_PERFORMANCE_ID, "ShowFPS"}; - info = {}; - info.text = L["TITAN_PERFORMANCE_MENU_SHOW_FPS"]; - info.value = temptable; - info.func = function() - TitanPanelRightClickMenu_ToggleVar(temptable) - end - info.checked = TitanGetVar(TITAN_PERFORMANCE_ID, "ShowFPS"); - info.keepShownOnClick = 1; - L_UIDropDownMenu_AddButton(info, _G["L_UIDROPDOWNMENU_MENU_LEVEL"]); - - local temptable = {TITAN_PERFORMANCE_ID, "ShowLatency"}; - info = {}; - info.text = L["TITAN_PERFORMANCE_MENU_SHOW_LATENCY"]; - info.value = temptable; - info.func = function() - TitanPanelRightClickMenu_ToggleVar(temptable) - end - info.checked = TitanGetVar(TITAN_PERFORMANCE_ID, "ShowLatency"); - info.keepShownOnClick = 1; - L_UIDropDownMenu_AddButton(info, _G["L_UIDROPDOWNMENU_MENU_LEVEL"]); - - local temptable = {TITAN_PERFORMANCE_ID, "ShowWorldLatency"}; - info = {}; - info.text = L["TITAN_PERFORMANCE_MENU_SHOW_LATENCY_WORLD"]; - info.value = temptable; - info.func = function() - TitanPanelRightClickMenu_ToggleVar(temptable) - end - info.checked = TitanGetVar(TITAN_PERFORMANCE_ID, "ShowWorldLatency"); - info.keepShownOnClick = 1; - L_UIDropDownMenu_AddButton(info, _G["L_UIDROPDOWNMENU_MENU_LEVEL"]); - - local temptable = {TITAN_PERFORMANCE_ID, "ShowMemory"}; - info = {}; - info.text = L["TITAN_PERFORMANCE_MENU_SHOW_MEMORY"]; - info.value = temptable; - info.func = function() - TitanPanelRightClickMenu_ToggleVar(temptable) - end - info.checked = TitanGetVar(TITAN_PERFORMANCE_ID, "ShowMemory"); - info.keepShownOnClick = 1; - L_UIDropDownMenu_AddButton(info, _G["L_UIDROPDOWNMENU_MENU_LEVEL"]); - end - - if _G["L_UIDROPDOWNMENU_MENU_VALUE"] == "AddonUsage" then - TitanPanelRightClickMenu_AddTitle(L["TITAN_PERFORMANCE_ADDONS"], _G["L_UIDROPDOWNMENU_MENU_LEVEL"]); - - local temptable = {TITAN_PERFORMANCE_ID, "ShowAddonMemory"}; - info = {}; - info.text = L["TITAN_PERFORMANCE_MENU_SHOW_ADDONS"]; - info.value = temptable; - info.func = function() - TitanPanelRightClickMenu_ToggleVar(temptable) - end - info.checked = TitanGetVar(TITAN_PERFORMANCE_ID, "ShowAddonMemory"); - info.keepShownOnClick = 1; - L_UIDropDownMenu_AddButton(info, _G["L_UIDROPDOWNMENU_MENU_LEVEL"]); - - local temptable = {TITAN_PERFORMANCE_ID, "ShowAddonIncRate"}; - info = {}; - info.text = L["TITAN_PERFORMANCE_MENU_SHOW_ADDON_RATE"]; - info.value = temptable; - info.func = function() - TitanPanelRightClickMenu_ToggleVar(temptable) - end - info.checked = TitanGetVar(TITAN_PERFORMANCE_ID, "ShowAddonIncRate"); - info.keepShownOnClick = 1; - L_UIDropDownMenu_AddButton(info, _G["L_UIDROPDOWNMENU_MENU_LEVEL"]); - - info = {}; - info.notCheckable = true - info.text = L["TITAN_PERFORMANCE_CONTROL_TOOLTIP"]..LIGHTYELLOW_FONT_COLOR_CODE..tostring(TitanGetVar(TITAN_PERFORMANCE_ID, "NumOfAddons")); - info.value = "AddonControlFrame" - info.hasArrow = 1; - L_UIDropDownMenu_AddButton(info, _G["L_UIDROPDOWNMENU_MENU_LEVEL"]); - end - - if _G["L_UIDROPDOWNMENU_MENU_VALUE"] == "AddonMemoryFormat" then - TitanPanelRightClickMenu_AddTitle(L["TITAN_PERFORMANCE_ADDON_MEM_FORMAT_LABEL"], _G["L_UIDROPDOWNMENU_MENU_LEVEL"]); - info = {}; - info.text = L["TITAN_MEGABYTE"]; - info.checked = function() if TitanGetVar(TITAN_PERFORMANCE_ID, "AddonMemoryType") == 1 then return true else return nil end - end - info.func = function() TitanSetVar(TITAN_PERFORMANCE_ID, "AddonMemoryType", 1) end - L_UIDropDownMenu_AddButton(info, _G["L_UIDROPDOWNMENU_MENU_LEVEL"]); - info = {}; - info.text = L["TITAN_MEMORY_KBMB_LABEL"]; - info.checked = function() if TitanGetVar(TITAN_PERFORMANCE_ID, "AddonMemoryType") == 2 then return true else return nil end - end - info.func = function() TitanSetVar(TITAN_PERFORMANCE_ID, "AddonMemoryType", 2) end - L_UIDropDownMenu_AddButton(info, _G["L_UIDROPDOWNMENU_MENU_LEVEL"]); - end - - if _G["L_UIDROPDOWNMENU_MENU_VALUE"] == "CPUProfiling" then - if ( GetCVar("scriptProfile") == "1" ) then - TitanPanelRightClickMenu_AddTitle(L["TITAN_PERFORMANCE_MENU_CPUPROF_LABEL"]..": "..GREEN_FONT_COLOR_CODE..L["TITAN_PANEL_MENU_ENABLED"], _G["L_UIDROPDOWNMENU_MENU_LEVEL"]); - info = {}; - info.text = L["TITAN_PERFORMANCE_MENU_CPUPROF_LABEL_OFF"]..GREEN_FONT_COLOR_CODE..L["TITAN_PANEL_MENU_RELOADUI"]; - info.func = function() SetCVar("scriptProfile", "0", 1) ReloadUI() end - L_UIDropDownMenu_AddButton(info, _G["L_UIDROPDOWNMENU_MENU_LEVEL"]); - else - TitanPanelRightClickMenu_AddTitle(L["TITAN_PERFORMANCE_MENU_CPUPROF_LABEL"]..": "..RED_FONT_COLOR_CODE..L["TITAN_PANEL_MENU_DISABLED"], _G["L_UIDROPDOWNMENU_MENU_LEVEL"]); - info = {}; - info.text = L["TITAN_PERFORMANCE_MENU_CPUPROF_LABEL_ON"]..GREEN_FONT_COLOR_CODE..L["TITAN_PANEL_MENU_RELOADUI"]; - info.func = function() SetCVar("scriptProfile", "1", 1) ReloadUI() end - L_UIDropDownMenu_AddButton(info, _G["L_UIDROPDOWNMENU_MENU_LEVEL"]); - end - end - return - end - - -- level 1 - TitanPanelRightClickMenu_AddTitle(TitanPlugins[TITAN_PERFORMANCE_ID].menuText); - - info = {}; - info.notCheckable = true - info.text = L["TITAN_PANEL_OPTIONS"]; - info.value = "Options" - info.hasArrow = 1; - L_UIDropDownMenu_AddButton(info); - - info = {}; - info.notCheckable = true - info.text = L["TITAN_PERFORMANCE_ADDONS"]; - info.value = "AddonUsage" - info.hasArrow = 1; - L_UIDropDownMenu_AddButton(info); - - info = {}; - info.notCheckable = true - info.text = L["TITAN_PERFORMANCE_ADDON_MEM_FORMAT_LABEL"]; - info.value = "AddonMemoryFormat" - info.hasArrow = 1; - L_UIDropDownMenu_AddButton(info); - - info = {}; - info.notCheckable = true - info.text = L["TITAN_PERFORMANCE_MENU_CPUPROF_LABEL"]; - info.value = "CPUProfiling" - info.hasArrow = 1; - L_UIDropDownMenu_AddButton(info); - - TitanPanelRightClickMenu_AddSpacer(); - TitanPanelRightClickMenu_AddToggleIcon(TITAN_PERFORMANCE_ID); - TitanPanelRightClickMenu_AddToggleLabelText(TITAN_PERFORMANCE_ID); - TitanPanelRightClickMenu_AddToggleColoredText(TITAN_PERFORMANCE_ID); - TitanPanelRightClickMenu_AddSpacer(); - TitanPanelRightClickMenu_AddCommand(L["TITAN_PANEL_MENU_HIDE"], TITAN_PERFORMANCE_ID, TITAN_PANEL_MENU_FUNC_HIDE); -end - --- ************************************************************************** --- NAME : TitanPanelPerformanceButton_UpdateData() --- DESC : Update button data --- ************************************************************************** -function TitanPanelPerformanceButton_UpdateData() - local button = _G["TitanPanelPerformanceButton"]; - local showFPS = TitanGetVar(TITAN_PERFORMANCE_ID, "ShowFPS"); - local showLatency = TitanGetVar(TITAN_PERFORMANCE_ID, "ShowLatency"); - local showWorldLatency = TitanGetVar(TITAN_PERFORMANCE_ID, "ShowWorldLatency") - local showMemory = TitanGetVar(TITAN_PERFORMANCE_ID, "ShowMemory"); - local showAddonMemory = TitanGetVar(TITAN_PERFORMANCE_ID, "ShowAddonMemory"); - - -- FPS Data - if ( showFPS ) then - button.fps = GetFramerate(); - button.fpsSampleCount = button.fpsSampleCount + 1; - if (button.fpsSampleCount == 1) then - button.minFPS = button.fps; - button.maxFPS = button.fps; - button.avgFPS = button.fps; - else - if (button.fps < button.minFPS) then - button.minFPS = button.fps; - elseif (button.fps > button.maxFPS) then - button.maxFPS = button.fps; - end - button.avgFPS = (button.avgFPS * (button.fpsSampleCount - 1) + button.fps) / button.fpsSampleCount; - end - end - - -- Latency Data - if ( showLatency or showWorldLatency ) then - -- bandwidthIn, bandwidthOut, latencyHome, latencyWorld = GetNetStats(); - button.bandwidthIn, button.bandwidthOut, button.latencyHome, button.latencyWorld = GetNetStats(); - end - - -- Memory data - if ( showMemory ) or (showAddonMemory == 1) then - local previousMemory = button.memory; - button.memory, button.gcThreshold = gcinfo(); - if ( not button.startSessionTime ) then - -- Initial data - local i; - button.startSessionTime = time(); - button.initialMemory = button.memory; - - for i = 1, GetNumAddOns() do - memUsageSinceGC[GetAddOnInfo(i)] = GetAddOnMemoryUsage(i) - end - elseif (previousMemory and button.memory and previousMemory > button.memory) then - -- Reset data after garbage collection - local k,i; - button.startSessionTime = time(); - button.initialMemory = button.memory; - - for k in pairs(memUsageSinceGC) do - memUsageSinceGC[k] = nil - end - - for i = 1, GetNumAddOns() do - memUsageSinceGC[GetAddOnInfo(i)] = GetAddOnMemoryUsage(i) - end - end - end -end - --- ************************************************************************** --- NAME : TitanPanelPerformanceButton_ResetMemory() --- DESC : Reset the memory monitoring values --- ************************************************************************** ---function TitanPanelPerformanceButton_ResetMemory() - -- local button = _G["TitanPanelPerformanceButton"]; - --button.memory, button.gcThreshold = gcinfo(); - --button.initialMemory = button.memory; - --button.startSessionTime = time(); ---end - - --- ************************************************************************** --- NAME : TitanPanelPerformanceButton_OnClick() --- DESC : Execute garbage collection for Leftclick on button --- ************************************************************************** -function TitanPanelPerformanceButton_OnClick(self, button) - if button == "LeftButton" then - collectgarbage('collect'); - end -end - --- ************************************************************************** --- NAME : TitanPanelPerfControlSlider_OnEnter() --- DESC : Display tooltip on entering slider --- ************************************************************************** -function TitanPanelPerfControlSlider_OnEnter(self) - self.tooltipText = TitanOptionSlider_TooltipText(L["TITAN_PERFORMANCE_CONTROL_TOOLTIP"], TitanGetVar(TITAN_PERFORMANCE_ID, "NumOfAddons")); - GameTooltip:SetOwner(self, "ANCHOR_BOTTOMLEFT"); - GameTooltip:SetText(self.tooltipText, nil, nil, nil, nil, 1); -end - --- ************************************************************************** --- NAME : TitanPanelPerfControlSlider_OnLeave() --- DESC : Hide tooltip after leaving slider --- ************************************************************************** -function TitanPanelPerfControlSlider_OnLeave(self) - self.tooltipText = nil; - GameTooltip:Hide(); -end - --- ************************************************************************** --- NAME : TitanPanelPerfControlSlider_OnShow() --- DESC : Display slider tooltip --- ************************************************************************** -function TitanPanelPerfControlSlider_OnShow(self) - _G[self:GetName().."Text"]:SetText(TitanGetVar(TITAN_PERFORMANCE_ID, "NumOfAddons")); - _G[self:GetName().."High"]:SetText(L["TITAN_PERFORMANCE_CONTROL_LOW"]); - _G[self:GetName().."Low"]:SetText(L["TITAN_PERFORMANCE_CONTROL_HIGH"]); - self:SetMinMaxValues(1, 40); - self:SetValueStep(1); - self:SetValue(41 - TitanGetVar(TITAN_PERFORMANCE_ID, "NumOfAddons")); - TitanPanelPerfControlFrame:SetBackdropColor(0, 0, 0, 1) - - TitanPanelPerfControlFrame:ClearAllPoints(); - TitanPanelPerfControlFrame:SetPoint("LEFT", "DropDownList2Button4ExpandArrow","RIGHT", 9/DropDownList2Button4ExpandArrow:GetScale(),0); - local offscreenX, offscreenY = TitanUtils_GetOffscreen(TitanPanelPerfControlFrame); - if offscreenX == -1 or offscreenX == 0 then - TitanPanelPerfControlFrame:ClearAllPoints(); - TitanPanelPerfControlFrame:SetPoint("LEFT", "DropDownList2Button4ExpandArrow","RIGHT", 9/DropDownList2Button4ExpandArrow:GetScale(),0); - else - TitanPanelPerfControlFrame:ClearAllPoints(); - TitanPanelPerfControlFrame:SetPoint("RIGHT", "DropDownList2","LEFT", 3/DropDownList2Button4ExpandArrow:GetScale(),0); - end -end - --- ************************************************************************** --- NAME : TitanPanelPerfControlSlider_OnValueChanged(arg1) --- DESC : Display slider tooltip text --- VARS : arg1 = positive or negative change to apply --- ************************************************************************** -function TitanPanelPerfControlSlider_OnValueChanged(self, a1) - _G[self:GetName().."Text"]:SetText(41 - self:GetValue()); - - if a1 == -1 then - self:SetValue(self:GetValue() + 1); - end - - if a1 == 1 then - self:SetValue(self:GetValue() - 1); - end - - TitanSetVar(TITAN_PERFORMANCE_ID, "NumOfAddons", 41 - self:GetValue()); - - local i; - topAddOns = {}; - -- scan how many addons are active - local count = GetNumAddOns(); - local ActiveAddons = 0; - for i=1, count do - if IsAddOnLoaded(i) then - ActiveAddons = ActiveAddons + 1; - end - end - - if ActiveAddons < TitanGetVar(TITAN_PERFORMANCE_ID, "NumOfAddons") then - counter = ActiveAddons; - else - counter = TitanGetVar(TITAN_PERFORMANCE_ID, "NumOfAddons"); - end - - --set the counter to the proper number of active addons that are being monitored - for i=1, counter do - topAddOns[i] = {name = '', value = 0} - end - - -- Update GameTooltip - if (self.tooltipText) then - self.tooltipText = TitanOptionSlider_TooltipText(L["TITAN_PERFORMANCE_CONTROL_TOOLTIP"], 41 - self:GetValue()); - GameTooltip:SetText(self.tooltipText, nil, nil, nil, nil, 1); - end -end - --- ************************************************************************** --- NAME : TitanPanelPerfControlFrame_OnLoad() --- DESC : Create performance option frame --- ************************************************************************** -function TitanPanelPerfControlFrame_OnLoad(self) - _G[self:GetName().."Title"]:SetText(L["TITAN_PERFORMANCE_CONTROL_TITLE"]); - self:SetBackdropBorderColor(1, 1, 1); - self:SetBackdropColor(0, 0, 0, 1); -end - --- ************************************************************************** --- NAME : TitanPanelPerfControlFrame_OnUpdate(elapsed) --- DESC : If dropdown is visible, see if its timer has expired. If so, hide frame --- VARS : elapsed = --- ************************************************************************** -function TitanPanelPerfControlFrame_OnUpdate(self, elapsed) - if not MouseIsOver(_G["TitanPanelPerfControlFrame"]) and not MouseIsOver (_G["DropDownList2Button4"]) and not MouseIsOver (_G["DropDownList2Button4ExpandArrow"]) then - TitanUtils_CheckFrameCounting(self, elapsed); - end -end \ No newline at end of file -- 1.7.9.5