vanilla-wow-addons – Rev 1
?pathlinks?
-- 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.