vanilla-wow-addons – Rev 1

Subversion Repositories:
Rev:
--
--  AutoBar
--
--  Config functions
-- 
--  Author: Marc aka Saien on Hyjal
--  http://64.168.251.69/wow
--

UIPanelWindows["AutoBar_Options"] = { area = "center", pushable = 99, whileDead = 1 };

StaticPopupDialogs["AUTOBAR_ITEMENTRY"] = {
        text = "Enter Item Name or ItemID:",
        button1 = TEXT(ACCEPT),
        button2 = TEXT(CANCEL),
        hasEditBox = 1, 
        maxLetters = 50,
        hasWideEditBox = 1,
        OnAccept = function()
                local editBox = getglobal(this:GetParent():GetName().."WideEditBox");
                local text = editBox:GetText();
                if (tonumber(text) and tonumber(text) > 0) then
                        text = tonumber(text);
                end
                local tmp = AutoBar_Config[AutoBar_Player].buttons[AutoBar_Options_ConfigButton.editting];
                if (type(tmp) == "table") then
                        AutoBar_Config[AutoBar_Player].buttons[AutoBar_Options_ConfigButton.editting][AutoBar_Options_ConfigButton_ChooseCategory.editting] = text;
                else
                        AutoBar_Config[AutoBar_Player].buttons[AutoBar_Options_ConfigButton.editting] = text;
                end
                AutoBar_Options_ConfigButton_ChooseCategory:Hide();
        end,
        OnShow = function()
                local editBox = getglobal(this:GetName().."WideEditBox");
                local tmp = AutoBar_Config[AutoBar_Player].buttons[AutoBar_Options_ConfigButton.editting];
                local txt;
                if (type(tmp) == "table") then
                        txt = AutoBar_Config[AutoBar_Player].buttons[AutoBar_Options_ConfigButton.editting][AutoBar_Options_ConfigButton_ChooseCategory.editting];
                else
                        txt = AutoBar_Config[AutoBar_Player].buttons[AutoBar_Options_ConfigButton.editting];
                end
                if (txt) then
                        editBox:SetText(txt);
                else
                        editBox:SetText("");
                end
                editBox:SetFocus();
        end,
        OnHide = function()
                local editBox = getglobal(this:GetName().."WideEditBox");
                if (ChatFrameEditBox:IsVisible()) then 
                        ChatFrameEditBox:SetFocus();
                end
                editBox:SetText("");
        end,
        OnCancel = function()
                this:GetParent():Hide();
        end,
        EditBoxOnEnterPressed = function ()
                StaticPopupDialogs["AUTOBAR_ITEMENTRY"].OnAccept();
                this:GetParent():Hide();
        end,
        EditBoxOnEscapePressed = function ()
                this:GetParent():Hide();
        end,
        timeout = 0,
        whileDead = 1,
        hideOnEscape = 1
};

------------------------------------
------------------------------------
------------------------------------

local function AutoBar_Config_SlashCmd(msg)
        --[[
        msg = string.lower (msg);
        local firstword, restwords;
        local idx = string.find(msg," ");
        if (idx) then
                firstword = string.sub(msg,1,idx-1);
                restwords = string.sub(msg,idx+1);
        else
                firstword = msg;
        end
        ]]

        AutoBar_ToggleConfig();
end

------------------------------------

function AutoBar_Config_OnLoad()
        SLASH_AUTOBAR1 = "/autobar";
        SlashCmdList["AUTOBAR"] = function (msg)
                AutoBar_Config_SlashCmd(msg);
        end
end

function AutoBar_Config_OnShow()
        local idx,button,hotkey;
        for idx = 1, AUTOBAR_MAXBUTTONS, 1 do
                button = getglobal("AutoBar_Options_Buttons_Button"..idx);
                hotkey = getglobal("AutoBar_Options_Buttons_Button"..idx.."HotKey");
                count  = getglobal("AutoBar_Options_Buttons_Button"..idx.."Count");
                icon   = getglobal("AutoBar_Options_Buttons_Button"..idx.."Icon");
                hotkey:SetText("#"..idx);
                if (AutoBar_Config[AutoBar_Player].buttons[idx]) then
                        local buttoninfo = AutoBar_Config[AutoBar_Player].buttons[idx];
                        icon:SetTexture(AutoBar_GetTexture(buttoninfo));
                        count:SetText("");
                else
                        count:SetText("Empty");
                        icon:SetTexture("");
                end
        end
        AutoBar_Options_Bar_Sliders();
        AutoBar_Options_CheckBox_Setup();
