Quantcast

ARL_ExpWhateverOptCB are all now MainPanel.menu_toggle_whatever

torhal [11-29-09 - 07:20]
ARL_ExpWhateverOptCB are all now MainPanel.menu_toggle_whatever
ShowFilterMenu() has been completely re-written and now exists as MainPanel:HighlightCategory(), and now hides the filter menu if no parameter is given.
ToggleFilterMenu() now uses category names instead of numbers.
CreateFilterMenuButton() no longer has a button name parameter and will no longer name the textures it creates.
Renamed ExpButtonText to CATEGORY_TEXT, and changed it to a dictionary table.
Renamed ExpButtonTT to CATEGORY_TOOLTIP, and changed it to a dictionary table.
Removed some unnecessary comments.
Filename
ARLFrame.lua
diff --git a/ARLFrame.lua b/ARLFrame.lua
index 7a0400e..dbb34f5 100644
--- a/ARLFrame.lua
+++ b/ARLFrame.lua
@@ -80,14 +80,14 @@ local SortedProfessions = {	-- To make tabbing between professions easier
 	{ name = GetSpellInfo(51309),	texture = "tailor" },		-- 12
 }

-local ExpButtonText = {		-- Some variables I want to use in creating the GUI later... (ZJ 8/26/08)
-	_G.GENERAL,		-- 1
-	L["Obtain"],		-- 2
-	L["Binding"],		-- 3
-	L["Item"],		-- 4
-	_G.ROLE,		-- 5
-	_G.REPUTATION,		-- 6
-	_G.MISCELLANEOUS
+local CATEGORY_TEXT = {
+	["general"]	= _G.GENERAL,
+	["obtain"]	= L["Obtain"],
+	["binding"]	= L["Binding"],
+	["item"]	= L["Item"],
+	["player"]	= _G.ROLE,
+	["rep"]		= _G.REPUTATION,
+	["misc"]	= _G.MISCELLANEOUS
 }

 local NUM_PROFESSIONS		= 12
@@ -168,7 +168,7 @@ StaticPopupDialogs["ARL_SEARCHFILTERED"] = {
 local FilterValueMap		-- Assigned in addon:InitializeFrame()

 local ARL_SearchText, ARL_LastSearchedText
-local ARL_ExpGeneralOptCB, ARL_ExpObtainOptCB, ARL_ExpBindingOptCB, ARL_ExpItemOptCB, ARL_ExpPlayerOptCB, ARL_ExpRepOptCB, ARL_Rep_ClassicCB, ARL_Rep_BCCB, ARL_Rep_LKCB,ARL_ExpMiscOptCB
+local ARL_Rep_ClassicCB, ARL_Rep_BCCB, ARL_Rep_LKCB

 -------------------------------------------------------------------------------
 -- Upvalues
@@ -374,57 +374,6 @@ do
 	end
 end	-- do

-local function ShowFilterMenu(target)
-	if target ~= "general" then
-		ARL_ExpGeneralOptCB:SetChecked(false)
-		ARL_ExpGeneralOptCB.text:SetText(addon:Yellow(ExpButtonText[1]))
-	else
-		ARL_ExpGeneralOptCB.text:SetText(addon:White(ExpButtonText[1]))
-	end
-
-	if target ~= "obtain" then
-		ARL_ExpObtainOptCB:SetChecked(false)
-		ARL_ExpObtainOptCB.text:SetText(addon:Yellow(ExpButtonText[2]))
-	else
-		ARL_ExpObtainOptCB.text:SetText(addon:White(ExpButtonText[2]))
-	end
-
-	if target ~= "binding" then
-		ARL_ExpBindingOptCB:SetChecked(false)
-		ARL_ExpBindingOptCB.text:SetText(addon:Yellow(ExpButtonText[3]))
-	else
-		ARL_ExpBindingOptCB.text:SetText(addon:White(ExpButtonText[3]))
-	end
-
-	if target ~= "item" then
-		ARL_ExpItemOptCB:SetChecked(false)
-		ARL_ExpItemOptCB.text:SetText(addon:Yellow(ExpButtonText[4]))
-	else
-		ARL_ExpItemOptCB.text:SetText(addon:White(ExpButtonText[4]))
-	end
-
-	if target ~= "player" then
-		ARL_ExpPlayerOptCB:SetChecked(false)
-		ARL_ExpPlayerOptCB.text:SetText(addon:Yellow(ExpButtonText[5]))
-	else
-		ARL_ExpPlayerOptCB.text:SetText(addon:White(ExpButtonText[5]))
-	end
-
-	if target ~= "rep" then
-		ARL_ExpRepOptCB:SetChecked(false)
-		ARL_ExpRepOptCB.text:SetText(addon:Yellow(ExpButtonText[6]))
-	else
-		ARL_ExpRepOptCB.text:SetText(addon:White(ExpButtonText[6]))
-	end
-
-	if target ~= "misc" then
-		ARL_ExpMiscOptCB:SetChecked(false)
-		ARL_ExpMiscOptCB.text:SetText(addon:Yellow(ExpButtonText[7]))
-	else
-		ARL_ExpMiscOptCB.text:SetText(addon:White(ExpButtonText[7]))
-	end
-end
-
 -------------------------------------------------------------------------------
 -- Sort functions
 -------------------------------------------------------------------------------
@@ -1100,6 +1049,23 @@ MainPanel:SetScript("OnMouseUp",
 			    opts.offsety = y
 		    end)

+function MainPanel:HighlightCategory(target)
+	if not target then
+		self.filter_menu:Hide()
+	end
+
+	for category in pairs(self.filter_menu) do
+		local toggle = "menu_toggle_" .. category
+
+		if target == category then
+			self[toggle].text:SetText(addon:White(CATEGORY_TEXT[category]))
+		elseif category ~= 0 and category ~= "texture" then
+			self[toggle]:SetChecked(false)
+			self[toggle].text:SetText(addon:Yellow(CATEGORY_TEXT[category]))
+		end
+	end
+end
+
 function MainPanel:ToggleState()
 	if self.is_expanded then
 		self:SetWidth(MAINPANEL_NORMAL_WIDTH)
@@ -1322,33 +1288,31 @@ MainPanel.filter_toggle:SetScript("OnClick",
 					   self:SetText(L["FILTER_OPEN"])
 					   SetTooltipScripts(self, L["FILTER_OPEN_DESC"])

-					   -- Hide my 7 buttons
-					   ARL_ExpGeneralOptCB:Hide()
-					   ARL_ExpObtainOptCB:Hide()
-					   ARL_ExpBindingOptCB:Hide()
-					   ARL_ExpItemOptCB:Hide()
-					   ARL_ExpPlayerOptCB:Hide()
-					   ARL_ExpRepOptCB:Hide()
-					   ARL_ExpMiscOptCB:Hide()
+					   -- 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
-					   ShowFilterMenu()
-
-					   MainPanel.filter_menu:Hide()
+					   MainPanel:HighlightCategory(nil)
 					   MainPanel.filter_reset:Hide()
 				   else
 					   -- Change the text and tooltip for the filter button
 					   self:SetText(L["FILTER_CLOSE"])
 					   SetTooltipScripts(self, L["FILTER_CLOSE_DESC"])

-					   -- Show my 7 buttons
-					   ARL_ExpGeneralOptCB:Show()
-					   ARL_ExpObtainOptCB:Show()
-					   ARL_ExpBindingOptCB:Show()
-					   ARL_ExpItemOptCB:Show()
-					   ARL_ExpPlayerOptCB:Show()
-					   ARL_ExpRepOptCB:Show()
-					   ARL_ExpMiscOptCB:Show()
+					   -- 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()

 					   MainPanel.filter_reset:Show()
 				   end
@@ -1395,8 +1359,7 @@ do

 						 if MainPanel:IsVisible() then
 							 MainPanel:UpdateTitle()
-							 ShowFilterMenu()
-							 MainPanel.filter_menu:Hide()
+							 MainPanel:HighlightCategory(nil)
 							 ReDisplay()
 						 end
 					 end)
@@ -1407,29 +1370,19 @@ end	-- do
 -------------------------------------------------------------------------------
 local CreateFilterMenuButton
 do
-	local ExpButtonTT = {
-		L["FILTERING_GENERAL_DESC"],	-- 1
-		L["FILTERING_OBTAIN_DESC"],	-- 2
-		L["FILTERING_BINDING_DESC"],	-- 3
-		L["FILTERING_ITEM_DESC"],	-- 4
-		L["FILTERING_PLAYERTYPE_DESC"],	-- 5
-		L["FILTERING_REP_DESC"],	-- 6
-		L["FILTERING_MISC_DESC"]	-- 7
+	local CATEGORY_TOOLTIP = {
+		["general"]	= L["FILTERING_GENERAL_DESC"],
+		["obtain"]	= L["FILTERING_OBTAIN_DESC"],
+		["binding"]	= L["FILTERING_BINDING_DESC"],
+		["item"]	= L["FILTERING_ITEM_DESC"],
+		["player"]	= L["FILTERING_PLAYERTYPE_DESC"],
+		["rep"]		= L["FILTERING_REP_DESC"],
+		["misc"]	= L["FILTERING_MISC_DESC"]
 	}

+	-- This manages the filter menu panel, as well as checking or unchecking the
+	-- buttons that got us here in the first place
 	local function ToggleFilterMenu(panel)
-		-- This manages the filter menu panel, as well as checking or unchecking the
-		-- buttons that got us here in the first place
-		--
-		-- our panels are:
-		-- 1	ARL_ExpGeneralOptCB			General Filters
-		-- 2	ARL_ExpObtainOptCB			Obtain Filters
-		-- 3	ARL_ExpBindingOptCB			Binding Filters
-		-- 4	ARL_ExpItemOptCB			Item Filters
-		-- 5	ARL_ExpPlayerOptCB			Role Filters
-		-- 6	ARL_ExpRepOptCB				Reputation Filters
-		-- 7	ARL_ExpMiscOptCB			Miscellaneous Filters
-
 		local ChangeFilters = false

 		MainPanel.filter_menu.rep.Classic:Hide()
@@ -1440,10 +1393,9 @@ do
 		ARL_Rep_BCCB:SetChecked(false)
 		ARL_Rep_LKCB:SetChecked(false)

-		if panel == 1 then
-			if ARL_ExpGeneralOptCB:GetChecked() then
-				-- uncheck all other buttons
-				ShowFilterMenu("general")
+		if panel == "general" then
+			if MainPanel.menu_toggle_general:GetChecked() then
+				MainPanel:HighlightCategory("general")

 				-- display the correct subframe with all the buttons and such, hide the others
 				MainPanel.filter_menu.general:Show()
@@ -1456,12 +1408,12 @@ do

 				ChangeFilters = true
 			else
-				ARL_ExpGeneralOptCB.text:SetText(addon:Yellow(ExpButtonText[1]))
+				MainPanel.menu_toggle_general.text:SetText(addon:Yellow(CATEGORY_TEXT["general"]))
 				ChangeFilters = false
 			end
-		elseif panel == 2 then
-			if ARL_ExpObtainOptCB:GetChecked() then
-				ShowFilterMenu("obtain")
+		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()
@@ -1474,12 +1426,12 @@ do

 				ChangeFilters = true
 			else
-				ARL_ExpObtainOptCB.text:SetText(addon:Yellow(ExpButtonText[2]))
+				MainPanel.menu_toggle_obtain.text:SetText(addon:Yellow(CATEGORY_TEXT["obtain"]))
 				ChangeFilters = false
 			end
-		elseif panel == 3 then
-			if ARL_ExpBindingOptCB:GetChecked() then
-				ShowFilterMenu("binding")
+		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()
@@ -1492,12 +1444,12 @@ do

 				ChangeFilters = true
 			else
-				ARL_ExpBindingOptCB.text:SetText(addon:Yellow(ExpButtonText[3]))
+				MainPanel.menu_toggle_binding.text:SetText(addon:Yellow(CATEGORY_TEXT["binding"]))
 				ChangeFilters = false
 			end
-		elseif panel == 4 then
-			if ARL_ExpItemOptCB:GetChecked() then
-				ShowFilterMenu("item")
+		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()
@@ -1510,12 +1462,12 @@ do

 				ChangeFilters = true
 			else
-				ARL_ExpItemOptCB.text:SetText(addon:Yellow(ExpButtonText[4]))
+				MainPanel.menu_toggle_item.text:SetText(addon:Yellow(CATEGORY_TEXT["item"]))
 				ChangeFilters = false
 			end
-		elseif panel == 5 then
-			if ARL_ExpPlayerOptCB:GetChecked() then
-				ShowFilterMenu("player")
+		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()
@@ -1528,12 +1480,12 @@ do

 				ChangeFilters = true
 			else
-				ARL_ExpPlayerOptCB.text:SetText(addon:Yellow(ExpButtonText[5]))
+				MainPanel.menu_toggle_player.text:SetText(addon:Yellow(CATEGORY_TEXT["player"]))
 				ChangeFilters = false
 			end
-		elseif panel == 6 then
-			if ARL_ExpRepOptCB:GetChecked() then
-				ShowFilterMenu("rep")
+		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()
@@ -1546,12 +1498,12 @@ do

 				ChangeFilters = true
 			else
-				ARL_ExpRepOptCB.text:SetText(addon:Yellow(ExpButtonText[6]))
+				MainPanel.menu_toggle_rep.text:SetText(addon:Yellow(CATEGORY_TEXT["rep"]))
 				ChangeFilters = false
 			end
-		elseif panel == 7 then
-			if ARL_ExpMiscOptCB:GetChecked() then
-				ShowFilterMenu("misc")
+		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()
@@ -1564,7 +1516,7 @@ do

 				ChangeFilters = true
 			else
-				ARL_ExpMiscOptCB.text:SetText(addon:Yellow(ExpButtonText[7]))
+				MainPanel.menu_toggle_misc.text:SetText(addon:Yellow(CATEGORY_TEXT["misc"]))
 				ChangeFilters = false
 			end
 		end
@@ -1572,13 +1524,13 @@ do
 		if ChangeFilters then
 			-- Depending on which panel we're showing, either display one column
 			-- or two column
-			if panel == 1 or panel == 2 or panel == 3 or panel == 4 or panel == 7 then
+			if panel == "general" or panel == "obtain" or panel == "binding" or panel == "item" or panel == "misc" then
 				MainPanel.filter_menu.texture:ClearAllPoints()
 				MainPanel.filter_menu:SetWidth(FILTERMENU_DOUBLE_WIDTH)
 				MainPanel.filter_menu.texture:SetTexture([[Interface\Addons\AckisRecipeList\img\fly_2col]])
 				MainPanel.filter_menu.texture:SetAllPoints(MainPanel.filter_menu)
 				MainPanel.filter_menu.texture:SetTexCoord(0, (FILTERMENU_DOUBLE_WIDTH/256), 0, (FILTERMENU_HEIGHT/512))
-			elseif ((panel == 5) or (panel == 6)) then
+			elseif panel == "player" or panel == "rep" then
 				MainPanel.filter_menu.texture:ClearAllPoints()
 				MainPanel.filter_menu:SetWidth(FILTERMENU_SINGLE_WIDTH)
 				MainPanel.filter_menu.texture:SetTexture([[Interface\Addons\AckisRecipeList\img\fly_1col]])
@@ -1593,29 +1545,29 @@ do
 		end
 	end

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

 		cButton:SetWidth(ExpTextureSize)
 		cButton:SetHeight(ExpTextureSize)
 		cButton:SetScript("OnClick",
-				  function()
+				  function(self, button, down)
 					  ToggleFilterMenu(panelIndex)
 				  end)

-		local bgTex = cButton:CreateTexture(cButton:GetName() .. "bgTex", "BACKGROUND")
+		local bgTex = cButton:CreateTexture(nil, "BACKGROUND")
 		bgTex:SetTexture('Interface/SpellBook/UI-Spellbook-SpellBackground')
 		bgTex:SetHeight(ExpTextureSize + 6)
 		bgTex:SetWidth(ExpTextureSize + 4)
 		bgTex:SetTexCoord(0, (43/64), 0, (43/64))
 		bgTex:SetPoint("CENTER", cButton, "CENTER", 0, 0)

-		local iconTex = cButton:CreateTexture(cButton:GetName() .. "iconTex", "BORDER")
+		local iconTex = cButton:CreateTexture(nil, "BORDER")
 		iconTex:SetTexture('Interface/Icons/' .. bTex)
 		iconTex:SetAllPoints(cButton)

-		local pushedTexture = cButton:CreateTexture(cButton:GetName() .. "pTex", "ARTWORK")
+		local pushedTexture = cButton:CreateTexture(nil, "ARTWORK")
 		pushedTexture:SetTexture('Interface/Buttons/UI-Quickslot-Depress')
 		pushedTexture:SetAllPoints(cButton)
 		cButton:SetPushedTexture(pushedTexture)
@@ -1634,7 +1586,7 @@ do

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

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

 		return cButton
 	end
 end	-- do

-ARL_ExpGeneralOptCB = CreateFilterMenuButton("ARL_ExpGeneralOptCB", "INV_Misc_Note_06", 1)
-ARL_ExpGeneralOptCB:SetPoint("TOPRIGHT", MainPanel.filter_reset, "BOTTOMLEFT", -7, -23)
+MainPanel.menu_toggle_general = CreateFilterMenuButton("INV_Misc_Note_06", "general")
+MainPanel.menu_toggle_general:SetPoint("TOPRIGHT", MainPanel.filter_reset, "BOTTOMLEFT", -7, -23)

-ARL_ExpObtainOptCB = CreateFilterMenuButton("ARL_ExpObtainOptCB", "Spell_Shadow_MindRot", 2)
-ARL_ExpObtainOptCB:SetPoint("TOPLEFT", ARL_ExpGeneralOptCB, "BOTTOMLEFT", 0, -8)
+MainPanel.menu_toggle_obtain = CreateFilterMenuButton("Spell_Shadow_MindRot", "obtain")
+MainPanel.menu_toggle_obtain:SetPoint("TOPLEFT", MainPanel.menu_toggle_general, "BOTTOMLEFT", 0, -8)

-ARL_ExpBindingOptCB = CreateFilterMenuButton("ARL_ExpBindingOptCB", "INV_Belt_20", 3)
-ARL_ExpBindingOptCB:SetPoint("TOPLEFT", ARL_ExpObtainOptCB, "BOTTOMLEFT", -0, -8)
+MainPanel.menu_toggle_binding = CreateFilterMenuButton("INV_Belt_20", "binding")
+MainPanel.menu_toggle_binding:SetPoint("TOPLEFT", MainPanel.menu_toggle_obtain, "BOTTOMLEFT", -0, -8)

-ARL_ExpItemOptCB = CreateFilterMenuButton("ARL_ExpItemOptCB", "INV_Misc_EngGizmos_19", 4)
-ARL_ExpItemOptCB:SetPoint("TOPLEFT", ARL_ExpBindingOptCB, "BOTTOMLEFT", -0, -8)
+MainPanel.menu_toggle_item = CreateFilterMenuButton("INV_Misc_EngGizmos_19", "item")
+MainPanel.menu_toggle_item:SetPoint("TOPLEFT", MainPanel.menu_toggle_binding, "BOTTOMLEFT", -0, -8)

-ARL_ExpPlayerOptCB = CreateFilterMenuButton("ARL_ExpPlayerOptCB", "INV_Misc_GroupLooking", 5)
-ARL_ExpPlayerOptCB:SetPoint("TOPLEFT", ARL_ExpItemOptCB, "BOTTOMLEFT", -0, -8)
+MainPanel.menu_toggle_player = CreateFilterMenuButton("INV_Misc_GroupLooking", "player")
+MainPanel.menu_toggle_player:SetPoint("TOPLEFT", MainPanel.menu_toggle_item, "BOTTOMLEFT", -0, -8)

-ARL_ExpRepOptCB = CreateFilterMenuButton("ARL_ExpRepOptCB", "INV_Scroll_05", 6)
-ARL_ExpRepOptCB:SetPoint("TOPLEFT", ARL_ExpPlayerOptCB, "BOTTOMLEFT", -0, -8)
+MainPanel.menu_toggle_rep = CreateFilterMenuButton("INV_Scroll_05", "rep")
+MainPanel.menu_toggle_rep:SetPoint("TOPLEFT", MainPanel.menu_toggle_player, "BOTTOMLEFT", -0, -8)

-ARL_ExpMiscOptCB = CreateFilterMenuButton("ARL_ExpMiscOptCB", "Trade_Engineering", 7)
-ARL_ExpMiscOptCB:SetPoint("TOPLEFT", ARL_ExpRepOptCB, "BOTTOMLEFT", -0, -8)
+MainPanel.menu_toggle_misc = CreateFilterMenuButton("Trade_Engineering", "misc")
+MainPanel.menu_toggle_misc:SetPoint("TOPLEFT", MainPanel.menu_toggle_rep, "BOTTOMLEFT", -0, -8)

 -------------------------------------------------------------------------------
 -- Create MainPanel.filter_menu and set its scripts.