vanilla-wow-addons – Rev 1

Subversion Repositories:
Rev:
function BEBOptions_LoadDefaults()
        if ( not BEBINITIALIZED ) then
                BEBConfigFrame:Hide();
                return;
        end
        BEBSettings[BEB_INDEX] = nil
        BEB_DefaultSettings()
        BEB_SetupBars()
        BEB_UpdateBars()
        BEB_Feedback("BEB Defaults Loaded")
        BEBOptions_OnShow(BEBCurrentFrame)
end

function BEBOptions_SelectFrame()
        if ( not BEBINITIALIZED ) then
                this:GetParent():Hide();
                return;
        end
        local frames = {"BEBConfigGeneralFrame", "BEBConfigPlacementFrame", "BEBConfigColorsFrame"}
        for _,v in frames do
                getglobal(v):Hide()
        end
        BEBCurrentFrame = this.index
        getglobal("BEBConfig"..this.index.."Frame"):Show()
end

function BEBOptions_CheckButton_OnClick()
        if ( not BEBINITIALIZED ) then
                this:GetParent():Hide();
                return;
        end
        if (this == BEBEnabledButton) then
                BEBSettings[BEB_INDEX].Disabled = (not this:GetChecked());
                if (BEBSettings[BEB_INDEX].Disabled) then
                        BEBOptions_DisableAddon()
                else
                        BEBOptions_EnableAddon()
                end
        else
                if (this.notindex) then
                        BEBSettings[BEB_INDEX][this.notindex] = (not this:GetChecked())
                else
                        BEBSettings[BEB_INDEX][this.index] = (not(not this:GetChecked()))
                end
        end
        if (this == BEBFlashHighlightButton) then
                BEBRestedXpTickGlowTexture:SetAlpha(1);
                BEB_OnEvent("PLAYER_UPDATE_RESTING")
        elseif (this == BEBShowXpTextButton) then
                if (BEBSettings[BEB_INDEX].XpTextOnMouseOver) then
                        BEB_Feedback(BEB_TEXT.optionstextwasmouseover)
                        BEBSettings[BEB_INDEX].XpTextOnMouseOver = false
                        BEBTextOnMouseoverButton:SetChecked(false);
                end
        elseif (this == BEBTextOnMouseoverButton) then
                if (BEBSettings[BEB_INDEX].XpTextHide) then
                        BEB_Feedback(BEB_TEXT.optionstextwashidden)
                        BEBSettings[BEB_INDEX].XpTextHide = false
                        BEBShowXpTextButton:SetChecked(true);
                end
        end
        BEB_SetupBars()
        BEB_UpdateBars()
end

function BEBOptions_ColorPicker_OnClick()
        if (ColorPickerFrame:IsShown()) then
                BEB_ColorPicker_Cancelled(ColorPickerFrame.previousValues)
                ColorPickerFrame:Hide()
        else
                local Red, Green, Blue, Alpha
                Red, Green, Blue, Alpha = unpack(BEBSettings[BEB_INDEX][this.objindex][this.whenindex])
                ColorPickerFrame.previousValues = {Red, Green, Blue, Alpha};
                ColorPickerFrame.cancelFunc = BEB_ColorPicker_Cancelled;
                ColorPickerFrame.opacityFunc = BEB_ColorPicker_OpacityChanged;
                ColorPickerFrame.func = BEB_ColorPicker_ColorChanged;
                ColorPickerFrame.index = this:GetName().."Texture";
                ColorPickerFrame.objindex = this.objindex
                ColorPickerFrame.whenindex = this.whenindex
                ColorPickerFrame.hasOpacity = true;
                ColorPickerFrame.opacity = Alpha;
                ColorPickerFrame:SetColorRGB(Red, Green, Blue);
                ColorPickerFrame:ClearAllPoints();
                local x = BEBConfigFrame:GetCenter()
                if (x < UIParent:GetWidth() / 2) then
                        ColorPickerFrame:SetPoint("LEFT", "BEBConfigFrame", "RIGHT", 0, 0);
                else
                        ColorPickerFrame:SetPoint("RIGHT", "BEBConfigFrame", "LEFT", 0, 0);
                end
                ColorPickerFrame:Show();
        end
