GnomishVendorShrinker/frames/MainFrame.lua

77 lines
1.8 KiB
Lua
Raw Normal View History

2010-05-02 22:20:55 +00:00
local myname, ns = ...
2014-12-15 09:49:28 +00:00
2010-05-02 22:20:55 +00:00
2016-09-11 10:10:05 +00:00
local ItemSearch = ns.LibItemSearch
ns.LibItemSearch = nil
2016-09-12 00:28:04 +00:00
local NUMROWS = 14
2009-08-14 05:09:03 +00:00
2016-09-12 00:28:04 +00:00
function ns.NewMainFrame()
2016-09-11 01:02:40 +00:00
local GVS = CreateFrame("frame", nil, MerchantFrame)
local search = ns.MakeSearchField(GVS, scrollbar.Refresh)
2016-09-11 01:02:40 +00:00
local rows = {}
for i=1,NUMROWS do
local row = ns.NewMerchantItemFrame(GVS)
if i == 1 then
row:SetPoint("TOPLEFT")
row:SetPoint("RIGHT", -19, 0)
else
row:SetPoint("TOPLEFT", rows[i-1], "BOTTOMLEFT")
row:SetPoint("RIGHT", rows[i-1])
end
rows[i] = row
end
2009-08-14 05:09:03 +00:00
2016-09-12 00:28:04 +00:00
local scrollbar = ns.NewScrollBar(GVS, 0, 5)
function scrollbar:Refresh()
local offset = scrollbar:GetValue()
local searchstring = search:GetText()
2016-09-11 01:02:40 +00:00
local n = GetMerchantNumItems()
local row, n_searchmatch = 1, 0
for i=1,n do
local link = GetMerchantItemLink(i)
if ItemSearch:Find(link, searchstring) then
2016-09-11 01:02:40 +00:00
if n_searchmatch >= offset and n_searchmatch < offset + NUMROWS then
rows[row]:SetValue(i)
row = row + 1
end
n_searchmatch = n_searchmatch + 1
end
2016-09-11 01:02:40 +00:00
end
scrollbar:SetMinMaxValues(0, math.max(0, n_searchmatch - NUMROWS))
2016-09-12 00:28:04 +00:00
for i=row,NUMROWS do rows[i]:Hide() end
2009-08-14 05:09:03 +00:00
end
search:SetScript("OnTextChanged", Refresh)
2009-08-14 05:09:03 +00:00
2016-09-11 01:02:40 +00:00
GVS:EnableMouseWheel(true)
GVS:SetScript("OnMouseWheel", function(self, value)
if value > 0 then
scrollbar:Decrement()
else
scrollbar:Increment()
end
2016-09-11 01:02:40 +00:00
end)
2016-09-12 00:28:04 +00:00
GVS:SetScript("OnEvent", scrollbar.Refresh)
2016-09-11 01:02:40 +00:00
GVS:SetScript("OnShow", function(self, noreset)
local max = math.max(0, GetMerchantNumItems() - NUMROWS)
scrollbar:SetMinMaxValues(0, max)
scrollbar:SetValue(noreset and math.min(scrollbar:GetValue(), max) or 0)
scrollbar.Refresh()
2016-09-11 01:02:40 +00:00
GVS:RegisterEvent("BAG_UPDATE")
GVS:RegisterEvent("MERCHANT_UPDATE")
GVS:RegisterEvent("CURRENCY_DISPLAY_UPDATE")
end)
GVS:SetScript("OnHide", GVS.UnregisterAllEvents)
2009-08-14 05:09:03 +00:00
2016-09-12 00:28:04 +00:00
return GVS
2016-09-11 01:02:40 +00:00
end