vanilla-wow-addons – Rev 1

Subversion Repositories:
Rev:
CT_RelocateTooltip = 0;

reloadfunction = function ()
        ConsoleExec("reloadui");
        CT_Print("<CTMod> "..CT_MASTERMOD_WARNING_RELOAD, 1, 1, 0);
end

resetfunction = function()
        CT_Print("<CTMod> "..CT_MASTERMOD_WARNING_RESET, 1, 1, 0);
end

CT_RegisterMod(CT_MASTERMOD_MODNAME_RESET, "", 5, "Interface\\Icons\\Spell_Frost_WindWalkOn", CT_MASTERMOD_TOOLTIP_RESET, "switch", "", resetfunction);
CT_RegisterMod(CT_MASTERMOD_MODNAME_RELOAD, "", 5, "Interface\\Icons\\Ability_Whirlwind", CT_MASTERMOD_TOOLTIP_RELOAD, "switch", "", reloadfunction);

SlashCmdList["RESETOPTIONS"] = function(msg)
        CT_Options[UnitName("player")] = { };
        CT_Print(CT_MASTERMOD_OPTIONRESET, 1, 1, 0);
end

SLASH_RESETOPTIONS1 = "/resetoptions";

function CT_QuestTimer_UpdatePosition()
        if ( CT_BuffFrame and CT_BuffFrame:IsVisible() ) then
                if ( Minimap:IsVisible() ) then
                        QuestTimerFrame:ClearAllPoints();
                        QuestTimerFrame:SetPoint("CENTER", "MinimapCluster", "LEFT", -50, 0);   
                else
                        QuestTimerFrame:ClearAllPoints();
                        QuestTimerFrame:SetPoint("RIGHT", "MinimapCluster", "RIGHT", -25, 0);
                end
        else
                QuestTimerFrame:ClearAllPoints();
                QuestTimerFrame:SetPoint("TOP", "MinimapCluster", "BOTTOM", 10, 0);
        end
end
CT_QuestTimer_oldToggleMinimap = ToggleMinimap;
function CT_QuestTimer_newToggleMinimap()
        CT_QuestTimer_oldToggleMinimap();
        CT_QuestTimer_UpdatePosition();
end
ToggleMinimap = CT_QuestTimer_newToggleMinimap;

CT_oldUIParent_ManageRightSideFrames = UIParent_ManageRightSideFrames;
function CT_newUIParent_ManageRightSideFrames()
        CT_oldUIParent_ManageRightSideFrames();
        CT_QuestTimer_UpdatePosition();
end
UIParent_ManageRightSideFrames = CT_newUIParent_ManageRightSideFrames;

function CT_QuestTimerFrame_OnShow()
        CT_QuestTimer_UpdatePosition();
        return;
end
function CT_QuestTimerFrame_OnHide()
        return;
end
-- Redefine how the show/hide happens
QuestTimerFrame_OnShow = CT_QuestTimerFrame_OnShow;
QuestTimerFrame_OnHide = CT_QuestTimerFrame_OnHide;

CT_OldDD_AddButton = UIDropDownMenu_AddButton;
function CT_NewDD_AddButton(info, level)
        if ( not level ) then
                level = 1;
        end
        
        local listFrame = getglobal("DropDownList"..level);
        local listFrameName = listFrame:GetName();
        local index = listFrame.numButtons + 1;
        local width;

        -- If too many buttons error out
        if ( index > UIDROPDOWNMENU_MAXBUTTONS ) then
                return;
        end
        CT_OldDD_AddButton(info, level);
end

UIDropDownMenu_AddButton = CT_NewDD_AddButton;

CT_oldGT_SetDefaultAnchor = GameTooltip_SetDefaultAnchor;

function CT_GT_SetDefaultAnchor(tooltip, parent) 
        if ( tooltip == GameTooltip and CT_RelocateTooltip == 1 ) then
                tooltip:SetOwner(parent, "ANCHOR_NONE");
                tooltip:ClearAllPoints();
                tooltip:SetPoint("TOP", "UIParent", "TOP");
        else
                CT_oldGT_SetDefaultAnchor(tooltip, parent);
        end
end

GameTooltip_SetDefaultAnchor = CT_GT_SetDefaultAnchor;

