vanilla-wow-addons – Rev 1

Subversion Repositories:
Rev:
--[[

        MonkeyQuest:
        Displays your quests for quick viewing.
        
        Website:        http://wow.visualization.ca/
        Author:         Trentin (monkeymods@gmail.com)
        
        
        Contributors:
        Celdor
                - Help with the Quest Log Freeze bug
                
        Diungo
                - Toggle grow direction
                
        Pkp
                - Color Quest Titles the same as the quest level
        
        wowpendium.de
                - German translation
                
        MarsMod
                - Valid player name before the VARIABLES_LOADED event bug
                - Settings resetting bug

--]]


-- define the dialog box for reseting config
StaticPopupDialogs["MONKEYQUEST_RESET"] = {
        text = TEXT(MONKEYQUEST_CONFIRM_RESET),
        button1 = TEXT(OKAY),
        button2 = TEXT(CANCEL),
        OnAccept = function()
                MonkeyQuestInit_ResetConfig();
                if (DEFAULT_CHAT_FRAME) then
                        DEFAULT_CHAT_FRAME:AddMessage(MONKEYQUEST_RESET_MSG);
                end
        end,
        timeout = 0,
        exclusive = 1
};

-- function to register all the slash commands
function MonkeyQuestSlash_Init()
        -- this command toggles the Quest Monkey display
        SlashCmdList["MONKEYQUEST_DISPLAY"] = MonkeyQuestSlash_Parse;
        SLASH_MONKEYQUEST_DISPLAY1 = "/monkeyquest";
        SLASH_MONKEYQUEST_DISPLAY2 = "/mquest";
end

function MonkeyQuestSlash_Parse(msg)
        -- if not loaded yet then get out
        if (MonkeyQuest.m_bLoaded == false) then
                return;
        end

        if (msg == nil or msg == "" or string.find(msg, "help") ~= nil) then
                local i, j = string.find(msg, "help");
                
                if (i ~= nil) then
                        MonkeyQuestSlash_CmdHelp(string.lower(string.sub(msg, j + 2)));
                        return;
                end
                                
                MonkeyQuestSlash_CmdHelp();
                return;
        end
        if (string.lower(msg) == "reset") then
                MonkeyQuestSlash_CmdReset();
                return;
        end
        if (string.lower(msg) == "open") then
                MonkeyQuestSlash_CmdOpen(true);
                return;
        end
        if (string.lower(msg) == "close") then
                MonkeyQuestSlash_CmdOpen(false);
                return;
        end
        if (string.lower(msg) == "showhidden") then
                MonkeyQuestSlash_CmdShowHidden(true);
                return;
        end
        if (string.lower(msg) == "hidehidden") then
                MonkeyQuestSlash_CmdShowHidden(false);
                return;
        end
        if (string.lower(msg) == "useoverviews") then
                MonkeyQuestSlash_CmdUseOverviews(true);
                return;
        end
        if (string.lower(msg) == "nooverviews") then
                MonkeyQuestSlash_CmdUseOverviews(false);
                return;
        end
        if (string.lower(msg) == "hideheaders") then
                MonkeyQuestSlash_CmdHideHeaders(true);
                return;
        end
        if (string.lower(msg) == "showheaders") then
                MonkeyQuestSlash_CmdHideHeaders(false);
                return;
        end
        if (string.lower(msg) == "hideborder") then
                MonkeyQuestSlash_CmdHideBorder(true);
                return;
        end
        if (string.lower(msg) == "showborder") then
                MonkeyQuestSlash_CmdHideBorder(false);
                return;
        end
        if (string.lower(msg) == "growup") then
                MonkeyQuestSlash_CmdGrowUp(true);
                return;
        end
        if (string.lower(msg) == "growdown") then
                MonkeyQuestSlash_CmdGrowUp(false);
                return;
        end
        if (string.find(msg, "alpha") ~= nil) then
                local i, j = string.find(msg, "%d+");
                
                if (i ~= nil) then
                        MonkeyQuestSlash_CmdAlpha(tonumber(string.sub(msg, i, j), 10));
                end
                return;
        end
        if (string.find(msg, "width") ~= nil) then
                local i, j = string.find(msg, "%d+");
                
                if (i ~= nil) then
                        MonkeyQuestSlash_CmdWidth(tonumber(string.sub(msg, i, j), 10));
                end
                return;
        end
        if (string.find(msg, "fontheight") ~= nil) then
                local i, j = string.find(msg, "%d+");
                
                if (i ~= nil) then
                        MonkeyQuestSlash_CmdFontHeight(tonumber(string.sub(msg, i, j), 10));
                end
                return;
        end
        if (string.find(msg, "tipanchor") ~= nil) then
                local i, j = string.find(msg, "=");
                
                if (i ~= nil) then
                        MonkeyQuestSlash_CmdTipAnchor(string.sub(msg, i + 1));
                end
                return;
        end
        if (string.lower(msg) == "shownumquests") then
                MonkeyQuestSlash_CmdShowNumQuests(true);
                return;
        end
        if (string.lower(msg) == "hidenumquests") then
                MonkeyQuestSlash_CmdShowNumQuests(false);
                return;
        end
        if (string.lower(msg) == "lock") then
                MonkeyQuestSlash_CmdLock(true);
                return;
        end
        if (string.lower(msg) == "unlock") then
                MonkeyQuestSlash_CmdLock(false);
                return;
        end
        if (string.lower(msg) == "colourtitleon" or string.lower(msg) == "colortitleon") then
                MonkeyQuestSlash_CmdColourTitleOn(true);        
                return;
        end
        if (string.lower(msg) == "colourtitleoff" or string.lower(msg) == "colortitleoff") then
                MonkeyQuestSlash_CmdColourTitleOn(false);       
                return;
        end
        if (string.lower(msg) == "hidecompletedquests") then
                MonkeyQuestSlash_CmdHideCompletedQuests(true);
                return;
        end
        if (string.lower(msg) == "showcompletedquests") then
                MonkeyQuestSlash_CmdHideCompletedQuests(false);
                return;
        end
        if (string.lower(msg) == "hidecompletedobjectives") then
                MonkeyQuestSlash_CmdHideCompletedObjectives(true);
                return;
        end
        if (string.lower(msg) == "showcompletedobjectives") then
                MonkeyQuestSlash_CmdHideCompletedObjectives(false);
                return;
        end
        if (string.lower(msg) == "showtooltipobjectives") then
                MonkeyQuestSlash_CmdShowTooltipObjectives(true);
                return;
        end
        if (string.lower(msg) == "hidetooltipobjectives") then
                MonkeyQuestSlash_CmdShowTooltipObjectives(false);
                return;
        end
        if (string.lower(msg) == "allowrightclick") then
                MonkeyQuestSlash_CmdAllowRightClick(true);
                return;
        end
        if (string.lower(msg) == "disallowrightclick") then
                MonkeyQuestSlash_CmdAllowRightClick(false);
                return;
        end
        if (string.lower(msg) == "hidetitlebuttons") then
                MonkeyQuestSlash_CmdHideTitleButtons(true);
                return;
        end
        if (string.lower(msg) == "showtitlebuttons") then
                MonkeyQuestSlash_CmdHideTitleButtons(false);
                return;
        end
        if (string.lower(msg) == "hidetitle") then
                MonkeyQuestSlash_CmdHideTitle(true);
                return;
        end
        if (string.lower(msg) == "showtitle") then
                MonkeyQuestSlash_CmdHideTitle(false);
                return;
        end

        -- didn't match any others, print out the help msg
        MonkeyQuestSlash_CmdHelp();
