Major cleanup on breakdown main file

This commit is contained in:
Tercio Jose
2023-04-11 22:03:32 -03:00
parent 4ab2f1241d
commit b946da73bb
15 changed files with 700 additions and 1214 deletions
+124 -19
View File
@@ -5054,7 +5054,7 @@ local default_icon_row_options = {
}
function detailsFramework:CreateIconRow (parent, name, options)
local f = CreateFrame("frame", name, parent, "BackdropTemplate")
local f = _G.CreateFrame("frame", name, parent, "BackdropTemplate")
f.IconPool = {}
f.NextIcon = 1
f.AuraCache = {}
@@ -5077,19 +5077,46 @@ end
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
--~header
--definitions
---@class headerframe: frame
---@field GetColumnWidth fun(self: headerframe, columnId: number)
---@field SetHeaderTable fun(self: headerframe, newTable)
---@field GetSelectedColumn fun(self: headerframe)
---@field Refresh fun(self: headerframe)
---@field UpdateSortArrow fun(self: headerframe, columnHeader: headercolumnframe, defaultShown: boolean, defaultOrder: string)
---@field UpdateColumnHeader fun(self: headerframe, columnHeader: headercolumnframe, headerIndex)
---@field ResetColumnHeaderBackdrop fun(self: headerframe, columnHeader: headercolumnframe)
---@field SetBackdropColorForSelectedColumnHeader fun(self: headerframe, columnHeader: headercolumnframe)
---@field ClearColumnHeader fun(self: headerframe, columnHeader: headercolumnframe)
---@field GetNextHeader fun(self: headerframe) : headercolumnframe
---@field columnHeadersCreated headercolumnframe[]
---@field HeaderTable table
---@field NextHeader number
---@field HeaderWidth number
---@field HeaderHeight number
---@field columnSelected number
---@class headercolumnframe: frame
---@field Icon texture
---@field Text fontstring
---@field Arrow texture
---@field Separator texture
---@field resizerButton button
--mixed functions
detailsFramework.HeaderFunctions = {
AddFrameToHeaderAlignment = function(self, frame)
self.FramesToAlign = self.FramesToAlign or {}
tinsert(self.FramesToAlign, frame)
_G.tinsert(self.FramesToAlign, frame)
end,
ResetFramesToHeaderAlignment = function(self)
wipe(self.FramesToAlign)
_G.wipe(self.FramesToAlign)
end,
SetFramesToHeaderAlignment = function(self, ...)
wipe(self.FramesToAlign)
_G.wipe(self.FramesToAlign)
self.FramesToAlign = {...}
end,
@@ -5097,9 +5124,9 @@ detailsFramework.HeaderFunctions = {
return self.FramesToAlign or {}
end,
--@self: an object like a line
--@headerFrame: the main header frame
--@anchor: which side the columnHeaders are attach
---@param self uiobject
---@param headerFrame headerframe
---@param anchor string
AlignWithHeader = function(self, headerFrame, anchor)
local columnHeaderFrames = headerFrame.columnHeadersCreated
anchor = anchor or "topleft"
@@ -5108,6 +5135,7 @@ detailsFramework.HeaderFunctions = {
local frame = self.FramesToAlign[i]
frame:ClearAllPoints()
---@type headercolumnframe
local columnHeader = columnHeaderFrames[i]
if (columnHeader) then
local offset = 0
@@ -5124,10 +5152,12 @@ detailsFramework.HeaderFunctions = {
end
end,
--@self: column header button
---comment
---@param self button
---@param buttonClicked string
OnClick = function(self, buttonClicked)
--get the header main frame
---@type headerframe
local headerFrame = self:GetParent()
--if this header does not have a clickable header, just ignore
@@ -5136,6 +5166,7 @@ detailsFramework.HeaderFunctions = {
end
--get the latest column header selected
---@type headercolumnframe
local previousColumnHeader = headerFrame.columnHeadersCreated[headerFrame.columnSelected]
previousColumnHeader.Arrow:Hide()
headerFrame:ResetColumnHeaderBackdrop(previousColumnHeader)
@@ -5159,13 +5190,37 @@ detailsFramework.HeaderFunctions = {
end
end
end,
---comment
---@param self button
---@param buttonClicked string
OnMouseDown = function(self, buttonClicked)
if (buttonClicked == "LeftButton") then
end
end,
---comment
---@param self button
---@param buttonClicked string
OnMouseUp = function(self, buttonClicked)
if (buttonClicked == "LeftButton") then
end
end,
}
detailsFramework.HeaderCoreFunctions = {
---@param self headerframe
---@param columnId number
---@return number
GetColumnWidth = function(self, columnId)
return self.HeaderTable[columnId].width
end,
---@param self headerframe
---@param newTable table
SetHeaderTable = function(self, newTable)
self.columnHeadersCreated = self.columnHeadersCreated or {}
self.HeaderTable = newTable
@@ -5176,12 +5231,14 @@ detailsFramework.HeaderCoreFunctions = {
end,
--return which header is current selected and the the order ASC DESC
---@param self headerframe
GetSelectedColumn = function(self)
return self.columnSelected, self.columnHeadersCreated[self.columnSelected or 1].order
end,
--clean up and rebuild the header following the header options
--@self: main header frame
---@param self headerframe
Refresh = function(self)
--refresh background frame
self:SetBackdrop(self.options.backdrop)
@@ -5263,7 +5320,10 @@ detailsFramework.HeaderCoreFunctions = {
self:SetSize(self.HeaderWidth, self.HeaderHeight)
end,
--@self: main header frame
---@param self headerframe
---@param columnHeader headercolumnframe
---@param defaultShown boolean
---@param defaultOrder string
UpdateSortArrow = function(self, columnHeader, defaultShown, defaultOrder)
local options = self.options
local order = defaultOrder or columnHeader.order
@@ -5292,7 +5352,9 @@ detailsFramework.HeaderCoreFunctions = {
end
end,
--@self: main header frame
---@param self headerframe
---@param columnHeader headercolumnframe
---@param headerIndex number
UpdateColumnHeader = function(self, columnHeader, headerIndex)
local headerData = self.HeaderTable[headerIndex]
@@ -5378,21 +5440,24 @@ detailsFramework.HeaderCoreFunctions = {
columnHeader.InUse = true
end,
--reset column header backdrop
--@self: main header frame
---reset column header backdrop
---@param self headerframe
---@param columnHeader headercolumnframe
ResetColumnHeaderBackdrop = function(self, columnHeader)
columnHeader:SetBackdrop(self.options.header_backdrop)
columnHeader:SetBackdropColor(unpack(self.options.header_backdrop_color))
columnHeader:SetBackdropBorderColor(unpack(self.options.header_backdrop_border_color))
end,
--@self: main header frame
---@param self headerframe
---@param columnHeader headercolumnframe
SetBackdropColorForSelectedColumnHeader = function(self, columnHeader)
columnHeader:SetBackdropColor(unpack(self.options.header_backdrop_color_selected))
end,
--clear the column header
--@self: main header frame
---clear the column header
---@param self headerframe
---@param columnHeader headercolumnframe
ClearColumnHeader = function(self, columnHeader)
columnHeader:SetSize(self.options.header_width, self.options.header_height)
self:ResetColumnHeaderBackdrop(columnHeader)
@@ -5405,16 +5470,27 @@ detailsFramework.HeaderCoreFunctions = {
columnHeader.Text:Hide()
end,
--get the next column header, create one if doesn't exists
--@self: main header frame
---get the next column header, create one if doesn't exists
---@param self headerframe
GetNextHeader = function(self)
local nextHeader = self.NextHeader
local columnHeader = self.columnHeadersCreated[nextHeader]
if (not columnHeader) then
--create a new column header
---@type headercolumnframe
local newHeader = CreateFrame("button", "$parentHeaderIndex" .. nextHeader, self, "BackdropTemplate")
newHeader:SetScript("OnClick", detailsFramework.HeaderFunctions.OnClick)
newHeader:SetMovable(true)
newHeader:SetResizable(true)
newHeader:SetScript("OnMouseDown", function()
print(11)
end)
newHeader:SetScript("OnMouseUp", function()
print(22) --doesn't work either
end)
--header icon
detailsFramework:CreateImage(newHeader, "", self.options.header_height, self.options.header_height, "ARTWORK", nil, "Icon", "$parentIcon")
@@ -5425,6 +5501,33 @@ detailsFramework.HeaderCoreFunctions = {
--header selected and order icon
detailsFramework:CreateImage(newHeader, self.options.arrow_up_texture, 12, 12, "ARTWORK", nil, "Arrow", "$parentArrow")
---rezise button
---@type button
local resizerButton = _G.CreateFrame("button", "$parentResizer", newHeader)
resizerButton:SetWidth(4)
resizerButton:SetFrameLevel(newHeader:GetFrameLevel()+2)
resizerButton:SetPoint("topright", newHeader, "topright", -1, 0)
resizerButton:SetPoint("bottomright", newHeader, "bottomright", -1, 0)
resizerButton:EnableMouse(true)
resizerButton:RegisterForClicks("LeftButtonDown", "LeftButtonUp")
newHeader.resizerButton = resizerButton
resizerButton:SetScript("OnMouseDown", function()
newHeader.bIsRezising = true
print(1)
--newHeader:StartSizing("right")
end)
resizerButton:SetScript("OnMouseUp", function()
newHeader.bIsRezising = false
print(2)
--newHeader:StopMovingOrSizing()
end)
resizerButton.texture = resizerButton:CreateTexture(nil, "overlay")
resizerButton.texture:SetAllPoints()
resizerButton.texture:SetColorTexture(1, 1, 1, 1)
newHeader.Arrow:SetPoint("right", newHeader, "right", -1, 0)
newHeader.Separator:Hide()
@@ -5480,8 +5583,10 @@ local default_header_options = {
line_separator_gap_align = false,
}
---@return headerframe
function detailsFramework:CreateHeader(parent, headerTable, options, frameName)
local newHeader = CreateFrame("frame", frameName or "$parentHeaderLine", parent, "BackdropTemplate")
---@type headerframe
local newHeader = _G.CreateFrame("frame", frameName or "$parentHeaderLine", parent, "BackdropTemplate")
detailsFramework:Mixin(newHeader, detailsFramework.OptionsFunctions)
detailsFramework:Mixin(newHeader, detailsFramework.HeaderCoreFunctions)