local SLE, T, E, L, V, P, G = unpack(select(2, ...)) local UB = SLE.UIButtons local lib = LibStub('LibElv-UIButtons-1.0') --GLOBALS: DBM, VEM, LibStub, Altoholic, AtlasLoot, xCT_Plus, Swatter, SlashCmdList local _G = _G local IsAddOnLoaded = IsAddOnLoaded local ADDONS, CUSTOM = ADDONS, CUSTOM local RandomRoll = RandomRoll local SendChatMessage = SendChatMessage local ReloadUI = ReloadUI local function CustomRollCall() local min, max = tonumber(E.db.sle.uibuttons.customroll.min), tonumber(E.db.sle.uibuttons.customroll.max) if min <= max then RandomRoll(min, max) else SLE:Print(L["Custom roll limits are set incorrectly! Minimum should be smaller then or equial to maximum."]) end end function UB:ConfigSetup(menu) menu:CreateDropdownButton('Config', 'Elv', '|cff1784d1ElvUI|r', L["ElvUI Config"], L["Click to toggle config window"], function() if InCombatLockdown() then return end; E:ToggleOptions() end, nil, true) menu:CreateDropdownButton('Config', 'SLE', '|cff9482c9S&L|r', L["S&L Config"], L["Click to toggle Shadow & Light config group"], function() if InCombatLockdown() then return end; E:ToggleOptions(); E.Libs['AceConfigDialog']:SelectGroup('ElvUI', 'sle') end, nil, true) menu:CreateSeparator('Config', 'First', 4, 2) menu:CreateDropdownButton( 'Config', 'Reload', '/reloadui', L["Reload UI"], L["Click to reload your interface"], function() ReloadUI() end, nil, true) menu:CreateDropdownButton('Config', 'MoveUI', '/moveui', L["Move UI"], L["Unlock various elements of the UI to be repositioned."], function() if InCombatLockdown() then return end; E:ToggleMoveMode() end, nil, true) end function UB:AddonSetup(menu) menu:CreateDropdownButton('Addon', 'Manager', ADDONS, L["AddOn Manager"], L["Click to toggle the AddOn Manager frame."], function() _G["GameMenuButtonAddons"]:Click() end, nil, true) menu:CreateDropdownButton('Addon', 'DBM', L["Boss Mod"], L["Boss Mod"], L["Click to toggle the Configuration/Option Window from the Bossmod you have enabled."], function() DBM:LoadGUI() end, 'DBM-Core') menu:CreateDropdownButton('Addon', 'VEM', L["Boss Mod"], L["Boss Mod"], L["Click to toggle the Configuration/Option Window from the Bossmod you have enabled."], function() VEM:LoadGUI() end, 'VEM-Core') menu:CreateDropdownButton('Addon', 'BigWigs', L["Boss Mod"], L["Boss Mod"], L["Click to toggle the Configuration/Option Window from the Bossmod you have enabled."], function() LibStub('LibDataBroker-1.1'):GetDataObjectByName('BigWigs'):OnClick('RightButton') end, 'BigWigs') menu:CreateSeparator('Addon', 'First', 4, 2) menu:CreateDropdownButton('Addon', 'Altoholic', 'Altoholic', nil, nil, function() AltoholicFrame:ToggleUI() end, 'Altoholic') menu:CreateDropdownButton('Addon', 'AtlasLoot', 'AtlasLoot', nil, nil, function() AtlasLoot.GUI:Toggle() end, 'AtlasLoot') menu:CreateDropdownButton('Addon', 'WeakAuras', 'WeakAuras', nil, nil, function() SlashCmdList.WEAKAURAS('') end, 'WeakAuras') menu:CreateDropdownButton('Addon', 'xCT', 'xCT+', nil, nil, function() xCT_Plus:ToggleConfigTool() end, 'xCT+') menu:CreateDropdownButton('Addon', 'Swatter', 'Swatter', nil, nil, function() Swatter.ErrorShow() end, '!Swatter') --Always keep at the bottom-- menu:CreateDropdownButton('Addon', 'WowLua', 'WowLua', nil, nil, function() SlashCmdList['WOWLUA']('') end, 'WowLua', false) end function UB:StatusSetup(menu) menu:CreateDropdownButton('Status', 'AFK', L["AFK"], nil, nil, function() SendChatMessage('' ,'AFK' ) end) menu:CreateDropdownButton('Status', 'DND', L["DND"], nil, nil, function() SendChatMessage('' ,'DND' ) end) end function UB:RollSetup(menu) menu:CreateDropdownButton('Roll', 'Ten', '1-10', nil, nil, function() RandomRoll(1, 10) end) menu:CreateDropdownButton('Roll', 'Twenty', '1-20', nil, nil, function() RandomRoll(1, 20) end) menu:CreateDropdownButton('Roll', 'Thirty', '1-30', nil, nil, function() RandomRoll(1, 30) end) menu:CreateDropdownButton('Roll', 'Forty', '1-40', nil, nil, function() RandomRoll(1, 40) end) menu:CreateDropdownButton('Roll', 'Hundred', '1-100', nil, nil, function() RandomRoll(1, 100) end) menu:CreateDropdownButton('Roll', 'Custom', CUSTOM, nil, nil, function() CustomRollCall() end) end function UB:SetupBar(menu) if E.private.sle.uibuttons.style == 'classic' then menu:CreateCoreButton('Config', 'C', function() E:ToggleOptions() end) menu:CreateCoreButton('Reload', 'R', function() ReloadUI() end) menu:CreateCoreButton('MoveUI', 'M', function(self) E:ToggleMoveMode() end) menu:CreateCoreButton('Boss', 'B', function(self) if IsAddOnLoaded('DBM-Core') then DBM:LoadGUI() elseif IsAddOnLoaded('VEM-Core') then VEM:LoadGUI() elseif IsAddOnLoaded('BigWigs') then LibStub('LibDataBroker-1.1'):GetDataObjectByName('BigWigs'):OnClick('RightButton') end end) menu:CreateCoreButton('Addon', 'A', function(self) _G['GameMenuButtonAddons']:Click() end) else menu:CreateCoreButton('Config', 'C') UB:ConfigSetup(menu) menu:CreateCoreButton('Addon', 'A') UB:AddonSetup(menu) menu:CreateCoreButton('Status', 'S') UB:StatusSetup(menu) menu:CreateCoreButton('Roll', 'R') UB:RollSetup(menu) end end function UB:RightClicks(menu) if E.private.sle.uibuttons.style == 'classic' then return end for i = 1, #menu.ToggleTable do menu.ToggleTable[i]:RegisterForClicks('LeftButtonDown', 'RightButtonDown') end menu.Config.Toggle:HookScript('OnClick', function(self, button, down) if button == 'RightButton' and E.db.sle.uibuttons.Config.enable then menu.Config[menu.db.Config.called]:Click() end end) menu.Addon.Toggle:HookScript('OnClick', function(self, button, down) if button == 'RightButton' and E.db.sle.uibuttons.Addon.enable then menu.Addon[menu.db.Addon.called]:Click() end end) menu.Status.Toggle:HookScript('OnClick', function(self, button, down) if button == 'RightButton' and E.db.sle.uibuttons.Status.enable then menu.Status[menu.db.Status.called]:Click() end end) menu.Roll.Toggle:HookScript('OnClick', function(self, button, down) if button == 'RightButton' and E.db.sle.uibuttons.Roll.enable then menu.Roll[menu.db.Roll.called]:Click() end end) end function UB:Initialize() if not SLE.initialized then return end if E.private.sle.uiButtonStyle then E.private.sle.uibuttons.style = E.private.sle.uiButtonStyle E.private.sle.uiButtonStyle = nil end UB.Holder = lib:CreateFrame('SLE_UIButtons', E.db.sle.uibuttons, P.sle.uibuttons, E.private.sle.uibuttons.style, 'dropdown', E.private.sle.uibuttons.strata, E.private.sle.uibuttons.level, E.private.sle.uibuttons.transparent) local menu = UB.Holder menu:SetPoint('LEFT', E.UIParent, 'LEFT', -2, 0) menu:SetupMover(L["S&L UI Buttons"], 'ALL,S&L,S&L MISC') function UB:ForUpdateAll() UB.Holder.db = E.db.sle.uibuttons UB.Holder:ToggleShow() UB.Holder:FrameSize() end UB:SetupBar(menu) menu:FrameSize() menu:ToggleShow() UB.FrameSize = menu.FrameSize UB:RightClicks(menu) UB.Holder.mover:SetFrameLevel(305) end SLE:RegisterModule(UB:GetName())