Quantcast
local mod = StarTip:NewModule("Nameplates", "AceTimer-3.0")
mod.name = "Hide Nameplates"
mod.toggled = true
mod.desc = "Toggle this module on to cause the tooltip to hide when mousing over nameplates and the control key is down."
mod.defaultOff = true
local _G = _G
local StarTip = _G.StarTip
local GameTooltip = _G.GameTooltip
local options = {}

local anchorsDict = {}

for i, v in ipairs(anchors) do
	anchorsDict[v] = i
end

local function copy(tbl)
	if type(tbl) ~= "table" then return tbl end
	local newTbl = {}
	for k, v in pairs(tbl) do
		newTbl[k] = copy(v)
	end
	return newTbl
end


local defaults = {
	profile = {
		layouts = {}
	}
}

local options = {}
local optionsDefaults = {
}

local update
function mod:OnInitialize()
	self.db = StarTip.db:RegisterNamespace(self:GetName(), defaults)
end

function mod:OnEnable()
	StarTip:SetOptionsDisabled(options, false)
end

function mod:OnDisable()
	StarTip:SetOptionsDisabled(options, true)
end

function mod:GetOptions()
	options = {
		layouts = {
			name = "Layouts",
			type = "group",
			args = {
			}
		},
		add = {
			name = L["Add Layout"],
			type = "execute",
			func = function()
				tinsert(self.db.profile.layouts, {UnitTooltip = {}, Bars = {}, Borders = {}})
			end,
		}
	}
	local UnitTooltip = StarTip:GetModule("UnitTooltip")
	local names = UnitTooltip:GetNames()
	local match = {}
	for i, v in ipairs(names) do
		match[v] = i
	end
	tinsert(match, L["Delete"])

	for i, layout in ipairs(self.db.profile.layouts) do
		options.layouts.args[tostring(i)] = {
			name = layout.name,
			type = "group",
			args = {
				UnitTooltip= {
					name = L["Unit Tooltip"],
					type = "group",
					args = {}
				}
			},
			order = i
		}
		for ii, vv in ipairs(layout.UnitTooltip) do
			options.layouts.args[tostring(i)].args.UnitTooltip.args[tostring(ii)] = {
				name = vv.name,
				type = "group",
				args = {
					selection = {
						name = L["Line Selection"],
						values = names,
						get = function()
							return match[vv]
						end,
						set = function(info, val)
							if ii == #names + 1 then
								tremove(v, ii)
								return
							end
							v[i][ii] = names[ii]
						end,
						order = 1
					},
					up = {
						name = L["Move Up"],
						type = "execute",
						func = function()
							if ii == 1 then return end
							v[ii] = v[ii - 1]
							v[ii - 1] = vv
						end,
						order = 2
					},
					down = {
						name = L["Move Down"],
						type = "execute",
						func = function()
							if ii == #match - 1 then return end
							v[ii] = v[ii + 1]
							v[ii + 1] = vv
						end,
						order = 3
					}
				},
				order = ii
			}
		end
	end
	return options
end