vanilla-wow-addons – Rev 1
?pathlinks?
--[[
Tooltip Wrangler
- Allows the user to move the tooltips freely about the screen.
Works great with most other tooltip mod programs including AF_Tooltip and GypsyMod.
]]
--------------------------------------------------------------------------------------------------
-- Localizable strings
--------------------------------------------------------------------------------------------------
TTW_LOCK = "lock"; -- must be lowercase; locks the window in position
TTW_UNLOCK = "unlock"; -- must be lowercase; unlocks the window so that it can be dragged
TTW_HELP = "help";
TTW_FOLLOWMOUSE = "mouse";
TTW_USETARGET = "target";
TTW_RESET = "reset";
TTW_LOCKED = "Tooltip Wrangler: Locked in place.";
TTW_UNLOCKED = "Tooltip Wrangler: Unlocked. Position at will!";
TTW_INVALID = "Tooltip Wrangler: Invalid command. Type /ttw help for a list of valid commands.";
TTW_TARGET_MSG = "Tooltip Wrangler: Tooltips have been placed at the target.";
TTW_MOUSE_MSG = "Tooltip Wrangler: Tooltips have been placed at the cursor."
TTW_HELP_MSG = "Tooltip Wrangler: Below is a listing of valid commands \(use /ttw <command>\):\nmouse: Attach the tooltip to the mouse cursor.\ntarget: Drag the targeting window to place the tooltip.\nlock: Lock the tooltip in place \(hides the placement window\).\nunlock: Unlock the tooltip placement window \(Shows the placement window\).";
--------------------------------------------------------------------------------------------------
-- Local Variables
--------------------------------------------------------------------------------------------------
TTW_TOPLEFT = 0;
TTW_TOPRIGHT = 1;
TTW_BOTTOMRIGHT = 2;
TTW_BOTTOMLEFT = 3;
TTW_TOP = 4;
TTW_BOTTOM = 5;
TTW_LEFT = 6;
TTW_RIGHT = 7;
TTW_MOUSE = 0;
TTW_TARGET = 1;
--------------------------------------------------------------------------------------------------
-- Internal functions
--------------------------------------------------------------------------------------------------
function TTW_PositionTooltip(tooltip,parent)
anchorType = TTWState.AnchorType;
if (anchorType == TTW_MOUSE) then
tooltip:SetOwner(parent, "ANCHOR_CURSOR");
else
local topPos,leftPos,bottomPos,rightPos;
topPos = TTW_RecticleFrame:GetTop();
leftPos = TTW_RecticleFrame:GetLeft();
bottomPos = TTW_RecticleFrame:GetBottom();
rightPos = TTW_RecticleFrame:GetRight();
if (rightPos == nil) then
rightPos = 0;
end
if (leftPos == nil) then
leftPos = 0;
end
if (topPos == nil) then
topPos = 0;
end
if (bottomPos == nil) then
bottomPos = 0;
end
local xPos,yPos;
xPos = leftPos + ((rightPos-leftPos) / 2);
yPos = topPos + ((bottomPos - topPos) / 2);
tooltip:ClearAllPoints();
tooltip:SetOwner(parent, "ANCHOR_NONE");
anchor = TTWState.Anchor;
if (anchor == TTW_TOPLEFT) then
anchor = "TOPLEFT";
xPos = xPos - 3;
yPos = yPos + 3;
elseif (anchor == TTW_TOPRIGHT) then
anchor = "TOPRIGHT";
xPos = xPos + 3;
yPos = yPos + 3;
elseif (anchor == TTW_BOTTOMRIGHT) then
anchor = "BOTTOMRIGHT";
xPos = xPos + 3;
yPos = yPos - 3;
elseif (anchor == TTW_TOP) then
anchor = "TOP";
xPos = xPos - 3;
yPos = yPos + 3;
elseif (anchor == TTW_BOTTOM) then
anchor = "BOTTOM";
xPos = xPos - 3;
yPos = yPos - 3;
elseif (anchor == TTW_LEFT) then
anchor = "LEFT";
xPos = xPos - 3;
elseif (anchor == TTW_RIGHT) then
anchor = "RIGHT";
xPos = xPos - 3;
else
anchor = "BOTTOMLEFT";
xPos = xPos - 3;
yPos = yPos - 3;
end
local scale = UIParent:GetScale() / GameTooltip:GetEffectiveScale();
xPos = scale * xPos;
yPos = scale * yPos;
tooltip:SetPoint(anchor, "UIParent", "BOTTOMLEFT", xPos, yPos);
end
end
function TTW_Reset()
TTW_RecticleFrame:SetPoint("TOPLEFT","UIParent","TOPLEFT",200,-200);
end
function TTW_SlashCommandHandler(msg)
if( msg ) then
local command = string.lower(msg);
if( command == TTW_LOCK ) then
if ( TTWState.AnchorType ~= TTW_MOUSE ) then
TTWState.Lock = 1;
TTW_RecticleFrame:Hide();
GameTooltip:Hide();
DEFAULT_CHAT_FRAME:AddMessage(TTW_LOCKED);
end
elseif( command == TTW_UNLOCK ) then
if ( TTWState.AnchorType ~= TTW_MOUSE ) then
TTWState.Lock = nil;
TTW_RecticleFrame:Show();
DEFAULT_CHAT_FRAME:AddMessage(TTW_UNLOCKED);
end
elseif( command == TTW_FOLLOWMOUSE ) then
TTWState.AnchorType = TTW_MOUSE;
TTW_RecticleFrame:Hide();
GameTooltip:Hide();
DEFAULT_CHAT_FRAME:AddMessage(TTW_MOUSE_MSG);
elseif ( command == TTW_USETARGET ) then
TTWState.AnchorType = TTW_TARGET;
TTW_RecticleFrame:Show();
DEFAULT_CHAT_FRAME:AddMessage(TTW_TARGET_MSG);
TTWState.Lock = nil;
DEFAULT_CHAT_FRAME:AddMessage(TTW_UNLOCKED);
elseif ( command == TTW_HELP or command=="" ) then
DEFAULT_CHAT_FRAME:AddMessage(TTW_HELP_MSG);
elseif ( command == TTW_RESET ) then
TTW_Reset();
else
DEFAULT_CHAT_FRAME:AddMessage(TTW_INVALID);
end
end
end
function TTW_SetClickState(state)
if (state == TTW_TOPLEFT) then
TTW_AnchorTopLeftButton:SetButtonState("PUSHED",1);
TTW_AnchorTopRightButton:SetButtonState("NORMAL",0);
TTW_AnchorBottomRightButton:SetButtonState("NORMAL",0);
TTW_AnchorBottomLeftButton:SetButtonState("NORMAL",0);
TTW_AnchorTopButton:SetButtonState("NORMAL",0);
TTW_AnchorBottomButton:SetButtonState("NORMAL",0);
TTW_AnchorLeftButton:SetButtonState("NORMAL",0);
TTW_AnchorRightButton:SetButtonState("NORMAL",0);
elseif (state == TTW_TOPRIGHT) then
TTW_AnchorTopLeftButton:SetButtonState("NORMAL",0);
TTW_AnchorTopRightButton:SetButtonState("PUSHED",1);
TTW_AnchorBottomRightButton:SetButtonState("NORMAL",0);
TTW_AnchorBottomLeftButton:SetButtonState("NORMAL",0);
TTW_AnchorTopButton:SetButtonState("NORMAL",0);
TTW_AnchorBottomButton:SetButtonState("NORMAL",0);
TTW_AnchorLeftButton:SetButtonState("NORMAL",0);
TTW_AnchorRightButton:SetButtonState("NORMAL",0);
elseif (state == TTW_BOTTOMRIGHT) then
TTW_AnchorTopLeftButton:SetButtonState("NORMAL",0);
TTW_AnchorTopRightButton:SetButtonState("NORMAL",0);
TTW_AnchorBottomRightButton:SetButtonState("PUSHED",1);
TTW_AnchorBottomLeftButton:SetButtonState("NORMAL",0);
TTW_AnchorTopButton:SetButtonState("NORMAL",0);
TTW_AnchorBottomButton:SetButtonState("NORMAL",0);
TTW_AnchorLeftButton:SetButtonState("NORMAL",0);
TTW_AnchorRightButton:SetButtonState("NORMAL",0);
elseif (state == TTW_BOTTOMLEFT) then
TTW_AnchorTopLeftButton:SetButtonState("NORMAL",0);
TTW_AnchorTopRightButton:SetButtonState("NORMAL",0);
TTW_AnchorBottomRightButton:SetButtonState("NORMAL",0);
TTW_AnchorBottomLeftButton:SetButtonState("PUSHED",1);
TTW_AnchorTopButton:SetButtonState("NORMAL",0);
TTW_AnchorBottomButton:SetButtonState("NORMAL",0);
TTW_AnchorLeftButton:SetButtonState("NORMAL",0);
TTW_AnchorRightButton:SetButtonState("NORMAL",0);
elseif (state == TTW_TOP) then
TTW_AnchorTopLeftButton:SetButtonState("NORMAL",0);
TTW_AnchorTopRightButton:SetButtonState("NORMAL",0);
TTW_AnchorBottomRightButton:SetButtonState("NORMAL",0);
TTW_AnchorBottomLeftButton:SetButtonState("NORMAL",0);
TTW_AnchorTopButton:SetButtonState("PUSHED",1);
TTW_AnchorBottomButton:SetButtonState("NORMAL",0);
TTW_AnchorLeftButton:SetButtonState("NORMAL",0);
TTW_AnchorRightButton:SetButtonState("NORMAL",0);
elseif (state == TTW_BOTTOM) then
TTW_AnchorTopLeftButton:SetButtonState("NORMAL",0);
TTW_AnchorTopRightButton:SetButtonState("NORMAL",0);
TTW_AnchorBottomRightButton:SetButtonState("NORMAL",0);
TTW_AnchorBottomLeftButton:SetButtonState("NORMAL",0);
TTW_AnchorTopButton:SetButtonState("NORMAL",0);
TTW_AnchorBottomButton:SetButtonState("PUSHED",1);
TTW_AnchorLeftButton:SetButtonState("NORMAL",0);
TTW_AnchorRightButton:SetButtonState("NORMAL",0);
elseif (state == TTW_LEFT) then
TTW_AnchorTopLeftButton:SetButtonState("NORMAL",0);
TTW_AnchorTopRightButton:SetButtonState("NORMAL",0);
TTW_AnchorBottomRightButton:SetButtonState("NORMAL",0);
TTW_AnchorBottomLeftButton:SetButtonState("NORMAL",0);
TTW_AnchorTopButton:SetButtonState("NORMAL",0);
TTW_AnchorBottomButton:SetButtonState("NORMAL",0);
TTW_AnchorLeftButton:SetButtonState("PUSHED",1);
TTW_AnchorRightButton:SetButtonState("NORMAL",0);
elseif (state == TTW_RIGHT) then
TTW_AnchorTopLeftButton:SetButtonState("NORMAL",0);
TTW_AnchorTopRightButton:SetButtonState("NORMAL",0);
TTW_AnchorBottomRightButton:SetButtonState("NORMAL",0);
TTW_AnchorBottomLeftButton:SetButtonState("NORMAL",0);
TTW_AnchorTopButton:SetButtonState("NORMAL",0);
TTW_AnchorBottomButton:SetButtonState("NORMAL",0);
TTW_AnchorLeftButton:SetButtonState("NORMAL",0);
TTW_AnchorRightButton:SetButtonState("PUSHED",1);
end
end
--------------------------------------------------------------------------------------------------
-- Handler functions
--------------------------------------------------------------------------------------------------
function TTW_TooltipOnLoad()
--RegisterForSave("TTWState");
this:RegisterEvent("VARIABLES_LOADED");
-- Register our slash command
SLASH_TTW1 = "/tooltipwrangler";
SLASH_TTW2 = "/ttw";
SlashCmdList["TTW"] = function(msg)
TTW_SlashCommandHandler(msg);
end
if( DEFAULT_CHAT_FRAME ) then
DEFAULT_CHAT_FRAME:AddMessage("Tootip Wrangler: AddOn loaded");
end
UIErrorsFrame:AddMessage("Tooltip Wrangler: AddOn loaded", 1.0, 1.0, 1.0, 1.0, UIERRORS_HOLD_TIME);
end
function TTW_TooltipOnEvent(event)
if( event == "VARIABLES_LOADED" ) then
if( not TTWState ) then
TTWState = { };
end
if(TTWState.Lock==1) then
TTW_RecticleFrame:Hide();
GameTooltip:Hide();
DEFAULT_CHAT_FRAME:AddMessage(TTW_LOCKED);
else
TTW_RecticleFrame:Show();
DEFAULT_CHAT_FRAME:AddMessage(TTW_UNLOCKED);
end
TTW_SetClickState(TTWState.Anchor);
if (TTWState.AnchorType == TTW_MOUSE) then
TTW_RecticleFrame:Hide();
end
GameTooltip_SetDefaultAnchor = TTW_PositionTooltip;
end
end
function TTW_TooltipOnMouseDown()
GameTooltip:Hide();
TTW_RecticleFrame:StartMoving()
end
function TTW_TooltipOnMouseUp()
TTW_RecticleFrame:StopMovingOrSizing()
end
function TTW_AnchorTopLeftOnClick()
PlaySound("igMainMenuClose");
TTW_SetClickState(TTW_TOPLEFT);
TTWState.Anchor = TTW_TOPLEFT;
end
function TTW_AnchorTopRightOnClick()
PlaySound("igMainMenuClose");
TTW_SetClickState(TTW_TOPRIGHT);
TTWState.Anchor = TTW_TOPRIGHT;
end
function TTW_AnchorBottomRightOnClick()
PlaySound("igMainMenuClose");
TTW_SetClickState(TTW_BOTTOMRIGHT);
TTWState.Anchor = TTW_BOTTOMRIGHT;
end
function TTW_AnchorBottomLeftOnClick()
PlaySound("igMainMenuClose");
TTW_SetClickState(TTW_BOTTOMLEFT);
TTWState.Anchor = TTW_BOTTOMLEFT;
end
function TTW_AnchorTopOnClick()
PlaySound("igMainMenuClose");
TTW_SetClickState(TTW_TOP);
TTWState.Anchor = TTW_TOP;
end
function TTW_AnchorBottomOnClick()
PlaySound("igMainMenuClose");
TTW_SetClickState(TTW_BOTTOM);
TTWState.Anchor = TTW_BOTTOM;
end
function TTW_AnchorLeftOnClick()
PlaySound("igMainMenuClose");
TTW_SetClickState(TTW_LEFT);
TTWState.Anchor = TTW_LEFT;
end
function TTW_AnchorRightOnClick()
PlaySound("igMainMenuClose");
TTW_SetClickState(TTW_RIGHT);
TTWState.Anchor = TTW_RIGHT;
end
function TTW_ButtonTooltip()
if( this:GetCenter() < GetScreenWidth() / 2 ) then
GameTooltip:SetOwner(this, "ANCHOR_RIGHT");
else
GameTooltip:SetOwner(this, "ANCHOR_LEFT");
end
if (this == TTW_AnchorTopLeftButton) then
GameTooltip:SetText("Anchor the \"Top Left\" corner of the\ntooltip to the center of the target.\n\(Right and Bottom edges will grow\)");
elseif (this == TTW_AnchorTopRightButton) then
GameTooltip:SetText("Anchor the \"Top Right\" corner of the\ntooltip to the center of the target.\n\(Left and Bottom edges will grow\)");
elseif (this == TTW_AnchorBottomRightButton) then
GameTooltip:SetText("Anchor the \"Bottom Right\" corner of the\ntooltip to the center of the target.\n\(Left and Top edges will grow\)");
elseif (this == TTW_AnchorBottomLeftButton) then
GameTooltip:SetText("Anchor the \"Bottom Left\" corner of the\ntooltip to the center of the target.\n\(Right and Top edges will grow\)");
elseif (this == TTW_AnchorTopButton) then
GameTooltip:SetText("Anchor the \"Top Center\" side of the\ntooltip to the center of the target.\n\(Bottom, Left and Right edges will grow\)");
elseif (this == TTW_AnchorBottomButton) then
GameTooltip:SetText("Anchor the \"Bottom Center\" side of the\ntooltip to the center of the target.\n\(Top, Left and Right edges will grow\)");
elseif (this == TTW_AnchorLeftButton) then
GameTooltip:SetText("Anchor the \"Left Center\" side of the\ntooltip to the center of the target.\n\(Top, Bottom and Right edges will grow\)");
elseif (this == TTW_AnchorRightButton) then
GameTooltip:SetText("Anchor the \"Right Center\" side of the\ntooltip to the center of the target.\n\(Top, Bottom and Left edges will grow\)");
end
end
Generated by GNU Enscript 1.6.5.90.