Merge pull request #62 from Sleaker/main

Implement Inspect and Callboard Frames
This commit is contained in:
Andrew
2025-05-28 12:35:51 -07:00
committed by GitHub
7 changed files with 232 additions and 144 deletions
+1 -1
View File
@@ -1,6 +1,6 @@
## Interface: 30300 ## Interface: 30300
## Author: Elv, Bunny ## Author: Elv, Bunny
## Version: 7.21 ## Version: 7.22
## Title: |cff1784d1E|r|cffe5e3e3lvUI|r ## Title: |cff1784d1E|r|cffe5e3e3lvUI|r
## Notes: User Interface replacement AddOn for World of Warcraft. ## Notes: User Interface replacement AddOn for World of Warcraft.
## SavedVariables: ElvDB, ElvPrivateDB ## SavedVariables: ElvDB, ElvPrivateDB
@@ -0,0 +1,41 @@
local E, L, V, P, G = unpack(ElvUI)
local S = E:GetModule("Skins")
local unpack = unpack
S:AddCallbackForAddon("AscensionUI", "Skin_CallBoard", function ()
if not E.private.skins.blizzard.enable or not E.private.skins.blizzard.callboard then return end
CallBoardUI:StripTextures()
CallBoardUINineSlice:StripTextures()
CallBoardUI.Tabs:StripTextures()
CallBoardUI.content:StripTextures()
CallBoardUI.content.TotalRewards.controlFrame:StripTextures()
-- Strip Border Textures
CallBoardUI.Tabs.NineSlice:StripTextures()
CallBoardUI.content.NineSlice:StripTextures()
CallBoardUI.content.TotalRewards:StripTextures()
CallBoardUI.content.TotalRewards.NineSlice:StripTextures()
CallBoardUI.content.ExtraSlots.Scroll.scrollTop:StripTextures()
CallBoardUI.content.ExtraSlots.Scroll.scrollMid:StripTextures()
CallBoardUI.content.ExtraSlots.Scroll.scrollBot:StripTextures()
CallBoardUI.content.ExtraSlots.Scroll.scrollBG:StripTextures()
local tabs = {CallBoardUI.Tabs:GetChildren()}
-- Reskin the Frames in ElvUI style
CallBoardUI:CreateBackdrop("Transparent")
CallBoardUI.content.NineSlice:CreateBackdrop("Transparent")
-- Fix NineSlice borderframe overlaying at the wrong FrameLevel
CallBoardUI.content.NineSlice:SetFrameLevel(CallBoardUI.content:GetFrameLevel())
S:HandleCloseButton(CallBoardUICloseButton)
S:HandleScrollBar(CallBoardUI.content.ExtraSlots.Scroll.scrollBar)
S:HandleScrollBar(CallBoardUI.content.statisticsScroll.ScrollBar)
S:HandleButton(CallBoardUI.content.TotalRewards.controlFrame.buttonAccept, true)
S:HandleButton(CallBoardUI.content.TotalRewards.controlFrame.buttonComplete, true)
end)
+182 -142
View File
@@ -9,182 +9,222 @@ local GetInventoryItemID = GetInventoryItemID
local GetItemInfo = GetItemInfo local GetItemInfo = GetItemInfo
local GetItemQualityColor = GetItemQualityColor local GetItemQualityColor = GetItemQualityColor
S:AddCallbackForAddon("Blizzard_InspectUI", "Skin_Blizzard_InspectUI", function() S:AddCallbackForAddon("Ascension_InspectUI", "Skin_InspectUI", function ()
if not E.private.skins.blizzard.enable or not E.private.skins.blizzard.inspect then return end if not E.private.skins.blizzard.enable or not E.private.skins.blizzard.inspect then return end
InspectFrame:StripTextures(true)
InspectFrame:CreateBackdrop("Transparent")
InspectFrame.backdrop:Point("TOPLEFT", 11, -12)
InspectFrame.backdrop:Point("BOTTOMRIGHT", -32, 76)
S:SetUIPanelWindowInfo(InspectFrame, "width") AscensionInspectFrame:StripTextures(true)
AscensionInspectFrameNineSlice:StripTextures()
AscensionInspectFrame:CreateBackdrop("Transparent")
-- Cleanup Blizzard style Borders/Insets
AscensionInspectFrameInset:StripTextures()
AscensionInspectFrameRightInset:StripTextures()
InspectPaperDollPanel:StripTextures(true)
InspectPaperDollPanelModel:StripTextures(true)
S:SetBackdropHitRect(InspectFrame) InspectPvPPanel:StripTextures(true)
S:SetBackdropHitRect(InspectPVPFrame, InspectFrame.backdrop)
S:SetBackdropHitRect(InspectTalentFrame, InspectFrame.backdrop)
InspectPVPFrameHonor:SetHitRectInsets(0, 120, 0, 0)
InspectPVPFrameArena:SetHitRectInsets(0, 120, 0, 0)
S:HandleCloseButton(InspectFrameCloseButton, InspectFrame.backdrop) S:SetBackdropHitRect(AscensionInspectFrame)
S:HandleCloseButton(AscensionInspectFrameCloseButton)
S:HandleTabSystem(AscensionInspectFrame)
-- TODO: Tab system for mystic enchant button continually updates after load - Ascension Bug?
S:HandleTabSystem(AscensionInspectFrameRightInset)
S:HandleTab(InspectFrameTab1) -- Stat Panel --
S:HandleTab(InspectFrameTab2) InspectStatsPanel:StripTextures(true)
S:HandleTab(InspectFrameTab3) InspectStatsPanel:CreateBackdrop("Default")
S:HandleScrollList(InspectStatsPanel, function(button)
S:HandleNextPrevButton(button.MoveDownButton, "down", nil, true)
button.MoveDownButton:Size(16)
button.MoveDownButton:SetPoint("RIGHT", -4, 1)
S:HandleNextPrevButton(button.MoveUpButton, "up", nil, true)
button.MoveUpButton:Size(16)
button.MoveUpButton:SetPoint("RIGHT", button.MoveDownButton, "LEFT", 0, -1)
local r, g, b, a = unpack(E.media.backdropfadecolor)
button.Left:SetTexture(E.media.blankTex)
button.Left:SetVertexColor(r, g, b, a)
button.Right:SetTexture(E.media.blankTex)
button.Right:SetVertexColor(r, g, b, a)
button.Middle:SetTexture(E.media.blankTex)
button.Middle:SetVertexColor(r, g, b, a)
end)
InspectPaperDollFrame:StripTextures() -- Mystic Enchant Panel
InspectMysticEnchantPanel:StripTextures(true)
InspectMysticEnchantPanel:CreateBackdrop("Default")
S:HandleScrollList(InspectMysticEnchantPanel, function(button)
button:GetNormalTexture():SetAllPoints()
hooksecurefunc(button, "Update", function(self)
self:SetNormalTexture(E.media.blankTex)
local color = self.index % 2 == 0 and E.media.backdropcolor or E.media.backdropfadecolor
self:GetNormalTexture():SetVertexColor(unpack(color))
end)
end)
-- Handle item inspect frame
local slots = { local slots = {
"HeadSlot", [1] = AscensionInspectHeadSlot,
"NeckSlot", [2] = AscensionInspectNeckSlot,
"ShoulderSlot", [3] = AscensionInspectShoulderSlot,
"BackSlot", [4] = AscensionInspectShirtSlot,
"ChestSlot", [5] = AscensionInspectChestSlot,
"ShirtSlot", [6] = AscensionInspectWaistSlot,
"TabardSlot", [7] = AscensionInspectLegsSlot,
"WristSlot", [8] = AscensionInspectFeetSlot,
"HandsSlot", [9] = AscensionInspectWristSlot,
"WaistSlot", [10] = AscensionInspectHandsSlot,
"LegsSlot", [11] = AscensionInspectFinger0Slot,
"FeetSlot", [12] = AscensionInspectFinger1Slot,
"Finger0Slot", [13] = AscensionInspectTrinket0Slot,
"Finger1Slot", [14] = AscensionInspectTrinket1Slot,
"Trinket0Slot", [15] = AscensionInspectBackSlot,
"Trinket1Slot", [16] = AscensionInspectMainHandSlot,
"MainHandSlot", [17] = AscensionInspectSecondaryHandSlot,
"SecondaryHandSlot", [18] = AscensionInspectRangedSlot,
"RangedSlot" [19] = AscensionInspectTabardSlot,
[20] = AscensionInspectAmmoSlot, -- 0
} }
for _, slot in ipairs(slots) do for i, slotFrame in ipairs(slots) do
local icon = _G["Inspect"..slot.."IconTexture"] local slotFrameName = slotFrame:GetName()
local frame = _G["Inspect"..slot] local icon = _G[slotFrameName.."IconTexture"]
frame:StripTextures() slotFrame:StripTextures()
frame:SetFrameLevel(frame:GetFrameLevel() + 2) slotFrame:SetFrameLevel(InspectPaperDollPanel:GetFrameLevel() + 2)
frame:CreateBackdrop("Default") slotFrame:CreateBackdrop("Default")
frame.backdrop:SetAllPoints() slotFrame.backdrop:SetAllPoints()
slotFrame.IconBorder:SetAlpha(0)
frame:StyleButton() slotFrame:StyleButton()
icon:SetTexCoord(unpack(E.TexCoords))
icon:SetInside() icon:SetInside()
end icon:SetTexCoord(unpack(E.TexCoords))
local styleButton -- Set the item icon borders when Update function runs
do hooksecurefunc(slotFrame, "Update", function(button)
local function awaitCache(button) if AscensionInspectFrame.unit then
if InspectFrame.unit then if button.hasItem then
styleButton(button) local itemID = GetInventoryItemID(AscensionInspectFrame.unit, button:GetID())
end if itemID then
end local _, _, quality = GetItemInfo(itemID)
styleButton = function(button) if not quality then
if button.hasItem then E:Delay(0.1, awaitCache, button)
local itemID = GetInventoryItemID(InspectFrame.unit, button:GetID()) return
if itemID then elseif quality then
local _, _, quality = GetItemInfo(itemID) button.backdrop:SetBackdropBorderColor(GetItemQualityColor(quality))
return
if not quality then end
E:Delay(0.1, awaitCache, button)
return
elseif quality then
button.backdrop:SetBackdropBorderColor(GetItemQualityColor(quality))
return
end end
end end
button.backdrop:SetBackdropBorderColor(unpack(E.media.bordercolor))
end end
end)
end
button.backdrop:SetBackdropBorderColor(unpack(E.media.bordercolor)) -- Handle the Build tab
InspectBuildPanel:StripTextures(true)
InspectBuildPanel:CreateBackdrop("Default")
HandleInspectBuildScrollFrame()
InspectBuildPanelBuildScrollInset:StripTextures()
InspectBuildPanelSpecs:StripTextures(true)
InspectBuildPanelSpecs:CreateBackdrop("Default")
S:HandleScrollList(InspectBuildPanelSpecs, function(button)
button:GetNormalTexture():SetAllPoints()
hooksecurefunc(button, "Update", function(self)
self:SetNormalTexture(E.media.blankTex)
local color = self.index % 2 == 0 and E.media.backdropcolor or E.media.backdropfadecolor
self:GetNormalTexture():SetVertexColor(unpack(color))
end)
end)
end)
-- Ascension used custom-scroll frames which don't map directly to built-in ElvUI functions :(
function HandleInspectBuildScrollFrame()
scrollList = InspectBuildPanel
scrollListScroll = scrollList.BuildScroll
if not scrollListScroll then return end
scrollListScroll:StripTextures()
local scrollBar = InspectBuildPanelBuildScrollScrollBar
scrollBar:StripTextures()
S:HandleNextPrevButton(InspectBuildPanelBuildScrollScrollBarScrollUpButton, 'up')
InspectBuildPanelBuildScrollScrollBarScrollUpButton.Texture:SetAlpha(0)
S:HandleNextPrevButton(InspectBuildPanelBuildScrollScrollBarScrollDownButton, 'down')
InspectBuildPanelBuildScrollScrollBarScrollDownButton.Texture:SetAlpha(0)
local thumb = scrollBar:GetThumbTexture()
local function ThumbOnEnter(frame)
local r, g, b = unpack(E.media.rgbvaluecolor)
local thumb = frame.Thumb or frame
if thumb.backdrop then
thumb.backdrop:SetBackdropColor(r, g, b, .75)
end end
end end
hooksecurefunc("InspectPaperDollItemSlotButton_Update", styleButton) local function ThumbOnLeave(frame)
local r, g, b = unpack(E.media.rgbvaluecolor)
local thumb = frame.Thumb or frame
S:HandleRotateButton(InspectModelRotateLeftButton) if thumb.backdrop and not thumb.__isActive then
S:HandleRotateButton(InspectModelRotateRightButton) thumb.backdrop:SetBackdropColor(r, g, b, .25)
InspectPVPFrame:StripTextures()
for i = 1, MAX_ARENA_TEAMS do
local frame = _G["InspectPVPTeam"..i]
frame:StripTextures()
frame:CreateBackdrop("Transparent")
frame.backdrop:Point("TOPLEFT", 9, -6)
frame.backdrop:Point("BOTTOMRIGHT", -24, -5)
-- _G["InspectPVPTeam"..i.."StandardBar"]:Kill()
S:SetBackdropHitRect(frame)
end
InspectTalentFrame:StripTextures()
S:HandleCloseButton(InspectTalentFrameCloseButton, InspectFrame.backdrop)
for i = 1, MAX_TALENT_TABS do
local headerTab = _G["InspectTalentFrameTab"..i]
headerTab:StripTextures()
headerTab:CreateBackdrop("Default", true)
headerTab.backdrop:Point("TOPLEFT", 2, -7)
headerTab.backdrop:Point("BOTTOMRIGHT", 1, -1)
S:SetBackdropHitRect(headerTab)
headerTab:Width(i == 2 and 101 or 102)
headerTab.SetWidth = E.noop
headerTab:HookScript("OnEnter", S.SetModifiedBackdrop)
headerTab:HookScript("OnLeave", S.SetOriginalBackdrop)
end
for i = 1, MAX_NUM_TALENTS do
local talent = _G["InspectTalentFrameTalent"..i]
if talent then
local icon = _G["InspectTalentFrameTalent"..i.."IconTexture"]
local rank = _G["InspectTalentFrameTalent"..i.."Rank"]
talent:StripTextures()
talent:SetTemplate("Default")
talent:StyleButton()
icon:SetInside()
icon:SetTexCoord(unpack(E.TexCoords))
icon:SetDrawLayer("ARTWORK")
rank:SetFont(E.LSM:Fetch("font", E.db.general.font), 12, "OUTLINE")
end end
end end
InspectHeadSlot:Point("TOPLEFT", 19, -76) local function ThumbOnMouseDown(frame)
InspectHandsSlot:Point("TOPLEFT", 307, -76) local r, g, b = unpack(E.media.rgbvaluecolor)
InspectMainHandSlot:Point("TOPLEFT", InspectPaperDollFrame, "BOTTOMLEFT", 121, 131) local thumb = frame.Thumb or frame
thumb.__isActive = true
InspectModelFrame:Size(237, 324) if thumb.backdrop then
InspectModelFrame:Point("TOPLEFT", 63, -76) thumb.backdrop:SetBackdropColor(r, g, b, .75)
end
end
InspectModelRotateLeftButton:Point("TOPLEFT", 4, -4) local function ThumbOnMouseUp(frame)
local r, g, b = unpack(E.media.rgbvaluecolor)
local thumb = frame.Thumb or frame
thumb.__isActive = nil
InspectTalentFrameScrollFrame:StripTextures() if thumb.backdrop then
InspectTalentFrameScrollFrame:CreateBackdrop("Transparent") thumb.backdrop:SetBackdropColor(r, g, b, .25)
InspectTalentFrameScrollFrame.backdrop:Point("TOPLEFT", -1, 1) end
InspectTalentFrameScrollFrame.backdrop:Point("BOTTOMRIGHT", 5, -4) end
InspectTalentFramePointsBar:StripTextures() if thumb then
thumb.Begin:SetAlpha(0)
thumb.End:SetAlpha(0)
thumb.Middle:SetAlpha(0)
thumb:CreateBackdrop('Transparent')
thumb.backdrop:SetFrameLevel(thumb:GetFrameLevel()+1)
InspectModelRotateRightButton:Point("TOPLEFT", InspectModelRotateLeftButton, "TOPRIGHT", 3, 0) local r, g, b = unpack(E.media.rgbvaluecolor)
thumb.backdrop:SetBackdropColor(r, g, b, .25)
thumb.backdrop:SetPoint("TOPLEFT", thumb.Begin)
thumb.backdrop:SetPoint("BOTTOMRIGHT", thumb.End)
InspectFrameTab1:Point("CENTER", InspectFrame, "BOTTOMLEFT", 54, 62) thumb:HookScript('OnEnter', ThumbOnEnter)
InspectFrameTab2:Point("LEFT", InspectFrameTab1, "RIGHT", -15, 0) thumb:HookScript('OnLeave', ThumbOnLeave)
InspectFrameTab3:Point("LEFT", InspectFrameTab2, "RIGHT", -15, 0) thumb:HookScript('OnMouseUp', ThumbOnMouseUp)
thumb:HookScript('OnMouseDown', ThumbOnMouseDown)
end
InspectTalentFrameBackgroundTopLeft:Point("TOPLEFT", 21, -77) local children = {InspectBuildPanelBuildScrollChild:GetChildren()}
InspectTalentFrameTab1:Point("TOPLEFT", 17, -40) for i, button in ipairs(children) do
button:GetNormalTexture():SetAllPoints()
InspectTalentFrameScrollFrame:Width(298) hooksecurefunc(button, "Update", function(self)
InspectTalentFrameScrollFrame:Point("TOPRIGHT", -66, -77) self:SetNormalTexture(E.media.blankTex)
local color = i % 2 == 0 and E.media.backdropcolor or E.media.backdropfadecolor
S:HandleScrollBar(InspectTalentFrameScrollFrameScrollBar) self:GetNormalTexture():SetVertexColor(unpack(color))
InspectTalentFrameScrollFrameScrollBar:Point("TOPLEFT", InspectTalentFrameScrollFrame, "TOPRIGHT", 8, -18) end)
InspectTalentFrameScrollFrameScrollBar:Point("BOTTOMLEFT", InspectTalentFrameScrollFrame, "BOTTOMRIGHT", 8, 15) end
end) end
@@ -10,6 +10,7 @@
<Script file="BGScore.lua"/> <Script file="BGScore.lua"/>
<Script file="Binding.lua"/> <Script file="Binding.lua"/>
<Script file="BlizzardOptions.lua"/> <Script file="BlizzardOptions.lua"/>
<Script file="CallBoard.lua"/>
<Script file="Calendar.lua"/> <Script file="Calendar.lua"/>
<Script file="Character.lua"/> <Script file="Character.lua"/>
<Script file="Debug.lua"/> <Script file="Debug.lua"/>
+1
View File
@@ -73,6 +73,7 @@ V.skins = {
binding = true, binding = true,
BlizzardOptions = true, BlizzardOptions = true,
calendar = true, calendar = true,
callboard = true,
character = true, character = true,
debug = true, debug = true,
dressingroom = true, dressingroom = true,
@@ -35,7 +35,7 @@ function UB:CreateUndressButton(auction)
else else
S:HandleButton(self.auctionDressUpButton) S:HandleButton(self.auctionDressUpButton)
self.auctionDressUpButton:Point("RIGHT", AuctionDressUpFrameResetButton, "LEFT", -3, 0) self.auctionDressUpButton:Point("RIGHT", AuctionDressUpFrameResetButton, "LEFT", -3, 0)
AuctionDressUpFrameResetButton:Point("BOTTOM", 42, 33) AuctionDressUpFrameResetButton:Point("BOTTOM", 40, 8)
end end
end end
end end
+5
View File
@@ -111,6 +111,11 @@ E.Options.args.skins = {
name = L["Calendar Frame"], name = L["Calendar Frame"],
desc = L["TOGGLESKIN_DESC"] desc = L["TOGGLESKIN_DESC"]
}, },
callboard = {
type = "toggle",
name = L["CallBoard Frame"],
desc = L["TOGGLESKIN_DESC"]
},
character = { character = {
type = "toggle", type = "toggle",
name = L["Character Frame"], name = L["Character Frame"],