end

function AutoBar_Config_ButtonSetTooltip()
        local buttoninfo;
        local preamble, extended;
        if (this.itemid) then
                local name,itemid = GetItemInfo(this.itemid);
                if (name and itemid) then
                        GameTooltip:SetOwner(this, "ANCHOR_RIGHT");
                        GameTooltip:SetHyperlink(itemid);
                else
                        local tmp = "item:"..this.itemid..":0:0:0";
                        GameTooltip:SetOwner(this, "ANCHOR_RIGHT");
                        GameTooltip:SetHyperlink("item:"..this.itemid..":0:0:0");
                end
                return;
        end
        if (this.category) then
                buttoninfo = this.category;
                extended=true;
        elseif (string.find(this:GetName(), "^AutoBar_Options_Buttons_Button")) then
                buttoninfo = AutoBar_Config[AutoBar_Player].buttons[this:GetID()];
                extended=true;
                preamble=true;
        elseif (string.find(this:GetName(), "^AutoBar_Options_ConfigButton_Button")) then
                extended=true;
                local tmp = AutoBar_Config[AutoBar_Player].buttons[AutoBar_Options_ConfigButton.editting];
                if (type(tmp) == "table") then
                        buttoninfo = tmp[this:GetID()]
                else
                        buttoninfo = tmp;
                end
        end
        local message = "";
        if (buttoninfo == "EMPTY") then
        elseif (type(buttoninfo) == "table") then
                if (preamble) then message = "Multi Category Button\n"; end
                local idx,cat;
                for idx,cat in buttoninfo do
                        if (type(cat) == "string" and AutoBar_Category_Info[cat]) then
                                message = message.."\n"..AutoBar_Category_Info[cat].description;
                        elseif (type(cat) == "number") then
                                local name = GetItemInfo(cat);
                                if (name) then
                                        message = message.."\n"..name.." (Custom Item by ID)";
                                else
                                        message = message.."\n(Item ID not recognized)";
                                end
                        else
                                message = message.."\n"..cat.." (Custom Item by Name)";
                        end
                end
        elseif (type(buttoninfo) == "string" and AutoBar_Category_Info[buttoninfo]) then
                if (preamble) then message = "Single Category Button\n\n"; end
                message = message..AutoBar_Category_Info[buttoninfo].description;
                if (extended) then
                        message = message.."\n";
                        if (AutoBar_Category_Info[buttoninfo].notusable) then
                                message = message.."\nNot directly usable.";
                        end
                        if (AutoBar_Category_Info[buttoninfo].targetted) then
                                if (AutoBar_Category_Info[buttoninfo].targetted == "WEAPON") then
                                        message = message.."\nWeapon Target\n(Left click main weapon\nRight click offhand weapon.)";
                                else
                                        message = message.."\nTargetted.";
                                end
                        end
                        if (AutoBar_Category_Info[buttoninfo].noncombat) then
                                message = message.."\nNon combat only.";
                        end
                        if (AutoBar_Category_Info[buttoninfo].combatonly) then
                                message = message.."\nCombat only.";
                        end
                        if (AutoBar_Category_Info[buttoninfo].location) then
                                message = message.."\nLocation: "..AutoBar_Category_Info[buttoninfo].location..".";
                        end
                        if (AutoBar_Category_Info[buttoninfo].limit) then
                                message = message.."\nLimited Usage: ";
                                if (AutoBar_Category_Info[buttoninfo].limit.downhp) then
                                        message = message.."Require HP restore";
                                        if (AutoBar_Category_Info[buttoninfo].limit.downmana) then
                                                message = message..", ";
                                        end
                                end
                                if (AutoBar_Category_Info[buttoninfo].limit.downmana) then
                                        message = message.."Require Mana restore";
                                end
                        end

                end
        elseif (type(buttoninfo) == "string" and not AutoBar_Category_Info[buttoninfo]) then
                if (preamble) then message = "Single Item Button\n\n"; end
                message = message..buttoninfo.." (Custom Item by Name)";
        elseif (type(buttoninfo) == "number") then
                if (preamble) then message = "Single Item Button\n\n"; end
                local name = GetItemInfo(buttoninfo);
                if (name) then
                        message = message..name.." (Custom Item by ID)";
                else
                        message = message.."(Item ID not recognized)";
                end
        end

        GameTooltip:SetOwner(this, "ANCHOR_RIGHT");
        GameTooltip:SetText(message);