local relocatefunc = function(modId, text)
        local val = CT_Mods[modId]["modStatus"];
        if ( val == "on" ) then
                CT_RelocateTooltip = 1;
                CT_Print("<CTMod> "..CT_MASTERMOD_ON_RELOCATETT, 1, 1, 0);
        else
                CT_RelocateTooltip = 0;
                CT_Print("<CTMod> "..CT_MASTERMOD_OFF_RELOCATETT, 1, 1, 0);
        end
end

local relocateinitfunc = function(modId)
        local val = CT_Mods[modId]["modStatus"];
        if ( val == "on" ) then
                CT_RelocateTooltip = 1;
        else
                CT_RelocateTooltip = 0;
        end
end
CT_RegisterMod(CT_MASTERMOD_MODNAME_RELOCATETT, CT_MASTERMOD_SUBNAME_RELOCATETT, 5, "Interface\\Icons\\INV_Misc_Map_01", CT_MASTERMOD_TOOLTIP_RELOCATETT, "off", nil, relocatefunc, relocateinitfunc);

CT_MasterMod_TimestampInitFunc = function(modId)
        local val = CT_Mods[modId]["modValue"];
        if ( val == "12h" ) then
                for i = 1, 7, 1 do
                        CT_BarMod_OriginalChatHandlers[i] = getglobal("ChatFrame" .. i).AddMessage;
                        getglobal("ChatFrame" .. i).AddMessage = function(self, msg, r, g, b)
                                if ( msg ) then
                                        CT_BarMod_OriginalChatHandlers[i](self, "[" .. tonumber(date("%I")) .. date(":%M") .. "] " .. msg, r, g, b);
                                else
                                        CT_BarMod_OriginalChatHandlers[i](self, msg, r, g, b);
                                end
                        end
                end
        elseif ( val == "24h" ) then
                for i = 1, 7, 1 do
                        CT_BarMod_OriginalChatHandlers[i] = getglobal("ChatFrame" .. i).AddMessage;
                        getglobal("ChatFrame" .. i).AddMessage = function(self, msg, r, g, b)
                                if ( msg ) then
                                        CT_BarMod_OriginalChatHandlers[i](self, "[" .. date("%H:%M") .. "] " .. msg, r, g, b);
                                else
                                        CT_BarMod_OriginalChatHandlers[i](self, msg, r, g, b);
                                end
                        end
                end
        elseif ( val == "12hs" ) then
                for i = 1, 7, 1 do
                        CT_BarMod_OriginalChatHandlers[i] = getglobal("ChatFrame" .. i).AddMessage;
                        getglobal("ChatFrame" .. i).AddMessage = function(self, msg, r, g, b)
                                if ( msg ) then
                                        CT_BarMod_OriginalChatHandlers[i](self, "[" .. tonumber(date("%I")) .. date(":%M:%S") .. "] " .. msg, r, g, b);
                                else
                                        CT_BarMod_OriginalChatHandlers[i](self, msg, r, g, b);
                                end
                        end
                end
        elseif ( val == "24hs" ) then
                for i = 1, 7, 1 do
                        CT_BarMod_OriginalChatHandlers[i] = getglobal("ChatFrame" .. i).AddMessage;
                        getglobal("ChatFrame" .. i).AddMessage = function(self, msg, r, g, b)
                                if ( msg ) then
                                        CT_BarMod_OriginalChatHandlers[i](self, "[" .. date("%H:%M:%S") .. "] " .. msg, r, g, b);
                                else
                                        CT_BarMod_OriginalChatHandlers[i](self, msg, r, g, b);
                                end
                        end
                end
        elseif ( val == "Off" ) then
                for i = 1, 7, 1 do
                        CT_BarMod_OriginalChatHandlers[i] = getglobal("ChatFrame" .. i).AddMessage;
                end
        end
end

CT_BarMod_OriginalChatHandlers = { };
local timestampfunc = function(modId, text)
        if ( getn(CT_BarMod_OriginalChatHandlers) == 0 ) then
                CT_MasterMod_TimestampInitFunc(modId);
        end
        local val = CT_Mods[modId]["modValue"];
        if ( val == "Off" ) then
                val = "12h";
                for i = 1, 7, 1 do
                        getglobal("ChatFrame" .. i).AddMessage = function(self, msg, r, g, b)
                                if ( msg ) then
                                        CT_BarMod_OriginalChatHandlers[i](self, "[" .. tonumber(date("%I")) .. date(":%M") .. "] " .. msg, r, g, b);
                                else
                                        CT_BarMod_OriginalChatHandlers[i](self, msg, r, g, b);
                                end
                        end
                end
                CT_Print("<CTMod> " .. CT_MASTERMOD_12H_TIMESTAMP, 1, 1, 0);
        elseif ( val == "12h" ) then
                val = "24h";
                for i = 1, 7, 1 do
                        getglobal("ChatFrame" .. i).AddMessage = function(self, msg, r, g, b)
                                if ( msg ) then
                                        CT_BarMod_OriginalChatHandlers[i](self, "[" .. date("%H:%M") .. "] " .. msg, r, g, b);
                                else
                                        CT_BarMod_OriginalChatHandlers[i](self, msg, r, g, b);
                                end
                        end
                end
                CT_Print("<CTMod> " .. CT_MASTERMOD_24H_TIMESTAMP, 1, 1, 0);
        elseif ( val == "24h" ) then
                val = "12hs";
                for i = 1, 7, 1 do
                        getglobal("ChatFrame" .. i).AddMessage = function(self, msg, r, g, b)
                                if ( msg ) then
                                        CT_BarMod_OriginalChatHandlers[i](self, "[" .. tonumber(date("%I")) .. date(":%M:%S") .. "] " .. msg, r, g, b);
                                else
                                        CT_BarMod_OriginalChatHandlers[i](self, msg, r, g, b);
                                end
                        end
                end
                CT_Print("<CTMod> " .. CT_MASTERMOD_12HS_TIMESTAMP, 1, 1, 0);
        elseif ( val == "12hs" ) then
                val = "24hs";
                for i = 1, 7, 1 do
                        getglobal("ChatFrame" .. i).AddMessage = function(self, msg, r, g, b)
                                if ( msg ) then
                                        CT_BarMod_OriginalChatHandlers[i](self, "[" .. date("%H:%M:%S") .. "] " .. msg, r, g, b);
                                else
                                        CT_BarMod_OriginalChatHandlers[i](self, msg, r, g, b);
                                end
                        end
                end
                CT_Print("<CTMod> " .. CT_MASTERMOD_24HS_TIMESTAMP, 1, 1, 0);
        elseif ( val == "24hs" ) then
                val = "Off";
                for i = 1, 7, 1 do
                        getglobal("ChatFrame" .. i).AddMessage = CT_BarMod_OriginalChatHandlers[i];
                end
                CT_Print("<CTMod> " .. CT_MASTERMOD_OFF_TIMESTAMP, 1, 1, 0);
        end
        if ( text ) then text:SetText(val); end
        CT_Mods[modId]["modValue"] = val;
end

CT_RegisterMod(CT_MASTERMOD_MODNAME_TIMESTAMP, CT_MASTERMOD_SUBNAME_TIMESTAMP, 5, "Interface\\Icons\\INV_Misc_PocketWatch_03", CT_MASTERMOD_TOOLTIP_TIMESTAMP, "switch", "Off", timestampfunc, CT_MasterMod_TimestampInitFunc);

CT_oldSetItemButtonCount = SetItemButtonCount;
function CT_newItemButtonCount(button, count)
        CT_oldSetItemButtonCount(button, count);
        if ( button and button.count ) then
                getglobal(button:GetName().."Count"):SetText(button.count);
        end
end
SetItemButtonCount = CT_newItemButtonCount;

function MasterLockFunction(modId)
        local val = CT_Mods[modId]["modStatus"];
        if ( val == "on" ) then
                CT_LockMovables(1);
                CT_Print("<CTMod> " .. CT_MASTERMOD_UNLOCKED, 1, 1, 0);
        else
                CT_Print("<CTMod> " .. CT_MASTERMOD_LOCKED, 1, 1, 0);
                CT_LockMovables(nil);
        end
end

function MasterLockInitFunction(modId)
        local val = CT_Mods[modId]["modStatus"];
        if ( val == "on" ) then
                CT_MF_ShowFrames = 1;
        else
                CT_MF_ShowFrames = nil;
        end
end

function MasterResetFunction(modId, text)
        CT_ResetFrame:Show();
        if ( text ) then text:SetText(""); end
end

function CT_MasterMod_OnChatScroll()
        if ( tonumber(arg1) > 0 ) then
                if ( CT_Mods[CT_MASTERMOD_MODNAME_SCROLL] and CT_Mods[CT_MASTERMOD_MODNAME_SCROLL]["modValue"] == "3" and IsShiftKeyDown()) then
                        this:ScrollToTop();
                elseif ( CT_Mods[CT_MASTERMOD_MODNAME_SCROLL] and CT_Mods[CT_MASTERMOD_MODNAME_SCROLL]["modValue"] == "3" and IsControlKeyDown()) then
                        this:PageUp();
                else 
                        this:ScrollUp();
                end
        else
                if ( CT_Mods[CT_MASTERMOD_MODNAME_SCROLL] and CT_Mods[CT_MASTERMOD_MODNAME_SCROLL]["modValue"] == "3" and IsShiftKeyDown()) then
                        this:ScrollToBottom();
                elseif ( CT_Mods[CT_MASTERMOD_MODNAME_SCROLL] and CT_Mods[CT_MASTERMOD_MODNAME_SCROLL]["modValue"] == "3" and IsControlKeyDown()) then
                        this:PageDown();
                else
                        this:ScrollDown();
                end
        end
end

local function ChatScrollFunction(modId, text)
        local val = CT_Mods[modId]["modValue"];
        if ( val == "1" ) then
                val = "2";
                CT_Print(CT_MASTERMOD_CHATSCROLLON, 1, 1, 0);
                for i = 1, 7, 1 do
                        getglobal("ChatFrame" .. i):SetScript("OnMouseWheel", CT_MasterMod_OnChatScroll);
                        getglobal("ChatFrame" .. i):EnableMouseWheel(true);
                end
        elseif ( val == "2" ) then
                val = "3";
                CT_Print(CT_MASTERMOD_CHATSCROLLONSHIFT, 1, 1, 0);
                for i = 1, 7, 1 do
                        getglobal("ChatFrame" .. i):SetScript("OnMouseWheel", CT_MasterMod_OnChatScroll);
                        getglobal("ChatFrame" .. i):EnableMouseWheel(true);
                end
        elseif ( val == "3" ) then
                val = "1";
                CT_Print(CT_MASTERMOD_CHATSCROLLOFF, 1, 1, 0);
                for i = 1, 7, 1 do
                        getglobal("ChatFrame" .. i):SetScript("OnMouseWheel", nil);
                        getglobal("ChatFrame" .. i):EnableMouseWheel(false);
                end
        end
        if ( text ) then text:SetText(val); end
        CT_Mods[modId]["modValue"] = val;
end

local function ChatScrollInitFunction(modId)
        local val = CT_Mods[modId]["modValue"];
        if ( val ~= "1" ) then
                for i = 1, 7, 1 do
                        getglobal("ChatFrame" .. i):SetScript("OnMouseWheel", CT_MasterMod_OnChatScroll);
                        getglobal("ChatFrame" .. i):EnableMouseWheel(true);
                end
        else
                for i = 1, 7, 1 do
                        getglobal("ChatFrame" .. i):SetScript("OnMouseWheel", nil);
                        getglobal("ChatFrame" .. i):EnableMouseWheel(false);
                end
        end
end

CT_RegisterMod(CT_MASTERMOD_MODNAME_UNLOCK, CT_MASTERMOD_SUBNAME_UNLOCK, 1, "Interface\\Icons\\INV_Misc_Key_03", CT_MASTERMOD_TOOLTIP_UNLOCK, "off", nil, MasterLockFunction, MasterLockInitFunction, 11);
CT_RegisterMod(CT_MASTERMOD_MODNAME_RESETFRAMES, CT_MASTERMOD_SUBNAME_RESETFRAMES, 1, "Interface\\Icons\\INV_Misc_Key_04", CT_MASTERMOD_TOOLTIP_RESETFRAMES, "switch", "", MasterResetFunction, nil, 12);

