vanilla-wow-addons – Rev 1

Subversion Repositories:
Rev:
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