From 41d820030f50c6eff622ccafb27d93629bb2db40 Mon Sep 17 00:00:00 2001 From: "James D. Callahan III" Date: Sun, 28 Mar 2010 07:12:35 -0400 Subject: [PATCH] Added a Quality filter menu to allow inclusion/exclusion of certain recipe item qualities. --- ARL.lua | 29 ++++++++++++++++++++++ Frame.lua | 63 ++++++++++++++++++++++++++++++++++++++++-------- Locales/devel-enUS.lua | 4 +++ 3 files changed, 86 insertions(+), 10 deletions(-) diff --git a/ARL.lua b/ARL.lua index 6567dbe..df9a8d7 100644 --- a/ARL.lua +++ b/ARL.lua @@ -306,6 +306,15 @@ function addon:OnInitialize() }, }, ------------------------------------------------------------------------------- + -- Quality Filters + ------------------------------------------------------------------------------- + quality = { + common = true, + uncommon = true, + rare = true, + epic = true, + }, + ------------------------------------------------------------------------------- -- Binding Filters ------------------------------------------------------------------------------- binding = { @@ -1316,6 +1325,26 @@ do if not obtain_filters.wrath and game_version == V.WOTLK then return false end + local quality_filters = filter_db.quality + local recipe_quality = recipe.quality + local Q = private.item_qualities + + -- Filter out certain recipe quality types. + if not quality_filters.common and recipe_quality == Q.COMMON then + return false + end + + if not quality_filters.uncommon and recipe_quality == Q.UNCOMMON then + return false + end + + if not quality_filters.rare and recipe_quality == Q.RARE then + return false + end + + if not quality_filters.epic and recipe_quality == Q.EPIC then + return false + end ------------------------------------------------------------------------------- -- Check the hard filter flags diff --git a/Frame.lua b/Frame.lua index 853a3ae..5c3712c 100644 --- a/Frame.lua +++ b/Frame.lua @@ -91,6 +91,7 @@ local CATEGORY_TEXT = { ["obtain"] = L["Obtain"], ["binding"] = L["Binding"], ["item"] = L["Item"], + ["quality"] = _G.QUALITY, ["player"] = _G.ROLE, ["rep"] = _G.REPUTATION, ["misc"] = _G.MISCELLANEOUS @@ -1601,6 +1602,7 @@ do ["obtain"] = L["FILTERING_OBTAIN_DESC"], ["binding"] = L["FILTERING_BINDING_DESC"], ["item"] = L["FILTERING_ITEM_DESC"], + ["quality"] = L["FILTERING_QUALITY_DESC"], ["player"] = L["FILTERING_PLAYERTYPE_DESC"], ["rep"] = L["FILTERING_REP_DESC"], ["misc"] = L["FILTERING_MISC_DESC"] @@ -1647,7 +1649,7 @@ do 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 == "player" or panel == "rep" then + elseif panel == "player" or panel == "rep" or panel == "quality" then MainPanel.filter_menu.texture:ClearAllPoints() MainPanel.filter_menu:SetWidth(FILTERMENU_SINGLE_WIDTH) MainPanel.filter_menu.texture:SetTexture([[Interface\Addons\AckisRecipeList\img\fly_1col]]) @@ -1662,12 +1664,12 @@ do end end - function CreateFilterMenuButton(bTex, category) - local ExpTextureSize = 34 + function CreateFilterMenuButton(button_texture, category) + local button_size = 30 local cButton = CreateFrame("CheckButton", nil, MainPanel) - cButton:SetWidth(ExpTextureSize) - cButton:SetHeight(ExpTextureSize) + cButton:SetWidth(button_size) + cButton:SetHeight(button_size) cButton:SetScript("OnClick", function(self, button, down) ToggleFilterMenu(category) @@ -1675,13 +1677,13 @@ do local bgTex = cButton:CreateTexture(nil, "BACKGROUND") bgTex:SetTexture('Interface/SpellBook/UI-Spellbook-SpellBackground') - bgTex:SetHeight(ExpTextureSize + 6) - bgTex:SetWidth(ExpTextureSize + 4) + bgTex:SetHeight(button_size + 6) + bgTex:SetWidth(button_size + 4) bgTex:SetTexCoord(0, (43/64), 0, (43/64)) bgTex:SetPoint("CENTER", cButton, "CENTER", 0, 0) local iconTex = cButton:CreateTexture(nil, "BORDER") - iconTex:SetTexture('Interface/Icons/' .. bTex) + iconTex:SetTexture('Interface/Icons/' .. button_texture) iconTex:SetAllPoints(cButton) local pushedTexture = cButton:CreateTexture(nil, "ARTWORK") @@ -1719,7 +1721,7 @@ do end -- do MainPanel.menu_toggle_general = CreateFilterMenuButton("INV_Misc_Note_06", "general") -MainPanel.menu_toggle_general:SetPoint("TOPRIGHT", MainPanel.filter_reset, "BOTTOMLEFT", -7, -23) +MainPanel.menu_toggle_general:SetPoint("TOPRIGHT", MainPanel.filter_reset, "BOTTOMLEFT", -9, -18) MainPanel.menu_toggle_obtain = CreateFilterMenuButton("INV_Misc_Bag_07", "obtain") MainPanel.menu_toggle_obtain:SetPoint("TOPLEFT", MainPanel.menu_toggle_general, "BOTTOMLEFT", 0, -8) @@ -1730,8 +1732,11 @@ MainPanel.menu_toggle_binding:SetPoint("TOPLEFT", MainPanel.menu_toggle_obtain, MainPanel.menu_toggle_item = CreateFilterMenuButton("INV_Misc_EngGizmos_19", "item") MainPanel.menu_toggle_item:SetPoint("TOPLEFT", MainPanel.menu_toggle_binding, "BOTTOMLEFT", -0, -8) +MainPanel.menu_toggle_quality = CreateFilterMenuButton("INV_Enchant_VoidCrystal", "quality") +MainPanel.menu_toggle_quality:SetPoint("TOPLEFT", MainPanel.menu_toggle_item, "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) +MainPanel.menu_toggle_player:SetPoint("TOPLEFT", MainPanel.menu_toggle_quality, "BOTTOMLEFT", -0, -8) MainPanel.menu_toggle_rep = CreateFilterMenuButton("Achievement_Reputation_01", "rep") MainPanel.menu_toggle_rep:SetPoint("TOPLEFT", MainPanel.menu_toggle_player, "BOTTOMLEFT", -0, -8) @@ -2187,6 +2192,37 @@ InitializeCheckButton(MainPanel.filter_menu.item.gun, MainPanel.filter_menu.item MainPanel.filter_menu.item.gun.text:SetText(L["Gun"]) ------------------------------------------------------------------------------- +-- Create MainPanel.filter_menu.quality, and set its scripts. +------------------------------------------------------------------------------- +MainPanel.filter_menu.quality = CreateFrame("Frame", nil, MainPanel.filter_menu) +MainPanel.filter_menu.quality:SetWidth(FILTERMENU_SMALL) +MainPanel.filter_menu.quality:SetHeight(280) +MainPanel.filter_menu.quality:EnableMouse(true) +MainPanel.filter_menu.quality:EnableKeyboard(true) +MainPanel.filter_menu.quality:SetMovable(false) +MainPanel.filter_menu.quality:SetPoint("TOPLEFT", MainPanel.filter_menu, "TOPLEFT", 17, -16) +MainPanel.filter_menu.quality:Hide() + +------------------------------------------------------------------------------- +-- Create the CheckButtons for MainPanel.filter_menu.quality +------------------------------------------------------------------------------- +MainPanel.filter_menu.quality.common = CreateFrame("CheckButton", nil, MainPanel.filter_menu.quality) +InitializeCheckButton(MainPanel.filter_menu.quality.common, MainPanel.filter_menu.quality, string.format(L["QUALITY_GENERAL_DESC"], _G.ITEM_QUALITY1_DESC), "common", 1, 1, 0) +MainPanel.filter_menu.quality.common.text:SetText(_G.ITEM_QUALITY1_DESC) + +MainPanel.filter_menu.quality.uncommon = CreateFrame("CheckButton", nil, MainPanel.filter_menu.quality) +InitializeCheckButton(MainPanel.filter_menu.quality.uncommon, MainPanel.filter_menu.quality, string.format(L["QUALITY_GENERAL_DESC"], _G.ITEM_QUALITY2_DESC), "uncommon", 2, 1, 0) +MainPanel.filter_menu.quality.uncommon.text:SetText(_G.ITEM_QUALITY2_DESC) + +MainPanel.filter_menu.quality.rare = CreateFrame("CheckButton", nil, MainPanel.filter_menu.quality) +InitializeCheckButton(MainPanel.filter_menu.quality.rare, MainPanel.filter_menu.quality, string.format(L["QUALITY_GENERAL_DESC"], _G.ITEM_QUALITY3_DESC), "rare", 3, 1, 0) +MainPanel.filter_menu.quality.rare.text:SetText(_G.ITEM_QUALITY3_DESC) + +MainPanel.filter_menu.quality.epic = CreateFrame("CheckButton", nil, MainPanel.filter_menu.quality) +InitializeCheckButton(MainPanel.filter_menu.quality.epic, MainPanel.filter_menu.quality, string.format(L["QUALITY_GENERAL_DESC"], _G.ITEM_QUALITY4_DESC), "epic", 4, 1, 0) +MainPanel.filter_menu.quality.epic.text:SetText(_G.ITEM_QUALITY4_DESC) + +------------------------------------------------------------------------------- -- Create MainPanel.filter_menu.player, and set its scripts. ------------------------------------------------------------------------------- MainPanel.filter_menu.player = CreateFrame("Frame", nil, MainPanel.filter_menu) @@ -4068,6 +4104,13 @@ function addon:InitializeFrame() ["ammo"] = { cb = filter_menu.item.ammo, svroot = filterdb.item.weapon }, ["gun"] = { cb = filter_menu.item.gun, svroot = filterdb.item.weapon }, ------------------------------------------------------------------------------------------------ + -- Quality Options + ------------------------------------------------------------------------------------------------ + ["common"] = { cb = filter_menu.quality.common, svroot = filterdb.quality }, + ["uncommon"] = { cb = filter_menu.quality.uncommon, svroot = filterdb.quality }, + ["rare"] = { cb = filter_menu.quality.rare, svroot = filterdb.quality }, + ["epic"] = { cb = filter_menu.quality.epic, svroot = filterdb.quality }, + ------------------------------------------------------------------------------------------------ -- Role Options ------------------------------------------------------------------------------------------------ ["tank"] = { cb = filter_menu.player.tank, svroot = filterdb.player }, diff --git a/Locales/devel-enUS.lua b/Locales/devel-enUS.lua index 2821246..d4dd88b 100644 --- a/Locales/devel-enUS.lua +++ b/Locales/devel-enUS.lua @@ -325,6 +325,10 @@ L["AMMO_DESC"] = "Recipes that make ammunition should be included in the scan L["Gun"] = true L["GUN_DESC"] = "Recipes that make guns should be included in the scan." +-- Item Quality Filtering UI Elements and their associated descriptions +L["FILTERING_QUALITY_DESC"] = "Configuration for which recipe quality types are included in the scan." +L["QUALITY_GENERAL_DESC"] = "Include %s quality recipe items in the scan." + -- Player Type Filtering UI Elements and their associated descriptions L["MELEE_DPS_DESC"] = "Recipes that are used by melee dps players should be included in the scan." L["TANKS_DESC"] = "Recipes that are used by tank players should be included in the scan." -- 1.7.9.5