end

function BEB_ColorPicker_Cancelled(color)
        BEBSettings[BEB_INDEX][ColorPickerFrame.objindex][ColorPickerFrame.whenindex] = color
        BEBOptions_OnShow(BEBCurrentFrame)
end

function BEB_ColorPicker_ColorChanged()
        local r, g, b = ColorPickerFrame:GetColorRGB()
        local a = OpacitySliderFrame:GetValue()
        getglobal(ColorPickerFrame.index):SetVertexColor(r,g,b,a)
        if (not ColorPickerFrame:IsShown()) then
                BEBSettings[BEB_INDEX][ColorPickerFrame.objindex][ColorPickerFrame.whenindex] = {r,g,b,a}
                BEB_SetupBars()
                BEB_UpdateBars()
                BEB_OnEvent("PLAYER_UPDATE_RESTING")
                BEB_OnEvent("UPDATE_EXHAUSTION")
        end
end
function BEB_ColorPicker_OpacityChanged()
        local r, g, b = ColorPickerFrame:GetColorRGB()
        local a = OpacitySliderFrame:GetValue()
        getglobal(ColorPickerFrame.index):SetVertexColor(r, g, b, a)
end

function BEBOptions_SliderOnChange()
        local value = this:GetValue()
        getglobal(this:GetName().."_EditBox"):SetText(value)
        BEBSettings[BEB_INDEX][this.objindex][this.whatindex][this.axisindex] = value
        BEB_SetupBars()
        BEB_UpdateBars()
        if ((this==BEBFontHeightSlider) and (BEBSettings[BEB_INDEX].XpTextOnMouseOver)) then
                BEBXpFontstring:Show()
                BEBTextTimeToHide = 2
        end
end
function BEBOptions_SliderEditBox_OnValueChange()
        local value = this:GetNumber()
        local slidervalue = this:GetParent():GetValue(value)
        if (value ~= slidervalue) then
                this:GetParent():SetValue(value)
        end
end