end

function MonkeyQuestSlash_CmdHelp(strCommand)
        if (not DEFAULT_CHAT_FRAME) then
                return;
        end
        
        if (strCommand == nil) then
                DEFAULT_CHAT_FRAME:AddMessage(MONKEYQUEST_HELP_MSG);
                return;
        end
        if (strCommand == "reset") then
                DEFAULT_CHAT_FRAME:AddMessage(MONKEYQUEST_HELP_RESET_MSG);
                return;
        end
        if (strCommand == "open") then
                DEFAULT_CHAT_FRAME:AddMessage(MONKEYQUEST_HELP_OPEN_MSG);
                return;
        end
        if (strCommand == "close") then
                DEFAULT_CHAT_FRAME:AddMessage(MONKEYQUEST_HELP_CLOSE_MSG);
                return;
        end
        if (strCommand == "showhidden") then
                DEFAULT_CHAT_FRAME:AddMessage(MONKEYQUEST_HELP_SHOWHIDDEN_MSG);
                return;
        end
        if (strCommand == "hidehidden") then
                DEFAULT_CHAT_FRAME:AddMessage(MONKEYQUEST_HELP_HIDEHIDDEN_MSG);
                return;
        end
        if (strCommand == "useoverviews") then
                DEFAULT_CHAT_FRAME:AddMessage(MONKEYQUEST_HELP_USEOVERVIEWS_MSG);
                return;
        end
        if (strCommand == "nooverviews") then
                DEFAULT_CHAT_FRAME:AddMessage(MONKEYQUEST_HELP_NOOVERVIEWS_MSG);
                return;
        end
        if (strCommand == "tipanchor") then
                DEFAULT_CHAT_FRAME:AddMessage(MONKEYQUEST_HELP_TIPANCHOR_MSG);
                return;
        end
        if (strCommand == "alpha") then
                DEFAULT_CHAT_FRAME:AddMessage(MONKEYQUEST_HELP_ALPHA_MSG);
                return;
        end
        if (strCommand == "width") then
                DEFAULT_CHAT_FRAME:AddMessage(MONKEYQUEST_HELP_WIDTH_MSG);
                return;
        end
        if (strCommand == "fontheight") then
                DEFAULT_CHAT_FRAME:AddMessage(MONKEYQUEST_HELP_FONTHEIGHT_MSG);
                return;
        end
        if (strCommand == "hideheaders") then
                DEFAULT_CHAT_FRAME:AddMessage(MONKEYQUEST_HELP_HIDEHEADERS_MSG);
                return;
        end
        if (strCommand == "showheaders") then
                DEFAULT_CHAT_FRAME:AddMessage(MONKEYQUEST_HELP_SHOWHEADERS_MSG);
                return;
        end
        if (strCommand == "hideborder") then
                DEFAULT_CHAT_FRAME:AddMessage(MONKEYQUEST_HELP_HIDEBORDER_MSG);
                return;
        end
        if (strCommand == "showborder") then
                DEFAULT_CHAT_FRAME:AddMessage(MONKEYQUEST_HELP_SHOWBORDER_MSG);
                return;
        end
        if (strCommand == "growup") then
                DEFAULT_CHAT_FRAME:AddMessage(MONKEYQUEST_HELP_GROWUP_MSG);
                return;
        end
        if (strCommand == "growdown") then
                DEFAULT_CHAT_FRAME:AddMessage(MONKEYQUEST_HELP_GROWDOWN_MSG);
                return;
        end
        if (strCommand == "hidenumquests") then
                DEFAULT_CHAT_FRAME:AddMessage(MONKEYQUEST_HELP_HIDENUMQUESTS_MSG);
                return;
        end
        if (strCommand == "shownumquests") then
                DEFAULT_CHAT_FRAME:AddMessage(MONKEYQUEST_HELP_SHOWNUMQUESTS_MSG);
                return;
        end
        if (strCommand == "lock") then
                DEFAULT_CHAT_FRAME:AddMessage(MONKEYQUEST_HELP_LOCK_MSG);
                return;
        end
        if (strCommand == "unlock") then
                DEFAULT_CHAT_FRAME:AddMessage(MONKEYQUEST_HELP_UNLOCK_MSG);
                return;
        end
        if (strCommand == "colourtitleon" or strCommand == "colortitleon") then
                DEFAULT_CHAT_FRAME:AddMessage(MONKEYQUEST_HELP_COLOURTITLEON_MSG);
                return;
        end
        if (strCommand == "colourtitleoff" or strCommand == "colortitleoff") then
                DEFAULT_CHAT_FRAME:AddMessage(MONKEYQUEST_HELP_COLOURTITLEOFF_MSG);
                return;
        end
        if (strCommand == "hidecompletedquests") then
                DEFAULT_CHAT_FRAME:AddMessage(MONKEYQUEST_HELP_HIDECOMPLETEDQUESTS_MSG);
                return;
        end
        if (strCommand == "showcompletedquests") then
                DEFAULT_CHAT_FRAME:AddMessage(MONKEYQUEST_HELP_SHOWCOMPLETEDQUESTS_MSG);
                return;
        end
        if (strCommand == "hidecompletedobjectives") then
                DEFAULT_CHAT_FRAME:AddMessage(MONKEYQUEST_HELP_HIDECOMPLETEDOBJECTIVES_MSG);
                return;
        end
        if (strCommand == "showcompletedobjectives") then
                DEFAULT_CHAT_FRAME:AddMessage(MONKEYQUEST_HELP_SHOWCOMPLETEDOBJECTIVES_MSG);
                return;
        end
        if (strCommand == "fontheight") then
                DEFAULT_CHAT_FRAME:AddMessage(MONKEYQUEST_HELP_FONTHEIGHT_MSG);
                return;
        end
        if (strCommand == "showtooltipobjectives") then
                DEFAULT_CHAT_FRAME:AddMessage(MONKEYQUEST_HELP_SHOWTOOLTIPOBJECTIVES_MSG);
                return;
        end
        if (strCommand == "hidetooltipobjectives") then
                DEFAULT_CHAT_FRAME:AddMessage(MONKEYQUEST_HELP_HIDETOOLTIPOBJECTIVES_MSG);
                return;
        end
        if (strCommand == "allowrightclick") then
                DEFAULT_CHAT_FRAME:AddMessage(MONKEYQUEST_HELP_ALLOWRIGHTCLICK_MSG);
                return;
        end
        if (strCommand == "disallowrightclick") then
                DEFAULT_CHAT_FRAME:AddMessage(MONKEYQUEST_HELP_DISALLOWRIGHTCLICK_MSG);
                return;
        end
        if (strCommand == "hidetitlebuttons") then
                DEFAULT_CHAT_FRAME:AddMessage(MONKEYQUEST_HELP_HIDETITLEBUTTONS_MSG);
                return;
        end
        if (strCommand == "showtitlebuttons") then
                DEFAULT_CHAT_FRAME:AddMessage(MONKEYQUEST_HELP_SHOWTITLEBUTTONS_MSG);
                return;
        end
        
        -- made it to the end just print the default help
        DEFAULT_CHAT_FRAME:AddMessage(MONKEYQUEST_HELP_MSG);
