Quantcast

Fixed embeding graphical issues

Darthpred [07-08-12 - 07:51]
Fixed embeding graphical issues
Filename
ElvUI_SLE/modules/skins/embedright.lua
ElvUI_SLE/modules/skins/load_skins.xml
diff --git a/ElvUI_SLE/modules/skins/embedright.lua b/ElvUI_SLE/modules/skins/embedright.lua
new file mode 100644
index 0000000..afec865
--- /dev/null
+++ b/ElvUI_SLE/modules/skins/embedright.lua
@@ -0,0 +1,178 @@
+local E, L, V, P, G = unpack(ElvUI); --Inport: Engine, Locales, PrivateDB, ProfileDB, GlobalDB
+local S = E:GetModule('Skins')
+
+function S:EmbedSkada()
+	local barSpacing = E:Scale(1)
+	local borderWidth = E:Scale(2)
+	local widthOffset = 4
+	local numBars = 8
+
+	for _, window in pairs(skadaWindows) do
+		window.bargroup:SetParent(RightChatPanel)
+	end
+	if E.db.general.panelBackdrop == 'SHOWBOTH' or E.db.general.panelBackdrop == 'RIGHT' then
+		if #skadaWindows == 1 then
+			self:EmbedSkadaWindow(skadaWindows[1], E.db.general.panelWidth - widthOffset, E.db.general.panelHeight - 25, "BOTTOMRIGHT", RightChatToggleButton, "TOPRIGHT", -2, 3)
+		elseif #skadaWindows == 2 then
+			self:EmbedSkadaWindow(skadaWindows[1], ((E.db.general.panelWidth - widthOffset) / 2) - (borderWidth + E.mult) + 1, E.db.general.panelHeight - 25,  "BOTTOMRIGHT", RightChatToggleButton, "TOPRIGHT", -2, 3)
+			self:EmbedSkadaWindow(skadaWindows[2], ((E.db.general.panelWidth - widthOffset) / 2) - (borderWidth + E.mult), E.db.general.panelHeight - 25,  "BOTTOMLEFT", RightChatDataPanel, "TOPLEFT", 2, 3)
+		elseif #skadaWindows > 2 then
+			self:EmbedSkadaWindow(skadaWindows[1], ((E.db.general.panelWidth - widthOffset) / 2) - (borderWidth + E.mult) + 1, E.db.general.panelHeight - 25,  "BOTTOMRIGHT", RightChatToggleButton, "TOPRIGHT", -2, 3)
+			self:EmbedSkadaWindow(skadaWindows[2], ((E.db.general.panelWidth - widthOffset) / 2) - (borderWidth + E.mult), (E.db.general.panelHeight - 25) / 2 - 3,  "BOTTOMLEFT", RightChatDataPanel, "TOPLEFT", 2, 3)
+			self:EmbedSkadaWindow(skadaWindows[3], skadaWindows[2].db.barwidth, (E.db.general.panelHeight - 25) / 2,  "BOTTOMLEFT", skadaWindows[2].bargroup.backdrop, "TOPLEFT", 2, 3)
+		end
+	else
+		if #skadaWindows == 1 then
+			self:EmbedSkadaWindow(skadaWindows[1], E.db.general.panelWidth - widthOffset, E.db.general.panelHeight - 2, "BOTTOMRIGHT", RightChatToggleButton, "TOPRIGHT", -2, 3)
+		elseif #skadaWindows == 2 then
+			self:EmbedSkadaWindow(skadaWindows[1], ((E.db.general.panelWidth - widthOffset) / 2) - (borderWidth + E.mult) + 1, E.db.general.panelHeight - 2,  "BOTTOMRIGHT", RightChatToggleButton, "TOPRIGHT", -2, 3)
+			self:EmbedSkadaWindow(skadaWindows[2], ((E.db.general.panelWidth - widthOffset) / 2) - (borderWidth + E.mult), E.db.general.panelHeight - 2,  "BOTTOMLEFT", RightChatDataPanel, "TOPLEFT", 2, 3)
+		elseif #skadaWindows > 2 then
+			self:EmbedSkadaWindow(skadaWindows[1], ((E.db.general.panelWidth - widthOffset) / 2) - (borderWidth + E.mult) + 1, E.db.general.panelHeight - 2,  "BOTTOMRIGHT", RightChatToggleButton, "TOPRIGHT", -2, 3)
+			self:EmbedSkadaWindow(skadaWindows[2], ((E.db.general.panelWidth - widthOffset) / 2) - (borderWidth + E.mult), (E.db.general.panelHeight - 2) / 2 - 3,  "BOTTOMLEFT", RightChatDataPanel, "TOPLEFT", 2, 3)
+			self:EmbedSkadaWindow(skadaWindows[3], skadaWindows[2].db.barwidth, (E.db.general.panelHeight - 2) / 2,  "BOTTOMLEFT", skadaWindows[2].bargroup.backdrop, "TOPLEFT", 2, 3)
+		end
+	end
+end
+
+function S:SetEmbedRight(addon)
+	self:RemovePrevious(addon)
+	if not IsAddOnLoaded(addon) then return; end
+	if self.lastAddon == nil then self.lastAddon = addon; end
+
+	if addon == 'Recount' then
+		Recount:LockWindows(true)
+
+		Recount_MainWindow:ClearAllPoints()
+		Recount_MainWindow:SetPoint("BOTTOMLEFT", RightChatDataPanel, "TOPLEFT", 0, 1)
+
+		if E.db.general.panelBackdrop == 'SHOWBOTH' or E.db.general.panelBackdrop == 'RIGHT' then
+			Recount_MainWindow:SetWidth(E.db.general.panelWidth)
+			Recount_MainWindow:SetHeight(E.db.general.panelHeight - 14)
+		else
+			Recount_MainWindow:SetWidth(E.db.general.panelWidth)
+			Recount_MainWindow:SetHeight(E.db.general.panelHeight + 9)
+		end
+		Recount_MainWindow:SetParent(RightChatPanel)
+		self.lastAddon = addon
+	elseif addon == 'Omen' then
+		Omen.db.profile.Locked = true
+		Omen:UpdateGrips()
+		if not Omen.oldUpdateGrips then
+			Omen.oldUpdateGrips = Omen.UpdateGrips
+		end
+		Omen.UpdateGrips = function(...)
+			local db = Omen.db.profile
+			if S.db.embedRight == 'Omen' then
+				Omen.VGrip1:ClearAllPoints()
+				Omen.VGrip1:SetPoint("TOPLEFT", Omen.BarList, "TOPLEFT", db.VGrip1, 0)
+				Omen.VGrip1:SetPoint("BOTTOMLEFT", Omen.BarList, "BOTTOMLEFT", db.VGrip1, 0)
+				Omen.VGrip2:ClearAllPoints()
+				Omen.VGrip2:SetPoint("TOPLEFT", Omen.BarList, "TOPLEFT", db.VGrip2, 0)
+				Omen.VGrip2:SetPoint("BOTTOMLEFT", Omen.BarList, "BOTTOMLEFT", db.VGrip2, 0)
+				Omen.Grip:Hide()
+				if db.Locked then
+					Omen.VGrip1:Hide()
+					Omen.VGrip2:Hide()
+				else
+					Omen.VGrip1:Show()
+					if db.Bar.ShowTPS then
+						Omen.VGrip2:Show()
+					else
+						Omen.VGrip2:Hide()
+					end
+				end
+			else
+				Omen.oldUpdateGrips(...)
+			end
+		end
+
+		if not Omen.oldSetAnchors then
+			Omen.oldSetAnchors = Omen.SetAnchors
+		end
+		Omen.SetAnchors = function(...)
+			if S.db.embedRight == 'Omen' then return; end
+			Omen.oldSetAnchors(...)
+		end
+
+		OmenAnchor:ClearAllPoints()
+		OmenAnchor:SetPoint("BOTTOMLEFT", RightChatDataPanel, "TOPLEFT", 0, 1)
+
+		if E.db.general.panelBackdrop == 'SHOWBOTH' or E.db.general.panelBackdrop == 'RIGHT' then
+			OmenAnchor:SetWidth(E.db.general.panelWidth)
+			OmenAnchor:SetHeight(E.db.general.panelHeight - 23)
+		else
+			OmenAnchor:SetWidth(E.db.general.panelWidth)
+			OmenAnchor:SetHeight(E.db.general.panelHeight)
+		end
+
+		OmenAnchor:SetParent(RightChatPanel)
+		OmenAnchor:SetFrameStrata('LOW')
+		if not OmenAnchor.SetFrameStrataOld then
+			OmenAnchor.SetFrameStrataOld = OmenAnchor.SetFrameStrata
+		end
+		OmenAnchor.SetFrameStrata = E.noop
+
+		local StartMoving = Omen.Title:GetScript('OnMouseDown')
+		local StopMoving = Omen.Title:GetScript('OnMouseUp')
+		Omen.Title:SetScript("OnMouseDown", function()
+			if S.db.embedRight == 'Omen' then return end
+			StartMoving()
+		end)
+
+		Omen.Title:SetScript("OnMouseUp", function()
+			if S.db.embedRight == 'Omen' then return end
+			StopMoving()
+		end)
+
+		Omen.BarList:SetScript("OnMouseDown", function()
+			if S.db.embedRight == 'Omen' then return end
+			StartMoving()
+		end)
+
+		Omen.BarList:SetScript("OnMouseUp", function()
+			if S.db.embedRight == 'Omen' then return end
+			StopMoving()
+		end)
+
+		self.lastAddon = addon
+	elseif addon == 'Skada' then
+		-- Update pre-existing displays
+		table.wipe(skadaWindows)
+		for _, window in ipairs(Skada:GetWindows()) do
+			window:UpdateDisplay()
+			tinsert(skadaWindows, window)
+		end
+
+		self:RemovePrevious(addon)
+
+		function Skada:CreateWindow(name, db)
+			Skada:CreateWindow_(name, db)
+
+			table.wipe(skadaWindows)
+			for _, window in ipairs(Skada:GetWindows()) do
+				tinsert(skadaWindows, window)
+			end
+
+			if S.db.embedRight == 'Skada' then
+				S:EmbedSkada()
+			end
+		end
+
+		function Skada:DeleteWindow(name)
+			Skada:DeleteWindow_(name)
+
+			table.wipe(skadaWindows)
+			for _, window in ipairs(Skada:GetWindows()) do
+				tinsert(skadaWindows, window)
+			end
+
+			if S.db.embedRight == 'Skada' then
+				S:EmbedSkada()
+			end
+		end
+
+		self:EmbedSkada()
+		self.lastAddon = addon
+	end
+end
\ No newline at end of file
diff --git a/ElvUI_SLE/modules/skins/load_skins.xml b/ElvUI_SLE/modules/skins/load_skins.xml
index 7c1c55e..a2b5302 100644
--- a/ElvUI_SLE/modules/skins/load_skins.xml
+++ b/ElvUI_SLE/modules/skins/load_skins.xml
@@ -1,5 +1,6 @@
 <Ui xmlns="http://www.blizzard.com/wow/ui/">
 	<Include file='addons\load_addons.xml'/>
 	<Include file='blizzard\load_blizzard.xml'/>
+	<Script file='embedright.lua'/>
 	<Script file='options.lua'/>
 </Ui>
\ No newline at end of file