function BEBOptions_OnShow(frame)
        if ( not BEBINITIALIZED ) then
                if (BEBSettings[BEB_INDEX].Disabled) then
                        BEBEnableFrame:Show()
                end
                BEBConfigFrame:Hide();
                return;
        end
        if (BEBSettings[BEB_INDEX].Disabled) then
                BEBEnableFrame:Show()
                BEBConfigFrame:Hide();
        end
        if (frame == "Options") then
                local selectors = {"BEBGeneralSelector", "BEBColorsSelector", "BEBPlacementSelector"}
                for _,v in selectors do
                        getglobal(v):SetText(BEB_SELECTOR_LABELS[v])
                end
                local frames = {"BEBConfigGeneralFrame", "BEBConfigPlacementFrame", "BEBConfigColorsFrame"}
                for _,v in frames do
                        getglobal(v):Hide()
                end
                getglobal("BEBConfig"..BEBCurrentFrame.."Frame"):Show()
        elseif (frame == "General") then
                local buttons = {"BEBEnabledButton", "BEBShowMarksButton", "BEBShowXpTicksButton", "BEBShowRestedXpTicksButton", "BEBShowBackgroundButton", "BEBShowXpTextButton", "BEBFlashHighlightButton", "BEBTextOnMouseoverButton", "BEBShowRestedBarButton", "BEBUnlockBarButton"}
                for _,v in buttons do
                        local button = getglobal(v)
                        if (button.notindex) then
                                button:SetChecked(not BEBSettings[BEB_INDEX][button.notindex])
                        else
                                button:SetChecked(BEBSettings[BEB_INDEX][button.index])
                        end
                        getglobal(v.."Text"):SetText(BEB_CHECKBUTTONLABELS[v])
                        getglobal(v.."Text"):SetWidth(105);
                        getglobal(v.."Text"):SetJustifyH("LEFT");
                end
                BEB_TextStringFrame_Label:SetText(BEB_HEADINGS.BEB_TextStringFrame_Label)
                BEB_TextStringFrameEditBox:SetText(BEBSettings[BEB_INDEX].BarText.text.string)
                BEBGeneralSelector:LockHighlight()
                BEBColorsSelector:UnlockHighlight()
                BEBPlacementSelector:UnlockHighlight()
        elseif (frame == "Colors") then
                local headings = {"BEBXpBarHeading", "BEBRestedBarHeading", "BEBMarkerHeading", "BEBTickHeading", "BEBRestedTickHeading", "BEBBarTextHeading"}
                local buttons = {"BEBBackgroundColorButton", "BEBXpUnrestedColorButton", "BEBXpRestedColorButton", "BEBXpMaxRestedColorButton", "BEBRestedBarColorButton", "BEBRestedBarMaxColorButton", "BEBMarkerUnrestColorButton", "BEBMarkerRestColorButton", "BEBMarkerMaxrestColorButton", "BEBTickUnrestColorButton", "BEBTickRestColorButton", "BEBTickMaxrestColorButton", "BEBRestedTickRestColorButton", "BEBRestedTickMaxrestColorButton", "BEBBarTextUnrestColorButton", "BEBBarTextRestColorButton", "BEBBarTextMaxrestColorButton"}
                for _,v in buttons do
                        local button = getglobal(v)
                        getglobal(v.."Texture"):SetVertexColor(unpack(BEBSettings[BEB_INDEX][button.objindex][button.whenindex]))
                        getglobal(v.."Text"):SetText(BEB_BUTTONLABELS[v])
                end
                for _,v in headings do
                        local heading = getglobal(v)
                        heading:SetText(BEB_HEADINGS[v])
                        heading:SetHeight(20)
                        heading:SetJustifyH("LEFT")
                        heading:SetJustifyV("BOTTOM")
                end
                BEBColorsSelector:LockHighlight()
                BEBGeneralSelector:UnlockHighlight()
                BEBPlacementSelector:UnlockHighlight()
        elseif (frame == "Placement") then
                local headings = {"BEBMainSizeHeading", "BEBTickSizeHeading", "BEBMainPositionControlsTitle", "BEBTickPositionControlsTitle", "BEB_MainAttachPointButton_Label", "BEB_MainAttachToPointButton_Label", "BEB_MainAttachToFrame_Label"}
                local sliders = {"BEBMainHeightSlider", "BEBMainWidthSlider", "BEBTickHeightSlider", "BEBTickWidthSlider", "BEBFontHeightSlider"}
                for _,v in sliders do
                        local slider = getglobal(v)
                        slider:SetValue(BEBSettings[BEB_INDEX][slider.objindex][slider.whatindex][slider.axisindex])
                        getglobal(v.."_Label"):SetText(BEB_TEXT[slider.label])
                        getglobal(v.."_EditBox"):SetText(BEBSettings[BEB_INDEX][slider.objindex][slider.whatindex][slider.axisindex])
                        getglobal(v.."_EditBox"):SetTextColor(1,0.82,0)
                        getglobal(v.."Text"):Hide()
                        local min, max = slider:GetMinMaxValues();
                        getglobal(v.."Low"):SetText(min);
                        getglobal(v.."High"):SetText(max);
                end
                for _,v in headings do
                        local heading = getglobal(v)
                        heading:SetText(BEB_HEADINGS[v])
                end
                BEBMainPositionControlsxEditBox:SetText(BEBSettings[BEB_INDEX].BEBMain.location.x)
                BEBMainPositionControlsyEditBox:SetText(BEBSettings[BEB_INDEX].BEBMain.location.y)
                BEBTickPositionControlsxEditBox:SetText(BEBSettings[BEB_INDEX].Tick.location.x)
                BEBTickPositionControlsyEditBox:SetText(BEBSettings[BEB_INDEX].Tick.location.y)
                BEBMainPositionControlsxEditBox:SetTextColor(1,0.82,0)
                BEBMainPositionControlsyEditBox:SetTextColor(1,0.82,0)
                BEBTickPositionControlsxEditBox:SetTextColor(1,0.82,0)
                BEBTickPositionControlsyEditBox:SetTextColor(1,0.82,0)
                BEB_MainAttachToFrameEditBox:SetTextColor(1,0.82,0)
                local attachpoint = BEBSettings[BEB_INDEX].BEBMain.location.point
                local attachtopoint = BEBSettings[BEB_INDEX].BEBMain.location.relpoint
                BEB_MainAttachPointButtonText:SetText(BEB_ATTACHPOINTS[attachpoint])
                BEB_MainAttachToPointButtonText:SetText(BEB_ATTACHPOINTS[attachtopoint])
                local attachtoframe = BEBSettings[BEB_INDEX].BEBMain.location.relto
                if (BEB_UIATTACHFRAMES[attachtoframe]) then
                        BEB_MainAttachToFrameEditBox:SetText(BEB_UIATTACHFRAMES[attachtoframe])
                else
                        BEB_MainAttachToFrameEditBox:SetText(attachtoframe)
                end
                BEBPlacementSelector:LockHighlight()
                BEBGeneralSelector:UnlockHighlight()
                BEBColorsSelector:UnlockHighlight()
        end
