init
This commit is contained in:
@@ -0,0 +1,159 @@
|
||||
local TSM = select(2, ...)
|
||||
local L = LibStub("AceLocale-3.0"):GetLocale("TradeSkillMaster_Shopping") -- loads the localization table
|
||||
|
||||
local private = {}
|
||||
|
||||
StaticPopupDialogs["TSM_SHOPPING_SAVED_EXPORT_POPUP"] = {
|
||||
text = L["Press Ctrl-C to copy this saved search."],
|
||||
button1 = OKAY,
|
||||
OnShow = function(self)
|
||||
self.editBox:SetText(private.popupText)
|
||||
self.editBox:HighlightText()
|
||||
self.editBox:SetFocus()
|
||||
self.editBox:SetScript("OnEscapePressed", function() StaticPopup_Hide("TSM_SHOPPING_SAVED_EXPORT_POPUP") end)
|
||||
self.editBox:SetScript("OnEnterPressed", function() self.button1:Click() end)
|
||||
end,
|
||||
hasEditBox = true,
|
||||
timeout = 0,
|
||||
hideOnEscape = true,
|
||||
preferredIndex = 3,
|
||||
}
|
||||
StaticPopupDialogs["TSM_SHOPPING_SAVED_IMPORT_POPUP"] = {
|
||||
text = L["Paste the search you'd like to import into the box below."],
|
||||
button1 = L["Import"],
|
||||
button2 = CANCEL,
|
||||
OnShow = function(self)
|
||||
self.editBox:SetText("")
|
||||
self.editBox:HighlightText()
|
||||
self.editBox:SetFocus()
|
||||
self.editBox:SetScript("OnEscapePressed", function() StaticPopup_Hide("TSM_SHOPPING_SAVED_IMPORT_POPUP") end)
|
||||
self.editBox:SetScript("OnEnterPressed", function() self.button1:Click() end)
|
||||
end,
|
||||
OnAccept = function(self)
|
||||
local text = self.editBox:GetText():trim()
|
||||
if text ~= "" then
|
||||
tinsert(TSM.db.global.favoriteSearches, text)
|
||||
TSM:Printf(L["Added '%s' to your favorite searches."], text)
|
||||
private.UpdateSTData()
|
||||
end
|
||||
end,
|
||||
hasEditBox = true,
|
||||
timeout = 0,
|
||||
hideOnEscape = true,
|
||||
preferredIndex = 3,
|
||||
}
|
||||
|
||||
|
||||
function private.Create(parent)
|
||||
local frame = CreateFrame("Frame", nil, parent)
|
||||
frame:Hide()
|
||||
frame:SetAllPoints()
|
||||
frame:SetScript("OnShow", private.UpdateSTData)
|
||||
private.frame = frame
|
||||
|
||||
local stHandlers = {
|
||||
OnClick = function(st, data, _, button)
|
||||
if not data or not data.search then return end
|
||||
if button == "LeftButton" then
|
||||
if IsShiftKeyDown() then
|
||||
private.popupText = data.search
|
||||
TSMAPI:ShowStaticPopupDialog("TSM_SHOPPING_SAVED_EXPORT_POPUP")
|
||||
else
|
||||
TSM.Search:StartFilterSearch(data.search)
|
||||
end
|
||||
elseif button == "RightButton" then
|
||||
if st == frame.recentST then
|
||||
if IsShiftKeyDown() then
|
||||
for i=#TSM.db.global.previousSearches, 1, -1 do
|
||||
if TSM.db.global.previousSearches[i] == data.search then
|
||||
tremove(TSM.db.global.previousSearches, i)
|
||||
end
|
||||
end
|
||||
TSM:Printf(L["Removed '%s' from your recent searches."], data.search)
|
||||
private.UpdateSTData()
|
||||
else
|
||||
tinsert(TSM.db.global.favoriteSearches, data.search)
|
||||
TSM:Printf(L["Added '%s' to your favorite searches."], data.search)
|
||||
private.UpdateSTData()
|
||||
end
|
||||
elseif st == frame.favoriteST then
|
||||
tremove(TSM.db.global.favoriteSearches, data.index)
|
||||
TSM:Printf(L["Removed '%s' from your favorite searches."], data.search)
|
||||
private.UpdateSTData()
|
||||
end
|
||||
end
|
||||
end,
|
||||
OnEnter = function(st, data, self)
|
||||
if not data or not data.search then return end
|
||||
GameTooltip:SetOwner(self, "ANCHOR_RIGHT")
|
||||
GameTooltip:AddLine(data.search, 1, 1, 1, true)
|
||||
GameTooltip:AddLine("")
|
||||
local color = TSMAPI.Design:GetInlineColor("link")
|
||||
if st == frame.recentST then
|
||||
GameTooltip:AddLine(color..L["Left-Click to run this search."], 1, 1, 1, true)
|
||||
GameTooltip:AddLine(color..L["Shift-Left-Click to export this search."], 1, 1, 1, true)
|
||||
GameTooltip:AddLine(color..L["Right-Click to favorite this recent search."], 1, 1, 1, true)
|
||||
GameTooltip:AddLine(color..L["Shift-Right-Click to remove this recent search."], 1, 1, 1, true)
|
||||
elseif st == frame.favoriteST then
|
||||
GameTooltip:AddLine(color..L["Left-Click to run this search."], 1, 1, 1, true)
|
||||
GameTooltip:AddLine(color..L["Shift-Left-Click to export this search."], 1, 1, 1, true)
|
||||
GameTooltip:AddLine(color..L["Right-Click to remove from favorite searches."], 1, 1, 1, true)
|
||||
end
|
||||
GameTooltip:Show()
|
||||
end,
|
||||
OnLeave = function()
|
||||
GameTooltip:ClearLines()
|
||||
GameTooltip:Hide()
|
||||
end
|
||||
}
|
||||
|
||||
local recentSTParent = CreateFrame("Frame", nil, frame)
|
||||
recentSTParent:SetPoint("TOPLEFT")
|
||||
recentSTParent:SetPoint("TOPRIGHT")
|
||||
recentSTParent:SetPoint("BOTTOM", frame, "CENTER", 0, 4)
|
||||
TSMAPI.Design:SetFrameColor(recentSTParent)
|
||||
frame.recentST = TSMAPI:CreateScrollingTable(recentSTParent, {{name=L["Recent Searches"], width=1}}, stHandlers, 16)
|
||||
frame.recentST:DisableSelection(true)
|
||||
|
||||
local favoriteSTParent = CreateFrame("Frame", nil, frame)
|
||||
favoriteSTParent:SetPoint("BOTTOMLEFT", 0, 30)
|
||||
favoriteSTParent:SetPoint("BOTTOMRIGHT", 0, 30)
|
||||
favoriteSTParent:SetPoint("TOP", frame, "CENTER", 0, -4)
|
||||
TSMAPI.Design:SetFrameColor(favoriteSTParent)
|
||||
frame.favoriteST = TSMAPI:CreateScrollingTable(favoriteSTParent, {{name=L["Favorite Searches"], width=1}}, stHandlers, 16)
|
||||
frame.favoriteST:DisableSelection(true)
|
||||
|
||||
local importBtn = TSMAPI.GUI:CreateButton(frame, 18)
|
||||
importBtn:SetPoint("BOTTOMLEFT", 2, 2)
|
||||
importBtn:SetPoint("BOTTOMRIGHT", -2, 2)
|
||||
importBtn:SetPoint("TOPLEFT", favoriteSTParent, "BOTTOMLEFT", 2, -2)
|
||||
importBtn:SetText(L["Import Favorite Search"])
|
||||
importBtn:SetScript("OnClick", function()
|
||||
TSMAPI:ShowStaticPopupDialog("TSM_SHOPPING_SAVED_IMPORT_POPUP")
|
||||
end)
|
||||
|
||||
return frame
|
||||
end
|
||||
|
||||
local function GetSTData(list)
|
||||
local stData = {}
|
||||
for i, search in ipairs(list) do
|
||||
local row = {
|
||||
cols = {{value=search}},
|
||||
search = search,
|
||||
index = i,
|
||||
}
|
||||
tinsert(stData, row)
|
||||
end
|
||||
return stData
|
||||
end
|
||||
|
||||
function private.UpdateSTData()
|
||||
if not private.frame then return end
|
||||
private.frame.recentST:SetData(GetSTData(TSM.db.global.previousSearches))
|
||||
private.frame.favoriteST:SetData(GetSTData(TSM.db.global.favoriteSearches))
|
||||
end
|
||||
|
||||
do
|
||||
TSM:AddSidebarFeature(L["Saved Searches"], private.Create, private.UpdateSTData)
|
||||
end
|
||||
Reference in New Issue
Block a user