Skip to content

Commit

Permalink
LibDBIcon-1.0 10.1.3
Browse files Browse the repository at this point in the history
  • Loading branch information
CruelDrool committed May 11, 2023
1 parent f49cbad commit 42d0362
Showing 1 changed file with 91 additions and 77 deletions.
168 changes: 91 additions & 77 deletions Libs/LibDBIcon-1.0/LibDBIcon-1.0.lua
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@
--

local DBICON10 = "LibDBIcon-1.0"
local DBICON10_MINOR = 50 -- Bump on changes
local DBICON10_MINOR = 51 -- Bump on changes
if not LibStub then error(DBICON10 .. " requires LibStub.") end
local ldb = LibStub("LibDataBroker-1.1", true)
if not ldb then error(DBICON10 .. " requires LibDataBroker-1.1.") end
Expand Down Expand Up @@ -343,47 +343,69 @@ if not lib.loggedIn then
frame:RegisterEvent("PLAYER_LOGIN")
end

local function getDatabase(name)
return lib.objects[name].db
do
local function OnMinimapEnter()
if isDraggingButton then return end
for _, button in next, lib.objects do
if button.showOnMouseover then
button.fadeOut:Stop()
button:SetAlpha(1)
end
end
end
local function OnMinimapLeave()
if isDraggingButton then return end
for _, button in next, lib.objects do
if button.showOnMouseover then
button.fadeOut:Play()
end
end
end
Minimap:HookScript("OnEnter", OnMinimapEnter)
Minimap:HookScript("OnLeave", OnMinimapLeave)
end

--------------------------------------------------------------------------------
-- Button API
--

function lib:Register(name, object, db, customCompartmentIcon)
if not object.icon then error("Can't register LDB objects without icons set!") end
if lib.objects[name] then error(DBICON10.. ": Object '".. name .."' is already registered.") end
if lib:GetMinimapButton(name) then error(DBICON10.. ": Object '".. name .."' is already registered.") end
createButton(name, object, db, customCompartmentIcon)
end

function lib:Lock(name)
if not lib:IsRegistered(name) then return end
if lib.objects[name] then
lib.objects[name]:SetScript("OnDragStart", nil)
lib.objects[name]:SetScript("OnDragStop", nil)
end
local db = getDatabase(name)
if db then
db.lock = true
local button = lib:GetMinimapButton(name)
if button then
button:SetScript("OnDragStart", nil)
button:SetScript("OnDragStop", nil)
if button.db then
button.db.lock = true
end
end
end

function lib:Unlock(name)
if not lib:IsRegistered(name) then return end
if lib.objects[name] then
lib.objects[name]:SetScript("OnDragStart", onDragStart)
lib.objects[name]:SetScript("OnDragStop", onDragStop)
end
local db = getDatabase(name)
if db then
db.lock = nil
local button = lib:GetMinimapButton(name)
if button then
button:SetScript("OnDragStart", onDragStart)
button:SetScript("OnDragStop", onDragStop)
if button.db then
button.db.lock = nil
end
end
end

function lib:Hide(name)
if not lib.objects[name] then return end
lib.objects[name]:Hide()
local button = lib:GetMinimapButton(name)
if button then
button:Hide()
end
end

function lib:Show(name)
local button = lib.objects[name]
local button = lib:GetMinimapButton(name)
if button then
button:Show()
updatePosition(button, button.db and button.db.minimapPos or button.minimapPos)
Expand All @@ -395,66 +417,46 @@ function lib:IsRegistered(name)
end

function lib:Refresh(name, db)
local button = lib.objects[name]
if db then
button.db = db
end
updatePosition(button, button.db and button.db.minimapPos or button.minimapPos)
if not button.db or not button.db.hide then
button:Show()
else
button:Hide()
end
if not button.db or not button.db.lock then
button:SetScript("OnDragStart", onDragStart)
button:SetScript("OnDragStop", onDragStop)
else
button:SetScript("OnDragStart", nil)
button:SetScript("OnDragStop", nil)
end
end

function lib:GetMinimapButton(name)
return lib.objects[name]
end

do
local function OnMinimapEnter()
if isDraggingButton then return end
for _, button in next, lib.objects do
if button.showOnMouseover then
button.fadeOut:Stop()
button:SetAlpha(1)
end
local button = lib:GetMinimapButton(name)
if button then
if db then
button.db = db
end
end
local function OnMinimapLeave()
if isDraggingButton then return end
for _, button in next, lib.objects do
if button.showOnMouseover then
button.fadeOut:Play()
end
updatePosition(button, button.db and button.db.minimapPos or button.minimapPos)
if not button.db or not button.db.hide then
button:Show()
else
button:Hide()
end
if not button.db or not button.db.lock then
button:SetScript("OnDragStart", onDragStart)
button:SetScript("OnDragStop", onDragStop)
else
button:SetScript("OnDragStart", nil)
button:SetScript("OnDragStop", nil)
end
end
Minimap:HookScript("OnEnter", OnMinimapEnter)
Minimap:HookScript("OnLeave", OnMinimapLeave)
end

function lib:ShowOnEnter(name, value)
local button = lib.objects[name]
if button then
if value then
button.showOnMouseover = true
button.fadeOut:Stop()
button:SetAlpha(0)
else
button.showOnMouseover = false
button.fadeOut:Stop()
button:SetAlpha(1)
end
function lib:ShowOnEnter(name, value)
local button = lib:GetMinimapButton(name)
if button then
if value then
button.showOnMouseover = true
button.fadeOut:Stop()
button:SetAlpha(0)
else
button.showOnMouseover = false
button.fadeOut:Stop()
button:SetAlpha(1)
end
end
end

function lib:GetMinimapButton(name)
return lib.objects[name]
end

function lib:GetButtonList()
local t = {}
for name in next, lib.objects do
Expand All @@ -477,9 +479,15 @@ function lib:SetButtonToPosition(button, position)
end

--------------------------------------------------------------------------------
-- Addon Compartment
-- Addon Compartment API
--

function lib:IsButtonCompartmentAvailable()
if AddonCompartmentFrame then
return true
end
end

function lib:IsButtonInCompartment(buttonName)
local object = lib.objects[buttonName]
if object and object.db and object.db.showInCompartment then
Expand Down Expand Up @@ -532,7 +540,7 @@ end
--

for name, button in next, lib.objects do
local db = getDatabase(name)
local db = button.db
if not db or not db.lock then
button:SetScript("OnDragStart", onDragStart)
button:SetScript("OnDragStop", onDragStop)
Expand All @@ -555,3 +563,9 @@ for name, button in next, lib.objects do
end
end
lib:SetButtonRadius(lib.radius) -- Upgrade to 40
if lib.notCreated then -- Upgrade to 50
for name in next, lib.notCreated do
createButton(name, lib.notCreated[name][1], lib.notCreated[name][2])
end
lib.notCreated = nil
end

0 comments on commit 42d0362

Please sign in to comment.