end

function BEBOptions_DisableAddon()
        if ( not BEBINITIALIZED ) then
                this:GetParent():Hide();
                return;
        end
        BEBMain:UnregisterEvent("PLAYER_LEVEL_UP")
        BEBMain:UnregisterEvent("PLAYER_UPDATE_RESTING")
        BEBMain:UnregisterEvent("PLAYER_XP_UPDATE")
        BEBMain:UnregisterEvent("CHAT_MSG_COMBAT_XP_GAIN")
        BEBMain:UnregisterEvent("UPDATE_EXHAUSTION")
        BEBMain:Hide()
        BEBDisabled = true
        BEBSettings[BEB_INDEX].Disabled = true
        if (BEBConfigFrame:IsShown()) then
                BEBConfigFrame:Hide()
                BEBEnableFrame:Show()
        end
end
function BEBOptions_EnableAddon()
        BEBINITIALIZED = nil
        BEBSettings[BEB_INDEX].Disabled = false
        BEBDisabled = false
        BEB_Initialize()
end

function BEBOptions_OnMouseDown()
        BEBConfigFrame:StartMoving()
end

function BEBOptions_OnMouseUp()
        BEBConfigFrame:StopMovingOrSizing()
end

function BEBOptions_Nudge(arg1,button)
        local change
        if (arg1 == "RightButton") then
                change = 5
        else
                change = 1
        end
        local thing = getglobal(button)
        local axis
        local element = thing:GetParent().index
        if (thing.index == "0") then
                BEBSettings[BEB_INDEX][element].location.x = 0
                BEBSettings[BEB_INDEX][element].location.y = 0
        elseif (thing.index == "up") then
                BEBSettings[BEB_INDEX][element].location.y = BEBSettings[BEB_INDEX][element].location.y + change
        elseif (thing.index == "down") then
                BEBSettings[BEB_INDEX][element].location.y = BEBSettings[BEB_INDEX][element].location.y - change
        elseif (thing.index == "left") then
                BEBSettings[BEB_INDEX][element].location.x = BEBSettings[BEB_INDEX][element].location.x - change
        elseif (thing.index == "right") then
                BEBSettings[BEB_INDEX][element].location.x = BEBSettings[BEB_INDEX][element].location.x + change
        end
        getglobal(thing:GetParent():GetName().."xEditBox"):SetText(BEBSettings[BEB_INDEX][element].location.x)
        getglobal(thing:GetParent():GetName().."yEditBox"):SetText(BEBSettings[BEB_INDEX][element].location.y)
end

function BEBOptions_Placement_OnUpdate(elapsed)
        if (BEBNudging) then
                if (BEBNudgeTime <= 0) then
                        BEBOptions_Nudge("MiddleButton",BEBNudging)
                        BEBNudgeTime = 0.015
                else
                        BEBNudgeTime = BEBNudgeTime - elapsed
                end
        end
