TITAN_PANEL_MENU_POPUP_IND = "..."; TITAN_PANEL_MENU_FUNC_HIDE = "TitanPanelRightClickMenu_Hide"; TITAN_PANEL_MENU_FUNC_CUSTOMIZE = "TitanPanelRightClickMenu_Customize"; function TitanRightClickMenu_OnLoad() local id = TitanUtils_GetButtonIDFromMenu(); if (id) then local prepareFunction = getglobal("TitanPanelRightClickMenu_Prepare"..id.."Menu"); if (prepareFunction) then UIDropDownMenu_Initialize(this, prepareFunction, "MENU"); end end end function TitanPanelRightClickMenu_Toggle() local position = TitanPanelGetVar("Position"); local x, y = GetCursorPosition(UIParent); local fontscale = UIParent:GetScale() * TitanPanelGetVar("FontScale"); TITAN_PANEL_SELECTED = TitanUtils_GetButtonID(this:GetName()) -- Toggle menu if TITAN_PANEL_SELECTED == "MoneyButtonGold" or TITAN_PANEL_SELECTED == "MoneyButtonSilver" or TITAN_PANEL_SELECTED == "MoneyButtonCopper" then TITAN_PANEL_SELECTED = "Money" end local i = TitanPanel_GetButtonNumber(TITAN_PANEL_SELECTED) if TITAN_PANEL_SELECTED ~= "Bar" and TITAN_PANEL_SELECTED ~= "AuxBar" then if TitanPanelSettings.Location[i] ~= nil then TITAN_PANEL_SELECTED = TitanPanelSettings.Location[i] else TitanPanelSettings.Location[i] = "Bar" TITAN_PANEL_SELECTED = "Bar" end end local menu = getglobal(this:GetName().."RightClickMenu"); if ( TITAN_PANEL_SELECTED == "Bar" and position == TITAN_PANEL_PLACE_TOP ) then menu.point = "TOPLEFT"; menu.relativePoint = "BOTTOMLEFT"; else menu.point = "BOTTOMLEFT"; menu.relativePoint = "TOPLEFT"; end ToggleDropDownMenu(1, nil, menu, "TitanPanel" .. TITAN_PANEL_SELECTED .. "Button", TitanUtils_Max(x - 40, 0) / fontscale, 0); -- Adjust menu position if it's off the screen/scaled local listFrame = getglobal("DropDownList"..UIDROPDOWNMENU_MENU_LEVEL); local offscreenX, offscreenY = TitanUtils_GetOffscreen(listFrame); if not TitanPanelGetVar("DisableFont") then listFrame:SetScale(fontscale); end if ( offscreenX == 1 ) then if ( TITAN_PANEL_SELECTED == "Bar" and position == TITAN_PANEL_PLACE_TOP ) then listFrame:ClearAllPoints(); listFrame:SetPoint("TOPRIGHT", "TitanPanel" .. TITAN_PANEL_SELECTED .. "Button", "BOTTOMLEFT", x, 0); else listFrame:ClearAllPoints(); listFrame:SetPoint("BOTTOMRIGHT", "TitanPanel" .. TITAN_PANEL_SELECTED .. "Button", "TOPLEFT", x, 0); end end end function TitanPanelRightClickMenu_IsVisible() return DropDownList1:IsVisible(); end function TitanPanelRightClickMenu_Close() DropDownList1:Hide(); end function TitanPanelRightClickMenu_AddTitle(title, level) if (title) then local info = {}; info.text = title; info.notClickable = 1; info.isTitle = 1; UIDropDownMenu_AddButton(info, level); end end function TitanPanelRightClickMenu_AddCommand(text, value, functionName, level) local info = {}; info.text = text; info.value = value; info.func = getglobal(functionName); --info.notCheckable = 1; UIDropDownMenu_AddButton(info, level); end function TitanPanelRightClickMenu_AddSpacer(level) local info = {}; info.disabled = 1; UIDropDownMenu_AddButton(info, level); end function TitanPanelRightClickMenu_Hide() TitanPanel_RemoveButton(this.value); end function TitanPanelRightClickMenu_AddToggleVar(text, id, var, toggleTable) local info = {}; info.text = text; info.value = {id, var, toggleTable}; info.func = TitanPanelRightClickMenu_ToggleVar; info.checked = TitanGetVar(id, var); info.keepShownOnClick = 1; UIDropDownMenu_AddButton(info); end function TitanPanelRightClickMenu_AddToggleIcon(id) TitanPanelRightClickMenu_AddToggleVar(TITAN_PANEL_MENU_SHOW_ICON, id, "ShowIcon"); end function TitanPanelRightClickMenu_AddToggleLabelText(id) TitanPanelRightClickMenu_AddToggleVar(TITAN_PANEL_MENU_SHOW_LABEL_TEXT, id, "ShowLabelText"); end function TitanPanelRightClickMenu_AddToggleColoredText(id) TitanPanelRightClickMenu_AddToggleVar(TITAN_PANEL_MENU_SHOW_COLORED_TEXT, id, "ShowColoredText"); end function TitanPanelRightClickMenu_ToggleVar() local id = this.value[1]; local var = this.value[2]; local toggleTable = this.value[3]; -- Toggle var TitanToggleVar(id, var); if ( TitanPanelRightClickMenu_AllVarNil(id, toggleTable) ) then -- Undo if all vars in toggle table nil TitanToggleVar(id, var); else -- Otherwise continue and update the button TitanPanelButton_UpdateButton(id, 1); end end function TitanPanelRightClickMenu_AllVarNil(id, toggleTable) if ( toggleTable ) then for i, v in toggleTable do if ( TitanGetVar(id, v) ) then return; end end return 1; end end function TitanPanelRightClickMenu_ToggleColoredText() TitanToggleVar(this.value, "ShowColoredText"); TitanPanelButton_UpdateButton(this.value, 1); end