end

function AutoBar_Config_Button_Edit(num)
        if (not num) then num = AutoBar_Options_ConfigButton.editting; end
        local buttoninfo = AutoBar_Config[AutoBar_Player].buttons[num];
        AutoBar_Options_ConfigButton.editting = num;
        AutoBar_Options_ConfigButton:Show();
        AutoBar_Options_ConfigButtonTitleText:SetText("Edit Button #"..num);
        local idx,tmp,i;
        ---
        if (type(buttoninfo) == "table") then
                tmp = 0;
                for idx = 1, 8, 1 do
                        if (AutoBar_Config[AutoBar_Player].buttons[num][idx]) then
                                tmp = idx;
                        end
                end
                idx = 1;
                while (idx < tmp) do 
                        if (AutoBar_Config[AutoBar_Player].buttons[num][idx]) then
                                idx = idx + 1;
                        else
                                AutoBar_Config[AutoBar_Player].buttons[num][idx] = 
                                AutoBar_Config[AutoBar_Player].buttons[num][idx+1];
                                AutoBar_Config[AutoBar_Player].buttons[num][idx+1] = nil;
                                tmp = 0;
                                for i = 1, 8, 1 do
                                        if (AutoBar_Config[AutoBar_Player].buttons[num][i]) then
                                                tmp = i;
                                        end
                                end
                        end
                end
        end
        ---
        for idx = 1, 8, 1 do
                local button   = getglobal("AutoBar_Options_ConfigButton_Button"..idx);
                local hotkey   = getglobal("AutoBar_Options_ConfigButton_Button"..idx.."HotKey");
                local count    = getglobal("AutoBar_Options_ConfigButton_Button"..idx.."Count");
                local icon     = getglobal("AutoBar_Options_ConfigButton_Button"..idx.."Icon");
                local move     = getglobal("AutoBar_Options_ConfigButton_Move"..idx);
                local moveup   = getglobal("AutoBar_Options_ConfigButton_Move"..idx.."_Up");
                local movedown = getglobal("AutoBar_Options_ConfigButton_Move"..idx.."_Down");
                local checkbox = getglobal("AutoBar_Options_ConfigButton_Option"..idx);
                local checkboxtext = getglobal("AutoBar_Options_ConfigButton_Option"..idx.."Text");

                hotkey:Hide();
                if (type(buttoninfo) == "table") then
                        if (buttoninfo[idx]) then
                                move:Show();
                                count:SetText("");
                                if (AutoBar_Category_Info[buttoninfo[idx]] and AutoBar_Category_Info[buttoninfo[idx]].targetted) then
                                        checkbox:Show();
                                        checkboxtext:SetText("Smart Self Cast");
                                        if (AutoBar_Config[AutoBar_Player].smartselfcast and AutoBar_Config[AutoBar_Player].smartselfcast[buttoninfo[idx]]) then
                                                checkbox:SetChecked(1);
                                        else
                                                checkbox:SetChecked(0);
                                        end
                                else
                                        checkbox:Hide();
                                end
                                if (idx == 1) then
                                        moveup:Hide();
                                else
                                        moveup:Show();
                                end
                                if (buttoninfo[idx+1]) then
                                        movedown:Show();
                                else
                                        movedown:Hide();
                                end
                        else
                                move:Hide();
                                count:SetText("Empty");
                                checkbox:Hide();
                        end
                        icon:SetTexture(AutoBar_GetTexture(buttoninfo[idx]));
                        button:Show();
                else
                        move:Hide();
                        if (idx == 1) then
                                icon:SetTexture(AutoBar_GetTexture(buttoninfo));
                                button:Show();
                                if (buttoninfo) then
                                        count:SetText("");
                                        if (AutoBar_Category_Info[buttoninfo] and AutoBar_Category_Info[buttoninfo].targetted) then
                                                checkbox:Show();
                                                checkboxtext:SetText("Smart Self Cast");
                                                if (AutoBar_Config[AutoBar_Player].smartselfcast and AutoBar_Config[AutoBar_Player].smartselfcast[buttoninfo]) then
                                                        checkbox:SetChecked(1);
                                                else
                                                        checkbox:SetChecked(0);
                                                end
                                        else
                                                checkbox:Hide();
                                        end
                                else
                                        count:SetText("Empty");
                                        checkbox:Hide();
                                end
                        else
                                button:Hide();
                                checkbox:Hide();
                        end
                end
        end
        ---
        if (type(buttoninfo) == "table") then
                AutoBar_Options_ConfigButton_ConvertButton:SetText("Convert to Single Item");
        else
                AutoBar_Options_ConfigButton_ConvertButton:SetText("Convert to Multi Item");
        end
