Mercurial > wow > hansgar_and_franzok_assist
diff Libs/DF/button.lua @ 39:7944c081e5b4
- framework update.
- ToC Update.
| author | Tercio |
|---|---|
| date | Tue, 19 Jul 2016 13:23:40 -0300 |
| parents | 5da06cb420d4 |
| children | 7d5934415ad0 |
line wrap: on
line diff
--- a/Libs/DF/button.lua Mon Jul 04 23:06:23 2016 -0300 +++ b/Libs/DF/button.lua Tue Jul 19 13:23:40 2016 -0300 @@ -16,7 +16,18 @@ local cleanfunction = function() end local APIButtonFunctions = false -local ButtonMetaFunctions = {} + +do + local metaPrototype = { + WidgetType = "button", + SetHook = DF.SetHook, + RunHooksForWidget = DF.RunHooksForWidget, + } + + _G [DF.GlobalWidgetControlNames ["button"]] = _G [DF.GlobalWidgetControlNames ["button"]] or metaPrototype +end + +local ButtonMetaFunctions = _G [DF.GlobalWidgetControlNames ["button"]] ------------------------------------------------------------------------------------------------------------ --> metatables @@ -75,26 +86,25 @@ return _rawget (_object, "is_locked") end - local get_members_function_index = { - ["tooltip"] = gmember_tooltip, - ["shown"] = gmember_shown, - ["width"] = gmember_width, - ["height"] = gmember_height, - ["text"] = gmember_text, - ["clickfunction"] = gmember_function, - ["texture"] = gmember_texture, - ["locked"] = gmember_locked, - ["fontcolor"] = gmember_textcolor, - ["fontface"] = gmember_textfont, - ["fontsize"] = gmember_textsize, - ["textcolor"] = gmember_textcolor, --alias - ["textfont"] = gmember_textfont, --alias - ["textsize"] = gmember_textsize --alias - } + ButtonMetaFunctions.GetMembers = ButtonMetaFunctions.GetMembers or {} + ButtonMetaFunctions.GetMembers ["tooltip"] = gmember_tooltip + ButtonMetaFunctions.GetMembers ["shown"] = gmember_shown + ButtonMetaFunctions.GetMembers ["width"] = gmember_width + ButtonMetaFunctions.GetMembers ["height"] = gmember_height + ButtonMetaFunctions.GetMembers ["text"] = gmember_text + ButtonMetaFunctions.GetMembers ["clickfunction"] = gmember_function + ButtonMetaFunctions.GetMembers ["texture"] = gmember_texture + ButtonMetaFunctions.GetMembers ["locked"] = gmember_locked + ButtonMetaFunctions.GetMembers ["fontcolor"] = gmember_textcolor + ButtonMetaFunctions.GetMembers ["fontface"] = gmember_textfont + ButtonMetaFunctions.GetMembers ["fontsize"] = gmember_textsize + ButtonMetaFunctions.GetMembers ["textcolor"] = gmember_textcolor --alias + ButtonMetaFunctions.GetMembers ["textfont"] = gmember_textfont --alias + ButtonMetaFunctions.GetMembers ["textsize"] = gmember_textsize --alias ButtonMetaFunctions.__index = function (_table, _member_requested) - local func = get_members_function_index [_member_requested] + local func = ButtonMetaFunctions.GetMembers [_member_requested] if (func) then return func (_table, _member_requested) end @@ -206,25 +216,24 @@ _object.capsule_textalign = "right" end end - - local set_members_function_index = { - ["tooltip"] = smember_tooltip, - ["show"] = smember_show, - ["hide"] = smember_hide, - ["width"] = smember_width, - ["height"] = smember_height, - ["text"] = smember_text, - ["clickfunction"] = smember_function, - ["textcolor"] = smember_textcolor, - ["textfont"] = smember_textfont, - ["textsize"] = smember_textsize, - ["texture"] = smember_texture, - ["locked"] = smember_locked, - ["textalign"] = smember_textalign, - } + + ButtonMetaFunctions.SetMembers = ButtonMetaFunctions.SetMembers or {} + ButtonMetaFunctions.SetMembers ["tooltip"] = smember_tooltip + ButtonMetaFunctions.SetMembers ["show"] = smember_show + ButtonMetaFunctions.SetMembers ["hide"] = smember_hide + ButtonMetaFunctions.SetMembers ["width"] = smember_width + ButtonMetaFunctions.SetMembers ["height"] = smember_height + ButtonMetaFunctions.SetMembers ["text"] = smember_text + ButtonMetaFunctions.SetMembers ["clickfunction"] = smember_function + ButtonMetaFunctions.SetMembers ["textcolor"] = smember_textcolor + ButtonMetaFunctions.SetMembers ["textfont"] = smember_textfont + ButtonMetaFunctions.SetMembers ["textsize"] = smember_textsize + ButtonMetaFunctions.SetMembers ["texture"] = smember_texture + ButtonMetaFunctions.SetMembers ["locked"] = smember_locked + ButtonMetaFunctions.SetMembers ["textalign"] = smember_textalign ButtonMetaFunctions.__newindex = function (_table, _key, _value) - local func = set_members_function_index [_key] + local func = ButtonMetaFunctions.SetMembers [_key] if (func) then return func (_table, _value) else @@ -473,15 +482,6 @@ return self.funcright() end ---> hooks - function ButtonMetaFunctions:SetHook (hookType, func) - if (func) then - _rawset (self, hookType.."Hook", func) - else - _rawset (self, hookType.."Hook", nil) - end - end - --> custom textures function ButtonMetaFunctions:InstallCustomTexture (texture, rect, coords, use_split, side_textures, side_textures2) @@ -587,6 +587,8 @@ local OnEnter = function (button) + local capsule = button.MyObject + if (button.textureTopLeft) then button.textureLeft:SetTexCoord (0, 4/128, 40/128, 56/128) button.textureRight:SetTexCoord (124/128, 1, 40/128, 56/128) @@ -598,12 +600,10 @@ button.textureBottomLeft:SetTexCoord (0, 8/128, 56/128, 64/128) button.textureBottomRight:SetTexCoord (120/128, 1, 56/128, 64/128) end - - if (button.MyObject.OnEnterHook) then - local interrupt = button.MyObject.OnEnterHook (button, button.MyObject) - if (interrupt) then - return - end + + local kill = capsule:RunHooksForWidget ("OnEnter", button, capsule) + if (kill) then + return end button.MyObject.is_mouse_over = true @@ -637,6 +637,8 @@ local OnLeave = function (button) + local capsule = button.MyObject + if (button.textureLeft and not button.MyObject.is_mouse_down) then button.textureLeft:SetTexCoord (0, 4/128, 9/128, 24/128) button.textureRight:SetTexCoord (124/128, 1, 9/128, 24/128) @@ -648,12 +650,10 @@ button.textureBottomLeft:SetTexCoord (0, 8/128, 24/128, 32/128) button.textureBottomRight:SetTexCoord (120/128, 1, 24/128, 32/128) end - - if (button.MyObject.OnLeaveHook) then - local interrupt = button.MyObject.OnLeaveHook (button, button.MyObject) - if (interrupt) then - return - end + + local kill = capsule:RunHooksForWidget ("OnLeave", button, capsule) + if (kill) then + return end button.MyObject.is_mouse_over = false @@ -682,27 +682,27 @@ end local OnHide = function (button) - if (button.MyObject.OnHideHook) then - local interrupt = button.MyObject.OnHideHook (button, button.MyObject) - if (interrupt) then - return - end + local capsule = button.MyObject + local kill = capsule:RunHooksForWidget ("OnHide", button, capsule) + if (kill) then + return end end local OnShow = function (button) - if (button.MyObject.OnShowHook) then - local interrupt = button.MyObject.OnShowHook (button, button.MyObject) - if (interrupt) then - return - end + local capsule = button.MyObject + local kill = capsule:RunHooksForWidget ("OnShow", button, capsule) + if (kill) then + return end end local OnMouseDown = function (button, buttontype) + local capsule = button.MyObject + if (not button:IsEnabled()) then return - end + end if (button.textureTopLeft) then button.textureLeft:SetTexCoord (0, 4/128, 72/128, 88/128) @@ -715,12 +715,10 @@ button.textureBottomLeft:SetTexCoord (0, 8/128, 88/128, 96/128) button.textureBottomRight:SetTexCoord (120/128, 1, 88/128, 96/128) end - - if (button.MyObject.OnMouseDownHook) then - local interrupt = button.MyObject.OnMouseDownHook (button, buttontype, button.MyObject) - if (interrupt) then - return - end + + local kill = capsule:RunHooksForWidget ("OnMouseDown", button, capsule) + if (kill) then + return end button.MyObject.is_mouse_down = true @@ -803,11 +801,10 @@ end end - if (button.MyObject.OnMouseUpHook) then - local interrupt = button.MyObject.OnMouseUpHook (button, buttontype, button.MyObject) - if (interrupt) then - return - end + local capsule = button.MyObject + local kill = capsule:RunHooksForWidget ("OnMouseUp", button, capsule) + if (kill) then + return end button.MyObject.is_mouse_down = false @@ -957,20 +954,10 @@ end --> default members: - --> hooks - ButtonObject.OnEnterHook = nil - ButtonObject.OnLeaveHook = nil - ButtonObject.OnHideHook = nil - ButtonObject.OnShowHook = nil - ButtonObject.OnMouseDownHook = nil - ButtonObject.OnMouseUpHook = nil - --> misc ButtonObject.is_locked = true ButtonObject.container = container - ButtonObject.have_tooltip = nil ButtonObject.options = {OnGrab = false} - ButtonObject.button = CreateFrame ("button", name, parent, "DetailsFrameworkButtonTemplate") ButtonObject.widget = ButtonObject.button @@ -1006,12 +993,15 @@ ButtonObject.button.text:SetText (text) ButtonObject.button.text:SetPoint ("center", ButtonObject.button, "center") - + local text_width = ButtonObject.button.text:GetStringWidth() if (text_width > w-15 and ButtonObject.button.text:GetText() ~= "") then - if (not short_method) then + if (short_method == false) then --> if is false, do not use auto resize + --do nothing + elseif (not short_method) then --> if the value is omitted, use the default resize local new_width = text_width+15 ButtonObject.button:SetWidth (new_width) + elseif (short_method == 1) then local loop = true local textsize = 11 @@ -1051,6 +1041,15 @@ end --> hooks + ButtonObject.HookList = { + OnEnter = {}, + OnLeave = {}, + OnHide = {}, + OnShow = {}, + OnMouseDown = {}, + OnMouseUp = {}, + } + ButtonObject.button:SetScript ("OnEnter", OnEnter) ButtonObject.button:SetScript ("OnLeave", OnLeave) ButtonObject.button:SetScript ("OnHide", OnHide) @@ -1119,7 +1118,7 @@ --textura da cor local img = DF:NewImage (button, nil, color_button_width, color_button_height, nil, nil, "color_texture", "$parentTex") - img:SetTexture (1, 1, 1) + img:SetColorTexture (1, 1, 1) img:SetPoint ("topleft", button.widget, "topleft", 1, -2) img:SetPoint ("bottomright", button.widget, "bottomright", -1, 1) img:SetDrawLayer ("background", 2)
