ESOUI SVN TaosGroupTools

[/] [trunk/] [TaosGroupTools/] [ui/] [settings/] [GroupLeaderOptions.lua] - Rev 132

Compare with Previous | Blame | View Log

--[[
        Addon: Taos Group Tools
        Author: TProg Taonnor
        Created by @Taonnor
]]--

--[[
        Local variables
]]--
local _settingsHandler = TGT_SettingsHandler

local _lamPanel = nil
local _choosenIconTexture = nil

--[[
        Table GroupLeaderOptions
]]--
TGT_GroupLeaderOptions = {}
TGT_GroupLeaderOptions.__index = TGT_GroupLeaderOptions

--[[
        ===============
    PRIVATE METHODS
    ===============
]]--

--[[
        SetupLAMIcon Setups the LAM icon control "TGT_ChoosenIcon"
]]--
local function SetupLAMIcon(control)
    if (control == _lamPanel) then
        if (_choosenIconTexture == nil) then
            _choosenIconTexture = WINDOW_MANAGER:CreateControl(nil, TGT_ChoosenIcon, CT_TEXTURE)
            _choosenIconTexture:ClearAnchors()
            _choosenIconTexture:SetAnchor(RIGHT, TGT_ChoosenIcon.dropdown:GetControl(), LEFT, -48, -2)
            _choosenIconTexture:SetTexture(_settingsHandler.Icons[_settingsHandler.SavedVariables.Icon].path)
            _choosenIconTexture:SetDimensions(48, 48)
        end

                CALLBACK_MANAGER:UnregisterCallback("LAM-PanelControlsCreated", SetupLAMIcon)
    end
end

