Quantcast

5.0.12

Steven Jackson [10-14-14 - 19:15]
5.0.12
Filename
Interface/AddOns/SVUI/packages/dock/SVDock.lua
Interface/AddOns/SVUI/scripts/ego.lua
Interface/AddOns/SVUI/scripts/questwatch.lua
Interface/AddOns/SVUI_CraftOMatic/SVUI_CraftOMatic.lua
Interface/AddOns/SVUI_CraftOMatic/components/archaeology.lua
Interface/AddOns/SVUI_CraftOMatic/components/cooking.lua
Interface/AddOns/SVUI_CraftOMatic/components/farming.lua
Interface/AddOns/SVUI_CraftOMatic/components/fishing.lua
Interface/BUTTONS/ActionBarFlyoutButton-FlyoutMid.blp
Interface/BUTTONS/ActionBarFlyoutButton-FlyoutMidLeft.blp
Interface/BUTTONS/ActionBarFlyoutButton.blp
Interface/BUTTONS/Thumbs.db
Interface/BUTTONS/UI-Button-Borders.blp
Interface/BUTTONS/UI-Button-Borders2.blp
Interface/BUTTONS/UI-CheckBox-Check-Disabled.blp
Interface/BUTTONS/UI-CheckBox-Check.blp
Interface/BUTTONS/UI-CheckBox-Down.blp
Interface/BUTTONS/UI-CheckBox-Up.blp
Interface/BUTTONS/UI-Debuff-Overlays.blp
Interface/BUTTONS/UI-MinusButton-Disabled.blp
Interface/BUTTONS/UI-MinusButton-Down.blp
Interface/BUTTONS/UI-MinusButton-Up.blp
Interface/BUTTONS/UI-SliderBar-Border.blp
diff --git a/Interface/AddOns/SVUI/packages/dock/SVDock.lua b/Interface/AddOns/SVUI/packages/dock/SVDock.lua
index b91bf9b..5018ff0 100644
--- a/Interface/AddOns/SVUI/packages/dock/SVDock.lua
+++ b/Interface/AddOns/SVUI/packages/dock/SVDock.lua
@@ -395,6 +395,8 @@ function MOD:CreateBasicToolButton(name,texture,onclick,frameName,isdefault)
 		DEFAULT_DOCKLET = fName
 		button:SaveColors("green", "green")
 	end