end

function MonkeyQuestSlash_CmdReset()
        StaticPopup_Show("MONKEYQUEST_RESET");
end

function MonkeyQuestSlash_CmdOpen(bOpen)
        MonkeyQuestConfig[MonkeyQuest.m_strPlayer].m_bDisplay = bOpen;
        
        if (bOpen == true) then
                MonkeyQuest_Show();
        else
                MonkeyQuest_Hide();
        end
        
        -- check for MonkeyBuddy
        if (MonkeyBuddyQuestFrame_Refresh ~= nil) then
                MonkeyBuddyQuestFrame_Refresh();
        end
end

function MonkeyQuestSlash_CmdShowHidden(bShow)
        MonkeyQuestConfig[MonkeyQuest.m_strPlayer].m_bShowHidden = bShow;
        MonkeyQuest_Refresh();
        
        -- check for MonkeyBuddy
        if (MonkeyBuddyQuestFrame_Refresh ~= nil) then
                MonkeyBuddyQuestFrame_Refresh();
        end
end

function MonkeyQuestSlash_CmdUseOverviews(bOverviews)
        MonkeyQuestConfig[MonkeyQuest.m_strPlayer].m_bObjectives = bOverviews;
        MonkeyQuest_Refresh();
        
        -- check for MonkeyBuddy
        if (MonkeyBuddyQuestFrame_Refresh ~= nil) then
                MonkeyBuddyQuestFrame_Refresh();
        end