end

local function AutoBar_ConfigButton_OnClick(mousebutton)
        local tmp = AutoBar_Config[AutoBar_Player].buttons[AutoBar_Options_ConfigButton.editting];
        if (type(tmp) == "table") then
                AutoBar_Options_ConfigButton_ChooseCategory.editting = this:GetID();
        else
                AutoBar_Options_ConfigButton_ChooseCategory.editting = nil;
        end
        AutoBar_Options_ConfigButton_ChooseCategory:Show();
end

local function AutoBar_ConfigButton_ChooseCategory_OnClick(mousebutton)
        if (IsShiftKeyDown()) then
                if (AutoBar_Options_ConfigButton_ChooseCategory.categoryexplore) then
                        AutoBar_Options_ConfigButton_ChooseCategory.categoryexplore = nil;
                        this:GetParent():Hide();
                else
                        local category = this.category;
                        if (category == "EMPTY") then category = nil; end
                        if (category) then
                                AutoBar_Options_ConfigButton_ChooseCategory.categoryexplore = category;
                                AutoBar_Config_ButtonChooseCategory_OnShow();
                        end
                end
        else
                local category = this.category;
                if (category == "EMPTY") then category = nil; end
                if (AutoBar_Options_ConfigButton_ChooseCategory.editting) then
                        AutoBar_Config[AutoBar_Player].buttons[AutoBar_Options_ConfigButton.editting][AutoBar_Options_ConfigButton_ChooseCategory.editting] = category;
                else
                        AutoBar_Config[AutoBar_Player].buttons[AutoBar_Options_ConfigButton.editting] = category;
                end
                AutoBar_Options_ConfigButton_ChooseCategory.categoryexplore = nil;
                this:GetParent():Hide();
        end
end
        
function AutoBar_Config_ButtonOnClick(mousebutton)
        if (string.find(this:GetName(), "^AutoBar_Options_Buttons_Button")) then
                return AutoBar_Config_Button_Edit(this:GetID());
        elseif (string.find(this:GetName(), "^AutoBar_Options_ConfigButton_Button")) then
                return AutoBar_ConfigButton_OnClick(mousebutton);
        elseif (string.find(this:GetName(), "^AutoBar_Options_ConfigButton_ChooseCategory_Button")) then
                return AutoBar_ConfigButton_ChooseCategory_OnClick(mousebutton);
        end
end

function AutoBar_Config_Button_ConvertOnClick()
        local buttoninfo = AutoBar_Config[AutoBar_Player].buttons[AutoBar_Options_ConfigButton.editting];
        if (type(buttoninfo) == "table") then
                local tmp = buttoninfo[1];
                AutoBar_Config[AutoBar_Player].buttons[AutoBar_Options_ConfigButton.editting] = tmp;
        else
                local tmp = buttoninfo;
                AutoBar_Config[AutoBar_Player].buttons[AutoBar_Options_ConfigButton.editting] = { tmp };
        end
        AutoBar_Config_Button_Edit(AutoBar_Options_ConfigButton.editting);
end

