- fixed issue with panic mode where sometimes his effects isn't triggered.

- added new small tutorial bubles for common tasks.
- tutorials now are account wide and not trigger on new characters.
- small improvements on details framework.
- added new hook type: HOOK_BUFF, triggered with buff or debuff parser.
- new skin: simple gray.
- added a minimap button and a button on addons interface panel.
new Api: instance:LockInstance (boolean)
This commit is contained in:
terciob19
2014-01-02 11:21:22 -02:00
parent c4776d562d
commit c29e9875de
28 changed files with 1701 additions and 216 deletions
+82 -5
View File
@@ -10,6 +10,8 @@ local _type = type --> lua local
local _math_floor = math.floor --> lua local
local loadstring = loadstring --> lua local
local Loc = LibStub ("AceLocale-3.0"):GetLocale ( "Details" )
local cleanfunction = function() end
local APISliderFunctions = false
local SliderMetaFunctions = {}
@@ -74,9 +76,13 @@ local SliderMetaFunctions = {}
return _rawget (_object, "lockdown")
end
--> fractional
local gmember_fractional = function (_object, _value)
local gmember_fractional = function (_object)
return _rawget (_object, "useDecimals")
end
--> value
local gmember_value = function (_object)
return _object()
end
local get_members_function_index = {
["tooltip"] = gmember_tooltip,
@@ -85,6 +91,7 @@ local SliderMetaFunctions = {}
["height"] = gmember_height,
["locked"] = gmember_locked,
["fractional"] = gmember_fractional,
["value"] = gmember_value,
}
SliderMetaFunctions.__index = function (_table, _member_requested)
@@ -148,6 +155,10 @@ local SliderMetaFunctions = {}
local smember_fractional = function (_object, _value)
return _rawset (_object, "useDecimals", _value)
end
--> value
local smember_value = function (_object, _value)
_object (_value)
end
local set_members_function_index = {
["tooltip"] = smember_tooltip,
@@ -158,6 +169,7 @@ local SliderMetaFunctions = {}
["height"] = smember_height,
["locked"] = smember_locked,
["fractional"] = smember_fractional,
["value"] = smember_value,
}
SliderMetaFunctions.__newindex = function (_table, _key, _value)
@@ -340,6 +352,59 @@ local SliderMetaFunctions = {}
end
function SliderMetaFunctions:TypeValue()
if (not self.isSwitch) then
if (not SliderMetaFunctions.editbox_typevalue) then
local editbox = CreateFrame ("EditBox", "DetailsFrameworkSliderEditBox", UIParent)
editbox:SetSize (40, 20)
editbox:SetJustifyH ("center")
editbox:SetBackdrop ({bgFile = [[Interface\DialogFrame\UI-DialogBox-Background-Dark]],
edgeFile = "Interface\\Buttons\\UI-SliderBar-Border", --edgeFile = [[Interface\Tooltips\UI-Tooltip-Border]],
tile = true, edgeSize = 8, tileSize = 5})
editbox:SetFontObject ("GameFontHighlightSmall")
editbox:SetScript ("OnEnterPressed", function()
editbox:ClearFocus()
editbox:Hide()
editbox:GetParent().MyObject.value = tonumber (editbox:GetText())
editbox:GetParent().MyObject.typing_value = false
end)
editbox:SetScript ("OnEscapePressed", function()
editbox:ClearFocus()
editbox:Hide()
editbox:GetParent().MyObject.typing_value = false
end)
SliderMetaFunctions.editbox_typevalue = editbox
end
self.typing_value = true
SliderMetaFunctions.editbox_typevalue:SetSize (self.width, self.height)
SliderMetaFunctions.editbox_typevalue:SetPoint ("center", self.widget, "center")
SliderMetaFunctions.editbox_typevalue:SetFocus()
SliderMetaFunctions.editbox_typevalue:SetParent (self.widget)
SliderMetaFunctions.editbox_typevalue:SetFrameLevel (self.widget:GetFrameLevel()+1)
if (self.useDecimals) then
SliderMetaFunctions.editbox_typevalue:SetText (tostring (string.format ("%.1f", self.value)))
else
SliderMetaFunctions.editbox_typevalue:SetText (tostring (math.floor (self.value)))
end
SliderMetaFunctions.editbox_typevalue:HighlightText()
SliderMetaFunctions.editbox_typevalue:Show()
end
end
local OnMouseDown = function (slider, button)
if (button == "RightButton") then
slider.MyObject:TypeValue()
end
end
local OnHide = function (slider)
if (slider.MyObject.OnHideHook) then
local interrupt = slider.MyObject.OnHideHook (slider)
@@ -347,6 +412,12 @@ local SliderMetaFunctions = {}
return
end
end
if (slider.MyObject.typing_value) then
SliderMetaFunctions.editbox_typevalue:ClearFocus()
SliderMetaFunctions.editbox_typevalue:SetText ("")
slider.MyObject.typing_valu = false
end
end
local OnShow = function (slider)
@@ -378,7 +449,7 @@ local SliderMetaFunctions = {}
else
slider.amt:SetText (math.floor (amt))
end
slider.MyObject.value = amt
slider.MyObject.ivalue = amt
end
@@ -411,7 +482,7 @@ function gump:NewSwitch (parent, container, name, member, w, h, ltext, rtext, de
end
--> build frames
local slider = gump:NewSlider (parent, container, name, member, w, h, 1, 2, 1, defaultv)
local slider = gump:NewSlider (parent, container, name, member, w, h, 1, 2, 1, defaultv, nil, true)
slider:SetBackdrop ({edgeFile = "Interface\\Buttons\\UI-SliderBar-Border", edgeSize = 8,
bgFile = [[Interface\AddOns\Details\images\background]], insets = {left = 3, right = 3, top = 5, bottom = 5}})
@@ -442,7 +513,7 @@ function gump:NewSwitch (parent, container, name, member, w, h, ltext, rtext, de
return slider
end
function gump:NewSlider (parent, container, name, member, w, h, min, max, step, defaultv, isDecemal)
function gump:NewSlider (parent, container, name, member, w, h, min, max, step, defaultv, isDecemal, isSwitch)
--> early checks
if (not name) then
@@ -515,7 +586,7 @@ function gump:NewSlider (parent, container, name, member, w, h, min, max, step,
SliderObject.slider:SetMinMaxValues (min, max)
SliderObject.slider:SetValueStep (step)
SliderObject.slider:SetValue (defaultv)
SliderObject.value = defaultv
SliderObject.ivalue = defaultv
--SliderObject.amt = _G [name .. "_Amt"]
--SliderObject.lock = _G [name .. "_LockTexture"]
@@ -532,6 +603,10 @@ function gump:NewSlider (parent, container, name, member, w, h, min, max, step,
SliderObject.slider:SetThumbTexture (SliderObject.thumb)
SliderObject.slider.thumb = SliderObject.thumb
if (not isSwitch) then
SliderObject.have_tooltip = Loc ["STRING_RIGHTCLICK_TYPEVALUE"]
end
SliderObject.amt = SliderObject.slider:CreateFontString (nil, "overlay", "GameFontHighlightSmall")
local amt = defaultv
@@ -555,6 +630,8 @@ function gump:NewSlider (parent, container, name, member, w, h, min, max, step,
SliderObject.slider:SetScript ("OnHide", OnHide)
SliderObject.slider:SetScript ("OnShow", OnShow)
SliderObject.slider:SetScript ("OnValueChanged", OnValueChanged)
SliderObject.slider:SetScript ("OnMouseDown", OnMouseDown)
_setmetatable (SliderObject, SliderMetaFunctions)