end

function MonkeyQuestSlash_CmdHideHeaders(bHide)
        MonkeyQuestConfig[MonkeyQuest.m_strPlayer].m_bNoHeaders = bHide;
        MonkeyQuest_Refresh();
        
        -- check for MonkeyBuddy
        if (MonkeyBuddyQuestFrame_Refresh ~= nil) then
                MonkeyBuddyQuestFrame_Refresh();
        end
end

function MonkeyQuestSlash_CmdAlwaysHeaders(bAlways)
        MonkeyQuestConfig[MonkeyQuest.m_strPlayer].m_bAlwaysHeaders = bAlways;
        MonkeyQuest_Refresh();
        
        -- check for MonkeyBuddy
        if (MonkeyBuddyQuestFrame_Refresh ~= nil) then
                MonkeyBuddyQuestFrame_Refresh();
        end
end

function MonkeyQuestSlash_CmdHideBorder(bNoBorder)
        MonkeyQuestConfig[MonkeyQuest.m_strPlayer].m_bNoBorder = bNoBorder;
        
        if (bNoBorder == true) then
                MonkeyQuestFrame:SetBackdropBorderColor(0.0, 0.0, 0.0, 0.0);
        elseif (MonkeyQuestConfig[MonkeyQuest.m_strPlayer].m_bCrashBorder == true) then
                MonkeyQuestFrame:SetBackdropBorderColor(MONKEYQUEST_DEFAULT_CRASHCOLOUR.r, MONKEYQUEST_DEFAULT_CRASHCOLOUR.g, MONKEYQUEST_DEFAULT_CRASHCOLOUR.b, 1.0);
        else
                MonkeyQuestFrame:SetBackdropBorderColor(TOOLTIP_DEFAULT_COLOR.r, TOOLTIP_DEFAULT_COLOR.g, TOOLTIP_DEFAULT_COLOR.b, 1.0);
        end
        
        -- check for MonkeyBuddy
        if (MonkeyBuddyQuestFrame_Refresh ~= nil) then
                MonkeyBuddyQuestFrame_Refresh();
        end
end

function MonkeyQuestSlash_CmdGrowUp(bGrowUp)
        MonkeyQuestConfig[MonkeyQuest.m_strPlayer].m_bGrowUp = bGrowUp;
        
        -- check for MonkeyBuddy
        if (MonkeyBuddyQuestFrame_Refresh ~= nil) then
                MonkeyBuddyQuestFrame_Refresh();
        end
end

function MonkeyQuestSlash_CmdAlpha(iAlpha)
        if (iAlpha >= 0 and iAlpha <= 255) then
                MonkeyQuestConfig[MonkeyQuest.m_strPlayer].m_iAlpha = iAlpha / 255;
                MonkeyQuest_SetAlpha(MonkeyQuestConfig[MonkeyQuest.m_strPlayer].m_iAlpha);
        end
        
        -- check for MonkeyBuddy
        if (MonkeyBuddyQuestFrame_Refresh ~= nil) then
                MonkeyBuddyQuestFrame_Refresh();
        end