function AutoBar_Config_ButtonChooseCategory_OnShow()
        if (AutoBar_Options_ConfigButton_ChooseCategory.categoryexplore and not AutoBar_Category_Info[AutoBar_Options_ConfigButton_ChooseCategory.categoryexplore]) then
                AutoBar_Options_ConfigButton_ChooseCategory.categoryexplore = nil;
        end
        if (AutoBar_Options_ConfigButton_ChooseCategory.categoryexplore) then
                AutoBar_Options_ConfigButton_ChooseCategory_HintText1:Hide();
                local category = AutoBar_Options_ConfigButton_ChooseCategory.categoryexplore;

                FauxScrollFrame_Update(AutoBar_Options_ConfigButton_ChooseCategory_Scroll, table.getn(AutoBar_Category_Info[category].items), 7, 36);
                local offset = FauxScrollFrame_GetOffset(AutoBar_Options_ConfigButton_ChooseCategory_Scroll);
                local idx,name,texture;
                for idx = 1, 7, 1 do
                        local button = getglobal("AutoBar_Options_ConfigButton_ChooseCategory_Button"..idx);
                        local hotkey = getglobal("AutoBar_Options_ConfigButton_ChooseCategory_Button"..idx.."HotKey");
                        local count  = getglobal("AutoBar_Options_ConfigButton_ChooseCategory_Button"..idx.."Count");
                        local icon   = getglobal("AutoBar_Options_ConfigButton_ChooseCategory_Button"..idx.."Icon");
                        local text   = getglobal("AutoBar_Options_ConfigButton_ChooseCategory_Text"..idx);
                        button.category = nil;
                        if (AutoBar_Category_Info[category].items[idx+offset]) then
                                if (type(AutoBar_Category_Info[category].items[idx+offset]) == "number") then
                                        name,_,_,_,_,_,_,_,texture = GetItemInfo(AutoBar_Category_Info[category].items[idx+offset]);
                                        if (not name) then
                                                name = "(Not Found: Item "..AutoBar_Category_Info[category].items[idx+offset]..")";
                                                texture = "Interface\\Icons\\INV_Misc_Gift_01";
                                        elseif (not texture) then
                                                texture = "Interface\\Icons\\INV_Misc_Gift_02";
                                        end
                                else
                                        texture = "Interface\\Icons\\INV_Misc_Gift_03";
                                        name = AutoBar_Category_Info[category].items[idx+offset];
                                end
                                icon:SetTexture(texture);
                                text:SetText(name);
                                count:SetText("");
                                button:Show();
                                button.itemid = tonumber(AutoBar_Category_Info[category].items[idx+offset]);
                        else
                                button:Hide();
                                button.itemid = nil;
                                text:SetText("");
                        end
                end
        else
                AutoBar_Options_ConfigButton_ChooseCategory_HintText1:Show();
                local sortedCategories = {};
                for categoryName, rec in AutoBar_Category_Info do
                        table.insert(sortedCategories, categoryName);
                end
                table.sort (sortedCategories);
                table.insert(sortedCategories, 1, "EMPTY");
                FauxScrollFrame_Update(AutoBar_Options_ConfigButton_ChooseCategory_Scroll, table.getn(sortedCategories), 7, 36);
                local offset = FauxScrollFrame_GetOffset(AutoBar_Options_ConfigButton_ChooseCategory_Scroll);
                local idx;
                for idx = 1, 7, 1 do
                        local button = getglobal("AutoBar_Options_ConfigButton_ChooseCategory_Button"..idx);
                        local hotkey = getglobal("AutoBar_Options_ConfigButton_ChooseCategory_Button"..idx.."HotKey");
                        local count  = getglobal("AutoBar_Options_ConfigButton_ChooseCategory_Button"..idx.."Count");
                        local icon   = getglobal("AutoBar_Options_ConfigButton_ChooseCategory_Button"..idx.."Icon");
                        local text   = getglobal("AutoBar_Options_ConfigButton_ChooseCategory_Text"..idx);
                        button.itemid = nil;
                        if (sortedCategories[idx+offset] == "EMPTY") then
                                icon:SetTexture("");
                                count:SetText("Empty");
                                text:SetText("Delete Current Category");
                                button:Show();
                                button.category = sortedCategories[idx+offset];
                        elseif (sortedCategories[idx+offset]) then
                                icon:SetTexture(AutoBar_GetTexture(sortedCategories[idx+offset]));
                                count:SetText("");
                                text:SetText(AutoBar_Category_Info[sortedCategories[idx+offset]].description);
                                button.category = sortedCategories[idx+offset];
                                button:Show();
                        else
                                button:Hide();
                                button.category = nil;
                                text:SetText("");
                        end
                end
        end
end

function AutoBar_Config_ButtonChooseCategory_OnScroll()
        GameTooltip:Hide();
        AutoBar_Config_ButtonChooseCategory_OnShow();
end

function AutoBar_Config_Button_InsertCustomItem()
        StaticPopup_Show("AUTOBAR_ITEMENTRY");
end

