vanilla-wow-addons – Rev 1

Subversion Repositories:
Rev:
--[[  LS Chat 1.2
author : Aaike Van Roekeghem - a.k.a [LoSt]Madness

Enables you to remove the buttons next to the chatframes.
The buttons are still clickable eventhough they are invisible , the "Goto Bottom" button will still flash if you are not at the bottom as well. 
The mod also allows you to scroll in the chatframes with the mousewheel and timestamps chat messages as they come in (with or without seconds).

anything this addon does can be enabled/disabled in its options window. open it up with the 
slashcommand : /lschat

changes in 1.2 :
- added support for  MyAddons
- changed toc file for wow version 1600
- empty chat messages will not be displayed with timestamps

changes in 1.1 : 
- There is now an option to disable the chat buttons completely

]]--

--Default Configuration
LSChatConfig = {};
LSChatConfig.HideButtons = false;
LSChatConfig.DisableButtons = false;
LSChatConfig.HideEmote = false;
LSChatConfig.StampEnabled = false;
LSChatConfig.StampSeconds = false;
LSChatConfig.StampStyle = false;

LSChat = {
        
        --local vars
        chatbuttons = {"DownButton",
                "UpButton",
                "BottomButton"
                };

        chatFrames = 7;
        
        --Public Functions
        ToggleButtons = function()
                if(LSChatConfig.HideButtons) then
                        LSChat.Show();
                else
                        LSChat.Hide();
                end
        end;
        
        ToggleEnabled = function()
                if(LSChatConfig.DisableButtons) then
                        LSChat.Enable();
                else
                        LSChat.Disable();
                end
        end;
        
        ToggleEmote = function()
                if(ChatFrameMenuButton:IsVisible()) then
                        ChatFrameMenuButton:Hide()
                        LSChatConfig.HideEmote = true;
                else
                        ChatFrameMenuButton:Show()
                        LSChatConfig.HideEmote = false;
                end
        end;
        
        ToggleMousewheel = function() 
                if(LSChatConfig.Mousewheel) then
                        LSChatConfig.Mousewheel = false;
                else
                        LSChatConfig.Mousewheel = true
                end
        end;
        
        
        ToggleStamp = function()
                if(LSChatConfig.StampEnabled)then 
                        LSChatConfig.StampEnabled = false;
                else
                        LSChatConfig.StampEnabled = true;
                end
        end;
        
        ToggleStampSeconds = function()
                if(LSChatConfig.StampSeconds)then 
                        LSChatConfig.StampSeconds = false;
                else
                        LSChatConfig.StampSeconds = true;
                end
        end;
        
        ToggleStampStyle = function()
                if(LSChatConfig.StampStyle)then 
                        LSChatConfig.StampStyle = false;
                else
                        LSChatConfig.StampStyle = true;
                end
        end;

        
        --Private Functions
        OnLoad = function()
                
                
                -- Hook ChatFrame_OnEvent so we can hook AddMessage
                Original_ChatFrame_OnEvent = ChatFrame_OnEvent;
                ChatFrame_OnEvent = LSChat.OnEvent;
                
                SlashCmdList["LOST_CHAT"] = LSChat_ToggleOptions;
                SLASH_LOST_CHAT1 = "/lschat";
        
                
        end;
        
        OnEvent = function(event)
                
                if (event == "VARIABLES_LOADED") then
                        
                        if (myAddOnsFrame) then
                        myAddOnsList.LS_Chat = {
                        name = "LS_Chat",
                        description = "Removes chat buttons, enables mousewheel scrolling and more",
                        version = "1.2", category = MYADDONS_CATEGORY_CHAT,
                        frame = "LSChat_Options",
                        optionsframe = "LSChat_Options"
                        };
                        end

                        if(LSChatConfig.HideButtons) then
                                LSChat.Hide();
                        else
                                LSChat.Show();
                        end
                        
                        if(LSChatConfig.HideEmote) then
                                ChatFrameMenuButton:Hide()
                        else
                                ChatFrameMenuButton:Show()
                        end
                        
                        
                end
                
                Original_ChatFrame_OnEvent(event); --call the real ChatFrame_OnEvent function
                --if we haven't already done so, hook the AddMessage function
                if(not this.Original_AddMessage) then
                        this.Original_AddMessage = this.AddMessage;
                        this.AddMessage = LSChat.AddMessage;
                end
        
        end;
        
        Disable = function()
                for i=1, LSChat.chatFrames, 1 do
                        for button in LSChat.chatbuttons do
                                b = getglobal("ChatFrame".. i .. LSChat.chatbuttons[button]);
                                b:EnableMouse(0)
                        end
                end
                LSChatConfig.DisableButtons = true;
        end;
        
        Enable = function()
                for i=1, LSChat.chatFrames, 1 do
                        for button in LSChat.chatbuttons do
                                b = getglobal("ChatFrame".. i .. LSChat.chatbuttons[button]);
                                b:EnableMouse(1)
                        end
                end
                LSChatConfig.DisableButtons = false;
        end;
        
        
                        
        Hide = function()               
                for i=1, LSChat.chatFrames, 1 do
                        for button in LSChat.chatbuttons do
                                b = getglobal("ChatFrame".. i .. LSChat.chatbuttons[button]);
                                b:DisableDrawLayer();
                        end
                end
                LSChatConfig.HideButtons = true;
        end;
        
        Show = function()
                for i=1, LSChat.chatFrames, 1 do
                        for button in LSChat.chatbuttons do
                        b = getglobal("ChatFrame".. i .. LSChat.chatbuttons[button]);
                                b:EnableDrawLayer();
                        end
                end
                LSChatConfig.HideButtons = false;
        end;
        
        AddMessage = function(this, msg, r, g, b, id)
        
                if(LSChatConfig.StampEnabled) then
                        local hour=string.sub(date(),  10, 11)
                
                        local minute=string.sub(date(),  13, 14)
                
                        local second =string.sub(date(),  16, 17)
                        local AMPM
                        local newmsg
                                        
                        if LSChatConfig.StampStyle==false then
                        
                                if tonumber(hour) >12 then
                                        hour=hour-12
                                        AMPM="pm"
                                else
                                        hour=string.sub(date(),  11, 11)
                                        if tonumber(hour)=="0" then
                                                hour=12
                                        end
                                        AMPM="am"
                                end
                        
                        end 
                        
                        if msg == nil then
                                msg="The value was nil"
                        end
                        newmsg = "["..hour..":"..minute
                        
                        if(LSChatConfig.StampSeconds) then
                        newmsg = newmsg .. ":"..second
                        end
                        
                        newmsg = newmsg .. "]".." "..msg
                        
                        if newmsg == "" then
                                this:Original_AddMessage(msg, r, g, b, id); --call the real AddMessage function
                        else
                                this:Original_AddMessage(newmsg, r, g, b, id); --call the real AddMessage function
                        end
                
                else
                        this:Original_AddMessage(msg, r, g, b, id); --call the real AddMessage function
                end
                
        end;

}