vanilla-wow-addons – Rev 1

Subversion Repositories:
Rev:
-- Constants
TITAN_CLOCK_ID = "Clock";
TITAN_CLOCK_FORMAT_12H = "12H";
TITAN_CLOCK_FORMAT_24H = "24H";
TITAN_CLOCK_FREQUENCY = 0.5;
TITAN_CLOCK_FRAME_SHOW_TIME = 0.5;

function TitanPanelClockButton_OnLoad()
        this.registry = {
                id = TITAN_CLOCK_ID,
                builtIn = 1,
                version = TITAN_VERSION,
                menuText = TITAN_CLOCK_MENU_TEXT, 
                buttonTextFunction = "TitanPanelClockButton_GetButtonText",
                tooltipTitle = TITAN_CLOCK_TOOLTIP, 
                tooltipTextFunction = "TitanPanelClockButton_GetTooltipText", 
                frequency = TITAN_CLOCK_FREQUENCY, 
                updateType = TITAN_PANEL_UPDATE_BUTTON,
                savedVariables = {
                        OffsetHour = 0,
                        Format = TITAN_CLOCK_FORMAT_12H,
                        DisplayOnRightSide = 1,
                }
        };
end

function TitanPanelClockButton_GetButtonText()
        -- Calculate the hour/minutes considering the offset
        local hour, minute = GetGameTime();
        local twentyfour = "";
        local offsettime = string.format("%s", TitanGetVar(TITAN_CLOCK_ID, "OffsetHour"));
        local offsethour = 0;
        local offsetmin = 0;
        local s, e, id = string.find(offsettime, '%.5');

        if s ~= nil then
                offsethour = string.sub(offsettime, 1, s);
                offsetmin = string.sub(offsettime, s+1);
                if offsetmin == "" or offsetmin == nil then offsetmin = "0"; end
                if offsethour == "" or offsethour == nil then offsethour = "0"; end
        
                offsethour = tonumber(offsethour);

                if tonumber(offsettime) < 0 then offsetmin = tonumber("-" .. offsetmin); end
                                
                minute = minute + (offsetmin*6);

                if( minute > 59 ) then
                        minute = minute - 30;
                        offsethour = offsethour + 1;
                elseif( minute < 0 ) then
                        minute = 60 + minute;
                        offsethour = offsethour - 1;
                end
        else
                offsethour = TitanGetVar(TITAN_CLOCK_ID, "OffsetHour");
        end
        hour = hour + offsethour;
        
        if( hour > 23 ) then
                hour = hour - 24;
        elseif( hour < 0 ) then
                hour = 24 + hour;
        end

        -- Calculate the display text based on format 12H/24H 
        if (TitanGetVar(TITAN_CLOCK_ID, "Format") == TITAN_CLOCK_FORMAT_12H) then
                local isAM;
                if (hour >= 12) then
                        isAM = false;
                        hour = hour - 12;
                else
                        isAM = true;
                end
                if (hour == 0) then
                        hour = 12;
                end
                if (isAM) then
                        return nil, format(TEXT(TIME_TWELVEHOURAM), hour, minute);
                else
                        return nil, format(TEXT(TIME_TWELVEHOURPM), hour, minute);
                end
        else
                twentyfour = format(TEXT(TIME_TWENTYFOURHOURS), hour, minute);
                if hour < 10 then
                        twentyfour = "0" .. twentyfour
                end
        
                return nil, twentyfour;
        end
        
end

function TitanPanelClockButton_GetTooltipText()
        local clockText = TitanPanelClock_GetOffsetText(TitanGetVar(TITAN_CLOCK_ID, "OffsetHour"));     
        return ""..
                TITAN_CLOCK_TOOLTIP_VALUE.."\t"..TitanUtils_GetHighlightText(clockText).."\n"..
                TitanUtils_GetGreenText(TITAN_CLOCK_TOOLTIP_HINT1).."\n"..
                TitanUtils_GetGreenText(TITAN_CLOCK_TOOLTIP_HINT2);
end

function TitanPanelClockControlSlider_OnEnter()
        this.tooltipText = TitanOptionSlider_TooltipText(TITAN_CLOCK_CONTROL_TOOLTIP, TitanPanelClock_GetOffsetText(TitanGetVar(TITAN_CLOCK_ID, "OffsetHour")));
        GameTooltip:SetOwner(this, "ANCHOR_BOTTOMLEFT");
        GameTooltip:SetText(this.tooltipText, nil, nil, nil, nil, 1);
        TitanUtils_StopFrameCounting(this:GetParent());
end

function TitanPanelClockControlSlider_OnLeave()
        this.tooltipText = nil;
        GameTooltip:Hide();
        TitanUtils_StartFrameCounting(this:GetParent(), TITAN_CLOCK_FRAME_SHOW_TIME);
end