CT_RegisterMod(CT_MASTERMOD_MODNAME_SCROLL, "", 5, "Interface\\Icons\\INV_Misc_Key_03", CT_MASTERMOD_TOOLTIP_SCROLL, "switch", "1", ChatScrollFunction, ChatScrollInitFunction);

-- Buy full stack when alt-rightclicking an item
local CT_MasterMod_oldBuyMerchantItem = BuyMerchantItem;
function BuyMerchantItem(id, qty)
        local maxStack = GetMerchantItemMaxStack(id);
        local money = GetMoney();
        local name, texture, price, quantity, numAvailable, isUsable = GetMerchantItemInfo(id);
        
        if ( not qty and IsAltKeyDown() ) then
                if ( maxStack*price > money ) then
                        maxStack = floor(money/price);
                end
                CT_MasterMod_oldBuyMerchantItem(id, maxStack);
        else
                CT_MasterMod_oldBuyMerchantItem(id, qty);
        end
end

--[[
function CT_FindTellTarget(text)
        if ( not text ) then return; end
        text = strlower(text);
        -- /tell
        local iStart, iEnd, nick = string.find(text, "^/tell ([^%s]+)$");
        if ( iStart and iEnd and nick ) then
                return nick, "/tell ";
        end

        -- /t
        local iStart, iEnd, nick = string.find(text, "^/t ([^%s]+)$");
        if ( iStart and iEnd and nick ) then
                return nick, "/t ";
        end

        -- /whisper
        local iStart, iEnd, nick = string.find(text, "^/whisper ([^%s]+)$");
        if ( iStart and iEnd and nick ) then
                return nick, "/whisper ";
        end

        -- /w
        local iStart, iEnd, nick = string.find(text, "^/w ([^%s]+)$");
        if ( iStart and iEnd and nick ) then
                return nick, "/w ";
        end

        -- No result, return nil
        return nil;
end

CT_oldChatEdit_ExtractTellTarget = ChatEdit_ExtractTellTarget;
function CT_newChatEdit_ExtractTellTarget(editBox, msg)
        if ( not this.noParse ) then
                CT_oldChatEdit_ExtractTellTarget(editBox, msg);
        else
                this.noParse = nil;
        end
end
ChatEdit_ExtractTellTarget = CT_newChatEdit_ExtractTellTarget;

CT_oldChatEdit_OnTextChanged = ChatEdit_OnTextChanged;
function CT_newChatEdit_OnTextChanged()
        CT_oldChatEdit_OnTextChanged();

        if ( this.hasCompleted ) then
                this.hasCompleted = nil;
                return;
        end
        if ( this.lastTextLen and strlen(this:GetText()) <= this.lastTextLen ) then
                this.lastTextLen = strlen(this:GetText());
                return;
        end

        this.noParse = nil;
        -- Auto Completion
        local textlen = strlen(this:GetText());
        this.lastTextLen = textlen;

        local text, type = CT_FindTellTarget(this:GetText());
        if ( not text ) then return; end

        local numFriends = GetNumFriends();
        local name;
        if ( numFriends > 0 ) then
                for i=1, numFriends do
                        name =  GetFriendInfo(i);
                        if ( strfind(strlower(name), "^"..text) ) then
                                this.noParse = 1;
                                this:SetText(type .. name);
                                this:HighlightText(textlen, -1);
                                this.hasCompleted = 1;
                                break;
                        end
                end
        end

        -- Hack to scan offline members
        local oldOffline = GuildFrameLFGButton:GetChecked();
        SetGuildRosterShowOffline(1);

        local numGuildMembers = GetNumGuildMembers();
        if ( numGuildMembers > 0 ) then
                for i=1, numGuildMembers do
                        name = GetGuildRosterInfo(i);
                        if ( strfind(strlower(name), "^"..text) ) then
                                this.noParse = 1;
                                this:SetText(type .. name);
                                this:HighlightText(textlen, -1);
                                this.hasCompleted = 1;
                                break;
                        end
                end
        end
        this.noParse = nil;
        SetGuildRosterShowOffline(oldOffline);
end
ChatEdit_OnTextChanged = CT_newChatEdit_OnTextChanged;
]]

Generated by GNU Enscript 1.6.5.90.