Bring in events external
This commit is contained in:
parent
f0aac0b382
commit
e85695c348
|
@ -7,24 +7,30 @@ local ItemSearch = LibStub('LibItemSearch-1.0')
|
||||||
local NUMROWS, SCROLLSTEP = 14, 5
|
local NUMROWS, SCROLLSTEP = 14, 5
|
||||||
|
|
||||||
|
|
||||||
for _,f in pairs{MerchantNextPageButton, MerchantPrevPageButton, MerchantPageText} do
|
local function Hide(frame)
|
||||||
f:Hide()
|
frame:Hide()
|
||||||
f.Show = f.Hide
|
frame.Show = frame.Hide
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
||||||
local GVS = CreateFrame("frame", nil, MerchantFrame)
|
function ns.OnLoad()
|
||||||
GVS:SetWidth(315)
|
Hide(MerchantNextPageButton)
|
||||||
GVS:SetHeight(294)
|
Hide(MerchantPrevPageButton)
|
||||||
GVS:SetPoint("TOPLEFT", 8, -67)
|
Hide(MerchantPageText)
|
||||||
GVS:SetScript("OnEvent", function(self, event, ...)
|
|
||||||
|
|
||||||
|
local GVS = CreateFrame("frame", nil, MerchantFrame)
|
||||||
|
GVS:SetWidth(315)
|
||||||
|
GVS:SetHeight(294)
|
||||||
|
GVS:SetPoint("TOPLEFT", 8, -67)
|
||||||
|
GVS:SetScript("OnEvent", function(self, event, ...)
|
||||||
if self[event] then return self[event](self, event, ...) end
|
if self[event] then return self[event](self, event, ...) end
|
||||||
end)
|
end)
|
||||||
GVS:Hide()
|
GVS:Hide()
|
||||||
|
|
||||||
|
|
||||||
local rows = {}
|
local rows = {}
|
||||||
for i=1,NUMROWS do
|
for i=1,NUMROWS do
|
||||||
local row = ns.NewMerchantItemFrame(GVS)
|
local row = ns.NewMerchantItemFrame(GVS)
|
||||||
|
|
||||||
if i == 1 then
|
if i == 1 then
|
||||||
|
@ -36,12 +42,12 @@ for i=1,NUMROWS do
|
||||||
end
|
end
|
||||||
|
|
||||||
rows[i] = row
|
rows[i] = row
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
||||||
local scrollbar = LibStub("tekKonfig-Scroll").new(GVS, 0, SCROLLSTEP)
|
local scrollbar = LibStub("tekKonfig-Scroll").new(GVS, 0, SCROLLSTEP)
|
||||||
local offset = 0
|
local offset = 0
|
||||||
local function Refresh()
|
local function Refresh()
|
||||||
local n = GetMerchantNumItems()
|
local n = GetMerchantNumItems()
|
||||||
local row, n_searchmatch = 1, 0
|
local row, n_searchmatch = 1, 0
|
||||||
for i=1,n do
|
for i=1,n do
|
||||||
|
@ -58,27 +64,29 @@ local function Refresh()
|
||||||
for i=row,NUMROWS do
|
for i=row,NUMROWS do
|
||||||
rows[i]:Hide()
|
rows[i]:Hide()
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
GVS.CURRENCY_DISPLAY_UPDATE = Refresh
|
GVS.CURRENCY_DISPLAY_UPDATE = Refresh
|
||||||
GVS.BAG_UPDATE = Refresh
|
GVS.BAG_UPDATE = Refresh
|
||||||
GVS.MERCHANT_UPDATE = Refresh
|
GVS.MERCHANT_UPDATE = Refresh
|
||||||
|
|
||||||
|
|
||||||
ns.MakeSearchField(GVS, Refresh)
|
ns.MakeSearchField(GVS, Refresh)
|
||||||
|
|
||||||
|
|
||||||
local f = scrollbar:GetScript("OnValueChanged")
|
local f = scrollbar:GetScript("OnValueChanged")
|
||||||
scrollbar:SetScript("OnValueChanged", function(self, value, ...)
|
scrollbar:SetScript("OnValueChanged", function(self, value, ...)
|
||||||
offset = math.floor(value)
|
offset = math.floor(value)
|
||||||
Refresh()
|
Refresh()
|
||||||
return f(self, value, ...)
|
return f(self, value, ...)
|
||||||
end)
|
end)
|
||||||
|
|
||||||
|
|
||||||
local offset = 0
|
local offset = 0
|
||||||
GVS:EnableMouseWheel(true)
|
GVS:EnableMouseWheel(true)
|
||||||
GVS:SetScript("OnMouseWheel", function(self, value) scrollbar:SetValue(scrollbar:GetValue() - value * SCROLLSTEP) end)
|
GVS:SetScript("OnMouseWheel", function(self, value)
|
||||||
GVS:SetScript("OnShow", function(self, noreset)
|
scrollbar:SetValue(scrollbar:GetValue() - value * SCROLLSTEP)
|
||||||
|
end)
|
||||||
|
GVS:SetScript("OnShow", function(self, noreset)
|
||||||
local max = math.max(0, GetMerchantNumItems() - NUMROWS)
|
local max = math.max(0, GetMerchantNumItems() - NUMROWS)
|
||||||
scrollbar:SetMinMaxValues(0, max)
|
scrollbar:SetMinMaxValues(0, max)
|
||||||
scrollbar:SetValue(noreset and math.min(scrollbar:GetValue(), max) or 0)
|
scrollbar:SetValue(noreset and math.min(scrollbar:GetValue(), max) or 0)
|
||||||
|
@ -87,31 +95,36 @@ GVS:SetScript("OnShow", function(self, noreset)
|
||||||
GVS:RegisterEvent("BAG_UPDATE")
|
GVS:RegisterEvent("BAG_UPDATE")
|
||||||
GVS:RegisterEvent("MERCHANT_UPDATE")
|
GVS:RegisterEvent("MERCHANT_UPDATE")
|
||||||
GVS:RegisterEvent("CURRENCY_DISPLAY_UPDATE")
|
GVS:RegisterEvent("CURRENCY_DISPLAY_UPDATE")
|
||||||
end)
|
end)
|
||||||
GVS:SetScript("OnHide", function()
|
GVS:SetScript("OnHide", function()
|
||||||
GVS:UnregisterEvent("BAG_UPDATE")
|
GVS:UnregisterEvent("BAG_UPDATE")
|
||||||
GVS:UnregisterEvent("MERCHANT_UPDATE")
|
GVS:UnregisterEvent("MERCHANT_UPDATE")
|
||||||
GVS:UnregisterEvent("CURRENCY_DISPLAY_UPDATE")
|
GVS:UnregisterEvent("CURRENCY_DISPLAY_UPDATE")
|
||||||
if StackSplitFrame:IsVisible() then StackSplitFrame:Hide() end
|
if StackSplitFrame:IsVisible() then StackSplitFrame:Hide() end
|
||||||
end)
|
end)
|
||||||
|
|
||||||
|
|
||||||
-- Reanchor the buyback button, it acts weird when switching tabs otherwise...
|
-- Reanchor the buyback button, it acts weird when switching tabs otherwise...
|
||||||
MerchantBuyBackItem:ClearAllPoints()
|
MerchantBuyBackItem:ClearAllPoints()
|
||||||
MerchantBuyBackItem:SetPoint("BOTTOMRIGHT", -7, 33)
|
MerchantBuyBackItem:SetPoint("BOTTOMRIGHT", -7, 33)
|
||||||
|
|
||||||
|
|
||||||
local function Show()
|
local function Show()
|
||||||
for i=1,12 do _G["MerchantItem"..i]:Hide() end
|
for i=1,12 do _G["MerchantItem"..i]:Hide() end
|
||||||
if GVS:IsShown() then GVS:GetScript("OnShow")(GVS, true) else GVS:Show() end
|
if GVS:IsShown() then GVS:GetScript("OnShow")(GVS, true) else GVS:Show() end
|
||||||
end
|
end
|
||||||
hooksecurefunc("MerchantFrame_UpdateMerchantInfo", Show)
|
hooksecurefunc("MerchantFrame_UpdateMerchantInfo", Show)
|
||||||
|
|
||||||
|
|
||||||
hooksecurefunc("MerchantFrame_UpdateBuybackInfo", function()
|
hooksecurefunc("MerchantFrame_UpdateBuybackInfo", function()
|
||||||
GVS:Hide()
|
GVS:Hide()
|
||||||
for i=1,12 do _G["MerchantItem"..i]:Show() end
|
for i=1,12 do _G["MerchantItem"..i]:Show() end
|
||||||
end)
|
end)
|
||||||
|
|
||||||
|
|
||||||
if MerchantFrame:IsVisible() and MerchantFrame.selectedTab == 1 then Show() end
|
if MerchantFrame:IsVisible() and MerchantFrame.selectedTab == 1 then Show() end
|
||||||
|
|
||||||
|
|
||||||
|
-- Clean up our frame factories
|
||||||
|
for i,v in pairs(ns) do if i:match("^New") then ns[i] = nil end end
|
||||||
|
end
|
||||||
|
|
|
@ -10,6 +10,7 @@
|
||||||
## X-LoadOn-Merchant: true
|
## X-LoadOn-Merchant: true
|
||||||
## X-LoadOn-InterfaceOptions: GnomishVendorShrinker
|
## X-LoadOn-InterfaceOptions: GnomishVendorShrinker
|
||||||
|
|
||||||
|
externals\events.lua
|
||||||
externals\itemid.lua
|
externals\itemid.lua
|
||||||
externals\size_to_fit.lua
|
externals\size_to_fit.lua
|
||||||
externals\tooltip_scanner.lua
|
externals\tooltip_scanner.lua
|
||||||
|
|
|
@ -1,3 +1,4 @@
|
||||||
|
events.lua
|
||||||
itemid.lua
|
itemid.lua
|
||||||
size_to_fit.lua
|
size_to_fit.lua
|
||||||
tooltip_scanner.lua
|
tooltip_scanner.lua
|
||||||
|
|
|
@ -0,0 +1,94 @@
|
||||||
|
|
||||||
|
local myname, ns = ...
|
||||||
|
|
||||||
|
|
||||||
|
local frame = CreateFrame("Frame")
|
||||||
|
|
||||||
|
|
||||||
|
function ns.RegisterEvent(event, func)
|
||||||
|
frame:RegisterEvent(event)
|
||||||
|
if func then ns[event] = func end
|
||||||
|
end
|
||||||
|
|
||||||
|
|
||||||
|
function ns.UnregisterEvent(event)
|
||||||
|
frame:UnregisterEvent(event)
|
||||||
|
end
|
||||||
|
|
||||||
|
|
||||||
|
function ns.UnregisterAllEvents()
|
||||||
|
frame:UnregisterAllEvents()
|
||||||
|
end
|
||||||
|
|
||||||
|
|
||||||
|
-- Handles special OnLogin code for when the PLAYER_LOGIN event is fired.
|
||||||
|
-- If our addon is loaded after that event is fired, then we call it immediately
|
||||||
|
-- after the OnLoad handler is processed.
|
||||||
|
local function ProcessOnLogin()
|
||||||
|
if ns.OnLogin then
|
||||||
|
ns.OnLogin()
|
||||||
|
ns.OnLogin = nil
|
||||||
|
end
|
||||||
|
|
||||||
|
ProcessOnLogin = nil
|
||||||
|
if not ns.PLAYER_LOGIN then frame:UnregisterEvent("PLAYER_LOGIN") end
|
||||||
|
end
|
||||||
|
|
||||||
|
|
||||||
|
-- Handle special OnLoad code when our addon has loaded, if present
|
||||||
|
-- Also initializes the savedvar for us, if ns.dbname or ns.dbpcname is set
|
||||||
|
-- If ns.ADDON_LOADED is defined, the ADDON_LOADED event is not unregistered
|
||||||
|
local function ProcessOnLoad(arg1)
|
||||||
|
if arg1 ~= myname then return end
|
||||||
|
|
||||||
|
if ns.dbname then
|
||||||
|
local defaults = ns.dbdefaults or {}
|
||||||
|
_G[ns.dbname] = setmetatable(_G[ns.dbname] or {}, {__index = defaults})
|
||||||
|
ns.db = _G[ns.dbname]
|
||||||
|
end
|
||||||
|
|
||||||
|
if ns.dbpcname then
|
||||||
|
local defaults = ns.dbpcdefaults or {}
|
||||||
|
_G[ns.dbpcname] = setmetatable(_G[ns.dbpcname] or {}, {__index = defaults})
|
||||||
|
ns.dbpc = _G[ns.dbpcname]
|
||||||
|
end
|
||||||
|
|
||||||
|
if ns.OnLoad then
|
||||||
|
ns.OnLoad()
|
||||||
|
ns.OnLoad = nil
|
||||||
|
end
|
||||||
|
|
||||||
|
ProcessOnLoad = nil
|
||||||
|
if not ns.ADDON_LOADED then frame:UnregisterEvent("ADDON_LOADED") end
|
||||||
|
|
||||||
|
if ns.dbdefaults or ns.dbpcdefaults then ns.RegisterEvent("PLAYER_LOGOUT") end
|
||||||
|
|
||||||
|
if IsLoggedIn() then ProcessOnLogin()
|
||||||
|
else frame:RegisterEvent("PLAYER_LOGIN") end
|
||||||
|
end
|
||||||
|
|
||||||
|
|
||||||
|
-- Removes the default values from the db and dbpc as we're logging out
|
||||||
|
local function ProcessLogout()
|
||||||
|
if ns.dbdefaults then
|
||||||
|
for i,v in pairs(ns.dbdefaults) do
|
||||||
|
if ns.db[i] == v then ns.db[i] = nil end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
if ns.dbpcdefaults then
|
||||||
|
for i,v in pairs(ns.dbpcdefaults) do
|
||||||
|
if ns.dbpc[i] == v then ns.dbpc[i] = nil end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
|
||||||
|
frame:RegisterEvent("ADDON_LOADED")
|
||||||
|
frame:SetScript("OnEvent", function(self, event, arg1, ...)
|
||||||
|
if ProcessOnLoad and event == "ADDON_LOADED" then ProcessOnLoad(arg1) end
|
||||||
|
if ProcessOnLogin and event == "PLAYER_LOGIN" then ProcessOnLogin() end
|
||||||
|
|
||||||
|
if event == "PLAYER_LOGOUT" then ProcessLogout() end
|
||||||
|
if ns[event] then ns[event](event, arg1, ...) end
|
||||||
|
end)
|
|
@ -3,7 +3,7 @@ local myname, ns = ...
|
||||||
|
|
||||||
|
|
||||||
local function NewItemFrame(self, i)
|
local function NewItemFrame(self, i)
|
||||||
local item = ns.NewAltCurrencyItemFrame(self.parent)
|
local item = self.NewAltCurrencyItemFrame(self.parent)
|
||||||
|
|
||||||
if i == 1 then
|
if i == 1 then
|
||||||
item:SetPoint("LEFT")
|
item:SetPoint("LEFT")
|
||||||
|
@ -39,7 +39,11 @@ function ns.NewAltCurrencyFrame(parent)
|
||||||
local frame = CreateFrame("Frame", nil, parent)
|
local frame = CreateFrame("Frame", nil, parent)
|
||||||
frame:SetSize(1,1)
|
frame:SetSize(1,1)
|
||||||
|
|
||||||
itemframesets[frame] = setmetatable({parent = frame}, MT)
|
local t = {
|
||||||
|
parent = frame,
|
||||||
|
NewAltCurrencyItemFrame = ns.NewAltCurrencyItemFrame,
|
||||||
|
}
|
||||||
|
itemframesets[frame] = setmetatable(t, MT)
|
||||||
|
|
||||||
frame.SetValue = SetValue
|
frame.SetValue = SetValue
|
||||||
frame.SizeToFit = ns.SizeToFit
|
frame.SizeToFit = ns.SizeToFit
|
||||||
|
|
Loading…
Reference in New Issue