end

function MonkeyQuestSlash_CmdWidth(iWidth)
        if (iWidth >= 200 and iWidth <= 600) then
                MonkeyQuestConfig[MonkeyQuest.m_strPlayer].m_iFrameWidth = iWidth;
                MonkeyQuestFrame:SetWidth(MonkeyQuestConfig[MonkeyQuest.m_strPlayer].m_iFrameWidth);
                MonkeyQuest_Refresh();
        end
        
        -- check for MonkeyBuddy
        if (MonkeyBuddyQuestFrame_Refresh ~= nil) then
                MonkeyBuddyQuestFrame_Refresh();
        end
end

function MonkeyQuestSlash_CmdFontHeight(iHeight)
        if (iHeight >= 8 and iHeight <= 48) then
                MonkeyQuestConfig[MonkeyQuest.m_strPlayer].m_iFontHeight = iHeight;
                
                MonkeyQuest_Refresh();
                
                -- little fix for when changing the font size
                MonkeyQuestFrame:SetScale(2);
                MonkeyQuestFrame:SetScale(1);
        end
        
        -- check for MonkeyBuddy
        if (MonkeyBuddyQuestFrame_Refresh ~= nil) then
                MonkeyBuddyQuestFrame_Refresh();
        end
end

function MonkeyQuestSlash_CmdTipAnchor(strAnchor)
        if (strAnchor == nil) then
                MonkeyQuestConfig[MonkeyQuest.m_strPlayer].m_strAnchor = "DEFAULT";
                return;
        end
        
        -- let's check that it's a valid anchor before setting it
        if (string.upper(strAnchor) == "ANCHOR_TOPLEFT") then
                MonkeyQuestConfig[MonkeyQuest.m_strPlayer].m_strAnchor = string.upper(strAnchor);
                return;
        end
        if (string.upper(strAnchor) == "ANCHOR_TOPRIGHT") then
                MonkeyQuestConfig[MonkeyQuest.m_strPlayer].m_strAnchor = string.upper(strAnchor);
                return;
        end
        if (string.upper(strAnchor) == "ANCHOR_TOP") then
                MonkeyQuestConfig[MonkeyQuest.m_strPlayer].m_strAnchor = string.upper(strAnchor);
                return;
        end
        if (string.upper(strAnchor) == "ANCHOR_LEFT") then
                MonkeyQuestConfig[MonkeyQuest.m_strPlayer].m_strAnchor = string.upper(strAnchor);
                return;
        end
        if (string.upper(strAnchor) == "ANCHOR_RIGHT") then
                MonkeyQuestConfig[MonkeyQuest.m_strPlayer].m_strAnchor = string.upper(strAnchor);
                return;
        end
        if (string.upper(strAnchor) == "ANCHOR_BOTTOMLEFT") then
                MonkeyQuestConfig[MonkeyQuest.m_strPlayer].m_strAnchor = string.upper(strAnchor);
                return;
        end
        if (string.upper(strAnchor) == "ANCHOR_BOTTOMRIGHT") then
                MonkeyQuestConfig[MonkeyQuest.m_strPlayer].m_strAnchor = string.upper(strAnchor);
                return;
        end
        if (string.upper(strAnchor) == "ANCHOR_BOTTOM") then
                MonkeyQuestConfig[MonkeyQuest.m_strPlayer].m_strAnchor = string.upper(strAnchor);
                return;
        end
        if (string.upper(strAnchor) == "ANCHOR_CURSOR") then
                MonkeyQuestConfig[MonkeyQuest.m_strPlayer].m_strAnchor = string.upper(strAnchor);
                return;
        end
        if (string.upper(strAnchor) == "DEFAULT") then
                MonkeyQuestConfig[MonkeyQuest.m_strPlayer].m_strAnchor = string.upper(strAnchor);
                return;
        end
        if (string.upper(strAnchor) == "NONE") then
                MonkeyQuestConfig[MonkeyQuest.m_strPlayer].m_strAnchor = string.upper(strAnchor);
                return;
        end
        
        -- bad input or default, set it to the default position
        MonkeyQuestConfig[MonkeyQuest.m_strPlayer].m_strAnchor = "ANCHOR_TOPLEFT";
        
        -- check for MonkeyBuddy
        if (MonkeyBuddyQuestFrame_Refresh ~= nil) then
                MonkeyBuddyQuestFrame_Refresh();
        end
end

function MonkeyQuestSlash_CmdShowNumQuests(bShowNumQuests)
        MonkeyQuestConfig[MonkeyQuest.m_strPlayer].m_bShowNumQuests = bShowNumQuests;
        MonkeyQuest_Refresh();
        
        -- check for MonkeyBuddy
        if (MonkeyBuddyQuestFrame_Refresh ~= nil) then
                MonkeyBuddyQuestFrame_Refresh();
        end