function AutoBar_Options_Bar_Sliders(calledfromslider)
        if (not AutoBar_Config[AutoBar_Player].display) then
                AutoBar_Config[AutoBar_Player].display = {}; 
        end
        --
        local rows, columns, gapping, alpha, width, height, dockshiftx, dockshifty;
        if (calledfromslider) then
                rows    = AutoBar_Options_Bar_Rows:GetValue();
                columns = AutoBar_Options_Bar_Columns:GetValue();
                gapping = AutoBar_Options_Bar_Gapping:GetValue();
                alpha   = AutoBar_Options_Bar_Alpha:GetValue();
                width   = AutoBar_Options_Bar_ButtonWidth:GetValue();
                height  = AutoBar_Options_Bar_ButtonHeight:GetValue();
                dockshiftx = AutoBar_Options_Bar_DockShiftX:GetValue();
                dockshifty = AutoBar_Options_Bar_DockShiftY:GetValue();
        end
        --
        if ((not rows or rows == 0) and AutoBar_Config[AutoBar_Player].display.rows) then 
                rows = AutoBar_Config[AutoBar_Player].display.rows;
        elseif (not rows or rows == 0) then 
                rows = 1; 
        end
        if ((not columns or columns == 0) and AutoBar_Config[AutoBar_Player].display.columns) then 
                columns = AutoBar_Config[AutoBar_Player].display.columns;
        elseif (not columns or columns == 0) then 
                columns = 6; 
        end
        if ((not gapping or gapping == 0) and AutoBar_Config[AutoBar_Player].display.gapping) then 
                gapping = AutoBar_Config[AutoBar_Player].display.gapping;
        elseif (not gapping or gapping == 0) then 
                gapping = 6; 
        end
        if ((not alpha or alpha == 0) and AutoBar_Config[AutoBar_Player].display.alpha) then 
                alpha = AutoBar_Config[AutoBar_Player].display.alpha*10;
        elseif (not alpha or alpha == 0) then 
                alpha = 10; 
        end
        if ((not width or width == 0) and AutoBar_Config[AutoBar_Player].display.buttonwidth) then 
                width = AutoBar_Config[AutoBar_Player].display.buttonwidth;
        elseif (not width or width == 0) then 
                width = 36; 
        end
        if ((not height or height == 0) and AutoBar_Config[AutoBar_Player].display.buttonheight) then 
                height = AutoBar_Config[AutoBar_Player].display.buttonheight;
        elseif (not height or height == 0) then 
                height = 36; 
        end
        if ((not dockshiftx or dockshiftx == 0) and AutoBar_Config[AutoBar_Player].display.dockshiftx) then 
                dockshiftx = AutoBar_Config[AutoBar_Player].display.dockshiftx;
        elseif (not dockshiftx or dockshiftx == 0) then 
                dockshiftx = 0; 
        end
        if ((not dockshifty or dockshifty == 0) and AutoBar_Config[AutoBar_Player].display.dockshifty) then 
                dockshifty = AutoBar_Config[AutoBar_Player].display.dockshifty;
        elseif (not dockshifty or dockshifty == 0) then 
                dockshifty = 0; 
        end
        --
        if (calledfromslider) then
                while (rows*columns > 12) do
                        this:SetValue(this:GetValue()-1);
                        rows = AutoBar_Options_Bar_Rows:GetValue();
                        columns = AutoBar_Options_Bar_Columns:GetValue();
                end
                if (height ~= width and not AutoBar_Config[AutoBar_Player].display.unlockbuttonratio) then
                        if (this:GetName() == "AutoBar_Options_Bar_ButtonWidth") then
                                height = width;
                        elseif (this:GetName() == "AutoBar_Options_Bar_ButtonHeight") then
                                width = height;
                        end
                end
                --
                if (rows == 1) then
                        AutoBar_Config[AutoBar_Player].display.rows = nil;
                else
                        AutoBar_Config[AutoBar_Player].display.rows = rows;
                end
                if (columns == 6) then
                        AutoBar_Config[AutoBar_Player].display.columns = nil;
                else
                        AutoBar_Config[AutoBar_Player].display.columns = columns;
                end
                if (gapping == 6) then
                        AutoBar_Config[AutoBar_Player].display.gapping = nil;
                else
                        AutoBar_Config[AutoBar_Player].display.gapping = gapping;
                end
                if (alpha == 10) then
                        AutoBar_Config[AutoBar_Player].display.alpha = nil;
                else
                        AutoBar_Config[AutoBar_Player].display.alpha = math.floor(alpha)/10;
                end
                if (width == 36) then
                        AutoBar_Config[AutoBar_Player].display.buttonwidth = nil;
                else
                        AutoBar_Config[AutoBar_Player].display.buttonwidth = width;
                end
                if (height == 36) then
                        AutoBar_Config[AutoBar_Player].display.buttonheight = nil;
                else
                        AutoBar_Config[AutoBar_Player].display.buttonheight = height;
                end
                if (dockshiftx == 0) then
                        AutoBar_Config[AutoBar_Player].display.dockshiftx = nil;
                else
                        AutoBar_Config[AutoBar_Player].display.dockshiftx = dockshiftx;
                end
                if (dockshifty == 0) then
                        AutoBar_Config[AutoBar_Player].display.dockshifty = nil;
                else
                        AutoBar_Config[AutoBar_Player].display.dockshifty = dockshifty;
                end
        end
        --
        AutoBar_Options_Bar_RowsText:SetText("Rows - "..rows);
        AutoBar_Options_Bar_Rows:SetValue(rows);
        AutoBar_Options_Bar_ColumnsText:SetText("Columns - "..columns);
        AutoBar_Options_Bar_Columns:SetValue(columns);
        AutoBar_Options_Bar_GappingText:SetText("Icon Gapping - "..gapping);
        AutoBar_Options_Bar_Gapping:SetValue(gapping);
        AutoBar_Options_Bar_AlphaText:SetText("Icon Alpha - "..math.floor(alpha)/10);
        AutoBar_Options_Bar_Alpha:SetValue(alpha);
        AutoBar_Options_Bar_ButtonWidthText:SetText("Button Width - "..width);
        AutoBar_Options_Bar_ButtonWidth:SetValue(width);
        AutoBar_Options_Bar_ButtonHeightText:SetText("Button Height - "..height);
        AutoBar_Options_Bar_ButtonHeight:SetValue(height);
        AutoBar_Options_Bar_DockShiftXText:SetText("Shift Dock Left/Right - "..dockshiftx);
        AutoBar_Options_Bar_DockShiftX:SetValue(dockshiftx);
        AutoBar_Options_Bar_DockShiftYText:SetText("Shift Dock Up/Down - "..dockshifty);
        AutoBar_Options_Bar_DockShiftY:SetValue(dockshifty);

        AutoBar_SetupVisual();
