vanilla-wow-addons – Rev 1
?pathlinks?
TITAN_UISCALE_ID = "UIScale";
TITAN_UISCALE_FRAME_SHOW_TIME = 0.5;
TITAN_UISCALE_MIN = 0.64;
TITAN_UISCALE_MAX = 1;
TITAN_UISCALE_STEP = 0.01;
TITAN_PANELSCALE_MIN = 0.75;
TITAN_PANELSCALE_MAX = 1.25;
TITAN_PANELSCALE_STEP = 0.01;
TITAN_FONTSCALE_MIN = 0.50;
TITAN_FONTSCALE_MAX = 2.00;
TITAN_FONTSCALE_STEP = 0.01;
function TitanPanelUIScaleButton_OnLoad()
this.registry = {
id = TITAN_UISCALE_ID,
builtIn = 1,
version = TITAN_VERSION,
menuText = TITAN_UISCALE_MENU_TEXT,
tooltipTitle = TITAN_UISCALE_TOOLTIP,
tooltipTextFunction = "TitanPanelUIScaleButton_GetTooltipText",
icon = TITAN_ARTWORK_PATH.."TitanUIScale",
};
end
function TitanPanelUIScaleButton_GetTooltipText()
local panelScaleText = TitanPanelUIScale_GetSCaleText(TitanPanelGetVar("Scale"));
local uiScaleText = TitanPanelUIScale_GetSCaleText(UIParent:GetScale());
local FontScaleText = TitanPanelUIScale_GetSCaleText(TitanPanelGetVar("FontScale"));
return ""..
TITAN_UISCALE_TOOLTIP_VALUE_UI.."\t"..TitanUtils_GetHighlightText(uiScaleText).."\n"..
TITAN_UISCALE_TOOLTIP_VALUE_PANEL.."\t"..TitanUtils_GetHighlightText(panelScaleText).."\n"..
TITAN_UISCALE_TOOLTIP_VALUE_FONT.."\t"..TitanUtils_GetHighlightText(FontScaleText).."\n"..
TitanUtils_GetGreenText(TITAN_UISCALE_TOOLTIP_HINT1).."\n"..
TitanUtils_GetGreenText(TITAN_UISCALE_TOOLTIP_HINT2);
end
function TitanPanelUIScaleControlSlider_OnEnter()
local uiScale = UIParent:GetScale();
this.tooltipText = TitanOptionSlider_TooltipText(TITAN_UISCALE_CONTROL_TOOLTIP_UI, TitanPanelUIScale_GetSCaleText(uiScale));
GameTooltip:SetOwner(this, "ANCHOR_BOTTOMLEFT");
GameTooltip:SetText(this.tooltipText, nil, nil, nil, nil, 1);
TitanUtils_StopFrameCounting(this:GetParent());
end
function TitanPanelUIScaleControlSlider_OnLeave()
this.tooltipText = nil;
GameTooltip:Hide();
TitanUtils_StartFrameCounting(this:GetParent(), TITAN_UISCALE_FRAME_SHOW_TIME);
end
function TitanPanelUIScaleControlSlider_OnShow()
local uiScale = UIParent:GetScale();
local min = TITAN_UISCALE_MIN;
local max = TITAN_UISCALE_MAX;
local step = TITAN_UISCALE_STEP;
getglobal(this:GetName().."Text"):SetText(TitanPanelUIScale_GetSCaleText(uiScale));
getglobal(this:GetName().."High"):SetText(TITAN_UISCALE_CONTROL_LOW_UI);
getglobal(this:GetName().."Low"):SetText(TITAN_UISCALE_CONTROL_HIGH_UI);
this:SetMinMaxValues(min, max);
this:SetValueStep(step);
this:SetValue(min + max - uiScale);
this.previousValue = this:GetValue();
position = TitanUtils_GetRealPosition(TITAN_UISCALE_ID);
TitanPanelUIScaleControlFrame:SetPoint("BOTTOMRIGHT", "TitanPanel" .. TitanUtils_GetWhichBar(TITAN_UISCALE_ID) .."Button", "TOPRIGHT", 0, 0);
if (position == TITAN_PANEL_PLACE_TOP) then
TitanPanelUIScaleControlFrame:ClearAllPoints();
TitanPanelUIScaleControlFrame:SetPoint("TOPLEFT", "TitanPanel" .. TitanUtils_GetWhichBar(TITAN_UISCALE_ID) .."Button", "BOTTOMLEFT", UIParent:GetRight() - TitanPanelUIScaleControlFrame:GetWidth(), -4);
else
TitanPanelUIScaleControlFrame:ClearAllPoints();
TitanPanelUIScaleControlFrame:SetPoint("BOTTOMLEFT", "TitanPanel" .. TitanUtils_GetWhichBar(TITAN_UISCALE_ID) .."Button", "TOPLEFT", UIParent:GetRight() - TitanPanelUIScaleControlFrame:GetWidth(), 0);
end
end
function TitanPanelUIScaleControlSlider_OnValueChanged()
if (this:GetValue() ~= this.previousValue) then
this.previousValue = this:GetValue();
-- Set UI scale
local min = TITAN_UISCALE_MIN;
local max = TITAN_UISCALE_MAX;
local uiScale = min + max - this:GetValue();
SetCVar("useUiScale", 1, USE_UISCALE);
SetCVar("uiScale", uiScale);
-- Adjust panel scale
TitanPanel_SetScale();
TitanPanel_RefreshPanelButtons();
-- Update slider value text
getglobal(this:GetName().."Text"):SetText(TitanPanelUIScale_GetSCaleText(uiScale));
-- Update GameTooltip
if (this.tooltipText) then
this.tooltipText = TitanOptionSlider_TooltipText(TITAN_UISCALE_CONTROL_TOOLTIP_UI, TitanPanelUIScale_GetSCaleText(uiScale));
GameTooltip:SetText(this.tooltipText, nil, nil, nil, nil, 1);
end
end
end
function TitanPanelPanelScaleControlSlider_OnEnter()
local scale = TitanPanelGetVar("Scale");
this.tooltipText = TitanOptionSlider_TooltipText(TITAN_UISCALE_CONTROL_TOOLTIP_PANEL, TitanPanelUIScale_GetSCaleText(scale));
GameTooltip:SetOwner(this, "ANCHOR_BOTTOMLEFT");
GameTooltip:SetText(this.tooltipText, nil, nil, nil, nil, 1);
TitanUtils_StopFrameCounting(this:GetParent());
end
function TitanPanelPanelScaleControlSlider_OnLeave()
this.tooltipText = nil;
GameTooltip:Hide();
TitanUtils_StartFrameCounting(this:GetParent(), TITAN_UISCALE_FRAME_SHOW_TIME);
end
function TitanPanelPanelScaleControlSlider_OnShow()
local scale = TitanPanelGetVar("Scale");
local min = TITAN_PANELSCALE_MIN;
local max = TITAN_PANELSCALE_MAX;
local step = TITAN_PANELSCALE_STEP;
getglobal(this:GetName().."Text"):SetText(TitanPanelUIScale_GetSCaleText(scale));
getglobal(this:GetName().."High"):SetText(TITAN_UISCALE_CONTROL_LOW_PANEL);
getglobal(this:GetName().."Low"):SetText(TITAN_UISCALE_CONTROL_HIGH_PANEL);
this:SetMinMaxValues(min, max);
this:SetValueStep(step);
this:SetValue(min + max - scale);
this.previousValue = this:GetValue();
end
function TitanPanelPanelScaleControlSlider_OnValueChanged()
if (this:GetValue() ~= this.previousValue) then
this.previousValue = this:GetValue();
local position = 1;
local i = TitanPanel_GetButtonNumber(TITAN_UISCALE_ID);
if TitanPanelSettings.Location[i] == "Bar" and TitanPanelGetVar("BothBars") then
position = 1;
elseif TitanPanelSettings.Location[i] == "Bar" then
position = TitanPanelGetVar("Position");
else
position = 2;
end
-- Set panel scale
local min = TITAN_PANELSCALE_MIN;
local max = TITAN_PANELSCALE_MAX;
local scale = min + max - this:GetValue();
TitanPanelSetVar("Scale", scale);
-- Adjust panel scale
TitanPanel_SetScale();
TitanPanel_RefreshPanelButtons();
-- Adjust frame positions
TitanMovableFrame_MoveFrames(position);
TitanMovableFrame_AdjustBlizzardFrames();
-- Update slider value text
getglobal(this:GetName().."Text"):SetText(TitanPanelUIScale_GetSCaleText(scale));
-- Update GameTooltip
if (this.tooltipText) then --??
this.tooltipText = TitanOptionSlider_TooltipText(TITAN_UISCALE_CONTROL_TOOLTIP_PANEL, TitanPanelUIScale_GetSCaleText(scale));
GameTooltip:SetText(this.tooltipText, nil, nil, nil, nil, 1);
end
end
end
function TitanPanelFontScaleControlSlider_OnEnter()
local fontscale = TitanPanelGetVar("FontScale");
if TitanPanelGetVar("DisableFont") then
fontscale = 1;
end
this.tooltipText = TitanOptionSlider_TooltipText(TITAN_UISCALE_CONTROL_TOOLTIP_FONT, TitanPanelUIScale_GetSCaleText(fontscale));
GameTooltip:SetOwner(this, "ANCHOR_BOTTOMLEFT");
GameTooltip:SetText(this.tooltipText, nil, nil, nil, nil, 1);
TitanUtils_StopFrameCounting(this:GetParent());
end
function TitanPanelFontScaleControlSlider_OnLeave()
if TitanPanelGetVar("DisableFont") then
fontscale = 1;
end
this.tooltipText = nil;
GameTooltip:Hide();
TitanUtils_StartFrameCounting(this:GetParent(), TITAN_UISCALE_FRAME_SHOW_TIME);
end
function TitanPanelFontScaleControlSlider_OnShow()
local fontscale = TitanPanelGetVar("FontScale");
local min = TITAN_FONTSCALE_MIN;
local max = TITAN_FONTSCALE_MAX;
local step = TITAN_FONTSCALE_STEP;
if TitanPanelGetVar("DisableFont") then
fontscale = 1;
end
getglobal(this:GetName().."Text"):SetText(TitanPanelUIScale_GetSCaleText(fontscale));
getglobal(this:GetName().."High"):SetText(TITAN_UISCALE_CONTROL_LOW_FONT);
getglobal(this:GetName().."Low"):SetText(TITAN_UISCALE_CONTROL_HIGH_FONT);
this:SetMinMaxValues(min, max);
this:SetValueStep(step);
this:SetValue(min + max - fontscale);
this.previousValue = this:GetValue();
end
function TitanPanelFontScaleControlSlider_OnValueChanged()
if TitanPanelGetVar("DisableFont") then
return;
end
if (this:GetValue() ~= this.previousValue) then
this.previousValue = this:GetValue();
local position = 1;
local i = TitanPanel_GetButtonNumber(TITAN_UISCALE_ID);
if TitanPanelSettings.Location[i] == "Bar" and TitanPanelGetVar("BothBars") then
position = 1;
elseif TitanPanelSettings.Location[i] == "Bar" then
position = TitanPanelGetVar("Position");
else
position = 2;
end
-- Set panel scale
local min = TITAN_FONTSCALE_MIN;
local max = TITAN_FONTSCALE_MAX;
local scale = min + max - this:GetValue();
TitanPanelSetVar("FontScale", scale);
-- Adjust panel scale
TitanPanel_SetScale();
TitanPanel_RefreshPanelButtons();
-- Adjust frame positions
TitanMovableFrame_MoveFrames(position);
TitanMovableFrame_AdjustBlizzardFrames();
-- Update slider value text
getglobal(this:GetName().."Text"):SetText(TitanPanelUIScale_GetSCaleText(scale));
-- Update GameTooltip
if (this.tooltipText) then --??
this.tooltipText = TitanOptionSlider_TooltipText(TITAN_UISCALE_CONTROL_TOOLTIP_FONT, TitanPanelUIScale_GetSCaleText(scale));
GameTooltip:SetText(this.tooltipText, nil, nil, nil, nil, 1);
end
end
end
function TitanPanelUIScale_GetSCaleText(scale)
return tostring(floor(100 * scale + 0.5)) .. "%";
end
function TitanPanelUIScaleControlFrame_OnLoad()
getglobal(this:GetName().."UITitle"):SetText(TITAN_UISCALE_CONTROL_TITLE_UI);
getglobal(this:GetName().."PanelTitle"):SetText(TITAN_UISCALE_CONTROL_TITLE_PANEL);
getglobal(this:GetName().."FontTitle"):SetText(TITAN_UISCALE_CONTROL_TITLE_FONT);
this:SetBackdropBorderColor(1, 1, 1);
this:SetBackdropColor(0, 0, 0, 1);
end
function TitanPanelUIScaleControlFrame_OnShow()
this:SetScale(UIParent:GetEffectiveScale());
end
function TitanPanelUIScaleControlFrame_OnUpdate(elapsed)
TitanUtils_CheckFrameCounting(this, elapsed);
end
function TitanPanelRightClickMenu_PrepareUIScaleMenu()
TitanPanelRightClickMenu_AddTitle(TitanPlugins[TITAN_UISCALE_ID].menuText);
TitanPanelRightClickMenu_AddCommand(TITAN_PANEL_MENU_HIDE, TITAN_UISCALE_ID, TITAN_PANEL_MENU_FUNC_HIDE);
end