end

function MonkeyQuestSlash_CmdLock(bLocked)
        MonkeyQuestConfig[MonkeyQuest.m_strPlayer].m_bLocked = bLocked;
        
        -- check for MonkeyBuddy
        if (MonkeyBuddyQuestFrame_Refresh ~= nil) then
                MonkeyBuddyQuestFrame_Refresh();
        end
end

function MonkeyQuestSlash_CmdColourTitleOn(bColourTitle)
        MonkeyQuestConfig[MonkeyQuest.m_strPlayer].m_bColourTitle = bColourTitle;
        MonkeyQuest_Refresh();
        
        -- check for MonkeyBuddy
        if (MonkeyBuddyQuestFrame_Refresh ~= nil) then
                MonkeyBuddyQuestFrame_Refresh();
        end
end

function MonkeyQuestSlash_CmdHideCompletedQuests(bHide)
        MonkeyQuestConfig[MonkeyQuest.m_strPlayer].m_bHideCompletedQuests = bHide;
        MonkeyQuest_Refresh();
        
        -- check for MonkeyBuddy
        if (MonkeyBuddyQuestFrame_Refresh ~= nil) then
                MonkeyBuddyQuestFrame_Refresh();
        end
end

function MonkeyQuestSlash_CmdHideCompletedObjectives(bHide)
        MonkeyQuestConfig[MonkeyQuest.m_strPlayer].m_bHideCompletedObjectives = bHide;
        MonkeyQuest_Refresh();
        
        -- check for MonkeyBuddy
        if (MonkeyBuddyQuestFrame_Refresh ~= nil) then
                MonkeyBuddyQuestFrame_Refresh();
        end
end

function MonkeyQuestSlash_CmdShowTooltipObjectives(bShow)
        MonkeyQuestConfig[MonkeyQuest.m_strPlayer].m_bShowTooltipObjectives = bShow;
        
        -- check for MonkeyBuddy
        if (MonkeyBuddyQuestFrame_Refresh ~= nil) then
                MonkeyBuddyQuestFrame_Refresh();
        end
end

function MonkeyQuestSlash_CmdAllowRightClick(bAllow)
        MonkeyQuestConfig[MonkeyQuest.m_strPlayer].m_bAllowRightClick = bAllow;
        
        -- check for MonkeyBuddy
        if (MonkeyBuddyQuestFrame_Refresh ~= nil) then
                MonkeyBuddyQuestFrame_Refresh();
        end
end

function MonkeyQuestSlash_CmdHideTitleButtons(bHide)
        MonkeyQuestConfig[MonkeyQuest.m_strPlayer].m_bHideTitleButtons = bHide;
        
        if (bHide == true) then
                MonkeyQuestCloseButton:Hide();
                MonkeyQuestMinimizeButton:Hide();
                MonkeyQuestShowHiddenCheckButton:Hide();
        else
                MonkeyQuestCloseButton:Show();
                MonkeyQuestMinimizeButton:Show();
                MonkeyQuestShowHiddenCheckButton:Show();
        end
        
        -- check for MonkeyBuddy
        if (MonkeyBuddyQuestFrame_Refresh ~= nil) then
                MonkeyBuddyQuestFrame_Refresh();
        end
end

function MonkeyQuestSlash_CmdHideTitle(bHide)
        MonkeyQuestConfig[MonkeyQuest.m_strPlayer].m_bHideTitle = bHide;
        MonkeyQuest_Refresh();

        -- check for MonkeyBuddy
        if (MonkeyBuddyQuestFrame_Refresh ~= nil) then
                MonkeyBuddyQuestFrame_Refresh();
        end
end

function MonkeyQuestSlash_ToggleDisplay()
        -- if not loaded yet then get out
        if (MonkeyQuest.m_bLoaded == false) then
                return;
        end

        if (MonkeyQuestConfig[MonkeyQuest.m_strPlayer].m_bDisplay) then
                MonkeyQuest_Hide();
        else
                MonkeyQuest_Show();
        end
        
        -- check for MonkeyBuddy
        if (MonkeyBuddyQuestFrame_Refresh ~= nil) then
                MonkeyBuddyQuestFrame_Refresh();
        end
end

function MonkeyQuestSlash_ToggleShowHidden()
        -- if not loaded yet then get out
        if (MonkeyQuest.m_bLoaded == false) then
                return;
        end

        MonkeyQuestConfig[MonkeyQuest.m_strPlayer].m_bShowHidden = not MonkeyQuestConfig[MonkeyQuest.m_strPlayer].m_bShowHidden;

        MonkeyQuest_Refresh();
        
        -- check for MonkeyBuddy
        if (MonkeyBuddyQuestFrame_Refresh ~= nil) then
                MonkeyBuddyQuestFrame_Refresh();
        end
