From 6abc2cc879502c605ab90fbf832b944a1411099b Mon Sep 17 00:00:00 2001 From: Tercio Jose Date: Mon, 4 Dec 2023 20:45:16 -0300 Subject: [PATCH] Framework Update --- Definitions.lua | 5 +++-- Libs/DF/buildmenu.lua | 20 +++++++++++--------- Libs/DF/externals.lua | 2 +- Libs/DF/fw.lua | 5 +++-- Libs/DF/slider.lua | 38 ++++++++++++++++++++++++++++++++------ 5 files changed, 50 insertions(+), 20 deletions(-) diff --git a/Definitions.lua b/Definitions.lua index d311bc1a..a0a8fc7e 100644 --- a/Definitions.lua +++ b/Definitions.lua @@ -135,8 +135,9 @@ ---@field GetCombatUID fun(combat: combat) : uniquecombatid ---@field GetTimeData fun(combat: combat, dataName: string) : table ---@field GetPhases fun(combat: combat) : table ----@field GetCombatTime fun(combat) : number ----@field GetRunTime fun(combat) : number +---@field GetCombatTime fun(comba: combat) : number +---@field GetRunTime fun(combat: combat) : number return the elapsed time of a mythic+ dungeon run, if not exists, return the combat time +---@field GetRunTimeNoDefault fun(combat: combat) : number return the elapsed time of a mythic+ dungeon run, nil if not exists ---@field GetDeaths fun(combat) : table --get the table which contains the deaths of the combat ---@field GetStartTime fun(combat: combat) : number ---@field SetStartTime fun(combat: combat, time: number) diff --git a/Libs/DF/buildmenu.lua b/Libs/DF/buildmenu.lua index e5b04099..e162ed36 100644 --- a/Libs/DF/buildmenu.lua +++ b/Libs/DF/buildmenu.lua @@ -265,8 +265,8 @@ local setToggleProperties = function(parent, widget, widgetTable, currentXOffset end else if (widgetTable.boxfirst or bUseBoxFirstOnAllWidgets) then - widget:SetPoint("left", label, "right", 2, 0) - label:SetPoint("topleft", parent, "topleft", currentXOffset, currentYOffset) + label:SetPoint("left", widget.widget or widget, "right", 2, 0) + widget:SetPoint("topleft", parent, "topleft", currentXOffset, currentYOffset) local nextWidgetTable = menuOptions[index+1] if (nextWidgetTable) then @@ -304,11 +304,13 @@ local setToggleProperties = function(parent, widget, widgetTable, currentXOffset return maxColumnWidth, maxWidgetWidth, extraPaddingY end -local setRangeProperties = function(parent, widget, widgetTable, currentXOffset, currentYOffset, template, widgetWidth, widgetHeight, bAlignAsPairs, nAlignAsPairsLength, valueChangeHook, maxColumnWidth, maxWidgetWidth, bIsDecimals) +local setRangeProperties = function(parent, widget, widgetTable, currentXOffset, currentYOffset, template, widgetWidth, widgetHeight, bAlignAsPairs, nAlignAsPairsLength, valueChangeHook, maxColumnWidth, maxWidgetWidth, bIsDecimals, bAttachSliderButtonsToLeft) widget._get = widgetTable.get widget.widget_type = "range" widget:SetTemplate(template) + widget.bAttachButtonsToLeft = bAttachSliderButtonsToLeft + if (bIsDecimals) then widget.slider:SetValueStep(0.01) else @@ -658,12 +660,13 @@ local parseOptionsTable = function(menuOptions) local bAlignAsPairs = menuOptions.align_as_pairs local nAlignAsPairsLength = menuOptions.align_as_pairs_string_space or 160 local nAlignAsPairsSpacing = menuOptions.align_as_pairs_spacing or 20 + local bAttachSliderButtonsToLeft = menuOptions.slider_buttons_to_left --if a scrollbox is passed, the height can be ignored --the scrollBox child will be used as the parent, and the height of the child will be resized to fit the widgets local bUseScrollFrame = menuOptions.use_scrollframe local languageAddonId = menuOptions.language_addonId - return bUseBoxFirstOnAllWidgets, widgetWidth, widgetHeight, bAlignAsPairs, nAlignAsPairsLength, nAlignAsPairsSpacing, bUseScrollFrame, languageAddonId + return bUseBoxFirstOnAllWidgets, widgetWidth, widgetHeight, bAlignAsPairs, nAlignAsPairsLength, nAlignAsPairsSpacing, bUseScrollFrame, languageAddonId, bAttachSliderButtonsToLeft end local parseParent = function(bUseScrollFrame, parent, height, yOffset) @@ -915,7 +918,7 @@ function detailsFramework:BuildMenuVolatile(parent, menuOptions, xOffset, yOffse } parseOptionsTypes(menuOptions) - local bUseBoxFirstOnAllWidgets, widgetWidth, widgetHeight, bAlignAsPairs, nAlignAsPairsLength, nAlignAsPairsSpacing, bUseScrollFrame, languageAddonId = parseOptionsTable(menuOptions) + local bUseBoxFirstOnAllWidgets, widgetWidth, widgetHeight, bAlignAsPairs, nAlignAsPairsLength, nAlignAsPairsSpacing, bUseScrollFrame, languageAddonId, bAttachSliderButtonsToLeft = parseOptionsTable(menuOptions) parent, height = parseParent(bUseScrollFrame, parent, height, yOffset) local languageTable = parseLanguageTable(languageAddonId) @@ -1015,7 +1018,7 @@ function detailsFramework:BuildMenuVolatile(parent, menuOptions, xOffset, yOffse slider.hasLabel.text = namePhrase slider.hasLabel:SetTemplate(widgetTable.text_template or textTemplate) - maxColumnWidth, maxWidgetWidth = setRangeProperties(parent, slider, widgetTable, currentXOffset, currentYOffset, sliderTemplate, widgetWidth, widgetHeight, bAlignAsPairs, nAlignAsPairsLength, valueChangeHook, maxColumnWidth, maxWidgetWidth, widgetTable.usedecimals) + maxColumnWidth, maxWidgetWidth = setRangeProperties(parent, slider, widgetTable, currentXOffset, currentYOffset, sliderTemplate, widgetWidth, widgetHeight, bAlignAsPairs, nAlignAsPairsLength, valueChangeHook, maxColumnWidth, maxWidgetWidth, widgetTable.usedecimals, bAttachSliderButtonsToLeft) amountLineWidgetAdded = amountLineWidgetAdded + 1 --color @@ -1147,7 +1150,7 @@ 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 = parseOptionsTable(menuOptions) + local bUseBoxFirstOnAllWidgets, widgetWidth, widgetHeight, bAlignAsPairs, nAlignAsPairsLength, nAlignAsPairsSpacing, bUseScrollFrame, languageAddonId, bAttachSliderButtonsToLeft = parseOptionsTable(menuOptions) parent, height = parseParent(bUseScrollFrame, parent, height, yOffset) local languageTable = parseLanguageTable(languageAddonId) @@ -1276,8 +1279,7 @@ function detailsFramework:BuildMenu(parent, menuOptions, xOffset, yOffset, heigh local namePhraseId = getNamePhraseID(widgetTable, languageAddonId, languageTable, true) DetailsFramework.Language.RegisterObjectWithDefault(languageAddonId, label.widget, namePhraseId, formatOptionNameWithColon(widgetTable.name, useColon)) - maxColumnWidth, maxWidgetWidth = setRangeProperties(parent, slider, widgetTable, currentXOffset, currentYOffset, sliderTemplate, widgetWidth, widgetHeight, bAlignAsPairs, nAlignAsPairsLength, valueChangeHook, maxColumnWidth, maxWidgetWidth, bIsDecimals) - + maxColumnWidth, maxWidgetWidth = setRangeProperties(parent, slider, widgetTable, currentXOffset, currentYOffset, sliderTemplate, widgetWidth, widgetHeight, bAlignAsPairs, nAlignAsPairsLength, valueChangeHook, maxColumnWidth, maxWidgetWidth, bIsDecimals, bAttachSliderButtonsToLeft) --store the widget created into the overall table and the widget by type table.insert(parent.widget_list, slider) table.insert(parent.widget_list_by_type.slider, slider) diff --git a/Libs/DF/externals.lua b/Libs/DF/externals.lua index 4d419f35..7df43012 100644 --- a/Libs/DF/externals.lua +++ b/Libs/DF/externals.lua @@ -94,7 +94,7 @@ function detailsFramework:LoadLCC(LibCC) end end -if IS_WOW_PROJECT_CLASSIC_ERA then +if IS_WOW_PROJECT_CLASSIC_ERA and false then --disable this for now, as it appears to be working now through API changes... local LibCC = LibStub("LibClassicCasterino", true) if (LibCC and not _G.DetailsFrameworkLCCLoaded) then detailsFramework:LoadLCC(LibCC) diff --git a/Libs/DF/fw.lua b/Libs/DF/fw.lua index 37409cfa..3e503259 100644 --- a/Libs/DF/fw.lua +++ b/Libs/DF/fw.lua @@ -1,6 +1,6 @@ -local dversion = 485 +local dversion = 490 local major, minor = "DetailsFramework-1.0", dversion local DF, oldminor = LibStub:NewLibrary(major, minor) @@ -1329,7 +1329,7 @@ function DF:SetFontOutline(fontString, outline) outline = "OUTLINE" elseif (type(outline) == "boolean" and not outline) then - outline = "NONE" + outline = "" --"NONE" elseif (outline == 1) then outline = "OUTLINE" @@ -1338,6 +1338,7 @@ function DF:SetFontOutline(fontString, outline) outline = "THICKOUTLINE" end end + outline = (not outline or outline == "NONE") and "" or outline fontString:SetFont(font, fontSize, outline) end diff --git a/Libs/DF/slider.lua b/Libs/DF/slider.lua index 932a36e5..6cc9656b 100644 --- a/Libs/DF/slider.lua +++ b/Libs/DF/slider.lua @@ -319,7 +319,7 @@ DF:Mixin(DFSliderMetaFunctions, DF.ScriptHookMixin) return end - DetailsFrameworkSliderButtons1:ShowMe(slider) + DetailsFrameworkSliderButtons1:ShowMe(slider, object.bAttachButtonsToLeft) local kill = object:RunHooksForWidget("OnEnter", slider, object) if (kill) then @@ -363,6 +363,14 @@ DF:Mixin(DFSliderMetaFunctions, DF.ScriptHookMixin) local sliderButtonsParentFrame = DetailsFrameworkSliderButtons1 or CreateFrame("frame", "DetailsFrameworkSliderButtons1", UIParent, "BackdropTemplate") sliderButtonsParentFrame:Hide() sliderButtonsParentFrame:SetHeight(18) --width is set by setpoint + + C_Timer.After(0, function() + if (not sliderButtonsParentFrame.__background) then + DetailsFramework:ApplyStandardBackdrop(sliderButtonsParentFrame) --ApplyStandardBackdrop loads after this file + end + sliderButtonsParentFrame:SetBackdropBorderColor(0, 0, 0, 0) + sliderButtonsParentFrame:SetBackdropColor(.05, .05, .05, .9) + end) sliderButtonsParentFrame.isGoingToHide = false local timeToHide = 0 @@ -375,11 +383,27 @@ DF:Mixin(DFSliderMetaFunctions, DF.ScriptHookMixin) end end - function sliderButtonsParentFrame:ShowMe(sliderFrame) + function sliderButtonsParentFrame:ShowMe(sliderFrame, bAnchorToLeft) + sliderButtonsParentFrame.bAnchorToLeft = bAnchorToLeft sliderButtonsParentFrame:SetParent(sliderFrame) sliderButtonsParentFrame:ClearAllPoints() - sliderButtonsParentFrame:SetPoint("bottomleft", sliderFrame, "topleft", -5, -5) - sliderButtonsParentFrame:SetPoint("bottomright", sliderFrame, "topright", 5, -5) + + sliderButtonsParentFrame.buttonMinor:ClearAllPoints() + sliderButtonsParentFrame.buttonPlus:ClearAllPoints() + + sliderButtonsParentFrame:SetWidth(35) + + if (sliderButtonsParentFrame.bAnchorToLeft) then + sliderButtonsParentFrame:SetPoint("topright", sliderFrame, "topleft", 0, 0) + sliderButtonsParentFrame:SetPoint("bottomright", sliderFrame, "bottomleft", 0, 0) + sliderButtonsParentFrame.buttonPlus:SetPoint("right", sliderButtonsParentFrame, "right", -2, 0) + sliderButtonsParentFrame.buttonMinor:SetPoint("right", sliderButtonsParentFrame.buttonPlus, "left", 0, 0) + else + sliderButtonsParentFrame:SetPoint("topleft", sliderFrame, "topright", 2, 0) + sliderButtonsParentFrame:SetPoint("bottomleft", sliderFrame, "bottomright", 2, 0) + sliderButtonsParentFrame.buttonMinor:SetPoint("left", sliderButtonsParentFrame, "left", 2, 0) + sliderButtonsParentFrame.buttonPlus:SetPoint("left", sliderButtonsParentFrame.buttonMinor, "right", 0, 0) + end sliderButtonsParentFrame:SetFrameStrata("FULLSCREEN") sliderButtonsParentFrame:SetFrameLevel(sliderFrame:GetFrameLevel() + 1000) @@ -399,10 +423,12 @@ DF:Mixin(DFSliderMetaFunctions, DF.ScriptHookMixin) sliderButtonsParentFrame:SetScript("OnUpdate", onUpdateTimeToHide) end - local buttonPlus = CreateFrame("button", "DetailsFrameworkSliderButtonsPlusButton", sliderButtonsParentFrame, "BackdropTemplate") - local buttonMinor = CreateFrame("button", "DetailsFrameworkSliderButtonsMinorButton", sliderButtonsParentFrame, "BackdropTemplate") + local buttonPlus = DetailsFrameworkSliderButtonsPlusButton or CreateFrame("button", "DetailsFrameworkSliderButtonsPlusButton", sliderButtonsParentFrame, "BackdropTemplate") + local buttonMinor = DetailsFrameworkSliderButtonsMinorButton or CreateFrame("button", "DetailsFrameworkSliderButtonsMinorButton", sliderButtonsParentFrame, "BackdropTemplate") buttonPlus:SetFrameStrata(sliderButtonsParentFrame:GetFrameStrata()) buttonMinor:SetFrameStrata(sliderButtonsParentFrame:GetFrameStrata()) + sliderButtonsParentFrame.buttonPlus = buttonPlus + sliderButtonsParentFrame.buttonMinor = buttonMinor buttonPlus:SetScript("OnEnter", function(self) if (sliderButtonsParentFrame.isGoingToHide) then