+
+	return button
 end
 --[[
 ##########################################################
@@ -879,7 +881,7 @@ function SV:RegisterDocklet(name, tooltip, texture, onclick, isdefault)
 		frame.FrameName = name;
 		tinsert(DOCKLET_CACHE, frame);
 		frame.listIndex = #DOCKLET_CACHE;
-		self.SVDock:CreateBasicToolButton(tooltip, texture, onclick, name, isdefault)
+		frame.ToolbarButton = self.SVDock:CreateBasicToolButton(tooltip, texture, onclick, name, isdefault)
 	end
 end

diff --git a/Interface/AddOns/SVUI/scripts/ego.lua b/Interface/AddOns/SVUI/scripts/ego.lua
index 4cebace..5b6a9fa 100644
--- a/Interface/AddOns/SVUI/scripts/ego.lua
+++ b/Interface/AddOns/SVUI/scripts/ego.lua
@@ -33,66 +33,88 @@ local L = SV.L

 local Sequences = {
 	{65, 1000}, --shrug
+	{68, 1000}, --cheer
 	{70, 1000}, --laugh
 	{74, 1000}, --roar
+	{77, 1000}, --cry
+	{84, 1000}, --point
 	{82, 1000}, --flex
 };

+local EgoFrame = CreateFrame("PlayerModel", "SVUI_EgoModel", UIParent);
+
 local function rng()
 	return random(1, #Sequences)
 end

-local GoGoGadget = function(self, key)
+local LaunchAnimation = function(self, key)
 	key = key or rng()
 	local emote = Sequences[key][1]
-	self:SetAlpha(1)
-	self.Model1:SetAnimation(emote)
-	self.Model2:SetAnimation(emote)
+	self:Show()
+	self:SetAnimation(emote)
+	self.anim:Play()
 end

-local function LoadSVEgo()
-	local GameMenuFrame = _G.GameMenuFrame
+local LaunchFreezeFrame = function(self, key)
+	key = key or rng()
+	local animation = Sequences[key]
+	local size = SVUIParent:GetHeight()
+	self:Show()
+	self:SetSequenceTime(unpack(animation))
+	self.anim[2]:SetOffset(size, -size)
+	self.anim[2]:SetOffset(0, 0)
+	self.anim:Play()
+end

-	local EgoFrame = CreateFrame("Frame", "SVUI_EgoFrame", UIParent);
-	EgoFrame:SetParent(GameMenuFrame)
-	EgoFrame:SetFrameLevel(0)
-	EgoFrame:SetAllPoints(SV.UIParent)
+local ResetPosition = function(self)
+	local size = SVUIParent:GetHeight()
+	self:SetPoint("TOP", SV.UIParent, "TOP", 0, 0)
+	self:SetWidth(size)
+	self:SetHeight(size)
+	self:SetUnit("player")
+end

-	EgoFrame.BG1 = EgoFrame:CreateTexture(nil, "BACKGROUND", nil, -7)
-    EgoFrame.BG1:SetPoint("TOPLEFT", EgoFrame, "TOPLEFT", 0, 0)
-    EgoFrame.BG1:SetPoint("BOTTOMRIGHT", EgoFrame, "TOPRIGHT", 0, -300)
-    EgoFrame.BG1:SetTexture([[Interface\AddOns\SVUI\assets\artwork\Template\DEFAULT]])
-	EgoFrame.BG1:SetVertexColor(0, 0, 0, 0.8)
+local Ego_OnEvent = function(self, event)
+	if event == "ACHIEVEMENT_EARNED" then
+		self:LaunchAnimation(4)
+	else
+		self:LaunchAnimation(6)
+	end
+end

-	EgoFrame.BG2 = EgoFrame:CreateTexture(nil, "BACKGROUND", nil, -7)
-    EgoFrame.BG2:SetPoint("BOTTOMLEFT", EgoFrame, "BOTTOMLEFT", 0, 0)
-    EgoFrame.BG2:SetPoint("TOPRIGHT", EgoFrame, "BOTTOMRIGHT", 0, 300)
-    EgoFrame.BG2:SetTexture([[Interface\AddOns\SVUI\assets\artwork\Template\DEFAULT]])
-	EgoFrame.BG2:SetVertexColor(0, 0, 0, 0.8)
+function SV:ToggleEgo()
+	if not SV.db.general.ego then
+		EgoFrame:UnregisterEvent("ACHIEVEMENT_EARNED")
+		EgoFrame:UnregisterEvent("SCREENSHOT_SUCCEEDED")
+		EgoFrame:SetScript("OnEvent", nil)
+	else
+		EgoFrame:RegisterEvent("ACHIEVEMENT_EARNED")
+		EgoFrame:RegisterEvent("SCREENSHOT_SUCCEEDED")
+		EgoFrame:SetScript("OnEvent", Ego_OnEvent)
+	end
+end

-	EgoFrame.Model1 = CreateFrame("PlayerModel", "SVUI_EgoModel1", EgoFrame);
-	EgoFrame.Model1:SetUnit("player")
-	EgoFrame.Model1:SetRotation(1)
-	EgoFrame.Model1:SetPortraitZoom(0.3)
-	EgoFrame.Model1:SetPosition(0,0,-0.25)
-	EgoFrame.Model1:SetFrameStrata("BACKGROUND")
-	EgoFrame.Model1:SetPoint("TOPLEFT", EgoFrame, "TOPLEFT", -250, -300)
-	EgoFrame.Model1:SetPoint("BOTTOMRIGHT", EgoFrame, "BOTTOM", 0, 300)
+local EgoPop_OnUpdate = function(self) self.parent:SetAlpha(0) end

-	EgoFrame.Model2 = CreateFrame("PlayerModel", "SVUI_EgoModel2", EgoFrame);
-	EgoFrame.Model2:SetUnit("player")
-	EgoFrame.Model2:SetRotation(-1)
-	EgoFrame.Model2:SetPortraitZoom(0.3)
-	EgoFrame.Model2:SetPosition(0,0,-0.25)
-	EgoFrame.Model2:SetFrameStrata("BACKGROUND")
-	EgoFrame.Model2:SetPoint("TOPRIGHT", EgoFrame, "TOPRIGHT", 250, -300)
-	EgoFrame.Model2:SetPoint("BOTTOMLEFT", EgoFrame, "BOTTOM", 250, 300)
+local function LoadSVEgo()
+	local size = UIParent:GetWidth()
+	EgoFrame:SetParent(SV.UIParent)
+	EgoFrame:SetPoint("TOP", SV.UIParent, "TOP", 0, 0)
+	EgoFrame:SetWidth(size)
+	EgoFrame:SetHeight(size)
+	EgoFrame:SetUnit("player")
+	EgoFrame.LaunchAnimation = LaunchAnimation
+	EgoFrame.LaunchFreezeFrame = LaunchFreezeFrame
+	EgoFrame.ResetPosition = ResetPosition
+	SV.Animate:Slide(EgoFrame, 0, 0, true, 1.5)
+	EgoFrame.anim[4]:SetScript("OnFinished", EgoPop_OnUpdate)

-	EgoFrame.GoGoGadget = GoGoGadget
+	EgoFrame:Hide()
+end

-	EgoFrame:SetScript("OnShow", function(self)
-		self:GoGoGadget()
-	end)
+_G.SlashCmdList["BADASS"] = function()
+	EgoFrame:LaunchAnimation(4)
 end
+_G.SLASH_BADASS1 = "/badass"

 SV:NewScript(LoadSVEgo)
\ No newline at end of file
diff --git a/Interface/AddOns/SVUI/scripts/questwatch.lua b/Interface/AddOns/SVUI/scripts/questwatch.lua
index e7884af..4932ff6 100644
--- a/Interface/AddOns/SVUI/scripts/questwatch.lua
+++ b/Interface/AddOns/SVUI/scripts/questwatch.lua
@@ -53,299 +53,59 @@ GET ADDON DATA
 ]]--
 local SV = select(2, ...)
 local L = SV.L
-local QuestDocklet = CreateFrame("Frame", "SVQuestFrameEventListener", UIParent)
 --[[
 ##########################################################
 LOCAL VARS
 ##########################################################
 ]]--
-local WatchFrame = _G["WatchFrame"];
-local SuperDockWindowRight;
-local currentQuestItems = {};
-local QuestDockletFrame, QuestDockletFrameTitle, QuestDockletFrameList, QuestDockletFrameSlider;
+local SuperDockWindowRight, QuestFrame;
 local ICON_FILE = [[Interface\AddOns\SVUI\assets\artwork\Icons\DOCK-QUESTS]]
-local WATCHFRAME_MAXLINEWIDTH = _G.WATCHFRAME_MAXLINEWIDTH;
-local WATCHFRAME_EXPANDEDWIDTH = _G.WATCHFRAME_EXPANDEDWIDTH;
-local WATCHFRAME_FILTER_TYPE = _G.WATCHFRAME_FILTER_TYPE;
-local WATCHFRAME_FILTER_COMPLETED_QUESTS = _G.WATCHFRAME_FILTER_COMPLETED_QUESTS;
-local WATCHFRAME_FILTER_ACHIEVEMENTS = _G.WATCHFRAME_FILTER_ACHIEVEMENTS;
-local WATCHFRAME_FILTER_REMOTE_ZONES = _G.WATCHFRAME_FILTER_REMOTE_ZONES;
-local OBJECTIVES_TRACKER_LABEL = _G.OBJECTIVES_TRACKER_LABEL;
-local WATCHFRAME_NUM_ITEMS = _G.WATCHFRAME_NUM_ITEMS;
+local OBJECTIVE_TRACKER_LINE_WIDTH = _G.OBJECTIVE_TRACKER_LINE_WIDTH;
 --[[
 ##########################################################
 PRE VARS/FUNCTIONS
 ##########################################################
 ]]--
-local IsTrackingCompletedQuests = function()
-	return band(WATCHFRAME_FILTER_TYPE, WATCHFRAME_FILTER_COMPLETED_QUESTS) == WATCHFRAME_FILTER_COMPLETED_QUESTS or false;
-end
-local IsTrackingRemoteQuests = function()
-	return ( band(WATCHFRAME_FILTER_TYPE, WATCHFRAME_FILTER_REMOTE_ZONES) == WATCHFRAME_FILTER_REMOTE_ZONES ) or false;
-end
-local IsTrackingAchievements = function()
-	return ( band(WATCHFRAME_FILTER_TYPE, WATCHFRAME_FILTER_ACHIEVEMENTS) == WATCHFRAME_FILTER_ACHIEVEMENTS ) or false;
-end
-local IsUsingFilters = function()
-	if ( WATCHFRAME_FILTER_COMPLETED_QUESTS == nil ) then return false; end
-	return true;
-end
---[[
-QUEST ITEM MACRO
-
-/target [@mouseover]
-/click WatchFrameItem1
-/click WatchFrameItem2
-/click WatchFrameItem3
-/click WatchFrameItem4
-/click WatchFrameItem5
-/click WatchFrameItem6
-]]--
-
--- poiWatchFrameLines1_1
--- poiWatchFrameLines2_1
--- poiWatchFrameLines3_1
--- poiButton:SetPoint("TOPRIGHT", questTitle, "TOPLEFT", 0, 5)
-
-local function QWQuestItems()
-	for i=1, WATCHFRAME_NUM_ITEMS do
-		local button = _G["WatchFrameItem"..i]
-		if button then
-			local point, relativeTo, relativePoint, xOffset, yOffset = button:GetPoint(1)
-			button:SetFrameStrata("LOW")
-			button:SetPoint("TOPRIGHT", relativeTo, "TOPLEFT", -31, -2);
-			if not button.styled then
-				button:SetSlotTemplate()
-				button:SetBackdropColor(0,0,0,0)
-				_G["WatchFrameItem"..i.."NormalTexture"]:SetAlpha(0)
-				_G["WatchFrameItem"..i.."IconTexture"]:FillInner()
-				_G["WatchFrameItem"..i.."IconTexture"]:SetTexCoord(0.1,0.9,0.1,0.9)
-				SV.Timers:AddCooldown(_G["WatchFrameItem"..i.."Cooldown"])
-				button.styled = true
-			end
-		end
-	end
-end
-
-local function QWCheckTimers()
-	local lstTimers = GetQuestTimers();
-	local numTimers = 0;
-	local filterOK = false;
-	if ( lstTimers ) then
-		filterOK = true;
-		numTimers = 1;
-	else
-		numTimers = 0;
-	end
-	return filterOK,numTimers;
-end
-
-local function QWCheckQuests()
-	local numQuestWatches = GetNumQuestWatches();
-	local playerMoney = GetMoney();
-	local numQuests = QuestMapUpdateAllQuests();
-	local currentMapZone = GetCurrentMapZone();
-	local questIndex = 0;
-	local numCurrentMapQuests = 0;
-	local numLocalQuests = 0;
-	local numToShow = 0;
-	local filterOK = false;
-	local usingFilters = IsUsingFilters();
-	if ( not usingFilters ) then
-		filterOK = true;
-		return filterOK, numQuestWatches or 0;
-	elseif ( numQuestWatches == 0 ) then
-		return filterOK, numQuestWatches or 0;
-	end
-	local trackingCompleted = IsTrackingCompletedQuests();
-	local trackingRemote = IsTrackingRemoteQuests();
-	local localQuests = {};
-	local currentMapQuests = {};
-	twipe(currentQuestItems);
-	localQuests["zone"] = currentMapZone;
-	for i = 1, numQuests do
-		local questId = QuestPOIGetQuestIDByVisibleIndex(i);
-		currentMapQuests[questId] = i;
-		numCurrentMapQuests = numCurrentMapQuests + 1;
-	end
-	for id in pairs(currentMapQuests) do
-		localQuests[id] = true;
-		numLocalQuests = numLocalQuests + 1;
-	end
-	for i = 1, numQuestWatches do
-		questIndex = GetQuestIndexForWatch(i);
-		if ( questIndex ) then
-			local questTitle, level, questTag, suggestedGroup, isHeader, isCollapsed, isComplete, isDaily, questID = GetQuestLogTitle(questIndex);
-			local requiredMoney = GetQuestLogRequiredMoney(questIndex);
-			local numObjectives = GetNumQuestLeaderBoards(questIndex);
-			local itemLink,itemIcon,itemCharges = GetQuestLogSpecialItemInfo(questIndex);
-			if ( isComplete and isComplete < 0 ) then
-				isComplete = false;
-			elseif ( numObjectives == 0 and playerMoney >= requiredMoney ) then
-				isComplete = true;
-			end
-			if ( itemLink ) then
-				local _,itemID,_,_,_,_,_,_,_,_,_,_ = split(":", itemLink)
-				local itemName = GetItemInfo(itemLink)
-				currentQuestItems[itemName] = { ['id'] = itemID, ['icon'] = itemIcon, ['charge'] = itemCharges, ['macro'] = "/use item:"..itemID };
-			end
-			local isLocal = localQuests[questID];
-			filterOK = true;
-			if ( isComplete and not trackingCompleted ) then
-				filterOK = false;
-			elseif ( not isLocal and not trackingRemote ) then
-				filterOK = false;
-			end
-			if ( filterOK ) then
-				numToShow = numToShow + 1;
-			end
-		end
-	end
-	filterOK = false;
-	if ( numToShow > 0 ) then
-		filterOK = true;
-	end
-	return filterOK, numQuestWatches or 0;
-end
-
-local function QWSetAllLevels()
-    local i = 1
-    local scrollOffset = HybridScrollFrame_GetOffset(QuestLogScrollFrame)
-    for i,button in pairs(QuestLogScrollFrame.buttons) do
-        local questIndex = i + scrollOffset
-        local questTitle, level, questTag, suggestedGroup, isHeader, isCollapsed, isComplete, isDaily, questID = GetQuestLogTitle(questIndex)
-        if ( not isHeader ) and questTitle then
-            local newTitle = string.format("[%d] %s", level or "?", questTitle)
-            button:SetText(newTitle)
-            QuestLogTitleButton_Resize(button)
-        end
-        i = i + 1
-    end
-end
-
-local function QWCheckAchievements()
-	local numAchievementWatches = GetNumTrackedAchievements();
-	local lstAchievementWatches = GetTrackedAchievements();
-	local filterOK = false;
-	local usingFilters = IsUsingFilters();
-	if ( not usingFilters ) then
-		filterOK = true;
-		return filterOK, numAchievementWatches or 0;
-	end
-	local trackingAchievements = IsTrackingAchievements();
-	filterOK = false;
-	if ( numAchievementWatches > 0 and trackingAchievements ) then
-		filterOK = true;
-	end
-	return filterOK, numAchievementWatches or 0;
-end
-
-local function QWSetWatchFrameTitle()
-	local _, numQuests, numAchievements, numTimers
-	_, numQuests = QWCheckQuests()
-	_, numAchievements = QWCheckAchievements()
-	_, numTimers = QWCheckTimers()
-	local numTracked = numQuests + numAchievements + numTimers;
-	if WatchFrameTitle then
-		WatchFrameTitle:SetText(OBJECTIVES_TRACKER_LABEL.." ("..numTracked ..")")
-	end
-end
-
-local function QWCheckAutoShow(self)
-	if not self then return end
-	if self:IsShown() then
-		if WatchFrameHeader then
-			WatchFrameHeader:Show()
-		end
-		WatchFrameTitle:Show()
-		WatchFrameCollapseExpandButton:Show()
-		WatchFrameLines:Show()
-	end
-end
-
-local function SetQuestDockEvents()
-	WatchFrame:HookScript("OnEvent", QWQuestItems)
-	WatchFrame.ScrollListUpdate = function(self)
-		local WatchFrame = _G.WatchFrame
-		QWSetWatchFrameTitle();
-		WATCHFRAME_MAXLINEWIDTH = WatchFrame:GetWidth();
-		if QuestDockletFrameList then
-			WATCHFRAME_MAXLINEWIDTH = QuestDockletFrameList:GetWidth() - 62
-		end
-	end
-	WatchFrame.OnUpdate = function(self)
-		local WatchFrame = _G.WatchFrame
-		WATCHFRAME_MAXLINEWIDTH = WatchFrame:GetWidth()
-		if QuestDockletFrameList then
-			WATCHFRAME_MAXLINEWIDTH = QuestDockletFrameList:GetWidth() - 62
-		end
-		QWQuestItems();
-		--QWSetAllLevels()
-		WatchFrame.ScrollListUpdate()
-	end
-	-- WatchFrame.OnShow = function(self)
-	-- 	local WatchFrame = _G.WatchFrame
-	-- 	Collapsed = (WatchFrame.collapsed or false);
-	-- 	if WatchFrameHeader == nil then
-	-- 		WatchFrame.userCollapsed = true
-	-- 	end
-	-- 	UserCollapsed = (WatchFrame.userCollapsed or false);
-	-- 	if Collapsed then
-	-- 		WatchFrame_Collapse(WatchFrame)
-	-- 		WatchFrame.userCollapsed=UserCollapsed
-	-- 	else
-	-- 		WatchFrame_Expand(WatchFrame)
-	-- 	end
-	-- 	WatchFrame.OnUpdate();
-	-- end
-	-- WatchFrame.OnShow()
-
-	hooksecurefunc("QuestLog_Update", WatchFrame.OnUpdate)
-end
+
 --[[
 ##########################################################
 CORE FUNCTIONS
 ##########################################################
 ]]--
-local QuestDocklet_OnEvent = function(self, event, arg)
-	if event == "CVAR_UPDATE" then
-		if arg == "WATCH_FRAME_WIDTH_TEXT" then
-			if WatchFrame then
-				WatchFrame.OnUpdate()
-			end
-		end
-	elseif event == "QUEST_AUTOCOMPLETE" then
+local QuestFrame_OnEvent = function(self, event)
+	if(event == "QUEST_AUTOCOMPLETE" and SuperDockWindowRight and QuestFrame) then
 		if SuperDockWindowRight.FrameName and _G[SuperDockWindowRight.FrameName] and _G[SuperDockWindowRight.FrameName]:IsShown() then return end
-			local button = _G["QuestDockletFrame_ToolBarButton"]
-		if not QuestDockletFrame:IsShown() then
-			SuperDockWindowRight.FrameName = "QuestDockletFrame"
+		if not QuestFrame:IsShown() then
+			SuperDockWindowRight.FrameName = "SVUI_QuestFrame"
 			if not SuperDockWindowRight:IsShown()then
 				SuperDockWindowRight:Show()
 			end
 			SV:CycleDocklets()
-			QuestDockletFrame:Show()
-			if button then
-				button.IsOpen = true;
-				button:SaveColors("green", "green")
+			QuestFrame:Show()
+			if(QuestFrame.ToolbarButton) then
+				QuestFrame.ToolbarButton.IsOpen = true;
+				QuestFrame.ToolbarButton:SaveColors("green", "green")
 			end
 		end
 	end
 end

-local function CreateQuestDocklet()
-	SuperDockWindowRight = _G["SuperDockWindowRight"]
-	if(SV.GameVersion >= 60000) then
+local function CreateQuestFrame()
+	SuperDockWindowRight = _G.SuperDockWindowRight
+	local ObjectiveTrackerFrame = _G.ObjectiveTrackerFrame

+	if(not SV.db.general.questWatch) then
 		ObjectiveTrackerFrame:RemoveTextures(true)

-		local frame = CreateFrame("Frame", "SVUI_QuestFrame", UIParent);
-		frame:SetSize(200, ObjectiveTrackerFrame:GetHeight());
-		frame:SetPoint("TOPRIGHT", UIParent, "RIGHT", -200, 100);
+		QuestFrame = CreateFrame("Frame", "SVUI_QuestFrame", UIParent);
+		QuestFrame:SetSize(200, ObjectiveTrackerFrame:GetHeight());
+		QuestFrame:SetPoint("TOPRIGHT", UIParent, "RIGHT", -200, 100);
+
 		ObjectiveTrackerFrame:ClearAllPoints()
 		ObjectiveTrackerFrame:SetClampedToScreen(false)
-		ObjectiveTrackerFrame:SetParent(SVUI_QuestFrame)
-		ObjectiveTrackerFrame:SetAllPoints(SVUI_QuestFrame)
-		ObjectiveTrackerFrame:SetFrameLevel(SVUI_QuestFrame:GetFrameLevel()  +  1)
+		ObjectiveTrackerFrame:SetParent(QuestFrame)
+		ObjectiveTrackerFrame:SetAllPoints(QuestFrame)
+		ObjectiveTrackerFrame:SetFrameLevel(QuestFrame:GetFrameLevel()  +  1)
 		ObjectiveTrackerFrame.ClearAllPoints = SV.fubar;
 		ObjectiveTrackerFrame.SetPoint = SV.fubar;
 		ObjectiveTrackerFrame.SetAllPoints = SV.fubar;
@@ -357,51 +117,35 @@ local function CreateQuestDocklet()
 		ObjectiveTrackerFrame.HeaderMenu:RemoveTextures(true)
 		ObjectiveTrackerFrame.BlockDropDown:RemoveTextures(true)

-		SV.Mentalo:Add(frame, "Quest Watch");
-	elseif(not SV.db.general.questWatch) then
-		local frame = CreateFrame("Frame", "SVUI_QuestFrame", UIParent);
-		frame:SetSize(200, WatchFrame:GetHeight());
-		frame:SetPoint("RIGHT", UIParent, "RIGHT", -100, 0);
-		WatchFrame:ClearAllPoints()
-		WatchFrame:SetClampedToScreen(false)
-		WatchFrame:SetParent(SVUI_QuestFrame)
-		WatchFrame:SetAllPoints(SVUI_QuestFrame)
-		WatchFrame:SetFrameLevel(SVUI_QuestFrame:GetFrameLevel()  +  1)
-		WatchFrame.ClearAllPoints = SV.fubar;
-		WatchFrame.SetPoint = SV.fubar;
-		WatchFrame.SetAllPoints = SV.fubar;
-		WatchFrameLines.ClearAllPoints = SV.fubar;
-		WatchFrameLines.SetPoint = SV.fubar;
-		WatchFrameLines.SetAllPoints = SV.fubar;
-
-		SV.Mentalo:Add(frame, "Quest Watch");
+		SV.Mentalo:Add(QuestFrame, "Quest Watch");
 	else
 		local bgTex = [[Interface\BUTTONS\WHITE8X8]]
 		local bdTex = SV.Media.bar.glow
-		QuestDockletFrame = CreateFrame("Frame", "QuestDockletFrame", SuperDockWindowRight);
-		QuestDockletFrame:SetFrameStrata("BACKGROUND");
-		SV:RegisterDocklet("QuestDockletFrame", "Quest Watch", ICON_FILE, false, true)
-
-		QuestDockletFrameList = CreateFrame("ScrollFrame", nil, QuestDockletFrame);
-		QuestDockletFrameList:SetPoint("TOPLEFT", QuestDockletFrame, -62, 0);
-		QuestDockletFrameList:SetPoint("BOTTOMRIGHT", QuestDockletFrame, -31, 21);
-		QuestDockletFrameList:EnableMouseWheel(true);

-		QuestDockletFrameSlider = CreateFrame("Slider", nil, QuestDockletFrameList);
-		QuestDockletFrameSlider:SetHeight(QuestDockletFrameList:GetHeight());
-		QuestDockletFrameSlider:SetWidth(18);
-		QuestDockletFrameSlider:SetPoint("TOPRIGHT", QuestDockletFrame, "TOPRIGHT", -3, 0);
-		QuestDockletFrameSlider:SetBackdrop({bgFile = bgTex, edgeFile = bdTex, edgeSize = 4, insets = {left = 3, right = 3, top = 3, bottom = 3}});
-		QuestDockletFrameSlider:SetFrameLevel(6)
-		QuestDockletFrameSlider:SetFixedPanelTemplate("Transparent", true);
-		QuestDockletFrameSlider:SetThumbTexture("Interface\\Buttons\\UI-ScrollBar-Knob");
-		QuestDockletFrameSlider:SetOrientation("VERTICAL");
-		QuestDockletFrameSlider:SetValueStep(5);
-		QuestDockletFrameSlider:SetMinMaxValues(1, 420);
-		QuestDockletFrameSlider:SetValue(1);
-
-		QuestDockletFrameList.slider = QuestDockletFrameSlider;
-		QuestDockletFrameList:SetScript("OnMouseWheel", function(self, delta)
+		QuestFrame = CreateFrame("Frame", "SVUI_QuestFrame", SuperDockWindowRight);
+		QuestFrame:SetFrameStrata("BACKGROUND");
+		SV:RegisterDocklet("SVUI_QuestFrame", "Quest Watch", ICON_FILE, false, true)
+
+		local listFrame = CreateFrame("ScrollFrame", nil, QuestFrame);
+		listFrame:SetPoint("TOPLEFT", QuestFrame, -62, 0);
+		listFrame:SetPoint("BOTTOMRIGHT", QuestFrame, -31, 21);
+		listFrame:EnableMouseWheel(true);
+
+		local scrollFrame = CreateFrame("Slider", nil, listFrame);
+		scrollFrame:SetHeight(listFrame:GetHeight());
+		scrollFrame:SetWidth(18);
+		scrollFrame:SetPoint("TOPRIGHT", QuestFrame, "TOPRIGHT", -3, 0);
+		scrollFrame:SetBackdrop({bgFile = bgTex, edgeFile = bdTex, edgeSize = 4, insets = {left = 3, right = 3, top = 3, bottom = 3}});
+		scrollFrame:SetFrameLevel(6)
+		scrollFrame:SetFixedPanelTemplate("Transparent", true);
+		scrollFrame:SetThumbTexture("Interface\\Buttons\\UI-ScrollBar-Knob");
+		scrollFrame:SetOrientation("VERTICAL");
+		scrollFrame:SetValueStep(5);
+		scrollFrame:SetMinMaxValues(1, 420);
+		scrollFrame:SetValue(1);
+
+		listFrame.slider = scrollFrame;
+		listFrame:SetScript("OnMouseWheel", function(self, delta)
 			local scroll = self:GetVerticalScroll();
 			local value = (scroll - (20  *  delta));
 			if value < -1 then
@@ -413,70 +157,39 @@ local function CreateQuestDocklet()
 			self:SetVerticalScroll(value)
 			self.slider:SetValue(value)
 		end)
-
-		local QuestDockletFrameTitle = CreateFrame("Frame", nil, QuestDockletFrame);
-		QuestDockletFrameTitle:Point("TOPLEFT", QuestDockletFrameList, "BOTTOMLEFT", 0, 0);
-		QuestDockletFrameTitle:Point("TOPRIGHT", QuestDockletFrameList, "BOTTOMRIGHT", 0, 0);
-		QuestDockletFrameTitle:SetHeight(18)

-		WatchFrame:ClearAllPoints()
-		WatchFrame:SetClampedToScreen(false)
-		WatchFrame:SetParent(QuestDockletFrameList)
-		WatchFrame:SetHeight(500)
-		WatchFrame:SetPoint("TOPRIGHT", QuestDockletFrameList, "TOPRIGHT", -31, 0)
-		WatchFrame:SetFrameLevel(QuestDockletFrameList:GetFrameLevel()  +  1)
-		if QuestDockletFrameList then
-			WATCHFRAME_MAXLINEWIDTH = (QuestDockletFrameList:GetWidth() - 100);
-			WATCHFRAME_EXPANDEDWIDTH = (QuestDockletFrameList:GetWidth() - 100);
+		ObjectiveTrackerFrame:ClearAllPoints()
+		ObjectiveTrackerFrame:SetClampedToScreen(false)
+		ObjectiveTrackerFrame:SetParent(listFrame)
+		ObjectiveTrackerFrame:SetHeight(500)
+		ObjectiveTrackerFrame:SetPoint("TOPRIGHT", listFrame, "TOPRIGHT", -31, 0)
+		ObjectiveTrackerFrame:SetFrameLevel(listFrame:GetFrameLevel()  +  1)
+		if listFrame then
+			OBJECTIVE_TRACKER_LINE_WIDTH = (listFrame:GetWidth() - 100);
 		else
-			WATCHFRAME_MAXLINEWIDTH = (WatchFrame:GetWidth() - 100);
-			WATCHFRAME_EXPANDEDWIDTH = (WatchFrame:GetWidth() - 100);
+			OBJECTIVE_TRACKER_LINE_WIDTH = (ObjectiveTrackerFrame:GetWidth() - 100);
 		end
-		WatchFrame:SetWidth(WATCHFRAME_MAXLINEWIDTH)
-
-		WatchFrameHeader:SetParent(QuestDockletFrame)
-		WatchFrameHeader:ClearAllPoints()
-		WatchFrameHeader:FillInner(QuestDockletFrameTitle)
-		WatchFrameHeader:SetFrameLevel(2)
+		ObjectiveTrackerFrame:SetWidth(OBJECTIVE_TRACKER_LINE_WIDTH)

-		WatchFrameTitle:SetParent(QuestDockletFrame)
-		WatchFrameTitle:ClearAllPoints()
-		WatchFrameTitle:FillInner(QuestDockletFrameTitle)
-
-		WatchFrameCollapseExpandButton:SetParent(QuestDockletFrame)
-		WatchFrameCollapseExpandButton:ClearAllPoints()
-		WatchFrameCollapseExpandButton:SetPoint("TOPRIGHT", UIParent, "BOTTOMRIGHT", 0, 0)
-		WatchFrameCollapseExpandButton:Hide()
-
-		QuestDockletFrameList:SetScrollChild(WatchFrame)
-		QuestDockletFrameSlider:SetScript("OnValueChanged", function(self, argValue)
-			QuestDockletFrameList:SetVerticalScroll(argValue)
+		listFrame:SetScrollChild(ObjectiveTrackerFrame)
+		scrollFrame:SetScript("OnValueChanged", function(self, argValue)
+			listFrame:SetVerticalScroll(argValue)
 		end)
-		QuestDockletFrameSlider:ClearAllPoints()
-		QuestDockletFrameSlider:SetPoint("TOPRIGHT", QuestDockletFrame, "TOPRIGHT", -3, 0)
+		scrollFrame:ClearAllPoints()
+		scrollFrame:SetPoint("TOPRIGHT", QuestFrame, "TOPRIGHT", -3, 0)

-		WatchFrameLines:RemoveTextures(true)
-		WatchFrameLines:SetPoint("TOPLEFT", WatchFrame, "TOPLEFT", 87, 0)
-		WatchFrameLines:SetPoint("BOTTOMLEFT", WatchFrame, "BOTTOMLEFT", 87, 0)
-		WatchFrameLines:SetWidth(WATCHFRAME_MAXLINEWIDTH - 100)
-		--[[Lets murder some internals to prevent overriding]]--
-		WatchFrame.ClearAllPoints = SV.fubar;
-		WatchFrame.SetPoint = SV.fubar;
-		WatchFrame.SetAllPoints = SV.fubar;
-		WatchFrameLines.ClearAllPoints = SV.fubar;
-		WatchFrameLines.SetPoint = SV.fubar;
-		WatchFrameLines.SetAllPoints = SV.fubar;
-		WatchFrameLines.SetWidth = SV.fubar;
-		WatchFrameCollapseExpandButton.ClearAllPoints = SV.fubar;
-		WatchFrameCollapseExpandButton.SetPoint = SV.fubar;
-		WatchFrameCollapseExpandButton.SetAllPoints = SV.fubar;
-
-		SetQuestDockEvents()
+		ObjectiveTrackerFrame.BlocksFrame:RemoveTextures(true)
+		ObjectiveTrackerFrame.BlocksFrame:SetPoint("TOPLEFT", ObjectiveTrackerFrame, "TOPLEFT", 87, 0)
+		ObjectiveTrackerFrame.BlocksFrame:SetPoint("BOTTOMLEFT", ObjectiveTrackerFrame, "BOTTOMLEFT", 87, 0)
+		ObjectiveTrackerFrame.BlocksFrame:SetWidth(OBJECTIVE_TRACKER_LINE_WIDTH)
+		ObjectiveTrackerFrame.ClearAllPoints = SV.fubar;
+		ObjectiveTrackerFrame.SetPoint = SV.fubar;
+		ObjectiveTrackerFrame.SetAllPoints = SV.fubar;

-		QuestDocklet:RegisterEvent("CVAR_UPDATE")
-		QuestDocklet:RegisterEvent("QUEST_AUTOCOMPLETE")
-		QuestDocklet:SetScript("OnEvent", QuestDocklet_OnEvent)
+		local eventHandler = CreateFrame("Frame")
+		eventHandler:RegisterEvent("QUEST_AUTOCOMPLETE")
+		eventHandler:SetScript("OnEvent", QuestFrame_OnEvent)
 	end
 end

-SV:NewScript(CreateQuestDocklet)
\ No newline at end of file
+SV:NewScript(CreateQuestFrame)
\ No newline at end of file
diff --git a/Interface/AddOns/SVUI_CraftOMatic/SVUI_CraftOMatic.lua b/Interface/AddOns/SVUI_CraftOMatic/SVUI_CraftOMatic.lua
index 2e92a98..fbe594d 100644
--- a/Interface/AddOns/SVUI_CraftOMatic/SVUI_CraftOMatic.lua
+++ b/Interface/AddOns/SVUI_CraftOMatic/SVUI_CraftOMatic.lua
@@ -270,7 +270,7 @@ function PLUGIN:EndJobModes()
 		self[currentModeKey].Disable()
 	end
 	currentModeKey = false;
-	if SVUI_ModesDockFrame:IsShown() then SVUI_ModesDockFrame_ToolBarButton:Click() end
+	if self.Docklet:IsShown() then self.Docklet.ToolbarButton:Click() end
 	self:ChangeModeGear()
 	self.ModeAlert:Hide();
 	SendModeMessage("Mode Disabled", CombatText_StandardScroll, 1, 0.35, 0);
@@ -309,69 +309,6 @@ function PLUGIN:UpdateLogWindow()
  	self.LogWindow:SetFont(SV.Media.font.system, SV.db[Schema].fontSize, "OUTLINE")
 end

-function PLUGIN:MakeLogWindow()
-	local DOCK_WIDTH = SVUI_ModesDockFrame:GetWidth();
-	local DOCK_HEIGHT = SVUI_ModesDockFrame:GetHeight();
-
-	ModeLogsFrame:SetFrameStrata("MEDIUM")
-	ModeLogsFrame:SetPoint("TOPLEFT",SVUI_ModeButton1,"TOPRIGHT",5,-5)
-	ModeLogsFrame:SetPoint("BOTTOMRIGHT",SVUI_ModesDockFrame,"BOTTOMRIGHT",-5,5)
-	ModeLogsFrame:SetParent(SVUI_ModesDockFrame)
-
-	local title = CreateFrame("ScrollingMessageFrame", nil, ModeLogsFrame)
-	title:SetSpacing(4)
-	title:SetClampedToScreen(false)
-	title:SetFrameStrata("MEDIUM")
-	title:SetPoint("TOPLEFT",ModeLogsFrame,"TOPLEFT",0,0)
-	title:SetPoint("BOTTOMRIGHT",ModeLogsFrame,"TOPRIGHT",0,-20)
-	title:SetFontTemplate(UNIT_NAME_FONT, 16, "OUTLINE", "CENTER", "MIDDLE")
-	title:SetMaxLines(1)
-	title:EnableMouseWheel(false)
-	title:SetFading(false)
-	title:SetInsertMode('TOP')
-
-	title.divider = title:CreateTexture(nil,"OVERLAY")
-    title.divider:SetTexture(0,0,0,0.5)
-    title.divider:SetPoint("BOTTOMLEFT")
-    title.divider:SetPoint("BOTTOMRIGHT")
-    title.divider:SetHeight(1)
-
-    local topleftline = title:CreateTexture(nil,"OVERLAY")
-    topleftline:SetTexture(0,0,0,0.5)
-    topleftline:SetPoint("TOPLEFT")
-    topleftline:SetPoint("BOTTOMLEFT")
-    topleftline:SetWidth(1)
-
-	local log = CreateFrame("ScrollingMessageFrame", nil, ModeLogsFrame)
-	log:SetSpacing(4)
-	log:SetClampedToScreen(false)
-	log:SetFrameStrata("MEDIUM")
-	log:SetPoint("TOPLEFT",title,"BOTTOMLEFT",0,0)
-	log:SetPoint("BOTTOMRIGHT",ModeLogsFrame,"BOTTOMRIGHT",0,0)
-	log:SetFontTemplate(nil, SV.db[Schema].fontSize, "OUTLINE")
-	log:SetJustifyH("CENTER")
-	log:SetJustifyV("MIDDLE")
-	log:SetShadowColor(0, 0, 0, 0)
-	log:SetMaxLines(120)
-	log:EnableMouseWheel(true)
-	log:SetScript("OnMouseWheel", onMouseWheel)
-	log:SetFading(false)
-	log:SetInsertMode('TOP')
-
-	local bottomleftline = log:CreateTexture(nil,"OVERLAY")
-    bottomleftline:SetTexture(0,0,0,0.5)
-    bottomleftline:SetPoint("TOPLEFT")
-    bottomleftline:SetPoint("BOTTOMLEFT")
-    bottomleftline:SetWidth(1)
-
-	self.TitleWindow = title
-	self.LogWindow = log
-
-	self.ListenerEnabled = false;
-	SV:RegisterDocklet("SVUI_ModesDockFrame", self.TitleID, ICON_FILE, false)
-	self:CraftingReset()
-end
-
 function PLUGIN:SKILL_LINES_CHANGED()
 	if(currentModeKey and self[currentModeKey] and self[currentModeKey].Update) then
 		self[currentModeKey].Update()
@@ -459,11 +396,13 @@ function PLUGIN:Load()
 	local ALERT_HEIGHT = 60;
 	local DOCK_WIDTH = SuperDockWindowRight:GetWidth();
 	local DOCK_HEIGHT = SuperDockWindowRight:GetHeight();
+	local DOCKLET_WIDTH = DOCK_WIDTH - 4
+	local DOCKLET_HEIGHT = DOCK_HEIGHT - 4
 	local BUTTON_SIZE = (DOCK_HEIGHT * 0.25) - 4;

 	local modesDocklet = CreateFrame("Frame", "SVUI_ModesDockFrame", SuperDockWindowRight)
-	modesDocklet:SetWidth(DOCK_WIDTH - 4);
-	modesDocklet:SetHeight(DOCK_HEIGHT - 4);
+	modesDocklet:SetWidth(DOCKLET_WIDTH);
+	modesDocklet:SetHeight(DOCKLET_HEIGHT);
 	modesDocklet:SetPoint("CENTER",SuperDockWindowRight,"CENTER",0,0);

 	local modesToolBar = CreateFrame("Frame", "SVUI_ModesDockToolBar", modesDocklet)
@@ -552,12 +491,69 @@ function PLUGIN:Load()
 	ModeAlert:SetScript('OnMouseDown', ModeAlert_OnMouseDown)
 	ModeAlert:Hide()

-	self.ModeAlert = ModeAlert
+	ModeLogsFrame:SetFrameStrata("MEDIUM")
+	ModeLogsFrame:SetPoint("TOPLEFT", mode1Button, "TOPRIGHT", 5, -5)
+	ModeLogsFrame:SetPoint("BOTTOMRIGHT", modesDocklet, "BOTTOMRIGHT", -5, 5)
+	ModeLogsFrame:SetParent(modesDocklet)

-	self:MakeLogWindow()
+	local title = CreateFrame("ScrollingMessageFrame", nil, ModeLogsFrame)
+	title:SetSpacing(4)
+	title:SetClampedToScreen(false)
+	title:SetFrameStrata("MEDIUM")
+	title:SetPoint("TOPLEFT",ModeLogsFrame,"TOPLEFT",0,0)
+	title:SetPoint("BOTTOMRIGHT",ModeLogsFrame,"TOPRIGHT",0,-20)
+	title:SetFontTemplate(UNIT_NAME_FONT, 16, "OUTLINE", "CENTER", "MIDDLE")
+	title:SetMaxLines(1)
+	title:EnableMouseWheel(false)
+	title:SetFading(false)
+	title:SetInsertMode('TOP')

-	modesDocklet:Hide()
-
+	title.divider = title:CreateTexture(nil,"OVERLAY")
+    title.divider:SetTexture(0,0,0,0.5)
+    title.divider:SetPoint("BOTTOMLEFT")
+    title.divider:SetPoint("BOTTOMRIGHT")
+    title.divider:SetHeight(1)
+
+    local topleftline = title:CreateTexture(nil,"OVERLAY")
+    topleftline:SetTexture(0,0,0,0.5)
+    topleftline:SetPoint("TOPLEFT")
+    topleftline:SetPoint("BOTTOMLEFT")
+    topleftline:SetWidth(1)
+
+	local log = CreateFrame("ScrollingMessageFrame", nil, ModeLogsFrame)
+	log:SetSpacing(4)
+	log:SetClampedToScreen(false)
+	log:SetFrameStrata("MEDIUM")
+	log:SetPoint("TOPLEFT",title,"BOTTOMLEFT",0,0)
+	log:SetPoint("BOTTOMRIGHT",ModeLogsFrame,"BOTTOMRIGHT",0,0)
+	log:SetFontTemplate(nil, SV.db[Schema].fontSize, "OUTLINE")
+	log:SetJustifyH("CENTER")
+	log:SetJustifyV("MIDDLE")
+	log:SetShadowColor(0, 0, 0, 0)
+	log:SetMaxLines(120)
+	log:EnableMouseWheel(true)
+	log:SetScript("OnMouseWheel", onMouseWheel)
+	log:SetFading(false)
+	log:SetInsertMode('TOP')
+
+	local bottomleftline = log:CreateTexture(nil,"OVERLAY")
+    bottomleftline:SetTexture(0,0,0,0.5)
+    bottomleftline:SetPoint("TOPLEFT")
+    bottomleftline:SetPoint("BOTTOMLEFT")
+    bottomleftline:SetWidth(1)
+
+    self.ModeAlert = ModeAlert
+	self.TitleWindow = title
+	self.LogWindow = log
+	self.Docklet = modesDocklet
+
+	SV:RegisterDocklet("SVUI_ModesDockFrame", self.TitleID, ICON_FILE, false)
+
+	self.Docklet:Hide()
+
+	self.ListenerEnabled = false;
+
+	self:CraftingReset()
 	self:LoadCookingMode()
 	self:LoadFishingMode()
 	self:LoadArchaeologyMode()
diff --git a/Interface/AddOns/SVUI_CraftOMatic/components/archaeology.lua b/Interface/AddOns/SVUI_CraftOMatic/components/archaeology.lua
index 02e3b07..6030eff 100644
--- a/Interface/AddOns/SVUI_CraftOMatic/components/archaeology.lua
+++ b/Interface/AddOns/SVUI_CraftOMatic/components/archaeology.lua
@@ -54,7 +54,7 @@ local CanSolveArtifact = CanSolveArtifact
 local GetContainerNumSlots = GetContainerNumSlots
 local GetContainerItemInfo = GetContainerItemInfo
 local GetContainerItemID = GetContainerItemID
-local DockButton, ModeLogsFrame;
+local ModeLogsFrame;

 local COUNT_TEX = [[Interface\AddOns\SVUI\assets\artwork\icons\COUNT-]]

@@ -359,7 +359,7 @@ CORE FUNCTIONS
 ]]--
 function PLUGIN.Archaeology:Enable()
 	PLUGIN.Archaeology:Update()
-	if(not SVUI_ModesDockFrame:IsShown()) then DockButton:Click() end
+	if(not PLUGIN.Docklet:IsShown()) then PLUGIN.Docklet.ToolbarButton:Click() end

 	PlaySoundFile("Sound\\Item\\UseSounds\\UseCrinklingPaper.wav")
 	PLUGIN.ModeAlert:SetBackdropColor(0.25, 0.52, 0.1)
@@ -426,10 +426,9 @@ LOADER
 ##########################################################
 ]]--
 function PLUGIN:LoadArchaeologyMode()
