Quantcast

Misc fixes and updates...

failcoder [08-11-15 - 21:11]
Misc fixes and updates...
Filename
SVUI_Skins/Loader.lua
SVUI_Skins/components/docklet.lua
SVUI_UnitFrames/class_resources/monk.lua
SVUI_UnitFrames/libs/Plugins/oUF_KungFu/oUF_KungFu.lua
diff --git a/SVUI_Skins/Loader.lua b/SVUI_Skins/Loader.lua
index 20e7109..1a70ce8 100644
--- a/SVUI_Skins/Loader.lua
+++ b/SVUI_Skins/Loader.lua
@@ -57,6 +57,7 @@ end

 SV.defaults[Schema] = {
 	["enable"] = true,
+	["enableAddonDock"] = true,
 	["blizzard"] = {
 		["enable"] = true,
 		["bags"] = true,
@@ -170,27 +171,37 @@ function MOD:LoadOptions()
 		name = L["Docked Addons"],
 		guiInline = true,
 		args = {
+			enableAddonDock = {
+				type = "toggle",
+				order = 1,
+				width = "full",
+				name = "Enable Docking",
+				get = function() return SV.db[Schema].enableAddonDock end,
+				set = function(a,value) SV.db[Schema].enableAddonDock = value; MOD:RegisterAddonDocklets() end,
+			},
 			DockletMain = {
 				type = "select",
-				order = 1,
+				order = 2,
 				name = "Primary Docklet",
 				desc = "Select an addon to occupy the primary docklet window",
+				disabled = function() return not SV.db[Schema].enableAddonDock end,
 				values = function() return MOD:GetDockables() end,
 				get = function() return SV.private.Docks.Embed1 end,
 				set = function(a,value) SV.private.Docks.Embed1 = value; MOD:RegisterAddonDocklets() end,
 			},
 			DockletSplit = {
 				type = "select",
-				order = 2,
+				order = 3,
 				name = "Secondary Docklet",
 				desc = "Select another addon",
+				disabled = function() return not SV.db[Schema].enableAddonDock end,
 				values = function() return MOD:GetDockables(true) end,
 				get = function() return SV.private.Docks.Embed2 end,
 				set = function(a,value) SV.private.Docks.Embed2 = value; MOD:RegisterAddonDocklets() end,
 			}
 		}
 	};
-
+
 	SV.Options.args[Schema] = {
 		type = 'group',
 		name = Schema,
diff --git a/SVUI_Skins/components/docklet.lua b/SVUI_Skins/components/docklet.lua
index f612936..e6f0ef6 100644
--- a/SVUI_Skins/components/docklet.lua
+++ b/SVUI_Skins/components/docklet.lua
@@ -307,7 +307,7 @@ end
 -- 	if(not IsAddOnLoaded("Details")) then return false end
 -- 	local width = self:GetWidth()
 -- 	local height = SV.Dock.BottomRight.Window:GetHeight();
-
+
 -- 	if(DetailsBaseFrame1) then
 -- 		DetailsBaseFrame1:ClearAllPoints()
 -- 		DetailsBaseFrame1:SetParent(self)
@@ -394,7 +394,7 @@ function MOD:FindDockables()
 			test = true;
 		end
 	end
-	return test;
+	self.Docklet:SetDocked(test);
 end

 function MOD:SetEmbedHandlers()
@@ -415,64 +415,76 @@ function MOD:SetEmbedHandlers()
 end

 function MOD:RegisterAddonDocklets()
-	if(self:FindDockables()) then
-		self.Docklet:SetDocked(true);
-		self.Docklet:Enable();
-	else
-		self.Docklet:Disable();
-		self.Docklet:SetDocked(false);
-		return
+	-- if(self:FindDockables()) then
+	-- 	self.Docklet:SetDocked(true);
+	-- 	self.Docklet:Enable();
+	-- else
+	-- 	self.Docklet:Disable();
+	-- 	self.Docklet:SetDocked(false);
+	-- 	return
+	-- end
+	local available = false;
+	if(SV.db.Skins.enableAddonDock) then
+		for addon,_ in pairs(DOCK_EMBEDS) do
+			if IsAddOnLoaded(addon) then
+				available = true;
+			end
+		end
 	end

-	local embed1,embed2,enabled1,enabled2 = RequestEmbedded();
-  	local addon1, addon2, extraTip = "", "", "";
-  	local active1, active2 = false, false;
+	self.Docklet:SetDocked(available);
+
+	if(available) then
+		local embed1,embed2,enabled1,enabled2 = RequestEmbedded();
+		local addon1, addon2, extraTip = "", "", "";
+		local active1, active2 = false, false;
+
+		self.Docklet.Embedded = {}
+		self.Docklet.Dock1.FrameLink = nil;
+		self.Docklet.Dock1.ExpandCallback = nil;
+		self.Docklet.Dock2.FrameLink = nil;
+		self.Docklet.Dock2.ExpandCallback = nil;
+
+		local width = self.Docklet:GetWidth() - 2;
+		self.Docklet.Dock1:SetWidth(width)
+
+		if(enabled2) then
+			if(enabled1) then
+				self.Docklet.Dock1:SetWidth(width * 0.5)
+			else
+				self.Docklet.Dock1:SetWidth(0.1)
+			end

-  	self.Docklet.Embedded = {}
-  	self.Docklet.Dock1.FrameLink = nil;
-  	self.Docklet.Dock1.ExpandCallback = nil;
-  	self.Docklet.Dock2.FrameLink = nil;
-  	self.Docklet.Dock2.ExpandCallback = nil;
+			self.Docklet.Dock2:ClearAllPoints()
+			self.Docklet.Dock2:SetPoint('TOPLEFT', self.Docklet.Dock1, 'TOPRIGHT', 0, 0);
+			self.Docklet.Dock2:SetPoint('BOTTOMRIGHT', self.Docklet, 'BOTTOMRIGHT', 1, -1);

-  	local width = self.Docklet:GetWidth() - 2;
-  	self.Docklet.Dock1:SetWidth(width)
+			active2, addon2 = self.Docklet.Dock2:EmbedAddon(embed2)

-  	if(enabled2) then
-  		if(enabled1) then
-			self.Docklet.Dock1:SetWidth(width * 0.5)
-		else
-			self.Docklet.Dock1:SetWidth(0.1)
+			if(not active2) then
+				self.Docklet.Dock1:SetWidth(width)
+			end
 		end

-		self.Docklet.Dock2:ClearAllPoints()
-		self.Docklet.Dock2:SetPoint('TOPLEFT', self.Docklet.Dock1, 'TOPRIGHT', 0, 0);
-		self.Docklet.Dock2:SetPoint('BOTTOMRIGHT', self.Docklet, 'BOTTOMRIGHT', 1, -1);
-
-		active2, addon2 = self.Docklet.Dock2:EmbedAddon(embed2)
-
-		if(not active2) then
-			self.Docklet.Dock1:SetWidth(width)
+		if(enabled1) then
+			active1, addon1 = self.Docklet.Dock1:EmbedAddon(embed1)
 		end
-	end

-  	if(enabled1) then
-		active1, addon1 = self.Docklet.Dock1:EmbedAddon(embed1)
-	end
+		if(active1 or active2) then
+			if(active2) then
+				extraTip = TIP_RIGHT_PATTERN:format(addon2)
+				self.Docklet.Dock1:Show()
+				self.Docklet.Dock2:Show()
+			else
+				self.Docklet.Dock1:Show()
+				self.Docklet.Dock2:Hide()
+			end

-	if(active1 or active2) then
-		if(active2) then
-			extraTip = TIP_RIGHT_PATTERN:format(addon2)
-			self.Docklet.Dock1:Show()
-			self.Docklet.Dock2:Show()
+			self.Docklet.Button:SetAttribute("tipText", ("%s%s"):format(addon1, extraTip));
 		else
-			self.Docklet.Dock1:Show()
+			self.Docklet.Dock1:Hide()
 			self.Docklet.Dock2:Hide()
 		end
-
-		self.Docklet.Button:SetAttribute("tipText", ("%s%s"):format(addon1, extraTip));
-	else
-		self.Docklet.Dock1:Hide()
-		self.Docklet.Dock2:Hide()
 	end
 end

diff --git a/SVUI_UnitFrames/class_resources/monk.lua b/SVUI_UnitFrames/class_resources/monk.lua
index a89025f..2a391d2 100644
--- a/SVUI_UnitFrames/class_resources/monk.lua
+++ b/SVUI_UnitFrames/class_resources/monk.lua
@@ -157,6 +157,7 @@ function MOD:CreateClassBar(playerFrame)
 	-- stagger.icon = stagger:CreateTexture(nil,'OVERLAY')
 	-- stagger.icon:SetAllPoints(stagger)
 	-- stagger.icon:SetTexture(STAGGER_ICON)
+	stagger.isEnabled = true;

 	bar.DrunkenMaster = stagger

diff --git a/SVUI_UnitFrames/libs/Plugins/oUF_KungFu/oUF_KungFu.lua b/SVUI_UnitFrames/libs/Plugins/oUF_KungFu/oUF_KungFu.lua
index 3cde5ec..109bc6c 100644
--- a/SVUI_UnitFrames/libs/Plugins/oUF_KungFu/oUF_KungFu.lua
+++ b/SVUI_UnitFrames/libs/Plugins/oUF_KungFu/oUF_KungFu.lua
@@ -164,7 +164,7 @@ local Update = function(self, event, unit)

 	bar.numPoints = numPoints

-	if(stagger:IsShown()) then
+	if(stagger.available) then
 		local staggering = getStaggerAmount()
 		if staggering == 0 then
 			stagger:SetValue(0)
@@ -203,17 +203,31 @@ local Update = function(self, event, unit)
 	if(bar.PostUpdate) then bar:PostUpdate(event) end
 end

+local ProxyDisable = function(self, element)
+	if(element:IsShown()) then
+		element:Hide()
+	end
+	element.available = false;
+	self:UnregisterEvent('UNIT_AURA', Update)
+end
+
+local ProxyEnable = function(self, element)
+	if(not element.isEnabled) then
+		element.available = false;
+		return
+	end
+	element:Show()
+	element.available = true;
+	self:RegisterEvent('UNIT_AURA', Update)
+end
+
 local Visibility = function(self, ...)
-	local bar = self.KungFu
-	local stagger = bar.DrunkenMaster
-	if((not stagger.isEnabled) or STANCE_OF_THE_STURY_OX_ID ~= GetShapeshiftFormID() or UnitHasVehiclePlayerFrameUI("player")) then
-		if(stagger:IsShown()) then
-			stagger:Hide()
-		end
-		self:UnregisterEvent('UNIT_AURA', Update)
+	local bar = self.KungFu;
+	local stagger = bar.DrunkenMaster;
+	if(STANCE_OF_THE_STURY_OX_ID ~= GetShapeshiftFormID() or UnitHasVehiclePlayerFrameUI("player")) then
+		ProxyDisable(self, stagger)
 	else
-		stagger:Show()
-		self:RegisterEvent('UNIT_AURA', Update)
+		ProxyEnable(self, stagger)
 		return Update(self, ...)
 	end
 end