7254 lines
338 KiB
Lua
7254 lines
338 KiB
Lua
if (true) then
|
|
--return
|
|
end
|
|
|
|
--[[
|
|
search '~10' to go directly to tooltips settings
|
|
|
|
~01 - display
|
|
~02 - skins
|
|
~03 - bars general
|
|
~04 - bars texts
|
|
~05 - title bar
|
|
~06 - body setings
|
|
~07 - status bar
|
|
~08 - plugins
|
|
~09 - profiles
|
|
~10 - tooltips
|
|
~11 - datafeed
|
|
~12 - wallpaper
|
|
~13 - automation
|
|
~14 - raid tools
|
|
~15 - broadcaster
|
|
~16 - custom spells
|
|
~17 - charts data
|
|
~18 - mythic dungeon
|
|
~19 - search results
|
|
~20 - combatlog options
|
|
--]]
|
|
|
|
|
|
local Details = _G.Details
|
|
local DF = _G.DetailsFramework
|
|
local Loc = _G.LibStub("AceLocale-3.0"):GetLocale("Details")
|
|
local SharedMedia = _G.LibStub:GetLibrary("LibSharedMedia-3.0")
|
|
local LDB = _G.LibStub("LibDataBroker-1.1", true)
|
|
local LDBIcon = LDB and _G.LibStub("LibDBIcon-1.0", true)
|
|
local addonName, Details222 = ...
|
|
local _ = nil
|
|
local unpack = _G.unpack
|
|
local tinsert = table.insert
|
|
|
|
local startX = 200
|
|
local startY = -75
|
|
local heightSize = 600
|
|
local presetVersion = 3
|
|
|
|
--templates
|
|
local options_text_template = DF:GetTemplate("font", "OPTIONS_FONT_TEMPLATE")
|
|
local options_dropdown_template = DF:GetTemplate("dropdown", "OPTIONS_DROPDOWN_TEMPLATE")
|
|
local options_switch_template = DF:GetTemplate("switch", "OPTIONS_CHECKBOX_TEMPLATE")
|
|
local options_slider_template = DF:GetTemplate("slider", "OPTIONS_SLIDER_TEMPLATE")
|
|
local options_button_template = DF:GetTemplate("button", "OPTIONS_BUTTON_TEMPLATE")
|
|
|
|
local subSectionTitleTextTemplate = DF:GetTemplate("font", "ORANGE_FONT_TEMPLATE")
|
|
|
|
local font_select_icon, font_select_texcoord = [[Interface\AddOns\Details\images\icons]], {472/512, 513/512, 186/512, 230/512}
|
|
|
|
--store the current instance being edited
|
|
local currentInstance
|
|
|
|
function Details222.OptionsPanel.SetCurrentInstance(instance)
|
|
currentInstance = instance
|
|
end
|
|
|
|
function Details222.OptionsPanel.SetCurrentInstanceAndRefresh(instance)
|
|
currentInstance = instance
|
|
_G.DetailsOptionsWindow.instance = instance
|
|
|
|
--get all the frames created and update the options
|
|
for i = 1, Details222.OptionsPanel.maxSectionIds do
|
|
local sectionFrame = Details222.OptionsPanel.GetOptionsSection(i)
|
|
if (sectionFrame.RefreshOptions) then
|
|
sectionFrame:RefreshOptions()
|
|
end
|
|
end
|
|
Details222.OptionsPanel.UpdateAutoHideSettings(instance)
|
|
end
|
|
|
|
function Details222.OptionsPanel.UpdateAutoHideSettings(instance)
|
|
for contextId, line in ipairs(_G.DetailsOptionsWindowTab13.AutoHideOptions) do --tab13 = automation settings
|
|
line.enabledCheckbox:SetValue(instance.hide_on_context[contextId].enabled)
|
|
line.reverseCheckbox:SetValue(instance.hide_on_context[contextId].inverse)
|
|
line.alphaSlider:SetValue(instance.hide_on_context[contextId].value)
|
|
end
|
|
end
|
|
|
|
function Details222.OptionsPanel.RefreshInstances(instance)
|
|
if (instance) then
|
|
Details:InstanceGroupCall(instance, "InstanceRefreshRows")
|
|
instance:InstanceReset()
|
|
else
|
|
Details:InstanceGroupCall(instance, "InstanceRefreshRows")
|
|
Details:InstanceGroupCall(instance, "InstanceReset")
|
|
end
|
|
end
|
|
|
|
function Details222.OptionsPanel.GetCurrentInstanceInOptionsPanel()
|
|
return currentInstance
|
|
end
|
|
|
|
local afterUpdate = function(instance)
|
|
Details:SendOptionsModifiedEvent(instance or currentInstance)
|
|
end
|
|
|
|
local isGroupEditing = function()
|
|
return Details.options_group_edit
|
|
end
|
|
|
|
local editInstanceSetting = function(instance, funcName, ...)
|
|
if (Details[funcName]) then
|
|
if (isGroupEditing()) then
|
|
Details:InstanceGroupCall(instance, funcName, ...)
|
|
else
|
|
instance[funcName](instance, ...)
|
|
end
|
|
else
|
|
local keyName = funcName
|
|
local value1, value2, value3 = ...
|
|
|
|
if (value2 == nil) then
|
|
if (isGroupEditing()) then
|
|
Details:InstanceGroupEditSetting(instance, keyName, value1)
|
|
else
|
|
instance[keyName] = value1
|
|
end
|
|
else
|
|
if (value3 == nil) then
|
|
if (isGroupEditing()) then
|
|
Details:InstanceGroupEditSettingOnTable(instance, keyName, value1, value2)
|
|
else
|
|
instance[keyName][value1] = value2
|
|
end
|
|
else
|
|
if (isGroupEditing()) then
|
|
Details:InstanceGroupEditSettingOnTable(instance, keyName, value1, value2, value3)
|
|
else
|
|
instance[keyName][value1][value2] = value3
|
|
end
|
|
end
|
|
end
|
|
end
|
|
end
|
|
|
|
-- ~01 - display
|
|
do
|
|
local buildSection = function(sectionFrame)
|
|
|
|
--abbreviation options
|
|
local icon = [[Interface\COMMON\mini-hourglass]]
|
|
local iconcolor = {1, 1, 1, .5}
|
|
local iconsize = {14, 14}
|
|
|
|
local onSelectTimeAbbreviation = function(_, _, abbreviationtype)
|
|
Details.ps_abbreviation = abbreviationtype
|
|
Details:UpdateToKFunctions()
|
|
afterUpdate()
|
|
end
|
|
|
|
local abbreviationOptions = {
|
|
{value = 1, label = Loc ["STRING_OPTIONS_PS_ABBREVIATE_NONE"], desc = Loc ["STRING_EXAMPLE"] .. ": 305.500 -> 305500", onclick = onSelectTimeAbbreviation, icon = icon, iconcolor = iconcolor, iconsize = iconsize}, --, desc = ""
|
|
{value = 2, label = Loc ["STRING_OPTIONS_PS_ABBREVIATE_TOK"], desc = Loc ["STRING_EXAMPLE"] .. ": 305.500 -> 305.5K", onclick = onSelectTimeAbbreviation, icon = icon, iconcolor = iconcolor, iconsize = iconsize}, --, desc = ""
|
|
{value = 3, label = Loc ["STRING_OPTIONS_PS_ABBREVIATE_TOK2"], desc = Loc ["STRING_EXAMPLE"] .. ": 305.500 -> 305K", onclick = onSelectTimeAbbreviation, icon = icon, iconcolor = iconcolor, iconsize = iconsize}, --, desc = ""
|
|
{value = 4, label = Loc ["STRING_OPTIONS_PS_ABBREVIATE_TOK0"], desc = Loc ["STRING_EXAMPLE"] .. ": 25.305.500 -> 25M", onclick = onSelectTimeAbbreviation, icon = icon, iconcolor = iconcolor, iconsize = iconsize}, --, desc = ""
|
|
{value = 5, label = Loc ["STRING_OPTIONS_PS_ABBREVIATE_TOKMIN"], desc = Loc ["STRING_EXAMPLE"] .. ": 305.500 -> 305.5k", onclick = onSelectTimeAbbreviation, icon = icon, iconcolor = iconcolor, iconsize = iconsize}, --, desc = ""
|
|
{value = 6, label = Loc ["STRING_OPTIONS_PS_ABBREVIATE_TOK2MIN"], desc = Loc ["STRING_EXAMPLE"] .. ": 305.500 -> 305k", onclick = onSelectTimeAbbreviation, icon = icon, iconcolor = iconcolor, iconsize = iconsize}, --, desc = ""
|
|
{value = 7, label = Loc ["STRING_OPTIONS_PS_ABBREVIATE_TOK0MIN"], desc = Loc ["STRING_EXAMPLE"] .. ": 25.305.500 -> 25m", onclick = onSelectTimeAbbreviation, icon = icon, iconcolor = iconcolor, iconsize = iconsize}, --, desc = ""
|
|
{value = 8, label = Loc ["STRING_OPTIONS_PS_ABBREVIATE_COMMA"], desc = Loc ["STRING_EXAMPLE"] .. ": 25305500 -> 25.305.500", onclick = onSelectTimeAbbreviation, icon = icon, iconcolor = iconcolor, iconsize = iconsize} --, desc = ""
|
|
}
|
|
local buildAbbreviationMenu = function()
|
|
return abbreviationOptions
|
|
end
|
|
|
|
--number system
|
|
local onSelectNumeralSystem = function(_, _, systemNumber)
|
|
Details:SelectNumericalSystem(systemNumber)
|
|
end
|
|
|
|
local asian1K, asian10K, asian1B = DF:GetAsianNumberSymbols()
|
|
local asianNumerals = {value = 2, label = Loc ["STRING_NUMERALSYSTEM_MYRIAD_EASTASIA"], desc = "1" .. asian1K .. " = 1.000 \n1" .. asian10K .. " = 10.000 \n10" .. asian10K .. " = 100.000 \n100" .. asian10K .. " = 1.000.000", onclick = onSelectNumeralSystem, icon = icon, iconcolor = iconcolor, iconsize = iconsize}
|
|
|
|
--if region is western it'll be using Korean symbols, set a font on the dropdown so it won't show ?????
|
|
local clientRegion = DF:GetClientRegion()
|
|
if (clientRegion == "western" or clientRegion == "russia") then
|
|
asianNumerals.descfont = DF:GetBestFontForLanguage("koKR")
|
|
end
|
|
|
|
local numeralSystems = {
|
|
{value = 1, label = Loc ["STRING_NUMERALSYSTEM_ARABIC_WESTERN"], desc = "1K = 1.000 \n10K = 10.000 \n100K = 100.000 \n1M = 1.000.000", onclick = onSelectNumeralSystem, icon = icon, iconcolor = iconcolor, iconsize = iconsize},
|
|
asianNumerals
|
|
}
|
|
|
|
local buildNumeralSystemsMenu = function()
|
|
return numeralSystems
|
|
end
|
|
|
|
--time measure type
|
|
local onSelectTimeType = function(_, _, timetype)
|
|
Details.time_type = timetype
|
|
Details.time_type_original = timetype
|
|
Details:RefreshMainWindow(-1, true)
|
|
afterUpdate()
|
|
end
|
|
|
|
local timetypeOptions = {
|
|
--localize-me
|
|
{value = 1, label = "Activity Time", onclick = onSelectTimeType, icon = "Interface\\Icons\\Achievement_Quests_Completed_Daily_08", iconcolor = {1, .9, .9}, texcoord = {0.078125, 0.921875, 0.078125, 0.921875}},
|
|
{value = 2, label = "Effective Time", onclick = onSelectTimeType, icon = "Interface\\Icons\\Achievement_Quests_Completed_08"},
|
|
}
|
|
local buildTimeTypeMenu = function()
|
|
return timetypeOptions
|
|
end
|
|
|
|
--auto erase | erase data
|
|
local onSelectEraseData = function(_, _, eraseType)
|
|
Details.segments_auto_erase = eraseType
|
|
afterUpdate()
|
|
end
|
|
|
|
local eraseDataOptions = {
|
|
{value = 1, label = Loc ["STRING_OPTIONS_ED1"], onclick = onSelectEraseData, icon = [[Interface\Addons\Details\Images\reset_button2]]},
|
|
{value = 2, label = Loc ["STRING_OPTIONS_ED2"], onclick = onSelectEraseData, icon = [[Interface\Addons\Details\Images\reset_button2]]},
|
|
{value = 3, label = Loc ["STRING_OPTIONS_ED3"], onclick = onSelectEraseData, icon = [[Interface\Addons\Details\Images\reset_button2]]},
|
|
}
|
|
local buildEraseDataMenu = function()
|
|
return eraseDataOptions
|
|
end
|
|
|
|
local sectionOptions = {
|
|
{type = "label", get = function() return Loc ["STRING_OPTIONS_GENERAL_ANCHOR"] end, text_template = subSectionTitleTextTemplate},
|
|
{--animate bars
|
|
type = "toggle",
|
|
get = function() return Details.use_row_animations end,
|
|
set = function(self, fixedparam, value)
|
|
Details:SetUseAnimations(value)
|
|
afterUpdate()
|
|
end,
|
|
name = Loc ["STRING_OPTIONS_ANIMATEBARS"],
|
|
desc = Loc ["STRING_OPTIONS_ANIMATEBARS_DESC"],
|
|
boxfirst = true,
|
|
},
|
|
{--scroll speed
|
|
type = "range",
|
|
get = function() return Details.scroll_speed end,
|
|
set = function(self, fixedparam, value)
|
|
Details.scroll_speed = value
|
|
end,
|
|
min = 1,
|
|
max = 3,
|
|
step = 1,
|
|
name = Loc ["STRING_OPTIONS_WHEEL_SPEED"],
|
|
desc = Loc ["STRING_OPTIONS_WHEEL_SPEED_DESC"],
|
|
},
|
|
{--instances amount
|
|
type = "range",
|
|
get = function() return Details.instances_amount end,
|
|
set = function(self, fixedparam, value)
|
|
Details.instances_amount = value
|
|
end,
|
|
min = 1,
|
|
max = 30,
|
|
step = 1,
|
|
name = Loc ["STRING_OPTIONS_MAXINSTANCES"],
|
|
desc = Loc ["STRING_OPTIONS_MAXINSTANCES_DESC"],
|
|
},
|
|
{--abbreviation type
|
|
type = "select",
|
|
get = function() return Details.ps_abbreviation end,
|
|
values = function()
|
|
return buildAbbreviationMenu()
|
|
end,
|
|
name = Loc ["STRING_OPTIONS_PS_ABBREVIATE"],
|
|
desc = Loc ["STRING_OPTIONS_PS_ABBREVIATE_DESC"],
|
|
},
|
|
{--number system
|
|
type = "select",
|
|
get = function() return Details.numerical_system end,
|
|
values = function()
|
|
return buildNumeralSystemsMenu()
|
|
end,
|
|
name = Loc ["STRING_NUMERALSYSTEM"],
|
|
desc = Loc ["STRING_NUMERALSYSTEM_DESC"],
|
|
},
|
|
{--update speed
|
|
type = "range",
|
|
get = function() return Details.update_speed end,
|
|
set = function(self, fixedparam, value)
|
|
Details:SetWindowUpdateSpeed(value)
|
|
afterUpdate()
|
|
end,
|
|
min = 0.05,
|
|
max = 3,
|
|
step = 0.05,
|
|
usedecimals = true,
|
|
name = Loc ["STRING_OPTIONS_WINDOWSPEED"],
|
|
desc = Loc ["STRING_OPTIONS_WINDOWSPEED_DESC"],
|
|
},
|
|
{--time measure
|
|
type = "select",
|
|
get = function() return Details.time_type end,
|
|
values = function()
|
|
return buildTimeTypeMenu()
|
|
end,
|
|
name = Loc ["STRING_OPTIONS_TIMEMEASURE"],
|
|
desc = Loc ["STRING_OPTIONS_TIMEMEASURE_DESC"],
|
|
},
|
|
|
|
{--use real time
|
|
type = "toggle",
|
|
get = function() return Details.use_realtimedps end,
|
|
set = function(self, fixedparam, value)
|
|
Details.use_realtimedps = value
|
|
end,
|
|
name = "Show 'Real Time' DPS",
|
|
desc = "If Enabled and while in combat, show the damage done of the latest 5 seconds divided by 5.",
|
|
boxfirst = true,
|
|
},
|
|
|
|
{--real time dps order bars
|
|
type = "toggle",
|
|
get = function() return Details.realtimedps_order_bars end,
|
|
set = function(self, fixedparam, value)
|
|
Details.realtimedps_order_bars = value
|
|
end,
|
|
name = "Order Bars By Real Time DPS",
|
|
desc = "If Enabled, players dealing more real time DPS are place above other players in the window.",
|
|
boxfirst = true,
|
|
},
|
|
|
|
{--always use real time in arenas
|
|
type = "toggle",
|
|
get = function() return Details.realtimedps_always_arena end,
|
|
set = function(self, fixedparam, value)
|
|
Details.realtimedps_always_arena = value
|
|
end,
|
|
name = "Always Use Real Time in Arenas",
|
|
desc = "If Enabled, real time DPS is always used in arenas, even if the option above is disabled.",
|
|
boxfirst = true,
|
|
},
|
|
|
|
{type = "blank"},
|
|
{type = "label", get = function() return "Segments:" end, text_template = subSectionTitleTextTemplate},
|
|
|
|
{--segments locked
|
|
type = "toggle",
|
|
get = function() return Details.instances_segments_locked end,
|
|
set = function(self, fixedparam, value)
|
|
Details.instances_segments_locked = value
|
|
end,
|
|
name = Loc ["STRING_OPTIONS_LOCKSEGMENTS"],
|
|
desc = Loc ["STRING_OPTIONS_LOCKSEGMENTS_DESC"],
|
|
boxfirst = true,
|
|
},
|
|
|
|
{--battleground remote parser
|
|
type = "toggle",
|
|
get = function() return Details.use_battleground_server_parser end,
|
|
set = function(self, fixedparam, value)
|
|
Details.use_battleground_server_parser = value
|
|
end,
|
|
name = Loc ["STRING_OPTIONS_BG_UNIQUE_SEGMENT"],
|
|
desc = Loc ["STRING_OPTIONS_BG_UNIQUE_SEGMENT_DESC"],
|
|
boxfirst = true,
|
|
},
|
|
{--battleground show enemies
|
|
type = "toggle",
|
|
get = function() return Details.pvp_as_group end,
|
|
set = function(self, fixedparam, value)
|
|
Details.pvp_as_group = value
|
|
end,
|
|
name = Loc ["STRING_OPTIONS_BG_ALL_ALLY"],
|
|
desc = Loc ["STRING_OPTIONS_BG_ALL_ALLY_DESC"],
|
|
boxfirst = true,
|
|
},
|
|
|
|
{--max segments
|
|
type = "range",
|
|
get = function() return Details.segments_amount end,
|
|
set = function(self, fixedparam, value)
|
|
Details.segments_amount = value
|
|
afterUpdate()
|
|
end,
|
|
min = 1,
|
|
max = 40,
|
|
step = 1,
|
|
name = Loc ["STRING_OPTIONS_MAXSEGMENTS"],
|
|
desc = Loc ["STRING_OPTIONS_MAXSEGMENTS_DESC"],
|
|
},
|
|
|
|
{--max segments saved
|
|
type = "range",
|
|
get = function() return Details.segments_amount_to_save end,
|
|
set = function(self, fixedparam, value)
|
|
Details.segments_amount_to_save = value
|
|
afterUpdate()
|
|
end,
|
|
min = 1,
|
|
max = 40,
|
|
step = 1,
|
|
name = Loc ["STRING_OPTIONS_SEGMENTSSAVE"],
|
|
desc = Loc ["STRING_OPTIONS_SEGMENTSSAVE_DESC"],
|
|
},
|
|
|
|
{--max segments on boss wipes
|
|
type = "range",
|
|
get = function() return Details.segments_amount_boss_wipes end,
|
|
set = function(self, fixedparam, value)
|
|
Details.segments_amount_boss_wipes = value
|
|
afterUpdate()
|
|
end,
|
|
min = 1,
|
|
max = 40,
|
|
step = 1,
|
|
name = "Segments Boss Wipe",
|
|
desc = "Amount of segments to keep for wipes on the same boss.",
|
|
hidden = true,
|
|
},
|
|
{--wipe segments keep the best segments and delete the worst ones
|
|
type = "toggle",
|
|
get = function() return Details.segments_boss_wipes_keep_best_performance end,
|
|
set = function(self, fixedparam, value)
|
|
Details.segments_boss_wipes_keep_best_performance = value
|
|
end,
|
|
name = "Keep Best Performance (boss wipes)",
|
|
desc = "Keep the segments with more progress in the boss health and delete the ones with less progress.",
|
|
boxfirst = true,
|
|
hidden = true,
|
|
},
|
|
|
|
{type = "breakline"},
|
|
{type = "label", get = function() return Loc ["STRING_OPTIONS_OVERALL_ANCHOR"] end, text_template = subSectionTitleTextTemplate},
|
|
|
|
{--erase overall data on new boss
|
|
type = "toggle",
|
|
get = function() return Details.overall_clear_newboss end,
|
|
set = function(self, fixedparam, value)
|
|
Details:SetOverallResetOptions(value)
|
|
afterUpdate()
|
|
end,
|
|
name = Loc ["STRING_OPTIONS_OVERALL_NEWBOSS"],
|
|
desc = Loc ["STRING_OPTIONS_OVERALL_NEWBOSS_DESC"],
|
|
boxfirst = true,
|
|
},
|
|
{--erase overall data on mythic plus
|
|
type = "toggle",
|
|
get = function() return Details.overall_clear_newchallenge end,
|
|
set = function(self, fixedparam, value)
|
|
Details:SetOverallResetOptions(nil, value)
|
|
afterUpdate()
|
|
end,
|
|
name = Loc ["STRING_OPTIONS_OVERALL_MYTHICPLUS"],
|
|
desc = Loc ["STRING_OPTIONS_OVERALL_MYTHICPLUS_DESC"],
|
|
boxfirst = true,
|
|
},
|
|
{--erase overall data on logout
|
|
type = "toggle",
|
|
get = function() return Details.overall_clear_pvp end,
|
|
set = function(self, fixedparam, value)
|
|
Details:SetOverallResetOptions(nil, nil, nil, value)
|
|
afterUpdate()
|
|
end,
|
|
name = "Clear On Start PVP", --localize-me
|
|
desc = "When enabled, overall data is automatically wiped when a new arena or battleground starts.", --localize-me
|
|
boxfirst = true,
|
|
},
|
|
{--erase overall data on logout
|
|
type = "toggle",
|
|
get = function() return Details.overall_clear_logout end,
|
|
set = function(self, fixedparam, value)
|
|
Details:SetOverallResetOptions(nil, nil, value)
|
|
afterUpdate()
|
|
end,
|
|
name = Loc ["STRING_OPTIONS_OVERALL_LOGOFF"],
|
|
desc = Loc ["STRING_OPTIONS_OVERALL_LOGOFF_DESC"],
|
|
boxfirst = true,
|
|
},
|
|
{--auto switch to dynamic overall data when selecting overall data
|
|
type = "toggle",
|
|
get = function() return Details.auto_swap_to_dynamic_overall end,
|
|
set = function(self, fixedparam, value)
|
|
Details.auto_swap_to_dynamic_overall = value
|
|
afterUpdate()
|
|
end,
|
|
name = "Use Dynamic Overall Damage",
|
|
desc = "When showing Damage Done Overall, swap to Dynamic Overall Damage on entering combat.",
|
|
boxfirst = true,
|
|
},
|
|
|
|
{type = "blank"},
|
|
|
|
{type = "label", get = function() return "Window Control:" end, text_template = DF:GetTemplate("font", "ORANGE_FONT_TEMPLATE")}, --localize-me
|
|
{--lock instance
|
|
type = "execute",
|
|
func = function(self)
|
|
local instanceLockButton = currentInstance.baseframe.lock_button
|
|
Details.lock_instance_function(instanceLockButton, "leftclick", true, true)
|
|
end,
|
|
icontexture = [[Interface\PetBattles\PetBattle-LockIcon]],
|
|
icontexcoords = {0.0703125, 0.9453125, 0.0546875, 0.9453125},
|
|
name = Loc ["STRING_OPTIONS_WC_LOCK"],
|
|
desc = Loc ["STRING_OPTIONS_WC_LOCK_DESC"],
|
|
},
|
|
{--ungroup instance
|
|
type = "execute",
|
|
func = function(self)
|
|
currentInstance:UngroupInstance()
|
|
end,
|
|
icontexture = [[Interface\AddOns\Details\images\icons]],
|
|
icontexcoords = {160/512, 179/512, 142/512, 162/512},
|
|
name = Loc ["STRING_OPTIONS_WC_UNSNAP"],
|
|
desc = Loc ["STRING_OPTIONS_WC_UNSNAP_DESC"],
|
|
},
|
|
{--close instance close window
|
|
type = "execute",
|
|
func = function(self)
|
|
currentInstance:Shutdown()
|
|
end,
|
|
icontexture = [[Interface\Buttons\UI-Panel-MinimizeButton-Up]],
|
|
icontexcoords = {0.143125, 0.8653125, 0.1446875, 0.8653125},
|
|
name = Loc ["STRING_OPTIONS_WC_CLOSE"],
|
|
desc = Loc ["STRING_OPTIONS_WC_CLOSE_DESC"],
|
|
},
|
|
{--create instance
|
|
type = "execute",
|
|
func = function(self)
|
|
Details:CreateInstance()
|
|
end,
|
|
icontexture = [[Interface\Buttons\UI-AttributeButton-Encourage-Up]],
|
|
--icontexcoords = {160/512, 179/512, 142/512, 162/512},
|
|
name = Loc ["STRING_OPTIONS_WC_CREATE"],
|
|
desc = Loc ["STRING_OPTIONS_WC_CREATE_DESC"],
|
|
},
|
|
|
|
{type = "blank"},
|
|
|
|
{--class colors
|
|
type = "execute",
|
|
func = function(self)
|
|
Details:OpenClassColorsConfig()
|
|
end,
|
|
icontexture = [[Interface\AddOns\Details\images\icons]],
|
|
icontexcoords = {432/512, 464/512, 276/512, 309/512},
|
|
name = Loc ["STRING_OPTIONS_CHANGE_CLASSCOLORS"],
|
|
desc = Loc ["STRING_OPTIONS_CHANGE_CLASSCOLORS_DESC"],
|
|
},
|
|
{--bookmarks
|
|
type = "execute",
|
|
func = function(self)
|
|
Details:OpenBookmarkConfig()
|
|
end,
|
|
icontexture = [[Interface\LootFrame\toast-star]],
|
|
icontexcoords = {0.1, .64, 0.1, .69},
|
|
name = Loc ["STRING_OPTIONS_WC_BOOKMARK"],
|
|
desc = Loc ["STRING_OPTIONS_WC_BOOKMARK_DESC"],
|
|
},
|
|
|
|
{type = "blank"},
|
|
|
|
{type = "label", get = function() return "Immersion" end, text_template = subSectionTitleTextTemplate}, --localize-me
|
|
{--show pets when solo
|
|
type = "toggle",
|
|
get = function() return Details.immersion_pets_on_solo_play end,
|
|
set = function(self, fixedparam, value)
|
|
Details.immersion_pets_on_solo_play = value
|
|
afterUpdate()
|
|
end,
|
|
name = "Show pets when solo", --localize-me
|
|
desc = "Show pets when solo",
|
|
boxfirst = true,
|
|
},
|
|
|
|
{--always show players even on stardard mode
|
|
type = "toggle",
|
|
get = function() return Details.all_players_are_group end,
|
|
set = function(self, fixedparam, value)
|
|
Details.all_players_are_group = value
|
|
afterUpdate()
|
|
end,
|
|
name = Loc ["STRING_OPTIONS_ALWAYSSHOWPLAYERS"],
|
|
desc = Loc ["STRING_OPTIONS_ALWAYSSHOWPLAYERS_DESC"],
|
|
boxfirst = true,
|
|
},
|
|
|
|
|
|
{type = "breakline"},
|
|
{type = "label", get = function() return Loc ["STRING_OPTIONS_SOCIAL"] end, text_template = subSectionTitleTextTemplate},
|
|
{--nickname
|
|
type = "textentry",
|
|
get = function() return Details:GetNickname(_G.UnitName("player"), _G.UnitName("player"), true) or "" end,
|
|
func = function(self, _, text)
|
|
local accepted, errortext = Details:SetNickname(text)
|
|
if (not accepted) then
|
|
Details:ResetPlayerPersona()
|
|
Details222.OptionsPanel.SetCurrentInstanceAndRefresh(currentInstance)
|
|
end
|
|
afterUpdate()
|
|
end,
|
|
name = Loc ["STRING_OPTIONS_NICKNAME"],
|
|
desc = Loc ["STRING_OPTIONS_NICKNAME"],
|
|
},
|
|
{--remove nickname
|
|
type = "execute",
|
|
func = function(self)
|
|
Details:ResetPlayerPersona()
|
|
Details222.OptionsPanel.SetCurrentInstanceAndRefresh(currentInstance)
|
|
end,
|
|
icontexture = [[Interface\GLUES\LOGIN\Glues-CheckBox-Check]],
|
|
--icontexcoords = {160/512, 179/512, 142/512, 162/512},
|
|
name = "Reset Nickname",
|
|
desc = "Reset Nickname",
|
|
},
|
|
{--ignore nicknames
|
|
type = "toggle",
|
|
get = function() return Details.ignore_nicktag end,
|
|
set = function(self, fixedparam, value)
|
|
Details.ignore_nicktag = value
|
|
afterUpdate()
|
|
end,
|
|
name = Loc ["STRING_OPTIONS_IGNORENICKNAME"],
|
|
desc = Loc ["STRING_OPTIONS_IGNORENICKNAME_DESC"],
|
|
boxfirst = true,
|
|
},
|
|
|
|
{--remove realm name
|
|
type = "toggle",
|
|
get = function() return Details.remove_realm_from_name end,
|
|
set = function(self, fixedparam, value)
|
|
Details.remove_realm_from_name = value
|
|
afterUpdate()
|
|
end,
|
|
name = Loc ["STRING_OPTIONS_REALMNAME"],
|
|
desc = Loc ["STRING_OPTIONS_REALMNAME_DESC"],
|
|
boxfirst = true,
|
|
},
|
|
|
|
{type = "blank"},
|
|
{type = "label", get = function() return "Your Self" end, text_template = subSectionTitleTextTemplate},
|
|
|
|
{--player bar color toggle
|
|
type = "toggle",
|
|
get = function() return Details.use_self_color end,
|
|
set = function(self, fixedparam, value)
|
|
Details.use_self_color = value
|
|
afterUpdate()
|
|
end,
|
|
name = "Use Different Color for You",
|
|
desc = "Use a different color on your own bar",
|
|
boxfirst = true,
|
|
},
|
|
|
|
{--player bar color
|
|
type = "color",
|
|
get = function()
|
|
local r, g, b = unpack(Details.class_colors.SELF)
|
|
return {r, g, b, 1}
|
|
end,
|
|
set = function(self, r, g, b, a)
|
|
Details.class_colors.SELF[1] = r
|
|
Details.class_colors.SELF[2] = g
|
|
Details.class_colors.SELF[3] = b
|
|
afterUpdate()
|
|
end,
|
|
name = "Your Bar Color",
|
|
desc = "Your Bar Color",
|
|
boxfirst = true,
|
|
},
|
|
|
|
{type = "blank"},
|
|
{type = "label", get = function() return "Auto Erase:" end, text_template = subSectionTitleTextTemplate},
|
|
|
|
{--auto erase settings | erase data
|
|
type = "select",
|
|
get = function() return Details.segments_auto_erase end,
|
|
values = function()
|
|
return buildEraseDataMenu()
|
|
end,
|
|
name = Loc ["STRING_OPTIONS_ED"],
|
|
desc = Loc ["STRING_OPTIONS_ED_DESC"],
|
|
},
|
|
|
|
{--auto erase trash segments
|
|
type = "toggle",
|
|
get = function() return Details.trash_auto_remove end,
|
|
set = function(self, fixedparam, value)
|
|
Details.trash_auto_remove = value
|
|
afterUpdate()
|
|
end,
|
|
name = Loc ["STRING_OPTIONS_CLEANUP"],
|
|
desc = Loc ["STRING_OPTIONS_CLEANUP_DESC"],
|
|
boxfirst = true,
|
|
},
|
|
{--auto erase world segments
|
|
type = "toggle",
|
|
get = function() return Details.world_combat_is_trash end,
|
|
set = function(self, fixedparam, value)
|
|
Details.world_combat_is_trash = value
|
|
afterUpdate()
|
|
end,
|
|
name = Loc ["STRING_OPTIONS_PERFORMANCE_ERASEWORLD"],
|
|
desc = Loc ["STRING_OPTIONS_PERFORMANCE_ERASEWORLD_DESC"],
|
|
boxfirst = true,
|
|
},
|
|
{--erase chart data
|
|
type = "toggle",
|
|
get = function() return Details.clear_graphic end,
|
|
set = function(self, fixedparam, value)
|
|
Details.clear_graphic = value
|
|
afterUpdate()
|
|
end,
|
|
name = Loc ["STRING_OPTIONS_ERASECHARTDATA"],
|
|
desc = Loc ["STRING_OPTIONS_ERASECHARTDATA_DESC"],
|
|
boxfirst = true,
|
|
},
|
|
|
|
}
|
|
|
|
sectionFrame.sectionOptions = sectionOptions
|
|
sectionOptions.always_boxfirst = true
|
|
DF:BuildMenu(sectionFrame, sectionOptions, startX, startY-20, heightSize+40, false, options_text_template, options_dropdown_template, options_switch_template, true, options_slider_template, options_button_template)
|
|
end
|
|
|
|
tinsert(Details.optionsSection, buildSection) --optionsSection is declared on boot.lua
|
|
end
|
|
|
|
-- ~02 - skins
|
|
do
|
|
local buildSection = function(sectionFrame)
|
|
|
|
function Details:OptionPanelOnChangeSkin(skinName)
|
|
self:ChangeSkin(skinName)
|
|
if (self._ElvUIEmbed) then
|
|
local AS, ASL = unpack(_G.AddOnSkins)
|
|
AS:Embed_Details()
|
|
end
|
|
end
|
|
|
|
--skin selection
|
|
local onSelectSkin = function(_, _, skinName)
|
|
if (isGroupEditing()) then
|
|
Details:InstanceGroupCall(currentInstance, "OptionPanelOnChangeSkin", skinName)
|
|
else
|
|
currentInstance:OptionPanelOnChangeSkin(skinName)
|
|
end
|
|
afterUpdate()
|
|
end
|
|
|
|
local buildSkinMenu = function()
|
|
local skinOptions = {}
|
|
for skin_name, skin_table in pairs(Details.skins) do
|
|
local file = skin_table.file:gsub([[Interface\AddOns\Details\images\skins\]], "")
|
|
local desc = "Author: |cFFFFFFFF" .. skin_table.author .. "|r\nVersion: |cFFFFFFFF" .. skin_table.version .. "|r\nSite: |cFFFFFFFF" .. skin_table.site .. "|r\n\nDesc: |cFFFFFFFF" .. skin_table.desc .. "|r\n\nFile: |cFFFFFFFF" .. file .. ".tga|r"
|
|
skinOptions [#skinOptions+1] = {value = skin_name, label = skin_name, onclick = onSelectSkin, icon = "Interface\\GossipFrame\\TabardGossipIcon", desc = desc}
|
|
end
|
|
return skinOptions
|
|
end
|
|
|
|
--save skin
|
|
local saveAsSkin = function(skinName, dontSave)
|
|
local fileName = skinName or ""
|
|
|
|
if (fileName == "") then
|
|
return
|
|
end
|
|
|
|
local savedObject = {
|
|
version = presetVersion,
|
|
name = skinName,
|
|
}
|
|
|
|
for key, value in pairs(currentInstance) do
|
|
if (Details.instance_defaults[key] ~= nil) then
|
|
if (type(value) == "table") then
|
|
savedObject[key] = Details.CopyTable(value)
|
|
else
|
|
savedObject[key] = value
|
|
end
|
|
end
|
|
end
|
|
|
|
if (not dontSave) then
|
|
Details.savedStyles[#Details.savedStyles+1] = savedObject
|
|
end
|
|
|
|
return savedObject
|
|
end
|
|
|
|
--load skin
|
|
local loadSkin = function(instance, skinObject)
|
|
function Details:LoadSkinFromOptionsPanel(skinObject)
|
|
--set skin preset
|
|
local instance = self
|
|
local skin = skinObject.skin
|
|
instance.skin = ""
|
|
instance:ChangeSkin(skin)
|
|
|
|
--overwrite all instance parameters with saved ones
|
|
for key, value in pairs(skinObject) do
|
|
if (key ~= "skin" and not Details.instance_skin_ignored_values[key]) then
|
|
if (type(value) == "table") then
|
|
instance[key] = Details.CopyTable(value)
|
|
else
|
|
instance[key] = value
|
|
end
|
|
end
|
|
end
|
|
|
|
--apply all changed attributes
|
|
instance:ChangeSkin()
|
|
end
|
|
|
|
if (isGroupEditing()) then
|
|
Details:InstanceGroupCall(instance, "LoadSkinFromOptionsPanel", skinObject)
|
|
else
|
|
instance:LoadSkinFromOptionsPanel(skinObject)
|
|
end
|
|
end
|
|
|
|
--import skin string
|
|
local importSaved = function()
|
|
--when clicking in the okay button in the import window, it send the text in the first argument
|
|
Details:ShowImportWindow("", function(skinString)
|
|
if (type(skinString) ~= "string" or string.len(skinString) < 2) then
|
|
return
|
|
end
|
|
|
|
skinString = DF:Trim(skinString)
|
|
|
|
local dataTable = Details:DecompressData (skinString, "print")
|
|
if (dataTable) then
|
|
--add the new skin
|
|
Details.savedStyles [#Details.savedStyles+1] = dataTable
|
|
Details:Msg(Loc ["STRING_OPTIONS_SAVELOAD_IMPORT_OKEY"])
|
|
Details222.OptionsPanel.SetCurrentInstanceAndRefresh(currentInstance)
|
|
afterUpdate()
|
|
else
|
|
Details:Msg(Loc ["STRING_CUSTOM_IMPORT_ERROR"])
|
|
end
|
|
|
|
end, "Details! Import Skin (paste string)") --localize-me
|
|
end
|
|
|
|
local sectionOptions = {
|
|
{type = "label", get = function() return Loc ["STRING_OPTIONS_SKIN_SELECT_ANCHOR"] end, text_template = subSectionTitleTextTemplate},
|
|
|
|
{--skin selection
|
|
type = "select",
|
|
get = function() return currentInstance.skin end,
|
|
values = function()
|
|
return buildSkinMenu()
|
|
end,
|
|
name = Loc ["STRING_OPTIONS_INSTANCE_SKIN"],
|
|
desc = Loc ["STRING_OPTIONS_INSTANCE_SKIN_DESC"],
|
|
},
|
|
|
|
{--custom skin file
|
|
type = "textentry",
|
|
get = function() return currentInstance.skin_custom or "" end,
|
|
func = function(self, _, text)
|
|
local fileName = text or ""
|
|
Details:InstanceGroupCall(currentInstance, "SetUserCustomSkinFile", fileName)
|
|
afterUpdate()
|
|
end,
|
|
name = Loc ["STRING_CUSTOM_SKIN_TEXTURE"],
|
|
desc = Loc ["STRING_CUSTOM_SKIN_TEXTURE_DESC"],
|
|
},
|
|
|
|
{--remove custom skin file
|
|
type = "execute",
|
|
func = function(self)
|
|
Details:InstanceGroupCall(currentInstance, "SetUserCustomSkinFile", "")
|
|
Details222.OptionsPanel.SetCurrentInstanceAndRefresh(currentInstance)
|
|
afterUpdate()
|
|
end,
|
|
icontexture = [[Interface\GLUES\LOGIN\Glues-CheckBox-Check]],
|
|
--icontexcoords = {160/512, 179/512, 142/512, 162/512},
|
|
name = "Reset Custom Skin",
|
|
desc = "Reset Custom Skin",
|
|
},
|
|
|
|
{--save as skin
|
|
type = "textentry",
|
|
get = function() return "" end,
|
|
set = function(self, _, text)
|
|
saveAsSkin(text)
|
|
Details222.OptionsPanel.SetCurrentInstanceAndRefresh(currentInstance)
|
|
Details:Msg(Loc ["STRING_OPTIONS_SAVELOAD_SKINCREATED"])
|
|
afterUpdate()
|
|
end,
|
|
name = Loc ["STRING_OPTIONS_SAVELOAD_SAVE"],
|
|
desc = Loc ["STRING_OPTIONS_SAVELOAD_CREATE_DESC"],
|
|
},
|
|
|
|
{--apply to all
|
|
type = "execute",
|
|
func = function(self)
|
|
local tempPreset = saveAsSkin("temp", true)
|
|
|
|
for instanceId, instance in Details:ListInstances() do
|
|
if (instance ~= currentInstance) then
|
|
if (not instance:IsStarted()) then
|
|
instance:RestoreWindow()
|
|
loadSkin(instance, tempPreset)
|
|
instance:Shutdown()
|
|
else
|
|
loadSkin(instance, tempPreset)
|
|
afterUpdate(instance)
|
|
end
|
|
end
|
|
end
|
|
|
|
Details:Msg(Loc ["STRING_OPTIONS_SAVELOAD_APPLYALL"])
|
|
Details222.OptionsPanel.SetCurrentInstanceAndRefresh(currentInstance)
|
|
afterUpdate()
|
|
end,
|
|
icontexture = [[Interface\Buttons\UI-HomeButton]],
|
|
icontexcoords = {1/16, 14/16, 0, 1},
|
|
name = Loc ["STRING_OPTIONS_SAVELOAD_APPLYTOALL"],
|
|
desc = Loc ["STRING_OPTIONS_SAVELOAD_APPLYALL_DESC"],
|
|
},
|
|
|
|
{type = "blank"},
|
|
{type = "label", get = function() return Loc ["STRING_OPTIONS_SKIN_PRESETS_ANCHOR"] end, text_template = subSectionTitleTextTemplate},
|
|
|
|
{--apply custom skin
|
|
type = "select",
|
|
get = function()
|
|
return 0
|
|
end,
|
|
values = function()
|
|
local loadtable = {}
|
|
for index, _table in ipairs(Details.savedStyles) do
|
|
tinsert(loadtable, {value = index, label = _table.name, onclick = function() loadSkin(currentInstance, _table) end,
|
|
icon = "Interface\\GossipFrame\\TabardGossipIcon", iconcolor = {.7, .7, .5, 1}})
|
|
end
|
|
return loadtable
|
|
end,
|
|
name = Loc ["STRING_OPTIONS_SKIN_SELECT"],
|
|
desc = Loc ["STRING_OPTIONS_SKIN_SELECT"],
|
|
},
|
|
|
|
{--erase custom skin
|
|
type = "select",
|
|
get = function()
|
|
return 0
|
|
end,
|
|
values = function()
|
|
local loadtable = {}
|
|
for index, _table in ipairs(Details.savedStyles) do
|
|
tinsert(loadtable, {value = index, label = _table.name, onclick = function(_, _, index)
|
|
table.remove (Details.savedStyles, index)
|
|
Details222.OptionsPanel.SetCurrentInstanceAndRefresh(currentInstance)
|
|
afterUpdate()
|
|
Details:Msg(Loc ["STRING_OPTIONS_SKIN_REMOVED"])
|
|
end,
|
|
icon = [[Interface\Glues\LOGIN\Glues-CheckBox-Check]], color = {1, 1, 1}, iconcolor = {1, .9, .9, 0.8}})
|
|
end
|
|
return loadtable
|
|
end,
|
|
name = Loc ["STRING_OPTIONS_SAVELOAD_REMOVE"],
|
|
desc = Loc ["STRING_OPTIONS_SAVELOAD_REMOVE"],
|
|
},
|
|
|
|
{--export custom skin
|
|
type = "select",
|
|
get = function()
|
|
return 0
|
|
end,
|
|
values = function()
|
|
local loadtable = {}
|
|
for index, _table in ipairs(Details.savedStyles) do
|
|
tinsert(loadtable, {value = index, label = _table.name, onclick = function(_, _, index)
|
|
local compressedData = Details:CompressData(Details.savedStyles[index], "print")
|
|
if (compressedData) then
|
|
Details:ShowImportWindow(compressedData, nil, "Details! Export Skin")
|
|
else
|
|
Details:Msg("failed to export skin.") --localize-me
|
|
end
|
|
Details222.OptionsPanel.SetCurrentInstanceAndRefresh(currentInstance)
|
|
afterUpdate()
|
|
end,
|
|
icon = [[Interface\Buttons\UI-GuildButton-MOTD-Up]], color = {1, 1, 1}, iconcolor = {1, .9, .9, 0.8}, texcoord = {1, 0, 0, 1}})
|
|
end
|
|
return loadtable
|
|
end,
|
|
name = Loc ["STRING_OPTIONS_SAVELOAD_EXPORT"],
|
|
desc = Loc ["STRING_OPTIONS_SAVELOAD_EXPORT_DESC"],
|
|
},
|
|
|
|
{--import custom skin string
|
|
type = "execute",
|
|
func = function(self)
|
|
importSaved()
|
|
end,
|
|
icontexture = [[Interface\Buttons\UI-GuildButton-MOTD-Up]],
|
|
icontexcoords = {1, 0, 0, 1},
|
|
name = Loc ["STRING_OPTIONS_SAVELOAD_IMPORT"],
|
|
desc = Loc ["STRING_OPTIONS_SAVELOAD_IMPORT_DESC"],
|
|
},
|
|
|
|
{type = "breakline"},
|
|
{type = "label", get = function() return Loc ["STRING_OPTIONS_TABEMB_ANCHOR"] end, text_template = subSectionTitleTextTemplate},
|
|
|
|
{--chat tab embed enabled
|
|
type = "toggle",
|
|
get = function() return Details.chat_tab_embed.enabled end,
|
|
set = function(self, fixedparam, value)
|
|
Details.chat_embed:SetTabSettings(nil, value)
|
|
Details222.OptionsPanel.SetCurrentInstanceAndRefresh(currentInstance)
|
|
afterUpdate()
|
|
end,
|
|
name = Loc ["STRING_ENABLED"],
|
|
desc = Loc ["STRING_OPTIONS_TABEMB_ENABLED_DESC"],
|
|
},
|
|
|
|
{--tab name
|
|
type = "textentry",
|
|
get = function() return Details.chat_tab_embed.tab_name or "" end,
|
|
func = function(self, _, text)
|
|
Details.chat_embed:SetTabSettings(text)
|
|
end,
|
|
name = Loc ["STRING_OPTIONS_TABEMB_TABNAME"],
|
|
desc = Loc ["STRING_OPTIONS_TABEMB_TABNAME_DESC"],
|
|
},
|
|
|
|
{--single window
|
|
type = "toggle",
|
|
get = function() return Details.chat_tab_embed.single_window end,
|
|
set = function(self, fixedparam, value)
|
|
Details.chat_embed:SetTabSettings (nil, nil, value)
|
|
Details222.OptionsPanel.SetCurrentInstanceAndRefresh(currentInstance)
|
|
afterUpdate()
|
|
end,
|
|
name = Loc ["STRING_OPTIONS_TABEMB_SINGLE"],
|
|
desc = Loc ["STRING_OPTIONS_TABEMB_SINGLE_DESC"],
|
|
},
|
|
|
|
{--chat tab width offset
|
|
type = "range",
|
|
get = function() return tonumber(Details.chat_tab_embed.x_offset) end,
|
|
set = function(self, fixedparam, value)
|
|
Details.chat_tab_embed.x_offset = value
|
|
if (Details.chat_embed.enabled) then
|
|
Details.chat_embed:DoEmbed()
|
|
end
|
|
afterUpdate()
|
|
end,
|
|
min = -100,
|
|
max = 100,
|
|
step = 1,
|
|
name = "Width Offset", --localize-me
|
|
desc = "Fine tune the size of the window while embeded in the chat.", --localize-me
|
|
},
|
|
|
|
{--chat tab height offset
|
|
type = "range",
|
|
get = function() return tonumber(Details.chat_tab_embed.y_offset) end,
|
|
set = function(self, fixedparam, value)
|
|
Details.chat_tab_embed.y_offset = value
|
|
if (Details.chat_embed.enabled) then
|
|
Details.chat_embed:DoEmbed()
|
|
end
|
|
afterUpdate()
|
|
end,
|
|
min = -100,
|
|
max = 100,
|
|
step = 1,
|
|
name = "Height Offset", --localize-me
|
|
desc = "Fine tune the size of the window while embeded in the chat.", --localize-me
|
|
},
|
|
}
|
|
|
|
sectionFrame.sectionOptions = sectionOptions
|
|
sectionOptions.always_boxfirst = true
|
|
DF:BuildMenu(sectionFrame, sectionOptions, startX, startY-20, heightSize, false, options_text_template, options_dropdown_template, options_switch_template, true, options_slider_template, options_button_template)
|
|
end
|
|
|
|
tinsert(Details.optionsSection, buildSection)
|
|
end
|
|
|
|
-- ~03 - bars general
|
|
do
|
|
|
|
--bar grow direction
|
|
local set_bar_grow_direction = function(_, instance, value)
|
|
editInstanceSetting(currentInstance, "SetBarGrowDirection", value)
|
|
afterUpdate()
|
|
end
|
|
|
|
local grow_icon_size = {14, 14}
|
|
local orientation_icon_size = {14, 14}
|
|
|
|
local grow_options = {
|
|
{value = 1, label = Loc ["STRING_TOP_TO_BOTTOM"], iconsize = orientation_icon_size, onclick = set_bar_grow_direction, icon = [[Interface\Calendar\MoreArrow]], texcoord = {0, 1, 0, 0.7}},
|
|
{value = 2, label = Loc ["STRING_BOTTOM_TO_TOP"], iconsize = orientation_icon_size, onclick = set_bar_grow_direction, icon = [[Interface\Calendar\MoreArrow]], texcoord = {0, 1, 0.7, 0}}
|
|
}
|
|
local growMenu = function()
|
|
return grow_options
|
|
end
|
|
|
|
--bar orientation
|
|
local set_bar_orientation = function(_, instance, value)
|
|
editInstanceSetting(currentInstance, "SetBarOrientationDirection", value)
|
|
afterUpdate()
|
|
end
|
|
|
|
local orientation_options = {
|
|
{value = false, label = Loc ["STRING_LEFT_TO_RIGHT"], iconsize = orientation_icon_size, onclick = set_bar_orientation, icon = [[Interface\CHATFRAME\ChatFrameExpandArrow]]},
|
|
{value = true, label = Loc ["STRING_RIGHT_TO_LEFT"], iconsize = orientation_icon_size, onclick = set_bar_orientation, icon = [[Interface\CHATFRAME\ChatFrameExpandArrow]], texcoord = {1, 0, 0, 1}}
|
|
}
|
|
local orientation_menu = function()
|
|
return orientation_options
|
|
end
|
|
|
|
--sort direction
|
|
local set_bar_sorting = function(_, instance, value)
|
|
editInstanceSetting(currentInstance, "bars_sort_direction", value)
|
|
Details:RefreshMainWindow(-1, true)
|
|
afterUpdate()
|
|
end
|
|
|
|
local sorting_options = {
|
|
{value = 1, label = Loc ["STRING_DESCENDING"], iconsize ={14, 14}, onclick = set_bar_sorting, icon = [[Interface\Calendar\MoreArrow]], texcoord = {0, 1, 0, 0.7}},
|
|
{value = 2, label = Loc ["STRING_ASCENDING"], iconsize = {14, 14}, onclick = set_bar_sorting, icon = [[Interface\Calendar\MoreArrow]], texcoord = {0, 1, 0.7, 0}}
|
|
}
|
|
local sorting_menu = function()
|
|
return sorting_options
|
|
end
|
|
|
|
--select texture
|
|
local texture_icon = [[Interface\TARGETINGFRAME\UI-PhasingIcon]]
|
|
local texture_icon = [[Interface\AddOns\Details\images\icons]]
|
|
local texture_icon_size = {14, 14}
|
|
local texture_texcoord = {469/512, 505/512, 249/512, 284/512}
|
|
|
|
local onSelectTexture = function(_, instance, textureName)
|
|
editInstanceSetting(currentInstance, "SetBarSettings", nil, textureName)
|
|
afterUpdate()
|
|
end
|
|
|
|
local buildTextureMenu = function()
|
|
local textures = SharedMedia:HashTable("statusbar")
|
|
local texTable = {}
|
|
for name, texturePath in pairs(textures) do
|
|
texTable[#texTable+1] = {value = name, label = name, iconsize = texture_icon_size, statusbar = texturePath, onclick = onSelectTexture, icon = texture_icon, texcoord = texture_texcoord}
|
|
end
|
|
table.sort (texTable, function(t1, t2) return t1.label < t2.label end)
|
|
return texTable
|
|
end
|
|
|
|
--select background texture
|
|
local onSelectTextureBackground = function(_, instance, textureName)
|
|
editInstanceSetting(currentInstance, "SetBarSettings", nil, nil, nil, nil, textureName)
|
|
afterUpdate()
|
|
end
|
|
|
|
local buildTextureMenu2 = function()
|
|
local textures2 = SharedMedia:HashTable ("statusbar")
|
|
local texTable2 = {}
|
|
for name, texturePath in pairs(textures2) do
|
|
texTable2[#texTable2+1] = {value = name, label = name, iconsize = texture_icon_size, statusbar = texturePath, onclick = onSelectTextureBackground, icon = texture_icon, texcoord = texture_texcoord}
|
|
end
|
|
table.sort (texTable2, function(t1, t2) return t1.label < t2.label end)
|
|
return texTable2
|
|
end
|
|
|
|
--select icon file from dropdown
|
|
local OnSelectIconFileSpec = function(_, _, iconpath)
|
|
editInstanceSetting(currentInstance, "SetBarSpecIconSettings", true, iconpath, true)
|
|
afterUpdate()
|
|
end
|
|
|
|
local OnSelectIconFile = function(_, _, iconpath)
|
|
editInstanceSetting(currentInstance, "SetBarSettings", nil, nil, nil, nil, nil, nil, nil, nil, iconpath)
|
|
if (currentInstance.row_info.use_spec_icons) then
|
|
editInstanceSetting(currentInstance, "SetBarSpecIconSettings", false)
|
|
end
|
|
afterUpdate()
|
|
end
|
|
|
|
local onSelectBarTextureOverlay = function(_, instance, textureName)
|
|
editInstanceSetting(currentInstance, "SetBarOverlaySettings", textureName)
|
|
end
|
|
|
|
local buildTextureOverlayMenu = function()
|
|
local textures2 = SharedMedia:HashTable("statusbar")
|
|
local texTable2 = {}
|
|
for name, texturePath in pairs(textures2) do
|
|
texTable2[#texTable2+1] = {value = name, label = name, iconsize = texture_icon_size, statusbar = texturePath, onclick = onSelectBarTextureOverlay, icon = texture_icon, texcoord = texture_texcoord}
|
|
end
|
|
table.sort(texTable2, function(t1, t2) return t1.label < t2.label end)
|
|
return texTable2
|
|
end
|
|
|
|
local builtIconList = function()
|
|
for k,v in ipairs(Details222.BarIconSetList) do
|
|
if v.isSpec then
|
|
v.onclick = OnSelectIconFileSpec
|
|
else
|
|
v.onclick = OnSelectIconFile
|
|
end
|
|
end
|
|
return Details222.BarIconSetList
|
|
end
|
|
|
|
local buildSection = function(sectionFrame)
|
|
local sectionOptions = {
|
|
{--line height
|
|
type = "range",
|
|
get = function() return tonumber(currentInstance.row_info.height) end,
|
|
set = function(self, fixedparam, value)
|
|
editInstanceSetting(currentInstance, "SetBarSettings", value)
|
|
afterUpdate()
|
|
end,
|
|
min = 10,
|
|
max = 30,
|
|
step = 1,
|
|
name = Loc ["STRING_OPTIONS_BAR_HEIGHT"],
|
|
desc = Loc ["STRING_OPTIONS_BAR_HEIGHT_DESC"],
|
|
},
|
|
|
|
{--padding
|
|
type = "range",
|
|
get = function() return tonumber(currentInstance.row_info.space.between) end,
|
|
set = function(self, fixedparam, value)
|
|
editInstanceSetting(currentInstance, "SetBarSettings", nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, value)
|
|
afterUpdate()
|
|
end,
|
|
min = -2,
|
|
max = 10,
|
|
step = 1,
|
|
name = Loc ["STRING_OPTIONS_BAR_SPACING"],
|
|
desc = Loc ["STRING_OPTIONS_BAR_SPACING_DESC"],
|
|
},
|
|
|
|
{--disable highlight
|
|
type = "toggle",
|
|
get = function() return Details.instances_disable_bar_highlight end,
|
|
set = function(self, fixedparam, value)
|
|
Details.instances_disable_bar_highlight = value
|
|
afterUpdate()
|
|
end,
|
|
name = Loc ["STRING_OPTIONS_DISABLE_BARHIGHLIGHT"],
|
|
desc = Loc ["STRING_OPTIONS_DISABLE_BARHIGHLIGHT_DESC"],
|
|
},
|
|
|
|
{--fast dps updates
|
|
type = "toggle",
|
|
get = function() return currentInstance.row_info.fast_ps_update end,
|
|
set = function(self, fixedparam, value)
|
|
editInstanceSetting(currentInstance, "row_info", "fast_ps_update", value)
|
|
afterUpdate()
|
|
end,
|
|
name = Loc ["STRING_OPTIONS_BARUR_ANCHOR"],
|
|
desc = Loc ["STRING_OPTIONS_BARUR_DESC"],
|
|
},
|
|
|
|
{--always show me
|
|
type = "toggle",
|
|
get = function() return currentInstance.following.enabled end,
|
|
set = function(self, fixedparam, value)
|
|
editInstanceSetting(currentInstance, "following", "enabled", value)
|
|
afterUpdate()
|
|
end,
|
|
name = Loc ["STRING_OPTIONS_BAR_FOLLOWING"],
|
|
desc = Loc ["STRING_OPTIONS_BAR_FOLLOWING_DESC"],
|
|
},
|
|
|
|
{--grow direction
|
|
type = "select",
|
|
get = function() return currentInstance.bars_grow_direction end,
|
|
values = function()
|
|
return growMenu()
|
|
end,
|
|
name = Loc ["STRING_OPTIONS_BAR_GROW"],
|
|
desc = Loc ["STRING_OPTIONS_BAR_GROW_DESC"],
|
|
},
|
|
|
|
{--bar orientation
|
|
type = "select",
|
|
get = function() return currentInstance.bars_inverted and 2 or 1 end,
|
|
values = function()
|
|
return orientation_menu()
|
|
end,
|
|
name = Loc ["STRING_OPTIONS_BARORIENTATION"],
|
|
desc = Loc ["STRING_OPTIONS_BARORIENTATION_DESC"],
|
|
},
|
|
|
|
{--bar sort direction
|
|
type = "select",
|
|
get = function() return currentInstance.bars_sort_direction end,
|
|
values = function()
|
|
return sorting_menu()
|
|
end,
|
|
name = Loc ["STRING_OPTIONS_BARSORT"],
|
|
desc = Loc ["STRING_OPTIONS_BARSORT_DESC"],
|
|
},
|
|
|
|
{type = "blank"},
|
|
{type = "label", get = function() return Loc ["STRING_OPTIONS_TEXT_TEXTUREU_ANCHOR"] end, text_template = subSectionTitleTextTemplate},
|
|
|
|
{--select texture
|
|
type = "select",
|
|
get = function() return currentInstance.row_info.texture end,
|
|
values = function()
|
|
return buildTextureMenu()
|
|
end,
|
|
name = Loc ["STRING_TEXTURE"],
|
|
desc = Loc ["STRING_OPTIONS_BAR_TEXTURE_DESC"],
|
|
},
|
|
|
|
{--custom texture
|
|
type = "textentry",
|
|
get = function() return currentInstance.row_info.texture_custom end,
|
|
func = function(self, _, text)
|
|
editInstanceSetting(currentInstance, "SetBarSettings", nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, text)
|
|
afterUpdate()
|
|
end,
|
|
name = Loc ["STRING_OPTIONS_BARS_CUSTOM_TEXTURE"],
|
|
desc = Loc ["STRING_CUSTOM_TEXTURE_GUIDE"]
|
|
},
|
|
|
|
{--remove custom texture
|
|
type = "execute",
|
|
func = function(self)
|
|
editInstanceSetting(currentInstance, "SetBarSettings", nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, "")
|
|
afterUpdate()
|
|
end,
|
|
icontexture = [[Interface\Buttons\UI-GroupLoot-Pass-Down]],
|
|
--icontexcoords = {160/512, 179/512, 142/512, 162/512},
|
|
name = "Remove Custom Texture", --localize-me
|
|
desc = "Remove Custom Texture",
|
|
},
|
|
|
|
{--bar color
|
|
type = "color",
|
|
get = function()
|
|
local r, g, b = unpack(currentInstance.row_info.fixed_texture_color)
|
|
local alpha = currentInstance.row_info.alpha
|
|
return {r, g, b, alpha}
|
|
end,
|
|
set = function(self, r, g, b, a)
|
|
editInstanceSetting(currentInstance, "SetBarSettings", nil, nil, nil, {r, g, b})
|
|
editInstanceSetting(currentInstance, "SetBarSettings", nil, nil, nil, nil, nil, nil, nil, a)
|
|
afterUpdate()
|
|
end,
|
|
name = Loc ["STRING_COLOR"],
|
|
desc = Loc ["STRING_OPTIONS_BAR_COLOR_DESC"],
|
|
},
|
|
|
|
{--color by player class
|
|
type = "toggle",
|
|
get = function() return currentInstance.row_info.texture_class_colors end,
|
|
set = function(self, fixedparam, value)
|
|
editInstanceSetting(currentInstance, "SetBarSettings", nil, nil, value)
|
|
afterUpdate()
|
|
end,
|
|
name = Loc ["STRING_OPTIONS_BAR_COLORBYCLASS"],
|
|
desc = Loc ["STRING_OPTIONS_BAR_COLORBYCLASS_DESC"],
|
|
},
|
|
|
|
{type = "blank"},
|
|
{type = "label", get = function() return "Overlay:" end, text_template = subSectionTitleTextTemplate},
|
|
{--overlay texture
|
|
type = "select",
|
|
get = function() return currentInstance.row_info.overlay_texture end,
|
|
values = function()
|
|
return buildTextureOverlayMenu()
|
|
end,
|
|
name = Loc ["STRING_TEXTURE"],
|
|
desc = "Texture which sits above the bar",
|
|
},
|
|
|
|
{--overlay color
|
|
type = "color",
|
|
get = function()
|
|
local r, g, b, a = unpack(currentInstance.row_info.overlay_color)
|
|
return {r, g, b, a}
|
|
end,
|
|
set = function(self, r, g, b, a)
|
|
editInstanceSetting(currentInstance, "SetBarOverlaySettings", nil, {r, g, b, a})
|
|
afterUpdate()
|
|
end,
|
|
name = Loc ["STRING_COLOR"],
|
|
desc = Loc ["STRING_COLOR"],
|
|
},
|
|
|
|
{type = "blank"},
|
|
{type = "label", get = function() return Loc ["STRING_OPTIONS_TEXT_TEXTUREL_ANCHOR"] end, text_template = subSectionTitleTextTemplate},
|
|
|
|
{--select background texture
|
|
type = "select",
|
|
get = function() return currentInstance.row_info.texture_background end,
|
|
values = function()
|
|
return buildTextureMenu2()
|
|
end,
|
|
name = Loc ["STRING_TEXTURE"],
|
|
desc = Loc ["STRING_OPTIONS_BAR_BTEXTURE_DESC"],
|
|
},
|
|
|
|
{--background color
|
|
type = "color",
|
|
get = function()
|
|
local r, g, b, a = unpack(currentInstance.row_info.fixed_texture_background_color)
|
|
return {r, g, b, a}
|
|
end,
|
|
set = function(self, r, g, b, a)
|
|
editInstanceSetting(currentInstance, "SetBarSettings", nil, nil, nil, nil, nil, nil, {r, g, b, a})
|
|
afterUpdate()
|
|
end,
|
|
name = Loc ["STRING_COLOR"],
|
|
desc = Loc ["STRING_OPTIONS_BAR_COLOR_DESC"],
|
|
},
|
|
|
|
{--background uses class colors
|
|
type = "toggle",
|
|
get = function() return currentInstance.row_info.texture_background_class_color end,
|
|
set = function(self, fixedparam, value)
|
|
editInstanceSetting(currentInstance, "SetBarSettings", nil, nil, nil, nil, nil, value)
|
|
afterUpdate()
|
|
end,
|
|
name = Loc ["STRING_OPTIONS_BAR_COLORBYCLASS"],
|
|
desc = Loc ["STRING_OPTIONS_BAR_COLORBYCLASS_DESC"],
|
|
},
|
|
|
|
{type = "breakline"},
|
|
{type = "label", get = function() return Loc ["STRING_OPTIONS_TEXT_ROWICONS_ANCHOR"] end, text_template = subSectionTitleTextTemplate},
|
|
|
|
{--select icon file
|
|
type = "select",
|
|
get = function(self)
|
|
local default
|
|
if (currentInstance.row_info.use_spec_icons) then
|
|
default = currentInstance.row_info.spec_file
|
|
else
|
|
default = currentInstance.row_info.icon_file
|
|
end
|
|
return default
|
|
end,
|
|
values = function()
|
|
return builtIconList()
|
|
end,
|
|
name = Loc ["STRING_TEXTURE"],
|
|
desc = Loc ["STRING_OPTIONS_BAR_ICONFILE_DESC2"],
|
|
},
|
|
|
|
{--custom icon path
|
|
type = "textentry",
|
|
get = function()
|
|
local default
|
|
if (currentInstance.row_info.use_spec_icons) then
|
|
default = currentInstance.row_info.spec_file
|
|
else
|
|
default = currentInstance.row_info.icon_file
|
|
end
|
|
return default
|
|
end,
|
|
func = function(self, _, text)
|
|
if (text:find("spec_")) then
|
|
editInstanceSetting(currentInstance, "SetBarSpecIconSettings", true, text, true)
|
|
else
|
|
if (currentInstance.row_info.use_spec_icons) then
|
|
editInstanceSetting(currentInstance, "SetBarSpecIconSettings", false)
|
|
end
|
|
editInstanceSetting(currentInstance, "SetBarSettings", nil, nil, nil, nil, nil, nil, nil, nil, text)
|
|
end
|
|
|
|
Details222.OptionsPanel.SetCurrentInstanceAndRefresh(currentInstance)
|
|
afterUpdate()
|
|
end,
|
|
name = Loc ["STRING_OPTIONS_BARS_CUSTOM_TEXTURE"],
|
|
desc = Loc ["STRING_CUSTOM_TEXTURE_GUIDE"],
|
|
},
|
|
|
|
{--bar start after icon
|
|
type = "toggle",
|
|
get = function() return currentInstance.row_info.start_after_icon end,
|
|
set = function(self, fixedparam, value)
|
|
editInstanceSetting(currentInstance, "SetBarSettings", nil, nil, nil, nil, nil, nil, nil, nil, nil, value)
|
|
afterUpdate()
|
|
end,
|
|
name = Loc ["STRING_OPTIONS_BARSTART"],
|
|
desc = Loc ["STRING_OPTIONS_BARSTART_DESC"],
|
|
},
|
|
|
|
{--icon size offset
|
|
type = "range",
|
|
get = function() return tonumber(currentInstance.row_info.icon_size_offset) end,
|
|
set = function(self, fixedparam, value)
|
|
editInstanceSetting(currentInstance, "SetBarSettings", nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, value)
|
|
afterUpdate()
|
|
end,
|
|
min = -20,
|
|
max = 20,
|
|
usedecimals = true,
|
|
step = 0.5,
|
|
name = "Icon Size Offset", --localize-me
|
|
desc = "Icon Size Offset",
|
|
thumbscale = 2.2,
|
|
},
|
|
|
|
{type = "blank"},
|
|
|
|
{--show faction icon
|
|
type = "toggle",
|
|
get = function() return currentInstance.row_info.show_faction_icon end,
|
|
set = function(self, fixedparam, value)
|
|
editInstanceSetting(currentInstance, "SetBarFactionIconSettings", value)
|
|
afterUpdate()
|
|
end,
|
|
name = "Show Faction Icon", --localize-me
|
|
desc = "When showing a player from the opposite faction, show the faction icon.",
|
|
},
|
|
|
|
{--faction icon size offset
|
|
type = "range",
|
|
get = function() return tonumber(currentInstance.row_info.faction_icon_size_offset) end,
|
|
set = function(self, fixedparam, value)
|
|
editInstanceSetting(currentInstance, "SetBarFactionIconSettings", nil, value)
|
|
afterUpdate()
|
|
end,
|
|
min = -20,
|
|
max = 20,
|
|
usedecimals = true,
|
|
step = 0.5,
|
|
name = "Faction Icon Size Offset", --localize-me
|
|
desc = "Faction Icon Size Offset",
|
|
thumbscale = 2.2,
|
|
},
|
|
|
|
{type = "blank"},
|
|
|
|
{--show role icon
|
|
type = "toggle",
|
|
get = function() return currentInstance.row_info.show_arena_role_icon end,
|
|
set = function(self, fixedparam, value)
|
|
editInstanceSetting(currentInstance, "SetBarArenaRoleIconSettings", value)
|
|
afterUpdate()
|
|
end,
|
|
name = "Show Arena Role Icon", --localize-me
|
|
desc = "When showing a player from arena, show the role icon.",
|
|
},
|
|
|
|
{--role icon size offset
|
|
type = "range",
|
|
get = function() return tonumber(currentInstance.row_info.arena_role_icon_size_offset) end,
|
|
set = function(self, fixedparam, value)
|
|
editInstanceSetting(currentInstance, "SetBarArenaRoleIconSettings", nil, value)
|
|
afterUpdate()
|
|
end,
|
|
min = -20,
|
|
max = 20,
|
|
usedecimals = true,
|
|
step = 0.5,
|
|
name = "Arena Role Icon Size Offset", --localize-me
|
|
desc = "Arena Role Icon Size Offset",
|
|
thumbscale = 2.2,
|
|
},
|
|
|
|
|
|
{type = "blank"},
|
|
--{type = "breakline"},
|
|
{type = "label", get = function() return Loc["STRING_OPTIONS_ALIGNED_TEXT_COLUMNS"] end, text_template = subSectionTitleTextTemplate},
|
|
|
|
{--inline text enabled
|
|
type = "toggle",
|
|
get = function() return currentInstance.use_multi_fontstrings end,
|
|
set = function(self, fixedparam, value)
|
|
editInstanceSetting(currentInstance, "use_multi_fontstrings", value)
|
|
editInstanceSetting(currentInstance, "InstanceRefreshRows")
|
|
Details:RefreshMainWindow(-1, true)
|
|
afterUpdate()
|
|
end,
|
|
name = Loc ["STRING_ENABLED"],
|
|
desc = Loc ["STRING_OPTIONS_ALIGNED_TEXT_COLUMNS_DESC"],
|
|
},
|
|
|
|
{--inline auto align enabled
|
|
type = "toggle",
|
|
get = function() return currentInstance.use_auto_align_multi_fontstrings end,
|
|
set = function(self, fixedparam, value)
|
|
editInstanceSetting(currentInstance, "use_auto_align_multi_fontstrings", value)
|
|
editInstanceSetting(currentInstance, "InstanceRefreshRows")
|
|
Details:RefreshMainWindow(-1, true)
|
|
afterUpdate()
|
|
end,
|
|
name = Loc ["STRING_OPTIONS_ALIGNED_TEXT_COLUMNS_AUTOALIGN"],
|
|
desc = Loc ["STRING_OPTIONS_ALIGNED_TEXT_COLUMNS_AUTOALIGN_DESC"],
|
|
},
|
|
|
|
|
|
{--name size offset
|
|
type = "range",
|
|
get = function() return tonumber(currentInstance.fontstrings_text_limit_offset) end,
|
|
set = function(self, fixedparam, value)
|
|
editInstanceSetting(currentInstance, "fontstrings_text_limit_offset", value)
|
|
editInstanceSetting(currentInstance, "InstanceRefreshRows")
|
|
Details222.OptionsPanel.RefreshInstances(currentInstance)
|
|
afterUpdate()
|
|
end,
|
|
min = -30,
|
|
max = 30,
|
|
step = 1,
|
|
name = "Unit Name Size Offset",
|
|
desc = "Unit Name Size Offset",
|
|
},
|
|
|
|
{--lineText2 (left, usuali is the 'done' amount)
|
|
type = "range",
|
|
get = function() return tonumber(currentInstance.fontstrings_text2_anchor) end,
|
|
set = function(self, fixedparam, value)
|
|
editInstanceSetting(currentInstance, "fontstrings_text2_anchor", value)
|
|
editInstanceSetting(currentInstance, "InstanceRefreshRows")
|
|
afterUpdate()
|
|
end,
|
|
min = -10,
|
|
max = 125,
|
|
step = 1,
|
|
name = string.format(Loc["STRING_OPTIONS_ALIGNED_TEXT_COLUMNS_OFFSET"], 1),
|
|
desc = Loc["STRING_OPTIONS_ALIGNED_TEXT_COLUMNS_OFFSET_DESC"],
|
|
},
|
|
|
|
{--lineText3 (in the middle)
|
|
type = "range",
|
|
get = function() return tonumber(currentInstance.fontstrings_text3_anchor) end,
|
|
set = function(self, fixedparam, value)
|
|
editInstanceSetting(currentInstance, "fontstrings_text3_anchor", value)
|
|
editInstanceSetting(currentInstance, "InstanceRefreshRows")
|
|
afterUpdate()
|
|
end,
|
|
min = -10,
|
|
max = 75,
|
|
step = 1,
|
|
name = string.format(Loc["STRING_OPTIONS_ALIGNED_TEXT_COLUMNS_OFFSET"], 2),
|
|
desc = Loc["STRING_OPTIONS_ALIGNED_TEXT_COLUMNS_OFFSET_DESC"],
|
|
},
|
|
|
|
{--lineText4 (closest to the right)
|
|
type = "range",
|
|
get = function() return tonumber(currentInstance.fontstrings_text4_anchor) end,
|
|
set = function(self, fixedparam, value)
|
|
editInstanceSetting(currentInstance, "fontstrings_text4_anchor", value)
|
|
editInstanceSetting(currentInstance, "InstanceRefreshRows")
|
|
afterUpdate()
|
|
end,
|
|
min = -10,
|
|
max = 50,
|
|
step = 1,
|
|
name = string.format(Loc["STRING_OPTIONS_ALIGNED_TEXT_COLUMNS_OFFSET"], 3),
|
|
desc = Loc["STRING_OPTIONS_ALIGNED_TEXT_COLUMNS_OFFSET_DESC"],
|
|
},
|
|
|
|
{type = "breakline"},
|
|
|
|
{type = "label", get = function() return Loc ["STRING_OPTIONS_TOTALBAR_ANCHOR"] end, text_template = subSectionTitleTextTemplate},
|
|
|
|
{--total bar enabled
|
|
type = "toggle",
|
|
get = function() return currentInstance.total_bar.enabled end,
|
|
set = function(self, fixedparam, value)
|
|
editInstanceSetting(currentInstance, "total_bar", "enabled", value)
|
|
afterUpdate()
|
|
Details222.OptionsPanel.RefreshInstances(currentInstance)
|
|
end,
|
|
name = Loc ["STRING_ENABLED"],
|
|
desc = Loc ["STRING_OPTIONS_SHOW_TOTALBAR_DESC"],
|
|
},
|
|
{--only in group
|
|
type = "toggle",
|
|
get = function() return currentInstance.total_bar.only_in_group end,
|
|
set = function(self, fixedparam, value)
|
|
editInstanceSetting(currentInstance, "total_bar", "only_in_group", value)
|
|
afterUpdate()
|
|
end,
|
|
name = Loc ["STRING_OPTIONS_SHOW_TOTALBAR_INGROUP"],
|
|
desc = Loc ["STRING_OPTIONS_SHOW_TOTALBAR_INGROUP_DESC"],
|
|
},
|
|
{--color
|
|
type = "color",
|
|
get = function()
|
|
local r, g, b = unpack(currentInstance.total_bar.color)
|
|
return {r, g, b, 1}
|
|
end,
|
|
set = function(self, r, g, b, a)
|
|
editInstanceSetting(currentInstance, "total_bar", "color", {r, g, b, 1})
|
|
afterUpdate()
|
|
end,
|
|
name = Loc ["STRING_COLOR"],
|
|
desc = Loc ["STRING_OPTIONS_SHOW_TOTALBAR_COLOR_DESC"],
|
|
},
|
|
|
|
{type = "blank"},
|
|
{type = "label", get = function() return "Arena Team Color" end, text_template = subSectionTitleTextTemplate}, --localize-me
|
|
{--team 1 color
|
|
type = "color",
|
|
get = function()
|
|
local r, g, b = unpack(Details.class_colors.ARENA_GREEN)
|
|
return {r, g, b, 1}
|
|
end,
|
|
set = function(self, r, g, b, a)
|
|
Details.class_colors.ARENA_GREEN[1] = r
|
|
Details.class_colors.ARENA_GREEN[2] = g
|
|
Details.class_colors.ARENA_GREEN[3] = b
|
|
afterUpdate()
|
|
end,
|
|
name = Loc ["STRING_COLOR"],
|
|
desc = "Arena team color", --localize-me
|
|
},
|
|
{--team 2 color
|
|
type = "color",
|
|
get = function()
|
|
local r, g, b = unpack(Details.class_colors.ARENA_YELLOW)
|
|
return {r, g, b, 1}
|
|
end,
|
|
set = function(self, r, g, b, a)
|
|
Details.class_colors.ARENA_YELLOW[1] = r
|
|
Details.class_colors.ARENA_YELLOW[2] = g
|
|
Details.class_colors.ARENA_YELLOW[3] = b
|
|
afterUpdate()
|
|
end,
|
|
name = Loc ["STRING_COLOR"],
|
|
desc = "Arena team color", --localize-me
|
|
},
|
|
|
|
{type = "blank"},
|
|
{type = "label", get = function() return Loc ["STRING_OPTIONS_BAR_BACKDROP_ANCHOR"] end, text_template = subSectionTitleTextTemplate},
|
|
|
|
{--border enabled
|
|
type = "toggle",
|
|
get = function() return currentInstance.row_info.backdrop.enabled end,
|
|
set = function(self, fixedparam, value)
|
|
editInstanceSetting(currentInstance, "SetBarBackdropSettings", value)
|
|
afterUpdate()
|
|
end,
|
|
name = Loc ["STRING_ENABLED"],
|
|
desc = Loc ["STRING_OPTIONS_BAR_BACKDROP_ENABLED_DESC"],
|
|
},
|
|
|
|
{--border color
|
|
type = "color",
|
|
get = function()
|
|
local r, g, b, a = unpack(currentInstance.row_info.backdrop.color)
|
|
return {r, g, b, a}
|
|
end,
|
|
set = function(self, r, g, b, a)
|
|
editInstanceSetting(currentInstance, "SetBarBackdropSettings", nil, nil, {r, g, b, a})
|
|
afterUpdate()
|
|
end,
|
|
name = Loc ["STRING_COLOR"],
|
|
desc = Loc ["STRING_OPTIONS_BAR_BACKDROP_COLOR_DESC"],
|
|
},
|
|
|
|
{--border size
|
|
type = "range",
|
|
get = function() return tonumber(currentInstance.row_info.backdrop.size) end,
|
|
set = function(self, fixedparam, value)
|
|
editInstanceSetting(currentInstance, "SetBarBackdropSettings", nil, value)
|
|
afterUpdate()
|
|
end,
|
|
min = 0,
|
|
max = 10,
|
|
step = 1,
|
|
usedecimals = true,
|
|
name = Loc ["STRING_OPTIONS_SIZE"],
|
|
desc = Loc ["STRING_OPTIONS_BAR_BACKDROP_SIZE_DESC"],
|
|
thumbscale = 1.5,
|
|
},
|
|
|
|
{--border uses class colors
|
|
type = "toggle",
|
|
get = function() return currentInstance.row_info.backdrop.use_class_colors end,
|
|
set = function(self, fixedparam, value)
|
|
editInstanceSetting(currentInstance, "SetBarBackdropSettings", nil, nil, nil, value)
|
|
afterUpdate()
|
|
end,
|
|
name = Loc ["STRING_OPTIONS_BAR_COLORBYCLASS"],
|
|
desc = Loc ["STRING_OPTIONS_BAR_COLORBYCLASS_DESC"],
|
|
},
|
|
}
|
|
|
|
sectionFrame.sectionOptions = sectionOptions
|
|
sectionOptions.always_boxfirst = true
|
|
DF:BuildMenu(sectionFrame, sectionOptions, startX, startY-20, heightSize+40, false, options_text_template, options_dropdown_template, options_switch_template, true, options_slider_template, options_button_template)
|
|
end
|
|
|
|
tinsert(Details.optionsSection, buildSection)
|
|
end
|
|
|
|
-- ~04 bars texts
|
|
do
|
|
|
|
--text font selection
|
|
local onSelectFont = function(_, instance, fontName)
|
|
editInstanceSetting(currentInstance, "SetBarTextSettings", nil, fontName)
|
|
afterUpdate()
|
|
end
|
|
|
|
local buildFontMenu = function()
|
|
local fontObjects = SharedMedia:HashTable("font")
|
|
local fontTable = {}
|
|
for name, fontPath in pairs(fontObjects) do
|
|
fontTable[#fontTable+1] = {value = name, label = name, icon = font_select_icon, texcoord = font_select_texcoord, onclick = onSelectFont, font = fontPath, descfont = name, desc = Loc ["STRING_MUSIC_DETAILS_ROBERTOCARLOS"]}
|
|
end
|
|
table.sort (fontTable, function(t1, t2) return t1.label < t2.label end)
|
|
return fontTable
|
|
end
|
|
|
|
--percent type
|
|
local onSelectPercent = function(_, instance, percentType)
|
|
editInstanceSetting(currentInstance, "SetBarTextSettings", nil, nil, nil, nil, nil, nil, nil, nil, nil, percentType)
|
|
afterUpdate()
|
|
end
|
|
|
|
local buildPercentMenu = function()
|
|
local percentTable = {
|
|
{value = 1, label = "Relative to Total", onclick = onSelectPercent, icon = [[Interface\GROUPFRAME\UI-GROUP-MAINTANKICON]]},
|
|
{value = 2, label = "Relative to Top Player", onclick = onSelectPercent, icon = [[Interface\GROUPFRAME\UI-Group-LeaderIcon]]}
|
|
}
|
|
return percentTable
|
|
end
|
|
|
|
--brackets
|
|
local onSelectBracket = function(_, instance, value)
|
|
editInstanceSetting(currentInstance, "SetBarRightTextSettings", nil, nil, nil, value)
|
|
afterUpdate()
|
|
end
|
|
|
|
local BracketTable = {
|
|
{value = "(", label = "(", onclick = onSelectBracket, icon = ""},
|
|
{value = "{", label = "{", onclick = onSelectBracket, icon = ""},
|
|
{value = "[", label = "[", onclick = onSelectBracket, icon = ""},
|
|
{value = "<", label = "<", onclick = onSelectBracket, icon = ""},
|
|
{value = "NONE", label = "no bracket", onclick = onSelectBracket, icon = [[Interface\Glues\LOGIN\Glues-CheckBox-Check]]},
|
|
}
|
|
local buildBracketMenu = function()
|
|
return BracketTable
|
|
end
|
|
|
|
--separators
|
|
local onSelectSeparator = function(_, instance, value)
|
|
editInstanceSetting(currentInstance, "SetBarRightTextSettings", nil, nil, nil, nil, value)
|
|
afterUpdate()
|
|
end
|
|
|
|
local separatorTable = {
|
|
{value = ",", label = ",", onclick = onSelectSeparator, icon = ""},
|
|
{value = ".", label = ".", onclick = onSelectSeparator, icon = ""},
|
|
{value = ";", label = ";", onclick = onSelectSeparator, icon = ""},
|
|
{value = "-", label = "-", onclick = onSelectSeparator, icon = ""},
|
|
{value = "|", label = "|", onclick = onSelectSeparator, icon = ""},
|
|
{value = "/", label = "/", onclick = onSelectSeparator, icon = ""},
|
|
{value = "\\", label = "\\", onclick = onSelectSeparator, icon = ""},
|
|
{value = "~", label = "~", onclick = onSelectSeparator, icon = ""},
|
|
{value = "NONE", label = "no separator", onclick = onSelectSeparator, icon = [[Interface\Glues\LOGIN\Glues-CheckBox-Check]]},
|
|
}
|
|
local buildSeparatorMenu = function()
|
|
return separatorTable
|
|
end
|
|
|
|
|
|
local buildSection = function(sectionFrame)
|
|
local sectionOptions = {
|
|
{type = "label", get = function() return Loc ["STRING_OPTIONS_GENERAL_ANCHOR"] end, text_template = subSectionTitleTextTemplate},
|
|
|
|
{--text color 1
|
|
type = "color",
|
|
get = function()
|
|
local r, g, b = unpack(currentInstance.row_info.fixed_text_color)
|
|
return {r, g, b, 1}
|
|
end,
|
|
set = function(self, r, g, b, a)
|
|
editInstanceSetting(currentInstance, "SetBarTextSettings", nil, nil, {r, g, b, 1})
|
|
afterUpdate()
|
|
end,
|
|
name = Loc ["STRING_OPTIONS_TEXT_FIXEDCOLOR"],
|
|
desc = Loc ["STRING_OPTIONS_TEXT_FIXEDCOLOR_DESC"],
|
|
},
|
|
{--text size 2
|
|
type = "range",
|
|
get = function() return currentInstance.row_info.font_size end,
|
|
set = function(self, fixedparam, value)
|
|
editInstanceSetting(currentInstance, "SetBarTextSettings", value)
|
|
afterUpdate()
|
|
end,
|
|
min = 5,
|
|
max = 32,
|
|
step = 1,
|
|
name = Loc ["STRING_OPTIONS_TEXT_SIZE"],
|
|
desc = Loc ["STRING_OPTIONS_TEXT_SIZE_DESC"],
|
|
},
|
|
{--text yoffset
|
|
type = "range",
|
|
get = function() return currentInstance.row_info.text_yoffset end,
|
|
set = function(self, fixedparam, value)
|
|
editInstanceSetting(currentInstance, "SetBarTextSettings", nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, value)
|
|
afterUpdate()
|
|
end,
|
|
min = -10,
|
|
max = 10,
|
|
step = 1,
|
|
name = "Text Y Offset", -- Loc ["STRING_OPTIONS_TEXT_YOFFSET"]
|
|
desc = "Change the vertical offset for both left and right texts.", -- Loc ["STRING_OPTIONS_TEXT_YOFFSET_DESC"]
|
|
},
|
|
{--text font 3
|
|
type = "select",
|
|
get = function() return currentInstance.row_info.font_face end,
|
|
values = function()
|
|
return buildFontMenu()
|
|
end,
|
|
name = Loc ["STRING_OPTIONS_TEXT_FONT"],
|
|
desc = Loc ["STRING_OPTIONS_TEXT_FONT_DESC"],
|
|
},
|
|
{--percent type 4
|
|
type = "select",
|
|
get = function() return currentInstance.row_info.percent_type end,
|
|
values = function()
|
|
return buildPercentMenu()
|
|
end,
|
|
name = Loc ["STRING_OPTIONS_PERCENT_TYPE"],
|
|
desc = Loc ["STRING_OPTIONS_PERCENT_TYPE_DESC"],
|
|
},
|
|
|
|
|
|
{type = "blank"}, --5
|
|
--left text options 6
|
|
{type = "label", get = function() return Loc ["STRING_OPTIONS_TEXT_LEFT_ANCHOR"] end, text_template = subSectionTitleTextTemplate},
|
|
|
|
{--use class colors 7
|
|
type = "toggle",
|
|
get = function() return currentInstance.row_info.textL_class_colors end,
|
|
set = function(self, fixedparam, value)
|
|
editInstanceSetting(currentInstance, "SetBarTextSettings", nil, nil, nil, value)
|
|
afterUpdate()
|
|
end,
|
|
name = Loc ["STRING_OPTIONS_BAR_COLORBYCLASS"],
|
|
desc = Loc ["STRING_OPTIONS_TEXT_LCLASSCOLOR_DESC"],
|
|
},
|
|
{--outline 8
|
|
type = "toggle",
|
|
get = function() return currentInstance.row_info.textL_outline end,
|
|
set = function(self, fixedparam, value)
|
|
editInstanceSetting(currentInstance, "SetBarTextSettings", nil, nil, nil, nil, nil, value)
|
|
afterUpdate()
|
|
end,
|
|
name = Loc ["STRING_OPTIONS_TEXT_LOUTILINE"],
|
|
desc = Loc ["STRING_OPTIONS_TEXT_LOUTILINE_DESC"],
|
|
},
|
|
{--outline small 9
|
|
type = "toggle",
|
|
get = function() return currentInstance.row_info.textL_outline_small end,
|
|
set = function(self, fixedparam, value)
|
|
editInstanceSetting(currentInstance, "SetBarTextSettings", nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, value)
|
|
afterUpdate()
|
|
end,
|
|
name = "Outline", --localize-me
|
|
desc = "Text Outline",
|
|
},
|
|
{--outline small color 10
|
|
type = "color",
|
|
get = function()
|
|
local r, g, b, a = unpack(currentInstance.row_info.textL_outline_small_color)
|
|
return {r, g, b, a}
|
|
end,
|
|
set = function(self, r, g, b, a)
|
|
editInstanceSetting(currentInstance, "SetBarTextSettings", nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, {r, g, b, a})
|
|
afterUpdate()
|
|
end,
|
|
name = "Outline Color",
|
|
desc = "Outline Color",
|
|
},
|
|
{--position number 11
|
|
type = "toggle",
|
|
get = function() return currentInstance.row_info.textL_show_number end,
|
|
set = function(self, fixedparam, value)
|
|
editInstanceSetting(currentInstance, "SetBarTextSettings", nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, value)
|
|
afterUpdate()
|
|
end,
|
|
name = Loc ["STRING_OPTIONS_TEXT_LPOSITION"],
|
|
desc = Loc ["STRING_OPTIONS_TEXT_LPOSITION_DESC"],
|
|
},
|
|
{--translit text 12
|
|
type = "toggle",
|
|
get = function() return currentInstance.row_info.textL_translit_text end,
|
|
set = function(self, fixedparam, value)
|
|
editInstanceSetting(currentInstance, "SetBarTextSettings", nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, value)
|
|
afterUpdate()
|
|
end,
|
|
name = Loc ["STRING_OPTIONS_TEXT_LTRANSLIT"],
|
|
desc = Loc ["STRING_OPTIONS_TEXT_LTRANSLIT_DESC"],
|
|
},
|
|
{--text offset
|
|
type = "range",
|
|
get = function() return currentInstance.row_info.textL_offset end,
|
|
set = function(self, fixedparam, value)
|
|
editInstanceSetting(currentInstance, "SetBarTextSettings", nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, value)
|
|
afterUpdate()
|
|
end,
|
|
min = -10,
|
|
max = 50,
|
|
step = 1,
|
|
name = "Offset", -- Loc ["STRING_OPTIONS_TEXT_LOFFSET"]
|
|
desc = "Change the horizontal offset.", -- Loc ["STRING_OPTIONS_TEXT_LOFFSET_DESC"]
|
|
},
|
|
|
|
{type = "blank"}, --13
|
|
|
|
{--custom left text 14
|
|
type = "toggle",
|
|
get = function() return currentInstance.row_info.textL_enable_custom_text end,
|
|
set = function(self, fixedparam, value)
|
|
editInstanceSetting(currentInstance, "SetBarTextSettings", nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, value)
|
|
afterUpdate()
|
|
end,
|
|
name = Loc ["STRING_OPTIONS_BARLEFTTEXTCUSTOM"],
|
|
desc = Loc ["STRING_OPTIONS_BARLEFTTEXTCUSTOM_DESC"],
|
|
},
|
|
{--open custom text editor 15
|
|
type = "execute",
|
|
func = function(self)
|
|
local callback = function(text)
|
|
text = text:gsub("||", "|")
|
|
text = DF:Trim(text)
|
|
editInstanceSetting(currentInstance, "SetBarTextSettings", nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, text)
|
|
afterUpdate()
|
|
end
|
|
_G.DetailsWindowOptionsBarTextEditor:Open (currentInstance.row_info.textL_custom_text, callback, _G.DetailsOptionsWindow, Details.instance_defaults.row_info.textL_custom_text)
|
|
end,
|
|
icontexture = [[Interface\GLUES\LOGIN\Glues-CheckBox-Check]],
|
|
--icontexcoords = {160/512, 179/512, 142/512, 162/512},
|
|
name = Loc ["STRING_OPTIONS_EDIT_CUSTOM_TEXT"],
|
|
desc = Loc ["STRING_OPTIONS_OPEN_ROWTEXT_EDITOR"],
|
|
},
|
|
|
|
{type = "breakline"}, --16
|
|
--right text options 17
|
|
{type = "label", get = function() return Loc ["STRING_OPTIONS_TEXT_RIGHT_ANCHOR"] end, text_template = subSectionTitleTextTemplate},
|
|
|
|
{--use class colors 18
|
|
type = "toggle",
|
|
get = function() return currentInstance.row_info.textR_class_colors end,
|
|
set = function(self, fixedparam, value)
|
|
editInstanceSetting(currentInstance, "SetBarTextSettings", nil, nil, nil, nil, value)
|
|
afterUpdate()
|
|
end,
|
|
name = Loc ["STRING_OPTIONS_BAR_COLORBYCLASS"],
|
|
desc = Loc ["STRING_OPTIONS_TEXT_LCLASSCOLOR_DESC"],
|
|
},
|
|
{--outline 19
|
|
type = "toggle",
|
|
get = function() return currentInstance.row_info.textR_outline end,
|
|
set = function(self, fixedparam, value)
|
|
editInstanceSetting(currentInstance, "SetBarTextSettings", nil, nil, nil, nil, nil, nil, value)
|
|
afterUpdate()
|
|
end,
|
|
name = Loc ["STRING_OPTIONS_TEXT_LOUTILINE"],
|
|
desc = Loc ["STRING_OPTIONS_TEXT_LOUTILINE_DESC"],
|
|
},
|
|
{--outline small 20
|
|
type = "toggle",
|
|
get = function() return currentInstance.row_info.textR_outline_small end,
|
|
set = function(self, fixedparam, value)
|
|
editInstanceSetting(currentInstance, "SetBarTextSettings", nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, value)
|
|
afterUpdate()
|
|
end,
|
|
name = "Outline", --localize-me
|
|
desc = "Text Outline",
|
|
},
|
|
{--outline small color 21
|
|
type = "color",
|
|
get = function()
|
|
local r, g, b, a = unpack(currentInstance.row_info.textR_outline_small_color)
|
|
return {r, g, b, a}
|
|
end,
|
|
set = function(self, r, g, b, a)
|
|
editInstanceSetting(currentInstance, "SetBarTextSettings", nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, {r, g, b, a})
|
|
afterUpdate()
|
|
end,
|
|
name = "Outline Color",
|
|
desc = "Outline Color",
|
|
},
|
|
|
|
{type = "blank"}, --22
|
|
|
|
{--show total --23
|
|
type = "toggle",
|
|
get = function() return currentInstance.row_info.textR_show_data[1] end,
|
|
set = function(self, fixedparam, value)
|
|
editInstanceSetting(currentInstance, "SetBarRightTextSettings", value)
|
|
afterUpdate()
|
|
end,
|
|
name = Loc ["STRING_OPTIONS_TEXT_SHOW_TOTAL"],
|
|
desc = Loc ["STRING_OPTIONS_TEXT_SHOW_TOTAL_DESC"],
|
|
},
|
|
{--show per second 24
|
|
type = "toggle",
|
|
get = function() return currentInstance.row_info.textR_show_data[2] end,
|
|
set = function(self, fixedparam, value)
|
|
editInstanceSetting(currentInstance, "SetBarRightTextSettings", nil, value)
|
|
afterUpdate()
|
|
end,
|
|
name = Loc ["STRING_OPTIONS_TEXT_SHOW_PS"],
|
|
desc = Loc ["STRING_OPTIONS_TEXT_SHOW_PS_DESC"],
|
|
},
|
|
{--show percent 25
|
|
type = "toggle",
|
|
get = function() return currentInstance.row_info.textR_show_data[3] end,
|
|
set = function(self, fixedparam, value)
|
|
editInstanceSetting(currentInstance, "SetBarRightTextSettings", nil, nil, value)
|
|
afterUpdate()
|
|
end,
|
|
name = Loc ["STRING_OPTIONS_TEXT_SHOW_PERCENT"],
|
|
desc = Loc ["STRING_OPTIONS_TEXT_SHOW_PERCENT_DESC"],
|
|
},
|
|
|
|
{type = "blank"}, --26
|
|
|
|
{--separator 27
|
|
type = "select",
|
|
get = function() return currentInstance.row_info.textR_separator end,
|
|
values = function()
|
|
return buildSeparatorMenu()
|
|
end,
|
|
name = Loc ["STRING_OPTIONS_TEXT_SHOW_SEPARATOR"],
|
|
desc = Loc ["STRING_OPTIONS_TEXT_SHOW_SEPARATOR_DESC"],
|
|
},
|
|
{--brackets 28
|
|
type = "select",
|
|
get = function() return currentInstance.row_info.textR_bracket end,
|
|
values = function()
|
|
return buildBracketMenu()
|
|
end,
|
|
name = Loc ["STRING_OPTIONS_TEXT_SHOW_BRACKET"],
|
|
desc = Loc ["STRING_OPTIONS_TEXT_SHOW_BRACKET_DESC"],
|
|
},
|
|
|
|
{type = "label", get = function() return Loc["STRING_OPTIONS_ALIGNED_TEXT_COLUMNS"] .. " (".. Loc["STRING_OPTIONSMENU_ROWSETTINGS"] ..")\n" .. Loc["STRING_OPTIONS_ALIGNED_TEXT_COLUMNS_WARNING"] end, text_template = subSectionTitleTextTemplate}, --29
|
|
|
|
{type = "blank"}, --30
|
|
|
|
{--custom right text 31
|
|
type = "toggle",
|
|
get = function() return currentInstance.row_info.textR_enable_custom_text end,
|
|
set = function(self, fixedparam, value)
|
|
editInstanceSetting(currentInstance, "SetBarTextSettings", nil, nil, nil, nil, nil, nil, nil, value)
|
|
afterUpdate()
|
|
end,
|
|
name = Loc ["STRING_OPTIONS_BARLEFTTEXTCUSTOM"],
|
|
desc = Loc ["STRING_OPTIONS_BARLEFTTEXTCUSTOM_DESC"],
|
|
},
|
|
{--open custom text editor 32
|
|
type = "execute",
|
|
func = function(self)
|
|
local callback = function(text)
|
|
text = text:gsub("||", "|")
|
|
text = DF:Trim(text)
|
|
editInstanceSetting(currentInstance, "SetBarTextSettings", nil, nil, nil, nil, nil, nil, nil, nil, text)
|
|
afterUpdate()
|
|
end
|
|
_G.DetailsWindowOptionsBarTextEditor:Open (currentInstance.row_info.textR_custom_text, callback, _G.DetailsOptionsWindow, Details.instance_defaults.row_info.textL_custom_text)
|
|
end,
|
|
icontexture = [[Interface\GLUES\LOGIN\Glues-CheckBox-Check]],
|
|
--icontexcoords = {160/512, 179/512, 142/512, 162/512},
|
|
name = Loc ["STRING_OPTIONS_EDIT_CUSTOM_TEXT"],
|
|
desc = Loc ["STRING_OPTIONS_OPEN_ROWTEXT_EDITOR"],
|
|
},
|
|
}
|
|
|
|
sectionFrame.sectionOptions = sectionOptions
|
|
sectionOptions.always_boxfirst = true
|
|
DF:BuildMenu(sectionFrame, sectionOptions, startX, startY-20, heightSize, false, options_text_template, options_dropdown_template, options_switch_template, true, options_slider_template, options_button_template)
|
|
|
|
local separatorOption = sectionFrame.widget_list[25]
|
|
local bracketOption = sectionFrame.widget_list[26]
|
|
local warningLabel = sectionFrame.widget_list[27]
|
|
Details222.OptionsPanel.textSeparatorOption = separatorOption
|
|
Details222.OptionsPanel.textbracketOption = bracketOption
|
|
|
|
sectionFrame:SetScript("OnShow", function()
|
|
if (currentInstance.use_multi_fontstrings) then
|
|
separatorOption:Disable()
|
|
bracketOption:Disable()
|
|
warningLabel:Show()
|
|
else
|
|
separatorOption:Enable()
|
|
bracketOption:Enable()
|
|
warningLabel:Hide()
|
|
end
|
|
end)
|
|
end
|
|
|
|
tinsert(Details.optionsSection, buildSection)
|
|
end
|
|
|
|
-- ~05 - title bar
|
|
do
|
|
|
|
local func = function(menu_button)
|
|
editInstanceSetting(currentInstance, "menu_icons", menu_button, not currentInstance.menu_icons[menu_button])
|
|
editInstanceSetting(currentInstance, "ToolbarMenuSetButtons")
|
|
afterUpdate()
|
|
end
|
|
|
|
--menu text face
|
|
local onSelectFont = function(_, _, fontName)
|
|
Details.font_faces.menus = fontName
|
|
end
|
|
|
|
local buildFontMenu = function()
|
|
local fontObjects = SharedMedia:HashTable ("font")
|
|
local fontTable = {}
|
|
for name, fontPath in pairs(fontObjects) do
|
|
fontTable[#fontTable+1] = {value = name, label = name, icon = font_select_icon, texcoord = font_select_texcoord, onclick = onSelectFont, font = fontPath, descfont = name, desc = Loc ["STRING_MUSIC_DETAILS_ROBERTOCARLOS"]}
|
|
end
|
|
table.sort (fontTable, function(t1, t2) return t1.label < t2.label end)
|
|
return fontTable
|
|
end
|
|
|
|
--attribute text font
|
|
local on_select_attribute_font = function(self, instance, fontName)
|
|
editInstanceSetting(currentInstance, "AttributeMenu", nil, nil, nil, fontName)
|
|
afterUpdate()
|
|
end
|
|
|
|
local build_font_menu = function()
|
|
local fonts = {}
|
|
for name, fontPath in pairs(SharedMedia:HashTable ("font")) do
|
|
fonts [#fonts+1] = {value = name, label = name, icon = font_select_icon, texcoord = font_select_texcoord, onclick = on_select_attribute_font, font = fontPath, descfont = name, desc = "Our thoughts strayed constantly\nAnd without boundary\nThe ringing of the division bell had began."}
|
|
end
|
|
table.sort (fonts, function(t1, t2) return t1.label < t2.label end)
|
|
return fonts
|
|
end
|
|
|
|
--icon set menu
|
|
local on_select_icon_set = function(self, instance, texturePath)
|
|
editInstanceSetting(currentInstance, "toolbar_icon_file", texturePath)
|
|
editInstanceSetting(currentInstance, "ChangeSkin")
|
|
afterUpdate()
|
|
end
|
|
|
|
--custom title bar texture
|
|
local onSelectCustomTitleBarTexture = function(_, instance, textureName)
|
|
editInstanceSetting(currentInstance, "SetTitleBarSettings", nil, nil, textureName)
|
|
editInstanceSetting(currentInstance, "RefreshTitleBar")
|
|
end
|
|
|
|
local buildTextureCustomTitleBar = function()
|
|
local textures = SharedMedia:HashTable("statusbar")
|
|
local texTable = {}
|
|
for name, texturePath in pairs(textures) do
|
|
texTable[#texTable+1] = {value = name, label = name, statusbar = texturePath, onclick = onSelectCustomTitleBarTexture}
|
|
end
|
|
table.sort(texTable, function(t1, t2) return t1.label < t2.label end)
|
|
return texTable
|
|
end
|
|
|
|
local buildIconStyleMenu = function()
|
|
local iconMenu = {
|
|
{value = "Interface\\AddOns\\Details\\images\\toolbar_icons", label = "Set 1", icon = "Interface\\AddOns\\Details\\images\\toolbar_icons", texcoord = {0, 0.125, 0, 1}, onclick = on_select_icon_set},
|
|
{value = "Interface\\AddOns\\Details\\images\\toolbar_icons_shadow", label = "Set 2", icon = "Interface\\AddOns\\Details\\images\\toolbar_icons_shadow", texcoord = {0, 0.125, 0, 1}, onclick = on_select_icon_set},
|
|
{value = "Interface\\AddOns\\Details\\images\\toolbar_icons_2", label = "Set 3", icon = "Interface\\AddOns\\Details\\images\\toolbar_icons_2", texcoord = {0, 0.125, 0, 1}, onclick = on_select_icon_set},
|
|
{value = "Interface\\AddOns\\Details\\images\\toolbar_icons_2_shadow", label = "Set 4", icon = "Interface\\AddOns\\Details\\images\\toolbar_icons_2_shadow", texcoord = {0, 0.125, 0, 1}, onclick = on_select_icon_set},
|
|
}
|
|
return iconMenu
|
|
end
|
|
|
|
local buttonWidth = 25
|
|
|
|
local buildSection = function(sectionFrame)
|
|
local sectionOptions = {
|
|
|
|
{type = "label", get = function() return "Title Bar" end, text_template = subSectionTitleTextTemplate},
|
|
|
|
{--use custom titlebar
|
|
type = "toggle",
|
|
get = function() return currentInstance.titlebar_shown end,
|
|
set = function(self, fixedparam, value)
|
|
editInstanceSetting(currentInstance, "SetTitleBarSettings", value)
|
|
editInstanceSetting(currentInstance, "RefreshTitleBar")
|
|
afterUpdate()
|
|
end,
|
|
name = "Enable Custom Title Bar",
|
|
desc = "Use an alternative title bar instead of the title bar builtin in the Skin file.\n\n|cFFFFFF00Important|r: To disable the title bar from the Skin file, go to 'Window Body' and make the 'skin color' fully transparent.",
|
|
},
|
|
|
|
{--custom title bar height
|
|
type = "range",
|
|
get = function() return currentInstance.titlebar_height end,
|
|
set = function(self, fixedparam, value)
|
|
editInstanceSetting(currentInstance, "SetTitleBarSettings", nil, value)
|
|
editInstanceSetting(currentInstance, "RefreshTitleBar")
|
|
afterUpdate()
|
|
end,
|
|
min = 0,
|
|
max = 32,
|
|
step = 1,
|
|
name = "Height",
|
|
desc = "Height",
|
|
},
|
|
|
|
{--custom title bar texture
|
|
type = "select",
|
|
get = function() return currentInstance.titlebar_texture end,
|
|
values = function()
|
|
return buildTextureCustomTitleBar()
|
|
end,
|
|
name = Loc ["STRING_TEXTURE"],
|
|
desc = Loc ["STRING_TEXTURE"],
|
|
},
|
|
|
|
{--texture color
|
|
type = "color",
|
|
get = function()
|
|
local r, g, b, a = unpack(currentInstance.titlebar_texture_color)
|
|
return {r, g, b, a}
|
|
end,
|
|
set = function(self, r, g, b, a)
|
|
editInstanceSetting(currentInstance, "SetTitleBarSettings", nil, nil, nil, {r, g, b, a})
|
|
editInstanceSetting(currentInstance, "RefreshTitleBar")
|
|
afterUpdate()
|
|
end,
|
|
name = "Color",
|
|
desc = "Color",
|
|
},
|
|
|
|
|
|
--SetTitleBarSettings(shown, height, texture, color)
|
|
|
|
{--disable all displays
|
|
type = "toggle",
|
|
get = function() return currentInstance.disable_alldisplays_window end,
|
|
set = function(self, fixedparam, value)
|
|
Details.disable_alldisplays_window = value
|
|
afterUpdate()
|
|
end,
|
|
name = Loc ["STRING_OPTIONS_DISABLE_ALLDISPLAYSWINDOW"],
|
|
desc = Loc ["STRING_OPTIONS_DISABLE_ALLDISPLAYSWINDOW_DESC"],
|
|
},
|
|
|
|
|
|
|
|
{type = "blank"},
|
|
|
|
{type = "label", get = function() return Loc ["STRING_OPTIONS_TITLEBAR_MENUBUTTONS_HEADER"] end, text_template = subSectionTitleTextTemplate},
|
|
|
|
{type = "label", get = function() return Loc ["STRING_OPTIONS_MENU_SHOWBUTTONS"] end, text_template = options_text_template},
|
|
{--button orange gear
|
|
type = "execute",
|
|
get = function() return "" end,
|
|
func = function(self, fixedparam, value)
|
|
func(1)
|
|
end,
|
|
width = buttonWidth,
|
|
height = 20,
|
|
inline = true,
|
|
name = "",
|
|
--desc = "",
|
|
icontexture = [[Interface\AddOns\Details\images\toolbar_icons]],
|
|
icontexcoords = {0/256, 32/256, 0, 1},
|
|
},
|
|
|
|
{--button segments
|
|
type = "execute",
|
|
get = function() return "" end,
|
|
func = function(self, fixedparam, value)
|
|
func(2)
|
|
end,
|
|
width = buttonWidth,
|
|
height = 20,
|
|
inline = true,
|
|
name = "",
|
|
--desc = "",
|
|
icontexture = [[Interface\AddOns\Details\images\toolbar_icons]],
|
|
icontexcoords = {33/256, 64/256, 0, 1},
|
|
},
|
|
|
|
{--button sword
|
|
type = "execute",
|
|
get = function() return "" end,
|
|
func = function(self, fixedparam, value)
|
|
func(3)
|
|
end,
|
|
width = buttonWidth,
|
|
height = 20,
|
|
inline = true,
|
|
name = "",
|
|
--desc = "",
|
|
icontexture = [[Interface\AddOns\Details\images\toolbar_icons]],
|
|
icontexcoords = {64/256, 96/256, 0, 1},
|
|
},
|
|
|
|
{--button report
|
|
type = "execute",
|
|
get = function() return "" end,
|
|
func = function(self, fixedparam, value)
|
|
func(4)
|
|
end,
|
|
width = buttonWidth,
|
|
height = 20,
|
|
inline = true,
|
|
name = "",
|
|
--desc = "",
|
|
icontexture = [[Interface\AddOns\Details\images\toolbar_icons]],
|
|
icontexcoords = {96/256, 128/256, 0, 1},
|
|
},
|
|
|
|
{--button clear
|
|
type = "execute",
|
|
get = function() return "" end,
|
|
func = function(self, fixedparam, value)
|
|
func(5)
|
|
end,
|
|
width = buttonWidth,
|
|
height = 20,
|
|
inline = true,
|
|
name = "",
|
|
--desc = "",
|
|
icontexture = [[Interface\AddOns\Details\images\toolbar_icons]],
|
|
icontexcoords = {128/256, 160/256, 0, 1},
|
|
},
|
|
|
|
{--button clear
|
|
type = "execute",
|
|
get = function() return "" end,
|
|
func = function(self, fixedparam, value)
|
|
func(6)
|
|
end,
|
|
width = buttonWidth,
|
|
height = 20,
|
|
inline = true,
|
|
name = "",
|
|
--desc = "",
|
|
icontexture = [[Interface\AddOns\Details\images\toolbar_icons]],
|
|
icontexcoords = {160/256, 192/256, 0, 1},
|
|
},
|
|
|
|
{--icon set icon style
|
|
type = "select",
|
|
get = function() return currentInstance.toolbar_icon_file end,
|
|
values = function()
|
|
return buildIconStyleMenu()
|
|
end,
|
|
name = "Icon Set",
|
|
desc = "Icon Set",
|
|
},
|
|
|
|
{--title bar icons size
|
|
type = "range",
|
|
get = function() return currentInstance.menu_icons_size end,
|
|
set = function(self, fixedparam, value)
|
|
editInstanceSetting(currentInstance, "ToolbarMenuButtonsSize", value)
|
|
afterUpdate()
|
|
end,
|
|
min = 0.4,
|
|
max = 1.6,
|
|
step = 0.05,
|
|
usedecimals = true,
|
|
name = Loc ["STRING_OPTIONS_SIZE"],
|
|
desc = Loc ["STRING_OPTIONS_MENU_BUTTONSSIZE_DESC"],
|
|
},
|
|
|
|
{--title bar icons spacing
|
|
type = "range",
|
|
get = function() return currentInstance.menu_icons.space end,
|
|
set = function(self, fixedparam, value)
|
|
editInstanceSetting(currentInstance, "ToolbarMenuSetButtonsOptions", value)
|
|
afterUpdate()
|
|
end,
|
|
min = -5,
|
|
max = 10,
|
|
step = 1,
|
|
name = Loc ["STRING_OPTIONS_MENUS_SPACEMENT"],
|
|
desc = Loc ["STRING_OPTIONS_MENUS_SPACEMENT_DESC"],
|
|
},
|
|
|
|
{--title bar icons position X
|
|
type = "range",
|
|
get = function() return currentInstance.toolbar_side == 1 and currentInstance.menu_anchor[1] or currentInstance.menu_anchor_down[1] end,
|
|
set = function(self, fixedparam, value)
|
|
editInstanceSetting(currentInstance, "MenuAnchor", value)
|
|
afterUpdate()
|
|
end,
|
|
min = -200,
|
|
max = 200,
|
|
step = 1,
|
|
name = Loc ["STRING_OPTIONS_MENU_X"],
|
|
desc = Loc ["STRING_OPTIONS_MENU_X_DESC"],
|
|
},
|
|
|
|
{--title bar icons position Y
|
|
type = "range",
|
|
get = function() return currentInstance.toolbar_side == 1 and currentInstance.menu_anchor[2] or currentInstance.menu_anchor_down[2] end,
|
|
set = function(self, fixedparam, value)
|
|
editInstanceSetting(currentInstance, "MenuAnchor", nil, value)
|
|
afterUpdate()
|
|
end,
|
|
min = -200,
|
|
max = 200,
|
|
step = 1,
|
|
name = Loc ["STRING_OPTIONS_MENU_Y"],
|
|
desc = Loc ["STRING_OPTIONS_MENU_X_DESC"],
|
|
},
|
|
|
|
{--icons desaturated
|
|
type = "toggle",
|
|
get = function() return currentInstance.desaturated_menu end,
|
|
set = function(self, fixedparam, value)
|
|
editInstanceSetting(currentInstance, "DesaturateMenu", value)
|
|
afterUpdate()
|
|
end,
|
|
name = Loc ["STRING_OPTIONS_DESATURATE_MENU"],
|
|
desc = Loc ["STRING_OPTIONS_DESATURATE_MENU_DESC"],
|
|
},
|
|
|
|
{--hide icon main icon
|
|
type = "toggle",
|
|
get = function() return currentInstance.hide_icon end,
|
|
set = function(self, fixedparam, value)
|
|
editInstanceSetting(currentInstance, "HideMainIcon", value)
|
|
afterUpdate()
|
|
end,
|
|
name = Loc ["STRING_OPTIONS_HIDE_ICON"],
|
|
desc = Loc ["STRING_OPTIONS_HIDE_ICON_DESC"],
|
|
},
|
|
|
|
{--button attach to right
|
|
type = "toggle",
|
|
get = function() return currentInstance.menu_anchor.side == 2 and true or false end,
|
|
set = function(self, fixedparam, value)
|
|
editInstanceSetting(currentInstance, "LeftMenuAnchorSide", value and 2 or 1)
|
|
afterUpdate()
|
|
end,
|
|
name = Loc ["STRING_OPTIONS_MENU_ANCHOR"],
|
|
desc = Loc ["STRING_OPTIONS_MENU_ANCHOR_DESC"],
|
|
},
|
|
|
|
{--plugins button attach to right
|
|
type = "toggle",
|
|
get = function() return currentInstance.plugins_grow_direction == 2 and true or false end,
|
|
set = function(self, fixedparam, value)
|
|
editInstanceSetting(currentInstance, "plugins_grow_direction", value and 2 or 1)
|
|
editInstanceSetting(currentInstance, "ToolbarMenuSetButtons")
|
|
afterUpdate()
|
|
end,
|
|
name = Loc ["STRING_OPTIONS_PICONS_DIRECTION"],
|
|
desc = Loc ["STRING_OPTIONS_PICONS_DIRECTION_DESC"],
|
|
},
|
|
|
|
{--disable reset button
|
|
type = "toggle",
|
|
get = function() return Details.disable_reset_button end,
|
|
set = function(self, fixedparam, value)
|
|
Details.disable_reset_button = value
|
|
afterUpdate()
|
|
end,
|
|
name = Loc ["STRING_OPTIONS_DISABLE_RESET"],
|
|
desc = Loc ["STRING_OPTIONS_DISABLE_RESET_DESC"],
|
|
},
|
|
|
|
{--click to open menus
|
|
type = "toggle",
|
|
get = function() return Details.instances_menu_click_to_open end,
|
|
set = function(self, fixedparam, value)
|
|
Details.instances_menu_click_to_open = value
|
|
afterUpdate()
|
|
end,
|
|
name = Loc ["STRING_OPTIONS_CLICK_TO_OPEN_MENUS"],
|
|
desc = Loc ["STRING_OPTIONS_CLICK_TO_OPEN_MENUS_DESC"],
|
|
},
|
|
|
|
{--auto hide buttons
|
|
type = "toggle",
|
|
get = function() return currentInstance.auto_hide_menu.left end,
|
|
set = function(self, fixedparam, value)
|
|
editInstanceSetting(currentInstance, "SetAutoHideMenu", value)
|
|
afterUpdate()
|
|
end,
|
|
name = Loc ["STRING_OPTIONS_MENU_AUTOHIDE_LEFT"],
|
|
desc = Loc ["STRING_OPTIONS_MENU_AUTOHIDE_DESC"],
|
|
},
|
|
|
|
{type = "breakline"},
|
|
{type = "label", get = function() return Loc ["STRING_OPTIONS_ATTRIBUTE_TEXT"] end, text_template = subSectionTitleTextTemplate},
|
|
|
|
{--enable text
|
|
type = "toggle",
|
|
get = function() return currentInstance.attribute_text.enabled end,
|
|
set = function(self, fixedparam, value)
|
|
editInstanceSetting(currentInstance, "AttributeMenu", value)
|
|
afterUpdate()
|
|
end,
|
|
name = Loc ["STRING_ENABLED"],
|
|
desc = Loc ["STRING_OPTIONS_MENU_ATTRIBUTE_ENABLED_DESC"],
|
|
},
|
|
|
|
{--encounter time
|
|
type = "toggle",
|
|
get = function() return currentInstance.attribute_text.show_timer and true or false end,
|
|
set = function(self, fixedparam, value)
|
|
editInstanceSetting(currentInstance, "AttributeMenu", nil, nil, nil, nil, nil, nil, nil, nil, value)
|
|
afterUpdate()
|
|
end,
|
|
name = Loc ["STRING_OPTIONS_MENU_ATTRIBUTE_ENCOUNTERTIMER"],
|
|
desc = Loc ["STRING_OPTIONS_MENU_ATTRIBUTE_ENCOUNTERTIMER_DESC"],
|
|
},
|
|
|
|
{--text size
|
|
type = "range",
|
|
get = function() return tonumber(currentInstance.attribute_text.text_size) end,
|
|
set = function(self, fixedparam, value)
|
|
editInstanceSetting(currentInstance, "AttributeMenu", nil, nil, nil, nil, value)
|
|
afterUpdate()
|
|
end,
|
|
min = 5,
|
|
max = 32,
|
|
step = 1,
|
|
name = Loc ["STRING_OPTIONS_TEXT_SIZE"],
|
|
desc = Loc ["STRING_OPTIONS_MENU_ATTRIBUTE_TEXTSIZE_DESC"],
|
|
},
|
|
|
|
{--text font
|
|
type = "select",
|
|
get = function() return currentInstance.attribute_text.text_face end,
|
|
values = function()
|
|
return build_font_menu()
|
|
end,
|
|
name = Loc ["STRING_OPTIONS_TEXT_FONT"],
|
|
desc = Loc ["STRING_OPTIONS_MENU_ATTRIBUTE_FONT_DESC"],
|
|
},
|
|
|
|
{--text color
|
|
type = "color",
|
|
get = function()
|
|
local r, g, b = unpack(currentInstance.attribute_text.text_color)
|
|
return {r, g, b, a}
|
|
end,
|
|
set = function(self, r, g, b, a)
|
|
editInstanceSetting(currentInstance, "AttributeMenu", nil, nil, nil, nil, nil, {r, g, b, a})
|
|
afterUpdate()
|
|
end,
|
|
name = Loc ["STRING_OPTIONS_MENU_ATTRIBUTE_TEXTCOLOR"],
|
|
desc = Loc ["STRING_OPTIONS_MENU_ATTRIBUTE_TEXTCOLOR_DESC"],
|
|
},
|
|
|
|
{--text shadow
|
|
type = "toggle",
|
|
get = function() return currentInstance.attribute_text.shadow end,
|
|
set = function(self, fixedparam, value)
|
|
editInstanceSetting(currentInstance, "AttributeMenu", nil, nil, nil, nil, nil, nil, nil, value)
|
|
afterUpdate()
|
|
end,
|
|
name = Loc ["STRING_OPTIONS_TEXT_LOUTILINE"],
|
|
desc = Loc ["STRING_OPTIONS_MENU_ATTRIBUTE_SHADOW_DESC"],
|
|
},
|
|
|
|
{--text X
|
|
type = "range",
|
|
get = function() return tonumber(currentInstance.attribute_text.anchor[1]) end,
|
|
set = function(self, fixedparam, value)
|
|
editInstanceSetting(currentInstance, "AttributeMenu", nil, value)
|
|
afterUpdate()
|
|
end,
|
|
min = -30,
|
|
max = 300,
|
|
step = 1,
|
|
name = Loc ["STRING_OPTIONS_MENU_ATTRIBUTE_ANCHORX"],
|
|
desc = Loc ["STRING_OPTIONS_MENU_ATTRIBUTE_ANCHORX_DESC"],
|
|
},
|
|
|
|
{--text Y
|
|
type = "range",
|
|
get = function() return tonumber(currentInstance.attribute_text.anchor[2]) end,
|
|
set = function(self, fixedparam, value)
|
|
editInstanceSetting(currentInstance, "AttributeMenu", nil, nil, value)
|
|
afterUpdate()
|
|
end,
|
|
min = -100,
|
|
max = 50,
|
|
step = 1,
|
|
name = Loc ["STRING_OPTIONS_MENU_ATTRIBUTE_ANCHORY"],
|
|
desc = Loc ["STRING_OPTIONS_MENU_ATTRIBUTE_ANCHORY_DESC"],
|
|
},
|
|
|
|
{--anchor to top
|
|
type = "toggle",
|
|
get = function() return currentInstance.attribute_text.side == 1 and true or false end,
|
|
set = function(self, fixedparam, value)
|
|
editInstanceSetting(currentInstance, "AttributeMenu", nil, nil, nil, nil, nil, nil, value and 1 or 2)
|
|
afterUpdate()
|
|
end,
|
|
name = Loc ["STRING_OPTIONS_MENU_ATTRIBUTE_SIDE"],
|
|
desc = Loc ["STRING_OPTIONS_MENU_ATTRIBUTE_SIDE_DESC"],
|
|
},
|
|
|
|
{type = "blank"},
|
|
{--menu text font
|
|
type = "select",
|
|
get = function() return Details.font_faces.menus end,
|
|
values = function()
|
|
return buildFontMenu()
|
|
end,
|
|
name = Loc ["STRING_OPTIONS_MENU_FONT_FACE"],
|
|
desc = Loc ["STRING_OPTIONS_MENU_FONT_FACE_DESC"],
|
|
},
|
|
|
|
{--menu text size
|
|
type = "range",
|
|
get = function() return Details.font_sizes.menus end,
|
|
set = function(self, fixedparam, value)
|
|
Details.font_sizes.menus = value
|
|
afterUpdate()
|
|
end,
|
|
min = 5,
|
|
max = 32,
|
|
step = 1,
|
|
name = Loc ["STRING_OPTIONS_TEXT_SIZE"],
|
|
desc = Loc ["STRING_OPTIONS_MENU_FONT_SIZE_DESC"],
|
|
},
|
|
|
|
}
|
|
|
|
sectionFrame.sectionOptions = sectionOptions
|
|
sectionOptions.always_boxfirst = true
|
|
DF:BuildMenu(sectionFrame, sectionOptions, startX, startY-20, heightSize, false, options_text_template, options_dropdown_template, options_switch_template, true, options_slider_template, options_button_template)
|
|
end
|
|
|
|
tinsert(Details.optionsSection, buildSection)
|
|
end
|
|
|
|
-- ~06 - body setings
|
|
do
|
|
|
|
--frame strata options
|
|
local strata = {
|
|
["BACKGROUND"] = "Background",
|
|
["LOW"] = "Low",
|
|
["MEDIUM"] = "Medium",
|
|
["HIGH"] = "High",
|
|
["DIALOG"] = "Dialog"
|
|
}
|
|
|
|
local onStrataSelect = function(_, instance, strataName)
|
|
editInstanceSetting(currentInstance, "SetFrameStrata", strataName)
|
|
afterUpdate()
|
|
end
|
|
|
|
local strataTable = {
|
|
{value = "BACKGROUND", label = "Background", onclick = onStrataSelect, icon = [[Interface\Buttons\UI-MicroStream-Green]], iconcolor = {0, .5, 0, .8}, texcoord = nil}, --Interface\Buttons\UI-MicroStream-Green UI-MicroStream-Red UI-MicroStream-Yellow
|
|
{value = "LOW", label = "Low", onclick = onStrataSelect, icon = [[Interface\Buttons\UI-MicroStream-Green]] , texcoord = nil}, --Interface\Buttons\UI-MicroStream-Green UI-MicroStream-Red UI-MicroStream-Yellow
|
|
{value = "MEDIUM", label = "Medium", onclick = onStrataSelect, icon = [[Interface\Buttons\UI-MicroStream-Yellow]] , texcoord = nil}, --Interface\Buttons\UI-MicroStream-Green UI-MicroStream-Red UI-MicroStream-Yellow
|
|
{value = "HIGH", label = "High", onclick = onStrataSelect, icon = [[Interface\Buttons\UI-MicroStream-Yellow]] , iconcolor = {1, .7, 0, 1}, texcoord = nil}, --Interface\Buttons\UI-MicroStream-Green UI-MicroStream-Red UI-MicroStream-Yellow
|
|
{value = "DIALOG", label = "Dialog", onclick = onStrataSelect, icon = [[Interface\Buttons\UI-MicroStream-Red]] , iconcolor = {1, 0, 0, 1}, texcoord = nil}, --Interface\Buttons\UI-MicroStream-Green UI-MicroStream-Red UI-MicroStream-Yellow
|
|
}
|
|
local buildStrataMenu = function() return strataTable end
|
|
|
|
--backdrop texture
|
|
local onBackdropSelect = function(_, instance, backdropName)
|
|
editInstanceSetting(currentInstance, "SetBackdropTexture", backdropName)
|
|
afterUpdate()
|
|
end
|
|
|
|
local backdrop_icon_size = {16, 16}
|
|
local backdrop_icon_color = {.6, .6, .6}
|
|
|
|
local buildBackdropMenu = function()
|
|
local backdropTable = {}
|
|
for name, backdropPath in pairs(SharedMedia:HashTable ("background")) do
|
|
backdropTable[#backdropTable+1] = {value = name, label = name, onclick = onBackdropSelect, icon = [[Interface\ITEMSOCKETINGFRAME\UI-EMPTYSOCKET]], iconsize = backdrop_icon_size, iconcolor = backdrop_icon_color}
|
|
end
|
|
return backdropTable
|
|
end
|
|
|
|
--instance selector selection
|
|
local onSelectInstance = function() end
|
|
|
|
local buildInstanceMenu = function()
|
|
local instanceList = {}
|
|
for index = 1, math.min (#Details.tabela_instancias, Details.instances_amount) do
|
|
local instance = Details.tabela_instancias[index]
|
|
|
|
--what the window is showing
|
|
local atributo = instance.atributo
|
|
local sub_atributo = instance.sub_atributo
|
|
|
|
if (atributo == 5) then --custom
|
|
local CustomObject = Details.custom [sub_atributo]
|
|
if (not CustomObject) then
|
|
instance:ResetAttribute()
|
|
atributo = instance.atributo
|
|
sub_atributo = instance.sub_atributo
|
|
instanceList [#instanceList+1] = {value = index, label = "#".. index .. " " .. Details.atributos.lista [atributo] .. " - " .. Details.sub_atributos [atributo].lista [sub_atributo], onclick = onSelectInstance, icon = Details.sub_atributos [atributo].icones[sub_atributo] [1], texcoord = Details.sub_atributos [atributo].icones[sub_atributo] [2]}
|
|
else
|
|
instanceList [#instanceList+1] = {value = index, label = "#".. index .. " " .. CustomObject.name, onclick = onSelectInstance, icon = CustomObject.icon}
|
|
end
|
|
else
|
|
local modo = instance.modo
|
|
|
|
if (modo == 1) then --solo plugin
|
|
atributo = Details.SoloTables.Mode or 1
|
|
local SoloInfo = Details.SoloTables.Menu [atributo]
|
|
if (SoloInfo) then
|
|
instanceList [#instanceList+1] = {value = index, label = "#".. index .. " " .. SoloInfo [1], onclick = onSelectInstance, icon = SoloInfo [2]}
|
|
else
|
|
instanceList [#instanceList+1] = {value = index, label = "#".. index .. " unknown", onclick = onSelectInstance, icon = ""}
|
|
end
|
|
|
|
elseif (modo == 4) then --raid plugin
|
|
local plugin_name = instance.current_raid_plugin or instance.last_raid_plugin
|
|
if (plugin_name) then
|
|
local plugin_object = Details:GetPlugin (plugin_name)
|
|
if (plugin_object) then
|
|
instanceList [#instanceList+1] = {value = index, label = "#".. index .. " " .. plugin_object.__name, onclick = onSelectInstance, icon = plugin_object.__icon}
|
|
else
|
|
instanceList [#instanceList+1] = {value = index, label = "#".. index .. " unknown", onclick = onSelectInstance, icon = ""}
|
|
end
|
|
else
|
|
instanceList [#instanceList+1] = {value = index, label = "#".. index .. " unknown", onclick = onSelectInstance, icon = ""}
|
|
end
|
|
else
|
|
instanceList [#instanceList+1] = {value = index, label = "#".. index .. " " .. Details.atributos.lista [atributo] .. " - " .. Details.sub_atributos [atributo].lista [sub_atributo], onclick = onSelectInstance, icon = Details.sub_atributos [atributo].icones[sub_atributo] [1], texcoord = Details.sub_atributos [atributo].icones[sub_atributo] [2]}
|
|
end
|
|
end
|
|
end
|
|
return instanceList
|
|
end
|
|
|
|
|
|
local buildSection = function(sectionFrame)
|
|
local sectionOptions = {
|
|
{type = "label", get = function() return Loc["STRING_OPTIONS_GENERAL_ANCHOR"] end, text_template = subSectionTitleTextTemplate},
|
|
|
|
{--window color (skin color)
|
|
type = "color",
|
|
get = function()
|
|
local r, g, b = unpack(currentInstance.color)
|
|
return {r, g, b, 1}
|
|
end,
|
|
|
|
set = function(self, r, g, b, a)
|
|
editInstanceSetting(currentInstance, "InstanceColor", r, g, b, a, nil, true)
|
|
afterUpdate()
|
|
end,
|
|
name = Loc ["STRING_OPTIONS_WINDOW_SKIN_COLOR"],
|
|
desc = Loc ["STRING_OPTIONS_WINDOW_SKIN_COLOR_DESC"],
|
|
},
|
|
|
|
{--show borders
|
|
type = "toggle",
|
|
get = function() return currentInstance.show_sidebars end,
|
|
set = function(self, fixedparam, value)
|
|
if (value) then
|
|
editInstanceSetting(currentInstance, "ShowSideBars")
|
|
else
|
|
editInstanceSetting(currentInstance, "HideSideBars")
|
|
end
|
|
|
|
afterUpdate()
|
|
end,
|
|
name = Loc ["STRING_OPTIONS_SHOW_SIDEBARS"],
|
|
desc = Loc ["STRING_OPTIONS_SHOW_SIDEBARS_DESC"],
|
|
},
|
|
|
|
{--row's area color
|
|
type = "color",
|
|
get = function()
|
|
return {currentInstance.bg_r, currentInstance.bg_g, currentInstance.bg_b, currentInstance.bg_alpha}
|
|
end,
|
|
set = function(self, r, g, b, a)
|
|
editInstanceSetting(currentInstance, "SetBackgroundColor", r, g, b)
|
|
editInstanceSetting(currentInstance, "SetBackgroundAlpha", a)
|
|
afterUpdate()
|
|
end,
|
|
name = Loc ["STRING_OPTIONS_WINDOW_ROWAREA_COLOR"],
|
|
desc = Loc ["STRING_OPTIONS_WINDOW_ROWAREA_COLOR_DESC"],
|
|
},
|
|
|
|
{--window scale
|
|
type = "range",
|
|
get = function() return tonumber(currentInstance.window_scale) end,
|
|
set = function(self, fixedparam, value)
|
|
editInstanceSetting(currentInstance, "SetWindowScale", value, true)
|
|
afterUpdate()
|
|
end,
|
|
min = 0.65,
|
|
max = 1.5,
|
|
step = 0.02,
|
|
usedecimals = true,
|
|
name = Loc ["STRING_OPTIONS_WINDOW_SCALE"],
|
|
desc = Loc ["STRING_OPTIONS_WINDOW_SCALE_DESC"],
|
|
},
|
|
|
|
{--ignore on mass hide
|
|
type = "toggle",
|
|
get = function() return currentInstance.ignore_mass_showhide end,
|
|
set = function(self, fixedparam, value)
|
|
editInstanceSetting(currentInstance, "ignore_mass_showhide", value)
|
|
afterUpdate()
|
|
end,
|
|
name = Loc ["STRING_OPTIONS_WINDOW_IGNOREMASSTOGGLE"],
|
|
desc = Loc ["STRING_OPTIONS_WINDOW_IGNOREMASSTOGGLE_DESC"],
|
|
},
|
|
|
|
{--frame strata
|
|
type = "select",
|
|
get = function() return strata[currentInstance.strata] or "Low" end,
|
|
values = function()
|
|
return buildStrataMenu()
|
|
end,
|
|
name = Loc ["STRING_OPTIONS_INSTANCE_STRATA"],
|
|
desc = Loc ["STRING_OPTIONS_INSTANCE_STRATA_DESC"],
|
|
},
|
|
|
|
{--backdrop texture
|
|
type = "select",
|
|
get = function() return currentInstance.backdrop_texture end,
|
|
values = function()
|
|
return buildBackdropMenu()
|
|
end,
|
|
name = Loc ["STRING_OPTIONS_INSTANCE_BACKDROP"],
|
|
desc = Loc ["STRING_OPTIONS_INSTANCE_BACKDROP_DESC"],
|
|
},
|
|
|
|
{type = "blank"},
|
|
{--click through
|
|
type = "toggle",
|
|
get = function() return currentInstance.clickthrough_window end,
|
|
set = function(self, fixedparam, value)
|
|
Details:InstanceGroupCall(currentInstance, "UpdateClickThroughSettings", nil, value, value, value)
|
|
afterUpdate()
|
|
end,
|
|
name = "Click Through",
|
|
desc = "Click Through",
|
|
boxfirst = true,
|
|
},
|
|
{--click only in combat
|
|
type = "toggle",
|
|
get = function() return currentInstance.clickthrough_incombatonly end,
|
|
set = function(self, fixedparam, value)
|
|
Details:InstanceGroupCall(currentInstance, "UpdateClickThroughSettings", value)
|
|
afterUpdate()
|
|
end,
|
|
name = "Click Through Only in Combat",
|
|
desc = "Click Through Only in Combat",
|
|
boxfirst = true,
|
|
},
|
|
{type = "blank"},
|
|
|
|
{--grouped windows horizontal gap
|
|
type = "range",
|
|
get = function() return tonumber(Details.grouping_horizontal_gap) end,
|
|
set = function(self, fixedparam, value)
|
|
Details.grouping_horizontal_gap = value
|
|
currentInstance:BaseFrameSnap()
|
|
afterUpdate()
|
|
end,
|
|
min = 0,
|
|
max = 20,
|
|
usedecimals = true,
|
|
step = 0.5,
|
|
name = Loc ["STRING_OPTIONS_GROUPING_HORIZONTAL_GAP"],
|
|
desc = Loc ["STRING_OPTIONS_GROUPING_HORIZONTAL_GAP_DESC"],
|
|
thumbscale = 2.2,
|
|
},
|
|
|
|
{--disable grouping
|
|
type = "toggle",
|
|
get = function() return Details.disable_window_groups end,
|
|
set = function(self, fixedparam, value)
|
|
Details.disable_window_groups = value
|
|
afterUpdate()
|
|
end,
|
|
name = Loc ["STRING_OPTIONS_DISABLE_GROUPS"],
|
|
desc = Loc ["STRING_OPTIONS_DISABLE_GROUPS_DESC"],
|
|
},
|
|
|
|
{--disable resize buttons
|
|
type = "toggle",
|
|
get = function() return Details.disable_lock_ungroup_buttons end,
|
|
set = function(self, fixedparam, value)
|
|
Details.disable_lock_ungroup_buttons = value
|
|
afterUpdate()
|
|
end,
|
|
name = Loc ["STRING_OPTIONS_DISABLE_LOCK_RESIZE"],
|
|
desc = Loc ["STRING_OPTIONS_DISABLE_LOCK_RESIZE_DESC"],
|
|
},
|
|
|
|
{--disable stretch button
|
|
type = "toggle",
|
|
get = function() return Details.disable_stretch_button end,
|
|
set = function(self, fixedparam, value)
|
|
Details.disable_stretch_button = value
|
|
afterUpdate()
|
|
end,
|
|
name = Loc ["STRING_OPTIONS_DISABLE_STRETCH_BUTTON"],
|
|
desc = Loc ["STRING_OPTIONS_DISABLE_STRETCH_BUTTON_DESC"],
|
|
},
|
|
|
|
{type = "blank"},
|
|
|
|
{--title bar on top side
|
|
type = "toggle",
|
|
get = function() return currentInstance.toolbar_side == 1 and true or false end,
|
|
set = function(self, fixedparam, value)
|
|
editInstanceSetting(currentInstance, "ToolbarSide", value and 1 or 2)
|
|
afterUpdate()
|
|
end,
|
|
name = Loc ["STRING_OPTIONS_TOOLBARSIDE"],
|
|
desc = Loc ["STRING_OPTIONS_TOOLBARSIDE_DESC"],
|
|
},
|
|
|
|
{--stretch button always on top
|
|
type = "toggle",
|
|
get = function() return currentInstance.grab_on_top end,
|
|
set = function(self, fixedparam, value)
|
|
editInstanceSetting(currentInstance, "grab_on_top", value)
|
|
afterUpdate()
|
|
end,
|
|
name = Loc ["STRING_OPTIONS_STRETCHTOP"],
|
|
desc = Loc ["STRING_OPTIONS_STRETCHTOP_DESC"],
|
|
},
|
|
|
|
{--stretch button on top side
|
|
type = "toggle",
|
|
get = function() return currentInstance.stretch_button_side == 1 and true or false end,
|
|
set = function(self, fixedparam, value)
|
|
editInstanceSetting(currentInstance, "StretchButtonAnchor", value and 1 or 2)
|
|
afterUpdate()
|
|
end,
|
|
name = Loc ["STRING_OPTIONS_STRETCH"],
|
|
desc = Loc ["STRING_OPTIONS_STRETCH_DESC"],
|
|
},
|
|
|
|
{type = "blank"},
|
|
|
|
{--delete window
|
|
id = 'deleteWindow',
|
|
type = "select",
|
|
get = function() return 0 end,
|
|
values = function()
|
|
return buildInstanceMenu()
|
|
end,
|
|
name = Loc ["STRING_OPTIONS_INSTANCE_DELETE"],
|
|
desc = Loc ["STRING_OPTIONS_INSTANCE_DELETE_DESC"],
|
|
},
|
|
|
|
{--delete window
|
|
type = "execute",
|
|
func = function(self)
|
|
local windowDropdown = self.MyObject.container:GetWidgetById('deleteWindow')
|
|
local selectedWindow = windowDropdown and windowDropdown:GetValue()
|
|
|
|
if (selectedWindow) then
|
|
Details:DeleteInstance(selectedWindow)
|
|
StaticPopup_Show("RELOAD_UI_NEEDED")
|
|
end
|
|
end,
|
|
name = Loc ["STRING_OPTIONS_INSTANCE_DELETE"],
|
|
--icontexture = [[Interface\Buttons\UI-GuildButton-MOTD-Up]],
|
|
--icontexcoords = {1, 0, 0, 1},
|
|
},
|
|
|
|
{type = "breakline"},
|
|
{type = "label", get = function() return "Window Area Border" end, text_template = subSectionTitleTextTemplate},
|
|
|
|
{--show full border ~border
|
|
type = "toggle",
|
|
get = function() return currentInstance.fullborder_shown end,
|
|
set = function(self, fixedparam, value)
|
|
editInstanceSetting(currentInstance, "UpdateFullBorder", value)
|
|
afterUpdate()
|
|
end,
|
|
name = "Show Border",
|
|
desc = "Show Border",
|
|
},
|
|
|
|
{--full border color
|
|
type = "color",
|
|
get = function()
|
|
return {unpack(currentInstance.fullborder_color)}
|
|
end,
|
|
set = function(self, r, g, b, a)
|
|
editInstanceSetting(currentInstance, "UpdateFullBorder", nil, {r, g, b, a})
|
|
afterUpdate()
|
|
end,
|
|
name = "Border Color",
|
|
desc = "Border Color",
|
|
},
|
|
|
|
{--border size
|
|
type = "range",
|
|
get = function() return tonumber(currentInstance.fullborder_size) end,
|
|
set = function(self, fixedparam, value)
|
|
editInstanceSetting(currentInstance, "UpdateFullBorder", nil, nil, value)
|
|
afterUpdate()
|
|
end,
|
|
min = 0,
|
|
max = 5,
|
|
step = 0.5,
|
|
usedecimals = true,
|
|
name = "Border Thickness",
|
|
desc = "Border Thickness",
|
|
},
|
|
|
|
{type = "blank"},
|
|
{type = "label", get = function() return "Row's Area Border" end, text_template = subSectionTitleTextTemplate},
|
|
|
|
{--show full border ~border
|
|
type = "toggle",
|
|
get = function() return currentInstance.rowareaborder_shown end,
|
|
set = function(self, fixedparam, value)
|
|
editInstanceSetting(currentInstance, "UpdateRowAreaBorder", value)
|
|
afterUpdate()
|
|
end,
|
|
name = "Show Border",
|
|
desc = "Show Border",
|
|
},
|
|
|
|
{--full border color
|
|
type = "color",
|
|
get = function()
|
|
return {unpack(currentInstance.rowareaborder_color)}
|
|
end,
|
|
set = function(self, r, g, b, a)
|
|
editInstanceSetting(currentInstance, "UpdateRowAreaBorder", nil, {r, g, b, a})
|
|
afterUpdate()
|
|
end,
|
|
name = "Border Color",
|
|
desc = "Border Color",
|
|
},
|
|
|
|
{--border size
|
|
type = "range",
|
|
get = function() return tonumber(currentInstance.rowareaborder_size) end,
|
|
set = function(self, fixedparam, value)
|
|
editInstanceSetting(currentInstance, "UpdateRowAreaBorder", nil, nil, value)
|
|
afterUpdate()
|
|
end,
|
|
min = 0,
|
|
max = 5,
|
|
step = 0.5,
|
|
usedecimals = true,
|
|
name = "Border Thickness",
|
|
desc = "Border Thickness",
|
|
},
|
|
|
|
}
|
|
sectionFrame.sectionOptions = sectionOptions
|
|
sectionOptions.always_boxfirst = true
|
|
DF:BuildMenu(sectionFrame, sectionOptions, startX, startY-20, heightSize+20, false, options_text_template, options_dropdown_template, options_switch_template, true, options_slider_template, options_button_template)
|
|
end
|
|
|
|
tinsert(Details.optionsSection, buildSection)
|
|
|
|
end
|
|
|
|
-- ~07 - status bar
|
|
do
|
|
local buildSection = function(sectionFrame)
|
|
|
|
--update micro displays
|
|
local updateMicroFrames = function()
|
|
local instance = currentInstance
|
|
|
|
local hideLeftButton = sectionFrame.MicroDisplayLeftDropdown.hideLeftMicroFrameButton
|
|
if (instance.StatusBar ["left"].options.isHidden) then
|
|
hideLeftButton:GetNormalTexture():SetDesaturated(false)
|
|
else
|
|
hideLeftButton:GetNormalTexture():SetDesaturated(true)
|
|
end
|
|
|
|
local hide_center_button = sectionFrame.MicroDisplayCenterDropdown.HideCenterMicroFrameButton
|
|
if (instance.StatusBar ["center"].options.isHidden) then
|
|
hide_center_button:GetNormalTexture():SetDesaturated(false)
|
|
else
|
|
hide_center_button:GetNormalTexture():SetDesaturated(true)
|
|
end
|
|
|
|
local hide_right_button = sectionFrame.MicroDisplayRightDropdown.HideRightMicroFrameButton
|
|
if (instance.StatusBar ["right"].options.isHidden) then
|
|
hide_right_button:GetNormalTexture():SetDesaturated(false)
|
|
else
|
|
hide_right_button:GetNormalTexture():SetDesaturated(true)
|
|
end
|
|
|
|
local left = instance.StatusBar ["left"].__name
|
|
local center = instance.StatusBar ["center"].__name
|
|
local right = instance.StatusBar ["right"].__name
|
|
|
|
_G[sectionFrame:GetName() .. "MicroDisplayLeftDropdown"].MyObject:Select(left)
|
|
_G[sectionFrame:GetName() .. "MicroDisplayCenterDropdown"].MyObject:Select(center)
|
|
_G[sectionFrame:GetName() .. "MicroDisplayRightDropdown"].MyObject:Select(right)
|
|
|
|
if (not instance.show_statusbar and instance.micro_displays_side == 2) then
|
|
sectionFrame.MicroDisplayWarningLabel:Show()
|
|
else
|
|
sectionFrame.MicroDisplayWarningLabel:Hide()
|
|
end
|
|
end
|
|
|
|
sectionFrame:GetParent().updateMicroFrames = updateMicroFrames
|
|
|
|
local sectionOptions = {
|
|
{type = "label", get = function() return Loc ["STRING_OPTIONS_INSTANCE_STATUSBAR_ANCHOR"] end, text_template = subSectionTitleTextTemplate},
|
|
|
|
{--show statusbar
|
|
type = "toggle",
|
|
get = function() return currentInstance.show_statusbar end,
|
|
set = function(self, fixedparam, value)
|
|
if (value) then
|
|
editInstanceSetting(currentInstance, "ShowStatusBar")
|
|
else
|
|
editInstanceSetting(currentInstance, "HideStatusBar")
|
|
end
|
|
|
|
--editInstanceSetting(currentInstance, "BaseFrameSnap") --was causing issues 09/Aug/2020
|
|
updateMicroFrames()
|
|
afterUpdate()
|
|
end,
|
|
name = Loc ["STRING_OPTIONS_SHOW_STATUSBAR"],
|
|
desc = Loc ["STRING_OPTIONS_SHOW_STATUSBAR_DESC"],
|
|
},
|
|
|
|
{--color
|
|
type = "color",
|
|
get = function()
|
|
local r, g, b = unpack(currentInstance.statusbar_info.overlay)
|
|
local alpha = currentInstance.statusbar_info.alpha
|
|
return {r, g, b, alpha}
|
|
end,
|
|
set = function(self, r, g, b, a)
|
|
editInstanceSetting(currentInstance, "StatusBarColor", r, g, b, a)
|
|
afterUpdate()
|
|
end,
|
|
name = Loc ["STRING_OPTIONS_INSTANCE_STATUSBARCOLOR"],
|
|
desc = Loc ["STRING_OPTIONS_INSTANCE_STATUSBARCOLOR_DESC"],
|
|
},
|
|
|
|
{--lock micro displays
|
|
type = "toggle",
|
|
get = function() return currentInstance.micro_displays_locked end,
|
|
set = function(self, fixedparam, value)
|
|
editInstanceSetting(currentInstance, "MicroDisplaysLock", value)
|
|
afterUpdate()
|
|
end,
|
|
name = Loc ["STRING_OPTIONS_MICRODISPLAY_LOCK"],
|
|
desc = Loc ["STRING_OPTIONS_MICRODISPLAY_LOCK_DESC"],
|
|
},
|
|
|
|
{--anchor on top side
|
|
type = "toggle",
|
|
get = function() return currentInstance.micro_displays_side == 1 and true or false end,
|
|
set = function(self, fixedparam, value)
|
|
editInstanceSetting(currentInstance, "MicroDisplaysSide", value and 1 or 2, true)
|
|
afterUpdate()
|
|
end,
|
|
name = Loc ["STRING_OPTIONS_MICRODISPLAYSSIDE"],
|
|
desc = Loc ["STRING_OPTIONS_MICRODISPLAYSSIDE_DESC"],
|
|
},
|
|
|
|
}
|
|
|
|
sectionFrame.sectionOptions = sectionOptions
|
|
sectionOptions.always_boxfirst = true
|
|
DF:BuildMenu(sectionFrame, sectionOptions, startX, startY-20, heightSize, false, options_text_template, options_dropdown_template, options_switch_template, true, options_slider_template, options_button_template)
|
|
|
|
do --micro displays
|
|
|
|
--statics texts
|
|
DF:NewLabel(sectionFrame, _, "$parentMicroDisplaysAnchor", "MicroDisplaysAnchor", Loc ["STRING_OPTIONS_MICRODISPLAY_ANCHOR"], "GameFontNormal")
|
|
DF:NewLabel(sectionFrame, _, "$parentMicroDisplayLeftLabel", "MicroDisplayLeftLabel", Loc ["STRING_ANCHOR_LEFT"], "GameFontHighlightLeft")
|
|
DF:NewLabel(sectionFrame, _, "$parentMicroDisplayCenterLabel", "MicroDisplayCenterLabel", Loc ["STRING_CENTER_UPPER"], "GameFontHighlightLeft")
|
|
DF:NewLabel(sectionFrame, _, "$parentMicroDisplayRightLabel", "MicroDisplayRightLabel", Loc ["STRING_ANCHOR_RIGHT"], "GameFontHighlightLeft")
|
|
DF:NewLabel(sectionFrame, _, "$parentMicroDisplayWarningLabel", "MicroDisplayWarningLabel", Loc ["STRING_OPTIONS_MICRODISPLAYS_WARNING"], "GameFontHighlightSmall", 10, "orange")
|
|
|
|
--dropdown on select option
|
|
local onMicroDisplaySelect = function(_, _, micro_display)
|
|
local anchor, index = unpack(micro_display)
|
|
|
|
if (index == -1) then
|
|
return Details.StatusBar:SetPlugin (currentInstance, -1, anchor)
|
|
end
|
|
|
|
local absolute_name = Details.StatusBar.Plugins [index].real_name
|
|
Details.StatusBar:SetPlugin (currentInstance, absolute_name, anchor)
|
|
|
|
updateMicroFrames() -- in development
|
|
afterUpdate()
|
|
end
|
|
|
|
--dropdown options
|
|
local buildLeftMicroMenu = function()
|
|
local options = {}
|
|
for index, _name_and_icon in ipairs(Details.StatusBar.Menu) do
|
|
options [#options+1] = {value = {"left", index}, label = _name_and_icon [1], onclick = onMicroDisplaySelect, icon = _name_and_icon [2]}
|
|
end
|
|
return options
|
|
end
|
|
local buildCenterMicroMenu = function()
|
|
local options = {}
|
|
for index, _name_and_icon in ipairs(Details.StatusBar.Menu) do
|
|
options [#options+1] = {value = {"center", index}, label = _name_and_icon [1], onclick = onMicroDisplaySelect, icon = _name_and_icon [2]}
|
|
end
|
|
return options
|
|
end
|
|
local buildRightMicroMenu = function()
|
|
local options = {}
|
|
for index, _name_and_icon in ipairs(Details.StatusBar.Menu) do
|
|
options [#options+1] = {value = {"right", index}, label = _name_and_icon [1], onclick = onMicroDisplaySelect, icon = _name_and_icon [2]}
|
|
end
|
|
return options
|
|
end
|
|
|
|
local DROPDOWN_WIDTH = 160
|
|
local dropdown_height = 18
|
|
|
|
--create dropdowns
|
|
DF:NewDropDown (sectionFrame, _, "$parentMicroDisplayLeftDropdown", "MicroDisplayLeftDropdown", DROPDOWN_WIDTH, dropdown_height, buildLeftMicroMenu, nil, options_dropdown_template)
|
|
DF:NewDropDown (sectionFrame, _, "$parentMicroDisplayCenterDropdown", "MicroDisplayCenterDropdown", DROPDOWN_WIDTH, dropdown_height, buildCenterMicroMenu, nil, options_dropdown_template)
|
|
DF:NewDropDown (sectionFrame, _, "$parentMicroDisplayRightDropdown", "MicroDisplayRightDropdown", DROPDOWN_WIDTH, dropdown_height, buildRightMicroMenu, nil, options_dropdown_template)
|
|
|
|
sectionFrame.MicroDisplayLeftDropdown:SetPoint("left", sectionFrame.MicroDisplayLeftLabel, "right", 2)
|
|
sectionFrame.MicroDisplayCenterDropdown:SetPoint("left", sectionFrame.MicroDisplayCenterLabel, "right", 2)
|
|
sectionFrame.MicroDisplayRightDropdown:SetPoint("left", sectionFrame.MicroDisplayRightLabel, "right", 2)
|
|
|
|
sectionFrame.MicroDisplayLeftDropdown.tooltip = Loc ["STRING_OPTIONS_MICRODISPLAYS_DROPDOWN_TOOLTIP"]
|
|
sectionFrame.MicroDisplayCenterDropdown.tooltip = Loc ["STRING_OPTIONS_MICRODISPLAYS_DROPDOWN_TOOLTIP"]
|
|
sectionFrame.MicroDisplayRightDropdown.tooltip = Loc ["STRING_OPTIONS_MICRODISPLAYS_DROPDOWN_TOOLTIP"]
|
|
|
|
|
|
local hideLeftMicroFrameButton = DF:NewButton(sectionFrame.MicroDisplayLeftDropdown, _, "$parenthideLeftMicroFrameButton", "hideLeftMicroFrameButton", 22, 22, function(self, button)
|
|
if (currentInstance.StatusBar ["left"].options.isHidden) then
|
|
Details.StatusBar:SetPlugin (currentInstance, currentInstance.StatusBar ["left"].real_name, "left")
|
|
else
|
|
Details.StatusBar:SetPlugin (currentInstance, -1, "left")
|
|
end
|
|
if (currentInstance.StatusBar ["left"].options.isHidden) then
|
|
self:GetNormalTexture():SetDesaturated(false)
|
|
else
|
|
self:GetNormalTexture():SetDesaturated(true)
|
|
end
|
|
end)
|
|
|
|
hideLeftMicroFrameButton:SetPoint("left", sectionFrame.MicroDisplayLeftDropdown, "right", 2, 0)
|
|
hideLeftMicroFrameButton:SetNormalTexture([[Interface\Buttons\UI-GroupLoot-Pass-Down]])
|
|
hideLeftMicroFrameButton:SetPushedTexture([[Interface\Buttons\UI-GroupLoot-Pass-Up]])
|
|
hideLeftMicroFrameButton:GetNormalTexture():SetDesaturated(true)
|
|
hideLeftMicroFrameButton.tooltip = Loc ["STRING_OPTIONS_MICRODISPLAYS_SHOWHIDE_TOOLTIP"]
|
|
hideLeftMicroFrameButton:SetHook("OnEnter", function(self, capsule)
|
|
self:GetNormalTexture():SetBlendMode("ADD")
|
|
end)
|
|
hideLeftMicroFrameButton:SetHook("OnLeave", function(self, capsule)
|
|
self:GetNormalTexture():SetBlendMode("BLEND")
|
|
end)
|
|
|
|
local HideCenterMicroFrameButton = DF:NewButton(sectionFrame.MicroDisplayCenterDropdown, _, "$parentHideCenterMicroFrameButton", "HideCenterMicroFrameButton", 22, 22, function(self)
|
|
if (currentInstance.StatusBar ["center"].options.isHidden) then
|
|
Details.StatusBar:SetPlugin (currentInstance, currentInstance.StatusBar ["center"].real_name, "center")
|
|
else
|
|
Details.StatusBar:SetPlugin (currentInstance, -1, "center")
|
|
end
|
|
|
|
if (currentInstance.StatusBar ["center"].options.isHidden) then
|
|
self:GetNormalTexture():SetDesaturated(false)
|
|
else
|
|
self:GetNormalTexture():SetDesaturated(true)
|
|
end
|
|
end)
|
|
HideCenterMicroFrameButton:SetPoint("left", sectionFrame.MicroDisplayCenterDropdown, "right", 2, 0)
|
|
HideCenterMicroFrameButton:SetNormalTexture([[Interface\Buttons\UI-GroupLoot-Pass-Down]])
|
|
HideCenterMicroFrameButton:SetPushedTexture([[Interface\Buttons\UI-GroupLoot-Pass-Up]])
|
|
HideCenterMicroFrameButton:GetNormalTexture():SetDesaturated(true)
|
|
HideCenterMicroFrameButton.tooltip = Loc ["STRING_OPTIONS_MICRODISPLAYS_SHOWHIDE_TOOLTIP"]
|
|
HideCenterMicroFrameButton:SetHook("OnEnter", function(self, capsule)
|
|
self:GetNormalTexture():SetBlendMode("ADD")
|
|
end)
|
|
HideCenterMicroFrameButton:SetHook("OnLeave", function(self, capsule)
|
|
self:GetNormalTexture():SetBlendMode("BLEND")
|
|
end)
|
|
|
|
local HideRightMicroFrameButton = DF:NewButton(sectionFrame.MicroDisplayRightDropdown, _, "$parentHideRightMicroFrameButton", "HideRightMicroFrameButton", 20, 20, function(self)
|
|
if (currentInstance.StatusBar ["right"].options.isHidden) then
|
|
Details.StatusBar:SetPlugin (currentInstance, currentInstance.StatusBar ["right"].real_name, "right")
|
|
else
|
|
Details.StatusBar:SetPlugin (currentInstance, -1, "right")
|
|
end
|
|
if (currentInstance.StatusBar ["right"].options.isHidden) then
|
|
self:GetNormalTexture():SetDesaturated(false)
|
|
else
|
|
self:GetNormalTexture():SetDesaturated(true)
|
|
end
|
|
end)
|
|
HideRightMicroFrameButton:SetPoint("left", sectionFrame.MicroDisplayRightDropdown, "right", 2, 0)
|
|
HideRightMicroFrameButton:SetNormalTexture([[Interface\Buttons\UI-GroupLoot-Pass-Down]])
|
|
HideRightMicroFrameButton:SetPushedTexture([[Interface\Buttons\UI-GroupLoot-Pass-Up]])
|
|
HideRightMicroFrameButton:GetNormalTexture():SetDesaturated(true)
|
|
HideRightMicroFrameButton.tooltip = Loc ["STRING_OPTIONS_MICRODISPLAYS_SHOWHIDE_TOOLTIP"]
|
|
HideRightMicroFrameButton:SetHook("OnEnter", function(self, capsule)
|
|
self:GetNormalTexture():SetBlendMode("ADD")
|
|
end)
|
|
HideRightMicroFrameButton:SetHook("OnLeave", function(self, capsule)
|
|
self:GetNormalTexture():SetBlendMode("BLEND")
|
|
end)
|
|
|
|
local configRightMicroFrameButton = DF:NewButton(sectionFrame.MicroDisplayRightDropdown, _, "$parentconfigRightMicroFrameButton", "configRightMicroFrameButton", 18, 18, function(self)
|
|
currentInstance.StatusBar ["right"]:Setup()
|
|
currentInstance.StatusBar ["right"]:Setup()
|
|
end)
|
|
configRightMicroFrameButton:SetPoint("left", HideRightMicroFrameButton, "right", 1, -1)
|
|
configRightMicroFrameButton:SetNormalTexture([[Interface\Buttons\UI-OptionsButton]])
|
|
configRightMicroFrameButton:SetHighlightTexture([[Interface\Buttons\UI-OptionsButton]])
|
|
configRightMicroFrameButton.tooltip = Loc ["STRING_OPTIONS_MICRODISPLAYS_OPTION_TOOLTIP"]
|
|
|
|
local configCenterMicroFrameButton = DF:NewButton(sectionFrame.MicroDisplayCenterDropdown, _, "$parentconfigCenterMicroFrameButton", "configCenterMicroFrameButton", 18, 18, function(self)
|
|
currentInstance.StatusBar ["center"]:Setup()
|
|
currentInstance.StatusBar ["center"]:Setup()
|
|
end)
|
|
configCenterMicroFrameButton:SetPoint("left", HideCenterMicroFrameButton, "right", 1, -1)
|
|
configCenterMicroFrameButton:SetNormalTexture([[Interface\Buttons\UI-OptionsButton]])
|
|
configCenterMicroFrameButton:SetHighlightTexture([[Interface\Buttons\UI-OptionsButton]])
|
|
configCenterMicroFrameButton.tooltip = Loc ["STRING_OPTIONS_MICRODISPLAYS_OPTION_TOOLTIP"]
|
|
|
|
local configLeftMicroFrameButton = DF:NewButton(sectionFrame.MicroDisplayLeftDropdown, _, "$parentconfigLeftMicroFrameButton", "configLeftMicroFrameButton", 18, 18, function(self)
|
|
currentInstance.StatusBar ["left"]:Setup()
|
|
currentInstance.StatusBar ["left"]:Setup()
|
|
end)
|
|
configLeftMicroFrameButton:SetPoint("left", hideLeftMicroFrameButton, "right", 1, -1)
|
|
configLeftMicroFrameButton:SetNormalTexture([[Interface\Buttons\UI-OptionsButton]])
|
|
configLeftMicroFrameButton:SetHighlightTexture([[Interface\Buttons\UI-OptionsButton]])
|
|
configLeftMicroFrameButton.tooltip = Loc ["STRING_OPTIONS_MICRODISPLAYS_OPTION_TOOLTIP"]
|
|
|
|
local x = startX
|
|
local y = startY - 20 - 120
|
|
|
|
sectionFrame.MicroDisplaysAnchor:SetPoint(x, y)
|
|
y = y - 20
|
|
sectionFrame.MicroDisplayLeftLabel:SetPoint(x, y)
|
|
y = y - 20
|
|
sectionFrame.MicroDisplayCenterLabel:SetPoint(x, y)
|
|
y = y - 20
|
|
sectionFrame.MicroDisplayRightLabel:SetPoint(x, y)
|
|
y = y - 20
|
|
sectionFrame.MicroDisplayWarningLabel:SetPoint(x, y)
|
|
y = y - 20
|
|
end
|
|
|
|
|
|
end
|
|
|
|
tinsert(Details.optionsSection, buildSection)
|
|
|
|
end
|
|
|
|
|
|
-- ~08 - plugins
|
|
do
|
|
local buildSection = function(sectionFrame)
|
|
|
|
local CreateFrame = _G.CreateFrame
|
|
local button_color_rgb = {1, 0.93, 0.74}
|
|
|
|
local anchorFrame = CreateFrame("frame", "$parentAnchorFrame", sectionFrame)
|
|
anchorFrame:SetPoint("topleft", sectionFrame, "topleft", startX - 10, startY)
|
|
anchorFrame.plugin_widgets = {}
|
|
anchorFrame:SetSize(1, 1)
|
|
|
|
local on_enter = function(self)
|
|
|
|
self:SetBackdropColor(.5, .5, .5, .8)
|
|
|
|
if (self.plugin) then
|
|
local desc = self.plugin:GetPluginDescription()
|
|
if (desc) then
|
|
GameCooltip:Preset(2)
|
|
GameCooltip:AddLine(desc)
|
|
GameCooltip:SetType ("tooltip")
|
|
GameCooltip:SetOwner(self, "bottomleft", "topleft", 150, -2)
|
|
GameCooltip:Show()
|
|
end
|
|
end
|
|
|
|
if (self.hasDesc) then
|
|
GameCooltip:Preset(2)
|
|
GameCooltip:AddLine(self.hasDesc)
|
|
GameCooltip:SetType ("tooltip")
|
|
GameCooltip:SetOwner(self, "bottomleft", "topleft", 150, -2)
|
|
GameCooltip:Show()
|
|
end
|
|
end
|
|
|
|
local on_leave = function(self)
|
|
self:SetBackdropColor(.3, .3, .3, .3)
|
|
|
|
GameCooltip:Hide()
|
|
end
|
|
|
|
local y = -20
|
|
|
|
--toolbar
|
|
DF:NewLabel(anchorFrame, _, "$parentToolbarPluginsLabel", "toolbarLabel", Loc ["STRING_OPTIONS_PLUGINS_TOOLBAR_ANCHOR"], "GameFontNormal", 16)
|
|
anchorFrame.toolbarLabel:SetPoint("topleft", anchorFrame, "topleft", 10, y)
|
|
|
|
y = y - 30
|
|
|
|
do
|
|
local descbar = anchorFrame:CreateTexture(nil, "artwork")
|
|
descbar:SetTexture(.3, .3, .3, .8)
|
|
descbar:SetPoint("topleft", anchorFrame, "topleft", 5, y+3)
|
|
descbar:SetSize(650, 20)
|
|
DF:NewLabel(anchorFrame, _, "$parentDescNameLabel", "descNameLabel", Loc ["STRING_OPTIONS_PLUGINS_NAME"], "GameFontNormal", 12)
|
|
anchorFrame.descNameLabel:SetPoint("topleft", anchorFrame, "topleft", 15, y)
|
|
DF:NewLabel(anchorFrame, _, "$parentDescAuthorLabel", "descAuthorLabel", Loc ["STRING_OPTIONS_PLUGINS_AUTHOR"], "GameFontNormal", 12)
|
|
anchorFrame.descAuthorLabel:SetPoint("topleft", anchorFrame, "topleft", 180, y)
|
|
DF:NewLabel(anchorFrame, _, "$parentDescVersionLabel", "descVersionLabel", Loc ["STRING_OPTIONS_PLUGINS_VERSION"], "GameFontNormal", 12)
|
|
anchorFrame.descVersionLabel:SetPoint("topleft", anchorFrame, "topleft", 290, y)
|
|
DF:NewLabel(anchorFrame, _, "$parentDescEnabledLabel", "descEnabledLabel", Loc ["STRING_ENABLED"], "GameFontNormal", 12)
|
|
anchorFrame.descEnabledLabel:SetPoint("topleft", anchorFrame, "topleft", 400, y)
|
|
DF:NewLabel(anchorFrame, _, "$parentDescOptionsLabel", "descOptionsLabel", Loc ["STRING_OPTIONS_PLUGINS_OPTIONS"], "GameFontNormal", 12)
|
|
anchorFrame.descOptionsLabel:SetPoint("topleft", anchorFrame, "topleft", 510, y)
|
|
end
|
|
|
|
y = y - 30
|
|
|
|
--toolbar plugins loop
|
|
local i = 1
|
|
local allplugins_toolbar = Details.ToolBar.NameTable --where is store all plugins for the title bar
|
|
|
|
--first loop and see which plugins isn't installed
|
|
--then add a 'ghost' plugin so the player can download
|
|
|
|
local allExistentToolbarPlugins = {
|
|
{"DETAILS_PLUGIN_ENCOUNTER_DETAILS", "Details_EncounterDetails", "Encounter Breakdown", "Show detailed information about a boss encounter. Also provide damage per phase, graphic charts, easy weakauras creation.", ""},
|
|
{"DETAILS_PLUGIN_RAIDCHECK", "Details_RaidCheck", "Raid Check", "Show talents and item level for all members in your group, also shows food and flask state.", ""},
|
|
{"DETAILS_PLUGIN_STREAM_OVERLAY", "Details_Streamer", "Action Tracker", "Show which spells you are casting, viewers can see what are you doing and follow your steps.", ""},
|
|
}
|
|
|
|
local allExistentRaidPlugins = {
|
|
{"DETAILS_PLUGIN_COMPARETWO_WINDOW", "Details_Compare2", "Compare 2.0", "Replace the Compare tab in the player breakdown window.", ""},
|
|
{"DETAILS_PLUGIN_TARGET_CALLER", "Details_TargetCaller", "Target Caller", "Tracks your current target and show in the window who is doing damage to it. The amount of damage shown is the amount dealt since you selected the target.", ""},
|
|
{"DETAILS_PLUGIN_TINY_THREAT", "Details_TinyThreat", "Tiny Threat", "Threat meter plugin, show threat for group members in the window. Select it from the Plugin menu in the Orange Cogwheel.", ""},
|
|
--{"DETAILS_PLUGIN_VANGUARD", "Details_Vanguard", "Vanguard", "Show the health and debuffs for tanks in your group.", ""}
|
|
}
|
|
|
|
local installedToolbarPlugins = {}
|
|
local installedRaidPlugins = {}
|
|
|
|
for absName, pluginObject in pairs(allplugins_toolbar) do
|
|
|
|
local bframe = CreateFrame("frame", "OptionsPluginToolbarBG", anchorFrame, "BackdropTemplate")
|
|
bframe:SetSize(640, 20)
|
|
bframe:SetPoint("topleft", anchorFrame, "topleft", 10, y)
|
|
bframe:SetBackdrop({bgFile = "Interface\\Tooltips\\UI-Tooltip-Background", tile = true, tileSize = 16, insets = {left = 1, right = 1, top = 0, bottom = 1}})
|
|
bframe:SetBackdropColor(.3, .3, .3, .3)
|
|
bframe:SetScript("OnEnter", on_enter)
|
|
bframe:SetScript("OnLeave", on_leave)
|
|
bframe:EnableMouse(true)
|
|
bframe.plugin = pluginObject
|
|
bframe.id = i
|
|
|
|
DF:NewImage(bframe, pluginObject.__icon, 18, 18, nil, nil, "toolbarPluginsIcon"..i, "$parentToolbarPluginsIcon"..i)
|
|
bframe ["toolbarPluginsIcon"..i]:SetPoint("topleft", anchorFrame, "topleft", 10, y)
|
|
|
|
DF:NewLabel(bframe, _, "$parentToolbarPluginsLabel"..i, "toolbarPluginsLabel"..i, pluginObject.__name)
|
|
bframe ["toolbarPluginsLabel"..i]:SetPoint("left", bframe ["toolbarPluginsIcon"..i], "right", 2, 0)
|
|
|
|
DF:NewLabel(bframe, _, "$parentToolbarPluginsLabel2"..i, "toolbarPluginsLabel2"..i, pluginObject.__author)
|
|
bframe ["toolbarPluginsLabel2"..i]:SetPoint("topleft", anchorFrame, "topleft", 180, y-4)
|
|
|
|
DF:NewLabel(bframe, _, "$parentToolbarPluginsLabel3"..i, "toolbarPluginsLabel3"..i, pluginObject.__version)
|
|
bframe ["toolbarPluginsLabel3"..i]:SetPoint("topleft", anchorFrame, "topleft", 290, y-4)
|
|
|
|
local plugin_stable = Details:GetPluginSavedTable (absName)
|
|
local plugin = Details:GetPlugin (absName)
|
|
DF:NewSwitch (bframe, _, "$parentToolbarSlider"..i, "toolbarPluginsSlider"..i, 60, 20, _, _, plugin_stable.enabled, nil, nil, nil, nil, options_switch_template)
|
|
bframe ["toolbarPluginsSlider"..i].PluginName = absName
|
|
tinsert(anchorFrame.plugin_widgets, bframe ["toolbarPluginsSlider"..i])
|
|
bframe ["toolbarPluginsSlider"..i]:SetPoint("topleft", anchorFrame, "topleft", 415, y)
|
|
bframe ["toolbarPluginsSlider"..i]:SetAsCheckBox()
|
|
bframe ["toolbarPluginsSlider"..i].OnSwitch = function(self, _, value)
|
|
plugin_stable.enabled = value
|
|
plugin.__enabled = value
|
|
if (value) then
|
|
Details:SendEvent("PLUGIN_ENABLED", plugin)
|
|
else
|
|
Details:SendEvent("PLUGIN_DISABLED", plugin)
|
|
end
|
|
end
|
|
|
|
if (pluginObject.OpenOptionsPanel) then
|
|
DF:NewButton(bframe, nil, "$parentOptionsButton"..i, "OptionsButton"..i, 120, 20, pluginObject.OpenOptionsPanel, nil, nil, nil, Loc ["STRING_OPTIONS_PLUGINS_OPTIONS"], nil, options_button_template)
|
|
bframe ["OptionsButton"..i]:SetPoint("topleft", anchorFrame, "topleft", 510, y-0)
|
|
bframe ["OptionsButton"..i]:SetTextColor(button_color_rgb)
|
|
bframe ["OptionsButton"..i]:SetIcon ([[Interface\Buttons\UI-OptionsButton]], 14, 14, nil, {0, 1, 0, 1}, nil, 3)
|
|
end
|
|
|
|
i = i + 1
|
|
y = y - 20
|
|
|
|
--plugins installed, adding their abs name
|
|
DF.table.addunique(installedToolbarPlugins, absName)
|
|
|
|
end
|
|
|
|
local notInstalledColor = "gray"
|
|
|
|
for o = 1, #allExistentToolbarPlugins do
|
|
local pluginAbsName = allExistentToolbarPlugins [o] [1]
|
|
if (not DF.table.find (installedToolbarPlugins, pluginAbsName)) then
|
|
|
|
local absName = pluginAbsName
|
|
local pluginObject = {
|
|
__icon = "",
|
|
__name = allExistentToolbarPlugins [o] [3],
|
|
__author = "Not Installed",
|
|
__version = "",
|
|
OpenOptionsPanel = false,
|
|
}
|
|
|
|
local bframe = CreateFrame("frame", "OptionsPluginToolbarBG", anchorFrame,"BackdropTemplate")
|
|
bframe:SetSize(640, 20)
|
|
bframe:SetPoint("topleft", anchorFrame, "topleft", 10, y)
|
|
bframe:SetBackdrop({bgFile = "Interface\\Tooltips\\UI-Tooltip-Background", tile = true, tileSize = 16, insets = {left = 1, right = 1, top = 0, bottom = 1}})
|
|
bframe:SetBackdropColor(.3, .3, .3, .3)
|
|
bframe:SetScript("OnEnter", on_enter)
|
|
bframe:SetScript("OnLeave", on_leave)
|
|
bframe:EnableMouse(true)
|
|
|
|
bframe.id = i
|
|
bframe.hasDesc = allExistentToolbarPlugins [o] [4]
|
|
|
|
DF:NewImage(bframe, pluginObject.__icon, 18, 18, nil, nil, "toolbarPluginsIcon"..i, "$parentToolbarPluginsIcon"..i)
|
|
bframe ["toolbarPluginsIcon"..i]:SetPoint("topleft", anchorFrame, "topleft", 10, y)
|
|
|
|
DF:NewLabel(bframe, _, "$parentToolbarPluginsLabel"..i, "toolbarPluginsLabel"..i, pluginObject.__name)
|
|
bframe ["toolbarPluginsLabel"..i]:SetPoint("left", bframe ["toolbarPluginsIcon"..i], "right", 2, 0)
|
|
bframe ["toolbarPluginsLabel"..i].color = notInstalledColor
|
|
|
|
DF:NewLabel(bframe, _, "$parentToolbarPluginsLabel2"..i, "toolbarPluginsLabel2"..i, pluginObject.__author)
|
|
bframe ["toolbarPluginsLabel2"..i]:SetPoint("topleft", anchorFrame, "topleft", 180, y-4)
|
|
bframe ["toolbarPluginsLabel2"..i].color = notInstalledColor
|
|
|
|
DF:NewLabel(bframe, _, "$parentToolbarPluginsLabel3"..i, "toolbarPluginsLabel3"..i, pluginObject.__version)
|
|
bframe ["toolbarPluginsLabel3"..i]:SetPoint("topleft", anchorFrame, "topleft", 290, y-4)
|
|
bframe ["toolbarPluginsLabel3"..i].color = notInstalledColor
|
|
|
|
local installButton = DF:CreateButton(bframe, function(self)
|
|
local _, _, _, _, _, state = GetAddOnInfo(allExistentToolbarPlugins[o][2])
|
|
if state == "DISABLED" then
|
|
EnableAddOn(allExistentToolbarPlugins[o][2])
|
|
StaticPopup_Show("RELOAD_UI_NEEDED")
|
|
self:Disable()
|
|
self:SetText("Installed (Reload UI)")
|
|
elseif state == "MISSING" then
|
|
Details:Msg("This plugin was not found in your game folder. You may need to install it from the launcher!")
|
|
end
|
|
end, 120, 20, "Install")
|
|
installButton:SetTemplate(options_button_template)
|
|
installButton:SetPoint("topleft", anchorFrame, "topleft", 510, y-0)
|
|
|
|
i = i + 1
|
|
y = y - 20
|
|
end
|
|
end
|
|
|
|
y = y - 10
|
|
|
|
--raid
|
|
DF:NewLabel(anchorFrame, _, "$parentRaidPluginsLabel", "raidLabel", Loc ["STRING_OPTIONS_PLUGINS_RAID_ANCHOR"], "GameFontNormal", 16)
|
|
anchorFrame.raidLabel:SetPoint("topleft", anchorFrame, "topleft", 10, y)
|
|
|
|
y = y - 30
|
|
|
|
do
|
|
local descbar = anchorFrame:CreateTexture(nil, "artwork")
|
|
descbar:SetTexture(.3, .3, .3, .8)
|
|
descbar:SetPoint("topleft", anchorFrame, "topleft", 5, y+3)
|
|
descbar:SetSize(650, 20)
|
|
DF:NewLabel(anchorFrame, _, "$parentDescNameLabel2", "descNameLabel", Loc ["STRING_OPTIONS_PLUGINS_NAME"], "GameFontNormal", 12)
|
|
anchorFrame.descNameLabel:SetPoint("topleft", anchorFrame, "topleft", 15, y)
|
|
DF:NewLabel(anchorFrame, _, "$parentDescAuthorLabel2", "descAuthorLabel", Loc ["STRING_OPTIONS_PLUGINS_AUTHOR"], "GameFontNormal", 12)
|
|
anchorFrame.descAuthorLabel:SetPoint("topleft", anchorFrame, "topleft", 180, y)
|
|
DF:NewLabel(anchorFrame, _, "$parentDescVersionLabel2", "descVersionLabel", Loc ["STRING_OPTIONS_PLUGINS_VERSION"], "GameFontNormal", 12)
|
|
anchorFrame.descVersionLabel:SetPoint("topleft", anchorFrame, "topleft", 290, y)
|
|
DF:NewLabel(anchorFrame, _, "$parentDescEnabledLabel2", "descEnabledLabel", Loc ["STRING_ENABLED"], "GameFontNormal", 12)
|
|
anchorFrame.descEnabledLabel:SetPoint("topleft", anchorFrame, "topleft", 400, y)
|
|
DF:NewLabel(anchorFrame, _, "$parentDescOptionsLabel2", "descOptionsLabel", Loc ["STRING_OPTIONS_PLUGINS_OPTIONS"], "GameFontNormal", 12)
|
|
anchorFrame.descOptionsLabel:SetPoint("topleft", anchorFrame, "topleft", 510, y)
|
|
end
|
|
|
|
y = y - 30
|
|
|
|
local i = 1
|
|
local allplugins_raid = Details.RaidTables.NameTable
|
|
for absName, pluginObject in pairs(allplugins_raid) do
|
|
|
|
local bframe = CreateFrame("frame", "OptionsPluginRaidBG", anchorFrame, "BackdropTemplate")
|
|
bframe:SetSize(640, 20)
|
|
bframe:SetPoint("topleft", anchorFrame, "topleft", 10, y)
|
|
bframe:SetBackdrop({bgFile = "Interface\\Tooltips\\UI-Tooltip-Background", tile = true, tileSize = 16, insets = {left = 1, right = 1, top = 0, bottom = 1}})
|
|
bframe:SetBackdropColor(.3, .3, .3, .3)
|
|
bframe:SetScript("OnEnter", on_enter)
|
|
bframe:SetScript("OnLeave", on_leave)
|
|
bframe:EnableMouse(true)
|
|
bframe.plugin = pluginObject
|
|
bframe.id = i
|
|
|
|
DF:NewImage(bframe, pluginObject.__icon, 18, 18, nil, nil, "raidPluginsIcon"..i, "$parentRaidPluginsIcon"..i)
|
|
bframe ["raidPluginsIcon"..i]:SetPoint("topleft", anchorFrame, "topleft", 10, y)
|
|
|
|
DF:NewLabel(bframe, _, "$parentRaidPluginsLabel"..i, "raidPluginsLabel"..i, pluginObject.__name)
|
|
bframe ["raidPluginsLabel"..i]:SetPoint("left", bframe ["raidPluginsIcon"..i], "right", 2, 0)
|
|
|
|
DF:NewLabel(bframe, _, "$parentRaidPluginsLabel2"..i, "raidPluginsLabel2"..i, pluginObject.__author)
|
|
bframe ["raidPluginsLabel2"..i]:SetPoint("topleft", anchorFrame, "topleft", 180, y-4)
|
|
|
|
DF:NewLabel(bframe, _, "$parentRaidPluginsLabel3"..i, "raidPluginsLabel3"..i, pluginObject.__version)
|
|
bframe ["raidPluginsLabel3"..i]:SetPoint("topleft", anchorFrame, "topleft", 290, y-4)
|
|
|
|
local plugin_stable = Details:GetPluginSavedTable (absName)
|
|
local plugin = Details:GetPlugin (absName)
|
|
DF:NewSwitch (bframe, _, "$parentRaidSlider"..i, "raidPluginsSlider"..i, 60, 20, _, _, plugin_stable.enabled, nil, nil, nil, nil, options_switch_template)
|
|
tinsert(anchorFrame.plugin_widgets, bframe ["raidPluginsSlider"..i])
|
|
bframe ["raidPluginsSlider"..i].PluginName = absName
|
|
bframe ["raidPluginsSlider"..i]:SetPoint("topleft", anchorFrame, "topleft", 415, y+1)
|
|
bframe ["raidPluginsSlider"..i]:SetAsCheckBox()
|
|
bframe ["raidPluginsSlider"..i].OnSwitch = function(self, _, value)
|
|
plugin_stable.enabled = value
|
|
plugin.__enabled = value
|
|
if (not value) then
|
|
for index, instancia in ipairs(Details.tabela_instancias) do
|
|
if (instancia.modo == 4) then -- 4 = raid
|
|
if (instancia:IsEnabled()) then
|
|
Details:TrocaTabela(instancia, 0, 1, 1, nil, 2)
|
|
else
|
|
instancia.modo = 2 -- group mode
|
|
end
|
|
end
|
|
end
|
|
end
|
|
end
|
|
|
|
if (pluginObject.OpenOptionsPanel) then
|
|
DF:NewButton(bframe, nil, "$parentOptionsButton"..i, "OptionsButton"..i, 86, 18, pluginObject.OpenOptionsPanel, nil, nil, nil, Loc ["STRING_OPTIONS_PLUGINS_OPTIONS"], nil, options_button_template)
|
|
bframe ["OptionsButton"..i]:SetPoint("topleft", anchorFrame, "topleft", 510, y-0)
|
|
bframe ["OptionsButton"..i]:SetTextColor(button_color_rgb)
|
|
bframe ["OptionsButton"..i]:SetIcon ([[Interface\Buttons\UI-OptionsButton]], 14, 14, nil, {0, 1, 0, 1}, nil, 3)
|
|
end
|
|
|
|
--plugins installed, adding their abs name
|
|
DF.table.addunique(installedRaidPlugins, absName)
|
|
|
|
i = i + 1
|
|
y = y - 20
|
|
end
|
|
|
|
for o = 1, #allExistentRaidPlugins do
|
|
local pluginAbsName = allExistentRaidPlugins [o] [1]
|
|
if (not DF.table.find (installedRaidPlugins, pluginAbsName)) then
|
|
|
|
local absName = pluginAbsName
|
|
local pluginObject = {
|
|
__icon = "",
|
|
__name = allExistentRaidPlugins [o] [3],
|
|
__author = "Not Installed",
|
|
__version = "",
|
|
OpenOptionsPanel = false,
|
|
}
|
|
|
|
local bframe = CreateFrame("frame", "OptionsPluginToolbarBG", anchorFrame,"BackdropTemplate")
|
|
bframe:SetSize(640, 20)
|
|
bframe:SetPoint("topleft", anchorFrame, "topleft", 10, y)
|
|
bframe:SetBackdrop({bgFile = "Interface\\Tooltips\\UI-Tooltip-Background", tile = true, tileSize = 16, insets = {left = 1, right = 1, top = 0, bottom = 1}})
|
|
bframe:SetBackdropColor(.3, .3, .3, .3)
|
|
bframe:SetScript("OnEnter", on_enter)
|
|
bframe:SetScript("OnLeave", on_leave)
|
|
bframe:EnableMouse(true)
|
|
|
|
bframe.id = i
|
|
bframe.hasDesc = allExistentRaidPlugins [o] [4]
|
|
|
|
DF:NewImage(bframe, pluginObject.__icon, 18, 18, nil, nil, "toolbarPluginsIcon"..i, "$parentToolbarPluginsIcon"..i)
|
|
bframe ["toolbarPluginsIcon"..i]:SetPoint("topleft", anchorFrame, "topleft", 10, y)
|
|
|
|
DF:NewLabel(bframe, _, "$parentToolbarPluginsLabel"..i, "toolbarPluginsLabel"..i, pluginObject.__name)
|
|
bframe ["toolbarPluginsLabel"..i]:SetPoint("left", bframe ["toolbarPluginsIcon"..i], "right", 2, 0)
|
|
bframe ["toolbarPluginsLabel"..i].color = notInstalledColor
|
|
|
|
DF:NewLabel(bframe, _, "$parentToolbarPluginsLabel2"..i, "toolbarPluginsLabel2"..i, pluginObject.__author)
|
|
bframe ["toolbarPluginsLabel2"..i]:SetPoint("topleft", anchorFrame, "topleft", 180, y-4)
|
|
bframe ["toolbarPluginsLabel2"..i].color = notInstalledColor
|
|
|
|
DF:NewLabel(bframe, _, "$parentToolbarPluginsLabel3"..i, "toolbarPluginsLabel3"..i, pluginObject.__version)
|
|
bframe ["toolbarPluginsLabel3"..i]:SetPoint("topleft", anchorFrame, "topleft", 290, y-4)
|
|
bframe ["toolbarPluginsLabel3"..i].color = notInstalledColor
|
|
|
|
local installButton = DF:CreateButton(bframe, function(self)
|
|
local _, _, _, _, _, state = GetAddOnInfo(allExistentRaidPlugins[o][2])
|
|
if state == "DISABLED" then
|
|
EnableAddOn(allExistentRaidPlugins[o][2])
|
|
StaticPopup_Show("RELOAD_UI_NEEDED")
|
|
self:Disable()
|
|
self:SetText("Installed (Reload UI)")
|
|
elseif state == "MISSING" then
|
|
Details:Msg("This plugin was not found in your game folder. You may need to install it from the launcher!")
|
|
end
|
|
end, 120, 20, "Install")
|
|
installButton:SetTemplate(options_button_template)
|
|
installButton:SetPoint("topleft", anchorFrame, "topleft", 510, y-0)
|
|
|
|
i = i + 1
|
|
y = y - 20
|
|
end
|
|
end
|
|
|
|
y = y - 10
|
|
|
|
-- solo
|
|
DF:NewLabel(anchorFrame, _, "$parentSoloPluginsLabel", "soloLabel", Loc ["STRING_OPTIONS_PLUGINS_SOLO_ANCHOR"], "GameFontNormal", 16)
|
|
anchorFrame.soloLabel:SetPoint("topleft", anchorFrame, "topleft", 10, y)
|
|
|
|
y = y - 30
|
|
|
|
do
|
|
local descbar = anchorFrame:CreateTexture(nil, "artwork")
|
|
descbar:SetTexture(.3, .3, .3, .8)
|
|
descbar:SetPoint("topleft", anchorFrame, "topleft", 5, y+3)
|
|
descbar:SetSize(650, 20)
|
|
DF:NewLabel(anchorFrame, _, "$parentDescNameLabel3", "descNameLabel", Loc ["STRING_OPTIONS_PLUGINS_NAME"], "GameFontNormal", 12)
|
|
anchorFrame.descNameLabel:SetPoint("topleft", anchorFrame, "topleft", 15, y)
|
|
DF:NewLabel(anchorFrame, _, "$parentDescAuthorLabel3", "descAuthorLabel", Loc ["STRING_OPTIONS_PLUGINS_AUTHOR"], "GameFontNormal", 12)
|
|
anchorFrame.descAuthorLabel:SetPoint("topleft", anchorFrame, "topleft", 180, y)
|
|
DF:NewLabel(anchorFrame, _, "$parentDescVersionLabel3", "descVersionLabel", Loc ["STRING_OPTIONS_PLUGINS_VERSION"], "GameFontNormal", 12)
|
|
anchorFrame.descVersionLabel:SetPoint("topleft", anchorFrame, "topleft", 290, y)
|
|
DF:NewLabel(anchorFrame, _, "$parentDescEnabledLabel3", "descEnabledLabel", Loc ["STRING_ENABLED"], "GameFontNormal", 12)
|
|
anchorFrame.descEnabledLabel:SetPoint("topleft", anchorFrame, "topleft", 400, y)
|
|
DF:NewLabel(anchorFrame, _, "$parentDescOptionsLabel3", "descOptionsLabel", Loc ["STRING_OPTIONS_PLUGINS_OPTIONS"], "GameFontNormal", 12)
|
|
anchorFrame.descOptionsLabel:SetPoint("topleft", anchorFrame, "topleft", 510, y)
|
|
end
|
|
|
|
y = y - 30
|
|
|
|
local i = 1
|
|
local allplugins_solo = Details.SoloTables.NameTable
|
|
for absName, pluginObject in pairs(allplugins_solo) do
|
|
|
|
local bframe = CreateFrame("frame", "OptionsPluginSoloBG", anchorFrame,"BackdropTemplate")
|
|
bframe:SetSize(640, 20)
|
|
bframe:SetPoint("topleft", anchorFrame, "topleft", 10, y)
|
|
bframe:SetBackdrop({bgFile = "Interface\\Tooltips\\UI-Tooltip-Background", tile = true, tileSize = 16, insets = {left = 1, right = 1, top = 0, bottom = 1}})
|
|
bframe:SetBackdropColor(.3, .3, .3, .3)
|
|
bframe:SetScript("OnEnter", on_enter)
|
|
bframe:SetScript("OnLeave", on_leave)
|
|
bframe.plugin = pluginObject
|
|
bframe.id = i
|
|
|
|
DF:NewImage(bframe, pluginObject.__icon, 18, 18, nil, nil, "soloPluginsIcon"..i, "$parentSoloPluginsIcon"..i)
|
|
bframe ["soloPluginsIcon"..i]:SetPoint("topleft", anchorFrame, "topleft", 10, y)
|
|
|
|
DF:NewLabel(bframe, _, "$parentSoloPluginsLabel"..i, "soloPluginsLabel"..i, pluginObject.__name)
|
|
bframe ["soloPluginsLabel"..i]:SetPoint("left", bframe ["soloPluginsIcon"..i], "right", 2, 0)
|
|
|
|
DF:NewLabel(bframe, _, "$parentSoloPluginsLabel2"..i, "soloPluginsLabel2"..i, pluginObject.__author)
|
|
bframe ["soloPluginsLabel2"..i]:SetPoint("topleft", anchorFrame, "topleft", 180, y-4)
|
|
|
|
DF:NewLabel(bframe, _, "$parentSoloPluginsLabel3"..i, "soloPluginsLabel3"..i, pluginObject.__version)
|
|
bframe ["soloPluginsLabel3"..i]:SetPoint("topleft", anchorFrame, "topleft", 290, y-4)
|
|
|
|
local plugin_stable = Details:GetPluginSavedTable (absName)
|
|
local plugin = Details:GetPlugin (absName)
|
|
DF:NewSwitch (bframe, _, "$parentSoloSlider"..i, "soloPluginsSlider"..i, 60, 20, _, _, plugin_stable.enabled, nil, nil, nil, nil, options_switch_template)
|
|
tinsert(anchorFrame.plugin_widgets, bframe ["soloPluginsSlider"..i])
|
|
bframe ["soloPluginsSlider"..i].PluginName = absName
|
|
bframe ["soloPluginsSlider"..i]:SetPoint("topleft", anchorFrame, "topleft", 415, y+1)
|
|
bframe ["soloPluginsSlider"..i]:SetAsCheckBox()
|
|
bframe ["soloPluginsSlider"..i].OnSwitch = function(self, _, value)
|
|
plugin_stable.enabled = value
|
|
plugin.__enabled = value
|
|
if (not value) then
|
|
for index, instancia in ipairs(Details.tabela_instancias) do
|
|
if (instancia.modo == 1 and instancia.baseframe) then -- 1 = solo
|
|
Details:TrocaTabela(instancia, 0, 1, 1, nil, 2)
|
|
end
|
|
end
|
|
end
|
|
end
|
|
|
|
if (pluginObject.OpenOptionsPanel) then
|
|
DF:NewButton(bframe, nil, "$parentOptionsButton"..i, "OptionsButton"..i, 86, 18, pluginObject.OpenOptionsPanel, nil, nil, nil, Loc ["STRING_OPTIONS_PLUGINS_OPTIONS"], nil, options_button_template)
|
|
bframe ["OptionsButton"..i]:SetPoint("topleft", anchorFrame, "topleft", 510, y-0)
|
|
bframe ["OptionsButton"..i]:SetTextColor(button_color_rgb)
|
|
bframe ["OptionsButton"..i]:SetIcon ([[Interface\Buttons\UI-OptionsButton]], 14, 14, nil, {0, 1, 0, 1}, nil, 3)
|
|
end
|
|
|
|
i = i + 1
|
|
y = y - 20
|
|
end
|
|
|
|
local sectionOptions = {
|
|
|
|
}
|
|
|
|
sectionFrame.sectionOptions = sectionOptions
|
|
sectionOptions.always_boxfirst = true
|
|
DF:BuildMenu(sectionFrame, sectionOptions, startX, startY-20, heightSize, false, options_text_template, options_dropdown_template, options_switch_template, true, options_slider_template, options_button_template)
|
|
end
|
|
|
|
tinsert(Details.optionsSection, buildSection)
|
|
end
|
|
|
|
|
|
-- ~09 - profiles
|
|
do
|
|
|
|
local buildSection = function(sectionFrame)
|
|
|
|
--build profile menu for "always use this profile" feature
|
|
local profile_selected_alwaysuse = function(_, instance, profile_name)
|
|
Details.always_use_profile_name = profile_name
|
|
local unitname = UnitName ("player")
|
|
Details.always_use_profile_exception [unitname] = nil
|
|
|
|
Details:ApplyProfile (profile_name)
|
|
|
|
Details:Msg(Loc ["STRING_OPTIONS_PROFILE_LOADED"], profile_name)
|
|
afterUpdate()
|
|
end
|
|
local buildProfileMenuForAlwaysUse = function()
|
|
local menu = {}
|
|
for index, profile_name in ipairs(Details:GetProfileList()) do
|
|
menu [#menu+1] = {value = profile_name, label = profile_name, onclick = profile_selected_alwaysuse, icon = "Interface\\MINIMAP\\Vehicle-HammerGold-3"}
|
|
end
|
|
return menu
|
|
end
|
|
|
|
local selectProfile = function(_, _, profileName)
|
|
Details:ApplyProfile(profileName)
|
|
Details:Msg(Loc ["STRING_OPTIONS_PROFILE_LOADED"], profileName)
|
|
--Details222.OptionsPanel.SetCurrentInstanceAndRefresh(currentInstance)
|
|
--afterUpdate()
|
|
_G.DetailsOptionsWindow:Hide()
|
|
Details:OpenOptionsWindow(currentInstance, false, 9)
|
|
end
|
|
|
|
local buildProfileMenu = function(func)
|
|
local menu = {}
|
|
for index, profileName in ipairs(Details:GetProfileList()) do
|
|
menu [#menu+1] = {value = profileName, label = profileName, onclick = selectProfile, icon = "Interface\\MINIMAP\\Vehicle-HammerGold-3"}
|
|
end
|
|
return menu
|
|
end
|
|
|
|
local buildProfileMenuToDelete = function()
|
|
local menu = {}
|
|
for index, profileName in ipairs(Details:GetProfileList()) do
|
|
if (profileName ~= Details:GetCurrentProfileName()) then
|
|
menu [#menu+1] = {value = profileName, label = profileName, onclick = function()end, icon = [[Interface\Glues\LOGIN\Glues-CheckBox-Check]], color = {1, 1, 1}, iconcolor = {1, .9, .9, 0.8}}
|
|
end
|
|
end
|
|
return menu
|
|
end
|
|
|
|
local sectionOptions = {
|
|
{type = "label", get = function() return Loc["STRING_OPTIONS_PROFILES_CURRENT"] .. " |cFFFFFFFF" .. _detalhes_database.active_profile end, text_template = options_text_template},
|
|
|
|
{--select profile
|
|
type = "select",
|
|
get = function() return Details:GetCurrentProfileName() end,
|
|
values = function() return buildProfileMenu() end,
|
|
name = Loc ["STRING_OPTIONS_PROFILES_SELECT"],
|
|
desc = Loc ["STRING_OPTIONS_PROFILES_SELECT"],
|
|
},
|
|
|
|
{type = "blank"},
|
|
|
|
{--save size and positioning
|
|
type = "toggle",
|
|
get = function() return Details.profile_save_pos end,
|
|
set = function(self, fixedparam, value)
|
|
Details.profile_save_pos = value
|
|
Details:SetProfileCProp (nil, "profile_save_pos", value)
|
|
afterUpdate()
|
|
end,
|
|
name = Loc ["STRING_OPTIONS_PROFILE_POSSIZE"],
|
|
desc = Loc ["STRING_OPTIONS_PROFILE_POSSIZE_DESC"],
|
|
},
|
|
|
|
{type = "blank"},
|
|
|
|
{--profile name
|
|
type = "textentry",
|
|
get = function() return "profile name" end,
|
|
func = function(self, _, text) end,
|
|
name = Loc ["STRING_OPTIONS_PROFILES_CREATE"],
|
|
--desc = Loc ["STRING_OPTIONS_NICKNAME"],
|
|
},
|
|
|
|
{--create new profile
|
|
type = "execute",
|
|
func = function(self)
|
|
local profileNameString = sectionFrame.widget_list_by_type.textentry[1]
|
|
local profileName = profileNameString:GetText()
|
|
|
|
if (profileName == "") then
|
|
return Details:Msg(Loc ["STRING_OPTIONS_PROFILE_FIELDEMPTY"])
|
|
end
|
|
|
|
profileNameString:SetText("")
|
|
profileNameString:ClearFocus()
|
|
|
|
local new_profile = Details:CreateProfile(profileName)
|
|
if (new_profile) then
|
|
Details:ApplyProfile(profileName)
|
|
afterUpdate()
|
|
Details222.OptionsPanel.SetCurrentInstanceAndRefresh(currentInstance)
|
|
else
|
|
return Details:Msg(Loc ["STRING_OPTIONS_PROFILE_NOTCREATED"])
|
|
end
|
|
end,
|
|
--icontexture = [[Interface\PetBattles\PetBattle-LockIcon]],
|
|
--icontexcoords = {0.0703125, 0.9453125, 0.0546875, 0.9453125},
|
|
name = Loc ["STRING_OPTIONS_PROFILES_CREATE"],
|
|
},
|
|
|
|
{type = "blank"},
|
|
|
|
{--delete profile
|
|
type = "select",
|
|
get = function() return "" end,
|
|
values = function() return buildProfileMenuToDelete() end,
|
|
name = Loc ["STRING_OPTIONS_PROFILES_ERASE"],
|
|
desc = Loc ["STRING_OPTIONS_PROFILES_ERASE"],
|
|
},
|
|
|
|
{--delete profile
|
|
type = "execute",
|
|
func = function(self)
|
|
local profileDropdown = sectionFrame.widget_list_by_type.dropdown[2]
|
|
local profileName = profileDropdown:GetValue()
|
|
|
|
if (profileName == "") then
|
|
return Details:Msg(Loc ["STRING_OPTIONS_PROFILE_FIELDEMPTY"])
|
|
end
|
|
|
|
if (#Details:GetProfileList() == 1) then
|
|
return Details:Msg("There's only one profile.")
|
|
end
|
|
|
|
if (profileName == Details:GetCurrentProfileName()) then
|
|
return Details:Msg("Can't delete current profile.")
|
|
end
|
|
|
|
Details:EraseProfile(profileName)
|
|
|
|
Details222.OptionsPanel.SetCurrentInstanceAndRefresh(currentInstance)
|
|
afterUpdate()
|
|
Details:Msg(Loc ["STRING_OPTIONS_PROFILE_REMOVEOKEY"])
|
|
end,
|
|
name = Loc ["STRING_OPTIONS_PROFILES_ERASE"],
|
|
},
|
|
|
|
{type = "blank"},
|
|
|
|
{--export profile
|
|
type = "execute",
|
|
func = function(self)
|
|
local str = Details:ExportCurrentProfile()
|
|
if (str) then
|
|
Details:ShowImportWindow (str, nil, "Details! Export Profile")
|
|
end
|
|
end,
|
|
name = Loc["STRING_OPTIONS_EXPORT_PROFILE"],
|
|
icontexture = [[Interface\Buttons\UI-GuildButton-MOTD-Up]],
|
|
icontexcoords = {1, 0, 0, 1},
|
|
},
|
|
|
|
--[=[
|
|
function(profileString)
|
|
if (type(profileString) ~= "string" or string.len(profileString) < 2) then
|
|
return
|
|
end
|
|
|
|
--prompt text panel returns what the user inserted in the text field in the first argument
|
|
DF:ShowTextPromptPanel(Loc["STRING_OPTIONS_IMPORT_PROFILE_NAME"] .. ":", function(newProfileName)
|
|
Details:ImportProfile (profileString, newProfileName, importAutoRunCode)
|
|
end)
|
|
end
|
|
--]=]
|
|
|
|
{--import profile
|
|
type = "execute",
|
|
func = function(self)
|
|
local importConfirmationCallback = function(profileString)
|
|
if (type(profileString) ~= "string" or string.len(profileString) < 2) then
|
|
return
|
|
end
|
|
|
|
--prompt text panel returns what the user inserted in the text field in the first argument
|
|
local askForNewProfileName = function(newProfileName, importAutoRunCode)
|
|
Details:ImportProfile(profileString, newProfileName, importAutoRunCode, true)
|
|
end
|
|
Details.ShowImportProfileConfirmation(Loc["STRING_OPTIONS_IMPORT_PROFILE_NAME"] .. ":", askForNewProfileName)
|
|
end
|
|
|
|
Details:ShowImportWindow("", importConfirmationCallback, Loc["STRING_OPTIONS_IMPORT_PROFILE_PASTE"])
|
|
end,
|
|
name = Loc["STRING_OPTIONS_IMPORT_PROFILE"],
|
|
icontexture = [[Interface\BUTTONS\UI-GuildButton-OfficerNote-Up]],
|
|
icontexcoords = {0, 1, 0, 1},
|
|
},
|
|
|
|
{type = "blank"},
|
|
|
|
{--use on all characters
|
|
type = "toggle",
|
|
get = function() return Details.always_use_profile end,
|
|
set = function(self, fixedparam, value)
|
|
Details.always_use_profile = value
|
|
|
|
if (value) then
|
|
Details.always_use_profile = true
|
|
Details.always_use_profile_name = sectionFrame.widget_list_by_type.dropdown[3]:GetValue()
|
|
|
|
--enable the dropdown
|
|
sectionFrame.widget_list_by_type.dropdown[3]:Enable()
|
|
|
|
--set the dropdown value to the current profile selected
|
|
sectionFrame.widget_list_by_type.dropdown[3]:Select(Details.always_use_profile_name)
|
|
|
|
--remove this character from the exception list
|
|
local unitname = UnitName ("player")
|
|
Details.always_use_profile_exception [unitname] = nil
|
|
else
|
|
Details.always_use_profile = false
|
|
--disable the dropdown
|
|
sectionFrame.widget_list_by_type.dropdown[3]:Disable()
|
|
|
|
--remove this character from the exception list
|
|
local unitname = UnitName ("player")
|
|
Details.always_use_profile_exception [unitname] = nil
|
|
end
|
|
|
|
afterUpdate()
|
|
end,
|
|
name = Loc ["STRING_OPTIONS_ALWAYS_USE"],
|
|
desc = Loc ["STRING_OPTIONS_ALWAYS_USE_DESC"],
|
|
},
|
|
|
|
{--select a profile to use on all characters
|
|
type = "select",
|
|
get = function() return Details.always_use_profile_name end,
|
|
values = function() return buildProfileMenuForAlwaysUse() end,
|
|
name = "Select Profile",
|
|
desc = Loc ["STRING_OPTIONS_PROFILE_GLOBAL"],
|
|
},
|
|
|
|
|
|
}
|
|
|
|
sectionFrame.sectionOptions = sectionOptions
|
|
sectionOptions.always_boxfirst = true
|
|
DF:BuildMenu(sectionFrame, sectionOptions, startX, startY-20, heightSize, false, options_text_template, options_dropdown_template, options_switch_template, true, options_slider_template, options_button_template)
|
|
end
|
|
|
|
tinsert(Details.optionsSection, buildSection)
|
|
end
|
|
|
|
|
|
-- ~10 ~tooltips
|
|
do
|
|
local buildSection = function(sectionFrame)
|
|
|
|
--button for anchor toggle
|
|
local refreshToggleAnchor = function()
|
|
local buttonToggleAnchor = sectionFrame.widget_list_by_type.button[1]
|
|
if (Details.tooltip.anchored_to == 1) then
|
|
buttonToggleAnchor:Disable()
|
|
else
|
|
buttonToggleAnchor:Enable()
|
|
end
|
|
end
|
|
|
|
--text face
|
|
local on_select_tooltip_font = function(self, _, fontName)
|
|
Details.tooltip.fontface = fontName
|
|
Details:SendOptionsModifiedEvent (DetailsOptionsWindow.instance)
|
|
end
|
|
|
|
local buildTooltipFontOptions = function()
|
|
local fonts = {}
|
|
for name, fontPath in pairs(SharedMedia:HashTable ("font")) do
|
|
|
|
fonts [#fonts+1] = {value = name, icon = font_select_icon, texcoord = font_select_texcoord, label = name, onclick = on_select_tooltip_font, font = fontPath, descfont = name, desc = "Our thoughts strayed constantly\nAnd without boundary\nThe ringing of the division bell had began."}
|
|
end
|
|
table.sort (fonts, function(t1, t2) return t1.label < t2.label end)
|
|
return fonts
|
|
end
|
|
|
|
--number format
|
|
local icon = [[Interface\COMMON\mini-hourglass]]
|
|
local iconcolor = {1, 1, 1, .5}
|
|
local iconsize = {14, 14}
|
|
|
|
local onSelectTimeAbbreviation = function(_, _, abbreviationtype)
|
|
Details.tooltip.abbreviation = abbreviationtype
|
|
|
|
Details.atributo_damage:UpdateSelectedToKFunction()
|
|
Details.atributo_heal:UpdateSelectedToKFunction()
|
|
Details.atributo_energy:UpdateSelectedToKFunction()
|
|
Details.atributo_misc:UpdateSelectedToKFunction()
|
|
Details.atributo_custom:UpdateSelectedToKFunction()
|
|
|
|
afterUpdate()
|
|
end
|
|
|
|
local abbreviationOptions = {
|
|
{value = 1, label = Loc ["STRING_OPTIONS_PS_ABBREVIATE_NONE"], desc = "Example: 305.500 -> 305500", onclick = onSelectTimeAbbreviation, icon = icon, iconcolor = iconcolor, iconsize = iconsize}, --, desc = ""
|
|
{value = 2, label = Loc ["STRING_OPTIONS_PS_ABBREVIATE_TOK"], desc = "Example: 305.500 -> 305.5K", onclick = onSelectTimeAbbreviation, icon = icon, iconcolor = iconcolor, iconsize = iconsize}, --, desc = ""
|
|
{value = 3, label = Loc ["STRING_OPTIONS_PS_ABBREVIATE_TOK2"], desc = "Example: 305.500 -> 305K", onclick = onSelectTimeAbbreviation, icon = icon, iconcolor = iconcolor, iconsize = iconsize}, --, desc = ""
|
|
{value = 4, label = Loc ["STRING_OPTIONS_PS_ABBREVIATE_TOK0"], desc = "Example: 25.305.500 -> 25M", onclick = onSelectTimeAbbreviation, icon = icon, iconcolor = iconcolor, iconsize = iconsize}, --, desc = ""
|
|
{value = 5, label = Loc ["STRING_OPTIONS_PS_ABBREVIATE_TOKMIN"], desc = "Example: 305.500 -> 305.5k", onclick = onSelectTimeAbbreviation, icon = icon, iconcolor = iconcolor, iconsize = iconsize}, --, desc = ""
|
|
{value = 6, label = Loc ["STRING_OPTIONS_PS_ABBREVIATE_TOK2MIN"], desc = "Example: 305.500 -> 305k", onclick = onSelectTimeAbbreviation, icon = icon, iconcolor = iconcolor, iconsize = iconsize}, --, desc = ""
|
|
{value = 7, label = Loc ["STRING_OPTIONS_PS_ABBREVIATE_TOK0MIN"], desc = "Example: 25.305.500 -> 25m", onclick = onSelectTimeAbbreviation, icon = icon, iconcolor = iconcolor, iconsize = iconsize}, --, desc = ""
|
|
{value = 8, label = Loc ["STRING_OPTIONS_PS_ABBREVIATE_COMMA"], desc = "Example: 25305500 -> 25.305.500", onclick = onSelectTimeAbbreviation, icon = icon, iconcolor = iconcolor, iconsize = iconsize} --, desc = ""
|
|
}
|
|
local buildAbbreviationMenu = function()
|
|
return abbreviationOptions
|
|
end
|
|
|
|
--maximize method
|
|
local onSelectMaximize = function(_, _, maximizeType)
|
|
Details.tooltip.maximize_method = maximizeType
|
|
Details.atributo_damage:UpdateSelectedToKFunction()
|
|
Details.atributo_heal:UpdateSelectedToKFunction()
|
|
Details.atributo_energy:UpdateSelectedToKFunction()
|
|
Details.atributo_misc:UpdateSelectedToKFunction()
|
|
Details.atributo_custom:UpdateSelectedToKFunction()
|
|
|
|
afterUpdate()
|
|
end
|
|
|
|
local icon = [[Interface\Buttons\UI-Panel-BiggerButton-Up]]
|
|
local iconcolor = {1, 1, 1, 1}
|
|
local iconcord = {0.1875, 0.78125+0.109375, 0.78125+0.109375+0.03, 0.21875-0.109375-0.03}
|
|
|
|
local maximizeOptions = {
|
|
{value = 1, label = Loc ["STRING_OPTIONS_TOOLTIPS_MAXIMIZE1"], onclick = onSelectMaximize, icon = icon, iconcolor = iconcolor, texcoord = iconcord}, --, desc = ""
|
|
{value = 2, label = Loc ["STRING_OPTIONS_TOOLTIPS_MAXIMIZE2"], onclick = onSelectMaximize, icon = icon, iconcolor = iconcolor, texcoord = iconcord}, --, desc = ""
|
|
{value = 3, label = Loc ["STRING_OPTIONS_TOOLTIPS_MAXIMIZE3"], onclick = onSelectMaximize, icon = icon, iconcolor = iconcolor, texcoord = iconcord}, --, desc = ""
|
|
{value = 4, label = Loc ["STRING_OPTIONS_TOOLTIPS_MAXIMIZE4"], onclick = onSelectMaximize, icon = icon, iconcolor = iconcolor, texcoord = iconcord}, --, desc = ""
|
|
{value = 5, label = Loc ["STRING_OPTIONS_TOOLTIPS_MAXIMIZE5"], onclick = onSelectMaximize, icon = icon, iconcolor = iconcolor, texcoord = iconcord}, --, desc = ""
|
|
}
|
|
local buildMaximizeMenu = function()
|
|
return maximizeOptions
|
|
end
|
|
|
|
--tooltip side
|
|
local onSelectAnchorPoint = function(_, _, selected_anchor)
|
|
Details.tooltip.anchor_point = selected_anchor
|
|
afterUpdate()
|
|
end
|
|
|
|
local anchorPointOptions = {
|
|
{value = "top", label = Loc ["STRING_ANCHOR_TOP"], onclick = onSelectAnchorPoint, icon = [[Interface\Buttons\Arrow-Up-Up]], texcoord = {0, 0.8125, 0.1875, 0.875}},
|
|
{value = "bottom", label = Loc ["STRING_ANCHOR_BOTTOM"], onclick = onSelectAnchorPoint, icon = [[Interface\Buttons\Arrow-Up-Up]], texcoord = {0, 0.875, 1, 0.1875}},
|
|
{value = "left", label = Loc ["STRING_ANCHOR_LEFT"], onclick = onSelectAnchorPoint, icon = [[Interface\CHATFRAME\UI-InChatFriendsArrow]], texcoord = {0.5, 0, 0, 0.8125}},
|
|
{value = "right", label = Loc ["STRING_ANCHOR_RIGHT"], onclick = onSelectAnchorPoint, icon = [[Interface\CHATFRAME\UI-InChatFriendsArrow]], texcoord = {0, 0.5, 0, 0.8125}},
|
|
{value = "topleft", label = Loc ["STRING_ANCHOR_TOPLEFT"], onclick = onSelectAnchorPoint, icon = [[Interface\Buttons\UI-AutoCastableOverlay]], texcoord = {0.796875, 0.609375, 0.1875, 0.375}},
|
|
{value = "bottomleft", label = Loc ["STRING_ANCHOR_BOTTOMLEFT"], onclick = onSelectAnchorPoint, icon = [[Interface\Buttons\UI-AutoCastableOverlay]], texcoord = {0.796875, 0.609375, 0.375, 0.1875}},
|
|
{value = "topright", label = Loc ["STRING_ANCHOR_TOPRIGHT"], onclick = onSelectAnchorPoint, icon = [[Interface\Buttons\UI-AutoCastableOverlay]], texcoord = {0.609375, 0.796875, 0.1875, 0.375}},
|
|
{value = "bottomright", label = Loc ["STRING_ANCHOR_BOTTOMRIGHT"], onclick = onSelectAnchorPoint, icon = [[Interface\Buttons\UI-AutoCastableOverlay]], texcoord = {0.609375, 0.796875, 0.375, 0.1875}},
|
|
}
|
|
|
|
local buildAnchorPointMenu = function()
|
|
return anchorPointOptions
|
|
end
|
|
|
|
--tooltip relative side
|
|
local onSelectAnchorRelative = function(_, _, selected_anchor)
|
|
Details.tooltip.anchor_relative = selected_anchor
|
|
afterUpdate()
|
|
end
|
|
|
|
local anchorRelativeOptions = {
|
|
{value = "top", label = Loc ["STRING_ANCHOR_TOP"], onclick = onSelectAnchorRelative, icon = [[Interface\Buttons\Arrow-Up-Up]], texcoord = {0, 0.8125, 0.1875, 0.875}},
|
|
{value = "bottom", label = Loc ["STRING_ANCHOR_BOTTOM"], onclick = onSelectAnchorRelative, icon = [[Interface\Buttons\Arrow-Up-Up]], texcoord = {0, 0.875, 1, 0.1875}},
|
|
{value = "left", label = Loc ["STRING_ANCHOR_LEFT"], onclick = onSelectAnchorRelative, icon = [[Interface\CHATFRAME\UI-InChatFriendsArrow]], texcoord = {0.5, 0, 0, 0.8125}},
|
|
{value = "right", label = Loc ["STRING_ANCHOR_RIGHT"], onclick = onSelectAnchorRelative, icon = [[Interface\CHATFRAME\UI-InChatFriendsArrow]], texcoord = {0, 0.5, 0, 0.8125}},
|
|
{value = "topleft", label = Loc ["STRING_ANCHOR_TOPLEFT"], onclick = onSelectAnchorRelative, icon = [[Interface\Buttons\UI-AutoCastableOverlay]], texcoord = {0.796875, 0.609375, 0.1875, 0.375}},
|
|
{value = "bottomleft", label = Loc ["STRING_ANCHOR_BOTTOMLEFT"], onclick = onSelectAnchorRelative, icon = [[Interface\Buttons\UI-AutoCastableOverlay]], texcoord = {0.796875, 0.609375, 0.375, 0.1875}},
|
|
{value = "topright", label = Loc ["STRING_ANCHOR_TOPRIGHT"], onclick = onSelectAnchorRelative, icon = [[Interface\Buttons\UI-AutoCastableOverlay]], texcoord = {0.609375, 0.796875, 0.1875, 0.375}},
|
|
{value = "bottomright", label = Loc ["STRING_ANCHOR_BOTTOMRIGHT"], onclick = onSelectAnchorRelative, icon = [[Interface\Buttons\UI-AutoCastableOverlay]], texcoord = {0.609375, 0.796875, 0.375, 0.1875}},
|
|
}
|
|
|
|
local buildAnchorRelativeMenu = function()
|
|
return anchorRelativeOptions
|
|
end
|
|
|
|
--anchor
|
|
local onSelectAnchor = function(_, _, selected_anchor)
|
|
Details.tooltip.anchored_to = selected_anchor
|
|
refreshToggleAnchor()
|
|
afterUpdate()
|
|
end
|
|
|
|
local anchorOptions = {
|
|
{value = 1, label = Loc ["STRING_OPTIONS_TOOLTIPS_ANCHOR_TO1"], onclick = onSelectAnchor, icon = [[Interface\Buttons\UI-GuildButton-OfficerNote-Disabled]]},
|
|
{value = 2, label = Loc ["STRING_OPTIONS_TOOLTIPS_ANCHOR_TO2"], onclick = onSelectAnchor, icon = [[Interface\Buttons\UI-GuildButton-OfficerNote-Disabled]]},
|
|
}
|
|
local buildAnchorMenu = function()
|
|
return anchorOptions
|
|
end
|
|
|
|
local sectionOptions = {
|
|
{type = "label", get = function() return Loc["STRING_OPTIONS_TOOLTIP_ANCHORTEXTS"] end, text_template = subSectionTitleTextTemplate},
|
|
|
|
{--text shadow
|
|
type = "toggle",
|
|
get = function() return Details.tooltip.fontshadow end,
|
|
set = function(self, fixedparam, value)
|
|
Details.tooltip.fontshadow = value
|
|
afterUpdate()
|
|
end,
|
|
name = Loc ["STRING_OPTIONS_TEXT_LOUTILINE"],
|
|
desc = Loc ["STRING_OPTIONS_TOOLTIPS_FONTSHADOW_DESC"],
|
|
},
|
|
|
|
{--text size
|
|
type = "range",
|
|
get = function() return Details.tooltip.fontsize end,
|
|
set = function(self, fixedparam, value)
|
|
Details.tooltip.fontsize = value
|
|
afterUpdate()
|
|
end,
|
|
min = 5,
|
|
max = 32,
|
|
step = 1,
|
|
name = Loc ["STRING_OPTIONS_TEXT_SIZE"],
|
|
desc = Loc ["STRING_OPTIONS_TEXT_SIZE_DESC"],
|
|
},
|
|
|
|
{--text font
|
|
type = "select",
|
|
get = function() return Details.tooltip.fontface end,
|
|
values = function()
|
|
return buildTooltipFontOptions()
|
|
end,
|
|
name = Loc ["STRING_OPTIONS_TEXT_FONT"],
|
|
desc = Loc ["STRING_OPTIONS_TEXT_FONT_DESC"],
|
|
},
|
|
|
|
{type = "blank"},
|
|
|
|
{type = "label", get = function() return Loc["STRING_OPTIONS_TOOLTIPS_FONTCOLOR"] end},
|
|
|
|
{--text color left
|
|
type = "color",
|
|
get = function()
|
|
local r, g, b, a = unpack(Details.tooltip.fontcolor)
|
|
return {r, g, b, a}
|
|
end,
|
|
set = function(self, r, g, b, a)
|
|
local color = Details.tooltip.fontcolor
|
|
color[1] = r
|
|
color[2] = g
|
|
color[3] = b
|
|
color[4] = a
|
|
afterUpdate()
|
|
end,
|
|
name = Loc ["STRING_LEFT"],
|
|
desc = Loc ["STRING_LEFT"],
|
|
},
|
|
|
|
{--text color right
|
|
type = "color",
|
|
get = function()
|
|
local r, g, b, a = unpack(Details.tooltip.fontcolor_right)
|
|
return {r, g, b, a}
|
|
end,
|
|
set = function(self, r, g, b, a)
|
|
local color = Details.tooltip.fontcolor_right
|
|
color[1] = r
|
|
color[2] = g
|
|
color[3] = b
|
|
color[4] = a
|
|
afterUpdate()
|
|
end,
|
|
name = Loc ["STRING_RIGHT"],
|
|
desc = Loc ["STRING_RIGHT"],
|
|
},
|
|
|
|
{--text color header
|
|
type = "color",
|
|
get = function()
|
|
local r, g, b, a = unpack(Details.tooltip.header_text_color)
|
|
return {r, g, b, a}
|
|
end,
|
|
set = function(self, r, g, b, a)
|
|
local color = Details.tooltip.header_text_color
|
|
color[1] = r
|
|
color[2] = g
|
|
color[3] = b
|
|
color[4] = a
|
|
afterUpdate()
|
|
end,
|
|
name = Loc ["STRING_OPTIONS_TOOLTIPS_ANCHORCOLOR"],
|
|
desc = Loc ["STRING_OPTIONS_TOOLTIPS_ANCHORCOLOR"],
|
|
},
|
|
|
|
{type = "blank"},
|
|
{type = "label", get = function() return Loc ["STRING_OPTIONS_MENU_ATTRIBUTESETTINGS_ANCHOR"] end, text_template = subSectionTitleTextTemplate},
|
|
|
|
{--bar color
|
|
type = "color",
|
|
get = function()
|
|
local r, g, b, a = unpack(Details.tooltip.bar_color)
|
|
return {r, g, b, a}
|
|
end,
|
|
set = function(self, r, g, b, a)
|
|
local color = Details.tooltip.bar_color
|
|
color[1] = r
|
|
color[2] = g
|
|
color[3] = b
|
|
color[4] = a
|
|
afterUpdate()
|
|
end,
|
|
name = "Bar Color",
|
|
desc = "Bar Color",
|
|
},
|
|
|
|
{--background color
|
|
type = "color",
|
|
get = function()
|
|
local r, g, b, a = unpack(Details.tooltip.background)
|
|
return {r, g, b, a}
|
|
end,
|
|
set = function(self, r, g, b, a)
|
|
local color = Details.tooltip.background
|
|
color[1] = r
|
|
color[2] = g
|
|
color[3] = b
|
|
color[4] = a
|
|
afterUpdate()
|
|
end,
|
|
name = Loc ["STRING_OPTIONS_TOOLTIPS_BACKGROUNDCOLOR"],
|
|
desc = Loc ["STRING_OPTIONS_TOOLTIPS_BACKGROUNDCOLOR"],
|
|
},
|
|
|
|
{--divisor color
|
|
type = "color",
|
|
get = function()
|
|
local r, g, b, a = unpack(Details.tooltip.divisor_color)
|
|
return {r, g, b, a}
|
|
end,
|
|
set = function(self, r, g, b, a)
|
|
local color = Details.tooltip.divisor_color
|
|
color[1] = r
|
|
color[2] = g
|
|
color[3] = b
|
|
color[4] = a
|
|
afterUpdate()
|
|
end,
|
|
name = "Divisor Color",
|
|
desc = "Divisor Color",
|
|
},
|
|
|
|
{--rounded corner
|
|
type = "toggle",
|
|
get = function() return Details.tooltip.rounded_corner end,
|
|
set = function(self, fixedparam, value)
|
|
Details.tooltip.rounded_corner = value
|
|
afterUpdate()
|
|
end,
|
|
name = "Show Rounded Border",
|
|
desc = "Show Rounded Border",
|
|
},
|
|
|
|
{type = "blank"},
|
|
|
|
{--show amount
|
|
type = "toggle",
|
|
get = function() return Details.tooltip.show_amount end,
|
|
set = function(self, fixedparam, value)
|
|
Details.tooltip.show_amount = value
|
|
afterUpdate()
|
|
end,
|
|
name = Loc ["STRING_OPTIONS_TOOLTIPS_SHOWAMT"],
|
|
desc = Loc ["STRING_OPTIONS_TOOLTIPS_SHOWAMT_DESC"],
|
|
},
|
|
|
|
{--number system
|
|
type = "select",
|
|
get = function() return Details.tooltip.abbreviation end,
|
|
values = function()
|
|
return buildAbbreviationMenu()
|
|
end,
|
|
name = Loc ["STRING_OPTIONS_PS_ABBREVIATE"],
|
|
desc = Loc ["STRING_OPTIONS_PS_ABBREVIATE_DESC"],
|
|
},
|
|
|
|
{--maximize method
|
|
type = "select",
|
|
get = function() return Details.tooltip.maximize_method end,
|
|
values = function()
|
|
return buildMaximizeMenu()
|
|
end,
|
|
name = Loc ["STRING_OPTIONS_TOOLTIPS_MAXIMIZE"],
|
|
desc = Loc ["STRING_OPTIONS_TOOLTIPS_MAXIMIZE_DESC"],
|
|
},
|
|
|
|
{type = "breakline"},
|
|
{type = "label", get = function() return Loc ["STRING_OPTIONS_TOOLTIPS_ANCHOR_POINT"] end, text_template = subSectionTitleTextTemplate},
|
|
|
|
{--anchor
|
|
type = "select",
|
|
get = function() return Details.tooltip.anchored_to end,
|
|
values = function()
|
|
return buildAnchorMenu()
|
|
end,
|
|
name = Loc ["STRING_OPTIONS_TOOLTIPS_ANCHOR_TO"],
|
|
desc = Loc ["STRING_OPTIONS_TOOLTIPS_ANCHOR_TO_DESC"],
|
|
},
|
|
|
|
{--toggle anchor point
|
|
type = "execute",
|
|
func = function(self)
|
|
_G.DetailsTooltipAnchor:MoveAnchor()
|
|
end,
|
|
icontexture = [[Interface\PetBattles\PetBattle-LockIcon]],
|
|
icontexcoords = {0.0703125, 0.9453125, 0.0546875, 0.9453125},
|
|
name = Loc ["STRING_OPTIONS_TOOLTIPS_ANCHOR_TO_CHOOSE"],
|
|
desc = Loc ["STRING_OPTIONS_TOOLTIPS_ANCHOR_TO_CHOOSE_DESC"],
|
|
},
|
|
|
|
{type = "blank"},
|
|
|
|
{--tooltip anchor side
|
|
type = "select",
|
|
get = function() return Details.tooltip.anchor_point end,
|
|
values = function()
|
|
return buildAnchorPointMenu()
|
|
end,
|
|
name = Loc ["STRING_OPTIONS_TOOLTIPS_ANCHOR_ATTACH"],
|
|
desc = Loc ["STRING_OPTIONS_TOOLTIPS_ANCHOR_ATTACH_DESC"],
|
|
},
|
|
|
|
{--tooltip anchor side
|
|
type = "select",
|
|
get = function() return Details.tooltip.anchor_relative end,
|
|
values = function()
|
|
return buildAnchorRelativeMenu()
|
|
end,
|
|
name = Loc ["STRING_OPTIONS_TOOLTIPS_ANCHOR_RELATIVE"],
|
|
desc = Loc ["STRING_OPTIONS_TOOLTIPS_ANCHOR_RELATIVE_DESC"],
|
|
},
|
|
|
|
{--anchor offset x
|
|
type = "range",
|
|
get = function() return Details.tooltip.anchor_offset[1] end,
|
|
set = function(self, fixedparam, value)
|
|
Details.tooltip.anchor_offset[1] = value
|
|
afterUpdate()
|
|
end,
|
|
min = -100,
|
|
max = 100,
|
|
step = 1,
|
|
name = Loc ["STRING_OPTIONS_TOOLTIPS_OFFSETX"],
|
|
desc = Loc ["STRING_OPTIONS_TOOLTIPS_OFFSETX_DESC"],
|
|
},
|
|
|
|
{--anchor offset y
|
|
type = "range",
|
|
get = function() return Details.tooltip.anchor_offset[2] end,
|
|
set = function(self, fixedparam, value)
|
|
Details.tooltip.anchor_offset[2] = value
|
|
afterUpdate()
|
|
end,
|
|
min = -100,
|
|
max = 100,
|
|
step = 1,
|
|
name = Loc ["STRING_OPTIONS_TOOLTIPS_OFFSETY"],
|
|
desc = Loc ["STRING_OPTIONS_TOOLTIPS_OFFSETY_DESC"],
|
|
},
|
|
|
|
|
|
}
|
|
|
|
sectionFrame.sectionOptions = sectionOptions
|
|
sectionOptions.always_boxfirst = true
|
|
DF:BuildMenu(sectionFrame, sectionOptions, startX, startY-20, heightSize, false, options_text_template, options_dropdown_template, options_switch_template, true, options_slider_template, options_button_template)
|
|
refreshToggleAnchor()
|
|
end
|
|
|
|
tinsert(Details.optionsSection, buildSection)
|
|
end
|
|
|
|
|
|
-- ~11 ~datafeed
|
|
do
|
|
local buildSection = function(sectionFrame)
|
|
|
|
local onSelectMinimapAction = function(_, _, option)
|
|
Details.minimap.onclick_what_todo = option
|
|
afterUpdate()
|
|
end
|
|
local menu = {
|
|
{value = 1, label = Loc ["STRING_OPTIONS_MINIMAP_ACTION1"], onclick = onSelectMinimapAction, icon = [[Interface\FriendsFrame\FriendsFrameScrollIcon]]},
|
|
{value = 2, label = Loc ["STRING_OPTIONS_MINIMAP_ACTION2"], onclick = onSelectMinimapAction, icon = [[Interface\Buttons\UI-GuildButton-PublicNote-Up]], iconcolor = {1, .8, 0, 1}},
|
|
{value = 3, label = Loc ["STRING_OPTIONS_MINIMAP_ACTION3"], onclick = onSelectMinimapAction, icon = [[Interface\Buttons\UI-CheckBox-Up]], texcoord = {0.1, 0.9, 0.1, 0.9}},
|
|
}
|
|
local buildMiniMapButtonAction = function()
|
|
return menu
|
|
end
|
|
|
|
local onSelectTimeAbbreviation = function(_, _, abbreviationtype)
|
|
Details.tooltip.abbreviation = abbreviationtype
|
|
Details:BrokerTick()
|
|
afterUpdate()
|
|
end
|
|
local icon = [[Interface\COMMON\mini-hourglass]]
|
|
local iconcolor = {1, 1, 1, .5}
|
|
local iconsize = {14, 14}
|
|
local abbreviationOptions = {
|
|
{value = 1, label = Loc ["STRING_OPTIONS_PS_ABBREVIATE_NONE"], desc = Loc ["STRING_EXAMPLE"] .. ": 305.500 -> 305500", onclick = onSelectTimeAbbreviation, icon = icon, iconcolor = iconcolor, iconsize = iconsize}, --, desc = ""
|
|
{value = 2, label = Loc ["STRING_OPTIONS_PS_ABBREVIATE_TOK"], desc = Loc ["STRING_EXAMPLE"] .. ": 305.500 -> 305.5K", onclick = onSelectTimeAbbreviation, icon = icon, iconcolor = iconcolor, iconsize = iconsize}, --, desc = ""
|
|
{value = 3, label = Loc ["STRING_OPTIONS_PS_ABBREVIATE_TOK2"], desc = Loc ["STRING_EXAMPLE"] .. ": 305.500 -> 305K", onclick = onSelectTimeAbbreviation, icon = icon, iconcolor = iconcolor, iconsize = iconsize}, --, desc = ""
|
|
{value = 4, label = Loc ["STRING_OPTIONS_PS_ABBREVIATE_TOK0"], desc = Loc ["STRING_EXAMPLE"] .. ": 25.305.500 -> 25M", onclick = onSelectTimeAbbreviation, icon = icon, iconcolor = iconcolor, iconsize = iconsize}, --, desc = ""
|
|
{value = 5, label = Loc ["STRING_OPTIONS_PS_ABBREVIATE_TOKMIN"], desc = Loc ["STRING_EXAMPLE"] .. ": 305.500 -> 305.5k", onclick = onSelectTimeAbbreviation, icon = icon, iconcolor = iconcolor, iconsize = iconsize}, --, desc = ""
|
|
{value = 6, label = Loc ["STRING_OPTIONS_PS_ABBREVIATE_TOK2MIN"], desc = Loc ["STRING_EXAMPLE"] .. ": 305.500 -> 305k", onclick = onSelectTimeAbbreviation, icon = icon, iconcolor = iconcolor, iconsize = iconsize}, --, desc = ""
|
|
{value = 7, label = Loc ["STRING_OPTIONS_PS_ABBREVIATE_TOK0MIN"], desc = Loc ["STRING_EXAMPLE"] .. ": 25.305.500 -> 25m", onclick = onSelectTimeAbbreviation, icon = icon, iconcolor = iconcolor, iconsize = iconsize}, --, desc = ""
|
|
{value = 8, label = Loc ["STRING_OPTIONS_PS_ABBREVIATE_COMMA"], desc = Loc ["STRING_EXAMPLE"] .. ": 25305500 -> 25.305.500", onclick = onSelectTimeAbbreviation, icon = icon, iconcolor = iconcolor, iconsize = iconsize} --, desc = ""
|
|
}
|
|
local buildAbbreviationMenu = function()
|
|
return abbreviationOptions
|
|
end
|
|
|
|
local sectionOptions = {
|
|
{type = "blank"},
|
|
{type = "label", get = function() return Loc ["STRING_OPTIONS_MINIMAP_ANCHOR"] end, text_template = subSectionTitleTextTemplate},
|
|
|
|
{--minimap icon enabled
|
|
type = "toggle",
|
|
get = function() return not Details.minimap.hide end,
|
|
set = function(self, fixedparam, value)
|
|
Details.minimap.hide = not value
|
|
|
|
local LDBIcon = LDB and LibStub("LibDBIcon-1.0", true)
|
|
|
|
LDBIcon:Refresh("Details", Details.minimap)
|
|
if (Details.minimap.hide) then
|
|
LDBIcon:Hide("Details")
|
|
else
|
|
LDBIcon:Show("Details")
|
|
end
|
|
|
|
afterUpdate()
|
|
end,
|
|
name = Loc ["STRING_OPTIONS_MINIMAP"],
|
|
desc = Loc ["STRING_OPTIONS_MINIMAP_DESC"],
|
|
},
|
|
|
|
{--minimap button on click
|
|
type = "select",
|
|
get = function() return Details.minimap.onclick_what_todo end,
|
|
values = function()
|
|
return buildMiniMapButtonAction()
|
|
end,
|
|
name = Loc ["STRING_OPTIONS_MINIMAP_ACTION"],
|
|
desc = Loc ["STRING_OPTIONS_MINIMAP_ACTION_DESC"],
|
|
},
|
|
|
|
{type = "blank"},
|
|
{type = "label", get = function() return Loc ["STRING_OPTIONS_DATABROKER"] end, text_template = subSectionTitleTextTemplate},
|
|
|
|
{--broker text
|
|
type = "textentry",
|
|
get = function() return Details.data_broker_text or "" end,
|
|
func = function(self, _, text)
|
|
local brokerText = text or ""
|
|
Details:SetDataBrokerText (brokerText)
|
|
afterUpdate()
|
|
end,
|
|
name = Loc ["STRING_OPTIONS_DATABROKER_TEXT"],
|
|
desc = Loc ["STRING_OPTIONS_DATABROKER_TEXT1_DESC"],
|
|
},
|
|
|
|
{--open broker text editor
|
|
type = "execute",
|
|
func = function(self)
|
|
Details:OpenBrokerTextEditor()
|
|
end,
|
|
icontexture = [[Interface\HELPFRAME\OpenTicketIcon]],
|
|
icontexcoords = {.1, .9, .1, .9},
|
|
name = Loc ["STRING_OPTIONS_OPENBROKER"],
|
|
desc = Loc ["STRING_OPTIONS_OPEN_ROWTEXT_EDITOR"],
|
|
},
|
|
|
|
{--broker text format
|
|
type = "select",
|
|
get = function() return Details.minimap.text_format end,
|
|
values = function()
|
|
return buildAbbreviationMenu()
|
|
end,
|
|
name = Loc ["STRING_OPTIONS_PS_ABBREVIATE"],
|
|
desc = Loc ["STRING_OPTIONS_PS_ABBREVIATE_DESC"],
|
|
},
|
|
|
|
{type = "blank"},
|
|
{type = "label", get = function() return Loc ["STRING_OPTIONS_ILVL_TRACKER"] end, text_template = subSectionTitleTextTemplate},
|
|
|
|
{--item level tracker enabled
|
|
type = "toggle",
|
|
get = function() return Details.ilevel:IsTrackerEnabled() end,
|
|
set = function(self, fixedparam, value)
|
|
Details.ilevel:TrackItemLevel(value)
|
|
afterUpdate()
|
|
end,
|
|
name = Loc ["STRING_ENABLED"],
|
|
desc = Loc ["STRING_OPTIONS_ILVL_TRACKER_DESC"],
|
|
},
|
|
|
|
{type = "blank"},
|
|
{type = "label", get = function() return Loc ["STRING_OPTIONS_REPORT_ANCHOR"] end, text_template = subSectionTitleTextTemplate},
|
|
|
|
{--enabled heal spell links
|
|
type = "toggle",
|
|
get = function() return Details.report_heal_links end,
|
|
set = function(self, fixedparam, value)
|
|
Details.report_heal_links = value
|
|
afterUpdate()
|
|
end,
|
|
name = Loc ["STRING_OPTIONS_REPORT_HEALLINKS"],
|
|
desc = Loc ["STRING_OPTIONS_REPORT_HEALLINKS_DESC"],
|
|
},
|
|
}
|
|
|
|
sectionFrame.sectionOptions = sectionOptions
|
|
sectionOptions.always_boxfirst = true
|
|
DF:BuildMenu(sectionFrame, sectionOptions, startX, startY-20, heightSize, false, options_text_template, options_dropdown_template, options_switch_template, true, options_slider_template, options_button_template)
|
|
end
|
|
|
|
tinsert(Details.optionsSection, buildSection)
|
|
end
|
|
|
|
|
|
-- ~12 ~wallpaper
|
|
do
|
|
local buildSection = function(sectionFrame)
|
|
|
|
--callback from the image editor
|
|
local callmeback = function(width, height, overlayColor, alpha, texCoords)
|
|
editInstanceSetting(currentInstance, "InstanceWallpaper", nil, nil, alpha, texCoords, width, height, overlayColor)
|
|
sectionFrame:UpdateWallpaperInfo()
|
|
afterUpdate()
|
|
end
|
|
|
|
--select wallpaper
|
|
local onSelectSecTexture = function(self, instance, texturePath)
|
|
|
|
local textureOptions = sectionFrame.wallpaperOptions
|
|
local selectedTextureOption = texturePath
|
|
|
|
if (texturePath:find("TALENTFRAME")) then
|
|
editInstanceSetting(currentInstance, "InstanceWallpaper", texturePath, nil, nil, {0, 1, 0, 0.703125}, nil, nil, {1, 1, 1, 1})
|
|
afterUpdate()
|
|
|
|
if (_G.DetailsImageEdit and _G.DetailsImageEdit:IsShown()) then
|
|
local wp = currentInstance.wallpaper
|
|
if (wp.anchor == "all") then
|
|
DF:ImageEditor (callmeback, wp.texture, wp.texcoord, wp.overlay, currentInstance.baseframe.wallpaper:GetWidth(), currentInstance.baseframe.wallpaper:GetHeight(), nil, wp.alpha, true)
|
|
else
|
|
DF:ImageEditor (callmeback, wp.texture, wp.texcoord, wp.overlay, currentInstance.baseframe.wallpaper:GetWidth(), currentInstance.baseframe.wallpaper:GetHeight(), nil, wp.alpha)
|
|
end
|
|
end
|
|
|
|
elseif (texturePath:find("EncounterJournal")) then
|
|
|
|
editInstanceSetting(currentInstance, "InstanceWallpaper", texturePath, nil, nil, {0.06, 0.68, 0.1, 0.57}, nil, nil, {1, 1, 1, 1})
|
|
afterUpdate()
|
|
|
|
if (_G.DetailsImageEdit and _G.DetailsImageEdit:IsShown()) then
|
|
local wp = currentInstance.wallpaper
|
|
if (wp.anchor == "all") then
|
|
DF:ImageEditor (callmeback, wp.texture, wp.texcoord, wp.overlay, currentInstance.baseframe.wallpaper:GetWidth(), currentInstance.baseframe.wallpaper:GetHeight(), nil, wp.alpha, true)
|
|
else
|
|
DF:ImageEditor (callmeback, wp.texture, wp.texcoord, wp.overlay, currentInstance.baseframe.wallpaper:GetWidth(), currentInstance.baseframe.wallpaper:GetHeight(), nil, wp.alpha)
|
|
end
|
|
end
|
|
|
|
else
|
|
local texCoords = selectedTextureOption and selectedTextureOption.texcoord
|
|
editInstanceSetting(currentInstance, "InstanceWallpaper", texturePath, nil, nil, texCoords or {0, 1, 0, 1}, nil, nil, {1, 1, 1, 1})
|
|
afterUpdate()
|
|
|
|
if (_G.DetailsImageEdit and _G.DetailsImageEdit:IsShown()) then
|
|
local wp = currentInstance.wallpaper
|
|
if (wp.anchor == "all") then
|
|
DF:ImageEditor (callmeback, wp.texture, wp.texcoord, wp.overlay, currentInstance.baseframe.wallpaper:GetWidth(), currentInstance.baseframe.wallpaper:GetHeight(), nil, wp.alpha, true)
|
|
else
|
|
DF:ImageEditor (callmeback, wp.texture, wp.texcoord, wp.overlay, currentInstance.baseframe.wallpaper:GetWidth(), currentInstance.baseframe.wallpaper:GetHeight(), nil, wp.alpha)
|
|
end
|
|
end
|
|
end
|
|
|
|
sectionFrame:UpdateWallpaperInfo()
|
|
end
|
|
|
|
sectionFrame.wallpaperOptions = {
|
|
{value = [[Interface\ACHIEVEMENTFRAME\UI-Achievement-HorizontalShadow]], label = "Horizontal Gradient", onclick = onSelectSecTexture, icon = [[Interface\ACHIEVEMENTFRAME\UI-Achievement-HorizontalShadow]], texcoord = nil},
|
|
{value = [[Interface\ACHIEVEMENTFRAME\UI-Achievement-Parchment-Highlight]], label = "Golden Highlight", onclick = onSelectSecTexture, icon = [[Interface\ACHIEVEMENTFRAME\UI-Achievement-Parchment-Highlight]], texcoord = {0.35, 0.655, 0.0390625, 0.859375}},
|
|
{value = [[Interface\ACHIEVEMENTFRAME\UI-Achievement-Stat-Buttons]], label = "Gray Gradient", onclick = onSelectSecTexture, icon = [[Interface\ACHIEVEMENTFRAME\UI-Achievement-Stat-Buttons]], texcoord = {0, 1, 97/128, 1}},
|
|
{value = [[Interface\ACHIEVEMENTFRAME\UI-Achievement-Borders]], label = "Orange Gradient", onclick = onSelectSecTexture, icon = [[Interface\ACHIEVEMENTFRAME\UI-Achievement-Borders]], texcoord = {160/512, 345/512, 80/256, 130/256}},
|
|
{value = [[Interface\ARCHEOLOGY\Arch-BookCompletedLeft]], label = "Book Wallpaper", onclick = onSelectSecTexture, icon = [[Interface\ARCHEOLOGY\Arch-BookCompletedLeft]], texcoord = nil},
|
|
{value = [[Interface\ARCHEOLOGY\Arch-BookItemLeft]], label = "Book Wallpaper 2", onclick = onSelectSecTexture, icon = [[Interface\ARCHEOLOGY\Arch-BookItemLeft]], texcoord = nil},
|
|
{value = [[Interface\TALENTFRAME\bg-deathknight-blood]], label = "Blood", onclick = onSelectSecTexture, icon = [[Interface\ICONS\Spell_Deathknight_BloodPresence]], texcoord = nil},
|
|
{value = [[Interface\TALENTFRAME\bg-deathknight-frost]], label = "Frost", onclick = onSelectSecTexture, icon = [[Interface\ICONS\Spell_Deathknight_FrostPresence]], texcoord = nil},
|
|
{value = [[Interface\TALENTFRAME\bg-deathknight-unholy]], label = "Unholy", onclick = onSelectSecTexture, icon = [[Interface\ICONS\Spell_Deathknight_UnholyPresence]], texcoord = nil},
|
|
{value = [[Interface\TALENTFRAME\bg-druid-bear]], label = "Guardian", onclick = onSelectSecTexture, icon = [[Interface\ICONS\ability_racial_bearform]], texcoord = nil},
|
|
{value = [[Interface\TALENTFRAME\bg-druid-restoration]], label = "Restoration", onclick = onSelectSecTexture, icon = [[Interface\ICONS\spell_nature_healingtouch]], texcoord = nil},
|
|
{value = [[Interface\TALENTFRAME\bg-druid-cat]], label = "Feral", onclick = onSelectSecTexture, icon = [[Interface\ICONS\spell_shadow_vampiricaura]], texcoord = nil},
|
|
{value = [[Interface\TALENTFRAME\bg-druid-balance]], label = "Balance", onclick = onSelectSecTexture, icon = [[Interface\ICONS\spell_nature_starfall]], texcoord = nil},
|
|
{value = [[Interface\TALENTFRAME\bg-hunter-beastmaster]], label = "Beast Mastery", onclick = onSelectSecTexture, icon = [[Interface\ICONS\ability_hunter_bestialdiscipline]], texcoord = nil},
|
|
{value = [[Interface\TALENTFRAME\bg-hunter-marksman]], label = "Marksmanship", onclick = onSelectSecTexture, icon = [[Interface\ICONS\ability_hunter_focusedaim]], texcoord = nil},
|
|
{value = [[Interface\TALENTFRAME\bg-hunter-survival]], label = "Survival", onclick = onSelectSecTexture, icon = [[Interface\ICONS\ability_hunter_camouflage]], texcoord = nil},
|
|
{value = [[Interface\TALENTFRAME\bg-mage-arcane]], label = "Arcane", onclick = onSelectSecTexture, icon = [[Interface\ICONS\spell_holy_magicalsentry]], texcoord = nil},
|
|
{value = [[Interface\TALENTFRAME\bg-mage-fire]], label = "Fire", onclick = onSelectSecTexture, icon = [[Interface\ICONS\spell_fire_firebolt02]], texcoord = nil},
|
|
{value = [[Interface\TALENTFRAME\bg-mage-frost]], label = "Frost", onclick = onSelectSecTexture, icon = [[Interface\ICONS\spell_frost_frostbolt02]], texcoord = nil},
|
|
{value = [[Interface\TALENTFRAME\bg-monk-brewmaster]], label = "Brewmaster", onclick = onSelectSecTexture, icon = [[Interface\ICONS\monk_stance_drunkenox]], texcoord = nil},
|
|
{value = [[Interface\TALENTFRAME\bg-monk-mistweaver]], label = "Mistweaver", onclick = onSelectSecTexture, icon = [[Interface\ICONS\monk_stance_wiseserpent]], texcoord = nil},
|
|
{value = [[Interface\TALENTFRAME\bg-monk-battledancer]], label = "Windwalker", onclick = onSelectSecTexture, icon = [[Interface\ICONS\monk_stance_whitetiger]], texcoord = nil},
|
|
{value = [[Interface\TALENTFRAME\bg-paladin-holy]], label = "Holy", onclick = onSelectSecTexture, icon = [[Interface\ICONS\spell_holy_holybolt]], texcoord = nil},
|
|
{value = [[Interface\TALENTFRAME\bg-paladin-protection]], label = "Protection", onclick = onSelectSecTexture, icon = [[Interface\ICONS\ability_paladin_shieldofthetemplar]], texcoord = nil},
|
|
{value = [[Interface\TALENTFRAME\bg-paladin-retribution]], label = "Retribution", onclick = onSelectSecTexture, icon = [[Interface\ICONS\spell_holy_auraoflight]], texcoord = nil},
|
|
{value = [[Interface\TALENTFRAME\bg-priest-discipline]], label = "Discipline", onclick = onSelectSecTexture, icon = [[Interface\ICONS\spell_holy_powerwordshield]], texcoord = nil},
|
|
{value = [[Interface\TALENTFRAME\bg-priest-holy]], label = "Holy", onclick = onSelectSecTexture, icon = [[Interface\ICONS\spell_holy_guardianspirit]], texcoord = nil},
|
|
{value = [[Interface\TALENTFRAME\bg-priest-shadow]], label = "Shadow", onclick = onSelectSecTexture, icon = [[Interface\ICONS\spell_shadow_shadowwordpain]], texcoord = nil},
|
|
{value = [[Interface\TALENTFRAME\bg-rogue-assassination]], label = "Assassination", onclick = onSelectSecTexture, icon = [[Interface\ICONS\ability_rogue_eviscerate]], texcoord = nil},
|
|
{value = [[Interface\TALENTFRAME\bg-rogue-combat]], label = "Combat", onclick = onSelectSecTexture, icon = [[Interface\ICONS\ability_backstab]], texcoord = nil},
|
|
{value = [[Interface\TALENTFRAME\bg-rogue-subtlety]], label = "Subtlety", onclick = onSelectSecTexture, icon = [[Interface\ICONS\ability_stealth]], texcoord = nil},
|
|
{value = [[Interface\TALENTFRAME\bg-shaman-elemental]], label = "Elemental", onclick = onSelectSecTexture, icon = [[Interface\ICONS\spell_nature_lightning]], texcoord = nil},
|
|
{value = [[Interface\TALENTFRAME\bg-shaman-enhancement]], label = "Enhancement", onclick = onSelectSecTexture, icon = [[Interface\ICONS\spell_nature_lightningshield]], texcoord = nil},
|
|
{value = [[Interface\TALENTFRAME\bg-shaman-restoration]], label = "Restoration", onclick = onSelectSecTexture, icon = [[Interface\ICONS\spell_nature_magicimmunity]], texcoord = nil},
|
|
{value = [[Interface\TALENTFRAME\bg-warlock-affliction]], label = "Affliction", onclick = onSelectSecTexture, icon = [[Interface\ICONS\spell_shadow_deathcoil]], texcoord = nil},
|
|
{value = [[Interface\TALENTFRAME\bg-warlock-demonology]], label = "Demonology", onclick = onSelectSecTexture, icon = [[Interface\ICONS\spell_shadow_metamorphosis]], texcoord = nil},
|
|
{value = [[Interface\TALENTFRAME\bg-warlock-destruction]], label = "Destruction", onclick = onSelectSecTexture, icon = [[Interface\ICONS\spell_shadow_rainoffire]], texcoord = nil},
|
|
{value = [[Interface\TALENTFRAME\bg-warrior-arms]], label = "Arms", onclick = onSelectSecTexture, icon = [[Interface\ICONS\ability_warrior_savageblow]], texcoord = nil},
|
|
{value = [[Interface\TALENTFRAME\bg-warrior-fury]], label = "Fury", onclick = onSelectSecTexture, icon = [[Interface\ICONS\ability_warrior_innerrage]], texcoord = nil},
|
|
{value = [[Interface\TALENTFRAME\bg-warrior-protection]], label = "Protection", onclick = onSelectSecTexture, icon = [[Interface\ICONS\ability_warrior_defensivestance]], texcoord = nil},
|
|
}
|
|
|
|
--create preview
|
|
local previewX, previewY = 460, startY-20
|
|
|
|
local preview = sectionFrame:CreateTexture(nil, "overlay")
|
|
preview:SetDrawLayer("artwork", 3)
|
|
preview:SetSize(256, 128)
|
|
preview:SetPoint("topleft", sectionFrame, "topleft", previewX, previewY)
|
|
|
|
--background white
|
|
local whiteBackground = sectionFrame:CreateTexture(nil, "overlay")
|
|
whiteBackground:SetDrawLayer("background")
|
|
whiteBackground:SetSize(255, 128)
|
|
whiteBackground:SetPoint("topleft", sectionFrame, "topleft", previewX, previewY)
|
|
whiteBackground:SetTexture(1, 1, 1, 1)
|
|
|
|
--background grid
|
|
local icon1 = DF:NewImage(sectionFrame, nil, 128, 64, "artwork", nil, nil, "$parentIcon1")
|
|
icon1:SetTexture("Interface\\AddOns\\Details\\images\\icons")
|
|
icon1:SetPoint("topleft", sectionFrame, "topleft", previewX, previewY)
|
|
icon1:SetDrawLayer("artwork", 1)
|
|
icon1:SetTexCoord(0.337890625, 0.5859375, 0.59375, 0.716796875-0.0009765625) --173 304 300 367
|
|
|
|
local icon2 = DF:NewImage(sectionFrame, nil, 128, 64, "artwork", nil, nil, "$parentIcon2")
|
|
icon2:SetTexture("Interface\\AddOns\\Details\\images\\icons")
|
|
icon2:SetPoint("left", icon1.widget, "right", -1, 0)
|
|
icon2:SetDrawLayer("artwork", 1)
|
|
icon2:SetTexCoord(0.337890625, 0.5859375, 0.59375, 0.716796875-0.0009765625) --173 304 300 367
|
|
|
|
local icon3 = DF:NewImage(sectionFrame, nil, 128, 64, "artwork", nil, nil, "$parentIcon3")
|
|
icon3:SetTexture("Interface\\AddOns\\Details\\images\\icons")
|
|
icon3:SetPoint("top", icon1.widget, "bottom")
|
|
icon3:SetDrawLayer("artwork", 1)
|
|
icon3:SetTexCoord(0.337890625, 0.5859375, 0.59375+0.0009765625, 0.716796875) --173 304 300 367
|
|
|
|
local icon4 = DF:NewImage(sectionFrame, nil, 128, 64, "artwork", nil, nil, "$parentIcon4")
|
|
icon4:SetTexture("Interface\\AddOns\\Details\\images\\icons")
|
|
icon4:SetPoint("left", icon3.widget, "right", -1, 0)
|
|
icon4:SetDrawLayer("artwork", 1)
|
|
icon4:SetTexCoord(0.337890625, 0.5859375, 0.59375+0.0009765625, 0.716796875) --173 304 300 367
|
|
|
|
icon1:SetVertexColor(.15, .15, .15, 1)
|
|
icon2:SetVertexColor(.15, .15, .15, 1)
|
|
icon3:SetVertexColor(.15, .15, .15, 1)
|
|
icon4:SetVertexColor(.15, .15, .15, 1)
|
|
|
|
--corners
|
|
local w, h = 20, 20
|
|
|
|
local L1 = sectionFrame:CreateTexture(nil, "overlay")
|
|
L1:SetPoint("topleft", preview, "topleft")
|
|
L1:SetTexture("Interface\\AddOns\\Details\\images\\icons")
|
|
L1:SetTexCoord(0.13671875+0.0009765625, 0.234375, 0.29296875, 0.1953125+0.0009765625)
|
|
L1:SetSize(w, h)
|
|
L1:SetDrawLayer("overlay", 2)
|
|
L1:SetVertexColor(1, 1, 1, .8)
|
|
|
|
local L2 = sectionFrame:CreateTexture(nil, "overlay")
|
|
L2:SetPoint("bottomleft", preview, "bottomleft")
|
|
L2:SetTexture("Interface\\AddOns\\Details\\images\\icons")
|
|
L2:SetTexCoord(0.13671875+0.0009765625, 0.234375, 0.1953125+0.0009765625, 0.29296875)
|
|
L2:SetSize(w, h)
|
|
L2:SetDrawLayer("overlay", 2)
|
|
L2:SetVertexColor(1, 1, 1, .8)
|
|
|
|
local L3 = sectionFrame:CreateTexture(nil, "overlay")
|
|
L3:SetPoint("bottomright", preview, "bottomright", 0, 0)
|
|
L3:SetTexture("Interface\\AddOns\\Details\\images\\icons")
|
|
L3:SetTexCoord(0.234375, 0.13671875-0.0009765625, 0.1953125+0.0009765625, 0.29296875)
|
|
L3:SetSize(w, h)
|
|
L3:SetDrawLayer("overlay", 5)
|
|
L3:SetVertexColor(1, 1, 1, .8)
|
|
|
|
local L4 = sectionFrame:CreateTexture(nil, "overlay")
|
|
L4:SetPoint("topright", preview, "topright", 0, 0)
|
|
L4:SetTexture("Interface\\AddOns\\Details\\images\\icons")
|
|
L4:SetTexCoord(0.234375, 0.13671875-0.0009765625, 0.29296875, 0.1953125+0.0009765625)
|
|
L4:SetSize(w, h)
|
|
L4:SetDrawLayer("overlay", 5)
|
|
L4:SetVertexColor(1, 1, 1, .8)
|
|
|
|
--update preview
|
|
function sectionFrame:UpdateWallpaperInfo()
|
|
local wallpaper = currentInstance.wallpaper
|
|
|
|
preview:SetTexture(wallpaper.texture)
|
|
preview:SetTexCoord(unpack(wallpaper.texcoord))
|
|
preview:SetVertexColor(unpack(wallpaper.overlay))
|
|
preview:SetAlpha(wallpaper.alpha)
|
|
end
|
|
|
|
--wallpaper alignment
|
|
local onSelectAnchor = function(_, instance, anchor)
|
|
editInstanceSetting(currentInstance, "InstanceWallpaper", nil, anchor)
|
|
afterUpdate()
|
|
sectionFrame:UpdateWallpaperInfo()
|
|
end
|
|
|
|
local anchorMenu = {
|
|
{value = "all", label = "Fill", onclick = onSelectAnchor},
|
|
{value = "titlebar", label = "Full Body", onclick = onSelectAnchor},
|
|
{value = "center", label = "Center", onclick = onSelectAnchor},
|
|
{value = "stretchLR", label = "Stretch Left-Right", onclick = onSelectAnchor},
|
|
{value = "stretchTB", label = "Stretch Top-Bottom", onclick = onSelectAnchor},
|
|
{value = "topleft", label = "Top Left", onclick = onSelectAnchor},
|
|
{value = "bottomleft", label = "Bottom Left", onclick = onSelectAnchor},
|
|
{value = "topright", label = "Top Right", onclick = onSelectAnchor},
|
|
{value = "bottomright", label = "Bottom Right", onclick = onSelectAnchor},
|
|
}
|
|
local buildWallpaperAnchorMenu = function()
|
|
return anchorMenu
|
|
end
|
|
|
|
--open image editor
|
|
local startImageEdit = function()
|
|
if (not currentInstance.wallpaper.texture) then
|
|
Details:Msg("no texture to edit.")
|
|
return
|
|
end
|
|
|
|
local wallpaper = currentInstance.wallpaper
|
|
|
|
if (wallpaper.texture:find("TALENTFRAME")) then
|
|
if (wallpaper.anchor == "all") then
|
|
DF:ImageEditor (callmeback, wallpaper.texture, wallpaper.texcoord, wallpaper.overlay, currentInstance.baseframe.wallpaper:GetWidth(), currentInstance.baseframe.wallpaper:GetHeight(), nil, wallpaper.alpha, true)
|
|
else
|
|
DF:ImageEditor (callmeback, wallpaper.texture, wallpaper.texcoord, wallpaper.overlay, currentInstance.baseframe.wallpaper:GetWidth(), currentInstance.baseframe.wallpaper:GetHeight(), nil, wallpaper.alpha)
|
|
end
|
|
else
|
|
if (wallpaper.anchor == "all") then
|
|
DF:ImageEditor (callmeback, wallpaper.texture, wallpaper.texcoord, wallpaper.overlay, currentInstance.baseframe.wallpaper:GetWidth(), currentInstance.baseframe.wallpaper:GetHeight(), nil, wallpaper.alpha, true)
|
|
else
|
|
DF:ImageEditor (callmeback, wallpaper.texture, wallpaper.texcoord, wallpaper.overlay, currentInstance.baseframe.wallpaper:GetWidth(), currentInstance.baseframe.wallpaper:GetHeight(), nil, wallpaper.alpha)
|
|
end
|
|
end
|
|
end
|
|
|
|
--open image to use as wallpaper
|
|
local loadImage = function()
|
|
if (not DetailsLoadWallpaperImage) then
|
|
|
|
local f = CreateFrame("frame", "DetailsLoadWallpaperImage", UIParent, "BackdropTemplate")
|
|
f:SetPoint("center", UIParent, "center")
|
|
f:SetFrameStrata("FULLSCREEN")
|
|
f:SetSize(550, 170)
|
|
f:EnableMouse(true)
|
|
f:SetMovable(true)
|
|
f:SetScript("OnMouseDown", function(self, button)
|
|
if (self.isMoving) then
|
|
return
|
|
end
|
|
if (button == "RightButton") then
|
|
self:Hide()
|
|
else
|
|
self:StartMoving()
|
|
self.isMoving = true
|
|
end
|
|
end)
|
|
f:SetScript("OnMouseUp", function(self, button)
|
|
if (self.isMoving and button == "LeftButton") then
|
|
self:StopMovingOrSizing()
|
|
self.isMoving = nil
|
|
end
|
|
end)
|
|
|
|
DF:ApplyStandardBackdrop(f)
|
|
DF:CreateTitleBar(f, "Load Your Image") --localize-me
|
|
|
|
tinsert(_G.UISpecialFrames, "DetailsLoadWallpaperImage")
|
|
|
|
local t = f:CreateFontString(nil, "overlay", "GameFontNormal")
|
|
t:SetText(Loc ["STRING_OPTIONS_WALLPAPER_LOAD_EXCLAMATION"])
|
|
t:SetPoint("topleft", f, "topleft", 15, -25)
|
|
t:SetJustifyH("left")
|
|
f.t = t
|
|
|
|
local filename = f:CreateFontString(nil, "overlay", "GameFontHighlightLeft")
|
|
filename:SetPoint("topleft", f, "topleft", 15, -128)
|
|
filename:SetText(Loc ["STRING_OPTIONS_WALLPAPER_LOAD_FILENAME"])
|
|
|
|
local editbox = DF:NewTextEntry(f, nil, "$parentFileName", "FileName", 160, 20, function() end, nil, nil, nil, nil, options_dropdown_template)
|
|
editbox:SetPoint("left", filename, "right", 2, 0)
|
|
editbox.tooltip = Loc ["STRING_OPTIONS_WALLPAPER_LOAD_FILENAME_DESC"]
|
|
|
|
local okey_func = function()
|
|
local text = editbox:GetText()
|
|
if (text == "") then
|
|
return
|
|
end
|
|
|
|
local instance = _G.DetailsOptionsWindow.instance
|
|
local path = "Interface\\" .. text
|
|
editbox:ClearFocus()
|
|
instance:InstanceWallpaper (path, "all", 0.50, {0, 1, 0, 1}, 256, 256, {1, 1, 1, 1})
|
|
Details:OpenOptionsWindow (instance)
|
|
sectionFrame:UpdateWallpaperInfo()
|
|
end
|
|
local okey = DF:NewButton(f, _, "$parentOkeyButton", nil, 105, 20, okey_func, nil, nil, nil, Loc ["STRING_OPTIONS_WALLPAPER_LOAD_OKEY"], 1, options_button_template)
|
|
okey:SetPoint("left", editbox.widget, "right", 2, 0)
|
|
|
|
local throubleshoot_func = function()
|
|
if (t:GetText() == Loc ["STRING_OPTIONS_WALLPAPER_LOAD_EXCLAMATION"]) then
|
|
t:SetText(Loc ["STRING_OPTIONS_WALLPAPER_LOAD_TROUBLESHOOT_TEXT"])
|
|
else
|
|
_G.DetailsLoadWallpaperImage.t:SetText(Loc ["STRING_OPTIONS_WALLPAPER_LOAD_EXCLAMATION"])
|
|
end
|
|
end
|
|
local throubleshoot = DF:NewButton(f, _, "$parentThroubleshootButton", nil, 105, 20, throubleshoot_func, nil, nil, nil, Loc ["STRING_OPTIONS_WALLPAPER_LOAD_TROUBLESHOOT"], 1, options_button_template)
|
|
throubleshoot:SetPoint("left", okey, "right", 2, 0)
|
|
--throubleshoot:InstallCustomTexture()
|
|
end
|
|
|
|
_G.DetailsLoadWallpaperImage.t:SetText(Loc ["STRING_OPTIONS_WALLPAPER_LOAD_EXCLAMATION"])
|
|
_G.DetailsLoadWallpaperImage:Show()
|
|
end
|
|
|
|
local sectionOptions = {
|
|
{type = "label", get = function() return Loc["STRING_OPTIONS_WALLPAPER_ANCHOR"] end, text_template = subSectionTitleTextTemplate},
|
|
|
|
{--enable wallpaper
|
|
type = "toggle",
|
|
get = function() return currentInstance.wallpaper.enabled end,
|
|
set = function(self, fixedparam, value)
|
|
|
|
currentInstance.wallpaper.enabled = value
|
|
|
|
if (value) then
|
|
--first time using a wallpaper
|
|
if (not currentInstance.wallpaper.texture) then
|
|
currentInstance.wallpaper.texture = "Interface\\AddOns\\Details\\images\\background"
|
|
end
|
|
editInstanceSetting(currentInstance, "InstanceWallpaper", true)
|
|
else
|
|
editInstanceSetting(currentInstance, "InstanceWallpaper", false)
|
|
end
|
|
|
|
afterUpdate()
|
|
|
|
sectionFrame:UpdateWallpaperInfo()
|
|
end,
|
|
name = Loc ["STRING_ENABLED"],
|
|
desc = Loc ["STRING_OPTIONS_ILVL_TRACKER_DESC"],
|
|
},
|
|
|
|
{--select wallpaper
|
|
type = "select",
|
|
get = function()
|
|
return currentInstance.wallpaper.texture or ""
|
|
end,
|
|
values = function()
|
|
return sectionFrame.wallpaperOptions
|
|
end,
|
|
name = Loc ["STRING_OPTIONS_WP_GROUP2"],
|
|
desc = Loc ["STRING_OPTIONS_WP_GROUP2_DESC"],
|
|
},
|
|
|
|
{--align wallpaper
|
|
type = "select",
|
|
get = function() return currentInstance.wallpaper.anchor or "" end,
|
|
values = function()
|
|
return buildWallpaperAnchorMenu()
|
|
end,
|
|
name = Loc ["STRING_OPTIONS_WP_ALIGN"],
|
|
desc = Loc ["STRING_OPTIONS_WP_ALIGN"],
|
|
},
|
|
|
|
{--wallpaper level
|
|
type = "range",
|
|
get = function() return currentInstance.wallpaper.level end, --default 2
|
|
set = function(self, fixedparam, value)
|
|
editInstanceSetting(currentInstance, "SetInstanceWallpaperLevel", value)
|
|
afterUpdate()
|
|
end,
|
|
min = 0,
|
|
max = 3,
|
|
step = 1,
|
|
name = "Level",
|
|
desc = "Change where the wallpaper is placed.", --localize-me
|
|
},
|
|
|
|
{--edit wallpaper
|
|
type = "execute",
|
|
func = function(self)
|
|
startImageEdit()
|
|
end,
|
|
icontexture = [[Interface\AddOns\Details\images\icons]],
|
|
icontexcoords = {469/512, 505/512, 290/512, 322/512},
|
|
name = Loc ["STRING_OPTIONS_EDITIMAGE"],
|
|
desc = Loc ["STRING_OPTIONS_EDITIMAGE"],
|
|
},
|
|
|
|
{type = "blank"},
|
|
{type = "label", get = function() return Loc ["STRING_OPTIONS_WALLPAPER_LOAD_TITLE"] end, text_template = subSectionTitleTextTemplate},
|
|
|
|
{--load wallpaper
|
|
type = "execute",
|
|
func = function(self)
|
|
loadImage()
|
|
end,
|
|
icontexture = [[Interface\AddOns\Details\images\icons]],
|
|
icontexcoords = {437/512, 467/512, 191/512, 239/512},
|
|
name = Loc ["STRING_OPTIONS_WALLPAPER_LOAD"],
|
|
desc = Loc ["STRING_OPTIONS_WALLPAPER_LOAD"],
|
|
},
|
|
|
|
}
|
|
|
|
sectionFrame.sectionOptions = sectionOptions
|
|
sectionOptions.always_boxfirst = true
|
|
DF:BuildMenu(sectionFrame, sectionOptions, startX, startY-20, heightSize, false, options_text_template, options_dropdown_template, options_switch_template, true, options_slider_template, options_button_template)
|
|
|
|
sectionFrame:SetScript("OnShow", function()
|
|
sectionFrame:UpdateWallpaperInfo()
|
|
end)
|
|
end
|
|
|
|
tinsert(Details.optionsSection, buildSection)
|
|
end
|
|
|
|
|
|
-- ~13 ~automation ~auto hide
|
|
do
|
|
local buildSection = function(sectionFrame)
|
|
|
|
--auto switch options
|
|
local Current_Switch_Func = function()end
|
|
|
|
local buildSwitchMenu = function()
|
|
sectionFrame.lastSwitchList = {}
|
|
local t = {
|
|
{value = 0, label = "do not switch", color = {.7, .7, .7, 1}, onclick = Current_Switch_Func, icon = [[Interface\Glues\LOGIN\Glues-CheckBox-Check]]}
|
|
}
|
|
|
|
local attributes = Details.sub_atributos
|
|
local i = 1
|
|
|
|
for atributo, sub_atributo in ipairs(attributes) do
|
|
local icones = sub_atributo.icones
|
|
for index, att_name in ipairs(sub_atributo.lista) do
|
|
local texture, texcoord = unpack(icones [index])
|
|
tinsert(t, {value = i, label = att_name, onclick = Current_Switch_Func, icon = texture, texcoord = texcoord})
|
|
sectionFrame.lastSwitchList [i] = {atributo, index, i}
|
|
i = i + 1
|
|
end
|
|
end
|
|
|
|
for index, ptable in ipairs(Details.RaidTables.Menu) do
|
|
tinsert(t, {value = i, label = ptable [1], onclick = Current_Switch_Func, icon = ptable [2]})
|
|
sectionFrame.lastSwitchList [i] = {"raid", ptable [4], i}
|
|
i = i + 1
|
|
end
|
|
|
|
return t
|
|
end
|
|
|
|
local autoSwitchFrame = CreateFrame("frame", "$parentSwitchMenu", sectionFrame)
|
|
autoSwitchFrame:SetSize(300, 700)
|
|
autoSwitchFrame:SetPoint("topleft", 0, 0)
|
|
|
|
--damager not in combat
|
|
local onSelectAutoSwitchDamagerNoCombat = function(_, _, switchTo)
|
|
if (switchTo == 0) then
|
|
currentInstance.switch_damager = false
|
|
afterUpdate()
|
|
return
|
|
end
|
|
local selected = sectionFrame.lastSwitchList [switchTo]
|
|
currentInstance.switch_damager = selected
|
|
afterUpdate()
|
|
end
|
|
|
|
--damager in combat
|
|
local onSelectAutoSwitchDamagerInCombat = function(_, _, switchTo)
|
|
if (switchTo == 0) then
|
|
currentInstance.switch_damager_in_combat = false
|
|
afterUpdate()
|
|
return
|
|
end
|
|
local selected = sectionFrame.lastSwitchList [switchTo]
|
|
currentInstance.switch_damager_in_combat = selected
|
|
afterUpdate()
|
|
end
|
|
|
|
--healer not in combat
|
|
local onSelectAutoSwitchHealerNoCombat = function(_, _, switchTo)
|
|
if (switchTo == 0) then
|
|
currentInstance.switch_healer = false
|
|
afterUpdate()
|
|
return
|
|
end
|
|
local selected = sectionFrame.lastSwitchList [switchTo]
|
|
currentInstance.switch_healer = selected
|
|
afterUpdate()
|
|
end
|
|
|
|
--healer in combat
|
|
local onSelectAutoSwitchHealerInCombat = function(_, _, switchTo)
|
|
if (switchTo == 0) then
|
|
currentInstance.switch_healer_in_combat = false
|
|
afterUpdate()
|
|
return
|
|
end
|
|
local selected = sectionFrame.lastSwitchList [switchTo]
|
|
currentInstance.switch_healer_in_combat = selected
|
|
afterUpdate()
|
|
end
|
|
|
|
--tank not in combat
|
|
local onSelectAutoSwitchTankNoCombat = function(_, _, switchTo)
|
|
if (switchTo == 0) then
|
|
currentInstance.switch_tank = false
|
|
afterUpdate()
|
|
return
|
|
end
|
|
local selected = sectionFrame.lastSwitchList [switchTo]
|
|
currentInstance.switch_tank = selected
|
|
afterUpdate()
|
|
end
|
|
|
|
--tank in combat
|
|
local onSelectAutoSwitchTankInCombat = function(_, _, switchTo)
|
|
if (switchTo == 0) then
|
|
currentInstance.switch_tank_in_combat = false
|
|
afterUpdate()
|
|
return
|
|
end
|
|
local selected = sectionFrame.lastSwitchList [switchTo]
|
|
currentInstance.switch_tank_in_combat = selected
|
|
afterUpdate()
|
|
end
|
|
|
|
--after wipe
|
|
local onSelectAutoSwitchAfterWipe = function(_, _, switchTo)
|
|
if (switchTo == 0) then
|
|
currentInstance.switch_all_roles_after_wipe = false
|
|
afterUpdate()
|
|
return
|
|
end
|
|
local selected = sectionFrame.lastSwitchList [switchTo]
|
|
currentInstance.switch_all_roles_after_wipe = selected
|
|
afterUpdate()
|
|
end
|
|
|
|
local getSelectedSwitch = function(switchName)
|
|
local switchTable = currentInstance[switchName]
|
|
if (switchTable) then
|
|
if (switchTable[1] == "raid") then
|
|
local pluginObject = Details:GetPlugin(switchTable[2])
|
|
if (pluginObject) then
|
|
return pluginObject.__name
|
|
else
|
|
return 0
|
|
end
|
|
else
|
|
return switchTable[3]-- + 1
|
|
end
|
|
else
|
|
return 0
|
|
end
|
|
end
|
|
|
|
local sectionOptions = {
|
|
|
|
{type = "label", get = function() return "Switch by Role Out of Combat" end, text_template = subSectionTitleTextTemplate}, --localize-me
|
|
|
|
{--DAMAGER role out of combat
|
|
type = "select",
|
|
get = function()
|
|
return getSelectedSwitch("switch_damager")
|
|
end,
|
|
values = function()
|
|
Current_Switch_Func = onSelectAutoSwitchDamagerNoCombat
|
|
return buildSwitchMenu()
|
|
end,
|
|
name = Details:AddRoleIcon("", "DAMAGER", 18),
|
|
},
|
|
|
|
{--HEALER role out of combat
|
|
type = "select",
|
|
get = function()
|
|
return getSelectedSwitch("switch_healer")
|
|
end,
|
|
values = function()
|
|
Current_Switch_Func = onSelectAutoSwitchHealerNoCombat
|
|
return buildSwitchMenu()
|
|
end,
|
|
name = Details:AddRoleIcon("", "HEALER", 18),
|
|
},
|
|
|
|
{--TANK role out of combat
|
|
type = "select",
|
|
get = function()
|
|
return getSelectedSwitch("switch_tank")
|
|
end,
|
|
values = function()
|
|
Current_Switch_Func = onSelectAutoSwitchTankNoCombat
|
|
return buildSwitchMenu()
|
|
end,
|
|
name = Details:AddRoleIcon("", "TANK", 18),
|
|
},
|
|
|
|
{type = "blank"},
|
|
{type = "label", get = function() return "Switch by Role In Combat" end, text_template = subSectionTitleTextTemplate},
|
|
|
|
{--DAMAGER role in combat
|
|
type = "select",
|
|
get = function()
|
|
return getSelectedSwitch("switch_damager_in_combat")
|
|
end,
|
|
values = function()
|
|
Current_Switch_Func = onSelectAutoSwitchDamagerInCombat
|
|
return buildSwitchMenu()
|
|
end,
|
|
name = Details:AddRoleIcon("", "DAMAGER", 18),
|
|
},
|
|
|
|
{--HEALER role in combat
|
|
type = "select",
|
|
get = function()
|
|
return getSelectedSwitch("switch_healer_in_combat")
|
|
end,
|
|
values = function()
|
|
Current_Switch_Func = onSelectAutoSwitchHealerInCombat
|
|
return buildSwitchMenu()
|
|
end,
|
|
name = Details:AddRoleIcon("", "HEALER", 18),
|
|
},
|
|
|
|
{--TANK role in combat
|
|
type = "select",
|
|
get = function()
|
|
return getSelectedSwitch("switch_tank_in_combat")
|
|
end,
|
|
values = function()
|
|
Current_Switch_Func = onSelectAutoSwitchTankInCombat
|
|
return buildSwitchMenu()
|
|
end,
|
|
name = Details:AddRoleIcon("", "TANK", 18),
|
|
},
|
|
|
|
{type = "blank"},
|
|
|
|
{--switch after a wipe
|
|
type = "select",
|
|
get = function()
|
|
return getSelectedSwitch("switch_all_roles_after_wipe")
|
|
end,
|
|
values = function()
|
|
Current_Switch_Func = onSelectAutoSwitchAfterWipe
|
|
return buildSwitchMenu()
|
|
end,
|
|
name = Loc ["STRING_OPTIONS_AUTO_SWITCH_WIPE"],
|
|
desc = Loc ["STRING_OPTIONS_AUTO_SWITCH_WIPE_DESC"],
|
|
},
|
|
|
|
{type = "blank"},
|
|
|
|
{--auto current segment
|
|
type = "toggle",
|
|
get = function() return currentInstance.auto_current end,
|
|
set = function(self, fixedparam, value)
|
|
currentInstance.auto_current = value
|
|
afterUpdate()
|
|
end,
|
|
name = Loc ["STRING_OPTIONS_INSTANCE_CURRENT"],
|
|
desc = Loc ["STRING_OPTIONS_INSTANCE_CURRENT_DESC"],
|
|
},
|
|
|
|
{--trash suppression
|
|
type = "range",
|
|
get = function() return Details.instances_suppress_trash end,
|
|
set = function(self, fixedparam, value)
|
|
Details:SetTrashSuppression(value)
|
|
afterUpdate()
|
|
end,
|
|
min = 0,
|
|
max = 180,
|
|
step = 1,
|
|
name = Loc ["STRING_OPTIONS_TRASH_SUPPRESSION"],
|
|
desc = Loc ["STRING_OPTIONS_TRASH_SUPPRESSION_DESC"],
|
|
},
|
|
|
|
{type = "blank"},
|
|
{type = "label", get = function() return Loc ["STRING_OPTIONS_MENU_ALPHA"] end, text_template = subSectionTitleTextTemplate},
|
|
|
|
{--enabled
|
|
type = "toggle",
|
|
get = function() return currentInstance.menu_alpha.enabled end,
|
|
set = function(self, fixedparam, value)
|
|
editInstanceSetting(currentInstance, "SetMenuAlpha", value)
|
|
afterUpdate()
|
|
end,
|
|
name = Loc ["STRING_ENABLED"],
|
|
desc = Loc ["STRING_OPTIONS_MENU_ALPHAENABLED_DESC"],
|
|
},
|
|
|
|
{--ignore bars
|
|
type = "toggle",
|
|
get = function() return currentInstance.menu_alpha.ignorebars end,
|
|
set = function(self, fixedparam, value)
|
|
editInstanceSetting(currentInstance, "SetMenuAlpha", nil, nil, nil, value)
|
|
afterUpdate()
|
|
end,
|
|
name = Loc ["STRING_OPTIONS_MENU_IGNOREBARS"],
|
|
desc = Loc ["STRING_OPTIONS_MENU_IGNOREBARS_DESC"],
|
|
},
|
|
|
|
{--on hover over alpha
|
|
type = "range",
|
|
get = function() return currentInstance.menu_alpha.onenter end,
|
|
set = function(self, fixedparam, value)
|
|
editInstanceSetting(currentInstance, "SetMenuAlpha", nil, value)
|
|
afterUpdate()
|
|
end,
|
|
min = 0,
|
|
max = 1,
|
|
step = 0.05,
|
|
usedecimals = true,
|
|
name = Loc ["STRING_OPTIONS_MENU_ALPHAENTER"],
|
|
desc = Loc ["STRING_OPTIONS_MENU_ALPHAENTER_DESC"],
|
|
},
|
|
|
|
{--no interaction
|
|
type = "range",
|
|
get = function() return currentInstance.menu_alpha.onleave end,
|
|
set = function(self, fixedparam, value)
|
|
editInstanceSetting(currentInstance, "SetMenuAlpha", nil, nil, value)
|
|
afterUpdate()
|
|
end,
|
|
min = 0,
|
|
max = 1,
|
|
step = 0.05,
|
|
usedecimals = true,
|
|
name = Loc ["STRING_OPTIONS_MENU_ALPHALEAVE"],
|
|
desc = Loc ["STRING_OPTIONS_MENU_ALPHALEAVE_DESC"],
|
|
},
|
|
|
|
}
|
|
|
|
sectionFrame.sectionOptions = sectionOptions
|
|
sectionOptions.always_boxfirst = true
|
|
DF:BuildMenu(autoSwitchFrame, sectionOptions, startX, startY-20, heightSize, false, options_text_template, options_dropdown_template, options_switch_template, true, options_slider_template, options_button_template)
|
|
|
|
|
|
--combat alpha modifier
|
|
local right_start_at = 450
|
|
|
|
--anchor
|
|
DF:NewLabel(sectionFrame, _, "$parentHideInCombatAnchor", "hideInCombatAnchor", Loc ["STRING_OPTIONS_ALPHAMOD_ANCHOR"], "GameFontNormal")
|
|
sectionFrame.hideInCombatAnchor:SetPoint("topleft", sectionFrame, "topleft", right_start_at, startY - 20)
|
|
|
|
--hide in combat
|
|
DF:NewLabel(sectionFrame, _, "$parentCombatAlphaLabel", "combatAlphaLabel", Loc ["STRING_OPTIONS_COMBAT_ALPHA"], "GameFontHighlightLeft")
|
|
|
|
local texCoords = {.9, 0.1, 0.1, .9}
|
|
local typeCombatAlpha = {
|
|
Loc["STRING_OPTIONS_COMBAT_ALPHA_2"],
|
|
Loc["STRING_OPTIONS_COMBAT_ALPHA_3"],
|
|
Loc["STRING_OPTIONS_COMBAT_ALPHA_4"],
|
|
Loc["STRING_OPTIONS_COMBAT_ALPHA_5"],
|
|
Loc["STRING_OPTIONS_COMBAT_ALPHA_6"],
|
|
Loc["STRING_OPTIONS_COMBAT_ALPHA_7"],
|
|
Loc["STRING_OPTIONS_COMBAT_ALPHA_8"],
|
|
Loc["STRING_OPTIONS_COMBAT_ALPHA_9"],
|
|
_G.ARENA or "_G.ARENA",
|
|
}
|
|
|
|
local optionsOrder = {3, 4, 5, 6, 9, 7, 8, 1, 2}
|
|
|
|
local header1Label = _G.DetailsFramework:CreateLabel(sectionFrame, Loc["STRING_CONTEXT"])
|
|
local header2Label = _G.DetailsFramework:CreateLabel(sectionFrame, Loc["STRING_ENABLED"])
|
|
local header3Label = _G.DetailsFramework:CreateLabel(sectionFrame, Loc["STRING_INVERT_RULE"])
|
|
local header4Label = _G.DetailsFramework:CreateLabel(sectionFrame, Loc["STRING_ALPHA"])
|
|
|
|
local yyy = startY - 40
|
|
header1Label:SetPoint("topleft", sectionFrame, "topleft", right_start_at, yyy)
|
|
header2Label:SetPoint("topleft", sectionFrame, "topleft", right_start_at + 96, yyy)
|
|
header3Label:SetPoint("topleft", sectionFrame, "topleft", right_start_at + 140, yyy)
|
|
header4Label:SetPoint("topleft", sectionFrame, "topleft", right_start_at + 270, yyy)
|
|
|
|
local onEnableHideContext = function(self, contextId, value)
|
|
editInstanceSetting(currentInstance, "hide_on_context", contextId, "enabled", value)
|
|
editInstanceSetting(currentInstance, "AdjustAlphaByContext")
|
|
afterUpdate()
|
|
end
|
|
|
|
local onInverseValue = function(self, contextId, value)
|
|
editInstanceSetting(currentInstance, "hide_on_context", contextId, "inverse", value)
|
|
editInstanceSetting(currentInstance, "AdjustAlphaByContext")
|
|
afterUpdate()
|
|
end
|
|
|
|
local onAlphaChanged = function(self, contextId, value)
|
|
value = floor(value)
|
|
editInstanceSetting(currentInstance, "hide_on_context", contextId, "value", value)
|
|
editInstanceSetting(currentInstance, "AdjustAlphaByContext")
|
|
afterUpdate()
|
|
end
|
|
|
|
sectionFrame.AutoHideOptions = {}
|
|
|
|
for id, i in ipairs(optionsOrder) do
|
|
local line = _G.CreateFrame("frame", nil, sectionFrame,"BackdropTemplate")
|
|
line:SetSize(322, 22)
|
|
line:SetPoint("topleft", sectionFrame, "topleft", right_start_at, yyy + ((id) * -23) + 4)
|
|
DetailsFramework:ApplyStandardBackdrop(line)
|
|
|
|
local contextLabel = DetailsFramework:CreateLabel(line, typeCombatAlpha[i])
|
|
contextLabel:SetPoint("left", line, "left", 2, 0)
|
|
contextLabel.textsize = 10
|
|
|
|
local enabledCheckbox = DetailsFramework:NewSwitch(line, nil, nil, nil, 20, 20, nil, nil, false, nil, nil, nil, nil, options_switch_template)
|
|
enabledCheckbox:SetPoint("left", line, "left", 140, 0)
|
|
enabledCheckbox:SetAsCheckBox()
|
|
enabledCheckbox.OnSwitch = onEnableHideContext
|
|
enabledCheckbox:SetFixedParameter(i)
|
|
|
|
local reverseCheckbox = DetailsFramework:NewSwitch(line, nil, nil, nil, 20, 20, nil, nil, false, nil, nil, nil, nil, options_switch_template)
|
|
reverseCheckbox:SetPoint("left", line, "left", 162, 0)
|
|
reverseCheckbox:SetAsCheckBox()
|
|
reverseCheckbox.OnSwitch = onInverseValue
|
|
reverseCheckbox:SetFixedParameter(i)
|
|
|
|
local alphaSlider = DetailsFramework:CreateSlider(line, 138, 20, 0, 100, 1, 100, false, nil, nil, nil, options_slider_template)
|
|
alphaSlider:SetPoint("left", line, "left", 184, 0)
|
|
alphaSlider:SetHook("OnValueChanged", onAlphaChanged)
|
|
alphaSlider:SetFixedParameter(i)
|
|
alphaSlider.thumb:SetWidth(32)
|
|
|
|
line.contextLabel = contextLabel
|
|
line.enabledCheckbox = enabledCheckbox
|
|
line.reverseCheckbox = reverseCheckbox
|
|
line.alphaSlider = alphaSlider
|
|
|
|
--disable the invert checkbox for some options
|
|
if (i == 1 or i == 2 or i == 4 or i == 5 or i == 6) then
|
|
reverseCheckbox:Disable()
|
|
end
|
|
|
|
sectionFrame.AutoHideOptions[i] = line
|
|
end
|
|
|
|
Details222.OptionsPanel.UpdateAutoHideSettings(currentInstance)
|
|
|
|
--profile by spec
|
|
|
|
--[=[]]
|
|
local spec1Table = {}
|
|
local playerSpecs = DF.ClassSpecIds [select(2, UnitClass("player"))]
|
|
for specID, _ in pairs(playerSpecs) do
|
|
local spec_id, specName, spec_description, spec_icon = GetSpecializationInfoByID(specID)
|
|
tinsert(spec1Table, {
|
|
type = "select",
|
|
get = function()
|
|
local specProfile = Details.profile_by_spec[specID]
|
|
return specProfile
|
|
end,
|
|
values = function()
|
|
local t = {}
|
|
for profileName in pairs(__profiles) do
|
|
t[#t+1] = profileName
|
|
end
|
|
return t
|
|
end,
|
|
name = specName,
|
|
desc = specName,
|
|
})
|
|
end
|
|
--]=]
|
|
end
|
|
|
|
tinsert(Details.optionsSection, buildSection)
|
|
end
|
|
|
|
|
|
-- ~14 ~raidtools ~tools
|
|
do --raid tools
|
|
local buildSection = function(sectionFrame)
|
|
|
|
--on select channel for interrip announcer
|
|
local on_select_channel = function(self, _, channel)
|
|
Details.announce_interrupts.channel = channel
|
|
C_Timer.After(0, function()
|
|
if (channel == "WHISPER") then
|
|
sectionFrame.widget_list_by_type.textentry[1]:Enable()
|
|
else
|
|
sectionFrame.widget_list_by_type.textentry[1]:Disable()
|
|
end
|
|
end)
|
|
afterUpdate()
|
|
end
|
|
local channel_list = {
|
|
{value = "PRINT", icon = [[Interface\LFGFRAME\BattlenetWorking2]], iconsize = {14, 14}, iconcolor = {1, 1, 1, 1}, texcoord = {12/64, 53/64, 11/64, 53/64}, label = Loc ["STRING_CHANNEL_PRINT"], onclick = on_select_channel},
|
|
{value = "SAY", icon = [[Interface\FriendsFrame\UI-Toast-ToastIcons]], iconsize = {14, 14}, texcoord = {0.0390625, 0.203125, 0.09375, 0.375}, label = Loc ["STRING_CHANNEL_SAY"], onclick = on_select_channel},
|
|
{value = "YELL", icon = [[Interface\FriendsFrame\UI-Toast-ToastIcons]], iconsize = {14, 14}, texcoord = {0.0390625, 0.203125, 0.09375, 0.375}, iconcolor = {1, 0.3, 0, 1}, label = Loc ["STRING_CHANNEL_YELL"], onclick = on_select_channel},
|
|
{value = "RAID", icon = [[Interface\FriendsFrame\UI-Toast-ToastIcons]], iconcolor = {1, 0.49, 0}, iconsize = {14, 14}, texcoord = {0.53125, 0.7265625, 0.078125, 0.40625}, label = Loc ["STRING_INSTANCE_CHAT"], onclick = on_select_channel},
|
|
{value = "WHISPER", icon = [[Interface\FriendsFrame\UI-Toast-ToastIcons]], iconcolor = {1, 0.49, 1}, iconsize = {14, 14}, texcoord = {0.0546875, 0.1953125, 0.625, 0.890625}, label = Loc ["STRING_CHANNEL_WHISPER"], onclick = on_select_channel},
|
|
}
|
|
local buildInterruptChannelMenu = function()
|
|
return channel_list
|
|
end
|
|
|
|
--on select channel for cooldown announcer
|
|
local on_select_channel = function(self, _, channel)
|
|
Details.announce_cooldowns.channel = channel
|
|
afterUpdate()
|
|
end
|
|
|
|
local channel_list = {
|
|
{value = "PRINT", icon = [[Interface\LFGFRAME\BattlenetWorking2]], iconsize = {14, 14}, iconcolor = {1, 1, 1, 1}, texcoord = {12/64, 53/64, 11/64, 53/64}, label = Loc ["STRING_CHANNEL_PRINT"], onclick = on_select_channel},
|
|
{value = "SAY", icon = [[Interface\FriendsFrame\UI-Toast-ToastIcons]], iconsize = {14, 14}, texcoord = {0.0390625, 0.203125, 0.09375, 0.375}, label = Loc ["STRING_CHANNEL_SAY"], onclick = on_select_channel},
|
|
{value = "YELL", icon = [[Interface\FriendsFrame\UI-Toast-ToastIcons]], iconsize = {14, 14}, texcoord = {0.0390625, 0.203125, 0.09375, 0.375}, iconcolor = {1, 0.3, 0, 1}, label = Loc ["STRING_CHANNEL_YELL"], onclick = on_select_channel},
|
|
{value = "RAID", icon = [[Interface\FriendsFrame\UI-Toast-ToastIcons]], iconcolor = {1, 0.49, 0}, iconsize = {14, 14}, texcoord = {0.53125, 0.7265625, 0.078125, 0.40625}, label = Loc ["STRING_INSTANCE_CHAT"], onclick = on_select_channel},
|
|
{value = "WHISPER", icon = [[Interface\FriendsFrame\UI-Toast-ToastIcons]], iconcolor = {1, 0.49, 1}, iconsize = {14, 14}, texcoord = {0.0546875, 0.1953125, 0.625, 0.890625}, label = Loc ["STRING_CHANNEL_WHISPER_TARGET_COOLDOWN"], onclick = on_select_channel},
|
|
}
|
|
local buildCooldownsChannelMenu = function()
|
|
return channel_list
|
|
end
|
|
|
|
--on select channel for report deaths
|
|
local on_select_channel = function(self, _, channel)
|
|
Details.announce_deaths.where = channel
|
|
afterUpdate()
|
|
end
|
|
|
|
local officer = Details.GetReportIconAndColor ("OFFICER")
|
|
|
|
local channel_list = {
|
|
{value = 1, icon = [[Interface\FriendsFrame\UI-Toast-ToastIcons]], iconcolor = {1, 0, 1}, iconsize = {14, 14}, texcoord = {0.53125, 0.7265625, 0.078125, 0.40625}, label = Loc ["STRING_OPTIONS_RT_DEATHS_WHERE1"], onclick = on_select_channel},
|
|
{value = 2, icon = [[Interface\FriendsFrame\UI-Toast-ToastIcons]], iconcolor = {1, 0.49, 0}, iconsize = {14, 14}, texcoord = {0.53125, 0.7265625, 0.078125, 0.40625}, label = Loc ["STRING_OPTIONS_RT_DEATHS_WHERE2"], onclick = on_select_channel},
|
|
{value = 3, icon = [[Interface\FriendsFrame\UI-Toast-ToastIcons]], iconcolor = {0.66, 0.65, 1}, iconsize = {14, 14}, texcoord = {0.53125, 0.7265625, 0.078125, 0.40625}, label = Loc ["STRING_OPTIONS_RT_DEATHS_WHERE3"], onclick = on_select_channel},
|
|
{value = 4, icon = [[Interface\LFGFRAME\BattlenetWorking2]], iconsize = {14, 14}, iconcolor = {1, 1, 1, 1}, texcoord = {12/64, 53/64, 11/64, 53/64}, label = Loc ["STRING_CHANNEL_PRINT"], onclick = on_select_channel},
|
|
{value = 5, icon = officer.icon, iconsize = {14, 14}, iconcolor = officer.color, texcoord = officer.coords, label = officer.label, onclick = on_select_channel},
|
|
}
|
|
local buildDeathLogAnnouncerMenu = function()
|
|
return channel_list
|
|
end
|
|
|
|
local openCooldownIgnoreWindow = function()
|
|
if (not DetailsAnnounceSelectCooldownIgnored) then
|
|
DetailsAnnounceSelectCooldownIgnored = CreateFrame("frame", "DetailsAnnounceSelectCooldownIgnored", UIParent, "BackdropTemplate")
|
|
local f = DetailsAnnounceSelectCooldownIgnored
|
|
f:SetSize(400, 500)
|
|
f:SetPoint("center", UIParent, "center", 0, 0)
|
|
|
|
DF:ApplyStandardBackdrop(f)
|
|
DF:CreateTitleBar(f, Loc ["STRING_OPTIONS_RT_IGNORE_TITLE"])
|
|
|
|
f:SetFrameStrata("FULLSCREEN")
|
|
f:EnableMouse()
|
|
f:SetMovable(true)
|
|
f:SetScript("OnMouseDown", function(self, button)
|
|
if (button == "RightButton") then
|
|
if (f.IsMoving) then
|
|
f.IsMoving = false
|
|
f:StopMovingOrSizing()
|
|
end
|
|
f:Hide()
|
|
return
|
|
end
|
|
|
|
f.IsMoving = true
|
|
f:StartMoving()
|
|
end)
|
|
|
|
f:SetScript("OnMouseUp", function(self, button)
|
|
if (f.IsMoving) then
|
|
f.IsMoving = false
|
|
f:StopMovingOrSizing()
|
|
end
|
|
end)
|
|
|
|
f.labels = {}
|
|
local on_switch_func = function(self, spellid, value)
|
|
if (spellid) then
|
|
if (not value) then
|
|
Details.announce_cooldowns.ignored_cooldowns [spellid] = nil
|
|
else
|
|
Details.announce_cooldowns.ignored_cooldowns [spellid] = true
|
|
end
|
|
end
|
|
end
|
|
|
|
f:SetScript("OnHide", function(self)
|
|
self:Clear()
|
|
end)
|
|
|
|
function f:Clear()
|
|
for _, label in ipairs(self.labels) do
|
|
label.icon:Hide()
|
|
label.text:Hide()
|
|
label.switch:Hide()
|
|
end
|
|
end
|
|
|
|
function f:CreateLabel()
|
|
local L = {
|
|
icon = DF:CreateImage(f, nil, 16, 16, "overlay", {0.1, 0.9, 0.1, 0.9}),
|
|
text = DF:CreateLabel(f, "", 10, "white", "GameFontHighlightSmall"),
|
|
}
|
|
|
|
L.switch = DF:CreateSwitch(f, on_switch_func, false)
|
|
|
|
L.switch:SetPoint("topleft", f, "topleft", 10, ((#f.labels*20)*-1)-55)
|
|
L.icon:SetPoint("left", L.switch, "right", 2, 0)
|
|
L.text:SetPoint("left", L.icon, "right", 2, 0)
|
|
|
|
L.switch:SetAsCheckBox()
|
|
L.switch:SetTemplate(options_switch_template)
|
|
L.switch:SetFixedParameter(1)
|
|
L.switch:SetValue(false)
|
|
|
|
tinsert(f.labels, L)
|
|
return L
|
|
end
|
|
|
|
function f:Open()
|
|
local _GetSpellInfo = Details.getspellinfo --details api
|
|
|
|
for index, spellid in ipairs(Details:GetCooldownList()) do
|
|
local name, _, icon = _GetSpellInfo(spellid)
|
|
if (name) then
|
|
local label = f.labels [index] or f:CreateLabel()
|
|
label.icon.texture = icon
|
|
label.text.text = name
|
|
|
|
label.switch:SetFixedParameter(spellid)
|
|
label.switch:SetValue(Details.announce_cooldowns.ignored_cooldowns[spellid])
|
|
label.icon:Show()
|
|
label.text:Show()
|
|
label.switch:Show()
|
|
end
|
|
end
|
|
f:Show()
|
|
end
|
|
end
|
|
DetailsAnnounceSelectCooldownIgnored:Open()
|
|
end
|
|
|
|
local sectionOptions = {
|
|
|
|
{type = "label", get = function() return Loc ["STRING_OPTIONS_RT_INTERRUPT_ANCHOR"] end, text_template = subSectionTitleTextTemplate},
|
|
|
|
{--auto current segment
|
|
type = "toggle",
|
|
get = function() return Details.announce_interrupts.enabled end,
|
|
set = function(self, fixedparam, value)
|
|
if (value) then
|
|
Details:EnableInterruptAnnouncer()
|
|
else
|
|
Details:DisableInterruptAnnouncer()
|
|
end
|
|
afterUpdate()
|
|
end,
|
|
name = Loc ["STRING_ENABLED"],
|
|
desc = Loc ["STRING_OPTIONS_RT_INTERRUPTS_ONOFF_DESC"],
|
|
},
|
|
|
|
{--channel to report
|
|
type = "select",
|
|
get = function() return Details.announce_interrupts.channel end,
|
|
values = function()
|
|
return buildInterruptChannelMenu()
|
|
end,
|
|
name = Loc ["STRING_OPTIONS_RT_INTERRUPTS_CHANNEL"],
|
|
desc = Loc ["STRING_OPTIONS_RT_INTERRUPTS_CHANNEL_DESC"],
|
|
},
|
|
|
|
{--target player to whisper
|
|
type = "textentry",
|
|
get = function()
|
|
C_Timer.After(0, function()
|
|
if (Details.announce_interrupts.channel ~= "WHISPER") then
|
|
sectionFrame.widget_list_by_type.textentry[1]:Disable()
|
|
end
|
|
end)
|
|
return Details.announce_interrupts.whisper
|
|
end,
|
|
func = function(_, _, text)
|
|
Details.announce_interrupts.whisper = text or ""
|
|
afterUpdate()
|
|
end,
|
|
name = Loc ["STRING_OPTIONS_RT_INTERRUPTS_WHISPER"],
|
|
desc = Loc ["STRING_OPTIONS_RT_INTERRUPTS_WHISPER"],
|
|
},
|
|
|
|
{--next player to cut, whisper the person
|
|
type = "textentry",
|
|
get = function()
|
|
return Details.announce_interrupts.next
|
|
end,
|
|
func = function(_, _, text)
|
|
Details.announce_interrupts.next = text or ""
|
|
afterUpdate()
|
|
end,
|
|
name = Loc ["STRING_OPTIONS_RT_INTERRUPTS_NEXT"],
|
|
desc = Loc ["STRING_OPTIONS_RT_INTERRUPTS_NEXT_DESC"],
|
|
},
|
|
|
|
{--custom text field
|
|
type = "textentry",
|
|
get = function()
|
|
return Details.announce_interrupts.custom
|
|
end,
|
|
func = function(_, _, text)
|
|
Details.announce_interrupts.custom = text or ""
|
|
afterUpdate()
|
|
end,
|
|
name = Loc ["STRING_OPTIONS_RT_INTERRUPTS_CUSTOM"],
|
|
desc = Loc ["STRING_OPTIONS_RT_INTERRUPTS_CUSTOM_DESC"],
|
|
},
|
|
{--test custom text
|
|
type = "execute",
|
|
func = function(self)
|
|
local text = sectionFrame.widget_list_by_type.textentry[3]:GetText()
|
|
local channel = Details.announce_interrupts.channel
|
|
Details.announce_interrupts.channel = "PRINT"
|
|
Details:interrupt_announcer (nil, nil, nil, Details.playername, nil, nil, "A Monster", nil, 1766, "Kick", nil, 106523, "Cataclysm", nil)
|
|
Details.announce_interrupts.channel = channel
|
|
end,
|
|
icontexture = [[Interface\CHATFRAME\ChatFrameExpandArrow]],
|
|
name = "Test",
|
|
desc = "Click to test!", --localize-me
|
|
},
|
|
|
|
{type = "blank"},
|
|
{type = "label", get = function() return Loc ["STRING_OPTIONS_RT_COOLDOWNS_ANCHOR"] end, text_template = subSectionTitleTextTemplate},
|
|
|
|
{--enable cooldown announcer
|
|
type = "toggle",
|
|
get = function() return Details.announce_cooldowns.enabled end,
|
|
set = function(self, fixedparam, value)
|
|
if (value) then
|
|
Details:EnableCooldownAnnouncer()
|
|
else
|
|
Details:DisableCooldownAnnouncer()
|
|
end
|
|
afterUpdate()
|
|
end,
|
|
name = Loc ["STRING_ENABLED"],
|
|
desc = Loc ["STRING_OPTIONS_RT_COOLDOWNS_ONOFF_DESC"],
|
|
},
|
|
|
|
{--channel to report
|
|
type = "select",
|
|
get = function() return Details.announce_cooldowns.channel end,
|
|
values = function()
|
|
return buildCooldownsChannelMenu()
|
|
end,
|
|
name = Loc ["STRING_OPTIONS_RT_COOLDOWNS_CHANNEL"],
|
|
desc = Loc ["STRING_OPTIONS_RT_COOLDOWNS_CHANNEL_DESC"],
|
|
},
|
|
|
|
{--custom text field
|
|
type = "textentry",
|
|
get = function()
|
|
return Details.announce_cooldowns.custom
|
|
end,
|
|
func = function(_, _, text)
|
|
Details.announce_cooldowns.custom = text or ""
|
|
afterUpdate()
|
|
end,
|
|
name = Loc ["STRING_OPTIONS_RT_COOLDOWNS_CUSTOM"],
|
|
desc = Loc ["STRING_OPTIONS_RT_COOLDOWNS_CUSTOM_DESC"],
|
|
},
|
|
|
|
{--test custom text
|
|
type = "execute",
|
|
func = function(self)
|
|
local text = sectionFrame.widget_list_by_type.textentry[4]:GetText()
|
|
local channel = Details.announce_cooldowns.channel
|
|
Details.announce_cooldowns.channel = "PRINT"
|
|
Details:cooldown_announcer (nil, nil, nil, Details.playername, nil, nil, "Tyrande Whisperwind", nil, 47788, "Guardian Spirit")
|
|
Details.announce_cooldowns.channel = channel
|
|
end,
|
|
icontexture = [[Interface\CHATFRAME\ChatFrameExpandArrow]],
|
|
name = "Test",
|
|
desc = "Click to test!", --localize-me
|
|
},
|
|
|
|
{--ignored cooldowns
|
|
type = "execute",
|
|
func = function(self)
|
|
openCooldownIgnoreWindow()
|
|
end,
|
|
icontexture = [[Interface\COMMON\UI-DropDownRadioChecks]],
|
|
icontexcoords = {0, 0.5, 0, 0.5},
|
|
name = Loc ["STRING_OPTIONS_RT_IGNORE_TITLE"],
|
|
desc = Loc ["STRING_OPTIONS_RT_COOLDOWNS_SELECT_DESC"],
|
|
},
|
|
|
|
{type = "blank"},
|
|
{type = "label", get = function() return Loc ["STRING_OPTIONS_RT_DEATHS_ANCHOR"] end, text_template = subSectionTitleTextTemplate},
|
|
|
|
{--enable death announcer
|
|
type = "toggle",
|
|
get = function() return Details.announce_deaths.enabled end,
|
|
set = function(self, fixedparam, value)
|
|
if (value) then
|
|
Details:EnableDeathAnnouncer()
|
|
else
|
|
Details:DisableDeathAnnouncer()
|
|
end
|
|
afterUpdate()
|
|
end,
|
|
name = Loc ["STRING_ENABLED"],
|
|
desc = Loc ["STRING_OPTIONS_RT_DEATHS_ONOFF_DESC"],
|
|
},
|
|
|
|
{--max hits to show
|
|
type = "range",
|
|
get = function() return Details.announce_deaths.last_hits end,
|
|
set = function(self, fixedparam, value)
|
|
Details.announce_deaths.last_hits = value
|
|
afterUpdate()
|
|
end,
|
|
min = 1,
|
|
max = 5,
|
|
step = 1,
|
|
name = Loc ["STRING_OPTIONS_RT_DEATHS_HITS"],
|
|
desc = Loc ["STRING_OPTIONS_RT_DEATHS_HITS_DESC"],
|
|
},
|
|
|
|
{--max hits to show
|
|
type = "range",
|
|
get = function() return Details.announce_deaths.only_first end,
|
|
set = function(self, fixedparam, value)
|
|
Details.announce_deaths.only_first = value
|
|
afterUpdate()
|
|
end,
|
|
min = 1,
|
|
max = 30,
|
|
step = 1,
|
|
name = Loc ["STRING_OPTIONS_RT_DEATHS_FIRST"],
|
|
desc = Loc ["STRING_OPTIONS_RT_DEATHS_FIRST_DESC"],
|
|
},
|
|
|
|
{--death report channel
|
|
type = "select",
|
|
get = function() return Details.announce_deaths.where end,
|
|
values = function()
|
|
return buildDeathLogAnnouncerMenu()
|
|
end,
|
|
name = Loc ["STRING_OPTIONS_RT_DEATHS_WHERE"],
|
|
desc = Loc ["STRING_OPTIONS_RT_DEATHS_WHERE_DESC"],
|
|
},
|
|
|
|
{type = "breakline"},
|
|
{type = "label", get = function() return "Death Recap:" end, text_template = subSectionTitleTextTemplate}, --localize-me
|
|
|
|
{--enable death recap
|
|
type = "toggle",
|
|
get = function() return Details.death_recap.enabled end,
|
|
set = function(self, fixedparam, value)
|
|
Details.death_recap.enabled = value
|
|
afterUpdate()
|
|
end,
|
|
name = Loc ["STRING_ENABLED"],
|
|
desc = "Modify the Blizzard's Death Recap screen.", --localize-me
|
|
},
|
|
|
|
{--relevance time
|
|
type = "range",
|
|
get = function() return Details.death_recap.relevance_time end,
|
|
set = function(self, fixedparam, value)
|
|
Details.death_recap.relevance_time = value
|
|
afterUpdate()
|
|
end,
|
|
min = 1,
|
|
max = 12,
|
|
step = 1,
|
|
name = "Relevance Time", --localize-me
|
|
desc = "Attempt to fill the Death Recap with high damage (discart low hits) in the relevant time before death.", --localize-me
|
|
},
|
|
|
|
{--show life percent
|
|
type = "toggle",
|
|
get = function() return Details.death_recap.show_life_percent end,
|
|
set = function(self, fixedparam, value)
|
|
Details.death_recap.show_life_percent = value
|
|
afterUpdate()
|
|
end,
|
|
name = "Life Percent", --localize-me
|
|
desc = "Show the percent of life the player had when received the hit.", --localize-me
|
|
},
|
|
|
|
{--show segment list
|
|
type = "toggle",
|
|
get = function() return Details.death_recap.show_segments end,
|
|
set = function(self, fixedparam, value)
|
|
Details.death_recap.show_segments = value
|
|
afterUpdate()
|
|
end,
|
|
name = "Segment List", --localize-me
|
|
desc = "Show a list of the latest segments in case you want to see recaps from previous fights.", --localize-me
|
|
},
|
|
|
|
{type = "blank"},
|
|
{type = "label", get = function() return Loc ["STRING_GERAL"] .. ":" end, text_template = subSectionTitleTextTemplate},
|
|
|
|
{--show first hit
|
|
type = "toggle",
|
|
get = function() return Details.announce_firsthit.enabled end,
|
|
set = function(self, fixedparam, value)
|
|
Details.announce_firsthit.enabled = value
|
|
afterUpdate()
|
|
end,
|
|
name = Loc ["STRING_OPTIONS_RT_FIRST_HIT"],
|
|
desc = Loc ["STRING_OPTIONS_RT_FIRST_HIT_DESC"],
|
|
},
|
|
|
|
{--show death menu
|
|
type = "toggle",
|
|
get = function() return Details.on_death_menu end,
|
|
set = function(self, fixedparam, value)
|
|
Details.on_death_menu = value
|
|
afterUpdate()
|
|
end,
|
|
name = "Show Death Menu", --localize-me
|
|
desc = "Show a panel below the Release / Death Recap panel with some shortcuts for Raid Leaders.", --localize-me
|
|
},
|
|
}
|
|
|
|
sectionFrame.sectionOptions = sectionOptions
|
|
sectionOptions.always_boxfirst = true
|
|
DF:BuildMenu(sectionFrame, sectionOptions, startX, startY-20, heightSize, false, options_text_template, options_dropdown_template, options_switch_template, true, options_slider_template, options_button_template)
|
|
end
|
|
|
|
tinsert(Details.optionsSection, buildSection)
|
|
end
|
|
|
|
|
|
-- ~15 ~broadcaster
|
|
do
|
|
local buildSection = function(sectionFrame)
|
|
|
|
local button_width = 160
|
|
|
|
--streamer plugin - a.k.a. Action Tracker
|
|
--title anchor
|
|
DF:NewLabel(sectionFrame, _, "$parentStreamerPluginAnchor", "streamerPluginAnchor", "Action Tracker", "GameFontNormal")
|
|
sectionFrame.streamerPluginAnchor:SetPoint("topleft", sectionFrame, "topleft", startX, startY - 20)
|
|
|
|
local streamerTitleDesc = DF:NewLabel(sectionFrame, _, "$parentStreamerTitleDescText", "StreamerTitleDescTextLabel", "Show the spells you are casting, allowing the viewer to follow your decision making and learn your rotation.", "GameFontNormal", 10, "white")
|
|
streamerTitleDesc:SetSize(270, 40)
|
|
streamerTitleDesc:SetJustifyV ("top")
|
|
streamerTitleDesc:SetPoint("topleft", sectionFrame.streamerPluginAnchor, "bottomleft", 0, -4)
|
|
|
|
local streamerTitleImage = DF:CreateImage(sectionFrame, [[Interface\AddOns\Details\images\icons2.blp]], 268*0.75, 59*0.75, "overlay", {0, 268/512, 454/512, 1})
|
|
streamerTitleImage:SetPoint("topleft", sectionFrame.streamerPluginAnchor, "bottomleft", 0, -40)
|
|
|
|
--get the plugin object
|
|
local StreamerPlugin = Details:GetPlugin("DETAILS_PLUGIN_STREAM_OVERLAY")
|
|
if (StreamerPlugin) then
|
|
--get the plugin settings table
|
|
local tPluginSettings = Details:GetPluginSavedTable("DETAILS_PLUGIN_STREAM_OVERLAY")
|
|
if (tPluginSettings) then
|
|
local enablePluginFunc = function()
|
|
tPluginSettings.enabled = not tPluginSettings.enabled
|
|
StreamerPlugin.__enabled = tPluginSettings.enabled
|
|
|
|
if (not tPluginSettings.enabled) then
|
|
sectionFrame.enableActionTrackerButtton:SetText("Enable")
|
|
Details:SendEvent("PLUGIN_DISABLED", StreamerPlugin)
|
|
else
|
|
sectionFrame.enableActionTrackerButtton:SetText("Disable") --enableButton is nil value
|
|
Details:SendEvent("PLUGIN_ENABLED", StreamerPlugin)
|
|
end
|
|
end
|
|
|
|
local openOptions = function()
|
|
StreamerPlugin.OpenOptionsPanel(true)
|
|
C_Timer.After(0.2, function()
|
|
_G.DetailsOptionsWindow:Hide()
|
|
end)
|
|
end
|
|
|
|
--create the enable, disable and options button
|
|
local enableActionTrackerButtton = DF:CreateButton(sectionFrame, enablePluginFunc, 100, 20, "Enable", false, false, "", false, false, false, DF:GetTemplate("dropdown", "OPTIONS_DROPDOWN_TEMPLATE"))
|
|
enableActionTrackerButtton:SetPoint("topleft", streamerTitleImage, "bottomleft", 0, -7)
|
|
|
|
local actionTrackerOptionsButtton = DF:CreateButton(sectionFrame, openOptions, 100, 20, "Options", false, false, "", false, false, false, DF:GetTemplate("dropdown", "OPTIONS_DROPDOWN_TEMPLATE"))
|
|
actionTrackerOptionsButtton:SetPoint("left", enableActionTrackerButtton, "right", 5, 0)
|
|
|
|
sectionFrame.enableActionTrackerButtton = enableActionTrackerButtton
|
|
sectionFrame.actionTrackerOptionsButtton = actionTrackerOptionsButtton
|
|
|
|
local bIsPluginEnabled = tPluginSettings.enabled
|
|
|
|
--plugin already enabled
|
|
if (bIsPluginEnabled) then
|
|
enableActionTrackerButtton:SetText("Disable")
|
|
else
|
|
enableActionTrackerButtton:SetText("Enable")
|
|
end
|
|
end
|
|
else
|
|
--plugin is disabled at the addon control panel
|
|
local pluginDisabled = DF:NewLabel(sectionFrame, _, "$parentStreamerDisabledText", "StreamerDisabledTextLabel", "Enable 'Details!: Streamer' addon at the AddOns Control Panel.", "GameFontNormal", 10, "red")
|
|
pluginDisabled:SetSize(270, 40)
|
|
pluginDisabled:SetPoint("topleft", streamerTitleImage, "bottomleft", 0, -2)
|
|
end
|
|
|
|
sectionFrame:SetScript("OnShow", function()
|
|
local pluginStable = Details:GetPluginSavedTable("DETAILS_PLUGIN_STREAM_OVERLAY")
|
|
local pluginObject = Details:GetPlugin("DETAILS_PLUGIN_STREAM_OVERLAY")
|
|
|
|
if (pluginObject) then
|
|
if (pluginStable.enabled) then
|
|
sectionFrame.enableActionTrackerButtton:SetText("Disable")
|
|
else
|
|
sectionFrame.enableActionTrackerButtton:SetText("Enable")
|
|
end
|
|
end
|
|
|
|
if (Details.event_tracker.enabled) then
|
|
sectionFrame.enableEventTrackerButtton:SetText("Disable")
|
|
else
|
|
sectionFrame.enableEventTrackerButtton:SetText("Enable")
|
|
end
|
|
|
|
if (Details.realtime_dps_meter.enabled) then
|
|
sectionFrame.enableArenaDPSTrackerButtton:SetText("Disable")
|
|
else
|
|
sectionFrame.enableArenaDPSTrackerButtton:SetText("Enable")
|
|
end
|
|
end)
|
|
|
|
|
|
--event tracker
|
|
DF:NewLabel(sectionFrame, _, "$parentEventTrackerAnchor", "eventTrackerAnchor", "Event Tracker", "GameFontNormal")
|
|
sectionFrame.eventTrackerAnchor:SetPoint("topleft", sectionFrame, "topleft", startX, startY - 180)
|
|
|
|
local eventTrackerTitleDesc = DF:NewLabel(sectionFrame, _, "$parentEventTrackerTitleDescText", "EventTrackerTitleDescTextLabel", "Show what's happening near you so the viewer can follow what's going on. Show cooldowns, CC, spell interruption. Useful on any group content.", "GameFontNormal", 10, "white")
|
|
eventTrackerTitleDesc:SetJustifyV ("top")
|
|
eventTrackerTitleDesc:SetSize(270, 40)
|
|
eventTrackerTitleDesc:SetPoint("topleft", sectionFrame.eventTrackerAnchor, "bottomleft", 0, -4)
|
|
|
|
local eventTrackerTitleImage = DF:CreateImage(sectionFrame, [[Interface\AddOns\Details\images\icons2]], 256, 50, "overlay", {0.5, 1, 134/512, 184/512})
|
|
eventTrackerTitleImage:SetPoint("topleft", sectionFrame.eventTrackerAnchor, "bottomleft", 0, -40)
|
|
|
|
local enableEventTracker = function()
|
|
Details.event_tracker.enabled = not Details.event_tracker.enabled
|
|
Details:LoadFramesForBroadcastTools()
|
|
afterUpdate()
|
|
|
|
if (Details.event_tracker.enabled) then
|
|
sectionFrame.enableEventTrackerButtton:SetText("Disable")
|
|
else
|
|
sectionFrame.enableEventTrackerButtton:SetText("Enable")
|
|
end
|
|
end
|
|
|
|
local openEventTrackerOptions = function()
|
|
Details:OpenEventTrackerOptions(true)
|
|
C_Timer.After(0.2, function()
|
|
_G.DetailsOptionsWindow:Hide()
|
|
end)
|
|
end
|
|
|
|
--create the enable, disable and options button
|
|
local enableEventTrackerButtton = DF:CreateButton(sectionFrame, enableEventTracker, 100, 20, "Enable", false, false, "", false, false, false, DF:GetTemplate("dropdown", "OPTIONS_DROPDOWN_TEMPLATE"))
|
|
enableEventTrackerButtton:SetPoint("topleft", eventTrackerTitleImage, "bottomleft", 0, -7)
|
|
|
|
local actionTrackerOptionsButtton = DF:CreateButton(sectionFrame, openEventTrackerOptions, 100, 20, "Options", false, false, "", false, false, false, DF:GetTemplate("dropdown", "OPTIONS_DROPDOWN_TEMPLATE"))
|
|
actionTrackerOptionsButtton:SetPoint("left", enableEventTrackerButtton, "right", 5, 0)
|
|
|
|
sectionFrame.enableEventTrackerButtton = enableEventTrackerButtton
|
|
sectionFrame.actionTrackerOptionsButtton = actionTrackerOptionsButtton
|
|
|
|
|
|
--arena kamehameha bar
|
|
DF:NewLabel(sectionFrame, _, "$parentCurrentDPSAnchor", "currentDPSAnchor", "Arena DPS Bar", "GameFontNormal")
|
|
sectionFrame.currentDPSAnchor:SetPoint("topleft", sectionFrame, "topleft", startX, startY - 340)
|
|
|
|
local currentDPSTitleDesc = DF:NewLabel(sectionFrame, _, "$parentCurrentDPSTitleDescText", "CurrentDPSTitleDescTextLabel", "Show a bar which grows to the side of the team doing most damage in the last 5 seconds.", "GameFontNormal", 10, "white")
|
|
currentDPSTitleDesc:SetJustifyV ("top")
|
|
currentDPSTitleDesc:SetSize(270, 40)
|
|
currentDPSTitleDesc:SetPoint("topleft", sectionFrame.currentDPSAnchor, "bottomleft", 0, -4)
|
|
|
|
local currentDPSTitleImage = DF:CreateImage(sectionFrame, [[Interface\AddOns\Details\images\icons2]], 256, 32, "overlay", {0/512, 256/512, 421/512, 453/512})
|
|
currentDPSTitleImage:SetPoint("topleft", sectionFrame.currentDPSAnchor, "bottomleft", 0, -40)
|
|
|
|
local enableArenaDPS = function()
|
|
Details.realtime_dps_meter.enabled = not Details.realtime_dps_meter.enabled
|
|
Details:LoadFramesForBroadcastTools()
|
|
afterUpdate()
|
|
|
|
if (Details.realtime_dps_meter.enabled) then
|
|
sectionFrame.enableArenaDPSTrackerButtton:SetText("Disable")
|
|
else
|
|
sectionFrame.enableArenaDPSTrackerButtton:SetText("Enable")
|
|
end
|
|
end
|
|
|
|
local openArenaDPSOptions = function()
|
|
Details:OpenCurrentRealDPSOptions(true)
|
|
C_Timer.After(0.2, function()
|
|
_G.DetailsOptionsWindow:Hide()
|
|
end)
|
|
end
|
|
|
|
--create the enable, disable and options button
|
|
local enableArenaDPSTrackerButtton = DF:CreateButton(sectionFrame, enableArenaDPS, 100, 20, "Enable", false, false, "", false, false, false, DF:GetTemplate("dropdown", "OPTIONS_DROPDOWN_TEMPLATE"))
|
|
enableArenaDPSTrackerButtton:SetPoint("topleft", currentDPSTitleImage, "bottomleft", 0, -7)
|
|
|
|
local arenaDPSTrackerOptionsButtton = DF:CreateButton(sectionFrame, openArenaDPSOptions, 100, 20, "Options", false, false, "", false, false, false, DF:GetTemplate("dropdown", "OPTIONS_DROPDOWN_TEMPLATE"))
|
|
arenaDPSTrackerOptionsButtton:SetPoint("left", enableArenaDPSTrackerButtton, "right", 5, 0)
|
|
|
|
sectionFrame.enableArenaDPSTrackerButtton = enableArenaDPSTrackerButtton
|
|
sectionFrame.arenaDPSTrackerOptionsButtton = arenaDPSTrackerOptionsButtton
|
|
|
|
--create a gray texture below each plugin section
|
|
local createBackgroupTexture = function()
|
|
local texture = sectionFrame:CreateTexture(nil, "background")
|
|
texture:SetTexture(1, 1, 1, .1)
|
|
texture:SetSize(300, 150)
|
|
return texture
|
|
end
|
|
|
|
local backgroundTexture1 = createBackgroupTexture()
|
|
backgroundTexture1:SetPoint("topleft", sectionFrame.streamerPluginAnchor.widget, "topleft", -5, 5)
|
|
|
|
local backgroundTexture2 = createBackgroupTexture()
|
|
backgroundTexture2:SetPoint("topleft", sectionFrame.eventTrackerAnchor.widget, "topleft", -5, 5)
|
|
|
|
local backgroundTexture3 = createBackgroupTexture()
|
|
backgroundTexture3:SetPoint("topleft", sectionFrame.currentDPSAnchor.widget, "topleft", -5, 5)
|
|
|
|
|
|
--options
|
|
local sectionOptions = {
|
|
{type = "label", get = function() return Loc ["STRING_GERAL"] .. ":" end, text_template = subSectionTitleTextTemplate},
|
|
|
|
{--no window alerts
|
|
type = "toggle",
|
|
get = function() return Details.streamer_config.no_alerts end,
|
|
set = function(self, fixedparam, value)
|
|
Details.streamer_config.no_alerts = value
|
|
afterUpdate()
|
|
end,
|
|
name = "Suppress Alerts", --localize-me
|
|
desc = "Suppress Alerts",
|
|
},
|
|
|
|
{--60hz updates
|
|
type = "toggle",
|
|
get = function() return Details.streamer_config.faster_updates end,
|
|
set = function(self, fixedparam, value)
|
|
Details.streamer_config.faster_updates = value
|
|
Details:RefreshUpdater()
|
|
afterUpdate()
|
|
end,
|
|
name = "60 Updates per Second", --localize-me
|
|
desc = "60 Updates per Second",
|
|
},
|
|
|
|
{--quick player info
|
|
type = "toggle",
|
|
get = function() return Details.streamer_config.quick_detection end,
|
|
set = function(self, fixedparam, value)
|
|
Details.streamer_config.quick_detection = value
|
|
afterUpdate()
|
|
end,
|
|
name = "Quick Player Info Detection", --localize-me
|
|
desc = "Quick Player Info Detection",
|
|
},
|
|
|
|
{--disable M+ shenanigans
|
|
type = "toggle",
|
|
get = function() return Details.streamer_config.disable_mythic_dungeon end,
|
|
set = function(self, fixedparam, value)
|
|
Details.streamer_config.disable_mythic_dungeon = value
|
|
afterUpdate()
|
|
end,
|
|
name = "Disable Mythic+ Stuff", --localize-me
|
|
desc = "Disable Mythic+ Stuff",
|
|
},
|
|
|
|
{--disable M+ charts
|
|
type = "toggle",
|
|
get = function() return Details.mythic_plus.show_damage_graphic end,
|
|
set = function(self, fixedparam, value)
|
|
Details.mythic_plus.show_damage_graphic = value
|
|
afterUpdate()
|
|
end,
|
|
name = "Disable Mythic+ Chart", --localize-me
|
|
desc = "Disable Mythic+ Chart",
|
|
},
|
|
|
|
{--clear cache regurlary
|
|
type = "toggle",
|
|
get = function() return Details.mythic_plus.show_damage_graphic end,
|
|
set = function(self, fixedparam, value)
|
|
Details.mythic_plus.show_damage_graphic = value
|
|
afterUpdate()
|
|
end,
|
|
name = "Clear Cache Regularly", --localize-me
|
|
desc = "Clear Cache Regularly",
|
|
},
|
|
|
|
}
|
|
|
|
sectionFrame.sectionOptions = sectionOptions
|
|
sectionOptions.always_boxfirst = true
|
|
DF:BuildMenu(sectionFrame, sectionOptions, startX + 350, startY - 20, heightSize + 300, false, options_text_template, options_dropdown_template, options_switch_template, true, options_slider_template, options_button_template)
|
|
end
|
|
|
|
tinsert(Details.optionsSection, buildSection)
|
|
end
|
|
|
|
|
|
-- ~16 ~customspells ~spells
|
|
do
|
|
local buildSection = function(sectionFrame)
|
|
|
|
local name_entry_func = function(index, text)
|
|
Details:UserCustomSpellUpdate (index, text)
|
|
end
|
|
local icon_func = function(index, icon)
|
|
Details:UserCustomSpellUpdate (index, nil, icon)
|
|
end
|
|
local remove_func = function(index)
|
|
Details:UserCustomSpellRemove (index)
|
|
end
|
|
local reset_func = function(index)
|
|
Details:UserCustomSpellReset (index)
|
|
end
|
|
|
|
--custom spells panel
|
|
local header = {
|
|
{name = Loc ["STRING_OPTIONS_SPELL_INDEX"], width = 55, type = "text"},
|
|
{name = Loc ["STRING_OPTIONS_SPELL_NAME"], width = 310, type = "entry", func = name_entry_func},
|
|
{name = Loc ["STRING_OPTIONS_SPELL_ICON"], width = 50, type = "icon", func = icon_func},
|
|
{name = Loc ["STRING_OPTIONS_SPELL_SPELLID"], width = 100, type = "text"},
|
|
{name = Loc ["STRING_OPTIONS_SPELL_RESET"], width = 50, type = "button", func = reset_func, icon = [[Interface\Buttons\UI-RefreshButton]], notext = true, iconalign = "center"},
|
|
{name = Loc ["STRING_OPTIONS_SPELL_REMOVE"], width = 75, type = "button", func = remove_func, icon = [[Interface\Glues\LOGIN\Glues-CheckBox-Check]], notext = true, iconalign = "center"},
|
|
}
|
|
|
|
local total_lines = function()
|
|
return #Details.savedCustomSpells
|
|
end
|
|
local fill_row = function(index)
|
|
local data = Details.savedCustomSpells [index]
|
|
if (data) then
|
|
return {index, data [2], data [3], data [1], ""}
|
|
else
|
|
return {nil, nil, nil, nil, nil}
|
|
end
|
|
end
|
|
|
|
local panel = DF:NewFillPanel (sectionFrame, header, "$parentCustomSpellsFillPanel", "customSpellsFillPanel", 640, 462, total_lines, fill_row, false)
|
|
panel:Refresh()
|
|
|
|
--add
|
|
--add panel
|
|
local addframe = DF:NewPanel(sectionFrame, nil, "$parentCustomSpellsAddPanel", "customSpellsAddPanel", 644, 462)
|
|
addframe:SetPoint(startX, startY - 40)
|
|
addframe:SetFrameLevel(7)
|
|
DF:ApplyStandardBackdrop(addframe)
|
|
addframe:Hide()
|
|
|
|
local spellid = DF:NewLabel(addframe, nil, "$parentSpellidLabel", "spellidLabel", Loc ["STRING_OPTIONS_SPELL_ADDSPELLID"])
|
|
local spellname = DF:NewLabel(addframe, nil, "$parentSpellnameLabel", "spellnameLabel", Loc ["STRING_OPTIONS_SPELL_ADDNAME"])
|
|
local spellicon = DF:NewLabel(addframe, nil, "$parentSpelliconLabel", "spelliconLabel", Loc ["STRING_OPTIONS_SPELL_ADDICON"])
|
|
|
|
local spellname_entry_func = function() end
|
|
local spellname_entry = DF:NewTextEntry(addframe, nil, "$parentSpellnameEntry", "spellnameEntry", 160, 20, spellname_entry_func, nil, nil, nil, nil, options_dropdown_template)
|
|
spellname_entry:SetPoint("left", spellname, "right", 2, 0)
|
|
|
|
local spellid_entry_func = function(arg1, arg2, spellid)
|
|
local spellname, _, icon = _GetSpellInfo(spellid)
|
|
if (spellname) then
|
|
spellname_entry:SetText(spellname)
|
|
addframe.spellIconButton.icon.texture = icon
|
|
else
|
|
Details:Msg(Loc ["STRING_OPTIONS_SPELL_NOTFOUND"])
|
|
end
|
|
end
|
|
local spellid_entry = DF:NewSpellEntry (addframe, spellid_entry_func, 160, 20, nil, nil, "spellidEntry", "$parentSpellidEntry")
|
|
spellid_entry:SetTemplate(options_dropdown_template)
|
|
spellid_entry:SetPoint("left", spellid, "right", 2, 0)
|
|
|
|
local icon_button_func = function(texture)
|
|
addframe.spellIconButton.icon.texture = texture
|
|
end
|
|
local icon_button = DF:NewButton(addframe, nil, "$parentSpellIconButton", "spellIconButton", 20, 20, function() DF:IconPick (icon_button_func, true) end)
|
|
local icon_button_icon = DF:NewImage(icon_button, [[Interface\ICONS\TEMP]], 19, 19, "background", nil, "icon", "$parentSpellIcon")
|
|
icon_button_icon:SetPoint(0, 0)
|
|
icon_button:InstallCustomTexture()
|
|
icon_button:SetPoint("left", spellicon, "right", 2, 0)
|
|
|
|
--close button
|
|
local closebutton = DF:NewButton(addframe, nil, "$parentAddCloseButton", "addClosebutton", 120, 20, function() addframe:Hide() end, nil, nil, nil, Loc ["STRING_OPTIONS_SPELL_CLOSE"], nil, options_button_template)
|
|
|
|
--confirm add spell
|
|
local addspell = function()
|
|
local id = spellid_entry.text
|
|
if (id == "") then
|
|
return Details:Msg(Loc ["STRING_OPTIONS_SPELL_IDERROR"])
|
|
end
|
|
local name = spellname_entry.text
|
|
if (name == "") then
|
|
return Details:Msg(Loc ["STRING_OPTIONS_SPELL_NAMEERROR"])
|
|
end
|
|
local icon = addframe.spellIconButton.icon.texture
|
|
|
|
id = tonumber(id)
|
|
if (not id) then
|
|
return Details:Msg(Loc ["STRING_OPTIONS_SPELL_IDERROR"])
|
|
end
|
|
|
|
local bAddedByUser = true
|
|
Details:UserCustomSpellAdd (id, name, icon, bAddedByUser)
|
|
|
|
panel:Refresh()
|
|
|
|
spellid_entry.text = ""
|
|
spellname_entry.text = ""
|
|
addframe.spellIconButton.icon.texture = [[Interface\ICONS\TEMP]]
|
|
|
|
if (DetailsIconPickFrame and DetailsIconPickFrame:IsShown()) then
|
|
DetailsIconPickFrame:Hide()
|
|
end
|
|
addframe:Hide()
|
|
end
|
|
|
|
local addspellbutton = DF:NewButton(addframe, nil, "$parentAddSpellButton", "addSpellbutton", 120, 20, addspell, nil, nil, nil, Loc ["STRING_OPTIONS_SPELL_ADD"], nil, options_button_template)
|
|
|
|
addspellbutton:SetIcon ([[Interface\Buttons\UI-CheckBox-Check]], 18, 18, nil, nil, nil, 4)
|
|
closebutton:SetIcon ([[Interface\PetBattles\DeadPetIcon]], 14, 14, nil, nil, nil, 4)
|
|
|
|
addspellbutton:SetPoint("bottomright", addframe, "bottomright", -5, 5)
|
|
closebutton:SetPoint("right", addspellbutton, "left", -4, 0)
|
|
|
|
spellid:SetPoint(50, -10)
|
|
spellname:SetPoint(50, -35)
|
|
spellicon:SetPoint(50, -60)
|
|
|
|
--open add panel button
|
|
local add = function()
|
|
addframe:Show()
|
|
end
|
|
local addbutton = DF:NewButton(sectionFrame, nil, "$parentAddButton", "addbutton", 120, 20, add, nil, nil, nil, Loc ["STRING_OPTIONS_SPELL_ADDSPELL"], nil, options_button_template)
|
|
addbutton:SetPoint("bottomright", panel, "topright", -00, 1)
|
|
addbutton:SetIcon ([[Interface\PaperDollInfoFrame\Character-Plus]], 12, 12, nil, nil, nil, 4)
|
|
|
|
panel:SetPoint(startX, startY - 40)
|
|
|
|
--consilidade spells
|
|
DF:NewLabel(sectionFrame, _, "$parentConsolidadeSpellsLabel", "ConsolidadeSpellsLabel", Loc ["STRING_OPTIONSMENU_SPELLS_CONSOLIDATE"], "GameFontHighlightLeft")
|
|
DF:NewSwitch (sectionFrame, _, "$parentConsolidadeSpellsSwitch", "ConsolidadeSpellsSwitch", 60, 20, nil, nil, Details.override_spellids, nil, nil, nil, nil, options_switch_template)
|
|
sectionFrame.ConsolidadeSpellsLabel:SetPoint("left", sectionFrame.ConsolidadeSpellsSwitch, "right", 3)
|
|
sectionFrame.ConsolidadeSpellsSwitch:SetAsCheckBox()
|
|
sectionFrame.ConsolidadeSpellsSwitch.OnSwitch = function(self, instance, value)
|
|
Details.override_spellids = value
|
|
Details:UpdateParserGears()
|
|
end
|
|
|
|
sectionFrame.ConsolidadeSpellsSwitch:SetPoint(startX, startY - 20)
|
|
Details:SetFontSize(sectionFrame.ConsolidadeSpellsLabel, 12)
|
|
|
|
local sectionOptions = {
|
|
|
|
}
|
|
|
|
sectionFrame.sectionOptions = sectionOptions
|
|
sectionOptions.always_boxfirst = true
|
|
DF:BuildMenu(sectionFrame, sectionOptions, startX, startY-20, heightSize, false, options_text_template, options_dropdown_template, options_switch_template, true, options_slider_template, options_button_template)
|
|
end
|
|
|
|
tinsert(Details.optionsSection, buildSection)
|
|
end
|
|
|
|
|
|
-- ~17 ~charts data
|
|
do
|
|
local buildSection = function(sectionFrame)
|
|
|
|
--title
|
|
local titulo_datacharts = DF:NewLabel(sectionFrame, _, "$parentTituloDataChartsText", "DataChartsLabel", Loc ["STRING_OPTIONS_DATACHARTTITLE"], "GameFontNormal", 16)
|
|
local titulo_datacharts_desc = DF:NewLabel(sectionFrame, _, "$parentDataChartsText2", "DataCharts2Label", Loc ["STRING_OPTIONS_DATACHARTTITLE_DESC"], "GameFontNormal", 10, "white")
|
|
titulo_datacharts_desc.width = 350
|
|
|
|
--warning
|
|
if (not Details:GetPlugin ("DETAILS_PLUGIN_CHART_VIEWER")) then
|
|
local label = DF:NewLabel(sectionFrame, _, "$parentPluginWarningLabel", "PluginWarningLabel", Loc ["STRING_OPTIONS_CHART_PLUGINWARNING"], "GameFontNormal")
|
|
local image = DF:NewImage(sectionFrame, [[Interface\DialogFrame\UI-Dialog-Icon-AlertNew]])
|
|
label:SetPoint("topright", sectionFrame, "topright", -42, -10)
|
|
label:SetJustifyH("left")
|
|
label:SetWidth(160)
|
|
image:SetPoint("right", label, "left", -7, 0)
|
|
image:SetSize(32, 32)
|
|
end
|
|
|
|
--panel
|
|
local edit_name = function(index, name)
|
|
Details:TimeDataUpdate (index, name)
|
|
sectionFrame.userTimeCaptureFillPanel:Refresh()
|
|
end
|
|
|
|
local big_code_editor = DF:NewSpecialLuaEditorEntry(sectionFrame, 683, 422, "bigCodeEditor", "$parentBigCodeEditor")
|
|
big_code_editor:SetPoint("topleft", sectionFrame, "topleft", startX, startY - 70)
|
|
big_code_editor:SetFrameLevel(sectionFrame:GetFrameLevel()+6)
|
|
big_code_editor:SetBackdrop({bgFile = [[Interface\AddOns\Details\images\background]], edgeFile = [[Interface\Buttons\WHITE8X8]], edgeSize = 1,tile = 1, tileSize = 16})
|
|
DF:ReskinSlider(big_code_editor.scroll)
|
|
big_code_editor:SetBackdropColor(0.5, 0.5, 0.5, 0.95)
|
|
big_code_editor:SetBackdropBorderColor(0, 0, 0, 1)
|
|
big_code_editor:Hide()
|
|
|
|
local accept = function()
|
|
big_code_editor:ClearFocus()
|
|
if (not big_code_editor.is_export) then
|
|
Details:TimeDataUpdate (big_code_editor.index, nil, big_code_editor:GetText())
|
|
end
|
|
big_code_editor:Hide()
|
|
end
|
|
local cancel = function()
|
|
big_code_editor:ClearFocus()
|
|
big_code_editor:Hide()
|
|
end
|
|
|
|
local accept_changes = DF:NewButton(big_code_editor, nil, "$parentAccept", "acceptButton", 120, 20, accept, nil, nil)
|
|
accept_changes:SetPoint(0, 20)
|
|
accept_changes:SetIcon([[Interface\Buttons\UI-CheckBox-Check]])
|
|
accept_changes:SetTemplate(options_button_template)
|
|
accept_changes:SetText(Loc ["STRING_OPTIONS_CHART_SAVE"])
|
|
|
|
local cancel_changes = DF:NewButton(big_code_editor, nil, "$parentCancel", "CancelButton", 120, 20, cancel, nil, nil)
|
|
cancel_changes:SetPoint("left", accept_changes, "right", 2, 0)
|
|
cancel_changes:SetIcon([[Interface\PetBattles\DeadPetIcon]])
|
|
cancel_changes:SetTemplate(options_button_template)
|
|
cancel_changes:SetText(Loc ["STRING_OPTIONS_CHART_CANCEL"])
|
|
|
|
local edit_code = function(index)
|
|
local data = Details.savedTimeCaptures [index]
|
|
if (data) then
|
|
local func = data [2]
|
|
|
|
if (type(func) == "function") then
|
|
return Details:Msg(Loc ["STRING_OPTIONS_CHART_CODELOADED"])
|
|
end
|
|
|
|
big_code_editor:SetText(func)
|
|
big_code_editor.original_code = func
|
|
big_code_editor.index = index
|
|
big_code_editor.is_export = nil
|
|
big_code_editor:Show()
|
|
|
|
sectionFrame.userTimeCaptureAddPanel:Hide()
|
|
sectionFrame.importEditor:ClearFocus()
|
|
sectionFrame.importEditor:Hide()
|
|
if (DetailsIconPickFrame and DetailsIconPickFrame:IsShown()) then
|
|
DetailsIconPickFrame:Hide()
|
|
end
|
|
end
|
|
end
|
|
|
|
local edit_icon = function(index, icon)
|
|
Details:TimeDataUpdate (index, nil, nil, nil, nil, nil, icon)
|
|
sectionFrame.userTimeCaptureFillPanel:Refresh()
|
|
end
|
|
local edit_author = function(index, author)
|
|
Details:TimeDataUpdate (index, nil, nil, nil, author)
|
|
sectionFrame.userTimeCaptureFillPanel:Refresh()
|
|
end
|
|
local edit_version = function(index, version)
|
|
Details:TimeDataUpdate (index, nil, nil, nil, nil, version)
|
|
sectionFrame.userTimeCaptureFillPanel:Refresh()
|
|
end
|
|
|
|
local big_code_editor2 = DF:NewSpecialLuaEditorEntry(sectionFrame, 643, 402, "exportEditor", "$parentExportEditor", true)
|
|
big_code_editor2:SetPoint("topleft", sectionFrame, "topleft", 7, -70)
|
|
big_code_editor2:SetFrameLevel(sectionFrame:GetFrameLevel()+6)
|
|
big_code_editor2:SetBackdrop({bgFile = [[Interface\AddOns\Details\images\background]], edgeFile = [[Interface\Buttons\WHITE8X8]], edgeSize = 1,tile = 1, tileSize = 16})
|
|
DF:ReskinSlider(big_code_editor2.scroll)
|
|
big_code_editor2:SetBackdropColor(0.5, 0.5, 0.5, 0.95)
|
|
big_code_editor2:SetBackdropBorderColor(0, 0, 0, 1)
|
|
big_code_editor2:Hide()
|
|
|
|
local close_export_box = function()
|
|
big_code_editor2:ClearFocus()
|
|
big_code_editor2:Hide()
|
|
end
|
|
|
|
local close_export = DF:NewButton(big_code_editor2, nil, "$parentClose", "closeButton", 120, 20, close_export_box)
|
|
close_export:SetPoint(10, 18)
|
|
close_export:SetIcon ([[Interface\Buttons\UI-CheckBox-Check]])
|
|
close_export:SetText(Loc ["STRING_OPTIONS_CHART_CLOSE"])
|
|
close_export:SetTemplate(options_button_template)
|
|
|
|
local export_function = function(index)
|
|
local data = Details.savedTimeCaptures [index]
|
|
if (data) then
|
|
local encoded = Details:CompressData (data, "print")
|
|
if (encoded) then
|
|
big_code_editor2:SetText(encoded)
|
|
|
|
big_code_editor2:Show()
|
|
big_code_editor2.editbox:HighlightText()
|
|
big_code_editor2.editbox:SetFocus(true)
|
|
else
|
|
Details:Msg("error exporting the time capture.") --localize-me
|
|
end
|
|
end
|
|
end
|
|
|
|
local remove_capture = function(index)
|
|
Details:TimeDataUnregister (index)
|
|
sectionFrame.userTimeCaptureFillPanel:Refresh()
|
|
end
|
|
|
|
local edit_enabled = function(index, enabled, a, b)
|
|
if (enabled) then
|
|
Details:TimeDataUpdate (index, nil, nil, nil, nil, nil, nil, false)
|
|
else
|
|
Details:TimeDataUpdate (index, nil, nil, nil, nil, nil, nil, true)
|
|
end
|
|
|
|
sectionFrame.userTimeCaptureFillPanel:Refresh()
|
|
end
|
|
|
|
local header = {
|
|
{name = Loc ["STRING_OPTIONS_CHART_NAME"], width = 175, type = "entry", func = edit_name},
|
|
{name = Loc ["STRING_OPTIONS_CHART_EDIT"], width = 55, type = "button", func = edit_code, icon = [[Interface\Buttons\UI-GuildButton-OfficerNote-Disabled]], notext = true, iconalign = "center"},
|
|
{name = Loc ["STRING_OPTIONS_CHART_ICON"], width = 50, type = "icon", func = edit_icon},
|
|
{name = Loc ["STRING_OPTIONS_CHART_AUTHOR"], width = 125, type = "text", func = edit_author},
|
|
{name = Loc ["STRING_OPTIONS_CHART_VERSION"], width = 65, type = "entry", func = edit_version},
|
|
{name = Loc ["STRING_ENABLED"], width = 50, type = "button", func = edit_enabled, icon = [[Interface\COMMON\Indicator-Green]], notext = true, iconalign = "center"},
|
|
{name = Loc ["STRING_OPTIONS_CHART_EXPORT"], width = 50, type = "button", func = export_function, icon = [[Interface\Buttons\UI-GuildButton-MOTD-Up]], notext = true, iconalign = "center"},
|
|
{name = Loc ["STRING_OPTIONS_CHART_REMOVE"], width = 70, type = "button", func = remove_capture, icon = [[Interface\Glues\LOGIN\Glues-CheckBox-Check]], notext = true, iconalign = "center"},
|
|
}
|
|
|
|
local total_lines = function()
|
|
return #Details.savedTimeCaptures
|
|
end
|
|
local fill_row = function(index)
|
|
local data = Details.savedTimeCaptures [index]
|
|
if (data) then
|
|
|
|
local enabled_texture
|
|
if (data[7]) then
|
|
enabled_texture = [[Interface\COMMON\Indicator-Green]]
|
|
else
|
|
enabled_texture = [[Interface\COMMON\Indicator-Red]]
|
|
end
|
|
|
|
return {
|
|
data[1], --name
|
|
"", --func
|
|
data[6], --icon
|
|
data[4], -- author
|
|
data[5], --version
|
|
{func = edit_enabled, icon = enabled_texture, value = data[7]} --enabled
|
|
}
|
|
else
|
|
return {nil, nil, nil, nil, nil, nil}
|
|
end
|
|
end
|
|
|
|
--DetailsOptionsWindowtab17UserTimeCapturesFillPanel
|
|
local panel = DF:NewFillPanel (sectionFrame, header, "$parentUserTimeCapturesFillPanel", "userTimeCaptureFillPanel", 640, 382, total_lines, fill_row, false)
|
|
|
|
panel:SetHook("OnMouseDown", function()
|
|
if (DetailsIconPickFrame and DetailsIconPickFrame:IsShown()) then
|
|
DetailsIconPickFrame:Hide()
|
|
end
|
|
end)
|
|
|
|
panel:Refresh()
|
|
|
|
--add panel
|
|
local addframe = DF:NewPanel(sectionFrame, nil, "$parentUserTimeCapturesAddPanel", "userTimeCaptureAddPanel", 683, 422)
|
|
addframe:SetPoint("topleft", sectionFrame, "topleft", startX, startY - 70)
|
|
addframe:SetFrameLevel(7)
|
|
addframe:Hide()
|
|
|
|
addframe:SetBackdrop({bgFile = [[Interface\AddOns\Details\images\background]], edgeFile = [[Interface\Buttons\WHITE8X8]], edgeSize = 1,tile = 1, tileSize = 16})
|
|
addframe:SetBackdropColor(0.5, 0.5, 0.5, 0.95)
|
|
addframe:SetBackdropBorderColor(0, 0, 0, 1)
|
|
|
|
--name
|
|
local capture_name = DF:NewLabel(addframe, nil, "$parentNameLabel", "nameLabel", Loc ["STRING_OPTIONS_CHART_ADDNAME"])
|
|
local capture_name_entry = DF:NewTextEntry(addframe, nil, "$parentNameEntry", "nameEntry", 160, 20, function() end, nil, nil, nil, nil, options_dropdown_template)
|
|
capture_name_entry:SetMaxLetters (16)
|
|
capture_name_entry:SetPoint("left", capture_name, "right", 2, 0)
|
|
|
|
--function
|
|
local capture_func = DF:NewLabel(addframe, nil, "$parentFunctionLabel", "functionLabel", Loc ["STRING_OPTIONS_CHART_ADDCODE"])
|
|
local capture_func_entry = DF:NewSpecialLuaEditorEntry(addframe.widget, 300, 200, "funcEntry", "$parentFuncEntry")
|
|
capture_func_entry:SetPoint("topleft", capture_func.widget, "topright", 2, 0)
|
|
capture_func_entry:SetSize(500, 220)
|
|
capture_func_entry:SetBackdrop({edgeFile = [[Interface\Buttons\WHITE8X8]], edgeSize = 1, bgFile = [[Interface\Tooltips\UI-Tooltip-Background]], tileSize = 64, tile = true})
|
|
capture_func_entry:SetBackdropBorderColor(0, 0, 0, 1)
|
|
capture_func_entry:SetBackdropColor(0, 0, 0, .5)
|
|
DF:ReskinSlider(capture_func_entry.scroll)
|
|
|
|
--icon
|
|
local capture_icon = DF:NewLabel(addframe, nil, "$parentIconLabel", "iconLabel", Loc ["STRING_OPTIONS_CHART_ADDICON"])
|
|
local icon_button_func = function(texture)
|
|
addframe.iconButton.iconTexture = texture
|
|
addframe.iconButton:SetIcon(texture)
|
|
end
|
|
local capture_icon_button = DF:NewButton(addframe, nil, "$parentIconButton", "iconButton", 20, 20, function() DF:IconPick (icon_button_func, true) end, nil, nil, nil, nil, nil, options_button_template)
|
|
capture_icon_button:SetIcon([[Interface\ICONS\TEMP]])
|
|
capture_icon_button:SetTemplate(options_button_template)
|
|
capture_icon_button:SetPoint("left", capture_icon, "right", 2, 0)
|
|
|
|
--author
|
|
local capture_author = DF:NewLabel(addframe, nil, "$parentAuthorLabel", "authorLabel", Loc ["STRING_OPTIONS_CHART_ADDAUTHOR"])
|
|
local capture_author_entry = DF:NewTextEntry(addframe, nil, "$parentAuthorEntry", "authorEntry", 160, 20, function() end, nil, nil, nil, nil, options_dropdown_template)
|
|
capture_author_entry:SetPoint("left", capture_author, "right", 2, 0)
|
|
|
|
--version
|
|
local capture_version = DF:NewLabel(addframe, nil, "$parentVersionLabel", "versionLabel", Loc ["STRING_OPTIONS_CHART_ADDVERSION"])
|
|
local capture_version_entry = DF:NewTextEntry(addframe, nil, "$parentVersionEntry", "versionEntry", 160, 20, function() end, nil, nil, nil, nil, options_dropdown_template)
|
|
capture_version_entry:SetPoint("left", capture_version, "right", 2, 0)
|
|
|
|
--open add panel button
|
|
local add = function()
|
|
addframe:Show()
|
|
sectionFrame.importEditor:ClearFocus()
|
|
sectionFrame.importEditor:Hide()
|
|
big_code_editor:ClearFocus()
|
|
big_code_editor:Hide()
|
|
big_code_editor2:ClearFocus()
|
|
big_code_editor2:Hide()
|
|
if (DetailsIconPickFrame and DetailsIconPickFrame:IsShown()) then
|
|
DetailsIconPickFrame:Hide()
|
|
end
|
|
end
|
|
|
|
local addbutton = DF:NewButton(sectionFrame, nil, "$parentAddButton", "addbutton", 120, 20, add, nil, nil, nil, Loc ["STRING_OPTIONS_CHART_ADD"], nil, options_button_template)
|
|
addbutton:SetPoint("bottomright", panel, "topright", -30, 0)
|
|
addbutton:SetIcon ([[Interface\PaperDollInfoFrame\Character-Plus]], 12, 12, nil, nil, nil, 4)
|
|
|
|
--open import panel button
|
|
|
|
local importframe = DF:NewSpecialLuaEditorEntry(sectionFrame, 683, 422, "importEditor", "$parentImportEditor", true)
|
|
local font, size, flag = importframe.editbox:GetFont()
|
|
importframe.editbox:SetFont(font, 9, flag)
|
|
importframe:SetPoint("topleft", sectionFrame, "topleft", startX, startY - 70)
|
|
importframe:SetFrameLevel(sectionFrame:GetFrameLevel()+6)
|
|
importframe:SetBackdrop({bgFile = [[Interface\AddOns\Details\images\background]], edgeFile = [[Interface\Buttons\WHITE8X8]], edgeSize = 1,tile = 1, tileSize = 16})
|
|
DF:ReskinSlider(importframe.scroll)
|
|
importframe:SetBackdropColor(0.5, 0.5, 0.5, 0.95)
|
|
importframe:SetBackdropBorderColor(0, 0, 0, 1)
|
|
importframe:Hide()
|
|
|
|
local doimport = function()
|
|
local text = importframe:GetText()
|
|
|
|
text = DF:Trim (text)
|
|
|
|
local dataTable = Details:DecompressData (text, "print")
|
|
if (dataTable) then
|
|
local unserialize = dataTable
|
|
|
|
if (type(unserialize) == "table") then
|
|
if (unserialize[1] and unserialize[2] and unserialize[3] and unserialize[4] and unserialize[5]) then
|
|
local register = Details:TimeDataRegister (unpack(unserialize))
|
|
if (type(register) == "string") then
|
|
Details:Msg(register)
|
|
end
|
|
else
|
|
Details:Msg(Loc ["STRING_OPTIONS_CHART_IMPORTERROR"])
|
|
end
|
|
else
|
|
Details:Msg(Loc ["STRING_OPTIONS_CHART_IMPORTERROR"])
|
|
end
|
|
|
|
importframe:Hide()
|
|
panel:Refresh()
|
|
else
|
|
Details:Msg(Loc ["STRING_CUSTOM_IMPORT_ERROR"])
|
|
return
|
|
end
|
|
end
|
|
|
|
local accept_import = DF:NewButton(importframe, nil, "$parentAccept", "acceptButton", 120, 20, doimport)
|
|
accept_import:SetIcon ([[Interface\Buttons\UI-CheckBox-Check]])
|
|
accept_import:SetPoint(10, 18)
|
|
accept_import:SetText(Loc ["STRING_OPTIONS_CHART_IMPORT"])
|
|
accept_import:SetTemplate(options_button_template)
|
|
|
|
local cancelimport = function()
|
|
importframe:ClearFocus()
|
|
importframe:Hide()
|
|
end
|
|
|
|
local cancel_changes = DF:NewButton(importframe, nil, "$parentCancel", "CancelButton", 120, 20, cancelimport)
|
|
cancel_changes:SetIcon ([[Interface\PetBattles\DeadPetIcon]])
|
|
cancel_changes:SetText(Loc ["STRING_OPTIONS_CHART_CANCEL"])
|
|
cancel_changes:SetPoint(132, 18)
|
|
cancel_changes:SetTemplate(options_button_template)
|
|
|
|
local import = function()
|
|
importframe:Show()
|
|
importframe:SetText("")
|
|
importframe:SetFocus(true)
|
|
addframe:Hide()
|
|
big_code_editor:ClearFocus()
|
|
big_code_editor:Hide()
|
|
big_code_editor2:ClearFocus()
|
|
big_code_editor2:Hide()
|
|
if (DetailsIconPickFrame and DetailsIconPickFrame:IsShown()) then
|
|
DetailsIconPickFrame:Hide()
|
|
end
|
|
end
|
|
|
|
local importbutton = DF:NewButton(sectionFrame, nil, "$parentImportButton", "importbutton", 120, 20, import, nil, nil, nil, Loc ["STRING_OPTIONS_CHART_IMPORT"], nil, options_button_template)
|
|
importbutton:SetPoint("right", addbutton, "left", -4, 0)
|
|
importbutton:SetIcon ([[Interface\Buttons\UI-GuildButton-PublicNote-Up]], 14, 14, nil, nil, nil, 4)
|
|
|
|
--close button
|
|
local closebutton = DF:NewButton(addframe, nil, "$parentAddCloseButton", "addClosebutton", 120, 20, function() addframe:Hide() end, nil, nil, nil, Loc ["STRING_OPTIONS_CHART_CLOSE"], nil, options_button_template)
|
|
--closebutton:InstallCustomTexture()
|
|
|
|
--confirm add capture
|
|
local addcapture = function()
|
|
local name = capture_name_entry.text
|
|
if (name == "") then
|
|
return Details:Msg(Loc ["STRING_OPTIONS_CHART_NAMEERROR"])
|
|
end
|
|
|
|
local author = capture_author_entry.text
|
|
if (author == "") then
|
|
return Details:Msg(Loc ["STRING_OPTIONS_CHART_AUTHORERROR"])
|
|
end
|
|
|
|
local icon = addframe.iconButton.iconTexture
|
|
|
|
local version = capture_version_entry.text
|
|
if (version == "") then
|
|
return Details:Msg(Loc ["STRING_OPTIONS_CHART_VERSIONERROR"])
|
|
end
|
|
|
|
local func = capture_func_entry:GetText()
|
|
if (func == "") then
|
|
return Details:Msg(Loc ["STRING_OPTIONS_CHART_FUNCERROR"])
|
|
end
|
|
|
|
Details:TimeDataRegister (name, func, nil, author, version, icon, true)
|
|
|
|
panel:Refresh()
|
|
|
|
capture_name_entry.text = ""
|
|
capture_author_entry.text = ""
|
|
capture_version_entry.text = ""
|
|
capture_func_entry:SetText("")
|
|
addframe.iconButton:SetTexture([[Interface\ICONS\TEMP]])
|
|
|
|
if (DetailsIconPickFrame and DetailsIconPickFrame:IsShown()) then
|
|
DetailsIconPickFrame:Hide()
|
|
end
|
|
addframe:Hide()
|
|
|
|
end
|
|
|
|
local addcapturebutton = DF:NewButton(addframe, nil, "$parentAddCaptureButton", "addCapturebutton", 120, 21, addcapture, nil, nil, nil, Loc ["STRING_OPTIONS_CHART_ADD2"], nil, options_button_template)
|
|
|
|
--anchors
|
|
local start = 25
|
|
capture_name:SetPoint(start, startY)
|
|
capture_icon:SetPoint(start, -55)
|
|
capture_author:SetPoint(start, -80)
|
|
capture_version:SetPoint(start, -105)
|
|
capture_func:SetPoint(start, -130)
|
|
|
|
addcapturebutton:SetIcon ([[Interface\Buttons\UI-CheckBox-Check]], 18, 18, nil, nil, nil, 4)
|
|
closebutton:SetIcon ([[Interface\PetBattles\DeadPetIcon]], 14, 14, nil, nil, nil, 4)
|
|
|
|
addcapturebutton:SetTemplate(options_button_template)
|
|
closebutton:SetTemplate(options_button_template)
|
|
|
|
addcapturebutton:SetPoint("bottomright", addframe, "bottomright", -5, 5)
|
|
closebutton:SetPoint("right", addcapturebutton, "left", -4, 0)
|
|
|
|
--anchors
|
|
titulo_datacharts:SetPoint(startX, startY)
|
|
titulo_datacharts_desc:SetPoint(startX, startY - 20)
|
|
panel:SetPoint(startX, startY - 70)
|
|
|
|
local sectionOptions = {
|
|
|
|
}
|
|
|
|
sectionFrame.sectionOptions = sectionOptions
|
|
sectionOptions.always_boxfirst = true
|
|
DF:BuildMenu(sectionFrame, sectionOptions, startX, startY-20, heightSize, false, options_text_template, options_dropdown_template, options_switch_template, true, options_slider_template, options_button_template)
|
|
end
|
|
|
|
tinsert(Details.optionsSection, buildSection)
|
|
end
|
|
|
|
-- ~18 - mythic dungeon section
|
|
do
|
|
local buildSection = function(sectionFrame)
|
|
|
|
local sectionOptions = {
|
|
{type = "label", get = function() return Loc["STRING_OPTIONS_MPLUS_DPS_ANCHOR"] end, text_template = subSectionTitleTextTemplate},
|
|
|
|
{
|
|
type = "toggle",
|
|
get = function() return Details.mythic_plus.mythicrun_time_type == 1 end,
|
|
set = function(self, fixedparam, value)
|
|
Details.mythic_plus.mythicrun_time_type = value and 1
|
|
sectionFrame:GetWidgetById("mythic_time_2"):SetValue(not value)
|
|
end,
|
|
name = Loc["STRING_OPTIONS_MPLUS_TIME_INCOMBAT"],
|
|
desc = Loc["STRING_OPTIONS_MPLUS_TIME_INCOMBAT_DESC"],
|
|
id = "mythic_time_1",
|
|
},
|
|
|
|
{
|
|
type = "toggle",
|
|
get = function() return Details.mythic_plus.mythicrun_time_type == 2 end,
|
|
set = function(self, fixedparam, value)
|
|
Details.mythic_plus.mythicrun_time_type = value and 2
|
|
sectionFrame:GetWidgetById("mythic_time_1"):SetValue(not value)
|
|
end,
|
|
name = Loc["STRING_OPTIONS_MPLUS_TIME_RUNTIME"],
|
|
desc = Loc["STRING_OPTIONS_MPLUS_TIME_RUNTIME_DESC"],
|
|
id = "mythic_time_2",
|
|
},
|
|
|
|
{type = "blank"},
|
|
{type = "label", get = function() return Loc["STRING_SEGMENTS"] end, text_template = subSectionTitleTextTemplate},
|
|
|
|
{--dedicated segment for bosses
|
|
type = "toggle",
|
|
get = function() return Details.mythic_plus.boss_dedicated_segment end,
|
|
set = function(self, fixedparam, value)
|
|
Details.mythic_plus.boss_dedicated_segment = value
|
|
end,
|
|
name = Loc["STRING_OPTIONS_MPLUS_BOSSNEWCOMBAT"],
|
|
desc = Loc["STRING_OPTIONS_MPLUS_BOSSNEWCOMBAT_DESC"],
|
|
},
|
|
|
|
{--make overall when done
|
|
type = "toggle",
|
|
get = function() return Details.mythic_plus.make_overall_when_done end,
|
|
set = function(self, fixedparam, value)
|
|
Details.mythic_plus.make_overall_when_done = value
|
|
end,
|
|
name = Loc["STRING_OPTIONS_MPLUS_MAKEOVERALL"],
|
|
desc = Loc["STRING_OPTIONS_MPLUS_MAKEOVERALL_DESC"],
|
|
},
|
|
|
|
{--merge trash
|
|
type = "toggle",
|
|
get = function() return Details.mythic_plus.merge_boss_trash end,
|
|
set = function(self, fixedparam, value)
|
|
Details.mythic_plus.merge_boss_trash = value
|
|
end,
|
|
name = Loc["STRING_OPTIONS_MPLUS_MERGETRASH"],
|
|
desc = Loc["STRING_OPTIONS_MPLUS_MERGETRASH"],
|
|
},
|
|
|
|
{type = "blank"},
|
|
{type = "label", get = function() return Loc["STRING_OPTIONS_MPLUS_PANELS_ANCHOR"] end, text_template = subSectionTitleTextTemplate},
|
|
|
|
{--show chart popup
|
|
type = "toggle",
|
|
get = function() return Details.mythic_plus.show_damage_graphic end,
|
|
set = function(self, fixedparam, value)
|
|
Details.mythic_plus.show_damage_graphic = value
|
|
end,
|
|
name = Loc["STRING_OPTIONS_MPLUS_SHOWENDPANEL"],
|
|
desc = Loc["STRING_OPTIONS_MPLUS_SHOWENDPANEL"],
|
|
},
|
|
}
|
|
|
|
sectionFrame.sectionOptions = sectionOptions
|
|
sectionOptions.always_boxfirst = true
|
|
DF:BuildMenu(sectionFrame, sectionOptions, startX, startY-20, heightSize, false, options_text_template, options_dropdown_template, options_switch_template, true, options_slider_template, options_button_template)
|
|
end
|
|
|
|
tinsert(Details.optionsSection, buildSection)
|
|
end
|
|
|
|
-- ~19 - search results
|
|
do
|
|
--[=
|
|
local buildSection = function(sectionFrame)
|
|
--local sectionOptions = {}
|
|
--DF:BuildMenu(sectionFrame, sectionOptions, startX, startY-20, heightSize, false, options_text_template, options_dropdown_template, options_switch_template, true, options_slider_template, options_button_template)
|
|
end
|
|
tinsert(Details.optionsSection, buildSection)
|
|
--]=]
|
|
end
|
|
|
|
|
|
-- ~20 combat log settings
|
|
do
|
|
local buildSection = function(sectionFrame)
|
|
--deathlog limit
|
|
local onSelectDeathLogLimit = function(_, _, limitAmount)
|
|
Details:SetDeathLogLimit(limitAmount)
|
|
end
|
|
local DeathLogLimitOptions = {
|
|
{value = 16, label = "16 Records", onclick = onSelectDeathLogLimit, icon = [[Interface\WorldStateFrame\ColumnIcon-GraveyardDefend0]]},
|
|
{value = 32, label = "32 Records", onclick = onSelectDeathLogLimit, icon = [[Interface\WorldStateFrame\ColumnIcon-GraveyardDefend0]]},
|
|
{value = 45, label = "45 Records", onclick = onSelectDeathLogLimit, icon = [[Interface\WorldStateFrame\ColumnIcon-GraveyardDefend0]]},
|
|
}
|
|
local buildDeathLogLimitMenu = function()
|
|
return DeathLogLimitOptions
|
|
end
|
|
|
|
local sectionOptions = {
|
|
{type = "label", get = function() return "Death Log Options:" end, text_template = subSectionTitleTextTemplate},
|
|
{--reverse death logs
|
|
type = "toggle",
|
|
get = function() return Details.combat_log.inverse_deathlog_raid end,
|
|
set = function(self, fixedparam, value)
|
|
Details.combat_log.inverse_deathlog_raid = value
|
|
end,
|
|
name = "Invert Death Log (Raid)",
|
|
desc = "Invert Death Log (Raid)",
|
|
},
|
|
|
|
{--reverse death logs
|
|
type = "toggle",
|
|
get = function() return Details.combat_log.inverse_deathlog_mplus end,
|
|
set = function(self, fixedparam, value)
|
|
Details.combat_log.inverse_deathlog_mplus = value
|
|
end,
|
|
name = "Invert Death Log (M+)",
|
|
desc = "Invert Death Log (M+)",
|
|
},
|
|
|
|
{--reverse death logs
|
|
type = "toggle",
|
|
get = function() return Details.combat_log.inverse_deathlog_overalldata end,
|
|
set = function(self, fixedparam, value)
|
|
Details.combat_log.inverse_deathlog_overalldata = value
|
|
end,
|
|
name = "Invert Death Log (Overall Data)",
|
|
desc = "Invert Death Log (Overall Data)",
|
|
},
|
|
|
|
{--pvp frags
|
|
type = "toggle",
|
|
get = function() return Details.only_pvp_frags end,
|
|
set = function(self, fixedparam, value)
|
|
Details.only_pvp_frags = value
|
|
afterUpdate()
|
|
end,
|
|
name = Loc ["STRING_OPTIONS_PVPFRAGS"],
|
|
desc = Loc ["STRING_OPTIONS_PVPFRAGS_DESC"],
|
|
boxfirst = true,
|
|
},
|
|
|
|
{--death log size
|
|
type = "select",
|
|
get = function() return Details.deadlog_events end,
|
|
values = function()
|
|
return buildDeathLogLimitMenu()
|
|
end,
|
|
name = Loc ["STRING_OPTIONS_DEATHLIMIT"],
|
|
desc = Loc ["STRING_OPTIONS_DEATHLIMIT_DESC"],
|
|
},
|
|
|
|
{--death log min healing
|
|
type = "range",
|
|
get = function() return Details.deathlog_healingdone_min end,
|
|
set = function(self, fixedparam, value)
|
|
Details.deathlog_healingdone_min = value
|
|
afterUpdate()
|
|
end,
|
|
min = 0,
|
|
max = 100000,
|
|
step = 1,
|
|
name = Loc ["STRING_OPTIONS_DEATHLOG_MINHEALING"],
|
|
desc = Loc ["STRING_OPTIONS_DEATHLOG_MINHEALING_DESC"],
|
|
},
|
|
|
|
{type = "blank"},
|
|
{type = "label", get = function() return "Damage Options:" end, text_template = subSectionTitleTextTemplate},
|
|
{--damage taken everything
|
|
type = "toggle",
|
|
get = function() return Details.damage_taken_everything end,
|
|
set = function(self, fixedparam, value)
|
|
Details.damage_taken_everything = value
|
|
afterUpdate()
|
|
end,
|
|
name = Loc ["STRING_OPTIONS_DTAKEN_EVERYTHING"],
|
|
desc = Loc ["STRING_OPTIONS_DTAKEN_EVERYTHING_DESC"],
|
|
boxfirst = true,
|
|
},
|
|
|
|
{--merge gemstone 10.0.7
|
|
type = "toggle",
|
|
get = function() return Details.combat_log.merge_gemstones_1007 end,
|
|
set = function(self, fixedparam, value)
|
|
Details.combat_log.merge_gemstones_1007 = value
|
|
afterUpdate()
|
|
Details:ClearParserCache()
|
|
end,
|
|
name = "Merge Primordial Stones 10.0.7",
|
|
desc = "Merge Primordial Stones 10.0.7",
|
|
boxfirst = true,
|
|
},
|
|
|
|
{type = "blank"},
|
|
{type = "label", get = function() return "Class Options:" end, text_template = subSectionTitleTextTemplate},
|
|
|
|
{--hunter track pet frenzy
|
|
type = "toggle",
|
|
get = function() return Details.combat_log.track_hunter_frenzy end,
|
|
set = function(self, fixedparam, value)
|
|
Details.combat_log.track_hunter_frenzy = value
|
|
afterUpdate()
|
|
Details:ClearParserCache()
|
|
end,
|
|
name = DF:AddClassIconToText("Hunter Track Pet Frenzy", false, "HUNTER"),
|
|
desc = "Hunter Track Pet Frenzy",
|
|
boxfirst = true,
|
|
},
|
|
|
|
{type = "blank"},
|
|
{type = "label", get = function() return "Parser Options:" end, text_template = subSectionTitleTextTemplate},
|
|
|
|
{--overheal shields
|
|
type = "toggle",
|
|
get = function() return Details.parser_options.shield_overheal end,
|
|
set = function(self, fixedparam, value)
|
|
Details.parser_options.shield_overheal = value
|
|
afterUpdate()
|
|
Details:ClearParserCache()
|
|
Details:UpdateParserGears()
|
|
end,
|
|
name = "Calculate Shield Wasted Amount",
|
|
desc = "This is the 'overheal' of shields, it is calculated when a shield get replaced or removed.",
|
|
boxfirst = true,
|
|
},
|
|
|
|
{--energy wasted energy overflown
|
|
type = "toggle",
|
|
get = function() return Details.parser_options.energy_overflow end,
|
|
set = function(self, fixedparam, value)
|
|
Details.parser_options.energy_overflow = value
|
|
afterUpdate()
|
|
Details:ClearParserCache()
|
|
Details:UpdateParserGears()
|
|
end,
|
|
name = "Calculate Energy Wasted Amount",
|
|
desc = "Compute the energy wasted by players when they are at maximum energy.",
|
|
boxfirst = true,
|
|
},
|
|
|
|
{--merge healing criticals
|
|
type = "toggle",
|
|
get = function() return Details.combat_log.merge_critical_heals end,
|
|
set = function(self, fixedparam, value)
|
|
Details.combat_log.merge_critical_heals = value
|
|
afterUpdate()
|
|
Details:ClearParserCache()
|
|
end,
|
|
name = "Merge Critical Heals",
|
|
desc = "Merges spells like Atonement and Awakened Faeline with their critical damage component.",
|
|
boxfirst = true,
|
|
},
|
|
|
|
{--separate DoT effects
|
|
type = "toggle",
|
|
get = function() return Details.combat_log.separate_dot_effects end,
|
|
set = function(self, fixedparam, value)
|
|
Details.combat_log.separate_dot_effects = value
|
|
end,
|
|
name = "Separate Damage Over Time Effects",
|
|
desc = "If Enabled, spells which deal initial damage and then damage over time will be tracked separately.",
|
|
boxfirst = true,
|
|
},
|
|
{--separate HoT effects
|
|
type = "toggle",
|
|
get = function() return Details.combat_log.separate_hot_effects end,
|
|
set = function(self, fixedparam, value)
|
|
Details.combat_log.separate_hot_effects = value
|
|
end,
|
|
name = "Separate Heal Over Time Effects",
|
|
desc = "If Enabled, spells which have initial healing and then heal over time will be tracked separately.",
|
|
boxfirst = true,
|
|
},
|
|
}
|
|
|
|
sectionFrame.sectionOptions = sectionOptions
|
|
sectionOptions.always_boxfirst = true
|
|
DF:BuildMenu(sectionFrame, sectionOptions, startX, startY-20, heightSize, false, options_text_template, options_dropdown_template, options_switch_template, true, options_slider_template, options_button_template)
|
|
end
|
|
|
|
tinsert(Details.optionsSection, buildSection)
|
|
end
|
|
|
|
|
|
--[=[
|
|
do
|
|
local buildSection = function(sectionFrame)
|
|
|
|
local sectionOptions = {
|
|
|
|
}
|
|
|
|
DF:BuildMenu(sectionFrame, sectionOptions, startX, startY-20, heightSize, false, options_text_template, options_dropdown_template, options_switch_template, true, options_slider_template, options_button_template)
|
|
end
|
|
|
|
tinsert(Details.optionsSection, buildSection)
|
|
end
|
|
--]=]
|