function TitanPanelClockControlSlider_OnShow()
        getglobal(this:GetName().."Text"):SetText(TitanPanelClock_GetOffsetText(TitanGetVar(TITAN_CLOCK_ID, "OffsetHour")));
        getglobal(this:GetName().."High"):SetText(TITAN_CLOCK_CONTROL_LOW);
        getglobal(this:GetName().."Low"):SetText(TITAN_CLOCK_CONTROL_HIGH);
        this:SetMinMaxValues(-12, 12);
        this:SetValueStep(0.5);
        this:SetValue(0 - TitanGetVar(TITAN_CLOCK_ID, "OffsetHour"));

        position = TitanUtils_GetRealPosition(TITAN_CLOCK_ID);
        
        TitanPanelClockControlFrame:SetPoint("BOTTOMRIGHT", "TitanPanel" .. TitanUtils_GetWhichBar(TITAN_CLOCK_ID) .."Button", "TOPRIGHT", 0, 0);
        if (position == TITAN_PANEL_PLACE_TOP) then 
                TitanPanelClockControlFrame:ClearAllPoints();
                TitanPanelClockControlFrame:SetPoint("TOPLEFT", "TitanPanel" .. TitanUtils_GetWhichBar(TITAN_CLOCK_ID) .."Button", "BOTTOMLEFT", UIParent:GetRight() - TitanPanelClockControlFrame:GetWidth(), -4);
        else
                TitanPanelClockControlFrame:ClearAllPoints();
                TitanPanelClockControlFrame:SetPoint("BOTTOMLEFT", "TitanPanel" .. TitanUtils_GetWhichBar(TITAN_CLOCK_ID) .."Button", "TOPLEFT", UIParent:GetRight() - TitanPanelClockControlFrame:GetWidth(), 0);
        end             

end

function TitanPanelClockControlSlider_OnValueChanged()
        getglobal(this:GetName().."Text"):SetText(TitanPanelClock_GetOffsetText(0 - this:GetValue()));
        TitanSetVar(TITAN_CLOCK_ID, "OffsetHour", 0 - this:GetValue())
        TitanPanelButton_UpdateButton(TITAN_CLOCK_ID);

        -- Update GameTooltip
        if (this.tooltipText) then
                this.tooltipText = TitanOptionSlider_TooltipText(TITAN_CLOCK_CONTROL_TOOLTIP, TitanPanelClock_GetOffsetText(TitanGetVar(TITAN_CLOCK_ID, "OffsetHour")));
                GameTooltip:SetText(this.tooltipText, nil, nil, nil, nil, 1);
        end
end

function TitanPanelClockControlCheckButton_OnShow()     
        TitanPanelClockControlCheckButtonText:SetText(TITAN_CLOCK_CHECKBUTTON);
        
        if (TitanGetVar(TITAN_CLOCK_ID, "Format") == TITAN_CLOCK_FORMAT_24H) then
                this:SetChecked(1);
        else
                this:SetChecked(0);
        end
end

function TitanPanelClockControlCheckButton_OnClick()
        if (this:GetChecked()) then
                TitanSetVar(TITAN_CLOCK_ID, "Format", TITAN_CLOCK_FORMAT_24H);
        else
                TitanSetVar(TITAN_CLOCK_ID, "Format", TITAN_CLOCK_FORMAT_12H);
        end
        TitanPanelButton_UpdateButton(TITAN_CLOCK_ID);
end

function TitanPanelClockControlCheckButton_OnEnter()
        this.tooltipText = TITAN_CLOCK_CHECKBUTTON_TOOLTIP;
        GameTooltip:SetOwner(this, "ANCHOR_BOTTOMLEFT");
        GameTooltip:SetText(this.tooltipText, nil, nil, nil, nil, 1);
        TitanUtils_StopFrameCounting(this:GetParent());
end

function TitanPanelClockControlCheckButton_OnLeave()
        this.tooltipText = nil;
        GameTooltip:Hide();
        TitanUtils_StartFrameCounting(this:GetParent(), TITAN_CLOCK_FRAME_SHOW_TIME);
end

function TitanPanelClock_GetOffsetText(offset)
        if (offset > 0) then
                return "+" .. tostring(offset);
        else
                return tostring(offset);
        end
end

function TitanPanelClockControlFrame_OnLoad()
        getglobal(this:GetName().."Title"):SetText(TITAN_CLOCK_CONTROL_TITLE);
        this:SetBackdropBorderColor(1, 1, 1);
        this:SetBackdropColor(0, 0, 0, 1);
end

function TitanPanelClockControlFrame_OnUpdate(elapsed)
        TitanUtils_CheckFrameCounting(this, elapsed);
end

function TitanPanelRightClickMenu_PrepareClockMenu()
        TitanPanelRightClickMenu_AddTitle(TitanPlugins[TITAN_CLOCK_ID].menuText);
        
        info = {};
        info.text = TITAN_CLOCK_MENU_DISPLAY_ON_RIGHT_SIDE;
        info.func = TitanPanelClockButton_ToggleRightSideDisplay;
        info.checked = TitanGetVar(TITAN_CLOCK_ID, "DisplayOnRightSide");
        UIDropDownMenu_AddButton(info);

        TitanPanelRightClickMenu_AddSpacer();   
        TitanPanelRightClickMenu_AddCommand(TITAN_PANEL_MENU_HIDE, TITAN_CLOCK_ID, TITAN_PANEL_MENU_FUNC_HIDE);
end

function TitanPanelClockButton_ToggleRightSideDisplay()
        TitanToggleVar(TITAN_CLOCK_ID, "DisplayOnRightSide");
        TITAN_PANEL_SELECTED = TitanUtils_GetWhichBar(TITAN_CLOCK_ID);
        TitanPanel_RemoveButton(TITAN_CLOCK_ID);
        TitanDebug(TITAN_PANEL_SELECTED);
        TitanPanel_AddButton(TITAN_CLOCK_ID);
--      TitanPanelButton_UpdateButton(TITAN_BAG_ID);
end

Generated by GNU Enscript 1.6.5.90.