-	ModeLogsFrame = PLUGIN.LogWindow;
-	DockButton = _G["SVUI_ModesDockFrame_ToolBarButton"];
+	ModeLogsFrame = self.LogWindow;

-	local progressBars = PLUGIN.Archaeology.Bars
+	local progressBars = self.Archaeology.Bars

 	ArchCrafting:SetParent(ModeLogsFrame)
 	ArchCrafting:SetFrameStrata("MEDIUM")
@@ -524,6 +523,6 @@ function PLUGIN:LoadArchaeologyMode()
 		}
 	end
 	ArchCrafting:Hide()
-	PLUGIN.Archaeology:Update()
+	self.Archaeology:Update()
 	UpdateArtifactCache()
 end
\ No newline at end of file
diff --git a/Interface/AddOns/SVUI_CraftOMatic/components/cooking.lua b/Interface/AddOns/SVUI_CraftOMatic/components/cooking.lua
index 29b42ae..99c5696 100644
--- a/Interface/AddOns/SVUI_CraftOMatic/components/cooking.lua
+++ b/Interface/AddOns/SVUI_CraftOMatic/components/cooking.lua
@@ -42,8 +42,7 @@ local Schema = PLUGIN.Schema;
 LOCAL VARS
 ##########################################################
 ]]--