end

function BEBOptions_PositionEditBox_OnValueChange()
        local axis = this.index
        local element = this:GetParent().index
        BEBSettings[BEB_INDEX][element].location[axis] = this:GetNumber()
        BEB_SetupBars()
        BEB_UpdateBars()
end

function BEBOptions_DDM_OnUpdate(elapsed)
        if (this.timer) then
                if (this.timer <= 0) then
                        this:Hide()
                else
                        this.timer = this.timer - elapsed
                end
        end
end

function BEBOptions_ShowMenu()
        if (BEB_DropDownMenu:IsVisible()) then
                BEB_DropDownMenu:Hide()
                return
        end
        if (this.how) then
                BEB_DropDownMenu.how = this.how
        end
        BEB_DropDownMenu.whatindex = this.whatindex
        BEB_DropDownMenu.typeindex = this.typeindex
        BEB_DropDownMenu.subindex = this.subindex
        BEB_DropDownMenu.controlbox = this.controlbox
        local count = 0;
        local widest = 0;
        for value, text in getglobal(this.table) do
                count = count + 1
                getglobal("BEB_DropDownMenu_Button"..count.."Text"):SetText(text)
                getglobal("BEB_DropDownMenu_Button"..count).value = value
                getglobal("BEB_DropDownMenu_Button"..count):Show()
                local width = getglobal("BEB_DropDownMenu_Button"..count.."Text"):GetStringWidth()
                widest = math.max(widest, width)
        end
        for i=1, BEB_DropDownMenu.count do
                if (i <= count) then
                        getglobal("BEB_DropDownMenu_Button"..i):SetWidth(widest);
                else
                        getglobal("BEB_DropDownMenu_Button"..i):Hide();                 
                end
        end
        BEB_DropDownMenu:SetWidth(widest + 20);
        BEB_DropDownMenu:SetHeight(count * 15 + 20);
        BEB_DropDownMenu:ClearAllPoints();
        BEB_DropDownMenu:SetPoint("TOPLEFT", getglobal(this.controlbox), "BOTTOMLEFT", 0, 0);
        if (BEB_DropDownMenu:GetBottom() < UIParent:GetBottom()) then
                local yoffset = UIParent:GetBottom() - BEB_DropDownMenu:GetBottom();
                BEB_DropDownMenu:ClearAllPoints();
                BEB_DropDownMenu:SetPoint("TOPLEFT", getglobal(this.controlbox), "BOTTOMLEFT", 20, yoffset);
        end
        BEB_DropDownMenu:Show()
        BEB_DropDownMenu.timer = 5
end

function BEBOptions_MenuOptionOnClick()
        if (this:GetParent().how) then
                getglobal(this:GetParent().controlbox):Insert(this.value)
        else
                getglobal(this:GetParent().controlbox):SetText(getglobal(this:GetName().."Text"):GetText())
                BEBSettings[BEB_INDEX][this:GetParent().whatindex][this:GetParent().typeindex][this:GetParent().subindex] = this.value
        end
        BEB_SetupBars()
        BEB_DropDownMenu:Hide()
end

function BEBOption_ChangeAttachTo()
        if (BEB_IsFrame(this:GetText())) then
                BEBSettings[BEB_INDEX].BEBMain.location.relto = this:GetText()
                BEB_SetupBars()
        else
                BEB_Feedback(BEB_TEXT.frameisinvalid)
                this:SetText(this.prevvals)
        end
end

function BEBOption_ChangeText()
        for k,_ in BEBOverlayFrame.texttable.events do
                BEBOverlayFrame:UnregisterEvent(k)
        end
        BEBOverlayFrame.texttable = BEB_CompileString(this:GetText())
        BEB_StringEvent("PLAYER_LEVEL_UP")
        for k,_ in BEBOverlayFrame.texttable.events do
                BEBOverlayFrame:RegisterEvent(k)
        end
        BEBSettings[BEB_INDEX].BarText.text.string = this:GetText()
end

Generated by GNU Enscript 1.6.5.90.