Files
coa-elvui/ElvUI_OptionsUI/ModuleControl.lua
T
Andrew 221dffffe6 Add support for new stats stuff, cvar changes, and auto vendoring. (#30)
* Enhanced/CharacterFrame: Add new stat tooltips

* Enhanced/CharacterFrame: crit is a percent of base crit

* Enhanced/CharacterSheet: Update to use new cvar

* ElvUI/Merchant: Remove auto sell gray / auto repair. Client handles these now.
2023-02-05 17:43:09 -07:00

595 lines
16 KiB
Lua

local E, _, V, P, G = unpack(ElvUI); --Import: Engine, Locales, PrivateDB, ProfileDB, GlobalDB
local _, L = unpack(select(2, ...))
local UF = E:GetModule("UnitFrames")
local MC = E:GetModule("ModuleCopy")
--Actionbars
local function CreateActionbarsConfig()
local config = MC:CreateModuleConfigGroup(L["ActionBars"], "actionbar")
for i = 1, 6 do
config.args["bar"..i] = {
order = i + 1,
type = "toggle",
name = L["Bar "]..i,
get = function(info) return E.global.profileCopy.actionbar[info[#info]] end,
set = function(info, value) E.global.profileCopy.actionbar[info[#info]] = value end
}
end
config.args.barPet = {
order = 8,
type = "toggle",
name = L["Pet Bar"],
get = function(info) return E.global.profileCopy.actionbar[info[#info]] end,
set = function(info, value) E.global.profileCopy.actionbar[info[#info]] = value end
}
config.args.stanceBar = {
order = 9,
type = "toggle",
name = L["Stance Bar"],
get = function(info) return E.global.profileCopy.actionbar[info[#info]] end,
set = function(info, value) E.global.profileCopy.actionbar[info[#info]] = value end
}
config.args.microbar = {
order = 10,
type = "toggle",
name = L["Micro Bar"],
get = function(info) return E.global.profileCopy.actionbar[info[#info]] end,
set = function(info, value) E.global.profileCopy.actionbar[info[#info]] = value end
}
config.args.cooldown = {
order = 11,
type = "toggle",
name = L["Cooldown Text"],
get = function(info) return E.global.profileCopy.actionbar[info[#info]] end,
set = function(info, value) E.global.profileCopy.actionbar[info[#info]] = value end
}
return config
end
--Auras
local function CreateAurasConfig()
local config = MC:CreateModuleConfigGroup(L["Auras"], "auras")
config.args.buffs = {
order = 2,
type = "toggle",
name = L["Buffs"],
get = function(info) return E.global.profileCopy.auras[info[#info]] end,
set = function(info, value) E.global.profileCopy.auras[info[#info]] = value end
}
config.args.debuffs = {
order = 3,
type = "toggle",
name = L["Debuffs"],
get = function(info) return E.global.profileCopy.auras[info[#info]] end,
set = function(info, value) E.global.profileCopy.auras[info[#info]] = value end
}
config.args.cooldown = {
order = 4,
type = "toggle",
name = L["Cooldown Text"],
get = function(info) return E.global.profileCopy.auras[info[#info]] end,
set = function(info, value) E.global.profileCopy.auras[info[#info]] = value end
}
return config
end
--Bags
local function CreateBagsConfig()
local config = MC:CreateModuleConfigGroup(L["Bags"], "bags")
config.args.bagBar = {
order = 2,
type = "toggle",
name = L["Bag-Bar"],
get = function(info) return E.global.profileCopy.bags[info[#info]] end,
set = function(info, value) E.global.profileCopy.bags[info[#info]] = value end
}
config.args.cooldown = {
order = 3,
type = "toggle",
name = L["Cooldown Text"],
get = function(info) return E.global.profileCopy.bags[info[#info]] end,
set = function(info, value) E.global.profileCopy.bags[info[#info]] = value end
}
config.args.split = {
order = 4,
type = "toggle",
name = L["Split"],
get = function(info) return E.global.profileCopy.bags[info[#info]] end,
set = function(info, value) E.global.profileCopy.bags[info[#info]] = value end
}
return config
end
--Chat
local function CreateChatConfig()
local config = MC:CreateModuleConfigGroup(L["Chat"], "chat")
return config
end
--Cooldowns
local function CreateCooldownConfig()
local config = MC:CreateModuleConfigGroup(L["Cooldown Text"], "cooldown")
config.args.fonts = {
order = 2,
type = "toggle",
name = L["Fonts"],
get = function(info) return E.global.profileCopy.cooldown[info[#info]] end,
set = function(info, value) E.global.profileCopy.cooldown[info[#info]] = value end
}
return config
end
--DataBars
local function CreateDatatbarsConfig()
local config = MC:CreateModuleConfigGroup(L["DataBars"], "databars")
config.args.experience = {
order = 2,
type = "toggle",
name = L["XPBAR_LABEL"],
get = function(info) return E.global.profileCopy.databars[info[#info]] end,
set = function(info, value) E.global.profileCopy.databars[info[#info]] = value end
}
config.args.reputation = {
order = 3,
type = "toggle",
name = L["REPUTATION"],
get = function(info) return E.global.profileCopy.databars[info[#info]] end,
set = function(info, value) E.global.profileCopy.databars[info[#info]] = value end
}
return config
end
--DataTexts
local function CreateDatatextsConfig()
local config = MC:CreateModuleConfigGroup(L["DataTexts"], "datatexts")
config.args.panels = {
order = 2,
type = "toggle",
name = L["Panels"],
get = function(info) return E.global.profileCopy.datatexts[info[#info]] end,
set = function(info, value) E.global.profileCopy.datatexts[info[#info]] = value end
}
return config
end
--General
local function CreateGeneralConfig()
local config = MC:CreateModuleConfigGroup(L["General"], "general")
config.args.minimap = {
order = 2,
type = "toggle",
name = L["MINIMAP_LABEL"],
get = function(info) return E.global.profileCopy.general[info[#info]] end,
set = function(info, value) E.global.profileCopy.general[info[#info]] = value end
}
config.args.threat = {
order = 3,
type = "toggle",
name = L["Threat"],
get = function(info) return E.global.profileCopy.general[info[#info]] end,
set = function(info, value) E.global.profileCopy.general[info[#info]] = value end
}
config.args.totems = {
order = 4,
type = "toggle",
name = L["Class Totems"],
get = function(info) return E.global.profileCopy.general[info[#info]] end,
set = function(info, value) E.global.profileCopy.general[info[#info]] = value end
}
return config
end
--NamePlates
local function CreateNamePlatesConfig()
local config = MC:CreateModuleConfigGroup(L["NamePlates"], "nameplates")
config.args.cooldown = {
order = 2,
type = "toggle",
name = L["Cooldown Text"],
get = function(info) return E.global.profileCopy.nameplates[info[#info]] end,
set = function(info, value) E.global.profileCopy.nameplates[info[#info]] = value end
}
config.args.reactions = {
order = 3,
type = "toggle",
name = L["Reaction Colors"],
get = function(info) return E.global.profileCopy.nameplates[info[#info]] end,
set = function(info, value) E.global.profileCopy.nameplates[info[#info]] = value end
}
config.args.threat = {
order = 4,
type = "toggle",
name = L["Threat"],
get = function(info) return E.global.profileCopy.nameplates[info[#info]] end,
set = function(info, value) E.global.profileCopy.nameplates[info[#info]] = value end
}
config.args.units = {
order = 5,
type = "group",
guiInline = true,
name = L["NamePlates"],
get = function(info) return E.global.profileCopy.nameplates[info[#info - 1]][info[#info]] end,
set = function(info, value) E.global.profileCopy.nameplates[info[#info - 1]][info[#info]] = value end,
args = {
["FRIENDLY_PLAYER"] = {
order = 1,
type = "toggle",
name = L["Friendly Player Frames"]
},
["ENEMY_PLAYER"] = {
order = 2,
type = "toggle",
name = L["Enemy Player Frames"]
},
["FRIENDLY_NPC"] = {
order = 3,
type = "toggle",
name = L["Friendly NPC Frames"]
},
["ENEMY_NPC"] = {
order = 4,
type = "toggle",
name = L["Enemy NPC Frames"]
}
}
}
return config
end
--Tooltip
local function CreateTooltipConfig()
local config = MC:CreateModuleConfigGroup(L["Tooltip"], "tooltip")
config.args.visibility = {
order = 2,
type = "toggle",
name = L["Visibility"],
get = function(info) return E.global.profileCopy.tooltip[info[#info]] end,
set = function(info, value) E.global.profileCopy.tooltip[info[#info]] = value end
}
config.args.healthBar = {
order = 3,
type = "toggle",
name = L["Health Bar"],
get = function(info) return E.global.profileCopy.tooltip[info[#info]] end,
set = function(info, value) E.global.profileCopy.tooltip[info[#info]] = value end
}
return config
end
--UnitFrames
local function CreateUnitframesConfig()
local config = MC:CreateModuleConfigGroup(L["UnitFrames"], "unitframe")
config.args.cooldown = {
order = 2,
type = "toggle",
name = L["Cooldown Text"],
get = function(info) return E.global.profileCopy.unitframe[info[#info]] end,
set = function(info, value) E.global.profileCopy.unitframe[info[#info]] = value end
}
config.args.colors = {
order = 3,
type = "group",
guiInline = true,
name = L["COLORS"],
get = function(info) return E.global.profileCopy.unitframe[info[#info - 1]][info[#info]] end,
set = function(info, value) E.global.profileCopy.unitframe[info[#info - 1]][info[#info]] = value end,
args = {
["general"] = {
order = 1,
type = "toggle",
name = L["General"]
},
["power"] = {
order = 2,
type = "toggle",
name = L["Powers"]
},
["reaction"] = {
order = 3,
type = "toggle",
name = L["Reactions"]
},
["healPrediction"] = {
order = 4,
type = "toggle",
name = L["Heal Prediction"]
},
["classResources"] = {
order = 5,
type = "toggle",
name = L["Class Resources"]
},
["frameGlow"] = {
order = 6,
type = "toggle",
name = L["Frame Glow"]
},
["debuffHighlight"] = {
order = 7,
type = "toggle",
name = L["Debuff Highlighting"]
}
}
}
config.args.units = {
order = 4,
type = "group",
guiInline = true,
name = L["UnitFrames"],
get = function(info) return E.global.profileCopy.unitframe[info[#info - 1]][info[#info]] end,
set = function(info, value) E.global.profileCopy.unitframe[info[#info - 1]][info[#info]] = value end,
args = {
["player"] = {
order = 1,
type = "toggle",
name = L["PLAYER"]
},
["target"] = {
order = 2,
type = "toggle",
name = L["TARGET"]
},
["targettarget"] = {
order = 3,
type = "toggle",
name = L["TargetTarget"]
},
["targettargettarget"] = {
order = 4,
type = "toggle",
name = L["TargetTargetTarget"]
},
["focus"] = {
order = 5,
type = "toggle",
name = L["FOCUS"]
},
["focustarget"] = {
order = 6,
type = "toggle",
name = L["FocusTarget"]
},
["pet"] = {
order = 7,
type = "toggle",
name = L["Pet"]
},
["pettarget"] = {
order = 8,
type = "toggle",
name = L["PetTarget"]
},
["party"] = {
order = 9,
type = "toggle",
name = L["PARTY"]
},
["raid"] = {
order = 10,
type = "toggle",
name = L["RAID"]
},
["raid40"] = {
order = 11,
type = "toggle",
name = L["Raid-40"]
},
["raidpet"] = {
order = 12,
type = "toggle",
name = L["Raid Pet"]
},
["tank"] = {
order = 13,
type = "toggle",
name = L["Tank"]
},
["assist"] = {
order = 14,
type = "toggle",
name = L["Assist"]
}
}
}
return config
end
E.Options.args.modulecontrol= {
order = -2,
type = "group",
name = L["Module Control"],
childGroups = "tab",
args = {
modulecopy = {
type = "group",
name = L["Module Copy"],
order = 1,
childGroups = "select",
handler = E.Options.args.profiles.handler,
args = {
header = {
order = 0,
type = "header",
name = L["Module Copy"]
},
intro = {
order = 1,
type = "description",
name = L["This section will allow you to copy settings to a select module from or to a different profile."]
},
pluginInfo = {
order = 2,
type = "description",
name = L["If you have any plugins supporting this feature installed you can find them in the selection dropdown to the right."]
},
profile = {
order = 3,
type = "select",
name = L["Profile"],
desc = L["Select a profile to copy from/to."],
get = function(info) return E.global.profileCopy.selected end,
set = function(info, value) E.global.profileCopy.selected = value end,
values = E.Options.args.profiles.args.copyfrom.values,
disabled = E.Options.args.profiles.args.copyfrom.disabled,
arg = E.Options.args.profiles.args.copyfrom.arg
},
elvui = {
order = 10,
type = "group",
name = E.title,
childGroups = "tab",
disabled = E.Options.args.profiles.args.copyfrom.disabled,
args = {
header = {
order = 0,
type = "header",
name = L["Core |cff1784d1E|r|cffe5e3e3lvUI|r options."],
},
actionbar = CreateActionbarsConfig(),
auras = CreateAurasConfig(),
bags = CreateBagsConfig(),
chat = CreateChatConfig(),
cooldown = CreateCooldownConfig(),
databars = CreateDatatbarsConfig(),
datatexts = CreateDatatextsConfig(),
general = CreateGeneralConfig(),
nameplates = CreateNamePlatesConfig(),
tooltip = CreateTooltipConfig(),
uniframes = CreateUnitframesConfig()
}
},
movers = {
order = 20,
type = "group",
name = L["Movers"],
desc = L["On screen positions for different elements."],
childGroups = "tab",
disabled = E.Options.args.profiles.args.copyfrom.disabled,
args = MC:CreateMoversConfigGroup()
}
}
},
modulereset = {
type = "group",
name = L["Module Reset"],
order = 2,
args = {
header = {
order = 0,
type = "header",
name = L["Module Reset"]
},
intro = {
order = 1,
type = "description",
name = L["This section will help reset specfic settings back to default."]
},
space1 = {
order = 2,
type = "description",
name = ""
},
general = {
order = 3,
type = "execute",
name = L["General"],
confirm = true,
confirmText = L["Are you sure you want to reset General settings?"],
func = function() E:CopyTable(E.db.general, P.general) end
},
actionbar = {
order = 5,
type = "execute",
name = L["ActionBars"],
confirm = true,
confirmText = L["Are you sure you want to reset ActionBars settings?"],
func = function() E:CopyTable(E.db.actionbar, P.actionbar) end
},
bags = {
order = 6,
type = "execute",
name = L["Bags"],
confirm = true,
confirmText = L["Are you sure you want to reset Bags settings?"],
func = function() E:CopyTable(E.db.bags, P.bags) end
},
auras = {
order = 7,
type = "execute",
name = L["Auras"],
confirm = true,
confirmText = L["Are you sure you want to reset Auras settings?"],
func = function() E:CopyTable(E.db.auras, P.auras) end
},
chat = {
order = 8,
type = "execute",
name = L["Chat"],
confirm = true,
confirmText = L["Are you sure you want to reset Chat settings?"],
func = function() E:CopyTable(E.db.chat, P.chat) end
},
cooldown = {
order = 9,
type = "execute",
name = L["Cooldown Text"],
confirm = true,
confirmText = L["Are you sure you want to reset Cooldown settings?"],
func = function() E:CopyTable(E.db.cooldown, P.cooldown) end
},
databars = {
order = 10,
type = "execute",
name = L["DataBars"],
confirm = true,
confirmText = L["Are you sure you want to reset DataBars settings?"],
func = function() E:CopyTable(E.db.databars, P.databars) end
},
datatexts = {
order = 11,
type = "execute",
name = L["DataTexts"],
confirm = true,
confirmText = L["Are you sure you want to reset DataTexts settings?"],
func = function() E:CopyTable(E.db.datatexts, P.datatexts) end
},
nameplates = {
order = 12,
type = "execute",
name = L["NamePlates"],
confirm = true,
confirmText = L["Are you sure you want to reset NamePlates settings?"],
func = function() E:CopyTable(E.db.nameplates, P.nameplates) end
},
tooltip = {
order = 13,
type = "execute",
name = L["Tooltip"],
confirm = true,
confirmText = L["Are you sure you want to reset Tooltip settings?"],
func = function() E:CopyTable(E.db.tooltip, P.tooltip) end
},
uniframes = {
order = 14,
type = "execute",
name = L["UnitFrames"],
confirm = true,
confirmText = L["Are you sure you want to reset UnitFrames settings?"],
func = function() E:CopyTable(E.db.unitframe, P.unitframe) UF:Update_AllFrames() end
}
}
}
}
}