-local cookingSpell, campFire, skillRank, skillModifier;
-local DockButton;
+local cookingSpell, campFire, skillRank, skillModifier, DockButton;
 --[[
 ##########################################################
 LOCAL FUNCTIONS
@@ -172,7 +171,7 @@ CORE METHODS
 ]]--
 function PLUGIN.Cooking:Enable()
 	PLUGIN.Cooking:Update()
-	if(not SVUI_ModesDockFrame:IsShown()) then DockButton:Click() end
+	if(not PLUGIN.Docklet:IsShown()) then PLUGIN.Docklet.ToolbarButton:Click() end
 	if(SV.db[Schema].cooking.autoequip) then
 		UpdateChefWear();
 	end
@@ -228,5 +227,5 @@ LOADER
 ##########################################################
 ]]--
 function PLUGIN:LoadCookingMode()
-	DockButton = _G["SVUI_ModesDockFrame_ToolBarButton"];
+	self.Cooking:Update()
 end
\ No newline at end of file
diff --git a/Interface/AddOns/SVUI_CraftOMatic/components/farming.lua b/Interface/AddOns/SVUI_CraftOMatic/components/farming.lua
index 7d37633..a2efd8b 100644
--- a/Interface/AddOns/SVUI_CraftOMatic/components/farming.lua
+++ b/Interface/AddOns/SVUI_CraftOMatic/components/farming.lua
@@ -396,7 +396,7 @@ function PLUGIN.Farming:Enable()
 			PLUGIN.Farming.ToolsLoaded = true
 			EnableListener()
 			if not FarmModeFrame:IsShown() then FarmModeFrame:Show() end
