diff --git a/CHANGELOG.txt b/CHANGELOG.txt index 409b17c..ff9b643 100644 --- a/CHANGELOG.txt +++ b/CHANGELOG.txt @@ -2,6 +2,69 @@ ChangeLogs: --------------------------- +EMA Version: v9.0.0-Release-v3.0(0146-0153) +Game Version: 9.0.0 +Release Date: 13/10/2020 + +## 9.0 Initial release + -- fixed wow-api chnages. + +### Known issues. + +##Display-Team + --added support to add the party frame from trugcd addon to EMA's. + + +## Toon + -- CC warn, Now shows the spell that was casted on the player + + +## ItemBar + -- Should Now work with Spells and Toys. + +--------------------------- + +EMA Version: v8.3.0-Release-v2.5(0146) +Game Version: 8.3.0 +Release Date: 20/07/2020 + +## Information + -- Trying to fix a bug i broke the *.DB so all settings got reset in this module ( sorry :( ) + + -- Echoes of Ny'alotha sometimes do not show on a team member and blocks them from being showen in the blizzard UI. ( Issue #107 ) + - DEV NOTE: This has been making a problem with EMA information generating the Currency List i added a hotfix to stop this blocking the addon + - please to no report report it when a character Shows 0 Echoes of Ny'alotha + -this is not a EMA problem this a blizzard problem and is well known. A reclient load or deleteing you Cache will fix and they should show again. + + + + + +--------------------------- + +EMA Version: v8.3.0-Release-v2.5(0145) +Game Version: 8.3.0 +Release Date: 18/07/2020 + +##Ebonys Utilities + -- Fixed issue #106 + + + + +--------------------------- + +EMA Version: v8.3.0-Release-v2.5(0144) +Game Version: 8.3.0 +Release Date: 18/07/2020 + +##Follow + - Fixed a bug with warn pvp follow not getting truned off. + + + +--------------------------- + EMA Version: v8.3.0-Release-v2.5(0143) Game Version: 8.3.0 Release Date: 17/07/2020 diff --git a/Core/Communications.lua b/Core/Communications.lua index 2321bb3..dd85fa7 100644 --- a/Core/Communications.lua +++ b/Core/Communications.lua @@ -358,9 +358,9 @@ function EMA:CommandReceived( prefix, message, distribution, sender ) EMA:DebugMessage( "Sending command on to module: ", sender, moduleName, commandName, unpack( argumentsTable ) ) EMAPrivate.Core.OnCommandReceived( sender, moduleName, commandName, unpack( argumentsTable ) ) end - else - EMA:DebugMessage( "Sender is NOT in team list." ) - end + else + EMA:DebugMessage( "Sender is NOT in team list." ) + end end end @@ -462,10 +462,25 @@ end function EMA:OnDisable() end +local function isPlayerInMyGuild( playerName) + local numGuildMembers, numOnline, numOnlineAndMobile = GetNumGuildMembers() + for index = 1, numGuildMembers do + local characterName,_,_,_,class,_,_,_,online,status,classFileName,_, _,isMobile = GetGuildRosterInfo(index) + --EMA:Print("taaa", characterName, playerName) + if characterName == playerName then + --EMA:Print("player in my guild 102", characterName) + return true + end + end + return false +end + + function EMA:GUILD_ROSTER_UPDATE(event, ... ) if EMA.db.useGuildComms == false then return end + EMA:SetNonGuildMembersOflline() local numGuildMembers, numOnline, numOnlineAndMobile = GetNumGuildMembers() for index = 1, numGuildMembers do characterName,_,_,_,class,_,_,_,online,status,classFileName,_, _,isMobile = GetGuildRosterInfo(index) @@ -478,9 +493,28 @@ function EMA:GUILD_ROSTER_UPDATE(event, ... ) end end end - end + end end + +function EMA:SetNonGuildMembersOflline() +-- If Character is not in guild then auto set it offline as there is no communication for them cross guild! + for characterName, position in EMAApi.TeamList() do + local isNotInGuild = isPlayerInMyGuild( characterName ) + --EMA:Print("test", characterName, "is", isNotInGuild ) + + if isNotInGuild == false then + if EMA.db.autoSetTeamOnlineorOffline == true then + if EMAApi.IsCharacterInTeam(characterName) == true and IsCharacterOnline( characterName ) == true then + EMAApi.setOffline( characterName, false ) + --EMA:Print("player is not in my guild 101", characterName ) + end + end + end + end +end + + ------------------------------------------------------------------------------------------------------------- -- Settings Dialogs. ------------------------------------------------------------------------------------------------------------- diff --git a/Core/Core.lua b/Core/Core.lua index 9052798..f7ef5cf 100644 --- a/Core/Core.lua +++ b/Core/Core.lua @@ -73,7 +73,7 @@ function EMA:OnEnable() StaticPopup_Show( "ALL_SETTINGS HAVE BEEN RESET" ) end ]] - if EMA.db.global.showStartupMessage2000 then + if EMA.db.global.showStartupMessage3000 then StaticPopup_Show( "UpgradeTo_v2" ) end end @@ -111,7 +111,7 @@ local function InitializePopupDialogs() text = L["v2_NEWS"], button1 = OKAY, OnAccept = function() - EMA.db.global.showStartupMessage2000 = false + EMA.db.global.showStartupMessage3000 = false end, showAlert = 1, timeout = 0, @@ -233,6 +233,7 @@ EMA.settings = { ['**'] = { showStartupMessage8000 = false, showStartupMessage2000 = true, + showStartupMessage3000 = true }, }, profile = { diff --git a/Core/Team.lua b/Core/Team.lua index feb3ed9..950a905 100644 --- a/Core/Team.lua +++ b/Core/Team.lua @@ -1158,16 +1158,16 @@ end -- Invite team to party. function EMA.DoTeamPartyInvite() - InviteUnit( EMA.inviteList[EMA.currentInviteCount] ) + C_PartyInfo.InviteUnit( EMA.inviteList[EMA.currentInviteCount] ) EMA.currentInviteCount = EMA.currentInviteCount + 1 if EMA.currentInviteCount < EMA.inviteCount then --if GetTeamListMaximumOrderOnline() > 5 and EMA.db.inviteConvertToRaid == true then if EMA.inviteCount > 4 and EMA.db.inviteConvertToRaid == true then if EMA.db.inviteSetAllAssistant == true then - ConvertToRaid() + C_PartyInfo.ConvertToRaid() SetEveryoneIsAssistant(true) else - ConvertToRaid() + C_PartyInfo.ConvertToRaid() end end EMA:ScheduleTimer( "DoTeamPartyInvite", 0.5 ) @@ -1318,7 +1318,7 @@ end local function LeaveTheParty() if IsInGroup( "player" ) then - LeaveParty() + C_PartyInfo.LeaveParty() end end diff --git a/EMA.toc b/EMA.toc index ba05b14..7bc8b36 100644 --- a/EMA.toc +++ b/EMA.toc @@ -1,9 +1,9 @@ -## Interface: 80300 +## Interface: 90001 ## Title: EMA ## Notes: Ebony's MultiBoxing Assistant ## Author: Jennifer Calladine 'Ebony' -## Version: v8.3.0-Release-v2.5(0143) -## SavedVariables: CoreProfileDB, CommunicationsProfileDB, TeamProfileDB, TagProfileDB, MessageProfileDB, CurrProfileDB, DisplayTeamProfileDB, FollowProfileDB, GuildProfileDB, InteractionProfileDB, ItemUseProfileDB, PurchaseProfileDB, QuestProfileDB, QuestWatcherProfileDB, SellProfileDB, TalkProfileDB, ToonProfileDB, TradeProfileDB, MailProfileDB, BankProfileDB, ISBoxerProfileDB +## Version: v9.0.1-Release-v3.0(0153) +## SavedVariables: CoreProfileDB, CommunicationsProfileDB, TeamProfileDB, TagProfileDB, MessageProfileDB, InformationProfileDB, DisplayTeamProfileDB, FollowProfileDB, GuildProfileDB, InteractionProfileDB, ItemUseProfileDB, PurchaseProfileDB, QuestProfileDB, QuestWatcherProfileDB, SellProfileDB, TalkProfileDB, ToonProfileDB, TradeProfileDB, MailProfileDB, BankProfileDB, ISBoxerProfileDB #Libs Embeds.xml diff --git a/EbonyUtilities.lua b/EbonyUtilities.lua index 54c2fb3..659db19 100644 --- a/EbonyUtilities.lua +++ b/EbonyUtilities.lua @@ -128,6 +128,21 @@ function EbonyUtilities:MoneyString( value ) silverFormat = "" end end + return gold, silver, copper +end + + +-- A little toy to retun Gold, silver and copper for formatted use. +function EbonyUtilities:MoneyStringFormatted( value ) + local gold = floor( value / ( EbonyUtilities.COPPER_PER_SILVER * EbonyUtilities.SILVER_PER_GOLD ) ); + local silver = floor( ( value - ( gold * EbonyUtilities.COPPER_PER_SILVER * EbonyUtilities.SILVER_PER_GOLD ) ) / EbonyUtilities.COPPER_PER_SILVER ); + local copper = mod( value, EbonyUtilities.COPPER_PER_SILVER ); + if gold <=0 then + goldFormat = "" + if silver <= 0 then + silverFormat = "" + end + end return BreakUpLargeNumbers(gold), silver, copper end diff --git a/Embeds.xml b/Embeds.xml index a701de9..81aff14 100644 --- a/Embeds.xml +++ b/Embeds.xml @@ -38,4 +38,5 @@ <Script file="GUI\AceGUIWidget-EMANormalLabel.lua" /> <Script file="GUI\AceGUIWidget-EMAContinueLabel.lua" /> <Script file="GUI\AceGUIWidget-EMAKeybinding.lua" /> + </Ui> diff --git a/GUI/AceGUIContainer-EMATreeGroup.lua b/GUI/AceGUIContainer-EMATreeGroup.lua index 5aeeff6..de9a4ee 100644 --- a/GUI/AceGUIContainer-EMATreeGroup.lua +++ b/GUI/AceGUIContainer-EMATreeGroup.lua @@ -282,11 +282,11 @@ local function Tree_OnMouseWheel(frame, delta) end local function Dragger_OnLeave(frame) - frame:SetBackdropColor(1, 1, 1, 0) +-- frame:SetBackdropColor(1, 1, 1, 0) end local function Dragger_OnEnter(frame) - frame:SetBackdropColor(1, 1, 1, 0.8) +-- frame:SetBackdropColor(1, 1, 1, 0.8) end local function Dragger_OnMouseDown(frame) @@ -662,7 +662,7 @@ local PaneBackdrop = { local DraggerBackdrop = { bgFile = "Interface\\Tooltips\\UI-Tooltip-Background", edgeFile = nil, - tile = true, tileSize = 16, edgeSize = 0, + tile = true, tileSize = 16, edgeSize = 1, insets = { left = 3, right = 3, top = 7, bottom = 7 } } @@ -670,7 +670,7 @@ local function Constructor() local num = AceGUI:GetNextWidgetNum(Type) local frame = CreateFrame("Frame", nil, UIParent) - local treeframe = CreateFrame("Frame", nil, frame) + local treeframe = CreateFrame("Frame", nil, frame, BackdropTemplateMixin and "BackdropTemplate" or nil) treeframe:SetPoint("TOPLEFT") treeframe:SetPoint("BOTTOM") treeframe:SetWidth(DEFAULT_TREE_WIDTH) @@ -685,7 +685,7 @@ local function Constructor() treeframe:SetScript("OnSizeChanged", Tree_OnSizeChanged) treeframe:SetScript("OnMouseWheel", Tree_OnMouseWheel) - local dragger = CreateFrame("Frame", nil, treeframe) + local dragger = CreateFrame("Frame", nil, treeframe, BackdropTemplateMixin and "BackdropTemplate" or nil) dragger:SetWidth(8) dragger:SetPoint("BOTTOM", treeframe, "BOTTOM") dragger:SetPoint("BOTTOM", treeframe, "BOTTOM") @@ -710,7 +710,7 @@ local function Constructor() scrollbg:SetAllPoints(scrollbar) scrollbg:SetColorTexture(0,0,0,0.4) - local border = CreateFrame("Frame",nil,frame) + local border = CreateFrame("Frame", nil , frame, BackdropTemplateMixin and "BackdropTemplate" or nil) border:SetPoint("TOPLEFT", treeframe, "TOPRIGHT") border:SetPoint("BOTTOMRIGHT") border:SetBackdrop(PaneBackdrop) diff --git a/GUI/AceGUIContainer-EMAWindow.lua b/GUI/AceGUIContainer-EMAWindow.lua index 43c5f1e..54e1725 100644 --- a/GUI/AceGUIContainer-EMAWindow.lua +++ b/GUI/AceGUIContainer-EMAWindow.lua @@ -189,6 +189,7 @@ local methods = { --[[----------------------------------------------------------------------------- Constructor -------------------------------------------------------------------------------]] + local FrameBackdrop = { bgFile = "Interface\\DialogFrame\\UI-DialogBox-Background", edgeFile = "Interface\\DialogFrame\\UI-DialogBox-Border", @@ -203,8 +204,9 @@ local PaneBackdrop = { insets = { left = 3, right = 3, top = 5, bottom = 3 } } + local function Constructor() - local frame = CreateFrame("Frame", nil, UIParent) + local frame = CreateFrame("Frame", nil, UIParent, BackdropTemplateMixin and "BackdropTemplate" or nil) frame:Hide() frame:EnableMouse(true) @@ -212,6 +214,7 @@ local function Constructor() frame:SetResizable(true) --frame:SetFrameStrata("FULLSCREEN_DIALOG") frame:SetFrameStrata("HIGH") + frame:SetBackdrop(FrameBackdrop) frame:SetBackdropColor(0, 0, 0, 1) frame:SetMinResize(400, 200) @@ -226,7 +229,7 @@ local function Constructor() closebutton:SetWidth(100) closebutton:SetText(CLOSE) - local statusbg = CreateFrame("Button", nil, frame) + local statusbg = CreateFrame("Button", nil, frame, BackdropTemplateMixin and "BackdropTemplate" or nil) statusbg:SetPoint("BOTTOMLEFT", 15, 15) statusbg:SetPoint("BOTTOMRIGHT", -132, 15) statusbg:SetHeight(24) @@ -235,13 +238,21 @@ local function Constructor() statusbg:SetBackdropBorderColor(0.4,0.4,0.4) statusbg:SetScript("OnEnter", StatusBar_OnEnter) statusbg:SetScript("OnLeave", StatusBar_OnLeave) - local statustext = statusbg:CreateFontString(nil, "OVERLAY", "GameFontNormal") statustext:SetPoint("TOPLEFT", 7, -2) statustext:SetPoint("BOTTOMRIGHT", -7, 2) statustext:SetHeight(20) statustext:SetJustifyH("LEFT") statustext:SetText("") + +--[[ + local statusbg = frame:CreateTexture(nil, "BORDER") + statusbg:SetTexture(251963) -- Interface\\PaperDollInfoFrame\\UI-GearManager-Border + statusbg:SetPoint("TOPLEFT", 8, -24) + statusbg:SetPoint("BOTTOMRIGHT", -6, 8) + statusbg:SetVertexColor(0, 0, 0, .75) +]] + --Hacky hacky to set a logo then text -- temp logo ChangeMe local titlebg = frame:CreateTexture(nil, "OVERLAY") @@ -292,7 +303,8 @@ local function Constructor() line1:SetWidth(14) line1:SetHeight(14) line1:SetPoint("BOTTOMRIGHT", -8, 8) - line1:SetTexture("Interface\\Tooltips\\UI-Tooltip-Border") + line1:SetTexture(251963) -- Interface\\PaperDollInfoFrame\\UI-GearManager-Border +-- line1:SetTexture("Interface\\Tooltips\\UI-Tooltip-Border") local x = 0.1 * 14/17 line1:SetTexCoord(0.05 - x, 0.5, 0.05, 0.5 + x, 0.05, 0.5 - x, 0.5 + x, 0.5) @@ -300,7 +312,8 @@ local function Constructor() line2:SetWidth(8) line2:SetHeight(8) line2:SetPoint("BOTTOMRIGHT", -8, 8) - line2:SetTexture("Interface\\Tooltips\\UI-Tooltip-Border") + line2:SetTexture(251963) -- Interface\\PaperDollInfoFrame\\UI-GearManager-Border +-- line2:SetTexture("Interface\\Tooltips\\UI-Tooltip-Border") local x = 0.1 * 8/17 line2:SetTexCoord(0.05 - x, 0.5, 0.05, 0.5 + x, 0.05, 0.5 - x, 0.5 + x, 0.5) diff --git a/GUI/EMAHelperSettings.lua b/GUI/EMAHelperSettings.lua index 36731db..016e14b 100644 --- a/GUI/EMAHelperSettings.lua +++ b/GUI/EMAHelperSettings.lua @@ -546,11 +546,7 @@ function EMAHelperSettings:CreateScrollList( list ) local rowWidth = list.listWidth - ( columnSpacing * 2 ) - widthOfScrollBar list.listHeight = list.rowsToDisplay * list.rowHeight + ( rowVerticalSpacing * 2 ) -- Create the holder frame. - list.listFrame = CreateFrame( - "Frame", - list.listFrameName, - list.parentFrame - ) + list.listFrame = CreateFrame( "Frame", list.listFrameName, list.parentFrame, BackdropTemplateMixin and "BackdropTemplate" or nil ) list.listFrame:SetBackdrop( self:CreateBackdrop() ) list.listFrame:SetBackdropColor( 0.1, 0.1, 0.1, 0.5 ) list.listFrame:SetBackdropBorderColor( 0.4, 0.4, 0.4 ) diff --git a/Libs/AceAddon-3.0/AceAddon-3.0.lua b/Libs/AceAddon-3.0/AceAddon-3.0.lua index 2b2a00e..1b63bd1 100644 --- a/Libs/AceAddon-3.0/AceAddon-3.0.lua +++ b/Libs/AceAddon-3.0/AceAddon-3.0.lua @@ -28,9 +28,9 @@ -- end -- @class file -- @name AceAddon-3.0.lua --- @release $Id: AceAddon-3.0.lua 1202 2019-05-15 23:11:22Z nevcairiel $ +-- @release $Id: AceAddon-3.0.lua 1238 2020-08-28 16:18:42Z nevcairiel $ -local MAJOR, MINOR = "AceAddon-3.0", 12 +local MAJOR, MINOR = "AceAddon-3.0", 13 local AceAddon, oldminor = LibStub:NewLibrary(MAJOR, MINOR) if not AceAddon then return end -- No Upgrade needed. @@ -601,10 +601,20 @@ function AceAddon:IterateAddonStatus() return pairs(self.statuses) end function AceAddon:IterateEmbedsOnAddon(addon) return pairs(self.embeds[addon]) end function AceAddon:IterateModulesOfAddon(addon) return pairs(addon.modules) end +-- Blizzard AddOns which can load very early in the loading process and mess with Ace3 addon loading +local BlizzardEarlyLoadAddons = { + Blizzard_DebugTools = true, + Blizzard_TimeManager = true, + Blizzard_BattlefieldMap = true, + Blizzard_MapCanvas = true, + Blizzard_SharedMapDataProviders = true, + Blizzard_CombatLog = true, +} + -- Event Handling local function onEvent(this, event, arg1) - -- 2011-08-17 nevcairiel - ignore the load event of Blizzard_DebugTools, so a potential startup error isn't swallowed up - if (event == "ADDON_LOADED" and arg1 ~= "Blizzard_DebugTools") or event == "PLAYER_LOGIN" then + -- 2020-08-28 nevcairiel - ignore the load event of Blizzard addons which occur early in the loading process + if (event == "ADDON_LOADED" and (arg1 == nil or not BlizzardEarlyLoadAddons[arg1])) or event == "PLAYER_LOGIN" then -- if a addon loads another addon, recursion could happen here, so we need to validate the table on every iteration while(#AceAddon.initializequeue > 0) do local addon = tremove(AceAddon.initializequeue, 1) diff --git a/Libs/AceConfig-3.0/AceConfigDialog-3.0/AceConfigDialog-3.0.lua b/Libs/AceConfig-3.0/AceConfigDialog-3.0/AceConfigDialog-3.0.lua index 1e36320..a14e07d 100644 --- a/Libs/AceConfig-3.0/AceConfigDialog-3.0/AceConfigDialog-3.0.lua +++ b/Libs/AceConfig-3.0/AceConfigDialog-3.0/AceConfigDialog-3.0.lua @@ -1,13 +1,13 @@ --- AceConfigDialog-3.0 generates AceGUI-3.0 based windows based on option tables. -- @class file -- @name AceConfigDialog-3.0 --- @release $Id: AceConfigDialog-3.0.lua 1222 2019-07-26 22:14:43Z funkydude $ +-- @release $Id: AceConfigDialog-3.0.lua 1232 2020-04-14 22:21:22Z nevcairiel $ local LibStub = LibStub local gui = LibStub("AceGUI-3.0") local reg = LibStub("AceConfigRegistry-3.0") -local MAJOR, MINOR = "AceConfigDialog-3.0", 77 +local MAJOR, MINOR = "AceConfigDialog-3.0", 79 local AceConfigDialog, oldminor = LibStub:NewLibrary(MAJOR, MINOR) if not AceConfigDialog then return end @@ -564,8 +564,19 @@ do end end) - local border = CreateFrame("Frame", nil, frame, "DialogBorderDarkTemplate") - border:SetAllPoints(frame) + if WOW_PROJECT_ID == WOW_PROJECT_CLASSIC then + frame:SetBackdrop({ + bgFile = [[Interface\DialogFrame\UI-DialogBox-Background-Dark]], + edgeFile = [[Interface\DialogFrame\UI-DialogBox-Border]], + tile = true, + tileSize = 32, + edgeSize = 32, + insets = { left = 11, right = 11, top = 11, bottom = 11 }, + }) + else + local border = CreateFrame("Frame", nil, frame, "DialogBorderDarkTemplate") + border:SetAllPoints(frame) + end local text = frame:CreateFontString(nil, "ARTWORK", "GameFontHighlight") text:SetSize(290, 0) @@ -900,7 +911,7 @@ end local function MultiControlOnClosed(widget, event, ...) local user = widget:GetUserDataTable() - if user.valuechanged then + if user.valuechanged and not widget:IsReleasing() then local iscustom = user.rootframe:GetUserData("iscustom") local basepath = user.rootframe:GetUserData("basepath") or emptyTbl if iscustom then diff --git a/Libs/AceGUI-3.0-SharedMediaWidgets/AceGUI-3.0-SharedMediaWidgets/prototypes.lua b/Libs/AceGUI-3.0-SharedMediaWidgets/AceGUI-3.0-SharedMediaWidgets/prototypes.lua index f77cfa0..121e3b4 100644 --- a/Libs/AceGUI-3.0-SharedMediaWidgets/AceGUI-3.0-SharedMediaWidgets/prototypes.lua +++ b/Libs/AceGUI-3.0-SharedMediaWidgets/AceGUI-3.0-SharedMediaWidgets/prototypes.lua @@ -112,7 +112,7 @@ do function AGSMW:GetBaseFrameWithWindow() local frame = self:GetBaseFrame() - local displayButton = CreateFrame("Button", nil, frame) + local displayButton = CreateFrame("Button", nil, frame, BackdropTemplateMixin and "BackdropTemplate" or nil) displayButton:SetHeight(42) displayButton:SetWidth(42) displayButton:SetPoint("TOPLEFT", frame, "TOPLEFT", 1, -2) diff --git a/Libs/AceGUI-3.0/AceGUI-3.0.lua b/Libs/AceGUI-3.0/AceGUI-3.0.lua index f59edda..cde61f6 100644 --- a/Libs/AceGUI-3.0/AceGUI-3.0.lua +++ b/Libs/AceGUI-3.0/AceGUI-3.0.lua @@ -24,8 +24,8 @@ -- f:AddChild(btn) -- @class file -- @name AceGUI-3.0 --- @release $Id: AceGUI-3.0.lua 1221 2019-07-20 18:23:00Z nevcairiel $ -local ACEGUI_MAJOR, ACEGUI_MINOR = "AceGUI-3.0", 39 +-- @release $Id: AceGUI-3.0.lua 1231 2020-04-14 22:20:36Z nevcairiel $ +local ACEGUI_MAJOR, ACEGUI_MINOR = "AceGUI-3.0", 41 local AceGUI, oldminor = LibStub:NewLibrary(ACEGUI_MAJOR, ACEGUI_MINOR) if not AceGUI then return end -- No upgrade needed @@ -176,6 +176,8 @@ end -- If this widget is a Container-Widget, all of its Child-Widgets will be releases as well. -- @param widget The widget to release function AceGUI:Release(widget) + if widget.isQueuedForRelease then return end + widget.isQueuedForRelease = true safecall(widget.PauseLayout, widget) widget.frame:Hide() widget:Fire("OnRelease") @@ -206,9 +208,26 @@ function AceGUI:Release(widget) widget.content.width = nil widget.content.height = nil end + widget.isQueuedForRelease = nil delWidget(widget, widget.type) end +--- Check if a widget is currently in the process of being released +-- This function check if this widget, or any of its parents (in which case it'll be released shortly as well) +-- are currently being released. This allows addon to handle any callbacks accordingly. +-- @param widget The widget to check +function AceGUI:IsReleasing(widget) + if widget.isQueuedForRelease then + return true + end + + if widget.parent and widget.parent.AceGUIWidgetVersion then + return AceGUI:IsReleasing(widget.parent) + end + + return false +end + ----------- -- Focus -- ----------- @@ -335,6 +354,10 @@ do AceGUI:Release(self) end + WidgetBase.IsReleasing = function(self) + return AceGUI:IsReleasing(self) + end + WidgetBase.SetPoint = function(self, ...) return self.frame:SetPoint(...) end diff --git a/Libs/AceGUI-3.0/widgets/AceGUIContainer-DropDownGroup.lua b/Libs/AceGUI-3.0/widgets/AceGUIContainer-DropDownGroup.lua index 4b09d64..379ea25 100644 --- a/Libs/AceGUI-3.0/widgets/AceGUIContainer-DropDownGroup.lua +++ b/Libs/AceGUI-3.0/widgets/AceGUIContainer-DropDownGroup.lua @@ -2,7 +2,7 @@ DropdownGroup Container Container controlled by a dropdown on the top. -------------------------------------------------------------------------------]] -local Type, Version = "DropdownGroup", 21 +local Type, Version = "DropdownGroup", 22 local AceGUI = LibStub and LibStub("AceGUI-3.0", true) if not AceGUI or (AceGUI:GetWidgetVersion(Type) or 0) >= Version then return end @@ -125,7 +125,7 @@ local function Constructor() dropdown.frame:Show() dropdown:SetLabel("") - local border = CreateFrame("Frame", nil, frame) + local border = CreateFrame("Frame", nil, frame, BackdropTemplateMixin and "BackdropTemplate" or nil) border:SetPoint("TOPLEFT", 0, -26) border:SetPoint("BOTTOMRIGHT", 0, 3) border:SetBackdrop(PaneBackdrop) diff --git a/Libs/AceGUI-3.0/widgets/AceGUIContainer-Frame.lua b/Libs/AceGUI-3.0/widgets/AceGUIContainer-Frame.lua index ec98f4b..fbd6005 100644 --- a/Libs/AceGUI-3.0/widgets/AceGUIContainer-Frame.lua +++ b/Libs/AceGUI-3.0/widgets/AceGUIContainer-Frame.lua @@ -1,7 +1,7 @@ --[[----------------------------------------------------------------------------- Frame Container -------------------------------------------------------------------------------]] -local Type, Version = "Frame", 26 +local Type, Version = "Frame", 27 local AceGUI = LibStub and LibStub("AceGUI-3.0", true) if not AceGUI or (AceGUI:GetWidgetVersion(Type) or 0) >= Version then return end @@ -179,7 +179,7 @@ local PaneBackdrop = { } local function Constructor() - local frame = CreateFrame("Frame", nil, UIParent) + local frame = CreateFrame("Frame", nil, UIParent, BackdropTemplateMixin and "BackdropTemplate" or nil) frame:Hide() frame:EnableMouse(true) @@ -201,7 +201,7 @@ local function Constructor() closebutton:SetWidth(100) closebutton:SetText(CLOSE) - local statusbg = CreateFrame("Button", nil, frame) + local statusbg = CreateFrame("Button", nil, frame, BackdropTemplateMixin and "BackdropTemplate" or nil) statusbg:SetPoint("BOTTOMLEFT", 15, 15) statusbg:SetPoint("BOTTOMRIGHT", -132, 15) statusbg:SetHeight(24) diff --git a/Libs/AceGUI-3.0/widgets/AceGUIContainer-InlineGroup.lua b/Libs/AceGUI-3.0/widgets/AceGUIContainer-InlineGroup.lua index f3db7d6..357e843 100644 --- a/Libs/AceGUI-3.0/widgets/AceGUIContainer-InlineGroup.lua +++ b/Libs/AceGUI-3.0/widgets/AceGUIContainer-InlineGroup.lua @@ -2,7 +2,7 @@ InlineGroup Container Simple container widget that creates a visible "box" with an optional title. -------------------------------------------------------------------------------]] -local Type, Version = "InlineGroup", 21 +local Type, Version = "InlineGroup", 22 local AceGUI = LibStub and LibStub("AceGUI-3.0", true) if not AceGUI or (AceGUI:GetWidgetVersion(Type) or 0) >= Version then return end @@ -75,7 +75,7 @@ local function Constructor() titletext:SetJustifyH("LEFT") titletext:SetHeight(18) - local border = CreateFrame("Frame", nil, frame) + local border = CreateFrame("Frame", nil, frame, BackdropTemplateMixin and "BackdropTemplate" or nil) border:SetPoint("TOPLEFT", 0, -17) border:SetPoint("BOTTOMRIGHT", -1, 3) border:SetBackdrop(PaneBackdrop) diff --git a/Libs/AceGUI-3.0/widgets/AceGUIContainer-TabGroup.lua b/Libs/AceGUI-3.0/widgets/AceGUIContainer-TabGroup.lua index 053e27d..195ab0b 100644 --- a/Libs/AceGUI-3.0/widgets/AceGUIContainer-TabGroup.lua +++ b/Libs/AceGUI-3.0/widgets/AceGUIContainer-TabGroup.lua @@ -2,7 +2,7 @@ TabGroup Container Container that uses tabs on top to switch between groups. -------------------------------------------------------------------------------]] -local Type, Version = "TabGroup", 36 +local Type, Version = "TabGroup", 37 local AceGUI = LibStub and LibStub("AceGUI-3.0", true) if not AceGUI or (AceGUI:GetWidgetVersion(Type) or 0) >= Version then return end @@ -316,7 +316,7 @@ local function Constructor() titletext:SetHeight(18) titletext:SetText("") - local border = CreateFrame("Frame", nil, frame) + local border = CreateFrame("Frame", nil, frame, BackdropTemplateMixin and "BackdropTemplate" or nil) border:SetPoint("TOPLEFT", 1, -27) border:SetPoint("BOTTOMRIGHT", -1, 3) border:SetBackdrop(PaneBackdrop) diff --git a/Libs/AceGUI-3.0/widgets/AceGUIContainer-TreeGroup.lua b/Libs/AceGUI-3.0/widgets/AceGUIContainer-TreeGroup.lua index eb94c04..cdc8051 100644 --- a/Libs/AceGUI-3.0/widgets/AceGUIContainer-TreeGroup.lua +++ b/Libs/AceGUI-3.0/widgets/AceGUIContainer-TreeGroup.lua @@ -2,12 +2,10 @@ TreeGroup Container Container that uses a tree control to switch between groups. -------------------------------------------------------------------------------]] -local Type, Version = "TreeGroup", 44 +local Type, Version = "TreeGroup", 45 local AceGUI = LibStub and LibStub("AceGUI-3.0", true) if not AceGUI or (AceGUI:GetWidgetVersion(Type) or 0) >= Version then return end -local WoW80 = select(4, GetBuildInfo()) >= 80000 - -- Lua APIs local next, pairs, ipairs, assert, type = next, pairs, ipairs, assert, type local math_min, math_max, floor = math.min, math.max, floor @@ -422,8 +420,7 @@ local methods = { local maxlines = (floor(((self.treeframe:GetHeight()or 0) - 20 ) / 18)) if maxlines <= 0 then return end - -- workaround for lag spikes on WoW 8.0 - if WoW80 and self.frame:GetParent() == UIParent and not fromOnUpdate then + if self.frame:GetParent() == UIParent and not fromOnUpdate then self.frame:SetScript("OnUpdate", FirstFrameUpdate) return end @@ -632,7 +629,7 @@ local PaneBackdrop = { local DraggerBackdrop = { bgFile = "Interface\\Tooltips\\UI-Tooltip-Background", edgeFile = nil, - tile = true, tileSize = 16, edgeSize = 0, + tile = true, tileSize = 16, edgeSize = 1, insets = { left = 3, right = 3, top = 7, bottom = 7 } } @@ -640,7 +637,7 @@ local function Constructor() local num = AceGUI:GetNextWidgetNum(Type) local frame = CreateFrame("Frame", nil, UIParent) - local treeframe = CreateFrame("Frame", nil, frame) + local treeframe = CreateFrame("Frame", nil, frame, BackdropTemplateMixin and "BackdropTemplate" or nil) treeframe:SetPoint("TOPLEFT") treeframe:SetPoint("BOTTOMLEFT") treeframe:SetWidth(DEFAULT_TREE_WIDTH) @@ -655,7 +652,7 @@ local function Constructor() treeframe:SetScript("OnSizeChanged", Tree_OnSizeChanged) treeframe:SetScript("OnMouseWheel", Tree_OnMouseWheel) - local dragger = CreateFrame("Frame", nil, treeframe) + local dragger = CreateFrame("Frame", nil, treeframe, BackdropTemplateMixin and "BackdropTemplate" or nil) dragger:SetWidth(8) dragger:SetPoint("TOP", treeframe, "TOPRIGHT") dragger:SetPoint("BOTTOM", treeframe, "BOTTOMRIGHT") @@ -680,7 +677,7 @@ local function Constructor() scrollbg:SetAllPoints(scrollbar) scrollbg:SetColorTexture(0,0,0,0.4) - local border = CreateFrame("Frame",nil,frame) + local border = CreateFrame("Frame", nil, frame, BackdropTemplateMixin and "BackdropTemplate" or nil) border:SetPoint("TOPLEFT", treeframe, "TOPRIGHT") border:SetPoint("BOTTOMRIGHT") border:SetBackdrop(PaneBackdrop) diff --git a/Libs/AceGUI-3.0/widgets/AceGUIWidget-DropDown.lua b/Libs/AceGUI-3.0/widgets/AceGUIWidget-DropDown.lua index 0d6308f..5481630 100644 --- a/Libs/AceGUI-3.0/widgets/AceGUIWidget-DropDown.lua +++ b/Libs/AceGUI-3.0/widgets/AceGUIWidget-DropDown.lua @@ -1,4 +1,4 @@ ---[[ $Id: AceGUIWidget-DropDown.lua 1209 2019-06-24 21:01:01Z nevcairiel $ ]]-- +--[[ $Id: AceGUIWidget-DropDown.lua 1239 2020-09-20 10:22:02Z nevcairiel $ ]]-- local AceGUI = LibStub("AceGUI-3.0") -- Lua APIs @@ -39,7 +39,7 @@ end do local widgetType = "Dropdown-Pullout" - local widgetVersion = 3 + local widgetVersion = 5 --[[ Static data ]]-- @@ -193,12 +193,7 @@ do local height = 8 for i, item in pairs(items) do - if i == 1 then - item:SetPoint("TOP", itemFrame, "TOP", 0, -2) - else - item:SetPoint("TOP", items[i-1].frame, "BOTTOM", 0, 1) - end - + item:SetPoint("TOP", itemFrame, "TOP", 0, -2 + (i - 1) * -16) item:Show() height = height + 16 @@ -258,7 +253,7 @@ do local function Constructor() local count = AceGUI:GetNextWidgetNum(widgetType) - local frame = CreateFrame("Frame", "AceGUI30Pullout"..count, UIParent) + local frame = CreateFrame("Frame", "AceGUI30Pullout"..count, UIParent, BackdropTemplateMixin and "BackdropTemplate" or nil) local self = {} self.count = count self.type = widgetType @@ -309,7 +304,7 @@ do scrollFrame.obj = self itemFrame.obj = self - local slider = CreateFrame("Slider", "AceGUI30PulloutScrollbar"..count, scrollFrame) + local slider = CreateFrame("Slider", "AceGUI30PulloutScrollbar"..count, scrollFrame, BackdropTemplateMixin and "BackdropTemplate" or nil) slider:SetOrientation("VERTICAL") slider:SetHitRectInsets(0, 0, -10, 0) slider:SetBackdrop(sliderBackdrop) @@ -356,7 +351,7 @@ end do local widgetType = "Dropdown" - local widgetVersion = 34 + local widgetVersion = 35 --[[ Static data ]]-- @@ -465,6 +460,7 @@ do self:SetWidth(200) self:SetLabel() self:SetPulloutWidth(nil) + self.list = {} end -- exported, AceGUI callback @@ -535,9 +531,7 @@ do -- exported local function SetValue(self, value) - if self.list then - self:SetText(self.list[value] or "") - end + self:SetText(self.list[value] or "") self.value = value end @@ -601,7 +595,7 @@ do end end local function SetList(self, list, order, itemType) - self.list = list + self.list = list or {} self.pullout:Clear() self.hasClose = nil if not list then return end @@ -629,10 +623,8 @@ do -- exported local function AddItem(self, value, text, itemType) - if self.list then - self.list[value] = text - AddListItem(self, value, text, itemType) - end + self.list[value] = text + AddListItem(self, value, text, itemType) end -- exported diff --git a/Libs/AceGUI-3.0/widgets/AceGUIWidget-Keybinding.lua b/Libs/AceGUI-3.0/widgets/AceGUIWidget-Keybinding.lua index ec4cead..17a3c0b 100644 --- a/Libs/AceGUI-3.0/widgets/AceGUIWidget-Keybinding.lua +++ b/Libs/AceGUI-3.0/widgets/AceGUIWidget-Keybinding.lua @@ -2,7 +2,7 @@ Keybinding Widget Set Keybindings in the Config UI. -------------------------------------------------------------------------------]] -local Type, Version = "Keybinding", 25 +local Type, Version = "Keybinding", 26 local AceGUI = LibStub and LibStub("AceGUI-3.0", true) if not AceGUI or (AceGUI:GetWidgetVersion(Type) or 0) >= Version then return end @@ -214,7 +214,7 @@ local function Constructor() label:SetJustifyH("CENTER") label:SetHeight(18) - local msgframe = CreateFrame("Frame", nil, UIParent) + local msgframe = CreateFrame("Frame", nil, UIParent, BackdropTemplateMixin and "BackdropTemplate" or nil) msgframe:SetHeight(30) msgframe:SetBackdrop(ControlBackdrop) msgframe:SetBackdropColor(0,0,0) diff --git a/Libs/AceGUI-3.0/widgets/AceGUIWidget-Label.lua b/Libs/AceGUI-3.0/widgets/AceGUIWidget-Label.lua index eec999e..5c75f3b 100644 --- a/Libs/AceGUI-3.0/widgets/AceGUIWidget-Label.lua +++ b/Libs/AceGUI-3.0/widgets/AceGUIWidget-Label.lua @@ -2,7 +2,7 @@ Label Widget Displays text and optionally an icon. -------------------------------------------------------------------------------]] -local Type, Version = "Label", 26 +local Type, Version = "Label", 27 local AceGUI = LibStub and LibStub("AceGUI-3.0", true) if not AceGUI or (AceGUI:GetWidgetVersion(Type) or 0) >= Version then return end @@ -130,6 +130,7 @@ local methods = { ["SetFont"] = function(self, font, height, flags) self.label:SetFont(font, height, flags) + UpdateImageAnchor(self) end, ["SetFontObject"] = function(self, font) diff --git a/Libs/AceGUI-3.0/widgets/AceGUIWidget-MultiLineEditBox.lua b/Libs/AceGUI-3.0/widgets/AceGUIWidget-MultiLineEditBox.lua index f702110..0e953ab 100644 --- a/Libs/AceGUI-3.0/widgets/AceGUIWidget-MultiLineEditBox.lua +++ b/Libs/AceGUI-3.0/widgets/AceGUIWidget-MultiLineEditBox.lua @@ -1,4 +1,4 @@ -local Type, Version = "MultiLineEditBox", 28 +local Type, Version = "MultiLineEditBox", 29 local AceGUI = LibStub and LibStub("AceGUI-3.0", true) if not AceGUI or (AceGUI:GetWidgetVersion(Type) or 0) >= Version then return end @@ -297,7 +297,7 @@ local function Constructor() text:SetPoint("BOTTOMRIGHT", button, "BOTTOMRIGHT", -5, 1) text:SetJustifyV("MIDDLE") - local scrollBG = CreateFrame("Frame", nil, frame) + local scrollBG = CreateFrame("Frame", nil, frame, BackdropTemplateMixin and "BackdropTemplate" or nil) scrollBG:SetBackdrop(backdrop) scrollBG:SetBackdropColor(0, 0, 0) scrollBG:SetBackdropBorderColor(0.4, 0.4, 0.4) diff --git a/Libs/AceGUI-3.0/widgets/AceGUIWidget-Slider.lua b/Libs/AceGUI-3.0/widgets/AceGUIWidget-Slider.lua index 019c84e..9f26d2d 100644 --- a/Libs/AceGUI-3.0/widgets/AceGUIWidget-Slider.lua +++ b/Libs/AceGUI-3.0/widgets/AceGUIWidget-Slider.lua @@ -2,7 +2,7 @@ Slider Widget Graphical Slider, like, for Range values. -------------------------------------------------------------------------------]] -local Type, Version = "Slider", 22 +local Type, Version = "Slider", 23 local AceGUI = LibStub and LibStub("AceGUI-3.0", true) if not AceGUI or (AceGUI:GetWidgetVersion(Type) or 0) >= Version then return end @@ -225,7 +225,7 @@ local function Constructor() label:SetJustifyH("CENTER") label:SetHeight(15) - local slider = CreateFrame("Slider", nil, frame) + local slider = CreateFrame("Slider", nil, frame, BackdropTemplateMixin and "BackdropTemplate" or nil) slider:SetOrientation("HORIZONTAL") slider:SetHeight(15) slider:SetHitRectInsets(0, 0, -10, 0) @@ -247,7 +247,7 @@ local function Constructor() local hightext = slider:CreateFontString(nil, "ARTWORK", "GameFontHighlightSmall") hightext:SetPoint("TOPRIGHT", slider, "BOTTOMRIGHT", -2, 3) - local editbox = CreateFrame("EditBox", nil, frame) + local editbox = CreateFrame("EditBox", nil, frame, BackdropTemplateMixin and "BackdropTemplate" or nil) editbox:SetAutoFocus(false) editbox:SetFontObject(GameFontHighlightSmall) editbox:SetPoint("TOP", slider, "BOTTOM") diff --git a/Libs/Bindings.xml b/Libs/Bindings.xml new file mode 100644 index 0000000..77ab8c8 --- /dev/null +++ b/Libs/Bindings.xml @@ -0,0 +1,5 @@ +<Bindings> + <Binding name="RELOADUI" description="Reloads the UI." header="ACE3" category="ADDONS"> + ReloadUI() + </Binding> +</Bindings> diff --git a/Libs/CHANGES.txt b/Libs/CHANGES.txt new file mode 100644 index 0000000..541e851 --- /dev/null +++ b/Libs/CHANGES.txt @@ -0,0 +1,93 @@ +------------------------------------------------------------------------ +r1240 | nevcairiel | 2020-10-13 07:59:32 +0000 (Tue, 13 Oct 2020) | 1 line +Changed paths: + M /trunk/Ace3.toc + M /trunk/changelog.txt + +Update changelog and TOC +------------------------------------------------------------------------ +r1239 | nevcairiel | 2020-09-20 10:22:02 +0000 (Sun, 20 Sep 2020) | 1 line +Changed paths: + M /trunk/AceGUI-3.0/widgets/AceGUIWidget-DropDown.lua + +AceGUI-3.0: DropDown: Anchor all items to the dropdown frame instead of chaining anchors, fixes anchoring on WoW 9.0 with many items +------------------------------------------------------------------------ +r1238 | nevcairiel | 2020-08-28 16:18:42 +0000 (Fri, 28 Aug 2020) | 3 lines +Changed paths: + M /trunk/AceAddon-3.0/AceAddon-3.0.lua + +AceAddon-3.0: Blacklist more Blizzard addons from triggering Ace3 load events + +These addons can be loaded very early by UIParent, which causes issues with loading certain addons +------------------------------------------------------------------------ +r1237 | nevcairiel | 2020-07-17 22:50:38 +0000 (Fri, 17 Jul 2020) | 1 line +Changed paths: + M /trunk/AceGUI-3.0/widgets/AceGUIContainer-DropDownGroup.lua + M /trunk/AceGUI-3.0/widgets/AceGUIContainer-Frame.lua + M /trunk/AceGUI-3.0/widgets/AceGUIContainer-InlineGroup.lua + M /trunk/AceGUI-3.0/widgets/AceGUIContainer-TabGroup.lua + M /trunk/AceGUI-3.0/widgets/AceGUIContainer-TreeGroup.lua + M /trunk/AceGUI-3.0/widgets/AceGUIWidget-DropDown.lua + M /trunk/AceGUI-3.0/widgets/AceGUIWidget-Keybinding.lua + M /trunk/AceGUI-3.0/widgets/AceGUIWidget-MultiLineEditBox.lua + M /trunk/AceGUI-3.0/widgets/AceGUIWidget-Slider.lua + +Use BackdropTemplate in WoW 9.0 +------------------------------------------------------------------------ +r1236 | nevcairiel | 2020-04-16 07:36:45 +0000 (Thu, 16 Apr 2020) | 1 line +Changed paths: + M /trunk/AceGUI-3.0/widgets/AceGUIWidget-DropDown.lua + +AceGUI-3.0: DropDown: Initialize the widget with an empty item list (instead of nil), this allows AddItem to be used right away (Fixes #542) +------------------------------------------------------------------------ +r1235 | nevcairiel | 2020-04-15 10:27:55 +0000 (Wed, 15 Apr 2020) | 1 line +Changed paths: + M /trunk/AceGUI-3.0/widgets/AceGUIContainer-TreeGroup.lua + +Cleanup debug +------------------------------------------------------------------------ +r1234 | nevcairiel | 2020-04-15 10:14:35 +0000 (Wed, 15 Apr 2020) | 1 line +Changed paths: + M /trunk/AceGUI-3.0/widgets/AceGUIContainer-TreeGroup.lua + +AceGUI-3.0: TreeGroup: Remove pre-8.0 compat +------------------------------------------------------------------------ +r1233 | nevcairiel | 2020-04-15 10:09:47 +0000 (Wed, 15 Apr 2020) | 1 line +Changed paths: + M /trunk/AceGUI-3.0/widgets/AceGUIWidget-Label.lua + +AceGUI-3.0: Label: Refresh anchoring after changing the font (Fixes #540) +------------------------------------------------------------------------ +r1232 | nevcairiel | 2020-04-14 22:21:22 +0000 (Tue, 14 Apr 2020) | 1 line +Changed paths: + M /trunk/AceConfig-3.0/AceConfigDialog-3.0/AceConfigDialog-3.0.lua + +AceConfigDialog-3.0: Prevent a dialog refresh when a multiselect control is closed during release (Fixes #539) +------------------------------------------------------------------------ +r1231 | nevcairiel | 2020-04-14 22:20:36 +0000 (Tue, 14 Apr 2020) | 1 line +Changed paths: + M /trunk/AceGUI-3.0/AceGUI-3.0.lua + +AceGUI-3.0: Add a getter to allow callers to check if a widget is currently being released, which can be used as part of some callbacks to alter behavior +------------------------------------------------------------------------ +r1230 | funkydude | 2020-01-14 17:01:25 +0000 (Tue, 14 Jan 2020) | 1 line +Changed paths: + M /trunk/Ace3.toc + +bump toc +------------------------------------------------------------------------ +r1229 | funkydude | 2019-10-11 20:48:50 +0000 (Fri, 11 Oct 2019) | 1 line +Changed paths: + M /trunk/Ace3.toc + +bump toc +------------------------------------------------------------------------ +r1228 | nevcairiel | 2019-09-06 08:51:17 +0000 (Fri, 06 Sep 2019) | 3 lines +Changed paths: + M /trunk/AceGUI-3.0/AceGUI-3.0.lua + +AceGUI-3.0: Avoid re-entrance into the Release function + +This can happen if a frame is released in a callback fired in the release process, and may in some cases throw errors. +------------------------------------------------------------------------ + diff --git a/Libs/EMALibActionButton-1.0.lua b/Libs/EMALibActionButton-1.0.lua index bfb67bc..1ba1c07 100644 --- a/Libs/EMALibActionButton-1.0.lua +++ b/Libs/EMALibActionButton-1.0.lua @@ -27,11 +27,11 @@ LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -the file was edit for Ema by Jennifer cally 2016-2018 +the file was edit for Ema by Jennifer cally 2016-2020 9.0 ]] local MAJOR_VERSION = "EMALibActionButton-1.0" -local MINOR_VERSION = 74 +local MINOR_VERSION = 75 if not LibStub then error(MAJOR_VERSION .. " requires LibStub.") end local lib, oldversion = LibStub:NewLibrary(MAJOR_VERSION, MINOR_VERSION) @@ -44,20 +44,17 @@ local setmetatable, wipe, unpack, pairs, next = setmetatable, wipe, unpack, pair local str_match, format, tinsert, tremove = string.match, format, tinsert, tremove -- Global vars/functions that we don't upvalue since they might get hooked, or upgraded --- List them here for Mikk's FindGlobals script --- Note: No WoW API function get upvalued to allow proper interaction with any addons that try to hook them. --- GLOBALS: LibStub, CreateFrame, InCombatLockdown, ClearCursor, GetCursorInfo, GameTooltip, GameTooltip_SetDefaultAnchor --- GLOBALS: GetBindingKey, GetBindingText, SetBinding, SetBindingClick, GetCVar, GetMacroInfo --- GLOBALS: PickupAction, PickupItem, PickupMacro, PickupPetAction, PickupSpell, PickupCompanion, PickupEquipmentSet --- GLOBALS: CooldownFrame_SetTimer, UIParent, IsSpellOverlayed, SpellFlyout, GetMouseFocus, SetClampedTextureRotation --- GLOBALS: GetActionInfo, GetActionTexture, HasAction, GetActionText, GetActionCount, GetActionCooldown, IsAttackAction --- GLOBALS: IsAutoRepeatAction, IsEquippedAction, IsCurrentAction, IsConsumableAction, IsUsableAction, IsStackableAction, IsActionInRange --- GLOBALS: GetSpellLink, GetMacroSpell, GetSpellTexture, GetSpellCount, GetSpellCooldown, IsAttackSpell, IsCurrentSpell --- GLOBALS: FindSpellBookSlotBySpellID, IsUsableSpell, IsConsumableSpell, IsSpellInRange, IsAutoRepeatSpell --- GLOBALS: GetItemIcon, GetItemCount, GetItemCooldown, IsEquippedItem, IsCurrentItem, IsUsableItem, IsConsumableItem, IsItemInRange --- GLOBALS: GetActionCharges, IsItemAction, GetSpellCharges --- GLOBALS: RANGE_INDICATOR, ATTACK_BUTTON_FLASH_TIME, TOOLTIP_UPDATE_TIME --- GLOBALS: ZoneAbilityFrame, HasZoneAbility, GetLastZoneAbilitySpellTexture +-- GLOBALS: CooldownFrame_Set, CreateFrame, FindSpellBookSlotBySpellID, FlyoutHasSpell, GameTooltip, GameTooltip_SetDefaultAnchor +-- GLOBALS: GetActionCharges, GetActionCooldown, GetActionCount, GetActionInfo, GetActionLossOfControlCooldown, GetActionText +-- GLOBALS: GetActionTexture, GetBindingKey, GetBindingText, GetCursorInfo, GetCVar, GetCVarBool, GetItemCooldown, GetItemCount +-- GLOBALS: GetItemIcon, GetLastZoneAbilitySpellTexture, GetMacroInfo, GetMacroSpell, GetModifiedClick, GetMouseFocus, GetSpellCharges +-- GLOBALS: GetSpellCooldown, GetSpellCount, GetSpellInfo, GetSpellTexture, HasAction, HasZoneAbility, InCombatLockdown, IsActionInRange +-- GLOBALS: IsAltKeyDown, IsAttackAction, IsAttackSpell, IsAutoRepeatAction, IsAutoRepeatSpell, IsConsumableAction, IsConsumableItem +-- GLOBALS: IsConsumableSpell, IsControlKeyDown, IsCurrentAction, IsCurrentItem, IsCurrentSpell, IsEquippedAction, IsEquippedItem +-- GLOBALS: IsItemAction, IsItemInRange, IsShiftKeyDown, IsSpellInRange, IsSpellOverlayed, IsStackableAction, IsUsableAction, IsUsableItem +-- GLOBALS: IsUsableSpell, LibStub, PickupAction, PickupCompanion, PickupEquipmentSet, PickupItem, PickupMacro, PickupPetAction, PickupSpell +-- GLOBALS: RANGE_INDICATOR, SetBinding, SetBindingClick, SetClampedTextureRotation, SpellFlyout, TOOLTIP_UPDATE_TIME, UIParent, ZoneAbilityFrame + local KeyBound = LibStub("LibKeyBound-1.0", true) local CBH = LibStub("CallbackHandler-1.0") @@ -97,6 +94,8 @@ local Item_MT = {__index = Item} local Macro = setmetatable({}, {__index = Generic}) local Macro_MT = {__index = Macro} +local Toy = setmetatable({}, {__index = Generic}) +local Toy_MT = {__index = Toy} local Custom = setmetatable({}, {__index = Generic}) local Custom_MT = {__index = Custom} @@ -107,6 +106,7 @@ local type_meta_map = { spell = Spell_MT, item = Item_MT, macro = Macro_MT, + toy = Toy_MT, custom = Custom_MT } @@ -117,6 +117,7 @@ local StartFlash, StopFlash, UpdateFlash, UpdateHotkeys, UpdateRangeTimer, Updat local UpdateFlyout, ShowGrid, HideGrid, UpdateGrid, SetupSecureSnippets, WrapOnClick local ShowOverlayGlow, HideOverlayGlow local EndChargeCooldown +local UpdateRange local InitializeEventHandler, OnEvent, ForAllButtons, OnUpdate @@ -131,9 +132,12 @@ local DefaultConfig = { outOfRangeColoring = "button", tooltip = "enabled", showGrid = false, + useColoring = true, colors = { range = { 0.8, 0.1, 0.1 }, - mana = { 0.5, 0.5, 1.0 } + mana = { 0.5, 0.5, 1.0 }, + usable = { 1.0, 1.0, 1.0 }, + notUsable = { 0.4, 0.4, 0.4 }, }, hideElements = { macro = false, @@ -143,6 +147,9 @@ local DefaultConfig = { keyBoundTarget = false, clickOnDown = false, flyoutDirection = "UP", + disableCountDownNumbers = false, + useDrawBling = true, + useDrawSwipeOnCharges = true, } --- Create a new action button. @@ -511,7 +518,8 @@ local function PickupAny(kind, target, detail, ...) if kind == "clear" then ClearCursor() kind, target, detail = target, detail, ... - end + end + if kind == 'action' then PickupAction(target) elseif kind == 'item' then @@ -529,6 +537,31 @@ local function PickupAny(kind, target, detail, ...) end end +function Generic:OnUpdate(elapsed) + if not GetCVarBool('lockActionBars') then return; end + + self.lastupdate = (self.lastupdate or 0) + elapsed; + if (self.lastupdate < .2) then return end + self.lastupdate = 0 + + local isDragKeyDown + if GetModifiedClick("PICKUPACTION") == 'ALT' then + isDragKeyDown = IsAltKeyDown() + elseif GetModifiedClick("PICKUPACTION") == 'CTRL' then + isDragKeyDown = IsControlKeyDown() + elseif GetModifiedClick("PICKUPACTION") == 'SHIFT' then + isDragKeyDown = IsShiftKeyDown() + end + + if isDragKeyDown and (self.clickState == 'AnyDown' or self.clickState == nil) then + self.clickState = 'AnyUp' + self:RegisterForClicks(self.clickState) + elseif self.clickState == 'AnyUp' and not isDragKeyDown then + self.clickState = 'AnyDown' + self:RegisterForClicks(self.clickState) + end +end + function Generic:OnEnter() if self.config.tooltip ~= "disabled" and (self.config.tooltip ~= "nocombat" or not InCombatLockdown()) then UpdateTooltip(self) @@ -541,11 +574,15 @@ function Generic:OnEnter() ClearNewActionHighlight(self._state_action, false, false) UpdateNewAction(self) end + if self.config.clickOnDown then + self:SetScript('OnUpdate', Generic.OnUpdate) + end end function Generic:OnLeave() if GameTooltip:IsForbidden() then return end GameTooltip:Hide() + self:SetScript('OnUpdate', nil) end -- Insecure drag handler to allow clicking on the button with an action on the cursor @@ -623,11 +660,10 @@ function Generic:UpdateConfig(config) if config and type(config) ~= "table" then error("LibActionButton-1.0: UpdateConfig requires a valid configuration!", 2) end - local oldconfig = self.config - if not self.config then self.config = {} end + self.config = {} -- merge the two configs merge(self.config, config, DefaultConfig) - +--[[ if self.config.outOfRangeColoring == "button" or (oldconfig and oldconfig.outOfRangeColoring == "button") then UpdateUsable(self) end @@ -636,7 +672,7 @@ function Generic:UpdateConfig(config) elseif oldconfig and oldconfig.outOfRangeColoring == "hotkey" then self.HotKey:SetVertexColor(0.75, 0.75, 0.75) end - +]] if self.config.hideElements.macro then self.Name:Hide() else @@ -647,7 +683,7 @@ function Generic:UpdateConfig(config) UpdateHotkeys(self) UpdateGrid(self) - Update(self) + Update(self, true) self:RegisterForClicks(self.config.clickOnDown and "AnyDown" or "AnyUp") end @@ -663,9 +699,12 @@ end function InitializeEventHandler() lib.eventFrame:SetScript("OnEvent", OnEvent) + lib.eventFrame:RegisterEvent("PLAYER_ENTERING_WORLD") lib.eventFrame:RegisterEvent("ACTIONBAR_SHOWGRID") lib.eventFrame:RegisterEvent("ACTIONBAR_HIDEGRID") + lib.eventFrame:RegisterEvent("PET_BAR_SHOWGRID") + lib.eventFrame:RegisterEvent("PET_BAR_HIDEGRID") --lib.eventFrame:RegisterEvent("ACTIONBAR_PAGE_CHANGED") --lib.eventFrame:RegisterEvent("UPDATE_BONUS_ACTIONBAR") lib.eventFrame:RegisterEvent("ACTIONBAR_SLOT_CHANGED") @@ -727,11 +766,11 @@ function OnEvent(frame, event, arg1, ...) elseif event == "PLAYER_ENTERING_WORLD" or event == "UPDATE_SHAPESHIFT_FORM" or event == "UPDATE_VEHICLE_ACTIONBAR" then ForAllButtons(Update) elseif event == "ACTIONBAR_PAGE_CHANGED" or event == "UPDATE_BONUS_ACTIONBAR" then - -- TODO: Are these even needed? - elseif event == "ACTIONBAR_SHOWGRID" then - ShowGrid() - elseif event == "ACTIONBAR_HIDEGRID" then - HideGrid() + -- TODO: Are these even needed + elseif event == "ACTIONBAR_SHOWGRID" or event == "PET_BAR_SHOWGRID" then + ShowGrid(event) + elseif event == "ACTIONBAR_HIDEGRID" or event == "PET_BAR_SHOWGRID" then + HideGrid(event) elseif event == "UPDATE_BINDINGS" then ForAllButtons(UpdateHotkeys) elseif event == "PLAYER_TARGET_CHANGED" then @@ -755,7 +794,7 @@ function OnEvent(frame, event, arg1, ...) elseif event == "ACTIONBAR_UPDATE_COOLDOWN" then for button in next, ActionButtons do UpdateCooldown(button) - if GameTooltip:GetOwner() == button then + if GameTooltip_GetOwnerForbidden() == button then UpdateTooltip(button) end end @@ -883,6 +922,8 @@ function OnUpdate(_, elapsed) -- Range if rangeTimer <= 0 then + UpdateRange(button) + --[[ local inRange = button:IsInRange() local oldRange = button.outOfRange button.outOfRange = (inRange == false) @@ -905,6 +946,7 @@ function OnUpdate(_, elapsed) end end end + ]] end end @@ -919,7 +961,16 @@ function OnUpdate(_, elapsed) end local gridCounter = 0 -function ShowGrid() +local isPetGrid = false +function ShowGrid(event) + if event == "PET_BAR_SHOWGRID" then + isPetGrid = true + elseif isPetGrid then + return + -- when PET_BAR_SHOWGRID fires then ACTIONBAR_SHOWGRID fires + -- ACTIONBAR_HIDEGRID will not get called but PET_BAR_HIDEGRID does + -- LIKELY A BLIZZARD ISSUE. + end gridCounter = gridCounter + 1 if gridCounter >= 1 then for button in next, ButtonRegistry do @@ -930,7 +981,12 @@ function ShowGrid() end end -function HideGrid() +function HideGrid(event) + if event == "PET_BAR_HIDEGRID" then + isPetGrid = false + elseif isPetGrid then + return --see comment above related to `isPetGrid` + end if gridCounter > 0 then gridCounter = gridCounter - 1 end @@ -951,6 +1007,31 @@ function UpdateGrid(self) end end +function UpdateRange(self, force) + local inRange = self:IsInRange() + local oldRange = self.outOfRange + self.outOfRange = (inRange == false) + if force or (oldRange ~= self.outOfRange) then + if self.config.outOfRangeColoring == "button" then + UpdateUsable(self) + elseif self.config.outOfRangeColoring == "hotkey" then + local hotkey = self.HotKey + if hotkey:GetText() == RANGE_INDICATOR then + if inRange == false then + hotkey:Show() + else + hotkey:Hide() + end + end + + if inRange == false then + hotkey:SetVertexColor(unpack(self.config.colors.range)) + else + hotkey:SetVertexColor(unpack(self.config.colors.usable)) + end + end + end +end ----------------------------------------------------------- --- KeyBound integration @@ -1021,9 +1102,9 @@ end function Generic:UpdateAction(force) local type, action = self:GetAction() - if force or type ~= self._state_type or action ~= self._state_action then + if force or (type ~= self._state_type) or (action ~= self._state_action) then -- type changed, update the metatable - if force or self._state_type ~= type then + if force or (self._state_type ~= type) then local meta = type_meta_map[type] or type_meta_map.empty setmetatable(self, meta) self._state_type = type @@ -1041,7 +1122,21 @@ function lib:UpdateAllButtons() end end -function Update(self) +function Generic:UpdateAction(force) + local type, action = self:GetAction() + if force or (type ~= self._state_type) or (action ~= self._state_action) then + -- type changed, update the metatable + if force or (self._state_type ~= type) then + local meta = type_meta_map[type] or type_meta_map.empty + setmetatable(self, meta) + self._state_type = type + end + self._state_action = action + Update(self) + end +end + +function Update(self, fromUpdateConfig) if self:HasAction() then ActiveButtons[self] = true if self._state_type == "action" then @@ -1052,7 +1147,6 @@ function Update(self) NonActionButtons[self] = true end self:SetAlpha(1.0) - UpdateButtonState(self) UpdateUsable(self) UpdateCooldown(self) UpdateFlash(self) @@ -1091,7 +1185,9 @@ function Update(self) -- Zone ability button handling self.zoneAbilityDisabled = false - self.icon:SetDesaturated(false) + if not self.saturationLocked then + self.icon:SetDesaturated(false) + end if self._state_type == "action" then local action_type, id = GetActionInfo(self._state_action) if ((action_type == "spell" or action_type == "companion") and ZoneAbilityFrame and ZoneAbilityFrame.baseName and not HasZoneAbility()) then @@ -1100,7 +1196,9 @@ function Update(self) if name == abilityName then texture = GetLastZoneAbilitySpellTexture() self.zoneAbilityDisabled = true - self.icon:SetDesaturated(true) + if not self.saturationLocked then + self.icon:SetDesaturated(true) + end end end end @@ -1110,6 +1208,7 @@ function Update(self) self.icon:Show() self.rangeTimer = - 1 self:SetNormalTexture("Interface\\Buttons\\UI-Quickslot2") + if not self.LBFSkinned and not self.MasqueSkinned then self.NormalTexture:SetTexCoord(0, 0, 0, 0) end @@ -1118,11 +1217,7 @@ function Update(self) self.cooldown:Hide() self.rangeTimer = nil self:SetNormalTexture("Interface\\Buttons\\UI-Quickslot") - if self.HotKey:GetText() == RANGE_INDICATOR then - self.HotKey:Hide() - else - self.HotKey:SetVertexColor(0.75, 0.75, 0.75) - end + if not self.LBFSkinned and not self.MasqueSkinned then self.NormalTexture:SetTexCoord(-0.15, 1.15, -0.15, 1.17) end @@ -1130,6 +1225,8 @@ function Update(self) self:UpdateLocal() + UpdateRange(self, fromUpdateConfig) -- Sezz: update range check on state change + UpdateCount(self) UpdateFlyout(self) @@ -1138,6 +1235,8 @@ function Update(self) UpdateNewAction(self) + UpdateButtonState(self) + if GameTooltip_GetOwnerForbidden() == self then UpdateTooltip(self) end @@ -1170,22 +1269,24 @@ function UpdateButtonState(self) end function UpdateUsable(self) - -- TODO: make the colors configurable - -- TODO: allow disabling of the whole recoloring - if self.config.outOfRangeColoring == "button" and self.outOfRange then - self.icon:SetVertexColor(unpack(self.config.colors.range)) - else - local isUsable, notEnoughMana = self:IsUsable() - if isUsable then - self.icon:SetVertexColor(1.0, 1.0, 1.0) - --self.NormalTexture:SetVertexColor(1.0, 1.0, 1.0) - elseif notEnoughMana then - self.icon:SetVertexColor(unpack(self.config.colors.mana)) - --self.NormalTexture:SetVertexColor(0.5, 0.5, 1.0) + if self.config.useColoring then + if self.config.outOfRangeColoring == "button" and self.outOfRange then + self.icon:SetVertexColor(unpack(self.config.colors.range)) else - self.icon:SetVertexColor(0.4, 0.4, 0.4) - --self.NormalTexture:SetVertexColor(1.0, 1.0, 1.0) + local isUsable, notEnoughMana = self:IsUsable() + if isUsable then + self.icon:SetVertexColor(unpack(self.config.colors.usable)) + --self.NormalTexture:SetVertexColor(1.0, 1.0, 1.0) + elseif notEnoughMana then + self.icon:SetVertexColor(unpack(self.config.colors.mana)) + --self.NormalTexture:SetVertexColor(0.5, 0.5, 1.0) + else + self.icon:SetVertexColor(unpack(self.config.colors.notUsable)) + --self.NormalTexture:SetVertexColor(1.0, 1.0, 1.0) + end end + else + self.icon:SetVertexColor(unpack(self.config.colors.usable)) end lib.callbacks:Fire("OnButtonUsable", self) end @@ -1234,7 +1335,8 @@ local function StartChargeCooldown(parent, chargeStart, chargeDuration, chargeMo cooldown = CreateFrame("Cooldown", "LAB10ChargeCooldown"..lib.NumChargeCooldowns, parent, "CooldownFrameTemplate"); cooldown:SetScript("OnCooldownDone", EndChargeCooldown) cooldown:SetHideCountdownNumbers(true) - cooldown:SetDrawSwipe(false) + cooldown:SetDrawBling(false) + lib.callbacks:Fire("OnChargeCreated", parent, cooldown) end cooldown:SetParent(parent) cooldown:SetAllPoints(parent) @@ -1244,7 +1346,7 @@ local function StartChargeCooldown(parent, chargeStart, chargeDuration, chargeMo cooldown.parent = parent end -- set cooldown - parent.chargeCooldown:SetDrawBling(parent.chargeCooldown:GetEffectiveAlpha() > 0.5) +-- parent.chargeCooldown:SetDrawBling(parent.chargeCooldown:GetEffectiveAlpha() > 0.5) CooldownFrame_Set(parent.chargeCooldown, chargeStart, chargeDuration, true, true, chargeModRate) -- update charge cooldown skin when masque is used @@ -1258,8 +1360,15 @@ local function StartChargeCooldown(parent, chargeStart, chargeDuration, chargeMo end local function OnCooldownDone(self) - self:SetScript("OnCooldownDone", nil) - UpdateCooldown(self:GetParent()) + --self:SetScript("OnCooldownDone", nil) + local button = self:GetParent() + if (self.currentCooldownType == COOLDOWN_TYPE_NORMAL) and button.locStart and (button.locStart > 0) then + UpdateCooldown(button) + elseif button.chargeCooldown then + button.chargeCooldown:SetDrawSwipe(button.config.useDrawSwipeOnCharges) + end + + lib.callbacks:Fire("OnCooldownDone", button, self) end function UpdateCooldown(self) @@ -1267,8 +1376,10 @@ function UpdateCooldown(self) local start, duration, enable, modRate = self:GetCooldown() local charges, maxCharges, chargeStart, chargeDuration, chargeModRate = self:GetCharges() - self.cooldown:SetDrawBling(self.cooldown:GetEffectiveAlpha() > 0.5) - + self.cooldown:SetDrawBling(self.config.useDrawBling and (self.cooldown:GetEffectiveAlpha() > 0.5)) + self.cooldown:SetScript("OnCooldownDone", OnCooldownDone) + self.cooldown.locStart = locStart + self.cooldown.locDuration = locDuration if (locStart + locDuration) > (start + duration) then if self.cooldown.currentCooldownType ~= COOLDOWN_TYPE_LOSS_OF_CONTROL then self.cooldown:SetEdgeTexture("Interface\\Cooldown\\edge-LoC") @@ -1281,22 +1392,25 @@ function UpdateCooldown(self) if self.cooldown.currentCooldownType ~= COOLDOWN_TYPE_NORMAL then self.cooldown:SetEdgeTexture("Interface\\Cooldown\\edge") self.cooldown:SetSwipeColor(0, 0, 0) - self.cooldown:SetHideCountdownNumbers(false) + self.cooldown:SetHideCountdownNumbers(self.config.disableCountDownNumbers) self.cooldown.currentCooldownType = COOLDOWN_TYPE_NORMAL end + --[[ if locStart > 0 then self.cooldown:SetScript("OnCooldownDone", OnCooldownDone) end - + ]] if charges and maxCharges and charges > 0 and charges < maxCharges then StartChargeCooldown(self, chargeStart, chargeDuration, chargeModRate) + self.chargeCooldown:SetDrawSwipe(duration <= 0 and self.config.useDrawSwipeOnCharges) elseif self.chargeCooldown then EndChargeCooldown(self.chargeCooldown) end CooldownFrame_Set(self.cooldown, start, duration, enable, false, modRate) end -end - + lib.callbacks:Fire("OnCooldownUpdate", self, start, duration, enable, modRate) +end + function StartFlash(self) self.flashing = 1 flashTime = 0 @@ -1344,6 +1458,10 @@ function UpdateHotkeys(self) self.HotKey:SetPoint("TOPLEFT", self, "TOPLEFT", - 2, - 2) self.HotKey:Show() end + + if self.postKeybind then + self.postKeybind(nil, self) + end end function ShowOverlayGlow(self) @@ -1457,6 +1575,9 @@ function UpdateFlyout(self) SetClampedTextureRotation(self.FlyoutArrow, 0) end + if self.FlyoutUpdateFunc then + self.FlyoutUpdateFunc(nil, self) + end -- return here, otherwise flyout is hidden return end @@ -1519,7 +1640,7 @@ Action.GetSpellId = function(self) if actionType == "spell" then return id elseif actionType == "macro" then - return (GetMacroSpell(id)) + return (GetMacroSpell(id)) --[[ local _, _, spellId = GetMacroSpell(id) return spellId @@ -1571,7 +1692,7 @@ Item.IsUsable = function(self) return IsUsableItem(self._state_ac --Item.IsConsumableOrStackable = function(self) return IsConsumableItem(self._state_action) end Item.IsConsumableOrStackable = function(self) return true end Item.IsUnitInRange = function(self, unit) return IsItemInRange(self._state_action, unit) end -Item.SetTooltip = function(self) return GameTooltip:SetHyperlink(self._state_action) end +Item.SetTooltip = function(self) return GameTooltip:SetHyperlink(self._state_action) end Item.GetSpellId = function(self) return nil end ----------------------------------------------------------- @@ -1594,6 +1715,22 @@ Macro.SetTooltip = function(self) return nil end Macro.GetSpellId = function(self) return nil end ----------------------------------------------------------- +--- Toy Button +Toy.HasAction = function(self) return true end +Toy.GetActionText = function(self) return "" end +Toy.GetTexture = function(self) return select(3, C_ToyBox.GetToyInfo(self._state_action)) end +Toy.GetCharges = function(self) return nil end +Toy.GetCount = function(self) return 0 end +Toy.GetCooldown = function(self) return GetItemCooldown(self._state_action) end +Toy.IsAttack = function(self) return nil end +Toy.IsEquipped = function(self) return nil end +Toy.IsCurrentlyActive = function(self) return nil end +Toy.IsAutoRepeat = function(self) return nil end +Toy.IsUsable = function(self) return nil end +Toy.IsConsumableOrStackable = function(self) return nil end +Toy.IsUnitInRange = function(self, unit) return nil end +Toy.SetTooltip = function(self) return GameTooltip:SetToyByItemID(self._state_action) end +Toy.GetSpellId = function(self) return nil end --- Custom Button Custom.HasAction = function(self) return true end Custom.GetActionText = function(self) return "" end @@ -1632,4 +1769,4 @@ if oldversion and next(lib.buttonRegistry) then end end end -end +end diff --git a/Libs/LibBagUtils-1.0/LibBagUtils-1.0.xml b/Libs/LibBagUtils-1.0/LibBagUtils-1.0.xml index 493de1c..67b3140 100644 --- a/Libs/LibBagUtils-1.0/LibBagUtils-1.0.xml +++ b/Libs/LibBagUtils-1.0/LibBagUtils-1.0.xml @@ -1,4 +1,4 @@ <Ui xmlns="http://www.blizzard.com/wow/ui/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.blizzard.com/wow/ui/ ..\FrameXML\UI.xsd"> <Script file="LibBagUtils-1.0.lua"/> -</Ui> \ No newline at end of file +</Ui> diff --git a/Libs/LibButtonGlow-1.0/LibButtonGlow-1.0.toc b/Libs/LibButtonGlow-1.0/LibButtonGlow-1.0.toc index 9a80be3..4e6913f 100644 --- a/Libs/LibButtonGlow-1.0/LibButtonGlow-1.0.toc +++ b/Libs/LibButtonGlow-1.0/LibButtonGlow-1.0.toc @@ -6,7 +6,7 @@ ## X-Category: Library ## X-License: BSD ## X-Website: http://www.wowace.com/addons/libbuttonglow-1-0/ -## Version: @project-version@ +## Version: v8.3.0-Release-v2.5(0143) ## OptionalDeps: Masque LibStub\LibStub.lua diff --git a/Libs/LibDeformat-3.0/LibDeformat-3.0.lua b/Libs/LibDeformat-3.0/LibDeformat-3.0.lua index 6580517..29f28e2 100644 --- a/Libs/LibDeformat-3.0/LibDeformat-3.0.lua +++ b/Libs/LibDeformat-3.0/LibDeformat-3.0.lua @@ -269,4 +269,4 @@ function LibDeformat.Test() end --@end-debug@]===] -setmetatable(LibDeformat, { __call = function(self, ...) return self.Deformat(...) end }) \ No newline at end of file +setmetatable(LibDeformat, { __call = function(self, ...) return self.Deformat(...) end }) diff --git a/Libs/LibDeformat-3.0/lib.xml b/Libs/LibDeformat-3.0/lib.xml index cf6abae..0f66a4d 100644 --- a/Libs/LibDeformat-3.0/lib.xml +++ b/Libs/LibDeformat-3.0/lib.xml @@ -1,4 +1,4 @@ <Ui xmlns="http://www.blizzard.com/wow/ui/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.blizzard.com/wow/ui/ ..\FrameXML\UI.xsd"> <Script file="LibDeformat-3.0.lua" /> -</Ui> \ No newline at end of file +</Ui> diff --git a/Libs/UTF8/UTF8.toc b/Libs/UTF8/UTF8.toc index e971b12..86efe27 100644 --- a/Libs/UTF8/UTF8.toc +++ b/Libs/UTF8/UTF8.toc @@ -12,4 +12,4 @@ ## X-Website: http://www.wowace.com/addons/utf8/ utf8data.lua -utf8.lua \ No newline at end of file +utf8.lua diff --git a/Libs/UTF8/utf8.lua b/Libs/UTF8/utf8.lua index 485582c..159f7ae 100644 --- a/Libs/UTF8/utf8.lua +++ b/Libs/UTF8/utf8.lua @@ -314,4 +314,4 @@ end -- install in the string library if not string.utf8reverse then string.utf8reverse = utf8reverse -end \ No newline at end of file +end diff --git a/Libs/UTF8/utf8data.lua b/Libs/UTF8/utf8data.lua index 655f719..8bcc38f 100644 --- a/Libs/UTF8/utf8data.lua +++ b/Libs/UTF8/utf8data.lua @@ -1,4 +1,4 @@ -utf8_lc_uc = { +utf8_lc_uc = { ["a"] = "A", ["b"] = "B", ["c"] = "C", diff --git a/Libs/changelog-ACE3-r1237.txt b/Libs/changelog-ACE3-r1237.txt new file mode 100644 index 0000000..3325a5d --- /dev/null +++ b/Libs/changelog-ACE3-r1237.txt @@ -0,0 +1,427 @@ +Ace3 Release - Revision r1227 (August 12th, 2019) +------------------------------------------------- +- AceConfigDialog-3.0: Fixed an issue with a missing template on WoW Classic (Ticket #517) + +Ace3 Release - Revision r1224 (August 1st, 2019) +------------------------------------------------ +- AceConfigDialog-3.0: Replace use of StaticPopup with a custom frame to minimize taint +- AceGUI-3.0: Ensure the OnLeave callback on various widgets still fires when its being released while visible (Ticket #505) +- AceGUI-3.0: Various fixes for anchoring problems in WoW 8.2 (Ticket #512, and other reports) + +Ace3 Release - Revision r1214 (June 26th, 2019) +----------------------------------------------- +- AceConfigDialog-3.0: Exposed "select" type sorting control through a new "sorting" config table member +- AceConfigDialog-3.0: Clear existing anchors on the GameTooltip before re-anchoring it for 8.2 compatibility +- AceConfigDialog-3.0: Improved options table sorting algorithm to produce a stable result in certain edge cases (Ticket #501) +- AceConfigRegistry-3.0: Added missing custom controls entries for all types added in the last release (Ticket #494) +- AceGUI-3.0: ColorPicker: Removed usage of Show/HideUIPanel for WoW 8.2 compatibiliy +- AceGUI-3.0: DropDown: Improved dropdown sorting algorithm to support tables with mixed string and numeric keys + +Ace3 Release - Revision r1200 (January 24th, 2019) +-------------------------------------------------- +- Cleanup for WoW 8.0 improvements +- AceGUI-3.0: Worked around various quirks in the WoW 8.0/8.1 API +- AceGUI-3.0: ColorPicker: Store references to the background/checkers textures (Ticket #473) +- AceConfigDialog-3.0: Allow custom controls for almost all option types (Ticket #475) + +Ace3 Release - Revision r1182 (July 17th, 2018) +----------------------------------------------- +- AceComm-3.0: Support numeric targets for custom channels (Ticket #419) +- AceComm-3.0/ChatThrottleLib: Updated for WoW 8.0 API changes +- AceConfig-3.0: Allow number values for the "width" parameter, which acts as a multiplier of the default width +- AceConfigDialog-3.0: Enable iconCoords for the main level of a tree group (Ticket #417) +- AceGUI-3.0: Implement a Table Layout (#442) +- AceGUI-3.0: EditBox: Only try to handle dragging if a valid object is being dragged into the text box +- AceGUI-3.0: Various fixes and work-arounds for WoW 8.0 changes + +Ace3 Release - Revision r1166 (August 29th, 2017) +------------------------------------------------- +- Updated any use of PlaySound to the new numeric constants (Fix for WoW 7.3) +- AceConfigDialog-3.0: implement fallback validation feedback in a StaticPopup (Ticket #2) + +Ace3 Release - Revision r1158 (March 28th, 2017) +------------------------------------------------ +- AceGUI-3.0: Fire OnShow events from Frame and Windows containers (Ticket #396) +- AceGUI-3.0: Add SetJustifyV/H API to the Label/InteractiveLabel widgets (Ticket #397) + +Ace3 Release - Revision r1151 (July 18th, 2016) +----------------------------------------------- +- AceConfig-3.0: Allow specifying images using the numeric fileID (Ticket #389) +- AceGUI-3.0: Use SetColorTexture in WoW 7.0 +- AceGUI-3.0: Expose the HighlightText API for EditBox and MultiLineEditBox Widgets (Ticket #378) +- AceGUI-3.0: Keybinding: Support MouseWheel Up/Down bindings (Ticket #372) +- AceGUI-3.0: TreeGroup: Refresh the tree in an OnUpdate once after Acquire, not only after creation (Fixes missing tree in WoW 7.0) +- AceSerializer-3.0: Create consistent tokens for infinity, independent of the clients platform + +Ace3 Release - Revision r1134 (June 23rd, 2015) +----------------------------------------------- +- AceGUI-3.0: TreeGroup: Prevent Word Wrap in tree elements + +Ace3 Release - Revision r1128 (February 24th, 2015) +--------------------------------------------------- +- AceGUI-3.0: Fixed an error in GameTooltip handling causing wrong formatting in some cases + +Ace3 Release - Revision r1122 (October 14th, 2014) +-------------------------------------------------- +- AceDB-3.0: Now using the GetCurrentRegion() API to determine region-based profile keys (fix for WoW 6.0) +- AceComm-3.0: Update ChatThrottleLib to v23 +- AceConfigDialog-3.0: Show a more meaningful title on Blizzard Options Groups (Ticket #353) +- AceGUI-3.0: ColorPicker: Frame Level is automatically increased to ensure the color picker frame is above the option panel +- AceGUI-3.0: DropDown: Properly disable all clickable areas when the dropdown is disabled (Ticket #360) +- AceHook-3.0: Always use HookScript when hooking scripts in a secure fashion (Ticket #338) +- AceTimer-3.0: New timer implementation based on C_Timer.After + +Ace3 Release - Revision r1109 (February 19th, 2014) +--------------------------------------------------- +- AceComm-3.0: Ambiguate addon comm messages to restore behavior to be identical to pre-5.4.7 +- AceConfigRegistry-3.0: Added an option to skip options table validation on registering + +Ace3 Release - Revision r1104 (October 31st, 2013) +-------------------------------------------------- +- AceGUI-3.0: Flow Layout: Added a safeguard to prevent an infinite loop in the layout engine +- AceGUI-3.0: DropDown: Adjust its style slightly to closer resemble the Blizzard DropDown Widget +- AceGUI-3.0: DropDown: API enhancements to specify the width of the pullout and be notified when its opened + +Ace3 Release - Revision r1098 (September 13th, 2013) +---------------------------------------------------- +- AceDB-3.0: Switch characters to the default profile if their active profile is deleted (Ticket #324) +- AceConfigDialog-3.0: Try to prevent static popup taint (Ticket #322) +- AceGUI-3.0: Button: Add a new "Auto Width" option (Ticket #310) +- AceGUI-3.0: DropDown: Make the entire DropDown widget clickable (Ticket #339) +- AceGUI-3.0: EditBox: Allow dragging macros to the editbox (which will then contain the macros name) (Ticket #337) +- AceGUI-3.0: Slider: Add a workaround for the broken slider steps in WoW 5.4 (Ticket #346) +- AceGUI-3.0: TreeGroup: Fix an issue introduced by 5.4 broken scrollbars (Ticket #345) +- AceHook-3.0: Allow hooking of AnimationGroup scripts (Ticket #314) + +Ace3 Release - Revision r1086 (May 21st, 2013) +---------------------------------------------- +- AceAddon-3.0: Improved behavior when loading modules during game startup, ensures proper loading order + +Ace3 Release - Revision r1083 (March 4th, 2013) +----------------------------------------------- +- AceTimer-3.0: Fixed an issue that caused the parameter list passed to the callback to be cut off at nil values +- AceGUI-3.0: InlineGroup: The title attribute is properly reset for recycled objects + +Ace3 Release - Revision r1078 (February 10th, 2013) +--------------------------------------------------- +- AceTimer-3.0: Re-write based on AnimationTimers +- AceHook-3.0: Improved checks/error messages when trying to hook a script on a "nil" frame +- AceDBOptions-3.0: Added Italian locale +- AceGUI-3.0: BlizOptionsGroup: Fixed the "default" button callback +- AceGUI-3.0: Colorpicker: The colorpicker is now clamped to the screen + +Ace3 Release - Revision r1061 (August 27th, 2012) +------------------------------------------------- +- AceConfigDialog-3.0: Try to avoid potential taints in static popup dialogs +- AceConfigDialog-3.0: Sort multiselects with "radio" style +- AceGUI-3.0: Support for WoW 5.0 +- AceGUI-3.0: MultiLineEditBox: Support shift-click'ing items/spells/etc. into the editbox +- AceGUI-3.0: Label: Fix text alignment (Ticket #301) +- AceGUI-3.0: Checkbox: Description text on a disable checkbox should look disabled (Ticket #304) +- AceGUI-3.0: Keybinding: Ensure the Keybinding popup is on the top level (Ticket #305) + +Ace3 Release - Revision r1041 (November 29th, 2011) +--------------------------------------------------- +- AceDB-3.0: Added locale and factionrealmregion profile keys +- AceSerializer-3.0: Removed support for NaN, as WoW 4.3 does no longer allow it. +- AceGUI-3.0: Frame: Add :EnableResize (Ticket #214) + +Ace3 Release - Revision r1032 (June 29th, 2011) +----------------------------------------------- +- AceTab-3.0: Improvements to Match handling (Ticket #255 and #256) +- AceGUI-3.0: DropDown layout fix with hidden labels (Ticket #234) + +Ace3 Release - Revision r1025 (April 27th, 2011) +------------------------------------------------ +- AceComm-3.0: Updated for 4.1 changes - now handles RegisterAddonMessagePrefix internally for you. +- AceGUI-3.0: TabGroup: Fixed width of tabs in 4.1(Ticket #243) + +Ace3 Release - Revision r1009 (February 9th, 2011) +-------------------------------------------------- +- AceLocale-3.0: Fix erronous assumption that the default locale is always the first to be registered for the :NewLocale() "silent" flag. The flag must now be set on the FIRST locale to be registered. +- AceLocale-3.0: The :NewLocale() "silent" flag may now be set to the string "raw", meaning nils are returned for unknown translations. +- AceGUI-3.0: Fix the disabled state of Icon widgets +- AceGUI-3.0: The header of the Frame widget now dynamically changes size to fit the text (Ticket #171) +- AceGUI-3.0: Its now possible to define a custom order the elements in a dropdown widget +- AceGUI-3.0: Improved widget focus behaviour across the board (Ticket #192, #193) +- AceGUI-3.0: Fixed a bug that made it impossible to block the tree widget from being user resizable (Ticket #163) +- AceGUI-3.0: Fixed a bug that caused TreeGroups to become unresponsive under certain conditions (Ticket #189, #202) +- AceGUI-3.0: Enhanced the DropDown widget to allow it to be reused more easily. +- AceConfigDialog-3.0: Select Groups now have the proper order in the dropdown (Ticket #184) +- AceConfigDialog-3.0: Implemented "radio" style select boxes (Ticket #149) + +Ace3 Release - Revision r981 (October 27th, 2010) +------------------------------------------------- +- AceAddon-3.0: Fixed a library upgrading issue +- AceAddon-3.0: Modules are now enabled in loading order +- AceGUI-3.0: Keybinding: The widget will no longer steal keybindings even when inactive (Ticket #169) +- AceGUI-3.0: EditBox: Fixed spell drag'n'drop + + +Ace3 Release - Revision r971 (October 12th, 2010) +------------------------------------------------- +- Small fixes and adjustments for the 4.0 Content Patch. +- AceGUI-3.0: ScrollFrame: Allow for a small margin of error when determining if the scroll bar should be shown. +- AceGUI-3.0: Added new widget APIs: GetText for EditBox and DisableButton for MultiLineEditBox + +Ace3 Release - Revision r960 (July 20th, 2010) +---------------------------------------------- +- AceGUI-3.0: Label: Reset Image Size and TexCoords on Acquire (Ticket #110) +- AceGUI-3.0: CheckBox: Re-apply the disabled state after setting a value, so the visuals are correct in either case. (Ticket #107) +- AceGUI-3.0: Icon: Fix the vertical size. It'll now properly scale with the image size, and not be fixed to about 110px. (Ticket #104) +- AceGUI-3.0: External Containers (Frame, Window) should always start in a visible state. (Ticket #121) +- AceGUI-3.0: Added Blizzard sounds to widgets (Ticket #120) +- AceGUI-3.0: CheckBox: check for self.desc:GetText() being nil as well as "" to prevent setting the wrong height on the checkbox causing bouncing checkboxes. +- AceGUI-3.0: Rewrite of the MultiLineEditBox (Ticket #68) +- AceGUI-3.0: CheckBox: Fix alignment of the text in OnMouseDown when an image is set. (Ticket #142) +- AceGUI-3.0: Add SetMaxLetters APIs to EB and MLEB (Ticket #135) +- AceGUI-3.0: Frame: Add events for OnEnter/OnLeave of the statusbar (Ticket #139) +- AceGUI-3.0: Major cleanups and refactoring in nearly all widgets and containers. +- AceConfigDialog-3.0: Always obey the min/max values on range-type widgets (Ticket #114) +- AceConfigDialog-3.0: Pass iconCoords set on groups in the options table to the tree widget (Ticket #111) +- AceConfigDialog-3.0: Implement "softMin" and "softMax", allowing for a UI-specific minimum/maximum for range controls, while allowing manual input of values in the old min/max range. (Ticket #123) +- AceConfigDialog-3.0: Don't close frames in CloseAll that are being opened after the CloseAll event was dispatched. (Ticket #132). +- AceSerializer-3.0: Fix encoding & decoding of \030. (Ticket #115) +- AceDB-3.0: Remove empty sections on logout, keeping the SV clean of more useless informations. +- AceDBOptions-3.0.lua: Fix a string typo (Ticket #141) + +Ace3 Release - Revision r907 (December 16th, 2009) +--------------------------------------------------- +- AceGUI-3.0: Frame: Properly save the width in the status table. +- AceConfigCmd-3.0: Properly handle help output of inline groups with a different handler. (Ticket #101) +- AceConfigDialog-3.0: Don't bail out and error when a dialogControl was invalid, instead show the error and fallback to the default control for that type. +- AceConfigDialog-3.0: Fix a hickup with the OnUpdate script not getting upgraded properly in some situations. + +Ace3 Release - Revision r900 (December 8th, 2009) +-------------------------------------------------- +- AceGUI-3.0: Alot of visual fixes regarding margins and general widget styles. +- AceGUI-3.0: Ability to accept links for EditBox Widget (Ticket #21) +- AceGUI-3.0: ScrollFrame: Hide the scrollbar when there is no overflowing content, and allow the Layout functions to use that space for widgets. +- AceGUI-3.0: DropDown: Added a GetValue() API to the Widget (Ticket #69) +- AceGUI-3.0: Button: Pass the arguments of the OnClick handler to the OnClick callback (Ticket #57) +- AceGUI-3.0: add a Window container, basically a plain window with close button +- AceGUI-3.0: Add support for inline descriptions to the checkbox widget. +- AceGUI-3.0: Added an API to the Window container to disable the user-resizing of the same. (Ticket #80) +- AceGUI-3.0: TreeGroup: Allow iconCoords to be passed for the tree elements. (Ticket #59) +- AceGUI-3.0: Slider: Add a more visible backdrop/border around the manual input area (Ticket #98, #46) +- AceGUI-3.0: Allow displaying a image in front of the checkbox label. (Ticket #82) +- AceConfig-3.0: Added an experimental "descStyle" member to all option table nodes that allows you to control the way the description is presented. + Supported values are "tooltip" for the old behaviour, and "inline" for a inline display of the description, pending support in AceGUI-3.0 widgets. +- AceConfigCmd-3.0: Properly parse functions and methods supplied for the "hidden" option table member. (Ticket #96) +- AceConfigDialog-3.0: Fix the unpacking of the basepath arguments when internally calling :Open (Ticket #90) +- AceConfigDialog-3.0: Properly refresh BlizOptions Windows which are registered with a path on NotifyChange. (Ticket #93) +- AceConfigDialog-3.0: Allow image/imageCoords on toogle elements (Note that the width/height of the image on the toggle cannot be changed) (Ticket #82) +- AceConfigDialog-3.0: Pass the groups "name" tag to DropDownGroups as the title. (Ticket #79) +- AceDB-3.0: Remove the metatable from the DB before removing defaults, so we don't accidentally invoke it in the process. (Ticket #66) +- AceDB-3.0: Don't save the profileKeys for namespaces, since we use the profile of the parent DB anyway. This will cut down on SV complexity when using alot of namespaces. +- AceDB-3.0: Don't fire the OnProfileReset callback when copying a profile. +- AceDBOptions-3.0: Show the current profile on the dialog. (Ticket #56) +- AceComm-3.0: Add callbacks for message chunks going out the wire (via CTL). Useful for displaying progress for very large messages. +- AceConsole-3.0: Add :Printf() so you don't have to do Print(format()) + +Ace3 Beta - Revision 820 (August 7th, 2009) +-------------------------------------------- +- AceComm-3.0: Updated ChatThrottleLib to v21 +- AceGUI-3.0: Fixed a glitch in the TabGroup code that caused tabs to be unresponsive under rare conditions. (Ticket #38) +- AceGUI-3.0: Consistent "disabled" behaviour of all widgets. (Ticket #47) +- AceGUI-3.0: Changed the way widgets are handled on release to avoid a crash in the game client. (Ticket #49) +- AceGUI-3.0: Fixed a glitch in the button graphics. (Ticket #58) +- AceGUI-3.0: Localized the "Close" Text on the Frame widget. + +Ace3 Beta - Revision 803 (April 14th, 2009) +-------------------------------------------- +- AceConfig-3.0: Allow spaces in the keys of config tables. Spaces will be changed on the fly to underscores in AceConfigCmd-3.0 - there is no collision check in place, yet. +- AceConfig-3.0: Support a "fontSize" attribute to the description type. Possible values are "small" (default), "medium" and "large". +- AceConfigDialog-3.0: Fixed an error that would occur when calling InterfaceOptionsFrame_OpenToCategory from within an event handler in a Blizzard Options integrated frame. (Ticket #33) +- AceConfigDialog-3.0: The "execute" type does now recognize the "image" attributes, and will display a clickable icon instead of the button when an image is supplied. (Ticket #35) +- AceConfigDialog-3.0: Pass icons defined in the option table to the TreeGroup widget (Ticket #20) +- AceConfigDialog-3.0: Fixed a bug that caused an empty group widget to be drawn if all groups were hidden. +- AceConfigCmd-3.0: Improved the behaviour of select and multiselect elements. (Ticket #26) +- AceDB-3.0: Add a GetNamespace function to the DB Objects which returns an existing namespace from the DB object. +- AceGUI-3.0 Slider Widget: Properly show percentage values as min/max if isPercent is true. (Ticket #32) +- AceGUI-3.0: Fixed an error in the TreeGroup Widget that caused execution to stop if no name was provided. +- AceGUI-3.0: Fixed the behaviour of the MultiLineEditbox Widget (Accept button not clickable). (Ticket #28) +- AceGUI-3.0: TabGroup: Set a maximum width for tabs based on the size of the widget. (Ticket #34) +- AceGUI-3.0: Added a new InteractiveLabel with OnEnter/OnLeave/OnClick callbacks and a highlight texture +- AceGUI-3.0: Add SetFont and SetFontObject functions to the Label widget (and the new InteractiveLabel) +- AceGUI-3.0: Support icons in the TreeGroup display. (Ticket #20) +- AceGUI-3.0: Added a new :SetRelativeWidth Widget-API that allows you to set the width of widgets relative to their container. +- AceGUI-3.0: Alot of fixes, tweaks and consistency changes. + +Ace3 Beta - Revision 741 (Feb 15th, 2009) +-------------------------------------------- +- AceDBOptions-3.0: Disable the "Copy From" and "Delete" dropdowns if there are no profiles to choose from. (Ticket #19) +- AceGUI-3.0: Improve TabGroup visual style - only stretch them to the full width if they would use more then 75% of the exisiting space. +- AceGUI-3.0: Added a third optional argument to <container>:AddChild() to specify the position for the new widget. (Ticket #22) +- AceConfigCmd-3.0: Improve help output when viewing groups. +- AceConfigDialog-3.0: Refresh the Options Panel after a confirmation is canceled to reset the value to its previous value. (Ticket #23) +- AceDB-3.0: Fix a data inconsistency when using false as a table key. (Ticket #25) + +Ace3 Beta - Revision 722 (Jan 4th, 2009) +-------------------------------------------- +- AceHook-3.0: Fix :SecureHookScript to not fail on previously empty scripts since frame:HookScript does nothing at all in that case. (Ticket #16) +- AceLocale-3.0: Implement 'silent' option for :NewLocale to disable the warnings on unknown entrys (Ticket #18) +- AceTimer-3.0: Implement :TimeLeft(handle) function (Ticket #10) +- AceGUI-3.0: Fix TabGroup tab resizing to be consistent +- AceGUI-3.0: Fixed EditBox alignment when the label is disabled (Ticket #13) +- AceDB-3.0: Implement OnProfileShutdown callback (Ticket #7) +- AceDBOptions-3.0: Updated esES and ruRU locale + +Ace3 Beta - Revision 706 (Oct 18th, 2008) +-------------------------------------------- +- First Beta release after WoWAce move +- Removed WoW 2.4.x compat layer +- AceGUI-3.0: Fix disabling of the Multiline Editbox +- AceGUI-3.0: Improvements to the Keybinding Widget + +Ace3 Beta - Revision 81437 (Sept 6th, 2008) +-------------------------------------------- +- AceConfigDialog-3.0: the confirm callback will now receive the new value that is being set (same signature as the validate callback) +- AceConfigDialog-3.0: :Close and :CloseAll are now safe to call from within callbacks. +- AceGUI-3.0: Added new methods to the widget base table, see ACE-205 for full reference +- AceGUI-3.0: Various fixes to Widgets and recycling process +- Now compatible with WoW 3.0 (compat layer is to be removed upon 3.0 release) + + +Ace3 Beta - Revision 76325 (June 9th, 2008) +-------------------------------------------- +- AceGUI-3.0: Finish Multiselect support for the Dropdown widget (nargiddley) +- AceGUI-3.0: Re-write TabGroup layouting (nargiddley) +- AceGUI-3.0: TreeGroup: Add :EnableButtonTooltips(enable) to make the default tooltips on the tree optional, enabled by default. (nargiddley) +- AceGUI-3.0: TabGroup: Add OnTabEnter and OnTabLeave Callbacks (nargiddley) +- AceConfigDialog-3.0: Add :SelectGroup(appName, ...) - Selects the group given by the path specified then refreshes open windows. (nargiddley) +- AceConfigDialog-3.0: :Open now accepts an optional path, when given will open the window with only the given group and its children visible (nargiddley) +- AceConfigDialog-3.0: :AddToBlizOptions now accepts an optional path, this will add the config page to display the specified group and its children only. (nargiddley) +- AceConfigDialog-3.0: ACE-189: allow multiselect to be shown as a dropdown by setting dialogControl = "Dropdown" (nargiddley) +- AceConfigDialog-3.0: Add Custom tooltips to the TreeGroup and TabGroup, shows both name and desc for the group. (nargiddley) +- AceConfigCmd-3.0: ACE-195: Remove unneeded references to .confirm, will no longer error when .confirm is a boolean (nargiddley) +- AceAddon-3.0: Allow for an optional first argument to NewAddon to be a table to be used as the base for the addon. (ammo) + +Ace3 Beta - Revision 74633 (May 19th, 2008) +-------------------------------------------- +- AceTimer-3.0: ACE-173: don't error on nil handle for CancelTimer(), just bail out early. (ammo) +- AceGUI-3.0: ACE-161, ACE-180, ACE-181: New and improved DropDown widget (originally coded by Borlox) (nargiddley,nevcairiel) +- AceGUI-3.0: AceGUI will call OnWidthSet and OnHeightSet as frames resize (nargiddley) +- AceGUI-3.0: TabGroup: Use OptionsFrameTabButtonTemplate for tabs (nargiddley) +- AceGUI-3.0: TabGroup: Tabs now span multiple lines when there are too many to fit in the width of the frame (nargiddley) +- AceGUI-3.0: TreeGroup: Tree is now sizable by dragging, orig patch by yssaril (nargiddley) +- AceGUI-3.0: Flow layout will now reduce widgets width to fit rather than leaving them sticking out the side of container widgets (nargiddley) +- AceGUI-3.0: Dropdowns will no longer be left open in the background when the frame is clicked or other widgets are activated (nargiddley) +- AceGUI-3.0: ACE-159: Rename Release to OnRelease and Acquire to OnAcquire for widgets. (nargiddley) +- AceGUI-3.0: ACE-171: add IsVisible and IsShown methods to the widget metatable (nargiddley) +- AceGUI-3.0: ACE-164: add tooltips to tree to show full text of childs that got clipped (ammo) +- AceGUI-3.0: ACE-174: make buttons in AceGUI-3.0 locale independant (ammo) +- AceGUI-3.0: ACE-166: fix treegroup visual bug (ammo) +- AceGUI-3.0: ACE-184: make numeric entry for slider more intuitive (ammo) +- AceConfigCmd-3.0: ACE-172 - ignore description in cmd (ammo) +- AceConsole-3.0: nolonger check for existance of slashcommands, overwrite where needed. Last one wins, this enables AddonLoader to X-LoadOn-Slash and override the slashcommand from AddonLoader slashcommand with an Ace3 one. (Ammo) + +Ace3 Beta - Revision 69509 (April 13th, 2008) +--------------------------------------------- +- AceComm-3.0: turn off error messages when receiving invalid multi-part messages (its happening on login etc) (nevcairiel) +- AceDBOptions-3.0: shorten info text at top to prevent scrollbars. (nevcairiel) +- AceHook-3.0: ACE-162: fix unhooking of objects that were not actually hooked (nevcairiel) +- AceDB-3.0: fire the DB callbacks after the namespaces changed their profile as well (nevcairiel) +- AceDB-3.0: namespaces can now be individually reset using :ResetProfile() on the namespace directly (nevcairiel) +- AceDB-3.0: added a optional argument to :ResetProfile to not populate the reset to all namespaces (so the main profile can reset individually without reseting all namespaces too) (nevcairiel) + +Ace3 Beta - Revision 66329 (March 27th, 2008) +--------------------------------------------- +- Overall 2.4 clean ups - removing 2.4 checks and work arounds (nevcairiel) +- AceBucket-3.0: clear the timer reference when unregistering a bucket to prevent a error when unregistering a bucket that was never fired (nevcairiel) +- AceAddon-3.0: Bugfix when enabling/disabling modules from the parents OnEnable after disabling / enabling the parent addon. (ammo) +- AceGUI-3.0: Don't parent the BlizOptionsGroup widget to UIParent and Hide it by default. Fixes stray controls on the screen. (nargiddley) +- AceConfigDialog-3.0: Config windows without a default size won't incorrectly get a default size from a previously open window. (nargiddley) +- AceDBOptions-3.0: added zhCN and zhTW locale (nevcairiel) + +Ace3 Beta - Revision 65665 (March 25th, 2008) +--------------------------------------------- +- AceGUI-3.0: ACE-139: Changed all Widgets to resemble the Blizzard 2.4 Options Style (nevcairiel) +- AceGUI-3.0: Fixed "List"-Layout not reporting new width to "fill"-mode widgets (mikk) +- AceGUI-3.0: added :SetColor to the Label widget (nevcairiel) +- AceGUI-3.0: ACE-132: ColorPicker: added checkers texture for better alpha channel display, and fixed "white"-texture bug (nevcairiel,nargiddley,ammo) +- AceConfig-3.0: ACE-113: Added uiName, uiType, handler, option, type to the info table (nevcairiel,nargiddley) +- AceConfigDialog-3.0: ACE-139: Adjusted for 2.4 options panels (nevcairiel) +- AceConfigDialog-3.0: Use "width" parameter for the description widget (if present) (nevcairiel) +- AceConfigDialog-3.0: ACE-135: Add support for specifying a rowcount for multiline editboxes (nargiddley) +- AceConfigDialog-3.0: :AddToBlizOptions will return the frame registered so you can use it in InterfaceOptionsFrame_OpenToFrame (nevcairiel) +- AceConfigCmd-3.0: handle "hidden" in help-output (nevcairiel) +- AceHook-3.0: fix unhooking of secure hooks (nevcairiel) +- AceDBOptions-3.0: add optional argument to GetOptionsTable(db[, noDefaultProfiles]) - if set to true will not show the default profiles in the profile selection (nevcairiel) +- AceDBOptions-3.0: added koKR locale (nevcairiel) +- Ace3 Standalone: Removed the "Ace3" Category from the 2.4 options panel (nevcairiel) + +Ace3 Beta - Revision 64176 (March 10th, 2008) +--------------------------------------------- +- AceGUI-3.0: Improve Alpha handling for the ColorPicker widget, ColorPicker widget closes the ColorPickerFrame before opening to prevent values getting carried over (nargiddley) +- AceGUI-3.0: The Slider widget will only react to the mousewheel after it has been clicked (anywhere including the label) to prevent accidental changes to the value when trying to scroll the container it is in (nargiddley) +- AceGUI-3.0: The TreeGroup widget is scrollable with the mousewheel (nargiddley) +- AceGUI-3.0: ACE-154: Fix frame levels in more cases to prevent widgets ending up behind their containers (nargiddley) +- AceConfigDialog: Color picker obeys hasAlpha on the color type (nargiddley) +- AceConfigDialog-3.0: ACE-155: Make sure that the selected group is type='group' when checking if it exists (nargiddley) +- AceDBOptions-3.0: added frFR locale (nevcairiel) + +Ace3 Beta - Revision 63886 (March 8th, 2008) +--------------------------------------------- +- AceDBOptions-3.0: new library to provide a Ace3Options table to control the AceDB-3.0 profiles (nevcairiel) +- AceDB-3.0: add "silent" option to DeleteProfile and CopyProfile when we deal with namespaces (nevcairiel) +- AceDB-3.0: implement library upgrade path (nevcairiel) +- AceDB-3.0: ACE-146: fix problem with non-table values overruling ['*']-type defaults (nevcairiel) +- AceConsole-3.0: treat |T|t texture links similar to |H|h|h links. (ammo) +- AceGUI-3.0: Use Blizzard Templates for the EditBox and DropDown widget (nevcairiel) +- AceBucket-3.0: ACE-150: callback is now optional, if not supplied will use the eventname as method name (only possible if one event is supplied, and not a event table) (nevcairiel) +- tests: adjust tests for AceGUI and AceConsole changes (nevcairiel) + +Ace3 Beta - Revision 63220 (Feb 29th, 2008) +--------------------------------------------- +- AceTimer-3.0: CancelAllTimers() now cancels silent (elkano) +- AceConfigDialog: Add :SetDefaultSize(appName, width, height), sets the size the dialog will open to. Does not effect already open windows. (nargiddley) +- AceConfigDialog: Fix typo in type check for range values (nargiddley) +- AceGUI: ColorPicker widget will correctly fire OnValueChanged for the cancel event of the colorpicker popup. Reset ColorPicker's color on Acquire. (nargiddley) +- AceGUI: Fix Spelling of Aquire -> Acquire for widgets, all custom widgets will need to be updated. A warning will be printed for widgets not upgraded yet. (nargiddley) +- AceConfigCmd-3.0: add simple coloring to slashcommand output. (ammo) +- AceConsole-3.0: add some color to :Print (ammo) +- AceAddon-3.0: set error level on library embedding to point to the :NewAddon call (nevcairiel) + +Ace3 Beta - Revision 62182 (Feb 20th, 2008) +--------------------------------------------- +- Ace3 StandAlone: Add a page to the Blizzard 2.4 Interface Options with icons to open dialogs for configs registered when installed standalone (nargiddley) +- AceConfigDialog: type = 'description' now uses the fields image and imageCoords instead of icon and iconCoords, add imageWidth and imageHeight (nargiddley) +- AceConfigDialog: Add :AddToBlizzardOptions(appName, name), this will add the specified config to the Blizzard Options pane new in 2.4. This will only be available if running on the 2.4 PTR (nargiddley) +- AceDB: fix GetProfiles() when setting the same profile twice (nevcairiel) +- AceDB: bail out of :SetProfile early when trying to set to the same profile (nevcairiel) +- AceDB: add nil checks to metatable handling (nevcairiel) +- AceDB: clear tables that are empty after defaults removal (nevcairiel) +- AceGUI: Fix a couple of layout bugs causing the width of groups to be wrong (nargiddley) +- AceGUI: Add Icon widget (nargiddley) +- AceGUI: Allow room for the border in the BlizOptionsGroup widget (nargiddley) +- AceGUI: Button and Keybinding use UIPanelButtonTemplate2 (nargiddley) +- AceConsole-3.0: Fix bug where no table for [self] was created when registering weak commands (ammo) +- AceTimer-3.0: add missing :OnEmbedDisable (ammo) +- AceAddon-3.0: added :GetName() that will always return the "real" name of a addon or module object without any prefixes (nevcairiel) + +Ace3 Beta - Revision 60697 (Feb 9th, 2008) +--------------------------------------------- +- CallbackHandler-1.0: remove unnecessary table creation if a event is fired thats not registered (nevcairiel) +- AceAddon-3.0: fixed a bug with recursive addon loading (nevcairiel) +- AceGUI: Update TabGroup's tablist format, tabs are selected by value not index (nargiddley) +- AceGUI: Add MultiLineEditBox widget (nargiddley, originally by bam) +- AceGUI: Small fix to the flow layout preventing controls overlapping in some cases (nargiddley) +- AceConfigDialog: Implement control and dialogControl for types 'input' and 'select' (nargiddley) +- AceConfigDialog: Add support for multiline = true on type = 'input' (nargiddley) +- AceConfigDialog: Fix an error when all groups are hidden in a group with childGroups = 'select' (nargiddley) +- AceConfigDialog: type = 'description' will now show .icon as an image with its text (nargiddley) +- AceConfigDialog: multiline inputs are no longer forced to width = "full" (nargiddley) +- AceConfigDialog: bug fix when loading without AceConsole present (nevcairiel) + +Ace3 Beta - Revision 60545 (Feb 7th, 2008) +--------------------------------------------- +- AceGUI: SetToplevel(true) for the Frame widget, multiple open windows should play nice together now (nargiddley) +- AceGUI: Move Frames to the FULLSCREEN_DIALOG strata (nargiddley) +- AceGUI: Dropdown, Editbox and Keybinding labels grey out when disabled (nargiddley) +- AceGUI: Add OnClick callback to the TreeGroup widget (nargiddley) +- AceConfigDialog: Confirm popups will be above the config window (nargiddley) + +Ace3 Beta - Revision 60163 (Feb 3rd, 2008) +--------------------------------------------- +- Initial Beta release \ No newline at end of file diff --git a/Libs/changelog-Ace3-r1241.txt b/Libs/changelog-Ace3-r1241.txt new file mode 100644 index 0000000..b00755e --- /dev/null +++ b/Libs/changelog-Ace3-r1241.txt @@ -0,0 +1,435 @@ +Ace3 Release - Revision r1241 (October 13th, 2020) +-------------------------------------------------- +- AceAddon-3.0: Suppress more Blizzard addon load events from activating Ace3 addons "too early", causing loading issues. +- AceGUI-3.0: Updated for Backdrop changes in WoW 9.0 +- AceGUI-3.0: Re-structured widget releasing to avoid recursive release in some circumstances +- AceGUI-3.0: Label: Anchors are being refreshed when the font is changed (Ticket #540) +- AceGUI-3.0: Dropdown: Initialize the widget with an empty list so that AddItem can be used on a fresh dropdown (Ticket #542) + +Ace3 Release - Revision r1227 (August 12th, 2019) +------------------------------------------------- +- AceConfigDialog-3.0: Fixed an issue with a missing template on WoW Classic (Ticket #517) + +Ace3 Release - Revision r1224 (August 1st, 2019) +------------------------------------------------ +- AceConfigDialog-3.0: Replace use of StaticPopup with a custom frame to minimize taint +- AceGUI-3.0: Ensure the OnLeave callback on various widgets still fires when its being released while visible (Ticket #505) +- AceGUI-3.0: Various fixes for anchoring problems in WoW 8.2 (Ticket #512, and other reports) + +Ace3 Release - Revision r1214 (June 26th, 2019) +----------------------------------------------- +- AceConfigDialog-3.0: Exposed "select" type sorting control through a new "sorting" config table member +- AceConfigDialog-3.0: Clear existing anchors on the GameTooltip before re-anchoring it for 8.2 compatibility +- AceConfigDialog-3.0: Improved options table sorting algorithm to produce a stable result in certain edge cases (Ticket #501) +- AceConfigRegistry-3.0: Added missing custom controls entries for all types added in the last release (Ticket #494) +- AceGUI-3.0: ColorPicker: Removed usage of Show/HideUIPanel for WoW 8.2 compatibiliy +- AceGUI-3.0: DropDown: Improved dropdown sorting algorithm to support tables with mixed string and numeric keys + +Ace3 Release - Revision r1200 (January 24th, 2019) +-------------------------------------------------- +- Cleanup for WoW 8.0 improvements +- AceGUI-3.0: Worked around various quirks in the WoW 8.0/8.1 API +- AceGUI-3.0: ColorPicker: Store references to the background/checkers textures (Ticket #473) +- AceConfigDialog-3.0: Allow custom controls for almost all option types (Ticket #475) + +Ace3 Release - Revision r1182 (July 17th, 2018) +----------------------------------------------- +- AceComm-3.0: Support numeric targets for custom channels (Ticket #419) +- AceComm-3.0/ChatThrottleLib: Updated for WoW 8.0 API changes +- AceConfig-3.0: Allow number values for the "width" parameter, which acts as a multiplier of the default width +- AceConfigDialog-3.0: Enable iconCoords for the main level of a tree group (Ticket #417) +- AceGUI-3.0: Implement a Table Layout (#442) +- AceGUI-3.0: EditBox: Only try to handle dragging if a valid object is being dragged into the text box +- AceGUI-3.0: Various fixes and work-arounds for WoW 8.0 changes + +Ace3 Release - Revision r1166 (August 29th, 2017) +------------------------------------------------- +- Updated any use of PlaySound to the new numeric constants (Fix for WoW 7.3) +- AceConfigDialog-3.0: implement fallback validation feedback in a StaticPopup (Ticket #2) + +Ace3 Release - Revision r1158 (March 28th, 2017) +------------------------------------------------ +- AceGUI-3.0: Fire OnShow events from Frame and Windows containers (Ticket #396) +- AceGUI-3.0: Add SetJustifyV/H API to the Label/InteractiveLabel widgets (Ticket #397) + +Ace3 Release - Revision r1151 (July 18th, 2016) +----------------------------------------------- +- AceConfig-3.0: Allow specifying images using the numeric fileID (Ticket #389) +- AceGUI-3.0: Use SetColorTexture in WoW 7.0 +- AceGUI-3.0: Expose the HighlightText API for EditBox and MultiLineEditBox Widgets (Ticket #378) +- AceGUI-3.0: Keybinding: Support MouseWheel Up/Down bindings (Ticket #372) +- AceGUI-3.0: TreeGroup: Refresh the tree in an OnUpdate once after Acquire, not only after creation (Fixes missing tree in WoW 7.0) +- AceSerializer-3.0: Create consistent tokens for infinity, independent of the clients platform + +Ace3 Release - Revision r1134 (June 23rd, 2015) +----------------------------------------------- +- AceGUI-3.0: TreeGroup: Prevent Word Wrap in tree elements + +Ace3 Release - Revision r1128 (February 24th, 2015) +--------------------------------------------------- +- AceGUI-3.0: Fixed an error in GameTooltip handling causing wrong formatting in some cases + +Ace3 Release - Revision r1122 (October 14th, 2014) +-------------------------------------------------- +- AceDB-3.0: Now using the GetCurrentRegion() API to determine region-based profile keys (fix for WoW 6.0) +- AceComm-3.0: Update ChatThrottleLib to v23 +- AceConfigDialog-3.0: Show a more meaningful title on Blizzard Options Groups (Ticket #353) +- AceGUI-3.0: ColorPicker: Frame Level is automatically increased to ensure the color picker frame is above the option panel +- AceGUI-3.0: DropDown: Properly disable all clickable areas when the dropdown is disabled (Ticket #360) +- AceHook-3.0: Always use HookScript when hooking scripts in a secure fashion (Ticket #338) +- AceTimer-3.0: New timer implementation based on C_Timer.After + +Ace3 Release - Revision r1109 (February 19th, 2014) +--------------------------------------------------- +- AceComm-3.0: Ambiguate addon comm messages to restore behavior to be identical to pre-5.4.7 +- AceConfigRegistry-3.0: Added an option to skip options table validation on registering + +Ace3 Release - Revision r1104 (October 31st, 2013) +-------------------------------------------------- +- AceGUI-3.0: Flow Layout: Added a safeguard to prevent an infinite loop in the layout engine +- AceGUI-3.0: DropDown: Adjust its style slightly to closer resemble the Blizzard DropDown Widget +- AceGUI-3.0: DropDown: API enhancements to specify the width of the pullout and be notified when its opened + +Ace3 Release - Revision r1098 (September 13th, 2013) +---------------------------------------------------- +- AceDB-3.0: Switch characters to the default profile if their active profile is deleted (Ticket #324) +- AceConfigDialog-3.0: Try to prevent static popup taint (Ticket #322) +- AceGUI-3.0: Button: Add a new "Auto Width" option (Ticket #310) +- AceGUI-3.0: DropDown: Make the entire DropDown widget clickable (Ticket #339) +- AceGUI-3.0: EditBox: Allow dragging macros to the editbox (which will then contain the macros name) (Ticket #337) +- AceGUI-3.0: Slider: Add a workaround for the broken slider steps in WoW 5.4 (Ticket #346) +- AceGUI-3.0: TreeGroup: Fix an issue introduced by 5.4 broken scrollbars (Ticket #345) +- AceHook-3.0: Allow hooking of AnimationGroup scripts (Ticket #314) + +Ace3 Release - Revision r1086 (May 21st, 2013) +---------------------------------------------- +- AceAddon-3.0: Improved behavior when loading modules during game startup, ensures proper loading order + +Ace3 Release - Revision r1083 (March 4th, 2013) +----------------------------------------------- +- AceTimer-3.0: Fixed an issue that caused the parameter list passed to the callback to be cut off at nil values +- AceGUI-3.0: InlineGroup: The title attribute is properly reset for recycled objects + +Ace3 Release - Revision r1078 (February 10th, 2013) +--------------------------------------------------- +- AceTimer-3.0: Re-write based on AnimationTimers +- AceHook-3.0: Improved checks/error messages when trying to hook a script on a "nil" frame +- AceDBOptions-3.0: Added Italian locale +- AceGUI-3.0: BlizOptionsGroup: Fixed the "default" button callback +- AceGUI-3.0: Colorpicker: The colorpicker is now clamped to the screen + +Ace3 Release - Revision r1061 (August 27th, 2012) +------------------------------------------------- +- AceConfigDialog-3.0: Try to avoid potential taints in static popup dialogs +- AceConfigDialog-3.0: Sort multiselects with "radio" style +- AceGUI-3.0: Support for WoW 5.0 +- AceGUI-3.0: MultiLineEditBox: Support shift-click'ing items/spells/etc. into the editbox +- AceGUI-3.0: Label: Fix text alignment (Ticket #301) +- AceGUI-3.0: Checkbox: Description text on a disable checkbox should look disabled (Ticket #304) +- AceGUI-3.0: Keybinding: Ensure the Keybinding popup is on the top level (Ticket #305) + +Ace3 Release - Revision r1041 (November 29th, 2011) +--------------------------------------------------- +- AceDB-3.0: Added locale and factionrealmregion profile keys +- AceSerializer-3.0: Removed support for NaN, as WoW 4.3 does no longer allow it. +- AceGUI-3.0: Frame: Add :EnableResize (Ticket #214) + +Ace3 Release - Revision r1032 (June 29th, 2011) +----------------------------------------------- +- AceTab-3.0: Improvements to Match handling (Ticket #255 and #256) +- AceGUI-3.0: DropDown layout fix with hidden labels (Ticket #234) + +Ace3 Release - Revision r1025 (April 27th, 2011) +------------------------------------------------ +- AceComm-3.0: Updated for 4.1 changes - now handles RegisterAddonMessagePrefix internally for you. +- AceGUI-3.0: TabGroup: Fixed width of tabs in 4.1(Ticket #243) + +Ace3 Release - Revision r1009 (February 9th, 2011) +-------------------------------------------------- +- AceLocale-3.0: Fix erronous assumption that the default locale is always the first to be registered for the :NewLocale() "silent" flag. The flag must now be set on the FIRST locale to be registered. +- AceLocale-3.0: The :NewLocale() "silent" flag may now be set to the string "raw", meaning nils are returned for unknown translations. +- AceGUI-3.0: Fix the disabled state of Icon widgets +- AceGUI-3.0: The header of the Frame widget now dynamically changes size to fit the text (Ticket #171) +- AceGUI-3.0: Its now possible to define a custom order the elements in a dropdown widget +- AceGUI-3.0: Improved widget focus behaviour across the board (Ticket #192, #193) +- AceGUI-3.0: Fixed a bug that made it impossible to block the tree widget from being user resizable (Ticket #163) +- AceGUI-3.0: Fixed a bug that caused TreeGroups to become unresponsive under certain conditions (Ticket #189, #202) +- AceGUI-3.0: Enhanced the DropDown widget to allow it to be reused more easily. +- AceConfigDialog-3.0: Select Groups now have the proper order in the dropdown (Ticket #184) +- AceConfigDialog-3.0: Implemented "radio" style select boxes (Ticket #149) + +Ace3 Release - Revision r981 (October 27th, 2010) +------------------------------------------------- +- AceAddon-3.0: Fixed a library upgrading issue +- AceAddon-3.0: Modules are now enabled in loading order +- AceGUI-3.0: Keybinding: The widget will no longer steal keybindings even when inactive (Ticket #169) +- AceGUI-3.0: EditBox: Fixed spell drag'n'drop + + +Ace3 Release - Revision r971 (October 12th, 2010) +------------------------------------------------- +- Small fixes and adjustments for the 4.0 Content Patch. +- AceGUI-3.0: ScrollFrame: Allow for a small margin of error when determining if the scroll bar should be shown. +- AceGUI-3.0: Added new widget APIs: GetText for EditBox and DisableButton for MultiLineEditBox + +Ace3 Release - Revision r960 (July 20th, 2010) +---------------------------------------------- +- AceGUI-3.0: Label: Reset Image Size and TexCoords on Acquire (Ticket #110) +- AceGUI-3.0: CheckBox: Re-apply the disabled state after setting a value, so the visuals are correct in either case. (Ticket #107) +- AceGUI-3.0: Icon: Fix the vertical size. It'll now properly scale with the image size, and not be fixed to about 110px. (Ticket #104) +- AceGUI-3.0: External Containers (Frame, Window) should always start in a visible state. (Ticket #121) +- AceGUI-3.0: Added Blizzard sounds to widgets (Ticket #120) +- AceGUI-3.0: CheckBox: check for self.desc:GetText() being nil as well as "" to prevent setting the wrong height on the checkbox causing bouncing checkboxes. +- AceGUI-3.0: Rewrite of the MultiLineEditBox (Ticket #68) +- AceGUI-3.0: CheckBox: Fix alignment of the text in OnMouseDown when an image is set. (Ticket #142) +- AceGUI-3.0: Add SetMaxLetters APIs to EB and MLEB (Ticket #135) +- AceGUI-3.0: Frame: Add events for OnEnter/OnLeave of the statusbar (Ticket #139) +- AceGUI-3.0: Major cleanups and refactoring in nearly all widgets and containers. +- AceConfigDialog-3.0: Always obey the min/max values on range-type widgets (Ticket #114) +- AceConfigDialog-3.0: Pass iconCoords set on groups in the options table to the tree widget (Ticket #111) +- AceConfigDialog-3.0: Implement "softMin" and "softMax", allowing for a UI-specific minimum/maximum for range controls, while allowing manual input of values in the old min/max range. (Ticket #123) +- AceConfigDialog-3.0: Don't close frames in CloseAll that are being opened after the CloseAll event was dispatched. (Ticket #132). +- AceSerializer-3.0: Fix encoding & decoding of \030. (Ticket #115) +- AceDB-3.0: Remove empty sections on logout, keeping the SV clean of more useless informations. +- AceDBOptions-3.0.lua: Fix a string typo (Ticket #141) + +Ace3 Release - Revision r907 (December 16th, 2009) +--------------------------------------------------- +- AceGUI-3.0: Frame: Properly save the width in the status table. +- AceConfigCmd-3.0: Properly handle help output of inline groups with a different handler. (Ticket #101) +- AceConfigDialog-3.0: Don't bail out and error when a dialogControl was invalid, instead show the error and fallback to the default control for that type. +- AceConfigDialog-3.0: Fix a hickup with the OnUpdate script not getting upgraded properly in some situations. + +Ace3 Release - Revision r900 (December 8th, 2009) +-------------------------------------------------- +- AceGUI-3.0: Alot of visual fixes regarding margins and general widget styles. +- AceGUI-3.0: Ability to accept links for EditBox Widget (Ticket #21) +- AceGUI-3.0: ScrollFrame: Hide the scrollbar when there is no overflowing content, and allow the Layout functions to use that space for widgets. +- AceGUI-3.0: DropDown: Added a GetValue() API to the Widget (Ticket #69) +- AceGUI-3.0: Button: Pass the arguments of the OnClick handler to the OnClick callback (Ticket #57) +- AceGUI-3.0: add a Window container, basically a plain window with close button +- AceGUI-3.0: Add support for inline descriptions to the checkbox widget. +- AceGUI-3.0: Added an API to the Window container to disable the user-resizing of the same. (Ticket #80) +- AceGUI-3.0: TreeGroup: Allow iconCoords to be passed for the tree elements. (Ticket #59) +- AceGUI-3.0: Slider: Add a more visible backdrop/border around the manual input area (Ticket #98, #46) +- AceGUI-3.0: Allow displaying a image in front of the checkbox label. (Ticket #82) +- AceConfig-3.0: Added an experimental "descStyle" member to all option table nodes that allows you to control the way the description is presented. + Supported values are "tooltip" for the old behaviour, and "inline" for a inline display of the description, pending support in AceGUI-3.0 widgets. +- AceConfigCmd-3.0: Properly parse functions and methods supplied for the "hidden" option table member. (Ticket #96) +- AceConfigDialog-3.0: Fix the unpacking of the basepath arguments when internally calling :Open (Ticket #90) +- AceConfigDialog-3.0: Properly refresh BlizOptions Windows which are registered with a path on NotifyChange. (Ticket #93) +- AceConfigDialog-3.0: Allow image/imageCoords on toogle elements (Note that the width/height of the image on the toggle cannot be changed) (Ticket #82) +- AceConfigDialog-3.0: Pass the groups "name" tag to DropDownGroups as the title. (Ticket #79) +- AceDB-3.0: Remove the metatable from the DB before removing defaults, so we don't accidentally invoke it in the process. (Ticket #66) +- AceDB-3.0: Don't save the profileKeys for namespaces, since we use the profile of the parent DB anyway. This will cut down on SV complexity when using alot of namespaces. +- AceDB-3.0: Don't fire the OnProfileReset callback when copying a profile. +- AceDBOptions-3.0: Show the current profile on the dialog. (Ticket #56) +- AceComm-3.0: Add callbacks for message chunks going out the wire (via CTL). Useful for displaying progress for very large messages. +- AceConsole-3.0: Add :Printf() so you don't have to do Print(format()) + +Ace3 Beta - Revision 820 (August 7th, 2009) +-------------------------------------------- +- AceComm-3.0: Updated ChatThrottleLib to v21 +- AceGUI-3.0: Fixed a glitch in the TabGroup code that caused tabs to be unresponsive under rare conditions. (Ticket #38) +- AceGUI-3.0: Consistent "disabled" behaviour of all widgets. (Ticket #47) +- AceGUI-3.0: Changed the way widgets are handled on release to avoid a crash in the game client. (Ticket #49) +- AceGUI-3.0: Fixed a glitch in the button graphics. (Ticket #58) +- AceGUI-3.0: Localized the "Close" Text on the Frame widget. + +Ace3 Beta - Revision 803 (April 14th, 2009) +-------------------------------------------- +- AceConfig-3.0: Allow spaces in the keys of config tables. Spaces will be changed on the fly to underscores in AceConfigCmd-3.0 - there is no collision check in place, yet. +- AceConfig-3.0: Support a "fontSize" attribute to the description type. Possible values are "small" (default), "medium" and "large". +- AceConfigDialog-3.0: Fixed an error that would occur when calling InterfaceOptionsFrame_OpenToCategory from within an event handler in a Blizzard Options integrated frame. (Ticket #33) +- AceConfigDialog-3.0: The "execute" type does now recognize the "image" attributes, and will display a clickable icon instead of the button when an image is supplied. (Ticket #35) +- AceConfigDialog-3.0: Pass icons defined in the option table to the TreeGroup widget (Ticket #20) +- AceConfigDialog-3.0: Fixed a bug that caused an empty group widget to be drawn if all groups were hidden. +- AceConfigCmd-3.0: Improved the behaviour of select and multiselect elements. (Ticket #26) +- AceDB-3.0: Add a GetNamespace function to the DB Objects which returns an existing namespace from the DB object. +- AceGUI-3.0 Slider Widget: Properly show percentage values as min/max if isPercent is true. (Ticket #32) +- AceGUI-3.0: Fixed an error in the TreeGroup Widget that caused execution to stop if no name was provided. +- AceGUI-3.0: Fixed the behaviour of the MultiLineEditbox Widget (Accept button not clickable). (Ticket #28) +- AceGUI-3.0: TabGroup: Set a maximum width for tabs based on the size of the widget. (Ticket #34) +- AceGUI-3.0: Added a new InteractiveLabel with OnEnter/OnLeave/OnClick callbacks and a highlight texture +- AceGUI-3.0: Add SetFont and SetFontObject functions to the Label widget (and the new InteractiveLabel) +- AceGUI-3.0: Support icons in the TreeGroup display. (Ticket #20) +- AceGUI-3.0: Added a new :SetRelativeWidth Widget-API that allows you to set the width of widgets relative to their container. +- AceGUI-3.0: Alot of fixes, tweaks and consistency changes. + +Ace3 Beta - Revision 741 (Feb 15th, 2009) +-------------------------------------------- +- AceDBOptions-3.0: Disable the "Copy From" and "Delete" dropdowns if there are no profiles to choose from. (Ticket #19) +- AceGUI-3.0: Improve TabGroup visual style - only stretch them to the full width if they would use more then 75% of the exisiting space. +- AceGUI-3.0: Added a third optional argument to <container>:AddChild() to specify the position for the new widget. (Ticket #22) +- AceConfigCmd-3.0: Improve help output when viewing groups. +- AceConfigDialog-3.0: Refresh the Options Panel after a confirmation is canceled to reset the value to its previous value. (Ticket #23) +- AceDB-3.0: Fix a data inconsistency when using false as a table key. (Ticket #25) + +Ace3 Beta - Revision 722 (Jan 4th, 2009) +-------------------------------------------- +- AceHook-3.0: Fix :SecureHookScript to not fail on previously empty scripts since frame:HookScript does nothing at all in that case. (Ticket #16) +- AceLocale-3.0: Implement 'silent' option for :NewLocale to disable the warnings on unknown entrys (Ticket #18) +- AceTimer-3.0: Implement :TimeLeft(handle) function (Ticket #10) +- AceGUI-3.0: Fix TabGroup tab resizing to be consistent +- AceGUI-3.0: Fixed EditBox alignment when the label is disabled (Ticket #13) +- AceDB-3.0: Implement OnProfileShutdown callback (Ticket #7) +- AceDBOptions-3.0: Updated esES and ruRU locale + +Ace3 Beta - Revision 706 (Oct 18th, 2008) +-------------------------------------------- +- First Beta release after WoWAce move +- Removed WoW 2.4.x compat layer +- AceGUI-3.0: Fix disabling of the Multiline Editbox +- AceGUI-3.0: Improvements to the Keybinding Widget + +Ace3 Beta - Revision 81437 (Sept 6th, 2008) +-------------------------------------------- +- AceConfigDialog-3.0: the confirm callback will now receive the new value that is being set (same signature as the validate callback) +- AceConfigDialog-3.0: :Close and :CloseAll are now safe to call from within callbacks. +- AceGUI-3.0: Added new methods to the widget base table, see ACE-205 for full reference +- AceGUI-3.0: Various fixes to Widgets and recycling process +- Now compatible with WoW 3.0 (compat layer is to be removed upon 3.0 release) + + +Ace3 Beta - Revision 76325 (June 9th, 2008) +-------------------------------------------- +- AceGUI-3.0: Finish Multiselect support for the Dropdown widget (nargiddley) +- AceGUI-3.0: Re-write TabGroup layouting (nargiddley) +- AceGUI-3.0: TreeGroup: Add :EnableButtonTooltips(enable) to make the default tooltips on the tree optional, enabled by default. (nargiddley) +- AceGUI-3.0: TabGroup: Add OnTabEnter and OnTabLeave Callbacks (nargiddley) +- AceConfigDialog-3.0: Add :SelectGroup(appName, ...) - Selects the group given by the path specified then refreshes open windows. (nargiddley) +- AceConfigDialog-3.0: :Open now accepts an optional path, when given will open the window with only the given group and its children visible (nargiddley) +- AceConfigDialog-3.0: :AddToBlizOptions now accepts an optional path, this will add the config page to display the specified group and its children only. (nargiddley) +- AceConfigDialog-3.0: ACE-189: allow multiselect to be shown as a dropdown by setting dialogControl = "Dropdown" (nargiddley) +- AceConfigDialog-3.0: Add Custom tooltips to the TreeGroup and TabGroup, shows both name and desc for the group. (nargiddley) +- AceConfigCmd-3.0: ACE-195: Remove unneeded references to .confirm, will no longer error when .confirm is a boolean (nargiddley) +- AceAddon-3.0: Allow for an optional first argument to NewAddon to be a table to be used as the base for the addon. (ammo) + +Ace3 Beta - Revision 74633 (May 19th, 2008) +-------------------------------------------- +- AceTimer-3.0: ACE-173: don't error on nil handle for CancelTimer(), just bail out early. (ammo) +- AceGUI-3.0: ACE-161, ACE-180, ACE-181: New and improved DropDown widget (originally coded by Borlox) (nargiddley,nevcairiel) +- AceGUI-3.0: AceGUI will call OnWidthSet and OnHeightSet as frames resize (nargiddley) +- AceGUI-3.0: TabGroup: Use OptionsFrameTabButtonTemplate for tabs (nargiddley) +- AceGUI-3.0: TabGroup: Tabs now span multiple lines when there are too many to fit in the width of the frame (nargiddley) +- AceGUI-3.0: TreeGroup: Tree is now sizable by dragging, orig patch by yssaril (nargiddley) +- AceGUI-3.0: Flow layout will now reduce widgets width to fit rather than leaving them sticking out the side of container widgets (nargiddley) +- AceGUI-3.0: Dropdowns will no longer be left open in the background when the frame is clicked or other widgets are activated (nargiddley) +- AceGUI-3.0: ACE-159: Rename Release to OnRelease and Acquire to OnAcquire for widgets. (nargiddley) +- AceGUI-3.0: ACE-171: add IsVisible and IsShown methods to the widget metatable (nargiddley) +- AceGUI-3.0: ACE-164: add tooltips to tree to show full text of childs that got clipped (ammo) +- AceGUI-3.0: ACE-174: make buttons in AceGUI-3.0 locale independant (ammo) +- AceGUI-3.0: ACE-166: fix treegroup visual bug (ammo) +- AceGUI-3.0: ACE-184: make numeric entry for slider more intuitive (ammo) +- AceConfigCmd-3.0: ACE-172 - ignore description in cmd (ammo) +- AceConsole-3.0: nolonger check for existance of slashcommands, overwrite where needed. Last one wins, this enables AddonLoader to X-LoadOn-Slash and override the slashcommand from AddonLoader slashcommand with an Ace3 one. (Ammo) + +Ace3 Beta - Revision 69509 (April 13th, 2008) +--------------------------------------------- +- AceComm-3.0: turn off error messages when receiving invalid multi-part messages (its happening on login etc) (nevcairiel) +- AceDBOptions-3.0: shorten info text at top to prevent scrollbars. (nevcairiel) +- AceHook-3.0: ACE-162: fix unhooking of objects that were not actually hooked (nevcairiel) +- AceDB-3.0: fire the DB callbacks after the namespaces changed their profile as well (nevcairiel) +- AceDB-3.0: namespaces can now be individually reset using :ResetProfile() on the namespace directly (nevcairiel) +- AceDB-3.0: added a optional argument to :ResetProfile to not populate the reset to all namespaces (so the main profile can reset individually without reseting all namespaces too) (nevcairiel) + +Ace3 Beta - Revision 66329 (March 27th, 2008) +--------------------------------------------- +- Overall 2.4 clean ups - removing 2.4 checks and work arounds (nevcairiel) +- AceBucket-3.0: clear the timer reference when unregistering a bucket to prevent a error when unregistering a bucket that was never fired (nevcairiel) +- AceAddon-3.0: Bugfix when enabling/disabling modules from the parents OnEnable after disabling / enabling the parent addon. (ammo) +- AceGUI-3.0: Don't parent the BlizOptionsGroup widget to UIParent and Hide it by default. Fixes stray controls on the screen. (nargiddley) +- AceConfigDialog-3.0: Config windows without a default size won't incorrectly get a default size from a previously open window. (nargiddley) +- AceDBOptions-3.0: added zhCN and zhTW locale (nevcairiel) + +Ace3 Beta - Revision 65665 (March 25th, 2008) +--------------------------------------------- +- AceGUI-3.0: ACE-139: Changed all Widgets to resemble the Blizzard 2.4 Options Style (nevcairiel) +- AceGUI-3.0: Fixed "List"-Layout not reporting new width to "fill"-mode widgets (mikk) +- AceGUI-3.0: added :SetColor to the Label widget (nevcairiel) +- AceGUI-3.0: ACE-132: ColorPicker: added checkers texture for better alpha channel display, and fixed "white"-texture bug (nevcairiel,nargiddley,ammo) +- AceConfig-3.0: ACE-113: Added uiName, uiType, handler, option, type to the info table (nevcairiel,nargiddley) +- AceConfigDialog-3.0: ACE-139: Adjusted for 2.4 options panels (nevcairiel) +- AceConfigDialog-3.0: Use "width" parameter for the description widget (if present) (nevcairiel) +- AceConfigDialog-3.0: ACE-135: Add support for specifying a rowcount for multiline editboxes (nargiddley) +- AceConfigDialog-3.0: :AddToBlizOptions will return the frame registered so you can use it in InterfaceOptionsFrame_OpenToFrame (nevcairiel) +- AceConfigCmd-3.0: handle "hidden" in help-output (nevcairiel) +- AceHook-3.0: fix unhooking of secure hooks (nevcairiel) +- AceDBOptions-3.0: add optional argument to GetOptionsTable(db[, noDefaultProfiles]) - if set to true will not show the default profiles in the profile selection (nevcairiel) +- AceDBOptions-3.0: added koKR locale (nevcairiel) +- Ace3 Standalone: Removed the "Ace3" Category from the 2.4 options panel (nevcairiel) + +Ace3 Beta - Revision 64176 (March 10th, 2008) +--------------------------------------------- +- AceGUI-3.0: Improve Alpha handling for the ColorPicker widget, ColorPicker widget closes the ColorPickerFrame before opening to prevent values getting carried over (nargiddley) +- AceGUI-3.0: The Slider widget will only react to the mousewheel after it has been clicked (anywhere including the label) to prevent accidental changes to the value when trying to scroll the container it is in (nargiddley) +- AceGUI-3.0: The TreeGroup widget is scrollable with the mousewheel (nargiddley) +- AceGUI-3.0: ACE-154: Fix frame levels in more cases to prevent widgets ending up behind their containers (nargiddley) +- AceConfigDialog: Color picker obeys hasAlpha on the color type (nargiddley) +- AceConfigDialog-3.0: ACE-155: Make sure that the selected group is type='group' when checking if it exists (nargiddley) +- AceDBOptions-3.0: added frFR locale (nevcairiel) + +Ace3 Beta - Revision 63886 (March 8th, 2008) +--------------------------------------------- +- AceDBOptions-3.0: new library to provide a Ace3Options table to control the AceDB-3.0 profiles (nevcairiel) +- AceDB-3.0: add "silent" option to DeleteProfile and CopyProfile when we deal with namespaces (nevcairiel) +- AceDB-3.0: implement library upgrade path (nevcairiel) +- AceDB-3.0: ACE-146: fix problem with non-table values overruling ['*']-type defaults (nevcairiel) +- AceConsole-3.0: treat |T|t texture links similar to |H|h|h links. (ammo) +- AceGUI-3.0: Use Blizzard Templates for the EditBox and DropDown widget (nevcairiel) +- AceBucket-3.0: ACE-150: callback is now optional, if not supplied will use the eventname as method name (only possible if one event is supplied, and not a event table) (nevcairiel) +- tests: adjust tests for AceGUI and AceConsole changes (nevcairiel) + +Ace3 Beta - Revision 63220 (Feb 29th, 2008) +--------------------------------------------- +- AceTimer-3.0: CancelAllTimers() now cancels silent (elkano) +- AceConfigDialog: Add :SetDefaultSize(appName, width, height), sets the size the dialog will open to. Does not effect already open windows. (nargiddley) +- AceConfigDialog: Fix typo in type check for range values (nargiddley) +- AceGUI: ColorPicker widget will correctly fire OnValueChanged for the cancel event of the colorpicker popup. Reset ColorPicker's color on Acquire. (nargiddley) +- AceGUI: Fix Spelling of Aquire -> Acquire for widgets, all custom widgets will need to be updated. A warning will be printed for widgets not upgraded yet. (nargiddley) +- AceConfigCmd-3.0: add simple coloring to slashcommand output. (ammo) +- AceConsole-3.0: add some color to :Print (ammo) +- AceAddon-3.0: set error level on library embedding to point to the :NewAddon call (nevcairiel) + +Ace3 Beta - Revision 62182 (Feb 20th, 2008) +--------------------------------------------- +- Ace3 StandAlone: Add a page to the Blizzard 2.4 Interface Options with icons to open dialogs for configs registered when installed standalone (nargiddley) +- AceConfigDialog: type = 'description' now uses the fields image and imageCoords instead of icon and iconCoords, add imageWidth and imageHeight (nargiddley) +- AceConfigDialog: Add :AddToBlizzardOptions(appName, name), this will add the specified config to the Blizzard Options pane new in 2.4. This will only be available if running on the 2.4 PTR (nargiddley) +- AceDB: fix GetProfiles() when setting the same profile twice (nevcairiel) +- AceDB: bail out of :SetProfile early when trying to set to the same profile (nevcairiel) +- AceDB: add nil checks to metatable handling (nevcairiel) +- AceDB: clear tables that are empty after defaults removal (nevcairiel) +- AceGUI: Fix a couple of layout bugs causing the width of groups to be wrong (nargiddley) +- AceGUI: Add Icon widget (nargiddley) +- AceGUI: Allow room for the border in the BlizOptionsGroup widget (nargiddley) +- AceGUI: Button and Keybinding use UIPanelButtonTemplate2 (nargiddley) +- AceConsole-3.0: Fix bug where no table for [self] was created when registering weak commands (ammo) +- AceTimer-3.0: add missing :OnEmbedDisable (ammo) +- AceAddon-3.0: added :GetName() that will always return the "real" name of a addon or module object without any prefixes (nevcairiel) + +Ace3 Beta - Revision 60697 (Feb 9th, 2008) +--------------------------------------------- +- CallbackHandler-1.0: remove unnecessary table creation if a event is fired thats not registered (nevcairiel) +- AceAddon-3.0: fixed a bug with recursive addon loading (nevcairiel) +- AceGUI: Update TabGroup's tablist format, tabs are selected by value not index (nargiddley) +- AceGUI: Add MultiLineEditBox widget (nargiddley, originally by bam) +- AceGUI: Small fix to the flow layout preventing controls overlapping in some cases (nargiddley) +- AceConfigDialog: Implement control and dialogControl for types 'input' and 'select' (nargiddley) +- AceConfigDialog: Add support for multiline = true on type = 'input' (nargiddley) +- AceConfigDialog: Fix an error when all groups are hidden in a group with childGroups = 'select' (nargiddley) +- AceConfigDialog: type = 'description' will now show .icon as an image with its text (nargiddley) +- AceConfigDialog: multiline inputs are no longer forced to width = "full" (nargiddley) +- AceConfigDialog: bug fix when loading without AceConsole present (nevcairiel) + +Ace3 Beta - Revision 60545 (Feb 7th, 2008) +--------------------------------------------- +- AceGUI: SetToplevel(true) for the Frame widget, multiple open windows should play nice together now (nargiddley) +- AceGUI: Move Frames to the FULLSCREEN_DIALOG strata (nargiddley) +- AceGUI: Dropdown, Editbox and Keybinding labels grey out when disabled (nargiddley) +- AceGUI: Add OnClick callback to the TreeGroup widget (nargiddley) +- AceConfigDialog: Confirm popups will be above the config window (nargiddley) + +Ace3 Beta - Revision 60163 (Feb 3rd, 2008) +--------------------------------------------- +- Initial Beta release diff --git a/Locales/Core-Locale-enUS.lua b/Locales/Core-Locale-enUS.lua index 5b6cce2..2bf2a0e 100644 --- a/Locales/Core-Locale-enUS.lua +++ b/Locales/Core-Locale-enUS.lua @@ -151,9 +151,9 @@ L["RESETTING_PROFILE"] = "Resetting profile: " L["PROFILE_DELETED"] = "Profile deleted - iterating all modules." L["DELETING_PROFILE"] = "Deleting profile: " L["Failed_LOAD_MODULE"] = "Failed to load EMA Module: " -L["TEXT1"] = "Ebony's MultiBoxing Assistant v2.2 For 8.2.0!" +L["TEXT1"] = "Ebony's MultiBoxing Assistant v3.0 For 9.0.1!" L["TEXT2"] = "" -L["TEXT3"] = "Welcome To v2.2!" +L["TEXT3"] = "Welcome To v3.0!" L["TEXT4"] = "" L["TEXT5"] = "" L["TEXT6"] = "|cFFFFFFFFRead The ChangeLog For More Information" @@ -180,7 +180,7 @@ L["FRAME_RESET"] = "Frame Reset" L["ALL_SETTINGS_RESET"] = "Thank You For Using EMA \nYour settings have been reset. \n\nPlease report any bugs to the source control issue tracker." L["CAN_NOT_RUN_JAMBA_AND_EMA"] = "|cFFFF0000 You Can Not Run \"Jamba\" With EMA \nDisabling Jamba Addon \n\nThis Will Reload Your UI" -- CHANGE ME!!! -L["v2_NEWS"] = "|cFFFFFF00Thank You For Upgrading EMA \nYou Are Now On Release v2.2 \n\n|cFFFFFFFFRead Changelog For More Information" +L["v2_NEWS"] = "|cFFFFFF00Thank You For Upgrading EMA \nYou Are Now On Release v3.0 \n\n|cFFFFFFFFRead Changelog For More Information" -------------------------- -- Communications Locale @@ -470,10 +470,10 @@ L["CURR"] = "Curr" L["CHAT_TRIGGER"] = "Chat !Triggers" L["CHAT_TRIGGERS"] = "Listen to Chat Triggers" L["CHAT_TRIGGERS_HELP"] = "Listen to !Triggers in \nParty/raid/guild to tell your team about things\n!emahelp" +L["NO_KEYSTONE_FOUND"] = "I Do Not Currently Have a Keystone" L["I_HAVE_X_GOLD"] = function( gold ) return string.format( "%s ", gold) end - L["MY_KEY_STONE_IS"] = function( key ) return string.format( "%s", key ) end @@ -533,7 +533,9 @@ L["SHOW_HEALTH"] = "Show the Team's Health Bars" L["SHOW_CLASS_COLORS"] = "Show Class Colors" L["SHOW_CLASS_COLORS_HELP"] = "Show Class Colors on Health Bars" L["POWER_HELP"] = "Show the Team Power Bar\n\nMana, Rage, Etc..." -L["CLASS_POWER"] = "Show the Teams Class Power Bar\n\nComboPoints\nSoulShards\nHoly Power\nRunes" +L["CLASS_POWER"] = "Show the Teams Class Power Bar\n\nComboPoints\nSoulShards\nHoly Power\nDK Runes" +L["GCD_FRAME_HEADER"] = "Trufigcd Support" +L["GCD_FRAME"] = "Show A Trufigcd Bar On The Ema Team List\nNote:You Will Need The Trufigcd Addon Installed" L["DEAD"] = "Dead" L["PORTRAIT_HEADER"] = "Portrait" L["FOLLOW_BAR_HEADER"] = "Follow Status Bar" @@ -541,7 +543,8 @@ L["EXPERIENCE_HEADER"] = "Experience Bars" L["HEALTH_BAR_HEADER"] = "Health Bar" L["POWER_BAR_HEADER"] = "Power Bar" L["CLASS_BAR_HEADER"] = "Class Power Bar" - +L["CAN_NOT_FIND_TRUFIGCD_ADDON"] = "TrufiGCD Missing" +L["NOT_SUPPORTED"] = "UnSupported" -------------------------- -- Follow Locale L["FOLLOW_BINDING_HEADER"] = "Follow Key Bindings" @@ -646,7 +649,7 @@ L["FOCUS"] = "Not Focus!" L["LOW_HEALTH"] = "Low Health!" L["LOW_MANA"] = "Low Mana!" L["BAGS_FULL"] = "Bags Full!" -L["CCED"] = "I'm" +L["CCED"] = "I've Been" -- Vendor L["AUTO_REPAIR"] = "Auto Repair" L["AUTO_REPAIR_HELP"] = "Auto Repairs Toon's Items When You Visit a Repair Merchant" @@ -840,6 +843,7 @@ L["TRACK_ALL_TOOLTIP"] = "Track All Quests On All Minions" L["UNTRACK_ALL"] = "Untrack All" L["UNTRACK_ALL_TOOLTIP"] = "Untrack All Quests on all Minions" L["ABANDONING_ALLQUEST"] = "Abandoning Quests To All Toons" +L["AM_I_TALKING_TO_A_NPC"] = "Am I Talking To A NPC" -- Quest Strings L["AUTOMATICALLY_ACCEPTED_ESCORT_QUEST"] = function( questName ) diff --git a/Modules/DisplayTeam.lua b/Modules/DisplayTeam.lua index d81f3ac..e6d2e83 100644 --- a/Modules/DisplayTeam.lua +++ b/Modules/DisplayTeam.lua @@ -24,8 +24,9 @@ local EMA = LibStub( "AceAddon-3.0" ):NewAddon( local EMAUtilities = LibStub:GetLibrary( "EbonyUtilities-1.0" ) local EMAHelperSettings = LibStub:GetLibrary( "EMAHelperSettings-1.0" ) local LibBagUtils = LibStub:GetLibrary( "LibBagUtils-1.0" ) -local LibButtonGlow = LibStub:GetLibrary( "LibButtonGlow-1.0") +local LibButtonGlow = LibStub:GetLibrary( "LibButtonGlow-1.0" ) EMA.SharedMedia = LibStub( "LibSharedMedia-3.0" ) +local TrufiGCD = IsAddOnLoaded( "TrufiGCD" ) -- Constants required by EMAModule and Locale for this module. EMA.moduleName = "JmbDspTm" @@ -95,8 +96,10 @@ EMA.settings = { comboStatusHeight = 10, comboStatusShowValues = true, comboStatusShowPercentage = true, - showToolTipInfo = false, --- ShowEquippedOnly = false, + showGCDFrame = false, + gCDFrameWidth = 3, + gCDFrameHeight = 15, + gCDFrameToolTips = true, framePoint = "LEFT", frameRelativePoint = "LEFT", frameXOffset = 0, @@ -111,7 +114,8 @@ EMA.settings = { frameBorderColourB = 1.0, frameBorderColourA = 1.0, timerCount = 1, - currGold = true + currGold = true, + showLastSpellBarTemp = true }, } @@ -212,6 +216,7 @@ local function GetCharacterHeight() local heightHealthStatus = 0 local heightPowerStatus = 0 local heightComboStatus = 0 + local heightGcdFrame = 0 local heightAllBars = 0 if EMA.db.showCharacterPortrait == true then heightPortrait = EMA.db.characterPortraitWidth + EMA.db.teamListVerticalSpacing @@ -236,12 +241,16 @@ local function GetCharacterHeight() heightComboStatus = EMA.db.comboStatusHeight + EMA.db.barVerticalSpacing heightAllBars = heightAllBars + heightComboStatus end + if EMA.db.showGCDFrame == true then + heightGcdFrame = EMA.db.gCDFrameHeight + EMA.db.barVerticalSpacing + heightAllBars = heightAllBars + heightGcdFrame + end if EMA.db.barsAreStackedVertically == true then height = max( heightPortrait, heightAllBars ) else - height = max( heightPortrait, heightFollowStatus, heightExperienceStatus, heightHealthStatus, heightPowerStatus, heightComboStatus ) - --height = max( heightPortrait, heightBagInformation, heightFollowStatus, heightExperienceStatus, heightReputationStatus, heightHealthStatus, heightPowerStatus, heightComboStatus ) + height = max( heightPortrait, heightFollowStatus, heightExperienceStatus, heightHealthStatus, heightPowerStatus, heightComboStatus, heightGcdFrame ) + --height = max( heightPortrait, heightBagInformation, heightFollowStatus, heightExperienceStatus, heightReputationStatus, heightHealthStatus, heightPowerStatus, heightComboStatus, heightGcdFrame) end return height end @@ -254,6 +263,7 @@ local function GetCharacterWidth() local widthHealthStatus = 0 local widthPowerStatus = 0 local widthComboStatus = 0 + local widthGcdFrame = 0 local widthAllBars = 0 if EMA.db.showCharacterPortrait == true then widthPortrait = EMA.db.characterPortraitWidth + EMA.db.teamListHorizontalSpacing @@ -278,9 +288,14 @@ local function GetCharacterWidth() widthComboStatus = EMA.db.comboStatusWidth + EMA.db.barHorizontalSpacing widthAllBars = widthAllBars + widthComboStatus end + if EMA.db.showGCDFrame == true then + widthGcdFrame = ( EMA.db.gCDFrameWidth * EMA.db.gCDFrameHeight + EMA.db.gCDFrameHeight ) + EMA.db.barHorizontalSpacing + widthAllBars = widthAllBars + widthGcdFrame + end + if EMA.db.barsAreStackedVertically == true then - width = widthPortrait + max( widthFollowStatus, widthExperienceStatus, widthHealthStatus, widthPowerStatus, widthComboStatus ) - --width = widthPortrait + max( widthBagInformation, widthFollowStatus, widthExperienceStatus, widthReputationStatus, widthHealthStatus, widthPowerStatus, widthComboStatus ) + width = widthPortrait + max( widthFollowStatus, widthExperienceStatus, widthHealthStatus, widthPowerStatus, widthComboStatus, widthGcdFrame ) + --width = widthPortrait + max( widthBagInformation, widthFollowStatus, widthExperienceStatus, widthReputationStatus, widthHealthStatus, widthPowerStatus, widthComboStatus, widthGcdFrame ) else width = widthPortrait + widthAllBars end @@ -309,7 +324,7 @@ end local function CreateEMATeamListFrame() -- The frame. - local frame = CreateFrame( "Frame", "EMADisplayTeamListWindowFrame", UIParent ) + local frame = CreateFrame( "Frame", "EMADisplayTeamListWindowFrame", UIParent, BackdropTemplateMixin and "BackdropTemplate" or nil ) frame.obj = EMA frame:SetFrameStrata( "LOW" ) frame:SetToplevel( true ) @@ -453,9 +468,6 @@ function EMA:SettingsUpdateStatusBarTexture() characterStatusBar["experienceArtBar"]:SetStatusBarTexture( statusBarTexture ) characterStatusBar["experienceArtBar"]:GetStatusBarTexture():SetHorizTile( false ) characterStatusBar["experienceArtBar"]:GetStatusBarTexture():SetVertTile( false ) - -- characterStatusBar["experienceHonorBar"]:SetStatusBarTexture( statusBarTexture ) - -- characterStatusBar["experienceHonorBar"]:GetStatusBarTexture():SetHorizTile( false ) - -- characterStatusBar["experienceHonorBar"]:GetStatusBarTexture():SetVertTile( false ) characterStatusBar["reputationBar"]:SetStatusBarTexture( statusBarTexture ) characterStatusBar["reputationBar"]:GetStatusBarTexture():SetHorizTile( false ) characterStatusBar["reputationBar"]:GetStatusBarTexture():SetVertTile( false ) @@ -478,12 +490,11 @@ function EMA:SettingsUpdateFontStyle() characterStatusBar["followBarText"]:SetFont( textFont , textSize , "OUTLINE") characterStatusBar["experienceBarText"]:SetFont( textFont , textSize , "OUTLINE") characterStatusBar["experienceArtBarText"]:SetFont( textFont , textSize , "OUTLINE") --- characterStatusBar["experienceHonorBarText"]:SetFont( textFont , textSize , "OUTLINE") characterStatusBar["reputationBarText"]:SetFont( textFont , textSize , "OUTLINE") characterStatusBar["healthBarText"]:SetFont( textFont , textSize , "OUTLINE") characterStatusBar["powerBarText"]:SetFont( textFont , textSize , "OUTLINE") characterStatusBar["comboBarText"]:SetFont( textFont , textSize , "OUTLINE") - + characterStatusBar["GCDFrameText"]:SetFont( textFont , textSize , "OUTLINE") end end @@ -505,7 +516,6 @@ function EMA:CreateEMATeamStatusBar( characterName, parentFrame ) local statusBarTexture = EMA.SharedMedia:Fetch( "statusbar", EMA.db.statusBarTexture ) local textFont = EMA.SharedMedia:Fetch( "font", EMA.db.fontStyle ) local textSize = EMA.db.fontSize - -- Create the table to hold the status bars for this character. EMA.characterStatusBar[characterName] = {} -- Get the status bars table. @@ -523,6 +533,7 @@ function EMA:CreateEMATeamStatusBar( characterName, parentFrame ) portraitButtonClick:SetAttribute( "unit", Ambiguate( characterName, "all" ) ) characterStatusBar["portraitButton"] = portraitButton characterStatusBar["portraitButtonClick"] = portraitButtonClick + -- Set the follow bar. local followName = EMA.globalFramePrefix.."FollowBar" local followBar = CreateFrame( "StatusBar", followName, parentFrame) --, "TextStatusBar,SecureActionButtonTemplate" ) @@ -547,6 +558,7 @@ function EMA:CreateEMATeamStatusBar( characterName, parentFrame ) followBarText:SetAllPoints() characterStatusBar["followBarText"] = followBarText EMA:SettingsUpdateFollowText( characterName ) --, UnitLevel( Ambiguate( characterName, "none" ) ), nil, nil ) + -- Set the experience bar. local experienceName = EMA.globalFramePrefix.."ExperienceBar" local experienceBar = CreateFrame( "StatusBar", experienceName, parentFrame, "AnimatedStatusBarTemplate" ) --"TextStatusBar,SecureActionButtonTemplate" ) @@ -573,6 +585,7 @@ function EMA:CreateEMATeamStatusBar( characterName, parentFrame ) experienceBarText.playerLevel = 1 characterStatusBar["experienceBarText"] = experienceBarText EMA:UpdateExperienceStatus( characterName, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil ) + -- Set the artifactXP bar. local experienceArtName = EMA.globalFramePrefix.."ExperienceArtBar" local experienceArtBar = CreateFrame( "StatusBar", experienceArtName, parentFrame, "AnimatedStatusBarTemplate" ) --"TextStatusBar,SecureActionButtonTemplate" ) @@ -599,36 +612,8 @@ function EMA:CreateEMATeamStatusBar( characterName, parentFrame ) experienceArtBarText.artifactPointsSpent = 1 experienceArtBarText.artifactPointsAvailable = 0 characterStatusBar["experienceArtBarText"] = experienceArtBarText - EMA:UpdateExperienceStatus( characterName, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil ) ---[[ - -- Set the HonorXP bar. - local experienceHonorName = EMA.globalFramePrefix.."ExperienceHonorBar" - local experienceHonorBar = CreateFrame( "StatusBar", experienceHonorName, parentFrame, "AnimatedStatusBarTemplate" ) --"TextStatusBar,SecureActionButtonTemplate" ) - experienceHonorBar.backgroundTexture = experienceArtBar:CreateTexture( experienceArtName.."BackgroundTexture", "ARTWORK" ) - experienceHonorBar.backgroundTexture:SetColorTexture( 1.0, 0.0, 0.0, 0.15 ) - experienceHonorBar:SetStatusBarTexture( statusBarTexture ) - experienceHonorBar:GetStatusBarTexture():SetHorizTile( false ) - experienceHonorBar:GetStatusBarTexture():SetVertTile( false ) - experienceHonorBar:SetMinMaxValues( 0, 100 ) - experienceHonorBar:SetValue( 100 ) - experienceHonorBar:SetFrameStrata( "LOW" ) - local experienceHonorBarClick = CreateFrame( "CheckButton", experienceHonorName.."Click", parentFrame, "SecureActionButtonTemplate" ) - experienceHonorBarClick:SetAttribute( "unit", Ambiguate( characterName, "all" ) ) - experienceHonorBarClick:SetFrameStrata( "MEDIUM" ) - characterStatusBar["experienceHonorBar"] = experienceHonorBar - characterStatusBar["experienceHonorBarClick"] = experienceHonorBarClick - local experienceHonorBarText = experienceHonorBar:CreateFontString( experienceHonorName.."Text", "OVERLAY", "GameFontNormal" ) - experienceHonorBarText:SetTextColor( 1.00, 1.00, 1.00, 1.00 ) - experienceHonorBarText:SetFont( textFont , textSize, "OUTLINE") - experienceHonorBarText:SetAllPoints() - experienceHonorBarText.honorLevel = 0 - experienceHonorBarText.honorXP = 0 - experienceHonorBarText.honorMax = 100 - experienceHonorBarText.honorExhaustionStateID = 1 - experienceHonorBarText.canPrestige = "N/A" - characterStatusBar["experienceHonorBarText"] = experienceHonorBarText EMA:UpdateExperienceStatus( characterName, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil ) -]] + -- Set the reputation bar. local reputationName = EMA.globalFramePrefix.."ReputationBar" local reputationBar = CreateFrame( "StatusBar", reputationName, parentFrame, "AnimatedStatusBarTemplate" ) --"TextStatusBar,SecureActionButtonTemplate" ) @@ -656,8 +641,8 @@ function EMA:CreateEMATeamStatusBar( characterName, parentFrame ) reputationBarText.reputationBarValue = 100 characterStatusBar["reputationBarText"] = reputationBarText EMA:UpdateReputationStatus( characterName, nil, nil, nil ) - -- Set the health bar. + -- Set the health bar. local healthName = EMA.globalFramePrefix.."HealthBar" local healthBar = CreateFrame( "StatusBar", healthName, parentFrame, "TextStatusBar","SecureActionButtonTemplate" ) healthBar.backgroundTexture = healthBar:CreateTexture( healthName.."BackgroundTexture", "ARTWORK" ) @@ -669,8 +654,6 @@ function EMA:CreateEMATeamStatusBar( characterName, parentFrame ) healthBar:SetValue( 100 ) healthBar:SetFrameStrata( "LOW" ) healthBar:SetAlpha( 1 ) - - local healthIncomingName = EMA.globalFramePrefix.."HealthIncomingBar" local healthIncomingBar = CreateFrame( "StatusBar", healthIncomingName, parentFrame, "TextStatusBar","SecureActionButtonTemplate" ) healthIncomingBar.backgroundTexture = healthIncomingBar:CreateTexture( healthIncomingName.."BackgroundTexture", "ARTWORK" ) @@ -683,8 +666,7 @@ function EMA:CreateEMATeamStatusBar( characterName, parentFrame ) healthIncomingBar:SetFrameStrata( "BACKGROUND" ) healthIncomingBar:SetAlpha( 1 ) - -- Set the heal Incoming bar - + -- Set the heal Incoming bar local healthBarClick = CreateFrame( "CheckButton", healthName.."Click"..characterName, parentFrame, "SecureActionButtonTemplate" ) healthBarClick:SetAttribute( "unit", Ambiguate( characterName, "all" ) ) healthBarClick:SetFrameStrata( "MEDIUM" ) @@ -701,7 +683,6 @@ function EMA:CreateEMATeamStatusBar( characterName, parentFrame ) characterStatusBar["healthBarText"] = healthBarText EMA:UpdateHealthStatus( characterName, nil, nil ) - -- Set the power bar. local powerName = EMA.globalFramePrefix.."PowerBar" local powerBar = CreateFrame( "StatusBar", powerName, parentFrame, "TextStatusBar","SecureActionButtonTemplate" ) @@ -727,6 +708,7 @@ function EMA:CreateEMATeamStatusBar( characterName, parentFrame ) powerBarText.playerMaxPower = 100 characterStatusBar["powerBarText"] = powerBarText EMA:UpdatePowerStatus( characterName, nil, nil, nil ) + -- Set the Combo Points bar. local comboName = EMA.globalFramePrefix.."ComboBar" local comboBar = CreateFrame( "StatusBar", comboName, parentFrame, "TextStatusBar","SecureActionButtonTemplate" ) @@ -753,6 +735,23 @@ function EMA:CreateEMATeamStatusBar( characterName, parentFrame ) comboBarText.playerMaxCombo = 5 characterStatusBar["comboBarText"] = comboBarText EMA:UpdateComboStatus( characterName, nil, nil ) + + -- Set the GCD Bar. + local gCDFrameName = EMA.globalFramePrefix.."GCDFrame" + local gCDFrame = CreateFrame( "Frame", gCDFrameName, parentFrame ) + --gCDFrame.backgroundTexture = gCDFrame:CreateTexture( gCDFrameName.."BackgroundTexture", "ARTWORK" ) + --gCDFrame.backgroundTexture:SetColorTexture( 0.58, 0.0, 0.55, 0.15 ) + --gCDFrame:SetFrameStrata( "LOW" ) + --gCDFrame:SetAlpha( 1 ) + characterStatusBar["GCDFrame"] = gCDFrame + + local gCDFrameText = gCDFrame:CreateFontString( gCDFrameName.."Text", "OVERLAY", "GameFontNormal" ) + gCDFrameText:SetTextColor( 1.00, 1.00, 0.0, 1.00 ) + gCDFrameText:SetFont( textFont , textSize, "OUTLINE") + gCDFrameText:SetAllPoints() + characterStatusBar["GCDFrameText"] = gCDFrameText + EMA:SetTrGCOpt() + -- Add the health and power click bars to ClickCastFrames for addons like Clique to use. --Ebony if Support for Clique if not on then default to target unit --TODO there got to be a better way to doing this for sure but right now i can not be assed to do this for now you need to reload the UI when turning off and on clique support. @@ -764,7 +763,7 @@ function EMA:CreateEMATeamStatusBar( characterName, parentFrame ) ClickCastFrames[reputationBarClick] = true ClickCastFrames[healthBarClick] = true ClickCastFrames[powerBarClick] = true - ClickCastFrames[comboBarClick] = true + ClickCastFrames[comboBarClick] = true else portraitButtonClick:SetAttribute( "type1", "target") followBarClick:SetAttribute( "type1", "target") @@ -785,7 +784,6 @@ function EMA:HideEMATeamStatusBar( characterName ) EMA:CreateEMATeamStatusBar( characterName, parentFrame ) characterStatusBar = EMA.characterStatusBar[characterName] end - --if characterStatusBar ~= nil then -- Hide the bars. characterStatusBar["portraitButton"]:Hide() characterStatusBar["portraitButtonClick"]:Hide() @@ -794,9 +792,7 @@ function EMA:HideEMATeamStatusBar( characterName ) characterStatusBar["experienceBar"]:Hide() characterStatusBar["experienceBarClick"]:Hide() characterStatusBar["experienceArtBar"]:Hide() - characterStatusBar["experienceArtBarClick"]:Hide() --- characterStatusBar["experienceHonorBar"]:Hide() --- characterStatusBar["experienceHonorBarClick"]:Hide() + characterStatusBar["experienceArtBarClick"]:Hide() characterStatusBar["reputationBar"]:Hide() characterStatusBar["reputationBarClick"]:Hide() characterStatusBar["healthBar"]:Hide() @@ -806,7 +802,7 @@ function EMA:HideEMATeamStatusBar( characterName ) characterStatusBar["powerBarClick"]:Hide() characterStatusBar["comboBar"]:Hide() characterStatusBar["comboBarClick"]:Hide() - --end + characterStatusBar["GCDFrame"]:Hide() end @@ -822,6 +818,7 @@ function EMA:UpdateEMATeamStatusBar( characterName, characterPosition ) local characterHeight = GetCharacterHeight() local characterWidth = GetCharacterWidth() local positionLeft = 0 + local spaceing = 10 local positionTop = -EMA.db.teamListTitleHeight - (EMA.db.teamListVerticalSpacing * 2) local charactersPerRow = EMA.db.charactersPerRow if EMA.db.teamListHorizontal == true then @@ -964,28 +961,7 @@ function EMA:UpdateEMATeamStatusBar( characterName, characterPosition ) setArtLeft = positionLeft setArtTop = positionTop end - end - --[[if EMA.db.showHonorStatus == true then - --EMA:Print("ShowHonorXP") - showBarCount = showBarCount + 1 - if EMA.db.showXpStatus == true and EMA.db.showArtifactStatus == false then - showHonorBeforeBar = experienceBar - setHonorPoint = "BOTTOMLEFT" - setHonorLeft = 0 - setHonorTop = -1 - elseif EMA.db.showArtifactStatus == true then - showHonorBeforeBar = experienceArtBar - setHonorPoint = "BOTTOMLEFT" - setHonorLeft = 0 - setHonorTop = -1 - else - showHonorBeforeBar = parentFrame - setHonorPoint = "TOPLEFT" - setHonorLeft = positionLeft - setHonorTop = positionTop - end - end - ]] + end if EMA.db.showRepStatus == true then --EMA:Print("Show Reputation") showBarCount = showBarCount + 1 @@ -1001,13 +977,6 @@ function EMA:UpdateEMATeamStatusBar( characterName, characterPosition ) setRepPoint = "BOTTOMLEFT" setRepLeft = 0 setRepTop = -1 - --[[ elseif EMA.db.showHonorStatus == true then - --EMA:Print("Show Reputation 3") - showRepBeforeBar = experienceHonorBar - setRepPoint = "BOTTOMLEFT" - setRepLeft = 0 - setRepTop = -1 - ]] else --EMA:Print("Show Reputation 4") showRepBeforeBar = parentFrame @@ -1054,22 +1023,8 @@ function EMA:UpdateEMATeamStatusBar( characterName, characterPosition ) experienceArtBar:Hide() experienceArtBarClick:Hide() end - --[[ -- Honor - experienceHonorBar.backgroundTexture:SetAllPoints() - experienceHonorBar:SetWidth( EMA.db.experienceStatusWidth ) - experienceHonorBar:SetHeight( EMA.db.experienceStatusHeight / showBarCount ) - experienceHonorBar:SetPoint( "TOPLEFT", showHonorBeforeBar , setHonorPoint, setHonorLeft, setHonorTop ) - experienceHonorBarClick:SetPoint( "TOPLEFT", showHonorBeforeBar , setHonorPoint, setHonorLeft, setHonorTop ) - experienceHonorBarClick:SetWidth( EMA.db.experienceStatusWidth ) - experienceHonorBarClick:SetHeight( EMA.db.experienceStatusHeight / showBarCount ) - if EMA.db.showHonorStatus == true then - experienceHonorBar:Show() - experienceHonorBarClick:Show() - else - experienceHonorBar:Hide() - experienceHonorBarClick:Hide() - end - ]] --rep + + --rep reputationBar.backgroundTexture:SetAllPoints() reputationBar:SetWidth( EMA.db.experienceStatusWidth ) reputationBar:SetHeight( EMA.db.experienceStatusHeight / showBarCount ) @@ -1098,8 +1053,6 @@ function EMA:UpdateEMATeamStatusBar( characterName, characterPosition ) experienceBarClick:Hide() experienceArtBar:Hide() experienceArtBarClick:Hide() - -- experienceHonorBar:Hide() - -- experienceHonorBarClick:Hide() end -- Display the health bar. local healthBar = characterStatusBar["healthBar"] @@ -1185,7 +1138,25 @@ function EMA:UpdateEMATeamStatusBar( characterName, characterPosition ) else comboBar:Hide() comboBarClick:Hide() - end + end + + -- Display the GCD. + local GCDFrame = characterStatusBar["GCDFrame"] + if EMA.db.showGCDFrame == true then + --GCDFrame.backgroundTexture:SetAllPoints() + GCDFrame:SetWidth( EMA.db.gCDFrameWidth * EMA.db.gCDFrameHeight + EMA.db.gCDFrameHeight) + GCDFrame:SetHeight( EMA.db.gCDFrameHeight ) + GCDFrame:ClearAllPoints() + GCDFrame:SetPoint( "TOPLEFT", parentFrame, "TOPLEFT", positionLeft, positionTop ) + GCDFrame:Show() + if EMA.db.barsAreStackedVertically == true then + positionTop = positionTop - EMA.db.gCDFrameHeight - EMA.db.barVerticalSpacing + else + positionLeft = positionLeft + (EMA.db.gCDFrameWidth * EMA.db.gCDFrameHeight + EMA.db.gCDFrameHeight ) + EMA.db.teamListHorizontalSpacing + end + else + GCDFrame:Hide() + end end ------------------------------------------------------------------------------------------------------------- @@ -1456,7 +1427,7 @@ local function SettingsCreateDisplayOptions( top ) movingTop, L["HEIGHT"] ) - EMA.settingsControl.displayOptionsFollowStatusHeightSlider:SetSliderValues( 15, 100, 1 ) + EMA.settingsControl.displayOptionsFollowStatusHeightSlider:SetSliderValues( 15, 50, 1 ) EMA.settingsControl.displayOptionsFollowStatusHeightSlider:SetCallback( "OnValueChanged", EMA.SettingsChangeFollowStatusHeight ) movingTop = movingTop - sliderHeight - sectionSpacing -- Create experience status. @@ -1507,18 +1478,7 @@ local function SettingsCreateDisplayOptions( top ) L["ARTIFACT_BAR"], EMA.SettingsToggleShowArtifactStatus, L["ARTIFACT_BAR_HELP"] - ) ---[[ - EMA.settingsControl.displayOptionsCheckBoxShowHonorStatus = EMAHelperSettings:CreateCheckBox( - EMA.settingsControl, - thirdWidth, - left3, - movingTop, - L["HONORXP"], - EMA.SettingsToggleShowHonorStatus, - L["HONORXP_HELP"] - ) -]] + ) movingTop = movingTop - checkBoxHeight - verticalSpacing EMA.settingsControl.displayOptionsCheckBoxShowRepStatus = EMAHelperSettings:CreateCheckBox( EMA.settingsControl, @@ -1546,7 +1506,7 @@ local function SettingsCreateDisplayOptions( top ) movingTop, L["HEIGHT"] ) - EMA.settingsControl.displayOptionsExperienceStatusHeightSlider:SetSliderValues( 15, 100, 1 ) + EMA.settingsControl.displayOptionsExperienceStatusHeightSlider:SetSliderValues( 15, 60, 1 ) EMA.settingsControl.displayOptionsExperienceStatusHeightSlider:SetCallback( "OnValueChanged", EMA.SettingsChangeExperienceStatusHeight ) movingTop = movingTop - sliderHeight - sectionSpacing -- Create health status. @@ -1606,7 +1566,7 @@ local function SettingsCreateDisplayOptions( top ) movingTop, L["HEIGHT"] ) - EMA.settingsControl.displayOptionsHealthStatusHeightSlider:SetSliderValues( 15, 100, 1 ) + EMA.settingsControl.displayOptionsHealthStatusHeightSlider:SetSliderValues( 15, 60, 1 ) EMA.settingsControl.displayOptionsHealthStatusHeightSlider:SetCallback( "OnValueChanged", EMA.SettingsChangeHealthStatusHeight ) movingTop = movingTop - sliderHeight - sectionSpacing -- Create power status. @@ -1656,7 +1616,7 @@ local function SettingsCreateDisplayOptions( top ) movingTop, L["HEIGHT"] ) - EMA.settingsControl.displayOptionsPowerStatusHeightSlider:SetSliderValues( 10, 100, 1 ) + EMA.settingsControl.displayOptionsPowerStatusHeightSlider:SetSliderValues( 10, 60, 1 ) EMA.settingsControl.displayOptionsPowerStatusHeightSlider:SetCallback( "OnValueChanged", EMA.SettingsChangePowerStatusHeight ) movingTop = movingTop - sliderHeight - sectionSpacing -- Create Combo Point status. @@ -1706,9 +1666,53 @@ local function SettingsCreateDisplayOptions( top ) movingTop, L["HEIGHT"] ) - EMA.settingsControl.displayOptionsComboStatusHeightSlider:SetSliderValues( 10, 100, 1 ) + EMA.settingsControl.displayOptionsComboStatusHeightSlider:SetSliderValues( 10, 60, 1 ) EMA.settingsControl.displayOptionsComboStatusHeightSlider:SetCallback( "OnValueChanged", EMA.SettingsChangeComboStatusHeight ) movingTop = movingTop - sliderHeight - sectionSpacing + -- Create GCD Frame. + EMAHelperSettings:CreateHeading( EMA.settingsControl, L["GCD_FRAME_HEADER"], movingTop, true ) + movingTop = movingTop - headingHeight + EMA.settingsControl.displayOptionsCheckBoxShowGcdFrame = EMAHelperSettings:CreateCheckBox( + EMA.settingsControl, + thirdWidth, + left, + movingTop, + L["SHOW"], + EMA.SettingsToggleShowGcdFrame, + L["GCD_FRAME"] + ) +--[[ + EMA.settingsControl.displayOptionsCheckBoxShowGcdFrameToolTips = EMAHelperSettings:CreateCheckBox( + EMA.settingsControl, + thirdWidth, + left2, + movingTop, + L["TOOLTIPS"], + EMA.SettingsToggleShowGcdFrameToolTips, + L["TOOLTIPS_HELP"] + ) +]] + movingTop = movingTop - checkBoxHeight - verticalSpacing + EMA.settingsControl.displayOptionsGcdFrameWidthSlider = EMAHelperSettings:CreateSlider( + EMA.settingsControl, + halfWidthSlider, + left, + movingTop, + L["WIDTH"] + ) + EMA.settingsControl.displayOptionsGcdFrameWidthSlider:SetSliderValues( 1, 8 , 1 ) + EMA.settingsControl.displayOptionsGcdFrameWidthSlider:SetCallback( "OnValueChanged", EMA.SettingsChangeGcdFrameWidth ) + EMA.settingsControl.displayOptionsGcdFrameHeightSlider = EMAHelperSettings:CreateSlider( + EMA.settingsControl, + halfWidthSlider, + column2left, + movingTop, + L["HEIGHT"] + ) + EMA.settingsControl.displayOptionsGcdFrameHeightSlider:SetSliderValues( 15, 60 , 1 ) + EMA.settingsControl.displayOptionsGcdFrameHeightSlider:SetCallback( "OnValueChanged", EMA.SettingsChangeGcdFrameHeight ) + + movingTop = movingTop - sliderHeight - sectionSpacing return movingTop end @@ -1768,7 +1772,6 @@ function EMA:SettingsRefresh() EMA.settingsControl.displayOptionsCheckBoxShowExperienceStatus:SetValue( EMA.db.showExperienceStatus ) EMA.settingsControl.displayOptionsCheckBoxShowXpStatus:SetValue( EMA.db.showXpStatus ) EMA.settingsControl.displayOptionsCheckBoxShowArtifactStatus:SetValue( EMA.db.showArtifactStatus ) --- EMA.settingsControl.displayOptionsCheckBoxShowHonorStatus:SetValue( EMA.db.showHonorStatus ) EMA.settingsControl.displayOptionsCheckBoxShowRepStatus:SetValue( EMA.db.showRepStatus ) EMA.settingsControl.displayOptionsCheckBoxShowExperienceStatusValues:SetValue( EMA.db.experienceStatusShowValues ) EMA.settingsControl.displayOptionsCheckBoxShowExperienceStatusPercentage:SetValue( EMA.db.experienceStatusShowPercentage ) @@ -1790,9 +1793,12 @@ function EMA:SettingsRefresh() EMA.settingsControl.displayOptionsCheckBoxShowComboStatusPercentage:SetValue( EMA.db.comboStatusShowPercentage ) EMA.settingsControl.displayOptionsComboStatusWidthSlider:SetValue( EMA.db.comboStatusWidth ) EMA.settingsControl.displayOptionsComboStatusHeightSlider:SetValue( EMA.db.comboStatusHeight ) + EMA.settingsControl.displayOptionsCheckBoxShowGcdFrame:SetValue( EMA.db.showGCDFrame ) +-- EMA.settingsControl.displayOptionsCheckBoxShowGcdFrameToolTips:SetValue( EMA.db.gCDFrameToolTips ) + EMA.settingsControl.displayOptionsGcdFrameWidthSlider:SetValue( EMA.db.gCDFrameWidth ) + EMA.settingsControl.displayOptionsGcdFrameHeightSlider:SetValue( EMA.db.gCDFrameHeight ) EMA.settingsControl.displayOptionsBackgroundColourPicker:SetColor( EMA.db.frameBackgroundColourR, EMA.db.frameBackgroundColourG, EMA.db.frameBackgroundColourB, EMA.db.frameBackgroundColourA ) EMA.settingsControl.displayOptionsBorderColourPicker:SetColor( EMA.db.frameBorderColourR, EMA.db.frameBorderColourG, EMA.db.frameBorderColourB, EMA.db.frameBorderColourA ) --- EMA.settingsControl.displayOptionsCheckBoxShowEquippedOnly:SetValue( EMA.db.ShowEquippedOnly ) -- State. -- Trying to change state in combat lockdown causes taint. Let's not do that. Eventually it would be nice to have a "proper state driven team display", -- but this workaround is enough for now. @@ -1821,7 +1827,6 @@ function EMA:SettingsRefresh() EMA.settingsControl.displayOptionsCheckBoxShowExperienceStatus:SetDisabled( not EMA.db.showTeamList ) EMA.settingsControl.displayOptionsCheckBoxShowXpStatus:SetDisabled( not EMA.db.showTeamList or not EMA.db.showExperienceStatus) EMA.settingsControl.displayOptionsCheckBoxShowArtifactStatus:SetDisabled( not EMA.db.showTeamList or not EMA.db.showExperienceStatus) --- EMA.settingsControl.displayOptionsCheckBoxShowHonorStatus:SetDisabled( not EMA.db.showTeamList or not EMA.db.showExperienceStatus) EMA.settingsControl.displayOptionsCheckBoxShowRepStatus:SetDisabled( not EMA.db.showTeamList or not EMA.db.showExperienceStatus ) EMA.settingsControl.displayOptionsCheckBoxShowExperienceStatusValues:SetDisabled( not EMA.db.showTeamList or not EMA.db.showExperienceStatus ) EMA.settingsControl.displayOptionsCheckBoxShowExperienceStatusPercentage:SetDisabled( not EMA.db.showTeamList or not EMA.db.showExperienceStatus ) @@ -1843,6 +1848,10 @@ function EMA:SettingsRefresh() EMA.settingsControl.displayOptionsCheckBoxShowComboStatusPercentage:SetDisabled( not EMA.db.showTeamList or not EMA.db.showComboStatus) EMA.settingsControl.displayOptionsComboStatusWidthSlider:SetDisabled( not EMA.db.showTeamList or not EMA.db.showComboStatus) EMA.settingsControl.displayOptionsComboStatusHeightSlider:SetDisabled( not EMA.db.showTeamList or not EMA.db.showComboStatus) + EMA.settingsControl.displayOptionsCheckBoxShowGcdFrame:SetDisabled( not EMA.db.showTeamList ) +-- EMA.settingsControl.displayOptionsCheckBoxShowGcdFrameToolTips:SetDisabled( not EMA.db.showTeamList or not EMA.db.showGCDFrame ) + EMA.settingsControl.displayOptionsGcdFrameWidthSlider:SetDisabled( not EMA.db.showTeamList or not EMA.db.showGCDFrame) + EMA.settingsControl.displayOptionsGcdFrameWidthSlider:SetDisabled( not EMA.db.showTeamList or not EMA.db.showGCDFrame) EMA.settingsControl.displayOptionsBackgroundColourPicker:SetDisabled( not EMA.db.showTeamList ) EMA.settingsControl.displayOptionsBorderColourPicker:SetDisabled( not EMA.db.showTeamList ) if EMA.teamListCreated == true then @@ -1857,6 +1866,7 @@ function EMA:SettingsRefresh() EMA:SettingsUpdateHealthAll() EMA:SettingsUpdatePowerAll() EMA:SettingsUpdateComboAll() + EMA:SetTrGCOpt() end else EMA.updateSettingsAfterCombat = true @@ -1892,7 +1902,6 @@ function EMA:EMAOnSettingsReceived( characterName, settings ) EMA.db.showExperienceStatus = settings.showExperienceStatus EMA.db.showXpStatus = settings.showXpStatus EMA.db.showArtifactStatus = settings.showArtifactStatus --- EMA.db.showHonorStatus = settings.showHonorStatus EMA.db.showRepStatus = settings.showRepStatus EMA.db.experienceStatusWidth = settings.experienceStatusWidth EMA.db.experienceStatusHeight = settings.experienceStatusHeight @@ -1914,6 +1923,10 @@ function EMA:EMAOnSettingsReceived( characterName, settings ) EMA.db.comboStatusHeight = settings.comboStatusHeight EMA.db.comboStatusShowValues = settings.comboStatusShowValues EMA.db.comboStatusShowPercentage = settings.comboStatusShowPercentage + EMA.db.showGCDFrame = settings.showGCDFrame + EMA.db.gCDFrameWidth = settings.gCDFrameWidth + EMA.db.gCDFrameHeight = settings.gCDFrameHeight + EMA.db.gCDFrameToolTips = settings.gCDFrameToolTips EMA.db.frameAlpha = settings.frameAlpha EMA.db.framePoint = settings.framePoint EMA.db.frameRelativePoint = settings.frameRelativePoint @@ -2047,12 +2060,6 @@ function EMA:SettingsToggleShowFollowStatusName( event, checked ) EMA:SettingsRefresh() end -function EMA:SettingsToggleShowToolTipInfo( event, checked ) - EMA.db.showToolTipInfo = checked - EMA:SettingsRefresh() -end - - function EMA:SettingsChangeFollowStatusWidth( event, value ) EMA.db.followStatusWidth = tonumber( value ) EMA:SettingsRefresh() @@ -2078,12 +2085,7 @@ function EMA:SettingsToggleShowArtifactStatus( event, checked ) EMA.db.showArtifactStatus = checked EMA:SettingsRefresh() end ---[[ -function EMA:SettingsToggleShowHonorStatus( event, checked ) - EMA.db.showHonorStatus = checked - EMA:SettingsRefresh() -end -]] + function EMA:SettingsToggleShowRepStatus( event, checked ) EMA.db.showRepStatus = checked EMA:SettingsRefresh() @@ -2190,6 +2192,27 @@ function EMA:SettingsChangeComboStatusHeight( event, value ) EMA:SettingsRefresh() end +function EMA:SettingsToggleShowGcdFrame( event, checked ) + --EMA:Print("test") + EMA.db.showGCDFrame = checked + EMA:SettingsRefresh() +end + +function EMA:SettingsToggleShowGcdFrameToolTips( event, checked ) + EMA.db.gCDFrameToolTips = checked + EMA:SettingsRefresh() +end + +function EMA:SettingsChangeGcdFrameWidth( event, value ) + EMA.db.gCDFrameWidth = tonumber( value ) + EMA:SettingsRefresh() +end + +function EMA:SettingsChangeGcdFrameHeight( event, value ) + EMA.db.gCDFrameHeight = tonumber( value ) + EMA:SettingsRefresh() +end + function EMA:SettingsBackgroundColourPickerChanged( event, r, g, b, a ) EMA.db.frameBackgroundColourR = r EMA.db.frameBackgroundColourG = g @@ -2206,13 +2229,6 @@ function EMA:SettingsBorderColourPickerChanged( event, r, g, b, a ) EMA:SettingsRefresh() end ---[[ -function EMA:SettingsToggleShowEquippedOnly( event, checked ) - EMA.db.ShowEquippedOnly = checked - EMA:SettingsRefresh() -end ]] - - ------------------------------------------------------------------------------------------------------------- -- Commands. ------------------------------------------------------------------------------------------------------------- @@ -2542,16 +2558,6 @@ function EMA:UpdateExperienceStatus( characterName, playerExperience, playerMaxE if characterStatusBar["experienceArtBar"] == nil then return end ---[[ - local experienceHonorBarText = characterStatusBar["experienceHonorBarText"] - if characterStatusBar["experienceHonorBarText"] == nil then - return - end - local experienceHonorBar = characterStatusBar["experienceHonorBar"] - if characterStatusBar["experienceHonorBar"] == nil then - return - end -]] if playerExperience == nil then playerExperience = experienceBarText.playerExperience end @@ -2870,7 +2876,7 @@ end function EMA:UpdateHealthStatus( characterName, playerHealth, playerMaxHealth, inComingHeal, class ) --EMA:Print("testUpdate", characterName, playerHealth, playerMaxHealth, inComingHeal, class ) - if characterName == nil then + if characterName == nil then return end if CanDisplayTeamList() == false then @@ -3235,6 +3241,82 @@ function EMA:SetStatusBarColourForCombo( comboBar, Class ) end end + + +------------------------------------------------------------------------------------------------------------- +-- Last Spell Bar Updates. +------------------------------------------------------------------------------------------------------------- + +function EMA:UNIT_SPELLCAST_START( event, unitTarget , castGUID, spellID ) + EMA:UpdateSpellStatus( unitTarget, spellID ) +end + +function EMA:UNIT_SPELLCAST_SUCCEEDED( event, unitTarget , castGUID, spellID ) + EMA:UpdateSpellStatus( unitTarget , spellID ) +end + +function EMA:UNIT_SPELLCAST_STOP( event, unitTarget , castGUID, spellID ) + EMA:UpdateSpellStatus( unitTarget , spellID ) +end + +function EMA:UNIT_SPELLCAST_CHANNEL_STOP( event, unitTarget , castGUID, spellID ) +EMA:UpdateSpellStatus( unitTarget , spellID ) +end + +function EMA:UpdateSpellStatus( unitTarget, spellID ) + if EMA.db.showTeamList == false and EMA.db.showGCDFrame == false then + return + end + local characterName = UnitName( unitTarget ) + characterName = EMAUtilities:AddRealmToNameIfMissing( characterName ) + local characterStatusBar = EMA.characterStatusBar[characterName] + if characterStatusBar == nil then + return + end + local GCDFrame = characterStatusBar["GCDFrame"] + local GCDFrameText = characterStatusBar["GCDFrameText"] + --EMA:Print("testUpdate", unitTarget ) + if IsAddOnLoaded( "TrufiGCD" ) == true then + local i, _ = TrGCDPlayerDetect(unitTarget) + --EMA:Print("test", unitTarget, i ) + if i > 0 and i <= 5 then + -- setpoint + TrGCDQueueFr[i]:ClearAllPoints() + TrGCDQueueFr[i]:SetPoint( "LEFT", GCDFrame, "LEFT", 0 , 0 ) + end + else + GCDFrameText:SetText( L["CAN_NOT_FIND_TRUFIGCD_ADDON"] ) + end +end + +function EMA:SetTrGCOpt() + if IsAddOnLoaded( "TrufiGCD" ) == true then + local TimeGcd = 1.6 + for i=1,5 do + -- enable + TrGCDQueueOpt[i].enable = true + TrufiGCDGlSave["TrGCDQueueFr"][i]["enable"] = true + -- fade + TrGCDQueueOpt[i].fade = "Right" + TrufiGCDGlSave["TrGCDQueueFr"][i]["fade"] = "Right" + -- spells ( width ) + TrGCDQueueOpt[i].width = EMA.db.gCDFrameWidth + TrufiGCDGlSave["TrGCDQueueFr"][i]["width"] = 3 + TrGCDSpWidthChanged( i, EMA.db.gCDFrameWidth ) + -- Icon Size! + --EMA:Print("sizetest", TrGCDQueueOpt[i].size, EMA.db.comboStatusHeight ) + TrGCDQueueOpt[i].size = EMA.db.gCDFrameHeight + TrufiGCDGlSave["TrGCDQueueFr"][i]["size"] = EMA.db.gCDFrameHeight + TrGCDQueueOpt[i].speed = TrGCDQueueOpt[i].size / TimeGcd + TrufiGCDGlSave["TrGCDQueueFr"][i]["speed"] = TrGCDQueueOpt[i].speed + TrGCDResizeQFr(i) + if TrGCDQueueOpt[i].size ~= EMA.db.gCDFrameHeight then + TrGCDClear(i) + end + TrGCDLoadSettings() + end + end +end ------------------------------------------------------------------------------------------------------------- -- Addon initialization, enabling and disabling. ------------------------------------------------------------------------------------------------------------- @@ -3254,6 +3336,7 @@ function EMA:OnInitialize() EMA:SetTeamListVisibility() -- Is Following to stop spam EMA.isFollowing = false + EMA:SetTrGCOpt() end -- Called when the addon is enabled. @@ -3268,24 +3351,20 @@ function EMA:OnEnable() EMA:RegisterEvent( "UNIT_HEALTH" ) EMA:RegisterEvent( "UNIT_MAXHEALTH" ) EMA:RegisterEvent( "UNIT_HEAL_PREDICTION" ) - --TODO Adds support for 8.0.x - if EMAPrivate.Core.isBetaBuild() == true then - EMA:RegisterEvent( "UNIT_POWER_UPDATE", "UNIT_POWER" ) - else - EMA:RegisterEvent( "UNIT_POWER", "UNIT_POWER" ) - end + EMA:RegisterEvent( "UNIT_POWER_UPDATE", "UNIT_POWER" ) EMA:RegisterEvent( "UNIT_MAXPOWER", "UNIT_POWER" ) EMA:RegisterEvent( "UNIT_DISPLAYPOWER" ) EMA:RegisterEvent( "CHAT_MSG_COMBAT_FACTION_CHANGE" ) EMA:RegisterEvent( "UNIT_POWER_FREQUENT") EMA:RegisterEvent( "RUNE_POWER_UPDATE" ) EMA:RegisterEvent( "PLAYER_TALENT_UPDATE") - --EMA:RegisterEvent( "HONOR_XP_UPDATE" ) - --EMA:RegisterEvent( "HONOR_LEVEL_UPDATE" ) - --EMA:RegisterEvent( "HONOR_PRESTIGE_UPDATE" ) EMA:RegisterEvent( "GROUP_ROSTER_UPDATE" ) EMA:RegisterEvent( "ARTIFACT_XP_UPDATE" ) EMA:RegisterEvent("UNIT_PORTRAIT_UPDATE") + EMA:RegisterEvent("UNIT_SPELLCAST_START") + EMA:RegisterEvent("UNIT_SPELLCAST_SUCCEEDED") + EMA:RegisterEvent("UNIT_SPELLCAST_STOP") + EMA:RegisterEvent("UNIT_SPELLCAST_CHANNEL_STOP") EMA.SharedMedia.RegisterCallback( EMA, "LibSharedMedia_Registered" ) EMA.SharedMedia.RegisterCallback( EMA, "LibSharedMedia_SetGlobal" ) EMA:RegisterMessage( EMAApi.MESSAGE_TEAM_CHARACTER_ADDED, "OnCharactersChanged" ) @@ -3294,7 +3373,6 @@ function EMA:OnEnable() EMA:RegisterMessage( EMAApi.MESSAGE_TEAM_MASTER_CHANGED, "OnMasterChanged" ) EMA:RegisterMessage( EMAApi.MESSAGE_CHARACTER_ONLINE, "OnCharactersChanged") EMA:RegisterMessage( EMAApi.MESSAGE_CHARACTER_OFFLINE, "OnCharactersChanged") - EMA:SecureHook( "SetWatchedFactionIndex" ) EMA:ScheduleTimer( "RefreshTeamListControls", 3 ) EMA:ScheduleTimer( "SendExperienceStatusUpdateCommand", 8 ) @@ -3378,5 +3456,4 @@ end function EMA:OnCharactersChanged() EMA:RefreshTeamListControls() -end - +end \ No newline at end of file diff --git a/Modules/Follow.lua b/Modules/Follow.lua index fc85306..2b529c9 100644 --- a/Modules/Follow.lua +++ b/Modules/Follow.lua @@ -983,14 +983,14 @@ function EMA:PLAYER_REGEN_DISABLED() end end end - if EMA.db.doNotWarnFollowPvP == true then + if EMA.db.warnFollowPvP == true then EMA.warnFollowPvPCombat = true end end function EMA:PVP_FOLLOW(event, arg1, message, ... ) --EMA:Print("test", message, EMA.warnFollowPvPCombat ) - if EMA.db.doNotWarnFollowPvP == false and EMA.db.warnWhenFollowBreaks == false then + if EMA.db.warnFollowPvP == false and EMA.db.warnWhenFollowBreaks == false then return end if message == ERR_INVALID_FOLLOW_TARGET_PVP_COMBAT or message == ERR_INVALID_FOLLOW_PVP_COMBAT then diff --git a/Modules/Information.lua b/Modules/Information.lua index a076141..056db2b 100644 --- a/Modules/Information.lua +++ b/Modules/Information.lua @@ -28,7 +28,7 @@ EMA.SharedMedia = LibStub( "LibSharedMedia-3.0" ) -- Constants and Locale for this module. EMA.moduleName = "Information" -EMA.settingsDatabaseName = "CurrProfileDB" +EMA.settingsDatabaseName = "InformationProfileDB" EMA.chatCommand = "ema-info" local L = LibStub( "AceLocale-3.0" ):GetLocale( "Core" ) EMA.parentDisplayName = L["DISPLAY"] @@ -95,14 +95,20 @@ EMA.currTypes.PrismaticManapearl = 1721 --8.3 EMA.currTypes.CoalescingVisions = 1755 EMA.currTypes.CorruptedMementos = 1719 -EMA.currTypes.echoesOfNyalotha = 1803 +EMA.currTypes.EchoesOfNyalotha = 1803 + +--9.0 +EMA.currTypes.Honor = 1792 -------------------------------------- End of edit -------------------------------------------------------------- function EMA:CurrencyIconAndName( id ) - local fullName, amount, icon, earnedThisWeek, weeklyMax, totalMax, isDiscovered, quality = GetCurrencyInfo(id) - local currName = strconcat(" |T"..icon..":20|t", L[" "]..fullName) - return currName + local fullName, amount, icon, earnedThisWeek, weeklyMax, totalMax, isDiscovered, quality = C_CurrencyInfo.GetCurrencyInfo(id) + ---EMA:Print("test", fullName, icon) + if icon ~= nil then + local currName = strconcat(" |T"..icon..":20|t", L[" "]..fullName) + return currName + end end @@ -732,7 +738,6 @@ function EMA:OnInitialize() EMA:SettingsRefresh() -- Create the currency list frame. EMA:CreateEMAToonCurrencyListFrame() - --EMA:CreateEMAToonCurrencyListFrameTwo() end -- Called when the addon is enabled. @@ -844,55 +849,6 @@ function EMA:MatchCurrValue(value) end end -function EMA:CreateEMAToonCurrencyListFrameTwo() - local frameTwo = AceGUI:Create( "Frame" ) - frameTwo:SetTitle( "test" ) - frameTwo:SetWidth(800) - frameTwo:SetHeight(650) - frameTwo:SetLayout("Fill") - - - - local containerWidgetSettings = AceGUI:Create( "SimpleGroup" ) - containerWidgetSettings:SetLayout( "JambaFill" ) - - local widgetSettingsHelp = AceGUI:Create( "ScrollFrame" ) - widgetSettingsHelp:SetLayout( "Flow" ) - - local widgetSettings = AceGUI:Create( "ScrollFrame" ) - widgetSettings:SetLayout( "Flow" ) - - local tabGroupWidgetSettings = AceGUI:Create( "TabGroup" ) - -- Was 'Fill', which causes lockup, started at patch 4.1 (40100). Similar to http://forums.wowace.com/showthread.php?t=17872 - tabGroupWidgetSettings:SetLayout( "Flow" ) - tabGroupWidgetSettings:SetTabs( { {text=L["Options"], value="options"}, {text=L["Commands"], value="help"} } ) - - - - - - frameTwo:AddChild( tabGroupWidgetSettings ) - tabGroupWidgetSettings:AddChild( widgetSettings ) - - -- Callback function for OnGroupSelected - local function SelectGroup(container, event, group) - container:ReleaseChildren() - EMA:Print("test", container, event, group ) - if group == "options" then - EMA:Print("HELLO") - EMA:DrawGroup1(container) - - elseif group == "tab1" then - EMA:Print("Grp1") - DrawGroup1(container) - elseif group == "tab2" then - DrawGroup2(container) - end -end - tabGroupWidgetSettings:SetCallback("OnGroupSelected", SelectGroup) - EMAToonCurrencyListFrameTwo = frameTwo - -end function EMA:DrawGroup1(container) for characterName, currencyFrameCharacterInfo in pairs( EMA.currencyFrameCharacterInfo ) do @@ -904,7 +860,7 @@ end function EMA:CreateEMAToonCurrencyListFrame() -- The frame. - local frame = CreateFrame( "Frame", "EMAToonCurrencyListWindowFrame", UIParent ) + local frame = CreateFrame( "Frame", "EMAToonCurrencyListWindowFrame", UIParent, BackdropTemplateMixin and "BackdropTemplate" or nil ) frame.obj = EMA frame:SetFrameStrata( "LOW" ) frame:SetToplevel( false ) @@ -1112,37 +1068,37 @@ end function EMA:UpdateHendingText() local parentFrame = EMAToonCurrencyListFrame -- Type One - local name, amount, icon, earnedThisWeek, weeklyMax, totalMax, isDiscovered = GetCurrencyInfo( EMA.db.CcurrTypeOne ) + local name, amount, icon, earnedThisWeek, weeklyMax, totalMax, isDiscovered = C_CurrencyInfo.GetCurrencyInfo( EMA.db.CcurrTypeOne ) if icon ~= nil then local iconTextureString = strconcat(" |T"..icon..":20|t") parentFrame.TypeOneText:SetText( iconTextureString ) end -- Type Two - local name, amount, icon, earnedThisWeek, weeklyMax, totalMax, isDiscovered = GetCurrencyInfo( EMA.db.CcurrTypeTwo ) + local name, amount, icon, earnedThisWeek, weeklyMax, totalMax, isDiscovered = C_CurrencyInfo.GetCurrencyInfo( EMA.db.CcurrTypeTwo ) if icon ~= nil then local iconTextureString = strconcat(" |T"..icon..":20|t") parentFrame.TypeTwoText:SetText( iconTextureString ) end -- Type Three - local name, amount, icon, earnedThisWeek, weeklyMax, totalMax, isDiscovered = GetCurrencyInfo( EMA.db.CcurrTypeThree ) + local name, amount, icon, earnedThisWeek, weeklyMax, totalMax, isDiscovered = C_CurrencyInfo.GetCurrencyInfo( EMA.db.CcurrTypeThree ) if icon ~= nil then local iconTextureString = strconcat(" |T"..icon..":20|t") parentFrame.TypeThreeText:SetText( iconTextureString ) end -- Type Four - local name, amount, icon, earnedThisWeek, weeklyMax, totalMax, isDiscovered = GetCurrencyInfo( EMA.db.CcurrTypeFour ) + local name, amount, icon, earnedThisWeek, weeklyMax, totalMax, isDiscovered = C_CurrencyInfo.GetCurrencyInfo( EMA.db.CcurrTypeFour ) if icon ~= nil then local iconTextureString = strconcat(" |T"..icon..":20|t") parentFrame.TypeFourText:SetText( iconTextureString ) end -- Type Five - local name, amount, icon, earnedThisWeek, weeklyMax, totalMax, isDiscovered = GetCurrencyInfo( EMA.db.CcurrTypeFive ) + local name, amount, icon, earnedThisWeek, weeklyMax, totalMax, isDiscovered = C_CurrencyInfo.GetCurrencyInfo( EMA.db.CcurrTypeFive ) if icon ~= nil then local iconTextureString = strconcat(" |T"..icon..":20|t") parentFrame.TypeFiveText:SetText( iconTextureString ) end -- Type six - local name, amount, icon, earnedThisWeek, weeklyMax, totalMax, isDiscovered = GetCurrencyInfo( EMA.db.CcurrTypeSix ) + local name, amount, icon, earnedThisWeek, weeklyMax, totalMax, isDiscovered = C_CurrencyInfo.GetCurrencyInfo( EMA.db.CcurrTypeSix ) if icon ~= nil then local iconTextureString = strconcat(" |T"..icon..":20|t") parentFrame.TypeSixText:SetText( iconTextureString ) @@ -1589,8 +1545,8 @@ function EMA:EMAToonRequestCurrency() end end EMA:EMASendCommandToTeam( EMA.COMMAND_REQUEST_CURRENCY, "" ) + EMAToonCurrencyListFrame:Show() EMA.SettingsRefresh() - end function EMA:DoSendCurrency( characterName, dummyValue ) @@ -1599,19 +1555,19 @@ function EMA:DoSendCurrency( characterName, dummyValue ) table.wipe( EMA.currentCurrencyValues ) EMA.currentCurrencyValues.currGold = GetMoney() -- CurrencyValues - EMA.currentCurrencyValues.currTypeOne = select( 2, GetCurrencyInfo( EMA.db.CcurrTypeOne ) ) - EMA.currentCurrencyValues.currTypeTwo = select( 2, GetCurrencyInfo( EMA.db.CcurrTypeTwo ) ) - EMA.currentCurrencyValues.currTypeThree = select( 2, GetCurrencyInfo( EMA.db.CcurrTypeThree ) ) - EMA.currentCurrencyValues.currTypeFour = select( 2, GetCurrencyInfo( EMA.db.CcurrTypeFour ) ) - EMA.currentCurrencyValues.currTypeFive = select( 2, GetCurrencyInfo( EMA.db.CcurrTypeFive ) ) - EMA.currentCurrencyValues.currTypeSix = select( 2, GetCurrencyInfo( EMA.db.CcurrTypeSix ) ) + EMA.currentCurrencyValues.currTypeOne = select( 2, C_CurrencyInfo.GetCurrencyInfo( EMA.db.CcurrTypeOne ) ) + EMA.currentCurrencyValues.currTypeTwo = select( 2, C_CurrencyInfo.GetCurrencyInfo( EMA.db.CcurrTypeTwo ) ) + EMA.currentCurrencyValues.currTypeThree = select( 2, C_CurrencyInfo.GetCurrencyInfo( EMA.db.CcurrTypeThree ) ) + EMA.currentCurrencyValues.currTypeFour = select( 2, C_CurrencyInfo.GetCurrencyInfo( EMA.db.CcurrTypeFour ) ) + EMA.currentCurrencyValues.currTypeFive = select( 2, C_CurrencyInfo.GetCurrencyInfo( EMA.db.CcurrTypeFive ) ) + EMA.currentCurrencyValues.currTypeSix = select( 2, C_CurrencyInfo.GetCurrencyInfo( EMA.db.CcurrTypeSix ) ) -- Max CurrencyValues - EMA.currentCurrencyValues.currMaxTypeOne = select( 6, GetCurrencyInfo( EMA.db.CcurrTypeOne ) ) - EMA.currentCurrencyValues.currMaxTypeTwo = select( 6, GetCurrencyInfo( EMA.db.CcurrTypeTwo ) ) - EMA.currentCurrencyValues.currMaxTypeThree = select( 6, GetCurrencyInfo( EMA.db.CcurrTypeThree ) ) - EMA.currentCurrencyValues.currMaxTypeFour = select( 6, GetCurrencyInfo( EMA.db.CcurrTypeFour ) ) - EMA.currentCurrencyValues.currMaxTypeFive = select( 6, GetCurrencyInfo( EMA.db.CcurrTypeFive ) ) - EMA.currentCurrencyValues.currMaxTypeSix = select( 6, GetCurrencyInfo( EMA.db.CcurrTypeSix ) ) + EMA.currentCurrencyValues.currMaxTypeOne = select( 6, C_CurrencyInfo.GetCurrencyInfo( EMA.db.CcurrTypeOne ) ) + EMA.currentCurrencyValues.currMaxTypeTwo = select( 6, C_CurrencyInfo.GetCurrencyInfo( EMA.db.CcurrTypeTwo ) ) + EMA.currentCurrencyValues.currMaxTypeThree = select( 6, C_CurrencyInfo.GetCurrencyInfo( EMA.db.CcurrTypeThree ) ) + EMA.currentCurrencyValues.currMaxTypeFour = select( 6, C_CurrencyInfo.GetCurrencyInfo( EMA.db.CcurrTypeFour ) ) + EMA.currentCurrencyValues.currMaxTypeFive = select( 6, C_CurrencyInfo.GetCurrencyInfo( EMA.db.CcurrTypeFive ) ) + EMA.currentCurrencyValues.currMaxTypeSix = select( 6, C_CurrencyInfo.GetCurrencyInfo( EMA.db.CcurrTypeSix ) ) EMA:EMASendCommandToToon( characterName, EMA.COMMAND_HERE_IS_CURRENCY, EMA.currentCurrencyValues ) else return @@ -1760,7 +1716,7 @@ end function EMA:TellTeamGold( event, msg, playerName ) --EMA:Print("goldtest", event, msg) local money = GetMoney() - local gold, silver, copper = EMAUtilities:MoneyString(money) + local gold, silver, copper = EMAUtilities:MoneyStringFormatted(money) local goldText = gold.." Gold "..silver.." Silver "..copper.." Copper" local channel = nil if event == "CHAT_MSG_GUILD" then @@ -1787,7 +1743,11 @@ function EMA:TellTeamKeys( event, msg, playerName) elseif event == "CHAT_MSG_RAID" or event == "CHAT_MSG_RAID_LEADER" then channel = "RAID" end - if channel ~= nil then + if KeyStone == nil then + KeyStone = L["NO_KEYSTONE_FOUND"] + end + + if channel ~= nil and KeyStone ~= nil then SendChatMessage(L["MY_KEY_STONE_IS"](KeyStone), channel) end end diff --git a/Modules/ItemUse.lua b/Modules/ItemUse.lua index 2b425d3..f1a2648 100644 --- a/Modules/ItemUse.lua +++ b/Modules/ItemUse.lua @@ -206,8 +206,7 @@ end local function CreateEMAItemUseFrame() -- The frame. EMAItemUseWindowFrame - local frame = CreateFrame( "Frame", "EMAItemUseWindowFrame" , UIParent, "SecureHandlerStateTemplate" ) - + local frame = CreateFrame("Frame", "EMAItemUseWindowFrame", UIParent, "SecureHandlerStateTemplate")Mixin(frame, BackdropTemplateMixin or {}) frame:SetAttribute("_onstate-page", [[ self:SetAttribute("state", newstate) control:ChildUpdate("state", newstate) @@ -238,12 +237,14 @@ local function CreateEMAItemUseFrame() EMA.db.frameXOffset = xOffset EMA.db.frameYOffset = yOffset end ) + frame:SetBackdrop( { bgFile = "Interface\\DialogFrame\\UI-DialogBox-Background", edgeFile = "Interface\\Tooltips\\UI-Tooltip-Border", tile = true, tileSize = 10, edgeSize = 10, insets = { left = 3, right = 3, top = 3, bottom = 3 } } ) + frame:ClearAllPoints() frame:SetPoint( EMA.db.framePoint, nil, EMA.db.frameRelativePoint, EMA.db.frameXOffset, EMA.db.frameYOffset ) -- Clear Button @@ -273,7 +274,7 @@ local function CreateEMAItemUseFrame() -- Set the global frame reference for this frame. EMAItemUseFrame = frame -- Remove unsued items --test - EMA:SettingsUpdateBorderStyle() +-- EMA:SettingsUpdateBorderStyle() EMA.itemUseCreated = true EMA.UpdateHeight() end @@ -481,9 +482,15 @@ end --ebony test Using the wowapi and not the scanning of tooltips function EMA:CheckForQuestItemAndAddToBar() - for iterateQuests = 1, GetNumQuestLogEntries() do - local questLogTitleText,_,_,isHeader, _, _, _, questID = GetQuestLogTitle(iterateQuests) - if not isHeader then + --for iterateQuests = 1, GetNumQuestLogEntries() do + -- local questLogTitleText,_,_,isHeader, _, _, _, questID = GetQuestLogTitle(iterateQuests) + + local index = C_QuestLog.GetNumQuestLogEntries() + for iterateQuests = 1, index do + local info = C_QuestLog.GetInfo( iterateQuests ) + + + if not info.isHeader then --EMA:Print("test", questItemLink, iterateQuests, questLogTitleText, questID ) local questItemLink, questItemIcon, questItemCharges = GetQuestLogSpecialItemInfo( iterateQuests ) if questItemLink ~= nil then @@ -1025,7 +1032,7 @@ function EMA:SettingsRefresh() EMA.settingsControl.displayOptionsBorderColourPicker:SetDisabled( not EMA.db.showItemUse ) if EMA.itemUseCreated == true then EMA:RefreshItemUseControls() - EMA:SettingsUpdateBorderStyle() + -- EMA:SettingsUpdateBorderStyle() EMA:SetItemUseVisibility() EMA:UpdateItemsInBar() EMA:UpdateHeight() @@ -1154,7 +1161,7 @@ function EMA:OnInitialize() -- Create the item use frame. CreateEMAItemUseFrame() EMA:RefreshItemUseControls() - EMA:SettingsUpdateBorderStyle() +-- EMA:SettingsUpdateBorderStyle() EMA:SetItemUseVisibility() EMA:UpdateItemsInBar() EMA.sharedInvData = {} diff --git a/Modules/Quest.lua b/Modules/Quest.lua index aea0bac..fba295d 100644 --- a/Modules/Quest.lua +++ b/Modules/Quest.lua @@ -160,7 +160,7 @@ local function InitializePopupDialogs() hideOnEscape = 1, OnAccept = function( self ) --EMA:Print("Button1") - AbandonQuest() + C_QuestLog.AbandonQuest() end, OnAlt = function ( self ) --EMA:Print("Button3") @@ -251,11 +251,9 @@ function EMA:OnEnable() EMA:RegisterEvent( "QUEST_PROGRESS" ) EMA:RegisterEvent( "CHAT_MSG_SYSTEM", "QUEST_FAIL" ) -- Quest post hooks. - EMA:SecureHook( "SelectGossipOption" ) - EMA:SecureHook( "SelectGossipActiveQuest" ) - EMA:SecureHook( "SelectGossipAvailableQuest" ) - EMA:SecureHook( "SelectActiveQuest" ) - EMA:SecureHook( "SelectAvailableQuest" ) + EMA:SecureHook( C_GossipInfo, "SelectOption", "SelectGossipOption") + EMA:SecureHook( C_GossipInfo, "SelectActiveQuest" ) + EMA:SecureHook( C_GossipInfo, "SelectAvailableQuest" ) EMA:SecureHook( "AcceptQuest" ) EMA:SecureHook( "AcknowledgeAutoAcceptQuest" ) EMA:SecureHook( "CompleteQuest" ) @@ -1199,6 +1197,7 @@ function EMA:QUEST_PROGRESS() end function EMA:SelectGossipOption( gossipIndex ) + --EMA:Print("test", gossipIndex) if EMA.db.mirrorMasterQuestSelectionAndDeclining == true then if EMA.isInternalCommand == false then EMA:DebugMessage( "SelectGossipOption" ) @@ -1211,7 +1210,7 @@ function EMA:DoSelectGossipOption( sender, gossipIndex ) if EMA.db.mirrorMasterQuestSelectionAndDeclining == true then EMA.isInternalCommand = true EMA:DebugMessage( "DoSelectGossipOption" ) - SelectGossipOption( gossipIndex ) + C_GossipInfo.SelectOption( gossipIndex ) EMA.isInternalCommand = false end end @@ -1237,7 +1236,7 @@ end function EMA:SelectGossipAvailableQuest( gossipIndex ) if EMA.db.mirrorMasterQuestSelectionAndDeclining == true then if EMA.isInternalCommand == false then - EMA:DebugMessage( "SelectGossipAvailableQuest" ) + EMA:DebugMessage( "SelectGossipAvailableQuest" ) EMA:EMASendCommandToTeam( EMA.COMMAND_SELECT_GOSSIP_AVAILABLE_QUEST, gossipIndex ) end end @@ -1247,7 +1246,7 @@ function EMA:DoSelectGossipAvailableQuest( sender, gossipIndex ) if EMA.db.mirrorMasterQuestSelectionAndDeclining == true then EMA.isInternalCommand = true EMA:DebugMessage( "DoSelectGossipAvailableQuest" ) - SelectGossipAvailableQuest( gossipIndex ) + SelectAvailableQuest( gossipIndex ) EMA.isInternalCommand = false end end @@ -1265,7 +1264,11 @@ function EMA:DoSelectActiveQuest( sender, questIndex ) if EMA.db.mirrorMasterQuestSelectionAndDeclining == true then EMA.isInternalCommand = true EMA:DebugMessage( "DoSelectActiveQuest" ) - SelectActiveQuest( questIndex ) + if C_GossipInfo.GetNumActiveQuests() > 1 then + C_GossipInfo.SelectActiveQuest( questIndex ) + else + EMA:EMASendMessageToTeam( EMA.db.warningArea, L["AM_I_TALKING_TO_A_NPC"], false ) + end EMA.isInternalCommand = false end end @@ -1273,17 +1276,23 @@ end function EMA:SelectAvailableQuest( questIndex ) if EMA.db.mirrorMasterQuestSelectionAndDeclining == true then if EMA.isInternalCommand == false then - EMA:DebugMessage( "SelectAvailableQuest" ) + EMA:DebugMessage( "SelectAvailableQuest" ) EMA:EMASendCommandToTeam( EMA.COMMAND_SELECT_AVAILABLE_QUEST, questIndex ) end end end function EMA:DoSelectAvailableQuest( sender, questIndex ) + EMA:Print("test4", sender, questIndex ) if EMA.db.mirrorMasterQuestSelectionAndDeclining == true then EMA.isInternalCommand = true EMA:DebugMessage( "DoSelectAvailableQuest" ) - SelectAvailableQuest( questIndex ) + -- TODO KEEP? + --if C_GossipInfo.GetNumAvailableQuests() > 1 then + C_GossipInfo.SelectAvailableQuest( questIndex ) + --else + -- EMA:EMASendMessageToTeam( EMA.db.warningArea, L["AM_I_TALKING_TO_A_NPC"], false ) + --end EMA.isInternalCommand = false end end @@ -1666,9 +1675,9 @@ end function EMA:QuestMapQuestOptions_AbandonQuest(questID) if EMAApi.GetTeamListMaximumOrderOnline() > 1 then - local lastQuestIndex = GetQuestLogSelection() + local lastQuestIndex = C_QuestLog.GetSelectedQuest() --EMA:Print("SetAbandonQuest", lastQuestIndex, questID) - title = GetAbandonQuestName() + local title = QuestUtils_GetQuestName(C_QuestLog.GetAbandonQuest()) local data = {} data.questID = questID data.title = title @@ -1686,12 +1695,14 @@ end function EMA:QuestMapQuestOptions_TrackQuest(questID) if EMAApi.GetTeamListMaximumOrderOnline() > 1 then --EMA:Print("test", questID) - local questLogIndex = GetQuestLogIndexByID(questID) - local title = GetQuestLogTitle( questLogIndex ) + local title = QuestUtils_GetQuestName(C_QuestLog.GetAbandonQuest()) + local questLogIndex = C_QuestLog.GetLogIndexForQuestID( questID ) + + local data = {} data.questID = questID data.title = title - if ( IsQuestWatched(questLogIndex) ) then + if ( QuestUtils_IsQuestWatched(questID) ) then --EMA:Print("TrackingQuest") StaticPopup_Show( "EMA_QUEST_TRACK_ALL_TOONS", title, nil, data ) else @@ -1703,7 +1714,7 @@ end function EMA:QuestMapQuestOptions_EMA_DoQuestTrack( sender, questID, title, track ) --EMA:Print("test1.5", sender, questID, title, track) - local questLogIndex = GetQuestLogIndexByID( questID ) + local questLogIndex = C_QuestLog.GetLogIndexForQuestID( questID ) if questLogIndex ~= 0 then if track then EMA:EMADoQuest_TrackQuest( questID, questLogIndex ) @@ -1717,28 +1728,29 @@ end function EMA:EMADoQuest_TrackQuest(questID, questLogIndex) --EMA:Print("test", questID, questLogIndex ) - if ( not IsQuestWatched(questID) ) then - AddQuestWatch(questLogIndex, true) + if ( not QuestUtils_IsQuestWatched(questID) ) then + C_QuestLog.AddQuestWatch(questID, Enum.QuestWatchType.Manual) QuestSuperTracking_OnQuestTracked(questID) end end function EMA:EMADoQuest_UnTrackQuest(questID, questLogIndex) - --EMA:Print("test2", questID, questLogIndex ) - if ( IsQuestWatched(questLogIndex) ) then + EMA:Print("test2", questID, questLogIndex ) + if ( QuestUtils_IsQuestWatched(questID) ) then QuestObjectiveTracker_UntrackQuest(nil, questID) end end function EMA:QuestMapQuestOptions_EMA_DoAbandonQuest( sender, questID, title ) - local questLogIndex = GetQuestLogIndexByID( questID ) - if questLogIndex ~= 0 then - local lastQuestIndex = GetQuestLogSelection(); - SelectQuestLogEntry(GetQuestLogIndexByID(questID)); - SetAbandonQuest(); - AbandonQuest(); - SelectQuestLogEntry(lastQuestIndex); + --local questLogIndex = GetQuestLogIndexByID( questID ) + + if questID ~= nil then + local oldSelectedQuest = C_QuestLog.GetSelectedQuest() + C_QuestLog.SetSelectedQuest(questID) + C_QuestLog.SetAbandonQuest() + C_QuestLog.AbandonQuest() + C_QuestLog.SetSelectedQuest(oldSelectedQuest) EMA:EMASendMessageToTeam( EMA.db.messageArea, L["QUESTLOG_HAVE_ABANDONED_QUEST"]( title ), false ) end end @@ -1747,7 +1759,7 @@ end function EMA:CreateEMAMiniQuestLogFrame() - EMAMiniQuestLogFrame = CreateFrame( "Frame", "EMAMiniQuestLogFrame", QuestMapFrame ) + EMAMiniQuestLogFrame = CreateFrame( "Frame", "EMAMiniQuestLogFrame", QuestMapFrame, BackdropTemplateMixin and "BackdropTemplate" or nil ) local frame = EMAMiniQuestLogFrame frame:SetWidth( 470 ) frame:SetHeight( 40 ) @@ -1837,7 +1849,7 @@ function EMA.AbandonNextQuest() local canAbandon = CanAbandonQuest(questID) if canAbandon then EMA:EMASendCommandToTeam( EMA.COMMAND_ABANDON_QUEST, questID, title) - if (EMA.iterateQuests ~= GetNumQuestLogEntries()) then + if (EMA.iterateQuests ~= C_QuestLog.GetNumQuestLogEntries()) then -- decrement quest count as we have removed one if not last quest EMA.iterateQuests = EMA.iterateQuests - 1 end @@ -1912,7 +1924,7 @@ end function EMA:IterateQuests(methodToCall, timer) EMA.iterateQuests = EMA.iterateQuests + 1 - if EMA.iterateQuests <= GetNumQuestLogEntries() then + if EMA.iterateQuests <= C_QuestLog.GetNumQuestLogEntries() then EMA:ScheduleTimer( methodToCall, timer ) end end @@ -1972,10 +1984,10 @@ function EMA:QUEST_ACCEPT_CONFIRM( event, senderName, questName ) end function EMA:GetQuestLogIndexByName( questName ) - for iterateQuests = 1, GetNumQuestLogEntries() do - local title, level, suggestedGroup, isHeader, isCollapsed, isComplete, frequency, questID, startEvent, displayQuestID, isOnMap, hasLocalPOI, isTask, isStory = GetQuestLogTitle( iterateQuests ) + for iterateQuests = 1,C_QuestLog.GetNumQuestLogEntries() do + local info = C_QuestLog.GetInfo( iterateQuests ) if not isHeader then - if title == questName then + if info.title == questName then return iterateQuests end end diff --git a/Modules/QuestWatcher.lua b/Modules/QuestWatcher.lua index 4fd05d1..8f8561b 100644 --- a/Modules/QuestWatcher.lua +++ b/Modules/QuestWatcher.lua @@ -150,6 +150,7 @@ end -- Initialise the module. function EMA:OnInitialize() + EMA.QUESTWATCHUPDATING = false EMA.currentAutoQuestPopups = {} EMA.countAutoQuestPopUpFrames = 0 EMA.questWatcherFrameCreated = false @@ -192,10 +193,10 @@ function EMA:OnEnable() -- Quest post hooks. EMA:SecureHook( "SelectActiveQuest" ) EMA:SecureHook( "GetQuestReward" ) - EMA:SecureHook( "AddQuestWatch" ) - EMA:SecureHook( "RemoveQuestWatch" ) - EMA:SecureHook( "AbandonQuest" ) - EMA:SecureHook( "SetAbandonQuest" ) + EMA:SecureHook( C_QuestLog, "AddQuestWatch" ) + EMA:SecureHook( C_QuestLog, "RemoveQuestWatch" ) + EMA:SecureHook( C_QuestLog, "AbandonQuest" ) + EMA:SecureHook( C_QuestLog, "SetAbandonQuest" ) -- Update the quest watcher for watched quests. EMA:ScheduleTimer( "EMAQuestWatcherUpdate", 1, false, "all" ) --EMA:ScheduleTimer( "EMAQuestWatcherScenarioUpdate", 1, false ) @@ -536,7 +537,7 @@ end function EMA:CreateQuestWatcherFrame() -- The frame. - local frame = CreateFrame( "Frame", "EMAQuestWatcherWindowFrame", UIParent ) + local frame = CreateFrame( "Frame", "EMAQuestWatcherWindowFrame", UIParent, BackdropTemplateMixin and "BackdropTemplate" or nil ) frame.obj = EMA frame:SetFrameStrata( "BACKGROUND" ) frame:SetClampedToScreen( true ) @@ -989,9 +990,10 @@ function EMA:GetQuestReward( itemChoice ) local questJustCompletedName = GetTitleText() EMA:DebugMessage( "GetQuestReward: ", questIndex, questJustCompletedName ) local questIndex = EMA:GetQuestLogIndexByName( questJustCompletedName ) - local title, level, suggestedGroup, isHeader, isCollapsed, isComplete, frequency, questID, startEvent, displayQuestID, isOnMap, hasLocalPOI, isTask, isStory = GetQuestLogTitle( questIndex ) - EMA:DebugMessage( "GetQuestReward after GetQuestLogTitle: ", questIndex, questJustCompletedName, questID ) - EMA:RemoveQuestFromWatchList( questID ) + --local title, level, suggestedGroup, isHeader, isCollapsed, isComplete, frequency, questID, startEvent, displayQuestID, isOnMap, hasLocalPOI, isTask, isStory = GetQuestLogTitle( questIndex ) + local info = C_QuestLog.GetInfo( questIndex ) + EMA:DebugMessage( "GetQuestReward after GetQuestLogTitle: ", info.questIndex, questJustCompletedName, info.questID ) + EMA:RemoveQuestFromWatchList( info.questID ) end function EMA:AddQuestWatch( questIndex ) @@ -1004,15 +1006,16 @@ function EMA:AddQuestWatch( questIndex ) --EMA:EMAQuestWatcherScenarioUpdate( true ) end -function EMA:RemoveQuestWatch( questIndex ) +function EMA:RemoveQuestWatch( questID ) if EMA.db.enableQuestWatcher == false then return end - EMA:DebugMessage( "RemoveQuestWatch", questIndex ) + --EMA:Print( "RemoveQuestWatch", questID ) --EMA:UpdateHideBlizzardWatchFrame() EMA:ScheduleTimer( "UpdateHideBlizzardWatchFrame", 2 ) - local title, level, suggestedGroup, isHeader, isCollapsed, isComplete, frequency, questID, startEvent, displayQuestID, isOnMap, hasLocalPOI, isTask, isStory = GetQuestLogTitle( questIndex ) - EMA:DebugMessage( "About to call RemoveQuestFromWatchList with value:", questID ) + --local title, level, suggestedGroup, isHeader, isCollapsed, isComplete, frequency, questID, startEvent, displayQuestID, isOnMap, hasLocalPOI, isTask, isStory = GetQuestLogTitle( questIndex ) + --local info = C_QuestLog.GetInfo( questIndex ) + EMA:DebugMessage( "About to call RemoveQuestFromWatchList with value:", questID ) EMA:RemoveQuestFromWatchList( questID ) end @@ -1020,7 +1023,8 @@ function EMA:SetAbandonQuest() if EMA.db.enableQuestWatcher == false then return end - local questName = GetAbandonQuestName() + --local questName = GetAbandonQuestName() + local questName = QuestUtils_GetQuestName(C_QuestLog.GetAbandonQuest()) if questName ~= nil then local questIndex = EMA:GetQuestLogIndexByName( questName ) EMA:SetActiveQuestForQuestWatcherCache( questIndex ) @@ -1203,8 +1207,9 @@ function EMA:SetActiveQuestForQuestWatcherCache( questIndex ) return end if questIndex ~= nil then - local title, level, suggestedGroup, isHeader, isCollapsed, isComplete, frequency, questID, startEvent, displayQuestID, isOnMap, hasLocalPOI, isTask, isStory = GetQuestLogTitle( questIndex ) - EMA.currentQuestForQuestWatcherID = questID + --local title, level, suggestedGroup, isHeader, isCollapsed, isComplete, frequency, questID, startEvent, displayQuestID, isOnMap, hasLocalPOI, isTask, isStory = GetQuestLogTitle( questIndex ) + local info = C_QuestLog.GetInfo( questIndex ) + EMA.currentQuestForQuestWatcherID = info.questID else EMA.currentQuestForQuestWatcherID = nil end @@ -1377,77 +1382,101 @@ function EMA:EMAQuestWatcherScenarioUpdate(useCache) end end end + EMA.QUESTWATCHUPDATING = false end function EMA:EMAQuestWatcherQuestLogUpdate( useCache ) - for i = 1, GetNumQuestLogEntries() do - local questID, title, questLogIndex, numObjectives, requiredMoney, isComplete, startEvent, isAutoComplete, failureTime, timeElapsed, questType, isTask, isBounty, isStory, isOnMap, hasLocalPOI, isHidden = GetQuestWatchInfo(i) - if questID ~= nil then - --EMA:Print("EMAQuestData", questID, title, questLogIndex, numObjectives, requiredMoney, isComplete, startEvent, isAutoComplete, failureTime, timeElapsed, questType, isTask, isBounty, isStory, isOnMap, hasLocalPOI, isHidden) - if numObjectives > 0 then - for iterateObjectives = 1, numObjectives do - --EMA:Print( "NumObjs:", numObjectives ) - local objectiveFullText, objectiveType, objectiveFinished = GetQuestLogLeaderBoard( iterateObjectives, questLogIndex ) - local amountCompleted, objectiveText = EMA:GetQuestObjectiveCompletion( objectiveFullText, objectiveType ) - if objectiveType == "progressbar" then - local progress = GetQuestProgressBarPercent( questID ) - objectiveText = "ProgressBar"..": "..objectiveText - amountCompleted = tostring(progress)..L["%"] - end - if objectiveFullText ~= nil then - --EMA:Print("test2", questID, title, iterateObjectives, objectiveText, amountCompleted, objectiveFinished, isComplete ) - if (EMA:QuestCacheUpdate( questID, iterateObjectives, amountCompleted, objectiveFinished ) == true) or (useCache == false) then - EMA:EMASendCommandToTeam( EMA.COMMAND_QUEST_WATCH_OBJECTIVE_UPDATE, questID, title, iterateObjectives, objectiveText, amountCompleted, isComplete, isComplete ) + if EMA.QUESTWATCHUPDATING == true then + return + end + --EMA:Print("QUESTWATCHUPDATINGS") + EMA.QUESTWATCHUPDATING = true + local index = C_QuestLog.GetNumQuestLogEntries() + for iterateQuests = 1, index do + local info = C_QuestLog.GetInfo( iterateQuests ) + if info.questID ~= nil and QuestUtils_IsQuestWatched(info.questID) == true then + --EMA:Print("testAA", info.title, info.questLogIndex, info.questID, info.campaignID, info.level, info.difficultyLevel, info.suggestedGroup, info.frequency, info.isHeader, info.isCollapsed, info.startEvent, info.isTask, info.isBounty, info.isStory, info.isScaling, info.isOnMap, info.hasLocalPOI, info.isHidden, info.isAutoComplete, info.overridesSortOrder, info.readyForTranslation ) + local questLogIndex = C_QuestLog.GetLogIndexForQuestID(info.questID) + local numObjectives = GetNumQuestLeaderBoards(questLogIndex ) + local isComplete = C_QuestLog.IsComplete( info.questID) + --local isComplete = EMA:IsCompletedAutoCompleteFieldQuest( questIndex, isComplete ) + if info.isHeader == false and info.isHidden == false then + --EMA:Print("EMAQuestData", questID, title, questLogIndex, numObjectives, requiredMoney, isComplete, startEvent, isAutoComplete, failureTime, timeElapsed, questType, isTask, isBounty, isStory, isOnMap, hasLocalPOI, isHidden) + if numObjectives > 0 then + for iterateObjectives = 1, numObjectives do + --EMA:Print( "NumObjs:", numObjectives ) + local objectiveFullText, objectiveType, objectiveFinished = GetQuestLogLeaderBoard( iterateObjectives, questLogIndex ) + local amountCompleted, objectiveText = EMA:GetQuestObjectiveCompletion( objectiveFullText, objectiveType ) + + if objectiveType == "progressbar" then + local progress = GetQuestProgressBarPercent( info.questID ) + objectiveText = "ProgressBar"..": "..objectiveText + amountCompleted = tostring(progress)..L["%"] + end + if objectiveFullText ~= nil then + --EMA:Print("test2", info.questID, info.title, iterateObjectives, objectiveText, amountCompleted, objectiveFinished, isComplete ) + if (EMA:QuestCacheUpdate( info.questID, iterateObjectives, amountCompleted, objectiveFinished ) == true) or (useCache == false) then + EMA:EMASendCommandToTeam( EMA.COMMAND_QUEST_WATCH_OBJECTIVE_UPDATE, info.questID, info.title, iterateObjectives, objectiveText, amountCompleted, isComplete, isComplete ) + end end + end + else + local objectiveFullText = GetQuestLogCompletionText(questLogIndex) + local iterateObjectives = 0 + local amountCompleted, objectiveText = EMA:GetQuestObjectiveCompletion( objectiveFullText ) + local objectiveFinished = true + --EMA:Print("test3", info.questID, info.title, iterateObjectives, objectiveText, amountCompleted, objectiveFinished, isComplete ) + if (EMA:QuestCacheUpdate( info.questID, info.title, amountCompleted, objectiveFinished ) == true) or (useCache == false) then + EMA:EMASendCommandToTeam( EMA.COMMAND_QUEST_WATCH_OBJECTIVE_UPDATE, info.questID, info.title, iterateObjectives, objectiveText, amountCompleted, isComplete, isComplete ) end - end - else - local objectiveFullText = GetQuestLogCompletionText(questLogIndex) - local iterateObjectives = 0 - local amountCompleted, objectiveText = EMA:GetQuestObjectiveCompletion( objectiveFullText ) - local objectiveFinished = true - --EMA:Print("test3", questID, title, iterateObjectives, objectiveText, amountCompleted, objectiveFinished, isComplete ) - if (EMA:QuestCacheUpdate( questID, iterateObjectives, amountCompleted, objectiveFinished ) == true) or (useCache == false) then - EMA:EMASendCommandToTeam( EMA.COMMAND_QUEST_WATCH_OBJECTIVE_UPDATE, questID, title, iterateObjectives, objectiveText, amountCompleted, isComplete, isComplete ) end - end - end + end + end end + --EMA:Print("QUESTWATCHUPDATING DONE") + EMA.QUESTWATCHUPDATING = false end function EMA:EMAQuestWatcherWorldQuestUpdate( useCache ) --EMA:Print("fireworldquestUpdate") - for i = 1, GetNumQuestLogEntries() do - local title, level, suggestedGroup, isHeader, isCollapsed, _ , frequency, questID = GetQuestLogTitle(i) - local isInArea, isOnMap, numObjectives = GetTaskInfo(questID) - local isComplete = EMA:IsCompletedAutoCompleteFieldQuest( questIndex, isComplete ) + --for i = 1, GetNumQuestLogEntries() do + local index = C_QuestLog.GetNumQuestLogEntries() + for iterateQuests = 1, index do + local info = C_QuestLog.GetInfo( iterateQuests ) + local questIndex = C_QuestLog.GetLogIndexForQuestID(info.questID) + ---local title, level, suggestedGroup, isHeader, isCollapsed, _ , frequency, questID = GetQuestLogTitle(i) + local isInArea, isOnMap, numObjectives = GetTaskInfo(info.questID) + local isComplete = C_QuestLog.IsComplete( info.questID) + --local isComplete = EMA:IsCompletedAutoCompleteFieldQuest( questIndex, IsComplete ) + if isInArea and isOnMap then for iterateObjectives = 1, numObjectives do --EMA:Print("test", questID, iterateObjectives, isComplete) - local objectiveFullText, objectiveType, objectiveFinished = GetQuestObjectiveInfo( questID, iterateObjectives, isComplete ) + local objectiveFullText, objectiveType, objectiveFinished = GetQuestObjectiveInfo( info.questID, iterateObjectives, isComplete ) local amountCompleted, objectiveText = EMA:GetQuestObjectiveCompletion( objectiveFullText ) if objectiveType == "progressbar" then local objectiveText = "ProgressBar" - local progress = GetQuestProgressBarPercent( questID ) + local progress = GetQuestProgressBarPercent( info.questID ) local amountCompleted = tostring(progress)..L["%"] --EMA:Print("QuestPercent", title, objectiveText, amountCompleted ) - local name = tostring("Bonus:")..(title) - --EMA:Print("BarQuest", questID, title, iterateObjectives, objectiveText, amountCompleted, objectiveFinished, isComplete) - if (EMA:QuestCacheUpdate( questID, iterateObjectives, amountCompleted, objectiveFinished ) == true) or (useCache == false) then - EMA:EMASendCommandToTeam( EMA.COMMAND_QUEST_WATCH_OBJECTIVE_UPDATE, questID, name, iterateObjectives, objectiveText, amountCompleted, objectiveFinished, isComplete ) + local EditedQuestName = tostring("Bonus:")..(info.title) + EMA:Print("BarQuest", info.questID, name, iterateObjectives, objectiveText, amountCompleted, objectiveFinished, isComplete) + if (EMA:QuestCacheUpdate( info.questID, iterateObjectives, amountCompleted, objectiveFinished ) == true) or (useCache == false) then + EMA:EMASendCommandToTeam( EMA.COMMAND_QUEST_WATCH_OBJECTIVE_UPDATE, info.questID, EditedQuestName, iterateObjectives, objectiveText, amountCompleted, objectiveFinished, isComplete ) end else local amountCompleted, objectiveText = EMA:GetQuestObjectiveCompletion( objectiveFullText ) - if (EMA:QuestCacheUpdate( questID, iterateObjectives, amountCompleted, objectiveFinished ) == true) or (useCache == false) then + if (EMA:QuestCacheUpdate( info.questID, iterateObjectives, amountCompleted, objectiveFinished ) == true) or (useCache == false) then --EMA:Print( "UPDATE:", "cache:", useCache, "QuestID", questID, "ObjectID", iterateObjectives ) - --EMA:Print("sendingquestdata", objectiveText, amountCompleted, finished ) - local name = tostring("Bonus:")..(title) - EMA:EMASendCommandToTeam( EMA.COMMAND_QUEST_WATCH_OBJECTIVE_UPDATE, questID, name, iterateObjectives, objectiveText, amountCompleted, objectiveFinished, isComplete ) + --EMA:Print("sendingquestdata", info.title, info.questID, objectiveText, amountCompleted, finished ) + local name = tostring("Bonus:")..(info.title) + EMA:EMASendCommandToTeam( EMA.COMMAND_QUEST_WATCH_OBJECTIVE_UPDATE, info.questID, name, iterateObjectives, objectiveText, amountCompleted, objectiveFinished, isComplete ) end end end end - end + end + EMA.QUESTWATCHUPDATING = false end function EMA:EMAQuestWatcherUpdate( useCache, questType ) @@ -1619,14 +1648,10 @@ function EMA:RemoveQuestsNotBeingWatched() EMA:UpdateAllQuestsInWatchList() for checkQuestID, value in pairs( EMA.questWatchListOfQuests ) do local found = false - for iterateWatchedQuests = 1, GetNumQuestWatches() do - local questIndex = GetQuestIndexForWatch( iterateWatchedQuests ) - if questIndex ~= nil then - local title, level, suggestedGroup, isHeader, isCollapsed, isComplete, frequency, questID, startEvent, displayQuestID, isOnMap, hasLocalPOI, isTask, isStory = GetQuestLogTitle( questIndex ) - if checkQuestID == questID then - found = true - end - end + local IsOnQuest = C_QuestLog.IsOnQuest(checkQuestID) + if IsOnQuest == true then + --EMA:Print("foundQuest", checkQuestID) + found = true end if found == false then EMA:RemoveQuestFromWatchList( checkQuestID ) @@ -1707,11 +1732,14 @@ function EMA:GetObjectiveHeaderInWatchList( questID, questName, objectiveIndex, end function EMA:GetQuestItemFromQuestID(findQuestID) - for iterateQuests=1,GetNumQuestLogEntries() do - local title, level, suggestedGroup, isHeader, isCollapsed, isComplete, frequency, questID = GetQuestLogTitle(iterateQuests) + --for iterateQuests=1,GetNumQuestLogEntries() do + -- local title, level, suggestedGroup, isHeader, isCollapsed, isComplete, frequency, questID = GetQuestLogTitle(iterateQuests) + local index = C_QuestLog.GetNumQuestLogEntries() + for iterateQuests = 1, index do + local info = C_QuestLog.GetInfo( iterateQuests ) --if title ~= nil then - if not isHeader then - if findQuestID == questID then + if not info.isHeader then + if findQuestID == info.questID then local questItemLink, questItemIcon, questItemCharges = GetQuestLogSpecialItemInfo( iterateQuests ) if questItemLink then --EMA:Print("Item", questItemLink, questItemIcon, questID) @@ -1752,14 +1780,9 @@ function EMA:GetQuestHeaderInWatchList( questID, questName, characterName ) if ( questItemIcon ~= nil ) then icon = strconcat(" |T"..questItemIcon..":18|t".." ") end - -- TODO CLEAN UP AFTER 8.0 - -- Ebony incase we wonna use this then there is C_LFGList.CanCreateQuestGroup(questID) - -- that would show the quest using the group finder - if EMAPrivate.Core.isBetaBuild() == true then - if (C_CampaignInfo.IsCampaignQuest(questID) ) then + if (C_CampaignInfo.IsCampaignQuest(questID) ) then --EMA:Print("CampaignQuest", questName) - icon = GetInlineFactionIcon() - end + icon = GetInlineFactionIcon() end local questWatchInfo = EMA:CreateQuestWatchInfo( questID, "QUEST_HEADER", -1, "", questName, icon ) @@ -2248,7 +2271,7 @@ function EMAQuestMapQuestOptionsDropDown_Initialize(self) local questID = EMAQuestMapQuestOptionsDropDown.questID local questText = EMAQuestMapQuestOptionsDropDown.questText if (questID ~= 0 ) then - local questLogIndex = GetQuestLogIndexByID(questID) + local questLogIndex = C_QuestLog.GetLogIndexForQuestID(questID) local infoTitle = UIDropDownMenu_CreateInfo() infoTitle.text = questText @@ -2266,7 +2289,7 @@ function EMAQuestMapQuestOptionsDropDown_Initialize(self) info.checked = false UIDropDownMenu_AddButton(info) - if ( GetQuestLogPushable(questLogIndex) and IsInGroup() ) then + if ( C_QuestLog.IsPushableQuest(questID) and IsInGroup() ) then info.text = SHARE_QUEST info.func = function(_, questID) EMA:QuestMapQuestOptions_ShareQuest(questID) end info.arg1 = self.questID @@ -2384,7 +2407,8 @@ function EMA:DisplayAutoQuestPopUps() -- TODO - hack, assuming all characters have the same sort of popup. popUpType = characterPopUpType end - local title, level, suggestedGroup, isHeader, isCollapsed, isComplete, frequency, questID, startEvent, displayQuestID, isOnMap, hasLocalPOI, isTask, isStory = GetQuestLogTitle( GetQuestLogIndexByID( questID ) ) + --local title, level, suggestedGroup, isHeader, isCollapsed, isComplete, frequency, questID, startEvent, displayQuestID, isOnMap, hasLocalPOI, isTask, isStory = GetQuestLogTitle( C_QuestLog.GetQuestLogIndexByID( questID ) ) + if isComplete and isComplete > 0 then isComplete = true else @@ -2456,10 +2480,11 @@ end ------------------------------------------------------------------------------------------------------------- function EMA:GetQuestLogIndexByName( questName ) - for iterateQuests = 1, GetNumQuestLogEntries() do - local title, level, suggestedGroup, isHeader, isCollapsed, isComplete, frequency, questID, startEvent, displayQuestID, isOnMap, hasLocalPOI, isTask, isStory = GetQuestLogTitle( iterateQuests ) - if not isHeader then - if title == questName then + for iterateQuests = 1, C_QuestLog.GetNumQuestLogEntries() do + --local title, level, suggestedGroup, isHeader, isCollapsed, isComplete, frequency, questID, startEvent, displayQuestID, isOnMap, hasLocalPOI, isTask, isStory = GetQuestLogTitle( iterateQuests ) + local info = C_QuestLog.GetInfo( iterateQuests ) + if not info.isHeader then + if info.title == questName then return iterateQuests end end @@ -2468,10 +2493,11 @@ function EMA:GetQuestLogIndexByName( questName ) end function EMA:GetQuestLogIndexByID( inQuestID ) - for iterateQuests = 1, GetNumQuestLogEntries() do - local title, level, suggestedGroup, isHeader, isCollapsed, isComplete, frequency, questID, startEvent, displayQuestID, isOnMap, hasLocalPOI, isTask, isStory = GetQuestLogTitle( iterateQuests ) - if not isHeader then - if questID == inQuestID then + for iterateQuests = 1, C_QuestLog.GetNumQuestLogEntries() do + --local title, level, suggestedGroup, isHeader, isCollapsed, isComplete, frequency, questID, startEvent, displayQuestID, isOnMap, hasLocalPOI, isTask, isStory = GetQuestLogTitle( iterateQuests ) + local info = C_QuestLog.GetInfo( iterateQuests ) + if not info.isHeader then + if info.questID == inQuestID then return iterateQuests end end diff --git a/Modules/Toon.lua b/Modules/Toon.lua index 102713a..e137665 100644 --- a/Modules/Toon.lua +++ b/Modules/Toon.lua @@ -354,6 +354,11 @@ local function SettingsCreateToon( top ) L["ROLL_LOOT_HELP"] ) movingTop = movingTop - checkBoxHeight + + + + + EMAHelperSettings:CreateHeading( EMA.settingsControlToon, L["MESSAGES_HEADER"], movingTop, false ) movingTop = movingTop - dropdownHeight - verticalSpacing EMA.settingsControlToon.dropdownRequestArea = EMAHelperSettings:CreateDropdown( @@ -1582,11 +1587,15 @@ end --Ebony CCed function EMA:LOSS_OF_CONTROL_ADDED( event, ... ) if EMA.db.warnCC == true then - local eventIndex = C_LossOfControl.GetNumEvents() + ---local eventIndex = C_LossOfControl.GetNumEvents() + local eventIndex = C_LossOfControl.GetActiveLossOfControlDataCount() if eventIndex > 0 then - local locType, spellID, text, iconTexture, startTime, timeRemaining, duration, lockoutSchool, priority, displayType = C_LossOfControl.GetEventInfo(eventIndex) - if EMAApi.IsCharacterTheMaster( EMA.characterName ) == false then - EMA:EMASendMessageToTeam( EMA.db.warningArea, EMA.db.CcMessage..L[" "]..text, false ) + local LossOfControlData = C_LossOfControl.GetActiveLossOfControlData(eventIndex) + --local locType, spellID, text, iconTexture, startTime, timeRemaining, duration, lockoutSchool, priority, displayType + local name, rank, icon, castTime, minRange, maxRange, spellId = GetSpellInfo( LossOfControlData.spellID ) + --EMA:Print("test", LossOfControlData.spellID, name ) + if EMAApi.IsCharacterTheMaster( EMA.characterName ) == false and name ~= nil then + EMA:EMASendMessageToTeam( EMA.db.warningArea, EMA.db.CcMessage..L[" "].. name, false ) end end end