end

function MonkeyQuestSlash_ToggleObjectives()
        -- if not loaded yet then get out
        if (MonkeyQuest.m_bLoaded == false) then
                return;
        end

        MonkeyQuestConfig[MonkeyQuest.m_strPlayer].m_bObjectives = not MonkeyQuestConfig[MonkeyQuest.m_strPlayer].m_bObjectives;

        MonkeyQuest_Refresh();
        
        -- check for MonkeyBuddy
        if (MonkeyBuddyQuestFrame_Refresh ~= nil) then
                MonkeyBuddyQuestFrame_Refresh();
        end
end

function MonkeyQuestSlash_ToggleAnchor()

        -- if not loaded yet then get out
        if (MonkeyQuest.m_bLoaded == false) then
                return;
        end

        if (MonkeyQuestConfig[MonkeyQuest.m_strPlayer].m_bDefaultAnchor == true) then
                MonkeyQuestConfig[MonkeyQuest.m_strPlayer].m_bDefaultAnchor = false;
                
        else
                if (MonkeyQuestConfig[MonkeyQuest.m_strPlayer].m_strAnchor == "ANCHOR_BOTTOMRIGHT") then
                        MonkeyQuestConfig[MonkeyQuest.m_strPlayer].m_strAnchor = "ANCHOR_BOTTOMLEFT";
                        
                elseif (MonkeyQuestConfig[MonkeyQuest.m_strPlayer].m_strAnchor == "ANCHOR_BOTTOMLEFT") then
                        MonkeyQuestConfig[MonkeyQuest.m_strPlayer].m_strAnchor = "ANCHOR_TOPLEFT";
                
                elseif (MonkeyQuestConfig[MonkeyQuest.m_strPlayer].m_strAnchor == "ANCHOR_TOPLEFT") then
                        MonkeyQuestConfig[MonkeyQuest.m_strPlayer].m_strAnchor = "ANCHOR_LEFT";
                        
                elseif (MonkeyQuestConfig[MonkeyQuest.m_strPlayer].m_strAnchor == "ANCHOR_LEFT") then
                        MonkeyQuestConfig[MonkeyQuest.m_strPlayer].m_strAnchor = "ANCHOR_CURSOR";
                        
                elseif (MonkeyQuestConfig[MonkeyQuest.m_strPlayer].m_strAnchor == "ANCHOR_CURSOR") then
                        MonkeyQuestConfig[MonkeyQuest.m_strPlayer].m_bDefaultAnchor = true;
                        MonkeyQuestConfig[MonkeyQuest.m_strPlayer].m_strAnchor = "ANCHOR_BOTTOMRIGHT";
                        
                end
        end
        
        -- check for MonkeyBuddy
        if (MonkeyBuddyQuestFrame_Refresh ~= nil) then
                MonkeyBuddyQuestFrame_Refresh();
        end
end

function MonkeyQuestSlash_Alpha(msg)
        -- if not loaded yet then get out
        if (MonkeyQuest.m_bLoaded == false) then
                return;
        end

        if (not(tonumber(msg, 10) == nil)) then
                MonkeyQuestConfig[MonkeyQuest.m_strPlayer].m_iAlpha = tonumber(msg, 10);
        else
                -- set it to the default
                MonkeyQuestConfig[MonkeyQuest.m_strPlayer].m_iAlpha = MONKEYQUEST_DEFAULT_ALPHA;
        end
        
        MonkeyQuest_SetAlpha(MonkeyQuestConfig[MonkeyQuest.m_strPlayer].m_iAlpha);
        
        -- check for MonkeyBuddy
        if (MonkeyBuddyQuestFrame_Refresh ~= nil) then
                MonkeyBuddyQuestFrame_Refresh();
        end
end

function MonkeyQuestSlash_Width(msg)
        -- if not loaded yet then get out
        if (MonkeyQuest.m_bLoaded == false) then
                return;
        end

        if (not(tonumber(msg, 10) == nil)) then
                MonkeyQuestConfig[MonkeyQuest.m_strPlayer].m_iFrameWidth = tonumber(msg, 10);
        else
                -- set it to the default
                MonkeyQuestConfig[MonkeyQuest.m_strPlayer].m_iFrameWidth = MONKEYQUEST_DEFAULT_WIDTH;
        end
        
        MonkeyQuest_Refresh();
        
        -- Let the user know they might have to reload the ui
        if (DEFAULT_CHAT_FRAME) then
                DEFAULT_CHAT_FRAME:AddMessage(MONKEYQUEST_SET_WIDTH_MSG);
        end
        
        -- check for MonkeyBuddy
        if (MonkeyBuddyQuestFrame_Refresh ~= nil) then
                MonkeyBuddyQuestFrame_Refresh();
        end
end