-			if(not SVUI_ModesDockFrame:IsShown()) then DockButton:Click() end
+			if(not PLUGIN.Docklet:IsShown()) then DockButton:Click() end
 		end
 	end
 end
@@ -527,8 +527,8 @@ function PLUGIN:PrepareFarmingTools()
 	local horizontal = SV.db[Schema].farming.toolbardirection == "HORIZONTAL"
 	local BUTTONSPACE = SV.db[Schema].farming.buttonspacing or 2;

-	ModeLogsFrame = PLUGIN.LogWindow;
-	DockButton = _G["SVUI_ModesDockFrame_ToolBarButton"]
+	ModeLogsFrame = self.LogWindow;
+	DockButton = self.Docklet.ToolbarButton

 	if not SV.db[Schema].farming.undocked then
 		local bgTex = [[Interface\BUTTONS\WHITE8X8]]
diff --git a/Interface/AddOns/SVUI_CraftOMatic/components/fishing.lua b/Interface/AddOns/SVUI_CraftOMatic/components/fishing.lua
index d802e80..00caa78 100644
--- a/Interface/AddOns/SVUI_CraftOMatic/components/fishing.lua
+++ b/Interface/AddOns/SVUI_CraftOMatic/components/fishing.lua
@@ -106,7 +106,6 @@ local refPoles = {
 	{ ["id"] = 84660, ["weight"] = 10 },  --Pandaren
 	{ ["id"] = 6256,  ["weight"] = 1 }    --Standard
 }
