WoWInterface SVN XMagePortals

[/] [trunk/] [XMage_Portals/] [XMP_Options.lua] - Rev 11

Compare with Previous | Blame | View Log

-- Grab a copy of the local data
local addonName, addonData = ...
local Translate = addonData.Translate

XMagePortsDB = {
        UpdateInterval = 30,
        FontSize = 12,
        CooldownSize = 20,
        NotAvailableAlpha = 0.1,
        NotIdealAlpha = 0.5,
        AvailableAlpha = 1.0,
        DisplayText = true,
}

local CreateMenuItems = function(frame,level,menuList)
        local info
        if ( menuList == nil ) then 

                info = UIDropDownMenu_CreateInfo()
                info.text = Translate["OPTIONS"]
                info.isTitle = true
                info.notCheckable = true
                UIDropDownMenu_AddButton(info,level)

                info = UIDropDownMenu_CreateInfo()
                info.text = Translate["UPDATE_INTERVAL"]
                info.hasArrow = true
                info.menuList = "UpdateInterval"                
                info.notCheckable = true
                UIDropDownMenu_AddButton(info,level)

                info = UIDropDownMenu_CreateInfo()
                info.text = Translate["FONT_SIZE"]
                info.hasArrow = true
                info.menuList = "FontSize"              
                info.notCheckable = true
                UIDropDownMenu_AddButton(info,level)

                info = UIDropDownMenu_CreateInfo()
                info.text = Translate["COOLDOWN_SIZE"]
                info.hasArrow = true
                info.menuList = "CooldownSize"          
                info.notCheckable = true
                UIDropDownMenu_AddButton(info,level)

                info = UIDropDownMenu_CreateInfo()
                info.text = Translate["NOT_AVAILABLE_ALPHA"]
                info.hasArrow = true
                info.menuList = "NotAvailableAlpha"             
                info.notCheckable = true
                UIDropDownMenu_AddButton(info,level)

                info = UIDropDownMenu_CreateInfo()
                info.text = Translate["NOT_IDEAL_ALPHA"]
                info.hasArrow = true
                info.menuList = "NotIdealAlpha"         
                info.notCheckable = true
                UIDropDownMenu_AddButton(info,level)

                info = UIDropDownMenu_CreateInfo()
                info.text = Translate["AVAILABLE_ALPHA"]
                info.hasArrow = true
                info.menuList = "AvailableAlpha"                
                info.notCheckable = true
                UIDropDownMenu_AddButton(info,level)

                if ( not IsAddOnLoaded("nUI") ) then
                        info = UIDropDownMenu_CreateInfo()
                        if ( addonData.XMPFrame:IsShown() ) then
                                info.text = Translate["COLLAPSE"]
                        else
                                info.text = Translate["EXPAND"]
                        end
                        info.hasArrow = false
                        info.menuList = nil
                        info.notCheckable = true
                        info.func = function() 
                                if addonData.XMPFrame:IsShown() then 
                                        addonData.XMPFrame:Hide() 
                                else 
                                        addonData.XMPFrame:Show() 
                                end 
                                addonData.OptionsButton:Show() 
                        end
                        UIDropDownMenu_AddButton(info,level)
                end

        elseif ( menuList == "UpdateInterval" ) then
                for i,v in pairs({ 10,20,30,40,50,60 }) do
                        info = UIDropDownMenu_CreateInfo()
                        info.value = v
                        info.text = v
                        info.checked = ( v == XMagePortsDB.UpdateInterval )
                        info.notCheckable = false
                        info.func = function() XMagePortsDB.UpdateInterval = v addonData:UpdateText(addonData.XMPFrame) end
                        UIDropDownMenu_AddButton(info,level)
                end
        elseif ( menuList == "FontSize" ) then
                for i,v in pairs({ 10,12,14,16,18,20 }) do
                        info = UIDropDownMenu_CreateInfo()
                        info.value = v
                        info.text = v
                        info.checked = ( v == XMagePortsDB.FontSize )
                        info.notCheckable = false
                        info.func = function() XMagePortsDB.FontSize = v addonData:UpdateText(addonData.XMPFrame)  end
                        UIDropDownMenu_AddButton(info,level)
                end
        elseif ( menuList == "CooldownSize" ) then
                for i,v in pairs({ 15,20,25,30 }) do
                        info = UIDropDownMenu_CreateInfo()
                        info.value = v
                        info.text = v
                        info.checked = ( v == XMagePortsDB.CooldownSize )
                        info.notCheckable = false
                        info.func = function() XMagePortsDB.CooldownSize = v addonData:UpdateText(addonData.XMPFrame)  end
                        UIDropDownMenu_AddButton(info,level)
                end

        elseif ( menuList == "NotAvailableAlpha" ) then
                for i,v in pairs({ 0.1,0.2,0.3,0.4,0.5 }) do
                        info = UIDropDownMenu_CreateInfo()
                        info.value = v
                        info.text = v
                        info.checked = ( v == XMagePortsDB.NotAvailableAlpha )
                        info.notCheckable = false
                        info.func = function() XMagePortsDB.NotAvailableAlpha = v addonData:UpdateText(addonData.XMPFrame)  end
                        UIDropDownMenu_AddButton(info,level)
                end
        elseif ( menuList == "NotIdealAlpha" ) then
                for i,v in pairs({ 0.3,0.4,0.5,0.6,0.7 }) do
                        info = UIDropDownMenu_CreateInfo()
                        info.value = v
                        info.text = v
                        info.checked = ( v == XMagePortsDB.NotIdealAlpha )
                        info.notCheckable = false
                        info.func = function() XMagePortsDB.NotIdealAlpha = v addonData:UpdateText(addonData.XMPFrame)  end
                        UIDropDownMenu_AddButton(info,level)
                end
        elseif ( menuList == "AvailableAlpha" ) then
                for i,v in pairs({ 0.5,0.6,0.7,0.8,0.9 }) do
                        info = UIDropDownMenu_CreateInfo()
                        info.value = v
                        info.text = v
                        info.checked = ( v == XMagePortsDB.AvailableAlpha )
                        info.notCheckable = false
                        info.func = function() XMagePortsDB.AvailableAlpha = v addonData:UpdateText(addonData.XMPFrame)  end
                        UIDropDownMenu_AddButton(info,level)
                end
        end
end

addonData.CreateMenu = function(self)
        local menu = CreateFrame("Frame","XMPOptions",self.XMPFrame,"UIDropDownMenuTemplate")
        menu.displayMode = "MENU"
        menu.initialize = CreateMenuItems
        return menu
end

addonData.CreateOptionsButton = function(self)
        local frame = CreateFrame("Button","XMP_Options",UIParent,"OptionsButtonTemplate")
        frame:SetText(addonName)
        frame:SetWidth(100)
        frame:SetHeight(20)
        frame:SetPoint("CENTER",self.XMPFrame,"CENTER",0,0)
        frame:SetPoint("TOP",self.XMPFrame,"TOP",0,20)
        frame:Show()
        frame:SetScript("OnClick", function(self, button, down)
        ToggleDropDownMenu(1, nil, addonData.OptionsMenu, "cursor", 0, 0)
        end)
        frame:RegisterForClicks("LeftButtonUp","RightButtonUp")
        return frame
end

Compare with Previous | Blame