end

function AutoBar_Options_CheckBox_Setup()
        AutoBar_Options_Bar_DockingMainBarText:SetText("Docked to Main Menu");
        AutoBar_Options_Bar_WidthHeightLockedText:SetText("Lock Button Height\nand Width Together");
        AutoBar_Options_Bar_ReverseButtonsText:SetText("Reverse Buttons");
        AutoBar_Options_Bar_HideKeyTextText:SetText("Hide Keybinding Text");
        AutoBar_Options_Bar_HideCountText:SetText("Hide Count text");
        AutoBar_Options_Bar_ShowEmptyButtonsText:SetText("Show Empty Buttons");
        if (AutoBar_Config[AutoBar_Player].display.docking == "MAINMENU") then
                AutoBar_Options_Bar_DockingMainBar:SetChecked(1);
        else
                AutoBar_Options_Bar_DockingMainBar:SetChecked(0);
        end
        if (AutoBar_Config[AutoBar_Player].display.unlockbuttonratio) then
                AutoBar_Options_Bar_WidthHeightLocked:SetChecked(0);
        else
                AutoBar_Options_Bar_WidthHeightLocked:SetChecked(1);
        end
        if (AutoBar_Config[AutoBar_Player].display.reversebuttons) then
                AutoBar_Options_Bar_ReverseButtons:SetChecked(1);
        else
                AutoBar_Options_Bar_ReverseButtons:SetChecked(0);
        end
        if (AutoBar_Config[AutoBar_Player].display.hidekeytext) then
                AutoBar_Options_Bar_HideKeyText:SetChecked(1);
        else
                AutoBar_Options_Bar_HideKeyText:SetChecked(0);
        end
        if (AutoBar_Config[AutoBar_Player].display.hidecount) then
                AutoBar_Options_Bar_HideCount:SetChecked(1);
        else
                AutoBar_Options_Bar_HideCount:SetChecked(0);
        end
        if (AutoBar_Config[AutoBar_Player].display.showemptybuttons) then
                AutoBar_Options_Bar_ShowEmptyButtons:SetChecked(1);
        else
                AutoBar_Options_Bar_ShowEmptyButtons:SetChecked(0);
        end