-local DockButton;
 --[[
 ##########################################################
 LOCAL FUNCTIONS
@@ -334,7 +333,7 @@ CORE METHODS
 ]]--
 function PLUGIN.Fishing:Enable()
 	PLUGIN:UpdateFishingMode()
-	if(not SVUI_ModesDockFrame:IsShown()) then DockButton:Click() end
+	if(not PLUGIN.Docklet:IsShown()) then PLUGIN.Docklet.ToolbarButton:Click() end
 	UpdateFishingGear(SV.db[Schema].fishing.autoequip);
 	PlaySoundFile("Sound\\Spells\\Tradeskills\\FishCast.wav")
 	PLUGIN.ModeAlert:SetBackdropColor(0.25, 0.52, 0.1)
@@ -397,6 +396,5 @@ function PLUGIN:UpdateFishingMode()
 end

 function PLUGIN:LoadFishingMode()
-	DockButton = _G["SVUI_ModesDockFrame_ToolBarButton"]
-	PLUGIN:UpdateFishingMode()
+	self:UpdateFishingMode()
 end
\ No newline at end of file
diff --git a/Interface/BUTTONS/ActionBarFlyoutButton-FlyoutMid.blp b/Interface/BUTTONS/ActionBarFlyoutButton-FlyoutMid.blp
new file mode 100644
index 0000000..885b44b
Binary files /dev/null and b/Interface/BUTTONS/ActionBarFlyoutButton-FlyoutMid.blp differ
diff --git a/Interface/BUTTONS/ActionBarFlyoutButton-FlyoutMidLeft.blp b/Interface/BUTTONS/ActionBarFlyoutButton-FlyoutMidLeft.blp
new file mode 100644
index 0000000..aac32a0
Binary files /dev/null and b/Interface/BUTTONS/ActionBarFlyoutButton-FlyoutMidLeft.blp differ
diff --git a/Interface/BUTTONS/ActionBarFlyoutButton.blp b/Interface/BUTTONS/ActionBarFlyoutButton.blp
new file mode 100644
index 0000000..b0b57c0
Binary files /dev/null and b/Interface/BUTTONS/ActionBarFlyoutButton.blp differ
diff --git a/Interface/BUTTONS/Thumbs.db b/Interface/BUTTONS/Thumbs.db
new file mode 100644
index 0000000..9a524d6
Binary files /dev/null and b/Interface/BUTTONS/Thumbs.db differ
diff --git a/Interface/BUTTONS/UI-Button-Borders.blp b/Interface/BUTTONS/UI-Button-Borders.blp
new file mode 100644
index 0000000..68269c7
Binary files /dev/null and b/Interface/BUTTONS/UI-Button-Borders.blp differ
diff --git a/Interface/BUTTONS/UI-Button-Borders2.blp b/Interface/BUTTONS/UI-Button-Borders2.blp
new file mode 100644
index 0000000..f7f683d
Binary files /dev/null and b/Interface/BUTTONS/UI-Button-Borders2.blp differ
diff --git a/Interface/BUTTONS/UI-CheckBox-Check-Disabled.blp b/Interface/BUTTONS/UI-CheckBox-Check-Disabled.blp
new file mode 100644
index 0000000..6723c5e
Binary files /dev/null and b/Interface/BUTTONS/UI-CheckBox-Check-Disabled.blp differ
diff --git a/Interface/BUTTONS/UI-CheckBox-Check.blp b/Interface/BUTTONS/UI-CheckBox-Check.blp
new file mode 100644
index 0000000..c4a6afc
Binary files /dev/null and b/Interface/BUTTONS/UI-CheckBox-Check.blp differ
diff --git a/Interface/BUTTONS/UI-CheckBox-Down.blp b/Interface/BUTTONS/UI-CheckBox-Down.blp
new file mode 100644
index 0000000..b677c01
Binary files /dev/null and b/Interface/BUTTONS/UI-CheckBox-Down.blp differ
diff --git a/Interface/BUTTONS/UI-CheckBox-Up.blp b/Interface/BUTTONS/UI-CheckBox-Up.blp
new file mode 100644
index 0000000..b677c01
Binary files /dev/null and b/Interface/BUTTONS/UI-CheckBox-Up.blp differ
diff --git a/Interface/BUTTONS/UI-Debuff-Overlays.blp b/Interface/BUTTONS/UI-Debuff-Overlays.blp
new file mode 100644
index 0000000..6b057b4
Binary files /dev/null and b/Interface/BUTTONS/UI-Debuff-Overlays.blp differ
diff --git a/Interface/BUTTONS/UI-MinusButton-Disabled.blp b/Interface/BUTTONS/UI-MinusButton-Disabled.blp
new file mode 100644
index 0000000..78bede0
Binary files /dev/null and b/Interface/BUTTONS/UI-MinusButton-Disabled.blp differ
diff --git a/Interface/BUTTONS/UI-MinusButton-Down.blp b/Interface/BUTTONS/UI-MinusButton-Down.blp
new file mode 100644
index 0000000..0d59721
Binary files /dev/null and b/Interface/BUTTONS/UI-MinusButton-Down.blp differ
diff --git a/Interface/BUTTONS/UI-MinusButton-Up.blp b/Interface/BUTTONS/UI-MinusButton-Up.blp
new file mode 100644
index 0000000..ae5f9f7
Binary files /dev/null and b/Interface/BUTTONS/UI-MinusButton-Up.blp differ
diff --git a/Interface/BUTTONS/UI-SliderBar-Border.blp b/Interface/BUTTONS/UI-SliderBar-Border.blp
index 766ea93..a86583a 100644
Binary files a/Interface/BUTTONS/UI-SliderBar-Border.blp and b/Interface/BUTTONS/UI-SliderBar-Border.blp differ