Framework update

This commit is contained in:
Tercio Jose
2022-09-15 12:42:15 -03:00
parent be700db39a
commit e20cee2303
3 changed files with 198 additions and 212 deletions
+28 -28
View File
@@ -5,7 +5,7 @@ if (not DF or not DetailsFrameworkCanLoad) then
end
local _
local APIDropDownFunctions = false
local loadedAPIDropDownFunctions = false
do
local metaPrototype = {
@@ -85,28 +85,28 @@ local DropDownMetaFunctions = _G[DF.GlobalWidgetControlNames["dropdown"]]
end
DropDownMetaFunctions.GetMembers = DropDownMetaFunctions.GetMembers or {}
DropDownMetaFunctions.GetMembers ["value"] = gmember_value
DropDownMetaFunctions.GetMembers ["text"] = gmember_text
DropDownMetaFunctions.GetMembers ["shown"] = gmember_shown
DropDownMetaFunctions.GetMembers ["width"] = gmember_width
DropDownMetaFunctions.GetMembers ["menuwidth"] = gmember_menuwidth
DropDownMetaFunctions.GetMembers ["height"] = gmember_height
DropDownMetaFunctions.GetMembers ["menuheight"] = gmember_menuheight
DropDownMetaFunctions.GetMembers ["tooltip"] = gmember_tooltip
DropDownMetaFunctions.GetMembers ["func"] = gmember_function
DropDownMetaFunctions.GetMembers["value"] = gmember_value
DropDownMetaFunctions.GetMembers["text"] = gmember_text
DropDownMetaFunctions.GetMembers["shown"] = gmember_shown
DropDownMetaFunctions.GetMembers["width"] = gmember_width
DropDownMetaFunctions.GetMembers["menuwidth"] = gmember_menuwidth
DropDownMetaFunctions.GetMembers["height"] = gmember_height
DropDownMetaFunctions.GetMembers["menuheight"] = gmember_menuheight
DropDownMetaFunctions.GetMembers["tooltip"] = gmember_tooltip
DropDownMetaFunctions.GetMembers["func"] = gmember_function
DropDownMetaFunctions.__index = function(object, memberName)
local func = DropDownMetaFunctions.GetMembers[memberName]
DropDownMetaFunctions.__index = function(object, key)
local func = DropDownMetaFunctions.GetMembers[key]
if (func) then
return func(object, memberName)
return func(object, key)
end
local fromMe = rawget(object, memberName)
if (fromMe) then
return fromMe
local alreadyHaveKey = rawget(object, key)
if (alreadyHaveKey) then
return alreadyHaveKey
end
return DropDownMetaFunctions[memberName]
return DropDownMetaFunctions[key]
end
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
@@ -420,7 +420,7 @@ local runCallbackFunctionForButton = function(button)
if (not success) then
error ("Details! Framework: dropdown " .. button:GetParent():GetParent():GetParent().MyObject:GetName() .. " error: " .. errorText)
end
button:GetParent():GetParent():GetParent().MyObject:RunHooksForWidget ("OnOptionSelected", button:GetParent():GetParent():GetParent().MyObject, button.object.FixedValue, button.table.value)
button:GetParent():GetParent():GetParent().MyObject:RunHooksForWidget("OnOptionSelected", button:GetParent():GetParent():GetParent().MyObject, button.object.FixedValue, button.table.value)
end
end
@@ -678,11 +678,11 @@ function DetailsFrameworkDropDownOnMouseDown(button, buttontype)
--has at least 1 option?
if (optionsTable and optionsTable[1]) then
local scrollFrame = _G [button:GetName() .. "_ScrollFrame"]
local scrollChild = _G [button:GetName() .. "_ScrollFrame_ScrollChild"]
local scrollBorder = _G [button:GetName() .. "_Border"]
local selectedTexture = _G [button:GetName() .. "_ScrollFrame_ScrollChild_SelectedTexture"]
local mouseOverTexture = _G [button:GetName() .. "_ScrollFrame_ScrollChild_MouseOverTexture"]
local scrollFrame = _G[button:GetName() .. "_ScrollFrame"]
local scrollChild = _G[button:GetName() .. "_ScrollFrame_ScrollChild"]
local scrollBorder = _G[button:GetName() .. "_Border"]
local selectedTexture = _G[button:GetName() .. "_ScrollFrame_ScrollChild_SelectedTexture"]
local mouseOverTexture = _G[button:GetName() .. "_ScrollFrame_ScrollChild_MouseOverTexture"]
local i = 1
local showing = 0
@@ -809,8 +809,8 @@ function DetailsFrameworkDropDownOnMouseDown(button, buttontype)
selectedTexture:SetWidth(frameWitdh-20)
end
for i = showing + 1, #object.menus do
object.menus[i]:Hide()
for o = showing + 1, #object.menus do
object.menus[o]:Hide()
end
local size = object.realsizeH
@@ -1059,7 +1059,7 @@ function DF:NewDropDown(parent, container, name, member, width, height, func, de
DF.DropDownCounter = DF.DropDownCounter + 1
elseif (not parent) then
return error("Details! FrameWork: parent not found.", 2)
return error("Details! Framework: parent not found.", 2)
end
if (not container) then
@@ -1096,8 +1096,8 @@ function DF:NewDropDown(parent, container, name, member, width, height, func, de
dropDownObject.widget = dropDownObject.dropdown
dropDownObject.dropdown.MyObject = dropDownObject
if (not APIDropDownFunctions) then
APIDropDownFunctions = true
if (not loadedAPIDropDownFunctions) then
loadedAPIDropDownFunctions = true
local idx = getmetatable(dropDownObject.dropdown).__index
for funcName, funcAddress in pairs(idx) do
if (not DropDownMetaFunctions[funcName]) then
+1 -1
View File
@@ -1,6 +1,6 @@
local dversion = 351
local dversion = 352
local major, minor = "DetailsFramework-1.0", dversion
local DF, oldminor = LibStub:NewLibrary (major, minor)
+169 -183
View File
@@ -1,20 +1,11 @@
local DF = _G ["DetailsFramework"]
if (not DF or not DetailsFrameworkCanLoad) then
return
return
end
local _
local _rawset = rawset --> lua local
local _rawget = rawget --> lua local
local _setmetatable = setmetatable --> lua local
local _unpack = unpack --> lua local
local _type = type --> lua local
local _math_floor = math.floor --> lua local
local loadstring = loadstring --> lua local
local cleanfunction = function() end
local APILabelFunctions = false
local loadedAPILabelFunctions = false
do
local metaPrototype = {
@@ -48,141 +39,140 @@ local LabelMetaFunctions = _G[DF.GlobalWidgetControlNames ["label"]]
------------------------------------------------------------------------------------------------------------
--> metatables
LabelMetaFunctions.__call = function (_table, value)
return self.label:SetText (value)
LabelMetaFunctions.__call = function(object, value)
return object.label:SetText(value)
end
------------------------------------------------------------------------------------------------------------
--> members
--> shown
local gmember_shown = function (_object)
return _object:IsShown()
--shown
local gmember_shown = function(object)
return object:IsShown()
end
--> frame width
local gmember_width = function (_object)
return _object.label:GetStringWidth()
--get text
local gmember_text = function(object)
return object.label:GetText()
end
--> frame height
local gmember_height = function (_object)
return _object.label:GetStringHeight()
--text width
local gmember_width = function(object)
return object.label:GetStringWidth()
end
--> text
local gmember_text = function (_object)
return _object.label:GetText()
--text height
local gmember_height = function(object)
return object.label:GetStringHeight()
end
--> text color
local gmember_textcolor = function (_object)
return _object.label:GetTextColor()
--text color
local gmember_textcolor = function(object)
return object.label:GetTextColor()
end
--> text font
local gmember_textfont = function (_object)
local fontface = _object.label:GetFont()
--text font
local gmember_textfont = function(object)
local fontface = object.label:GetFont()
return fontface
end
--> text size
local gmember_textsize = function (_object)
local _, fontsize = _object.label:GetFont()
--text size
local gmember_textsize = function(object)
local _, fontsize = object.label:GetFont()
return fontsize
end
LabelMetaFunctions.GetMembers = LabelMetaFunctions.GetMembers or {}
LabelMetaFunctions.GetMembers ["shown"] = gmember_shown
LabelMetaFunctions.GetMembers ["width"] = gmember_width
LabelMetaFunctions.GetMembers ["height"] = gmember_height
LabelMetaFunctions.GetMembers ["text"] = gmember_text
LabelMetaFunctions.GetMembers ["fontcolor"] = gmember_textcolor
LabelMetaFunctions.GetMembers ["fontface"] = gmember_textfont
LabelMetaFunctions.GetMembers ["fontsize"] = gmember_textsize
LabelMetaFunctions.GetMembers ["textcolor"] = gmember_textcolor --alias
LabelMetaFunctions.GetMembers ["textfont"] = gmember_textfont --alias
LabelMetaFunctions.GetMembers ["textsize"] = gmember_textsize --alias
LabelMetaFunctions.GetMembers["shown"] = gmember_shown
LabelMetaFunctions.GetMembers["width"] = gmember_width
LabelMetaFunctions.GetMembers["height"] = gmember_height
LabelMetaFunctions.GetMembers["text"] = gmember_text
LabelMetaFunctions.GetMembers["fontcolor"] = gmember_textcolor
LabelMetaFunctions.GetMembers["fontface"] = gmember_textfont
LabelMetaFunctions.GetMembers["fontsize"] = gmember_textsize
LabelMetaFunctions.GetMembers["textcolor"] = gmember_textcolor --alias
LabelMetaFunctions.GetMembers["textfont"] = gmember_textfont --alias
LabelMetaFunctions.GetMembers["textsize"] = gmember_textsize --alias
LabelMetaFunctions.__index = function (_table, _member_requested)
local func = LabelMetaFunctions.GetMembers [_member_requested]
LabelMetaFunctions.__index = function(object, key)
local func = LabelMetaFunctions.GetMembers[key]
if (func) then
return func (_table, _member_requested)
return func(object, key)
end
local fromMe = _rawget (_table, _member_requested)
if (fromMe) then
return fromMe
local alreadyHaveKey = rawget(object, key)
if (alreadyHaveKey) then
return alreadyHaveKey
end
return LabelMetaFunctions [_member_requested]
return LabelMetaFunctions[key]
end
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
--> show
local smember_show = function (_object, _value)
if (_value) then
return _object:Show()
--show
local smember_show = function(object, value)
if (value) then
return object:Show()
else
return _object:Hide()
return object:Hide()
end
end
--> hide
local smember_hide = function (_object, _value)
if (not _value) then
return _object:Show()
--hide
local smember_hide = function(object, value)
if (not value) then
return object:Show()
else
return _object:Hide()
return object:Hide()
end
end
--> text
local smember_text = function (_object, _value)
return _object.label:SetText (_value)
--text
local smember_text = function(object, value)
return object.label:SetText(value)
end
--> text color
local smember_textcolor = function (_object, _value)
local _value1, _value2, _value3, _value4 = DF:ParseColors (_value)
return _object.label:SetTextColor (_value1, _value2, _value3, _value4)
--text color
local smember_textcolor = function(object, value)
local value1, value2, value3, value4 = DF:ParseColors(value)
return object.label:SetTextColor(value1, value2, value3, value4)
end
--> text font
local smember_textfont = function (_object, _value)
return DF:SetFontFace (_object.label, _value)
--text font
local smember_textfont = function(object, value)
return DF:SetFontFace(object.label, value)
end
--> text size
local smember_textsize = function (_object, _value)
return DF:SetFontSize (_object.label, _value)
--text size
local smember_textsize = function(object, value)
return DF:SetFontSize(object.label, value)
end
--> text align
local smember_textalign = function (_object, _value)
if (_value == "<") then
_value = "left"
elseif (_value == ">") then
_value = "right"
elseif (_value == "|") then
_value = "center"
--text align
local smember_textalign = function(object, value)
if (value == "<") then
value = "left"
elseif (value == ">") then
value = "right"
elseif (value == "|") then
value = "center"
end
return _object.label:SetJustifyH (_value)
return object.label:SetJustifyH(value)
end
--> text valign
local smember_textvalign = function (_object, _value)
if (_value == "^") then
_value = "top"
elseif (_value == "_") then
_value = "bottom"
elseif (_value == "|") then
_value = "middle"
--text valign
local smember_textvalign = function(object, value)
if (value == "^") then
value = "top"
elseif (value == "_") then
value = "bottom"
elseif (value == "|") then
value = "middle"
end
return _object.label:SetJustifyV (_value)
return object.label:SetJustifyV(value)
end
--> field size width
local smember_width = function (_object, _value)
return _object.label:SetWidth (_value)
--field size width
local smember_width = function(object, value)
return object.label:SetWidth(value)
end
--> field size height
local smember_height = function (_object, _value)
return _object.label:SetHeight (_value)
--field size height
local smember_height = function(object, value)
return object.label:SetHeight(value)
end
--> outline (shadow)
local smember_outline = function (_object, _value)
DF:SetFontOutline (_object.label, _value)
--outline (shadow)
local smember_outline = function(object, value)
DF:SetFontOutline(object.label, value)
end
--text rotation
local smember_rotation = function(object, rotation)
if (type(rotation) == "number") then
if (not object.__rotationAnimation) then
@@ -215,20 +205,20 @@ local LabelMetaFunctions = _G[DF.GlobalWidgetControlNames ["label"]]
LabelMetaFunctions.SetMembers["shadow"] = smember_outline
LabelMetaFunctions.SetMembers["outline"] = smember_outline--alias
LabelMetaFunctions.SetMembers["rotation"] = smember_rotation--alias
LabelMetaFunctions.__newindex = function (_table, _key, _value)
local func = LabelMetaFunctions.SetMembers [_key]
LabelMetaFunctions.__newindex = function(object, key, value)
local func = LabelMetaFunctions.SetMembers[key]
if (func) then
return func (_table, _value)
return func(object, value)
else
return _rawset (_table, _key, _value)
return rawset(object, key, value)
end
end
------------------------------------------------------------------------------------------------------------
--> methods
--> show & hide
--show & hide
function LabelMetaFunctions:IsShown()
return self.label:IsShown()
end
@@ -238,129 +228,125 @@ local LabelMetaFunctions = _G[DF.GlobalWidgetControlNames ["label"]]
function LabelMetaFunctions:Hide()
return self.label:Hide()
end
--text text
function LabelMetaFunctions:SetTextTruncated (text, maxWidth)
self.widget:SetText (text)
DF:TruncateText (self.widget, maxWidth)
function LabelMetaFunctions:SetTextTruncated(text, maxWidth)
self.widget:SetText(text)
DF:TruncateText(self.widget, maxWidth)
end
-- textcolor
function LabelMetaFunctions:SetTextColor (color, arg2, arg3, arg4)
if (arg2) then
return self.label:SetTextColor (color, arg2, arg3, arg4 or 1)
end
local _value1, _value2, _value3, _value4 = DF:ParseColors (color)
return self.label:SetTextColor (_value1, _value2, _value3, _value4)
--textcolor
function LabelMetaFunctions:SetTextColor(r, g, b, a)
r, g, b, a = DF:ParseColors(r, g, b, a)
return self.label:SetTextColor(r, g, b, a)
end
-- setpoint
function LabelMetaFunctions:SetPoint (v1, v2, v3, v4, v5)
v1, v2, v3, v4, v5 = DF:CheckPoints (v1, v2, v3, v4, v5, self)
function LabelMetaFunctions:SetPoint(v1, v2, v3, v4, v5)
v1, v2, v3, v4, v5 = DF:CheckPoints(v1, v2, v3, v4, v5, self)
if (not v1) then
print ("Invalid parameter for SetPoint")
print("Invalid parameter for SetPoint")
return
end
return self.widget:SetPoint (v1, v2, v3, v4, v5)
return self.widget:SetPoint(v1, v2, v3, v4, v5)
end
------------------------------------------------------------------------------------------------------------
function LabelMetaFunctions:SetTemplate (template)
function LabelMetaFunctions:SetTemplate(template)
if (template.size) then
DF:SetFontSize (self.label, template.size)
DF:SetFontSize(self.label, template.size)
end
if (template.color) then
local r, g, b, a = DF:ParseColors (template.color)
self:SetTextColor (r, g, b, a)
local r, g, b, a = DF:ParseColors(template.color)
self:SetTextColor(r, g, b, a)
end
if (template.font) then
local SharedMedia = LibStub:GetLibrary ("LibSharedMedia-3.0")
local font = SharedMedia:Fetch ("font", template.font)
DF:SetFontFace (self.label, font)
local SharedMedia = LibStub:GetLibrary("LibSharedMedia-3.0")
local font = SharedMedia:Fetch("font", template.font)
DF:SetFontFace(self.label, font)
end
end
------------------------------------------------------------------------------------------------------------
--> object constructor
function DF:CreateLabel (parent, text, size, color, font, member, name, layer)
return DF:NewLabel (parent, nil, name, member, text, font, size, color, layer)
function DF:CreateLabel(parent, text, size, color, font, member, name, layer)
return DF:NewLabel(parent, nil, name, member, text, font, size, color, layer)
end
function DF:NewLabel (parent, container, name, member, text, font, size, color, layer)
function DF:NewLabel(parent, container, name, member, text, font, size, color, layer)
if (not parent) then
return error ("Details! FrameWork: parent not found.", 2)
return error("Details! Framework: parent not found.", 2)
end
if (not container) then
container = parent
end
if (not name) then
name = "DetailsFrameworkLabelNumber" .. DF.LabelNameCounter
DF.LabelNameCounter = DF.LabelNameCounter + 1
end
if (name:find ("$parent")) then
local parentName = DF.GetParentName (parent)
name = name:gsub ("$parent", parentName)
if (name:find("$parent")) then
local parentName = DF.GetParentName(parent)
name = name:gsub("$parent", parentName)
end
local LabelObject = {type = "label", dframework = true}
if (member) then
parent [member] = LabelObject
--container [member] = LabelObject.label
parent[member] = LabelObject
end
if (parent.dframework) then
parent = parent.widget
end
if (container.dframework) then
container = container.widget
end
font = font == "" and "GameFontHighlightSmall" or font or "GameFontHighlightSmall"
LabelObject.label = parent:CreateFontString (name, layer or "OVERLAY", font)
LabelObject.label = parent:CreateFontString(name, layer or "OVERLAY", font)
LabelObject.widget = LabelObject.label
LabelObject.label.MyObject = LabelObject
if (not APILabelFunctions) then
APILabelFunctions = true
local idx = getmetatable (LabelObject.label).__index
for funcName, funcAddress in pairs (idx) do
if (not LabelMetaFunctions [funcName]) then
LabelMetaFunctions [funcName] = function (object, ...)
local x = loadstring ( "return _G['"..object.label:GetName().."']:"..funcName.."(...)")
return x (...)
if (not loadedAPILabelFunctions) then
loadedAPILabelFunctions = true
local idx = getmetatable(LabelObject.label).__index
for funcName, funcAddress in pairs(idx) do
if (not LabelMetaFunctions[funcName]) then
LabelMetaFunctions[funcName] = function (object, ...)
local x = loadstring( "return _G['"..object.label:GetName().."']:"..funcName.."(...)")
return x(...)
end
end
end
end
LabelObject.label:SetText (text)
if (color) then
local r, g, b, a = DF:ParseColors (color)
LabelObject.label:SetTextColor (r, g, b, a)
end
if (size and type (size) == "number") then
DF:SetFontSize (LabelObject.label, size)
end
LabelObject.label:SetText(text)
if (color) then
local r, g, b, a = DF:ParseColors(color)
LabelObject.label:SetTextColor(r, g, b, a)
end
if (size and type(size) == "number") then
DF:SetFontSize(LabelObject.label, size)
end
LabelObject.HookList = {
}
LabelObject.label:SetJustifyH ("LEFT")
setmetatable (LabelObject, LabelMetaFunctions)
if (size and type (size) == "table") then
LabelObject:SetTemplate (size)
LabelObject.label:SetJustifyH("LEFT")
setmetatable(LabelObject, LabelMetaFunctions)
--if template has been passed as the third parameter
if (size and type(size) == "table") then
LabelObject:SetTemplate(size)
end
return LabelObject
end