You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
Grichelde/GricheldeMinimap.lua

108 lines
3.7 KiB
Lua

-- read namespace from global env
local _G = _G
local Grichelde = _G.Grichelde
--- add Minimap button
function Grichelde:MinimapButton()
local function clickHandler(_, button)
if button == 'LeftButton' then
self:ToggleOptions()
elseif button == 'RightButton' then
self:ToggleActivation()
end
end
local function updateTooltip(tooltip)
if not tooltip or not tooltip.AddLine then return end
local tooltipTitle = self:Format(self.L.Minimap_Tooltip_Enabled, self.L.AddonName)
if not self.db.profile.enabled then
tooltipTitle = self:Format(self.L.Minimap_Tooltip_Disabled, self.L.AddonName)
end
tooltip:SetText(tooltipTitle,
Grichelde.COLORS.HIGHLIGHT.r, Grichelde.COLORS.HIGHLIGHT.g, Grichelde.COLORS.HIGHLIGHT.b, Grichelde.COLORS.HIGHLIGHT.a
)
tooltip:AddDoubleLine(self.L.Minimap_Tooltip_Options_Left, self.L.Minimap_Tooltip_Options_Right,
Grichelde.COLORS.GREEN.r, Grichelde.COLORS.GREEN.g, Grichelde.COLORS.GREEN.b, Grichelde.COLORS.GREEN.a,
Grichelde.COLORS.NORMAL.r, Grichelde.COLORS.NORMAL.g, Grichelde.COLORS.NORMAL.b, Grichelde.COLORS.NORMAL.a
)
tooltip:AddDoubleLine(self.L.Minimap_Tooltip_Mappings_Left, self.L.Minimap_Tooltip_Mappings_Right,
Grichelde.COLORS.GREEN.r, Grichelde.COLORS.GREEN.g, Grichelde.COLORS.GREEN.b, Grichelde.COLORS.GREEN.a,
Grichelde.COLORS.NORMAL.r, Grichelde.COLORS.NORMAL.g, Grichelde.COLORS.NORMAL.b, Grichelde.COLORS.NORMAL.a
)
end
local darkened = Grichelde.MINIMAP_ENABLED
if not self.db.profile.enabled then
darkened = Grichelde.MINIMAP_DARKENDED
end
local ldb = LibStub("LibDataBroker-1.1"):NewDataObject(self.name, {
type = "launcher",
text = self.AddonName,
icon = "Interface\\Icons\\Spell_Holy_Silence",
--icon = ([[Interface\Addons\%s\%s]]):format(self.name, self.name),
OnClick = clickHandler,
OnRightClick = function() self:ShowMappings() end,
OnTooltipShow = updateTooltip,
iconR = darkened,
iconG = darkened,
iconB = darkened
})
local icon = LibStub("LibDBIcon-1.0")
self:DebugPrint("MinimapButton : hidden: ", self.db.profile.minimapButton.hide)
icon:Register(self.name, ldb, self.db.profile.minimapButton)
return ldb, icon
end
function Grichelde:ToggleMinimapButton()
self.db.profile.minimapButton.hide = not self.db.profile.minimapButton.hide
self:DebugPrint("ToggleMinimapButton : hidden: ", self.db.profile.minimapButton.hide)
if self.db.profile.minimapButton.hide then
self:HideMinimapButton()
else
self:ShowMinimapButton()
end
end
function Grichelde:ShowMinimapButton()
if self.icon then
self.icon:Show(self.name)
end
end
function Grichelde:HideMinimapButton()
if self.icon then
self.icon:Hide(self.name)
end
end
function Grichelde:ToggleActivation()
self.db.profile.enabled = not self.db.profile.enabled
-- refresh option UI if open at the moment
self.dialog:SelectGroup(self.name, "enabled")
local formatString = self.L.AddonLoaded
local darkened = Grichelde.MINIMAP_ENABLED
if not self.db.profile.enabled then
formatString = self.L.AddonUnloaded
darkened = Grichelde.MINIMAP_DARKENDED
end
if self.dialog ~= nil and self.dialog.OpenFrames[self.name] ~= nil then
local namePlusVersion = self:Format(self.L.AddonNamePlusVersion, self.L.AddonName, self.version)
local statusText = self:Format(formatString, namePlusVersion)
self.dialog.OpenFrames[self.name]:SetStatusText(statusText)
end
self.ldb.iconR = darkened
self.ldb.iconG = darkened
self.ldb.iconB = darkened
end