From c02790e6bf4a08a5aa306def01c769a6d92058f8 Mon Sep 17 00:00:00 2001 From: shagu Date: Sat, 15 Feb 2025 17:23:54 +0100 Subject: [PATCH] bags: add new option to use full-text search --- api/config.lua | 2 +- modules/bags.lua | 20 ++++++++++++++++++++ modules/gui.lua | 1 + 3 files changed, 22 insertions(+), 1 deletion(-) diff --git a/api/config.lua b/api/config.lua index 3635fd88..4bb8d170 100644 --- a/api/config.lua +++ b/api/config.lua @@ -164,6 +164,7 @@ function pfUI:LoadConfig() pfUI:UpdateConfig("appearance", "bags", "unusable_color", ".9,.2,.2,1") pfUI:UpdateConfig("appearance", "bags", "borderlimit", "1") pfUI:UpdateConfig("appearance", "bags", "borderonlygear", "0") + pfUI:UpdateConfig("appearance", "bags", "fulltext", "1") pfUI:UpdateConfig("appearance", "bags", "movable", "0") pfUI:UpdateConfig("appearance", "bags", "abovechat", "0") pfUI:UpdateConfig("appearance", "bags", "hidechat", "0") @@ -608,7 +609,6 @@ function pfUI:LoadConfig() pfUI:UpdateConfig("panel", "xp", "rep_anchor", "pfChatRight") pfUI:UpdateConfig("panel", "xp", "rep_position", "LEFT") pfUI:UpdateConfig("panel", "xp", "dont_overlap", "0") - pfUI:UpdateConfig("castbar", "player", "hide_blizz", "1") pfUI:UpdateConfig("castbar", "player", "hide_pfui", "0") diff --git a/modules/bags.lua b/modules/bags.lua index fe07d720..9c5262c8 100644 --- a/modules/bags.lua +++ b/modules/bags.lua @@ -987,6 +987,7 @@ pfUI:RegisterModule("bags", "vanilla:tbc", function () -- bag search if not frame.search then frame.search = CreateFrame("Frame", "pfBagSearch", frame) + frame.search.db = {} frame.search:SetHeight(12) frame.search:SetPoint("TOPLEFT", frame, "TOPLEFT", default_border, -default_border) frame.search:SetPoint("TOPRIGHT", frame.keys, "TOPLEFT", -default_border*3, -default_border) @@ -1031,6 +1032,25 @@ pfUI:RegisterModule("bags", "vanilla:tbc", function () if itemCount then local itemLink = GetContainerItemLink(bag, slot) local itemstring = string.sub(itemLink, string.find(itemLink, "%[")+1, string.find(itemLink, "%]")-1) + + if C.appearance.bags.fulltext == "1" then + if not frame.search.db[itemLink] then + scanner:SetBagItem(bag, slot) + local text = scanner:Text() + + local str = "" + for k, v in pairs(text) do + str = str .. (v[1] or "") .. (v[2] or "") + end + + frame.search.db[itemLink] = strlower(str) + end + + if strfind(frame.search.db[itemLink], strlower(this:GetText()), 1, true) then + pfUI.bags[bag].slots[slot].frame:SetAlpha(1) + end + end + if strfind(strlower(itemstring), strlower(this:GetText()), 1, true) then pfUI.bags[bag].slots[slot].frame:SetAlpha(1) end diff --git a/modules/gui.lua b/modules/gui.lua index 0351c1a2..ee4d4f7b 100644 --- a/modules/gui.lua +++ b/modules/gui.lua @@ -1853,6 +1853,7 @@ pfUI:RegisterModule("gui", "vanilla:tbc", function () CreateConfig(nil, T["Hide Chat When Bags Are Opened"], C.appearance.bags, "hidechat", "checkbox") CreateConfig(nil, T["Bagslots Per Row"], C.appearance.bags, "bagrowlength") CreateConfig(nil, T["Bankslots Per Row"], C.appearance.bags, "bankrowlength") + CreateConfig(nil, T["Enable Full-Text Search"], C.appearance.bags, "fulltext") CreateConfig(nil, T["Item Slot Size"], C.appearance.bags, "icon_size") CreateConfig(nil, T["Auto Sell Grey Items"], C.global, "autosell", "checkbox") CreateConfig(nil, T["Auto Repair Items"], C.global, "autorepair", "checkbox")