--[[
        Creates options
]]--
local function CreateOptions()
    -- Add icon choises
    local iconChoises = {}
    for key, val in pairs(_settingsHandler.Icons) do
        table.insert(iconChoises, val.name)
    end
    
    -- Add font choises
    local fontChoises = {}
    for key, val in pairs(_settingsHandler.CompassFonts) do
        table.insert(fontChoises, val.name)
    end

    local optionsData = {
        -- Submenu Group Leader Options
        {   type            = "submenu",
                        name            = GetString(TGT_OPTIONS_GROUP_LEADER_HEADER),
            controls = {
                -- Submenu header
                {   type = "header",
                    name = GetString(TGT_OPTIONS_GROUP_LEADER_CROWN), },
                -- Leader icon active
                {   type        = "checkbox",
                                name        = GetString(TGT_OPTIONS_ICONS_ACTIVE_LABEL),
                                tooltip     = GetString(TGT_OPTIONS_ICONS_ACTIVE_TOOLTIP),
                                getFunc = 
                       function() 
                           return _settingsHandler.SavedVariables.IsLeaderIconActive
                       end,
                                setFunc = 
                       function(value) 
                           _settingsHandler.SetIsLeaderIconActiveSettings(value)
                                   end,
                                default     = TGT_DEFAULTS.IsLeaderIconActive,
                        },
                -- Icon size
                {   type = "slider",
                    name = GetString(TGT_OPTIONS_SIZE_LABEL),
                                tooltip = GetString(TGT_OPTIONS_SIZE_TOOLTIP),
                    min = 32,
                    max = 256,
                    getFunc = 
                        function() 
                            return _settingsHandler.SavedVariables.IconSize
                        end,
                    setFunc = 
                        function(value)
                            _settingsHandler.SetIconSizeSettings(value)
                        end,
                    default = TGT_DEFAULTS.IconSize,
                    disabled = 
                        function() 
                           return _settingsHandler.SavedVariables.IsLeaderIconActive == false
                       end,
                },
                -- Icon type
                {   type = "dropdown",
                                name = GetString(TGT_OPTIONS_ICONS_LABEL),
                                tooltip = GetString(TGT_OPTIONS_ICONS_TOOLTIP),
                    choices = iconChoises,
                                getFunc = 
                       function() 
                           return _settingsHandler.Icons[_settingsHandler.SavedVariables.Icon].name
                       end,
                                setFunc = 
                       function(value) 
                           for index, icon in ipairs(_settingsHandler.Icons) do
                              if (icon.name == value) then
                                 _settingsHandler.SetIconSettings(index)
                                 _choosenIconTexture:SetTexture(icon.path)
                                 break
                              end
                           end
                                   end,
                                default = _settingsHandler.Icons[TGT_DEFAULTS.Icon],
                    reference = "TGT_ChoosenIcon",
                    disabled = 
                        function() 
                           return _settingsHandler.SavedVariables.IsLeaderIconActive == false
                       end,
                        },
                -- Submenu header
                {   type = "header",
                    name = GetString(TGT_OPTIONS_GROUP_LEADER_ARROW), },
                -- Leader arrow active
                {   type        = "checkbox",
                                name        = GetString(TGT_OPTIONS_ARROW_ACTIVE_LABEL),
                                tooltip     = GetString(TGT_OPTIONS_ARROW_ACTIVE_TOOLTIP),
                                getFunc = 
                       function() 
                           return _settingsHandler.SavedVariables.IsLeaderArrowActive
                       end,
                                setFunc = 
                       function(value) 
                           _settingsHandler.SetIsLeaderArrowActiveSettings(value)
                                   end,
                                default     = TGT_DEFAULTS.IsLeaderArrowActive,
                        },
                -- Arrow color
                TGT_SettingsWindow.GetNewColorpicker(
                    GROUP_LEADER,
                    "ArrowColor",
                    GetString(TGT_OPTIONS_ARROW_COLOR_LABEL), 
                    GetString(TGT_OPTIONS_ARROW_COLOR_TOOLTIP), 
                    function() return _settingsHandler.SavedVariables.IsLeaderArrowActive == false end),
                -- Circle distance
                {   type        = "slider", 
                    name        = GetString(TGT_OPTIONS_CIRCLE_DISTANCE_LABEL),
                    tooltip     = GetString(TGT_OPTIONS_CIRCLE_DISTANCE_TOOLTIP),
                    min         = 0, 
                    max         = 256, 
                    step        = 1,
                    getFunc = 
                        function() 
                            return _settingsHandler.SavedVariables.CircleDistance 
                        end, 
                    setFunc = 
                        function(value) 
                            _settingsHandler.SetCircleDistanceSettings(value) 
                        end, 
                    default     = TGT_DEFAULTS.CircleDistance,
                    disabled = 
                        function() 
                           return _settingsHandler.SavedVariables.IsLeaderArrowActive == false
                       end,
                },
                -- Leader arrow distance active
                {   type        = "checkbox",
                                name        = GetString(TGT_OPTIONS_ARROW_DISTANCE_LABEL),
                                tooltip     = GetString(TGT_OPTIONS_ARROW_DISTANCE_TOOLTIP),
                                getFunc = 
                       function() 
                           return _settingsHandler.SavedVariables.LeaderArrowDistance
                       end,
                                setFunc = 
                       function(value) 
                           _settingsHandler.SetLeaderArrowDistanceSettings(value)
                                   end,
                                default     = TGT_DEFAULTS.LeaderArrowDistance,
                    disabled = 
                        function() 
                           return _settingsHandler.SavedVariables.IsLeaderArrowActive == false
                       end,
                        },
                -- Min distance
                {   type        = "slider", 
                    name        = GetString(TGT_OPTIONS_MIN_DISTANCE_LABEL),
                    tooltip     = GetString(TGT_OPTIONS_MIN_DISTANCE_TOOLTIP),
                    min         = 0, 
                    max         = 256, 
                    step        = 1,
                    getFunc = 
                        function() 
                            return _settingsHandler.SavedVariables.MinDistance 
                        end, 
                    setFunc = 
                        function(value) 
                            _settingsHandler.SetMinDistanceSettings(value) 
                        end, 
                    default     = TGT_DEFAULTS.MinDistance,
                    disabled = 
                        function() 
                           return _settingsHandler.SavedVariables.IsLeaderArrowActive == false
                       end,
                },
                -- Max distance
                {   type        = "slider", 
                    name        = GetString(TGT_OPTIONS_MAX_DISTANCE_LABEL),
                    tooltip     = GetString(TGT_OPTIONS_MAX_DISTANCE_TOOLTIP),
                    min         = 0, 
                    max         = 256, 
                    step        = 1,
                    getFunc = 
                        function() 
                            return _settingsHandler.SavedVariables.MaxDistance 
                        end, 
                    setFunc = 
                        function(value) 
                            _settingsHandler.SetMaxDistanceSettings(value) 
                        end, 
                    default     = TGT_DEFAULTS.MaxDistance,
                    disabled = 
                        function() 
                           return _settingsHandler.SavedVariables.IsLeaderArrowActive == false
                       end,
                },
                -- Submenu header
                {   type = "header",
                    name = GetString(TGT_OPTIONS_GROUP_LEADER_COMPASS), },
                -- Leader compass active
                {   type        = "checkbox",
                                name        = GetString(TGT_OPTIONS_COMPASS_ACTIVE_LABEL),
                                tooltip     = GetString(TGT_OPTIONS_COMPASS_ACTIVE_TOOLTIP),
                                getFunc = 
                       function() 
                           return _settingsHandler.SavedVariables.IsCustomizedCompassActive
                       end,
                                setFunc = 
                       function(value) 
                           _settingsHandler.SetIsCustomizedCompassActiveSettings(value)
                                   end,
                                default     = TGT_DEFAULTS.IsCustomizedCompassActive,
                        },
                -- Default compass hidden
                {   type        = "checkbox",
                                name        = GetString(TGT_OPTIONS_ZOS_COMPASS_ACTIVE_LABEL),
                                tooltip     = GetString(TGT_OPTIONS_ZOS_COMPASS_ACTIVE_TOOLTIP),
                                getFunc = 
                       function() 
                           return _settingsHandler.SavedVariables.HideStandardCompass
                       end,
                                setFunc = 
                       function(value) 
                           _settingsHandler.SetHideStandardCompassSettings(value)
                                   end,
                                default     = TGT_DEFAULTS.HideStandardCompass,
                    disabled = 
                        function() 
                           return _settingsHandler.SavedVariables.IsCustomizedCompassActive == false
                       end,
                        },
                -- Compass color
                TGT_SettingsWindow.GetNewColorpicker(
                    GROUP_LEADER,
                    "CompassColor",
                    GetString(TGT_OPTIONS_COMPASS_COLOR_LABEL), 
                    GetString(TGT_OPTIONS_COMPASS_COLOR_TOOLTIP), 
                    function() return _settingsHandler.SavedVariables.IsCustomizedCompassActive == false end),
                -- Radius
                {   type        = "slider", 
                    name        = GetString(TGT_OPTIONS_COMPASS_RADIUS_LABEL),
                    tooltip     = GetString(TGT_OPTIONS_COMPASS_RADIUS_TOOLTIP),
                    min         = 64, 
                    max         = 512, 
                    step        = 1,
                    getFunc = 
                        function() 
                            return _settingsHandler.SavedVariables.CompassRadius 
                        end, 
                    setFunc = 
                        function(value) 
                            _settingsHandler.SetCompassRadiusSettings(value) 
                        end, 
                    default     = TGT_DEFAULTS.CompassRadius,
                    disabled = 
                        function() 
                           return _settingsHandler.SavedVariables.IsCustomizedCompassActive == false
                       end,
                },
                -- Font
                {   type = "dropdown",
                                name = GetString(TGT_OPTIONS_COMPASS_FONTS_LABEL),
                                tooltip = GetString(TGT_OPTIONS_COMPASS_FONTS_TOOLTIP),
                    choices = fontChoises,
                                getFunc = 
                       function() 
                           return _settingsHandler.CompassFonts[_settingsHandler.SavedVariables.CompassFont].name
                       end,
                                setFunc = 
                       function(value) 
                           for index, icon in ipairs(_settingsHandler.CompassFonts) do
                              if (icon.name == value) then
                                 _settingsHandler.SetCompassFontSettings(index)
                                 break
                              end
                           end
                                   end,
                                default = _settingsHandler.CompassFonts[TGT_DEFAULTS.CompassFont],
                    disabled = 
                        function() 
                           return _settingsHandler.SavedVariables.IsCustomizedCompassActive == false
                       end,
                        },
                -- Font Size
                {   type        = "slider", 
                    name        = GetString(TGT_OPTIONS_COMPASS_FONT_SIZE_LABEL),
                    tooltip     = GetString(TGT_OPTIONS_COMPASS_FONT_SIZE_TOOLTIP),
                    min         = 12, 
                    max         = 32, 
                    step        = 1,
                    getFunc = 
                        function() 
                            return _settingsHandler.SavedVariables.CompassFontSize 
                        end, 
                    setFunc = 
                        function(value) 
                            _settingsHandler.SetCompassFontSizeSettings(value)
                        end, 
                    default     = TGT_DEFAULTS.CompassFontSize,
                    disabled = 
                        function() 
                           return _settingsHandler.SavedVariables.IsCustomizedCompassActive == false
                       end,
                },
                -- Flat compass
                {   type        = "checkbox",
                                name        = GetString(TGT_OPTIONS_COMPASS_FLAT_LABEL),
                                tooltip     = GetString(TGT_OPTIONS_COMPASS_FLAT_TOOLTIP),
                                getFunc = 
                       function() 
                           return _settingsHandler.SavedVariables.FlatCompass
                       end,
                                setFunc = 
                       function(value) 
                           _settingsHandler.SetCompassFlatCompassSettings(value)
                                   end,
                                default     = TGT_DEFAULTS.FlatCompass,
                    disabled = 
                        function() 
                           return _settingsHandler.SavedVariables.IsCustomizedCompassActive == false
                       end,
                        },
            },
        },
        }

    return optionsData
end

--[[
        ==============
    PUBLIC METHODS
    ==============
]]--

--[[
        SetLamPanel sets lamPanel to create icon callback
]]--
function TGT_GroupLeaderOptions.SetLamPanel(lamPanel)
    _lamPanel = lamPanel
end

--[[
        GetOptions creates settings and returns
]]--
function TGT_GroupLeaderOptions.GetOptions(options, lamPanel)
    local optionsData = CreateOptions()

    -- Register to callback for creating preview icon
    CALLBACK_MANAGER:RegisterCallback("LAM-PanelControlsCreated", SetupLAMIcon)
        
    -- Add options
    for i = 1 , #optionsData do 
        table.insert(options, optionsData[i])
    end
end

Compare with Previous | Blame