📄 titanpanel.lua
字号:
TitanPanel_ReOrder(i);
table.remove(TitanPanelSettings.Buttons, TitanUtils_GetCurrentIndex(TitanPanelSettings.Buttons, id));
TitanPanel_InitPanelButtons();
end
function TitanPanel_AddButton(id)
if (not TitanPanelSettings) then
return;
end
local i = TitanPanel_GetButtonNumber(id)
TitanPanelSettings.Location[i] = TITAN_PANEL_SELECTED;
table.insert(TitanPanelSettings.Buttons, id);
TitanPanel_InitPanelButtons();
end
function TitanPanel_ReOrder(index)
for i = index, table.getn(TitanPanelSettings.Buttons) do
TitanPanelSettings.Location[i] = TitanPanelSettings.Location[i+1]
end
end
function TitanPanel_GetButtonNumber(id)
if (TitanPanelSettings) then
for i = 1, table.getn(TitanPanelSettings.Buttons) do
if(TitanPanelSettings.Buttons[i] == id) then
return i;
end
end
return table.getn(TitanPanelSettings.Buttons)+1;
else
return 0;
end
end
function TitanPanel_RefreshPanelButtons()
if (TitanPanelSettings) then
for i = 1, table.getn(TitanPanelSettings.Buttons) do
TitanPanelButton_UpdateButton(TitanPanelSettings.Buttons[i], 1);
end
end
end
function TitanPanelButton_Justify()
if ( not TITAN_PANEL_BUTTONS_INIT_FLAG or not TitanPanelSettings ) then
return;
end
-- Check if clock displayed on the far right side
local isClockOnRightSide;
if ( TitanUtils_TableContainsValue(TitanPanelSettings.Buttons, TITAN_CLOCK_ID) and TitanGetVar(TITAN_CLOCK_ID, "DisplayOnRightSide") ) then
isClockOnRightSide = 1;
end
local firstLeftButton = TitanUtils_GetFirstButton(TitanPanelSettings.Buttons, 1, nil, isClockOnRightSide);
local secondLeftButton;
local scale = TitanPanelGetVar("Scale");
local leftWidth = 0;
local rightWidth = 0;
local leftDoubleWidth = 0;
local rightDoubleWidth = 0;
local counter = 0;
local triggered = 0;
if ( firstLeftButton ) then
if ( TitanPanelGetVar("ButtonAlign") == TITAN_PANEL_BUTTONS_ALIGN_LEFT ) then
counter = 0;
triggered = 0;
for index, id in TitanPanelSettings.Buttons do
local button = TitanUtils_GetButton(id);
if ( not button:GetWidth() ) then
return;
end
if TitanUtils_GetWhichBar(id) == "Bar" then
if TitanPanelGetVar("DoubleBar") == 2 and mod(counter,2) == 1 and not TitanPanelButton_IsIcon(id) then
if triggered == 0 then
secondLeftButton = button;
triggered = 1;
end
end
if ( TitanPanelButton_IsIcon(id) or (id == TITAN_CLOCK_ID and isClockOnRightSide) ) then
-- Do nothing
else
counter = counter + 1;
end
end
end
firstLeftButton:ClearAllPoints();
firstLeftButton:SetPoint("LEFT", "TitanPanelBarButton", "LEFT", TITAN_PANEL_FRAME_SPACEING / 2 * scale, TITAN_PANEL_FROM_TOP_MAIN);
if triggered == 1 then
secondLeftButton:ClearAllPoints();
if TitanPanelGetVar("Position") == TITAN_PANEL_PLACE_TOP then
secondLeftButton:SetPoint("LEFT", "TitanPanelBarButton", "LEFT", TITAN_PANEL_FRAME_SPACEING / 2 * scale, TITAN_PANEL_FROM_TOP);
else
secondLeftButton:SetPoint("LEFT", "TitanPanelBarButton", "LEFT", TITAN_PANEL_FRAME_SPACEING / 2 * scale, TITAN_PANEL_FROM_BOTTOM);
end
end
elseif ( TitanPanelGetVar("ButtonAlign") == TITAN_PANEL_BUTTONS_ALIGN_CENTER ) then
leftWidth = 0;
rightWidth = 0;
leftDoubleWidth = 0;
rightDoubleWidth = 0;
counter = 0;
triggered = 0;
for index, id in TitanPanelSettings.Buttons do
local button = TitanUtils_GetButton(id);
if ( not button:GetWidth() ) then
return;
end
if TitanUtils_GetWhichBar(id) == "Bar" then
if TitanPanelGetVar("DoubleBar") == 2 and mod(counter,2) == 1 and not TitanPanelButton_IsIcon(id) then
if triggered == 0 then
secondLeftButton = button;
triggered = 1;
end
if ( TitanPanelButton_IsIcon(id) or (id == TITAN_CLOCK_ID and isClockOnRightSide) ) then
rightDoubleWidth = rightDoubleWidth + TITAN_PANEL_ICON_SPACEING + button:GetWidth();
else
counter = counter + 1;
leftDoubleWidth = leftDoubleWidth + TITAN_PANEL_FRAME_SPACEING + button:GetWidth();
end
else
if ( TitanPanelButton_IsIcon(id) or (id == TITAN_CLOCK_ID and isClockOnRightSide) ) then
rightWidth = rightWidth + TITAN_PANEL_ICON_SPACEING + button:GetWidth();
else
counter = counter + 1;
leftWidth = leftWidth + TITAN_PANEL_FRAME_SPACEING + button:GetWidth();
end
end
end
end
firstLeftButton:ClearAllPoints();
firstLeftButton:SetPoint("LEFT", "TitanPanelBarButton", "CENTER", 0 - leftWidth / 2, TITAN_PANEL_FROM_TOP_MAIN);
if triggered == 1 then
secondLeftButton:ClearAllPoints();
if TitanPanelGetVar("Position") == TITAN_PANEL_PLACE_TOP then
secondLeftButton:SetPoint("LEFT", "TitanPanelBarButton", "CENTER", 0 - leftDoubleWidth / 2, TITAN_PANEL_FROM_TOP);
else
secondLeftButton:SetPoint("LEFT", "TitanPanelBarButton", "CENTER", 0 - leftDoubleWidth / 2, TITAN_PANEL_FROM_BOTTOM);
end
end
end
end
local firstLeftButton = TitanUtils_GetFirstAuxButton(TitanPanelSettings.Buttons, 1, nil, isClockOnRightSide);
secondLeftButton = nil;
if ( firstLeftButton ) then
if ( TitanPanelGetVar("AuxButtonAlign") == TITAN_PANEL_BUTTONS_ALIGN_LEFT ) then
triggered = 0;
counter = 0;
for index, id in TitanPanelSettings.Buttons do
local button = TitanUtils_GetButton(id);
if ( not button:GetWidth() ) then
return;
end
if TitanUtils_GetWhichBar(id) == "AuxBar" then
if TitanPanelGetVar("AuxDoubleBar") == 2 and mod(counter,2) == 1 and not TitanPanelButton_IsIcon(id) then
if triggered == 0 then
secondLeftButton = button;
triggered = 1;
end
end
if ( TitanPanelButton_IsIcon(id) or (id == TITAN_CLOCK_ID and isClockOnRightSide) ) then
-- Do nothing
else
counter = counter + 1;
end
end
end
firstLeftButton:ClearAllPoints();
firstLeftButton:SetPoint("LEFT", "TitanPanelAuxBarButton", "LEFT", TITAN_PANEL_FRAME_SPACEING / 2 * scale, TITAN_PANEL_FROM_BOTTOM_MAIN);
if triggered == 1 then
secondLeftButton:ClearAllPoints();
secondLeftButton:SetPoint("LEFT", "TitanPanelAuxBarButton", "LEFT", TITAN_PANEL_FRAME_SPACEING / 2 * scale, TITAN_PANEL_FROM_BOTTOM);
end
elseif ( TitanPanelGetVar("AuxButtonAlign") == TITAN_PANEL_BUTTONS_ALIGN_CENTER ) then
leftWidth = 0;
rightWidth = 0;
leftDoubleWidth = 0;
rightDoubleWidth = 0;
counter = 0;
triggered = 0;
for index, id in TitanPanelSettings.Buttons do
local button = TitanUtils_GetButton(id);
if ( not button:GetWidth() ) then
return;
end
if TitanUtils_GetWhichBar(id) == "AuxBar" then
if TitanPanelGetVar("AuxDoubleBar") == 2 and mod(counter,2) == 1 and not TitanPanelButton_IsIcon(id) then
if triggered == 0 then
secondLeftButton = button;
triggered = 1;
end
if ( TitanPanelButton_IsIcon(id) or (id == TITAN_CLOCK_ID and isClockOnRightSide) ) then
rightDoubleWidth = rightDoubleWidth + TITAN_PANEL_ICON_SPACEING + button:GetWidth();
else
counter = counter + 1;
leftDoubleWidth = leftDoubleWidth + TITAN_PANEL_FRAME_SPACEING + button:GetWidth();
end
else
if ( TitanPanelButton_IsIcon(id) or (id == TITAN_CLOCK_ID and isClockOnRightSide) ) then
rightWidth = rightWidth + TITAN_PANEL_ICON_SPACEING + button:GetWidth();
else
counter = counter + 1;
leftWidth = leftWidth + TITAN_PANEL_FRAME_SPACEING + button:GetWidth();
end
end
end
end
firstLeftButton:ClearAllPoints();
firstLeftButton:SetPoint("LEFT", "TitanPanelAuxBarButton", "CENTER", 0 - leftWidth / 2, TITAN_PANEL_FROM_BOTTOM_MAIN);
if triggered == 1 then
secondLeftButton:ClearAllPoints();
secondLeftButton:SetPoint("LEFT", "TitanPanelAuxBarButton", "CENTER", 0 - leftDoubleWidth / 2, TITAN_PANEL_FROM_BOTTOM);
end
end
end
end
function TitanPanel_SetScale()
local scale = TitanPanelGetVar("Scale");
local fontscale = TitanPanelGetVar("FontScale");
TitanPanelBarButton:SetScale(scale);
if not TitanPanelGetVar("DisableFont") then
GameTooltip:SetScale(fontscale);
end
for index, value in TitanPlugins do
TitanUtils_GetButton(index):SetScale(scale);
end
end
function TitanPanelRightClickMenu_Customize()
StaticPopupDialogs["CUSTOMIZATION_FEATURE_COMING_SOON"] = {
text = TEXT(CUSTOMIZATION_FEATURE_COMING_SOON),
button1 = TEXT(OKAY),
showAlert = 1,
timeout = 0,
};
StaticPopup_Show("CUSTOMIZATION_FEATURE_COMING_SOON");
end
function TitanPanel_LoadError(ErrorMsg)
StaticPopupDialogs["LOADING_ERROR"] = {
text = ErrorMsg,
button1 = TEXT(OKAY),
showAlert = 1,
timeout = 0,
};
StaticPopup_Show("LOADING_ERROR");
end
function TitanPanelRightClickMenu_PrepareBarMenu()
-- Level 2
if ( UIDROPDOWNMENU_MENU_LEVEL == 2 ) then
TitanPanel_BuildPluginsMenu();
TitanPanel_BuildOtherPluginsMenu();
TitanPanel_OptionsMenu();
TitanPanel_LoadServerSettingsMenu();
return;
end
-- Level 3
if ( UIDROPDOWNMENU_MENU_LEVEL == 3 ) then
TitanPanel_LoadPlayerSettingsMenu();
return;
end
-- Level 1
TitanPanel_MainMenu()
end
function TitanPanel_MainMenu()
local info = {};
local checked;
local plugin;
local frame = this:GetName();
local frname = getglobal(frame);
TitanPanelRightClickMenu_AddTitle(TITAN_PANEL_MENU_TITLE);
if frame == "TitanPanelBarButton" then
info = {};
info.text = TITAN_PANEL_MENU_BUILTINS;
info.value = "Builtins";
info.hasArrow = 1;
UIDropDownMenu_AddButton(info);
else
info = {};
info.text = TITAN_PANEL_MENU_BUILTINS;
info.value = "BuiltinsAux";
info.hasArrow = 1;
UIDropDownMenu_AddButton(info);
end
TitanPanelRightClickMenu_AddSpacer(UIDROPDOWNMENU_MENU_LEVEL);
TitanPanelRightClickMenu_AddTitle(TITAN_PANEL_MENU_PLUGINS);
for index, id in TITAN_PANEL_MENU_CATEGORIES do
info = {};
info.text = TITAN_PANEL_MENU_CATEGORIES[index];
info.value = "Addons_" .. TITAN_PANEL_BUTTONS_PLUGIN_CATEGORY[index];
info.hasArrow = 1;
UIDropDownMenu_AddButton(info);
end
TitanPanelRightClickMenu_AddSpacer();
if frame == "TitanPanelBarButton" then
info = {};
info.text = TITAN_PANEL_MENU_OPTIONS;
info.value = "Options";
info.hasArrow = 1;
UIDropDownMenu_AddButton(info);
else
info = {};
info.text = TITAN_PANEL_MENU_OPTIONS;
info.value = "OptionsAux";
info.hasArrow = 1;
UIDropDownMenu_AddButton(info);
end
info = {};
info.text = TITAN_PANEL_MENU_LOAD_SETTINGS;
info.value = "Settings";
info.hasArrow = 1;
UIDropDownMenu_AddButton(info);
end
function TitanPanel_OptionsMenu()
local info = {};
if ( UIDROPDOWNMENU_MENU_VALUE == "OptionsAux" ) then
info = {};
info.text = TITAN_PANEL_MENU_AUTOHIDE;
info.func = TitanPanelBarButton_ToggleAuxAutoHide;
info.checked = TitanPanelGetVar("AuxAutoHide");
info.keepShownOnClick = 1;
UIDropDownMenu_AddButton(info, UIDROPDOWNMENU_MENU_LEVEL);
info = {};
info.text = TITAN_PANEL_MENU_CENTER_TEXT;
info.func = TitanPanelBarButton_ToggleAuxAlign;
info.checked = (TitanPanelGetVar("AuxButtonAlign") == TITAN_PANEL_BUTTONS_ALIGN_CENTER);
info.keepShownOnClick = 1;
UIDropDownMenu_AddButton(info, UIDROPDOWNMENU_MENU_LEVEL);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -