diff --git a/Libs/DF/dropdown.lua b/Libs/DF/dropdown.lua index 5062db4c..81238c98 100644 --- a/Libs/DF/dropdown.lua +++ b/Libs/DF/dropdown.lua @@ -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 diff --git a/Libs/DF/fw.lua b/Libs/DF/fw.lua index 266f0a2f..d06990e7 100644 --- a/Libs/DF/fw.lua +++ b/Libs/DF/fw.lua @@ -1,6 +1,6 @@ -local dversion = 351 +local dversion = 352 local major, minor = "DetailsFramework-1.0", dversion local DF, oldminor = LibStub:NewLibrary (major, minor) diff --git a/Libs/DF/label.lua b/Libs/DF/label.lua index 66ffc35b..d1f8cc9e 100644 --- a/Libs/DF/label.lua +++ b/Libs/DF/label.lua @@ -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