function MonkeyQuestSlash_ToggleNoHeaders()
        -- if not loaded yet then get out
        if (MonkeyQuest.m_bLoaded == false) then
                return;
        end

        MonkeyQuestConfig[MonkeyQuest.m_strPlayer].m_bNoHeaders = not MonkeyQuestConfig[MonkeyQuest.m_strPlayer].m_bNoHeaders;

        MonkeyQuest_Refresh();
        
        -- check for MonkeyBuddy
        if (MonkeyBuddyQuestFrame_Refresh ~= nil) then
                MonkeyBuddyQuestFrame_Refresh();
        end
end

function MonkeyQuestSlash_ToggleNoBorder()
        -- if not loaded yet then get out
        if (MonkeyQuest.m_bLoaded == false) then
                return;
        end

        MonkeyQuestConfig[MonkeyQuest.m_strPlayer].m_bNoBorder = not MonkeyQuestConfig[MonkeyQuest.m_strPlayer].m_bNoBorder;

        if (MonkeyQuestConfig[MonkeyQuest.m_strPlayer].m_bNoBorder == true) then
                MonkeyQuestFrame:SetBackdropBorderColor(0.0, 0.0, 0.0, 0.0);
        elseif (MonkeyQuestConfig[MonkeyQuest.m_strPlayer].m_bCrashBorder == false) then
                MonkeyQuestFrame:SetBackdropBorderColor(TOOLTIP_DEFAULT_COLOR.r, TOOLTIP_DEFAULT_COLOR.g, TOOLTIP_DEFAULT_COLOR.b, 1.0);
        else
                MonkeyQuestFrame:SetBackdropBorderColor(MONKEYQUEST_DEFAULT_CRASHCOLOUR.r, MONKEYQUEST_DEFAULT_CRASHCOLOUR.g, MONKEYQUEST_DEFAULT_CRASHCOLOUR.b, 1.0);
        end

        --MonkeyQuest_Refresh();
        
        -- check for MonkeyBuddy
        if (MonkeyBuddyQuestFrame_Refresh ~= nil) then
                MonkeyBuddyQuestFrame_Refresh();
        end
end

function MonkeyQuestSlash_ToggleGrow()
        -- if not loaded yet then get out
        if (MonkeyQuest.m_bLoaded == false) then
                return;
        end

        MonkeyQuestConfig[MonkeyQuest.m_strPlayer].m_bGrowUp = not MonkeyQuestConfig[MonkeyQuest.m_strPlayer].m_bGrowUp;

        MonkeyQuest_Refresh();
        
        -- check for MonkeyBuddy
        if (MonkeyBuddyQuestFrame_Refresh ~= nil) then
                MonkeyBuddyQuestFrame_Refresh();
        end
end

function MonkeyQuestSlash_CmdShowNoobTips(bShowNoobTips)
        MonkeyQuestConfig[MonkeyQuest.m_strPlayer].m_bShowNoobTips = bShowNoobTips;

        -- check for MonkeyBuddy
        if (MonkeyBuddyQuestFrame_Refresh ~= nil) then
                MonkeyBuddyQuestFrame_Refresh();
        end
end

function MonkeyQuestSlash_CmdSetQuestPadding(iPadding)
        MonkeyQuestConfig[MonkeyQuest.m_strPlayer].m_iQuestPadding = iPadding;

        local   i = 2;

        -- loop through ALL the quest button and apply the padding
        for i = 2, MONKEYQUEST_MAX_BUTTONS, 1 do
                getglobal("MonkeyQuestButton" .. i):SetPoint("TOPLEFT", "MonkeyQuestButton" .. (i - 1), "BOTTOMLEFT", 0, -iPadding);
        end

        -- resize MonkeyQuest
        MonkeyQuest_Resize();

        -- check for MonkeyBuddy
        if (MonkeyBuddyQuestFrame_Refresh ~= nil) then
                MonkeyBuddyQuestFrame_Refresh();
        end
end

function MonkeyQuestSlash_CmdShowZoneHighlight(bShowZoneHighlight)
        MonkeyQuestConfig[MonkeyQuest.m_strPlayer].m_bShowZoneHighlight = bShowZoneHighlight;

        MonkeyQuest_Refresh();

        -- check for MonkeyBuddy
        if (MonkeyBuddyQuestFrame_Refresh ~= nil) then
                MonkeyBuddyQuestFrame_Refresh();
        end
end

function MonkeyQuestSlash_CmdShowQuestLevel(bShowQuestLevel)
        MonkeyQuestConfig[MonkeyQuest.m_strPlayer].m_bShowQuestLevel = bShowQuestLevel;

        MonkeyQuest_Refresh();

        -- check for MonkeyBuddy
        if (MonkeyBuddyQuestFrame_Refresh ~= nil) then
                MonkeyBuddyQuestFrame_Refresh();
        end
end