Quantcast

Re-worked the OnClick script for MainPanel.filter_toggle to iteratively show/hide the menu_toggle buttons rather than doing so individually.

torhal [11-29-09 - 09:15]
Re-worked the OnClick script for MainPanel.filter_toggle to iteratively show/hide the menu_toggle buttons rather than doing so individually.
In ToggleFilterMenu(): Re-wrote for clarity, replacing 128 lines with 18.
Filename
ARLFrame.lua
diff --git a/ARLFrame.lua b/ARLFrame.lua
index dbb34f5..beeeecf 100644
--- a/ARLFrame.lua
+++ b/ARLFrame.lua
@@ -1289,15 +1289,11 @@ MainPanel.filter_toggle:SetScript("OnClick",
 					   SetTooltipScripts(self, L["FILTER_OPEN_DESC"])

 					   -- Hide the category buttons
-					   MainPanel.menu_toggle_general:Hide()
-					   MainPanel.menu_toggle_obtain:Hide()
-					   MainPanel.menu_toggle_binding:Hide()
-					   MainPanel.menu_toggle_item:Hide()
-					   MainPanel.menu_toggle_player:Hide()
-					   MainPanel.menu_toggle_rep:Hide()
-					   MainPanel.menu_toggle_misc:Hide()
-
-					   -- Uncheck the seven buttons
+					   for category in pairs(MainPanel.filter_menu) do
+						   if category ~= 0 and category ~= "texture" then
+							   MainPanel["menu_toggle_" .. category]:Hide()
+						   end
+					   end
 					   MainPanel:HighlightCategory(nil)
 					   MainPanel.filter_reset:Hide()
 				   else
@@ -1306,14 +1302,11 @@ MainPanel.filter_toggle:SetScript("OnClick",
 					   SetTooltipScripts(self, L["FILTER_CLOSE_DESC"])

 					   -- Show the category buttons
-					   MainPanel.menu_toggle_general:Show()
-					   MainPanel.menu_toggle_obtain:Show()
-					   MainPanel.menu_toggle_binding:Show()
-					   MainPanel.menu_toggle_item:Show()
-					   MainPanel.menu_toggle_player:Show()
-					   MainPanel.menu_toggle_rep:Show()
-					   MainPanel.menu_toggle_misc:Show()
-
+					   for category in pairs(MainPanel.filter_menu) do
+						   if category ~= 0 and category ~= "texture" then
+							   MainPanel["menu_toggle_" .. category]:Show()
+						   end
+					   end
 					   MainPanel.filter_reset:Show()
 				   end
 				   MainPanel:ToggleState()
@@ -1393,132 +1386,23 @@ do
 		ARL_Rep_BCCB:SetChecked(false)
 		ARL_Rep_LKCB:SetChecked(false)

-		if panel == "general" then
-			if MainPanel.menu_toggle_general:GetChecked() then
-				MainPanel:HighlightCategory("general")
+		local toggle = "menu_toggle_" .. panel

-				-- display the correct subframe with all the buttons and such, hide the others
-				MainPanel.filter_menu.general:Show()
-				MainPanel.filter_menu.obtain:Hide()
-				MainPanel.filter_menu.binding:Hide()
-				MainPanel.filter_menu.item:Hide()
-				MainPanel.filter_menu.player:Hide()
-				MainPanel.filter_menu.rep:Hide()
-				MainPanel.filter_menu.misc:Hide()
+		if MainPanel[toggle]:GetChecked() then
+			-- Display the selected filter_menu category frame
+			MainPanel:HighlightCategory(panel)
+			MainPanel.filter_menu[panel]:Show()

-				ChangeFilters = true
-			else
-				MainPanel.menu_toggle_general.text:SetText(addon:Yellow(CATEGORY_TEXT["general"]))
-				ChangeFilters = false
-			end
-		elseif panel == "obtain" then
-			if MainPanel.menu_toggle_obtain:GetChecked() then
-				MainPanel:HighlightCategory("obtain")
-
-				-- display the correct subframe with all the buttons and such, hide the others
-				MainPanel.filter_menu.general:Hide()
-				MainPanel.filter_menu.obtain:Show()
-				MainPanel.filter_menu.binding:Hide()
-				MainPanel.filter_menu.item:Hide()
-				MainPanel.filter_menu.player:Hide()
-				MainPanel.filter_menu.rep:Hide()
-				MainPanel.filter_menu.misc:Hide()
-
-				ChangeFilters = true
-			else
-				MainPanel.menu_toggle_obtain.text:SetText(addon:Yellow(CATEGORY_TEXT["obtain"]))
-				ChangeFilters = false
-			end
-		elseif panel == "binding" then
-			if MainPanel.menu_toggle_binding:GetChecked() then
-				MainPanel:HighlightCategory("binding")
-
-				-- display the correct subframe with all the buttons and such, hide the others
-				MainPanel.filter_menu.general:Hide()
-				MainPanel.filter_menu.obtain:Hide()
-				MainPanel.filter_menu.binding:Show()
-				MainPanel.filter_menu.item:Hide()
-				MainPanel.filter_menu.player:Hide()
-				MainPanel.filter_menu.rep:Hide()
-				MainPanel.filter_menu.misc:Hide()
-
-				ChangeFilters = true
-			else
-				MainPanel.menu_toggle_binding.text:SetText(addon:Yellow(CATEGORY_TEXT["binding"]))
-				ChangeFilters = false
-			end
-		elseif panel == "item" then
-			if MainPanel.menu_toggle_item:GetChecked() then
-				MainPanel:HighlightCategory("item")
-
-				-- display the correct subframe with all the buttons and such, hide the others
-				MainPanel.filter_menu.general:Hide()
-				MainPanel.filter_menu.obtain:Hide()
-				MainPanel.filter_menu.binding:Hide()
-				MainPanel.filter_menu.item:Show()
-				MainPanel.filter_menu.player:Hide()
-				MainPanel.filter_menu.rep:Hide()
-				MainPanel.filter_menu.misc:Hide()
-
-				ChangeFilters = true
-			else
-				MainPanel.menu_toggle_item.text:SetText(addon:Yellow(CATEGORY_TEXT["item"]))
-				ChangeFilters = false
-			end
-		elseif panel == "player" then
-			if MainPanel.menu_toggle_player:GetChecked() then
-				MainPanel:HighlightCategory("player")
-
-				-- display the correct subframe with all the buttons and such, hide the others
-				MainPanel.filter_menu.general:Hide()
-				MainPanel.filter_menu.obtain:Hide()
-				MainPanel.filter_menu.binding:Hide()
-				MainPanel.filter_menu.item:Hide()
-				MainPanel.filter_menu.player:Show()
-				MainPanel.filter_menu.rep:Hide()
-				MainPanel.filter_menu.misc:Hide()
-
-				ChangeFilters = true
-			else
-				MainPanel.menu_toggle_player.text:SetText(addon:Yellow(CATEGORY_TEXT["player"]))
-				ChangeFilters = false
-			end
-		elseif panel == "rep" then
-			if MainPanel.menu_toggle_rep:GetChecked() then
-				MainPanel:HighlightCategory("rep")
-
-				-- display the correct subframe with all the buttons and such, hide the others
-				MainPanel.filter_menu.general:Hide()
-				MainPanel.filter_menu.obtain:Hide()
-				MainPanel.filter_menu.binding:Hide()
-				MainPanel.filter_menu.item:Hide()
-				MainPanel.filter_menu.player:Hide()
-				MainPanel.filter_menu.rep:Show()
-				MainPanel.filter_menu.misc:Hide()
-
-				ChangeFilters = true
-			else
-				MainPanel.menu_toggle_rep.text:SetText(addon:Yellow(CATEGORY_TEXT["rep"]))
-				ChangeFilters = false
-			end
-		elseif panel == "misc" then
-			if MainPanel.menu_toggle_misc:GetChecked() then
-				MainPanel:HighlightCategory("misc")
-
-				-- display the correct subframe with all the buttons and such, hide the others
-				MainPanel.filter_menu.general:Hide()
-				MainPanel.filter_menu.obtain:Hide()
-				MainPanel.filter_menu.binding:Hide()
-				MainPanel.filter_menu.item:Hide()
-				MainPanel.filter_menu.player:Hide()
-				MainPanel.filter_menu.rep:Hide()
-				MainPanel.filter_menu.misc:Show()
-
-				ChangeFilters = true
-			else
-				MainPanel.menu_toggle_misc.text:SetText(addon:Yellow(CATEGORY_TEXT["misc"]))
-				ChangeFilters = false
+			-- Hide all of the other filter_menu category frames
+			for category in pairs(MainPanel.filter_menu) do
+				if category ~= panel and category ~= 0 and category ~= "texture" then
+					MainPanel.filter_menu[category]:Hide()
+				end
 			end
+			ChangeFilters = true
+		else
+			MainPanel[toggle].text:SetText(addon:Yellow(CATEGORY_TEXT[panel]))
+			ChangeFilters = false
 		end

 		if ChangeFilters then
@@ -1545,7 +1429,7 @@ do
 		end
 	end

-	function CreateFilterMenuButton(bTex, panelIndex)
+	function CreateFilterMenuButton(bTex, category)
 		local ExpTextureSize = 34
 		local cButton = CreateFrame("CheckButton", nil, MainPanel)

@@ -1553,7 +1437,7 @@ do
 		cButton:SetHeight(ExpTextureSize)
 		cButton:SetScript("OnClick",
 				  function(self, button, down)
-					  ToggleFilterMenu(panelIndex)
+					  ToggleFilterMenu(category)
 				  end)

 		local bgTex = cButton:CreateTexture(nil, "BACKGROUND")
@@ -1586,7 +1470,7 @@ do

 		-- Create the text object to go along with it
 		local cbText = cButton:CreateFontString("cbText", "OVERLAY", "GameFontHighlight")
-		cbText:SetText(addon:Yellow(CATEGORY_TEXT[panelIndex]))
+		cbText:SetText(addon:Yellow(CATEGORY_TEXT[category]))
 		cbText:SetPoint("LEFT", cButton, "RIGHT", 5, 0)
 		cbText:SetHeight(14)
 		cbText:SetWidth(100)
@@ -1594,7 +1478,7 @@ do
 		cButton.text = cbText

 		-- And throw up a tooltip
-		SetTooltipScripts(cButton, CATEGORY_TOOLTIP[panelIndex])
+		SetTooltipScripts(cButton, CATEGORY_TOOLTIP[category])
 		cButton:Hide()

 		return cButton