end

function AutoBar_Options_CheckBox_OnCheck()
        local button = this:GetName(); 
        if (this:GetChecked()) then
                if (button == "AutoBar_Options_Bar_DockingMainBar") then
                        AutoBar_Config[AutoBar_Player].display.docking = "MAINMENU";
                elseif (button == "AutoBar_Options_Bar_WidthHeightLocked") then
                        AutoBar_Config[AutoBar_Player].display.unlockbuttonratio = nil;
                elseif (button == "AutoBar_Options_Bar_ReverseButtons") then
                        AutoBar_Config[AutoBar_Player].display.reversebuttons = 1;
                elseif (button == "AutoBar_Options_Bar_HideKeyText") then
                        AutoBar_Config[AutoBar_Player].display.hidekeytext = 1;
                elseif (button == "AutoBar_Options_Bar_HideCount") then
                        AutoBar_Config[AutoBar_Player].display.hidecount = 1;
                elseif (button == "AutoBar_Options_Bar_ShowEmptyButtons") then
                        AutoBar_Config[AutoBar_Player].display.showemptybuttons = 1;
                end
        else
                if (button == "AutoBar_Options_Bar_DockingMainBar") then
                        AutoBar_Config[AutoBar_Player].display.docking = nil;
                elseif (button == "AutoBar_Options_Bar_WidthHeightLocked") then
                        AutoBar_Config[AutoBar_Player].display.unlockbuttonratio = 1;
                elseif (button == "AutoBar_Options_Bar_ReverseButtons") then
                        AutoBar_Config[AutoBar_Player].display.reversebuttons = nil;
                elseif (button == "AutoBar_Options_Bar_HideKeyText") then
                        AutoBar_Config[AutoBar_Player].display.hidekeytext = nil;
                elseif (button == "AutoBar_Options_Bar_HideCount") then
                        AutoBar_Config[AutoBar_Player].display.hidecount = nil;
                elseif (button == "AutoBar_Options_Bar_ShowEmptyButtons") then
                        AutoBar_Config[AutoBar_Player].display.showemptybuttons = nil;
                end
        end
        AutoBar_Options_CheckBox_Setup();
        AutoBar_SetupVisual();
end

function AutoBar_Options_ConfigButton_Option_OnCheck()
        local num = AutoBar_Options_ConfigButton.editting; 
        local buttoninfo = AutoBar_Config[AutoBar_Player].buttons[num];
        local category;
        if (type(buttoninfo) == "table") then
                category = buttoninfo[this:GetID()];
        else
                category = buttoninfo;
        end
        if (not AutoBar_Config[AutoBar_Player].smartselfcast) then
                AutoBar_Config[AutoBar_Player].smartselfcast = {};
        end
        AutoBar_Config[AutoBar_Player].smartselfcast[category] = this:GetChecked();
        AutoBar_Config_Button_Edit();
end

function AutoBar_Options_MoveArrow_OnClick(buttonnum, direction)
        local primarybutton = AutoBar_Options_ConfigButton.editting;
        local tmp;
        if (type(AutoBar_Config[AutoBar_Player].buttons[primarybutton]) == "table") then
                if (direction == "UP") then
                        tmp = AutoBar_Config[AutoBar_Player].buttons[primarybutton][buttonnum-1];
                        AutoBar_Config[AutoBar_Player].buttons[primarybutton][buttonnum-1] = 
                        AutoBar_Config[AutoBar_Player].buttons[primarybutton][buttonnum];
                        AutoBar_Config[AutoBar_Player].buttons[primarybutton][buttonnum] = tmp;
                elseif (direction == "DOWN") then
                        tmp = AutoBar_Config[AutoBar_Player].buttons[primarybutton][buttonnum+1];
                        AutoBar_Config[AutoBar_Player].buttons[primarybutton][buttonnum+1] = 
                        AutoBar_Config[AutoBar_Player].buttons[primarybutton][buttonnum];
                        AutoBar_Config[AutoBar_Player].buttons[primarybutton][buttonnum] = tmp;
                end
        end
        AutoBar_Config_Button_Edit(primarybutton);
end

------------------------------------

function AutoBar_ToggleConfig()
        if (AutoBar_Options:IsVisible()) then
                HideUIPanel(AutoBar_Options);
        else
                ShowUIPanel(AutoBar_Options);
        end
end