Mercurial > wow > hansgar_and_franzok_assist
comparison Libs/DF/slider.lua @ 39:7944c081e5b4
- framework update.
- ToC Update.
| author | Tercio |
|---|---|
| date | Tue, 19 Jul 2016 13:23:40 -0300 |
| parents | a9c4a360ccfe |
| children | 7c0f819a85c6 |
comparison
equal
deleted
inserted
replaced
| 38:219f04e5ba55 | 39:7944c081e5b4 |
|---|---|
| 15 | 15 |
| 16 local SharedMedia = LibStub:GetLibrary("LibSharedMedia-3.0") | 16 local SharedMedia = LibStub:GetLibrary("LibSharedMedia-3.0") |
| 17 | 17 |
| 18 local cleanfunction = function() end | 18 local cleanfunction = function() end |
| 19 local APISliderFunctions = false | 19 local APISliderFunctions = false |
| 20 DFSliderMetaFunctions = DFSliderMetaFunctions or {} | 20 |
| 21 do | |
| 22 local metaPrototype = { | |
| 23 WidgetType = "slider", | |
| 24 SetHook = DF.SetHook, | |
| 25 RunHooksForWidget = DF.RunHooksForWidget, | |
| 26 } | |
| 27 | |
| 28 _G [DF.GlobalWidgetControlNames ["slider"]] = _G [DF.GlobalWidgetControlNames ["slider"]] or metaPrototype | |
| 29 end | |
| 30 | |
| 31 local DFSliderMetaFunctions = _G [DF.GlobalWidgetControlNames ["slider"]] | |
| 21 | 32 |
| 22 ------------------------------------------------------------------------------------------------------------ | 33 ------------------------------------------------------------------------------------------------------------ |
| 23 --> metatables | 34 --> metatables |
| 24 | 35 |
| 25 DFSliderMetaFunctions.__call = function (_table, value) | 36 DFSliderMetaFunctions.__call = function (_table, value) |
| 85 --> value | 96 --> value |
| 86 local gmember_value = function (_object) | 97 local gmember_value = function (_object) |
| 87 return _object() | 98 return _object() |
| 88 end | 99 end |
| 89 | 100 |
| 90 local get_members_function_index = { | 101 DFSliderMetaFunctions.GetMembers = DFSliderMetaFunctions.GetMembers or {} |
| 91 ["tooltip"] = gmember_tooltip, | 102 DFSliderMetaFunctions.GetMembers ["tooltip"] = gmember_tooltip |
| 92 ["shown"] = gmember_shown, | 103 DFSliderMetaFunctions.GetMembers ["shown"] = gmember_shown |
| 93 ["width"] = gmember_width, | 104 DFSliderMetaFunctions.GetMembers ["width"] = gmember_width |
| 94 ["height"] = gmember_height, | 105 DFSliderMetaFunctions.GetMembers ["height"] = gmember_height |
| 95 ["locked"] = gmember_locked, | 106 DFSliderMetaFunctions.GetMembers ["locked"] = gmember_locked |
| 96 ["fractional"] = gmember_fractional, | 107 DFSliderMetaFunctions.GetMembers ["fractional"] = gmember_fractional |
| 97 ["value"] = gmember_value, | 108 DFSliderMetaFunctions.GetMembers ["value"] = gmember_value |
| 98 } | |
| 99 | 109 |
| 100 DFSliderMetaFunctions.__index = function (_table, _member_requested) | 110 DFSliderMetaFunctions.__index = function (_table, _member_requested) |
| 101 | 111 |
| 102 local func = get_members_function_index [_member_requested] | 112 local func = DFSliderMetaFunctions.GetMembers [_member_requested] |
| 103 if (func) then | 113 if (func) then |
| 104 return func (_table, _member_requested) | 114 return func (_table, _member_requested) |
| 105 end | 115 end |
| 106 | 116 |
| 107 local fromMe = _rawget (_table, _member_requested) | 117 local fromMe = _rawget (_table, _member_requested) |
| 161 --> value | 171 --> value |
| 162 local smember_value = function (_object, _value) | 172 local smember_value = function (_object, _value) |
| 163 _object (_value) | 173 _object (_value) |
| 164 end | 174 end |
| 165 | 175 |
| 166 local set_members_function_index = { | 176 DFSliderMetaFunctions.SetMembers = DFSliderMetaFunctions.SetMembers or {} |
| 167 ["tooltip"] = smember_tooltip, | 177 DFSliderMetaFunctions.SetMembers ["tooltip"] = smember_tooltip |
| 168 ["show"] = smember_show, | 178 DFSliderMetaFunctions.SetMembers ["show"] = smember_show |
| 169 ["hide"] = smember_hide, | 179 DFSliderMetaFunctions.SetMembers ["hide"] = smember_hide |
| 170 ["backdrop"] = smember_backdrop, | 180 DFSliderMetaFunctions.SetMembers ["backdrop"] = smember_backdrop |
| 171 ["width"] = smember_width, | 181 DFSliderMetaFunctions.SetMembers ["width"] = smember_width |
| 172 ["height"] = smember_height, | 182 DFSliderMetaFunctions.SetMembers ["height"] = smember_height |
| 173 ["locked"] = smember_locked, | 183 DFSliderMetaFunctions.SetMembers ["locked"] = smember_locked |
| 174 ["fractional"] = smember_fractional, | 184 DFSliderMetaFunctions.SetMembers ["fractional"] = smember_fractional |
| 175 ["value"] = smember_value, | 185 DFSliderMetaFunctions.SetMembers ["value"] = smember_value |
| 176 } | |
| 177 | 186 |
| 178 DFSliderMetaFunctions.__newindex = function (_table, _key, _value) | 187 DFSliderMetaFunctions.__newindex = function (_table, _key, _value) |
| 179 local func = set_members_function_index [_key] | 188 local func = DFSliderMetaFunctions.SetMembers [_key] |
| 180 if (func) then | 189 if (func) then |
| 181 return func (_table, _value) | 190 return func (_table, _value) |
| 182 else | 191 else |
| 183 return _rawset (_table, _key, _value) | 192 return _rawset (_table, _key, _value) |
| 184 end | 193 end |
| 322 | 331 |
| 323 --print ("result 2:", self.checked_texture:IsShown(), self.checked_texture:GetAlpha(), self.checked_texture:GetSize()) | 332 --print ("result 2:", self.checked_texture:IsShown(), self.checked_texture:GetAlpha(), self.checked_texture:GetSize()) |
| 324 | 333 |
| 325 return _rawset (self, "lockdown", true) | 334 return _rawset (self, "lockdown", true) |
| 326 end | 335 end |
| 327 --print ("iskar disable:", DFSliderMetaFunctions.Disable) | |
| 328 | |
| 329 --> hooks | |
| 330 function DFSliderMetaFunctions:SetHook (hookType, func) | |
| 331 if (func) then | |
| 332 _rawset (self, hookType.."Hook", func) | |
| 333 else | |
| 334 _rawset (self, hookType.."Hook", nil) | |
| 335 end | |
| 336 end | |
| 337 | 336 |
| 338 ------------------------------------------------------------------------------------------------------------ | 337 ------------------------------------------------------------------------------------------------------------ |
| 339 --> scripts | 338 --> scripts |
| 340 | 339 |
| 341 local OnEnter = function (slider) | 340 local OnEnter = function (slider) |
| 344 return | 343 return |
| 345 end | 344 end |
| 346 | 345 |
| 347 DetailsFrameworkSliderButtons1:ShowMe (slider) | 346 DetailsFrameworkSliderButtons1:ShowMe (slider) |
| 348 | 347 |
| 349 if (slider.MyObject.OnEnterHook) then | 348 local capsule = slider.MyObject |
| 350 local interrupt = slider.MyObject.OnEnterHook (slider) | 349 local kill = capsule:RunHooksForWidget ("OnEnter", slider, capsule) |
| 351 if (interrupt) then | 350 if (kill) then |
| 352 return | 351 return |
| 353 end | |
| 354 end | 352 end |
| 355 | 353 |
| 356 slider.thumb:SetAlpha (1) | 354 slider.thumb:SetAlpha (1) |
| 357 | 355 |
| 358 if (slider.MyObject.onenter_backdrop_border_color) then | 356 if (slider.MyObject.onenter_backdrop_border_color) then |
| 377 return | 375 return |
| 378 end | 376 end |
| 379 | 377 |
| 380 DetailsFrameworkSliderButtons1:PrepareToHide() | 378 DetailsFrameworkSliderButtons1:PrepareToHide() |
| 381 | 379 |
| 382 if (slider.MyObject.OnLeaveHook) then | 380 local capsule = slider.MyObject |
| 383 local interrupt = slider.MyObject.OnLeaveHook (slider) | 381 local kill = capsule:RunHooksForWidget ("OnLeave", slider, capsule) |
| 384 if (interrupt) then | 382 if (kill) then |
| 385 return | 383 return |
| 386 end | |
| 387 end | 384 end |
| 388 | 385 |
| 389 slider.thumb:SetAlpha (.7) | 386 slider.thumb:SetAlpha (.7) |
| 390 | 387 |
| 391 if (slider.MyObject.onleave_backdrop_border_color) then | 388 if (slider.MyObject.onleave_backdrop_border_color) then |
| 433 f:SetScript ("OnUpdate", going_hide) | 430 f:SetScript ("OnUpdate", going_hide) |
| 434 end | 431 end |
| 435 | 432 |
| 436 local button_plus = CreateFrame ("button", "DetailsFrameworkSliderButtonsPlusButton", f) | 433 local button_plus = CreateFrame ("button", "DetailsFrameworkSliderButtonsPlusButton", f) |
| 437 local button_minor = CreateFrame ("button", "DetailsFrameworkSliderButtonsMinorButton", f) | 434 local button_minor = CreateFrame ("button", "DetailsFrameworkSliderButtonsMinorButton", f) |
| 435 button_plus:SetFrameStrata (f:GetFrameStrata()) | |
| 436 button_minor:SetFrameStrata (f:GetFrameStrata()) | |
| 438 | 437 |
| 439 button_plus:SetScript ("OnEnter", function (self) | 438 button_plus:SetScript ("OnEnter", function (self) |
| 440 if (f.is_going_hide) then | 439 if (f.is_going_hide) then |
| 441 f:SetScript ("OnUpdate", nil) | 440 f:SetScript ("OnUpdate", nil) |
| 442 f.is_going_hide = false | 441 f.is_going_hide = false |
| 648 DFSliderMetaFunctions.editbox_typevalue:Show() | 647 DFSliderMetaFunctions.editbox_typevalue:Show() |
| 649 end | 648 end |
| 650 end | 649 end |
| 651 | 650 |
| 652 local OnMouseDown = function (slider, button) | 651 local OnMouseDown = function (slider, button) |
| 652 slider.MyObject.IsValueChanging = true | |
| 653 | |
| 654 local capsule = slider.MyObject | |
| 655 local kill = capsule:RunHooksForWidget ("OnMouseDown", slider, button, capsule) | |
| 656 if (kill) then | |
| 657 return | |
| 658 end | |
| 659 | |
| 653 if (button == "RightButton") then | 660 if (button == "RightButton") then |
| 654 slider.MyObject:TypeValue() | 661 slider.MyObject:TypeValue() |
| 655 end | 662 end |
| 656 end | 663 end |
| 657 | 664 |
| 658 local OnMouseUp = function (slider, button) | 665 local OnMouseUp = function (slider, button) |
| 659 --if (button == "RightButton") then | 666 slider.MyObject.IsValueChanging = nil |
| 660 -- if (slider.MyObject.typing_value) then | 667 |
| 661 -- slider.MyObject:SetValue (slider.MyObject.previous_value [2]) | 668 local capsule = slider.MyObject |
| 662 -- end | 669 local kill = capsule:RunHooksForWidget ("OnMouseUp", slider, button, capsule) |
| 663 --end | 670 if (kill) then |
| 671 return | |
| 672 end | |
| 664 end | 673 end |
| 665 | 674 |
| 666 local OnHide = function (slider) | 675 local OnHide = function (slider) |
| 667 if (slider.MyObject.OnHideHook) then | 676 local capsule = slider.MyObject |
| 668 local interrupt = slider.MyObject.OnHideHook (slider) | 677 local kill = capsule:RunHooksForWidget ("OnHide", slider, capsule) |
| 669 if (interrupt) then | 678 if (kill) then |
| 670 return | 679 return |
| 671 end | |
| 672 end | 680 end |
| 673 | 681 |
| 674 if (slider.MyObject.typing_value) then | 682 if (slider.MyObject.typing_value) then |
| 675 DFSliderMetaFunctions.editbox_typevalue:ClearFocus() | 683 DFSliderMetaFunctions.editbox_typevalue:ClearFocus() |
| 676 DFSliderMetaFunctions.editbox_typevalue:SetText ("") | 684 DFSliderMetaFunctions.editbox_typevalue:SetText ("") |
| 677 slider.MyObject.typing_valu = false | 685 slider.MyObject.typing_valu = false |
| 678 end | 686 end |
| 679 end | 687 end |
| 680 | 688 |
| 681 local OnShow = function (slider) | 689 local OnShow = function (slider) |
| 682 if (slider.MyObject.OnShowHook) then | 690 local capsule = slider.MyObject |
| 683 local interrupt = slider.MyObject.OnShowHook (slider) | 691 local kill = capsule:RunHooksForWidget ("OnShow", slider, capsule) |
| 684 if (interrupt) then | 692 if (kill) then |
| 685 return | 693 return |
| 686 end | |
| 687 end | 694 end |
| 688 end | 695 end |
| 689 | 696 |
| 690 local table_insert = table.insert | 697 local table_insert = table.insert |
| 691 local table_remove = table.remove | 698 local table_remove = table.remove |
| 705 end | 712 end |
| 706 | 713 |
| 707 table_insert (slider.MyObject.previous_value, 1, amt) | 714 table_insert (slider.MyObject.previous_value, 1, amt) |
| 708 table_remove (slider.MyObject.previous_value, 4) | 715 table_remove (slider.MyObject.previous_value, 4) |
| 709 | 716 |
| 710 if (slider.MyObject.OnValueChangeHook) then | 717 local capsule = slider.MyObject |
| 711 local interrupt = slider.MyObject.OnValueChangeHook (slider, slider.MyObject.FixedValue, amt) | 718 local kill = capsule:RunHooksForWidget ("OnValueChanged", slider, capsule.FixedValue, amt, capsule) |
| 712 if (interrupt) then | 719 if (kill) then |
| 713 return | 720 return |
| 714 end | 721 end |
| 715 end | 722 local kill = capsule:RunHooksForWidget ("OnValueChange", slider, capsule.FixedValue, amt, capsule) |
| 716 | 723 if (kill) then |
| 724 return | |
| 725 end | |
| 726 | |
| 717 if (slider.MyObject.OnValueChanged) then | 727 if (slider.MyObject.OnValueChanged) then |
| 718 slider.MyObject.OnValueChanged (slider, slider.MyObject.FixedValue, amt) | 728 slider.MyObject.OnValueChanged (slider, slider.MyObject.FixedValue, amt) |
| 719 end | 729 end |
| 720 | 730 |
| 721 if (amt < 10 and amt >= 1) then | 731 if (amt < 10 and amt >= 1) then |
| 1082 | 1092 |
| 1083 w = w or 130 | 1093 w = w or 130 |
| 1084 h = h or 19 | 1094 h = h or 19 |
| 1085 | 1095 |
| 1086 --> default members: | 1096 --> default members: |
| 1087 --> hooks | |
| 1088 SliderObject.OnEnterHook = nil | |
| 1089 SliderObject.OnLeaveHook = nil | |
| 1090 SliderObject.OnHideHook = nil | |
| 1091 SliderObject.OnShowHook = nil | |
| 1092 SliderObject.OnValueChangeHook = nil | |
| 1093 --> misc | |
| 1094 SliderObject.lockdown = false | 1097 SliderObject.lockdown = false |
| 1095 SliderObject.container = container | 1098 SliderObject.container = container |
| 1096 SliderObject.have_tooltip = nil | |
| 1097 SliderObject.FixedValue = nil | |
| 1098 SliderObject.useDecimals = isDecemal or false | 1099 SliderObject.useDecimals = isDecemal or false |
| 1099 | 1100 |
| 1100 SliderObject.slider = CreateFrame ("slider", name, parent) | 1101 SliderObject.slider = CreateFrame ("slider", name, parent) |
| 1101 SliderObject.widget = SliderObject.slider | 1102 SliderObject.widget = SliderObject.slider |
| 1102 | 1103 |
| 1122 SliderObject.slider:SetValue (defaultv) | 1123 SliderObject.slider:SetValue (defaultv) |
| 1123 SliderObject.ivalue = defaultv | 1124 SliderObject.ivalue = defaultv |
| 1124 | 1125 |
| 1125 SliderObject.slider:SetBackdrop ({edgeFile = "Interface\\Buttons\\UI-SliderBar-Border", edgeSize = 8}) | 1126 SliderObject.slider:SetBackdrop ({edgeFile = "Interface\\Buttons\\UI-SliderBar-Border", edgeSize = 8}) |
| 1126 SliderObject.slider:SetBackdropColor (0.9, 0.7, 0.7, 1.0) | 1127 SliderObject.slider:SetBackdropColor (0.9, 0.7, 0.7, 1.0) |
| 1128 --SliderObject.slider:SetBackdropColor (0, 0, 0, 1) | |
| 1127 | 1129 |
| 1128 SliderObject.thumb = SliderObject.slider:CreateTexture (nil, "artwork") | 1130 SliderObject.thumb = SliderObject.slider:CreateTexture (nil, "artwork") |
| 1129 SliderObject.thumb:SetTexture ("Interface\\Buttons\\UI-ScrollBar-Knob") | 1131 SliderObject.thumb:SetTexture ("Interface\\Buttons\\UI-ScrollBar-Knob") |
| 1130 SliderObject.thumb:SetSize (30+(h*0.2), h*1.2) | 1132 SliderObject.thumb:SetSize (30+(h*0.2), h*1.2) |
| 1131 SliderObject.thumb:SetAlpha (0.7) | 1133 SliderObject.thumb:SetAlpha (0.7) |
| 1154 SliderObject.slider.amt = SliderObject.amt | 1156 SliderObject.slider.amt = SliderObject.amt |
| 1155 | 1157 |
| 1156 SliderObject.previous_value = {defaultv or 0, 0, 0} | 1158 SliderObject.previous_value = {defaultv or 0, 0, 0} |
| 1157 | 1159 |
| 1158 --> hooks | 1160 --> hooks |
| 1159 SliderObject.slider:SetScript ("OnEnter", OnEnter) | 1161 SliderObject.HookList = { |
| 1160 SliderObject.slider:SetScript ("OnLeave", OnLeave) | 1162 OnEnter = {}, |
| 1161 SliderObject.slider:SetScript ("OnHide", OnHide) | 1163 OnLeave = {}, |
| 1162 SliderObject.slider:SetScript ("OnShow", OnShow) | 1164 OnHide = {}, |
| 1163 SliderObject.slider:SetScript ("OnValueChanged", OnValueChanged) | 1165 OnShow = {}, |
| 1164 SliderObject.slider:SetScript ("OnMouseDown", OnMouseDown) | 1166 OnMouseDown = {}, |
| 1165 SliderObject.slider:SetScript ("OnMouseUp", OnMouseUp) | 1167 OnMouseUp = {}, |
| 1166 | 1168 |
| 1167 | 1169 OnValueChange = {}, |
| 1170 OnValueChanged = {}, | |
| 1171 } | |
| 1172 | |
| 1173 SliderObject.slider:SetScript ("OnEnter", OnEnter) | |
| 1174 SliderObject.slider:SetScript ("OnLeave", OnLeave) | |
| 1175 SliderObject.slider:SetScript ("OnHide", OnHide) | |
| 1176 SliderObject.slider:SetScript ("OnShow", OnShow) | |
| 1177 SliderObject.slider:SetScript ("OnValueChanged", OnValueChanged) | |
| 1178 SliderObject.slider:SetScript ("OnMouseDown", OnMouseDown) | |
| 1179 SliderObject.slider:SetScript ("OnMouseUp", OnMouseUp) | |
| 1180 | |
| 1168 _setmetatable (SliderObject, DFSliderMetaFunctions) | 1181 _setmetatable (SliderObject, DFSliderMetaFunctions) |
| 1169 | 1182 |
| 1170 if (with_label) then | 1183 if (with_label) then |
| 1171 local label = DF:CreateLabel (SliderObject.slider, with_label, nil, nil, nil, "label", nil, "overlay") | 1184 local label = DF:CreateLabel (SliderObject.slider, with_label, nil, nil, nil, "label", nil, "overlay") |
| 1172 label.text = with_label | 1185 label.text = with_label |
