You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
133 lines
4.9 KiB
133 lines
4.9 KiB
-------------------------------------------------------------------------------
|
|
---------------------------------- NAMESPACE ----------------------------------
|
|
-------------------------------------------------------------------------------
|
|
|
|
local ADDON_NAME, ns = ...
|
|
local L = ns.locale
|
|
|
|
-------------------------------------------------------------------------------
|
|
--------------------------- UIDROPDOWNMENU_ADDSLIDER --------------------------
|
|
-------------------------------------------------------------------------------
|
|
|
|
local function UIDropDownMenu_AddSlider (info, level)
|
|
local function format (v)
|
|
if info.percentage then return FormatPercentage(v, true) end
|
|
return string.format("%.2f", v)
|
|
end
|
|
|
|
info.frame.Label:SetText(info.text)
|
|
info.frame.Value:SetText(format(info.value))
|
|
info.frame.Slider:SetMinMaxValues(info.min, info.max)
|
|
info.frame.Slider:SetMinMaxValues(info.min, info.max)
|
|
info.frame.Slider:SetValueStep(info.step)
|
|
info.frame.Slider:SetAccessorFunction(function () return info.value end)
|
|
info.frame.Slider:SetMutatorFunction(function (v)
|
|
info.frame.Value:SetText(format(v))
|
|
info.func(v)
|
|
end)
|
|
info.frame.Slider:UpdateVisibleState()
|
|
|
|
UIDropDownMenu_AddButton({ customFrame = info.frame }, level)
|
|
end
|
|
|
|
-------------------------------------------------------------------------------
|
|
---------------------------- WORLD MAP BUTTON MIXIN ---------------------------
|
|
-------------------------------------------------------------------------------
|
|
|
|
local WorldMapOptionsButtonMixin = {}
|
|
_G[ADDON_NAME.."WorldMapOptionsButtonMixin"] = WorldMapOptionsButtonMixin
|
|
|
|
function WorldMapOptionsButtonMixin:OnLoad()
|
|
UIDropDownMenu_SetInitializeFunction(self.DropDown, function (dropdown, level)
|
|
dropdown:GetParent():InitializeDropDown(level)
|
|
end)
|
|
UIDropDownMenu_SetDisplayMode(self.DropDown, "MENU")
|
|
|
|
self.AlphaOption = CreateFrame('Frame', ADDON_NAME..'AlphaMenuSliderOption',
|
|
nil, ADDON_NAME..'SliderMenuOptionTemplate')
|
|
self.ScaleOption = CreateFrame('Frame', ADDON_NAME..'ScaleMenuSliderOption',
|
|
nil, ADDON_NAME..'SliderMenuOptionTemplate')
|
|
end
|
|
|
|
function WorldMapOptionsButtonMixin:OnMouseDown(button)
|
|
self.Icon:SetPoint("TOPLEFT", 6, -6)
|
|
local xOffset = WorldMapFrame.isMaximized and -125 or 0
|
|
ToggleDropDownMenu(1, nil, self.DropDown, self, xOffset, -5)
|
|
PlaySound(SOUNDKIT.IG_MAINMENU_OPTION_CHECKBOX_ON)
|
|
end
|
|
|
|
function WorldMapOptionsButtonMixin:OnMouseUp()
|
|
self.Icon:SetPoint("TOPLEFT", self, "TOPLEFT", 4, -4)
|
|
end
|
|
|
|
function WorldMapOptionsButtonMixin:OnEnter()
|
|
GameTooltip:SetOwner(self, "ANCHOR_RIGHT")
|
|
GameTooltip_SetTitle(GameTooltip, L["context_menu_title"])
|
|
GameTooltip_AddNormalLine(GameTooltip, L["map_button_text"])
|
|
GameTooltip:Show()
|
|
end
|
|
|
|
function WorldMapOptionsButtonMixin:Refresh()
|
|
local map = ns.maps[self:GetParent():GetMapID() or 0]
|
|
if map and map:HasEnabledGroups() then self:Show() else self:Hide() end
|
|
end
|
|
|
|
function WorldMapOptionsButtonMixin:InitializeDropDown(level)
|
|
if level == 1 then
|
|
UIDropDownMenu_AddButton({
|
|
isTitle = true,
|
|
notCheckable = true,
|
|
text = WORLD_MAP_FILTER_TITLE
|
|
})
|
|
|
|
local map = ns.maps[self:GetParent():GetMapID()]
|
|
|
|
for i, group in ipairs(map.groups) do
|
|
if group:IsEnabled() then
|
|
UIDropDownMenu_AddButton({
|
|
text = L["options_icons_"..group.name],
|
|
isNotRadio = true,
|
|
keepShownOnClick = true,
|
|
hasArrow = true,
|
|
value = group,
|
|
checked = group:GetDisplay(),
|
|
arg1 = group,
|
|
func = function (button, group)
|
|
group:SetDisplay(button.checked)
|
|
end
|
|
})
|
|
end
|
|
end
|
|
|
|
UIDropDownMenu_AddSeparator()
|
|
UIDropDownMenu_AddButton({
|
|
text = L["options_show_completed_nodes"],
|
|
isNotRadio = true,
|
|
keepShownOnClick = true,
|
|
checked = ns:GetOpt('show_completed_nodes'),
|
|
func = function (button, option)
|
|
ns:SetOpt('show_completed_nodes', button.checked)
|
|
end
|
|
})
|
|
elseif level == 2 then
|
|
-- Get correct map ID to query/set options for
|
|
local group = UIDROPDOWNMENU_MENU_VALUE
|
|
|
|
UIDropDownMenu_AddSlider({
|
|
text = L["options_opacity"],
|
|
min = 0, max = 1, step=0.01,
|
|
value = group:GetAlpha(),
|
|
frame = self.AlphaOption,
|
|
percentage = true,
|
|
func = function (v) group:SetAlpha(v) end
|
|
}, 2)
|
|
|
|
UIDropDownMenu_AddSlider({
|
|
text = L["options_scale"],
|
|
min = 0.3, max = 3, step=0.05,
|
|
value = group:GetScale(),
|
|
frame = self.ScaleOption,
|
|
func = function (v) group:SetScale(v) end
|
|
}, 2)
|
|
end
|
|
end
|