Skip to content

Commit

Permalink
Cataclysm beta fixes
Browse files Browse the repository at this point in the history
  • Loading branch information
Tercioo committed Apr 20, 2024
1 parent 96ee6ad commit 0f56146
Show file tree
Hide file tree
Showing 3 changed files with 122 additions and 7 deletions.
122 changes: 117 additions & 5 deletions Libs/DF/buildmenu.lua
Original file line number Diff line number Diff line change
Expand Up @@ -98,10 +98,18 @@ detailsFramework.OptionsFrameMixin = {

}

local onWidgetSetInUse = function(widget, widgetTable)
if (widgetTable.childrenids) then
widget.childrenids = widgetTable.childrenids
end
widget.children_follow_enabled = widgetTable.children_follow_enabled
end

local setWidgetId = function(parent, widgetTable, widgetObject)
if (widgetTable.id) then
parent.widgetids[widgetTable.id] = widgetObject
end
widgetTable.widget = widgetObject
end

local onEnterHighlight = function(self)
Expand Down Expand Up @@ -166,6 +174,7 @@ local setLabelProperties = function(parent, widget, widgetTable, currentXOffset,
end

setWidgetId(parent, widgetTable, widget)
onWidgetSetInUse(widget, widgetTable)
end

local setDropdownProperties = function(parent, widget, widgetTable, currentXOffset, currentYOffset, template, widgetWidth, widgetHeight, bAlignAsPairs, nAlignAsPairsLength, valueChangeHook, maxColumnWidth, maxWidgetWidth)
Expand Down Expand Up @@ -224,6 +233,8 @@ local setDropdownProperties = function(parent, widget, widgetTable, currentXOffs
maxWidgetWidth = widget:GetWidth()
end

onWidgetSetInUse(widget, widgetTable)

return maxColumnWidth, maxWidgetWidth
end

Expand All @@ -236,7 +247,49 @@ local setToggleProperties = function(parent, widget, widgetTable, currentXOffset
widget:SetAsCheckBox()
end

widget:SetValue(widgetTable.get())
if (widgetTable.children_follow_enabled) then
widget.SetValueOriginal = widget.SetValue

local newSetFunc = function(widget, value)
--look for children ids
local childrenids = widgetTable.childrenids
if (type(childrenids) == "table") then
for i, childId in ipairs(childrenids) do
local childWidget = parent:GetWidgetById(childId)
if (childWidget) then
--if the children_follow_reverse is true, then the children will be enabled when the toogle is disabeld
--this is used when the main toggle is a kind of "Do This Automatically", if is not doing it automatically
--then the children should be enabled to set the options
if (widgetTable.children_follow_reverse) then
if (value) then
childWidget:Disable()
else
childWidget:Enable()
end
else
if (value) then
childWidget:Enable()
else
childWidget:Disable()
end
end
end
end
end

widget.SetValueOriginal(widget, value)
return value
end

widget:SetValue(widgetTable.get())
rawset(widget, "SetValue", newSetFunc)
else
if (widget.SetValueOriginal) then
rawset(widget, "SetValue", widget.SetValueOriginal)
rawset(widget, "SetValueOriginal", nil)
end
widget:SetValue(widgetTable.get())
end

if (widgetWidth) then
PixelUtil.SetWidth(widget.widget, widgetWidth)
Expand Down Expand Up @@ -302,6 +355,8 @@ local setToggleProperties = function(parent, widget, widgetTable, currentXOffset
maxWidgetWidth = widget:GetWidth()
end

onWidgetSetInUse(widget, widgetTable)

return maxColumnWidth, maxWidgetWidth, extraPaddingY
end

Expand Down Expand Up @@ -378,6 +433,8 @@ local setRangeProperties = function(parent, widget, widgetTable, currentXOffset,
maxWidgetWidth = widget:GetWidth()
end

onWidgetSetInUse(widget, widgetTable)

return maxColumnWidth, maxWidgetWidth
end

Expand Down Expand Up @@ -456,6 +513,8 @@ local setColorProperties = function(parent, widget, widgetTable, currentXOffset,
maxWidgetWidth = widget:GetWidth()
end

onWidgetSetInUse(widget, widgetTable)

return maxColumnWidth, maxWidgetWidth, extraPaddingY
end

Expand Down Expand Up @@ -522,6 +581,8 @@ local setExecuteProperties = function(parent, widget, widgetTable, currentXOffse
maxWidgetWidth = widget:GetWidth()
end

onWidgetSetInUse(widget, widgetTable)

return maxColumnWidth, maxWidgetWidth, latestInlineWidget
end

Expand Down Expand Up @@ -590,9 +651,44 @@ local setTextEntryProperties = function(parent, widget, widgetTable, currentXOff
maxWidgetWidth = widget:GetWidth()
end

onWidgetSetInUse(widget, widgetTable)

return maxColumnWidth, maxWidgetWidth
end

local onMenuBuilt = function(parent)
--refresh the options to find children to disable or enable
if (parent.build_menu_options) then
for index, widgetTable in ipairs(parent.build_menu_options) do
if (widgetTable.children_follow_enabled) then --not found, bug
local widget = widgetTable.widget
local childrenids = widgetTable.childrenids
if (type(childrenids) == "table") then
for i, childId in ipairs(childrenids) do
local childWidget = parent:GetWidgetById(childId)
if (childWidget) then
local value = widget:GetValue()
if (widgetTable.children_follow_reverse) then
if (value) then
childWidget:Disable()
else
childWidget:Enable()
end
else
if (value) then
childWidget:Enable()
else
childWidget:Disable()
end
end
end
end
end
end
end
end
end

local refreshOptions = function(self)
for _, widget in ipairs(self.widget_list) do
if (widget._get) then
Expand Down Expand Up @@ -621,6 +717,8 @@ local refreshOptions = function(self)
end
end
end

onMenuBuilt(self)
end

detailsFramework.internalFunctions.RefreshOptionsPanel = refreshOptions
Expand Down Expand Up @@ -839,6 +937,12 @@ local getMenuWidgetVolative = function(parent, widgetType, indexTable)
end
end

--clean children ids, children ids are used to disable or enable other widgets when a widget is disabled or enabled
if (widgetObject.childrenids) then
table.wipe(widgetObject.childrenids)
end
widgetObject.children_follow_enabled = nil

return widgetObject
end

Expand Down Expand Up @@ -919,10 +1023,13 @@ function detailsFramework:BuildMenuVolatile(parent, menuOptions, xOffset, yOffse
}

parseOptionsTypes(menuOptions)

local bUseBoxFirstOnAllWidgets, widgetWidth, widgetHeight, bAlignAsPairs, nAlignAsPairsLength, nAlignAsPairsSpacing, bUseScrollFrame, languageAddonId, bAttachSliderButtonsToLeft = parseOptionsTable(menuOptions)
parent, height = parseParent(bUseScrollFrame, parent, height, yOffset)
local languageTable = parseLanguageTable(languageAddonId)

parent.build_menu_options = menuOptions

for index, widgetTable in ipairs(menuOptions) do
if (not widgetTable.hidden) then
local widgetCreated
Expand Down Expand Up @@ -956,7 +1063,7 @@ function detailsFramework:BuildMenuVolatile(parent, menuOptions, xOffset, yOffse

--dropdowns
elseif (widgetTable.type:find("select")) then
assert(widgetTable.get, "DetailsFramework:BuildMenu(): .get() not found in the widget table for 'select'")
assert(widgetTable.get, "DetailsFramework:BuildMenu: .get() not found in the widget table for 'select'")
local dropdown = getMenuWidgetVolative(parent, "dropdown", widgetIndexes)
widgetCreated = dropdown
local defaultHeight = 18
Expand Down Expand Up @@ -1117,6 +1224,7 @@ function detailsFramework:BuildMenuVolatile(parent, menuOptions, xOffset, yOffse
end

detailsFramework.RefreshUnsafeOptionsWidgets()
onMenuBuilt(parent)
end

local getDescripttionPhraseID = function(widgetTable, languageAddonId, languageTable)
Expand Down Expand Up @@ -1151,10 +1259,13 @@ function detailsFramework:BuildMenu(parent, menuOptions, xOffset, yOffset, heigh

--parse settings and the options table
parseOptionsTypes(menuOptions)

local bUseBoxFirstOnAllWidgets, widgetWidth, widgetHeight, bAlignAsPairs, nAlignAsPairsLength, nAlignAsPairsSpacing, bUseScrollFrame, languageAddonId, bAttachSliderButtonsToLeft = parseOptionsTable(menuOptions)
parent, height = parseParent(bUseScrollFrame, parent, height, yOffset)
local languageTable = parseLanguageTable(languageAddonId)

parent.build_menu_options = menuOptions

if (not parent.widget_list) then
detailsFramework:SetAsOptionsPanel(parent)
end
Expand Down Expand Up @@ -1197,7 +1308,7 @@ function detailsFramework:BuildMenu(parent, menuOptions, xOffset, yOffset, heigh

elseif (widgetTable.type:find("select")) then
---@cast widgetTable df_menu_dropdown
assert(widgetTable.get, "DetailsFramework:BuildMenu(): .get not found in the widget table for 'select'")
assert(widgetTable.get, "DetailsFramework:BuildMenu: .get not found in the widget table for 'select'")
local defaultHeight = 18

local dropdown
Expand Down Expand Up @@ -1267,7 +1378,7 @@ function detailsFramework:BuildMenu(parent, menuOptions, xOffset, yOffset, heigh
elseif (widgetTable.type == "range") then
---@cast widgetTable df_menu_range

assert(widgetTable.get, "DetailsFramework:BuildMenu(): .get not found in the widget table for 'range'")
assert(widgetTable.get, "DetailsFramework:BuildMenu: .get not found in the widget table for 'range'")
local bIsDecimals = widgetTable.usedecimals
local slider = detailsFramework:NewSlider(parent, nil, "$parentWidget" .. index, nil, widgetWidth or 140, widgetHeight or 18, widgetTable.min, widgetTable.max, widgetTable.step, widgetTable.get(), bIsDecimals, nil, nil, sliderTemplate)

Expand All @@ -1290,7 +1401,7 @@ function detailsFramework:BuildMenu(parent, menuOptions, xOffset, yOffset, heigh

elseif (widgetTable.type == "color") then
---@cast widgetTable df_menu_color
assert(widgetTable.get, "DetailsFramework:BuildMenu(): .get not found in the widget table for 'color'")
assert(widgetTable.get, "DetailsFramework:BuildMenu: .get not found in the widget table for 'color'")
local colorpick = detailsFramework:NewColorPickButton(parent, "$parentWidget" .. index, nil, widgetTable.set, nil, buttonTemplate)

local descPhraseId = getDescripttionPhraseID(widgetTable, languageAddonId, languageTable)
Expand Down Expand Up @@ -1404,6 +1515,7 @@ function detailsFramework:BuildMenu(parent, menuOptions, xOffset, yOffset, heigh
end

detailsFramework.RefreshUnsafeOptionsWidgets()
onMenuBuilt(parent)
end


Expand Down
2 changes: 1 addition & 1 deletion Libs/DF/fw.lua
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@


local dversion = 528
local dversion = 529
local major, minor = "DetailsFramework-1.0", dversion
local DF, oldminor = LibStub:NewLibrary(major, minor)

Expand Down
5 changes: 4 additions & 1 deletion functions/ej_cache.lua
Original file line number Diff line number Diff line change
Expand Up @@ -158,7 +158,10 @@ function Details222.EJCache.CreateEncounterJournalDump()
--use current tier for dungeons, as the current tier shows the dungeons used for the current season of Mythic+
local startIndex, endIndex
if (bIsRaid) then
if currentTierId == 1 then break end --Cata has only one tier. Looking up tier 0 errors. ~CATA

if (detailsFramework.IsCataWow()) then
if currentTierId == 1 then break end --Cata has only one tier. Looking up tier 0 errors. ~CATA
end
EJ_SelectTier(currentTierId - 1) --print("tier selected:", currentTierId - 1, "raids") --debug
startIndex = raidTierStartIndex
endIndex = 20
Expand Down

0 comments on commit 0f56146

Please sign in to comment.