You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
717 lines
18 KiB
717 lines
18 KiB
|
5 years ago
|
|
||
|
|
local cstr = tostring
|
||
|
|
local _string_len = string.len
|
||
|
|
local ceil = math.ceil
|
||
|
|
local math_floor = math.floor
|
||
|
|
local CreateFrame = CreateFrame
|
||
|
|
local GetTime = GetTime
|
||
|
|
local GetCursorPosition = GetCursorPosition
|
||
|
|
local GameTooltip = GameTooltip
|
||
|
|
local _select = select
|
||
|
|
|
||
|
|
local _detalhes = _G._detalhes
|
||
|
|
local gump = _detalhes.gump
|
||
|
|
|
||
|
|
|
||
|
|
function gump:NewLabel2 (parent, container, member, text, font, size, color)
|
||
|
|
|
||
|
|
font = font or "GameFontHighlightSmall"
|
||
|
|
|
||
|
|
local newFontString = parent:CreateFontString (nil, "OVERLAY", font)
|
||
|
|
if (member) then
|
||
|
|
container [member] = newFontString
|
||
|
|
end
|
||
|
|
newFontString:SetText (text)
|
||
|
|
|
||
|
|
if (size) then
|
||
|
|
_detalhes:SetFontSize (newFontString, size)
|
||
|
|
end
|
||
|
|
|
||
|
|
if (color) then
|
||
|
|
newFontString:SetTextColor (unpack (color))
|
||
|
|
end
|
||
|
|
|
||
|
|
newFontString:SetJustifyH ("LEFT")
|
||
|
|
|
||
|
|
return newFontString
|
||
|
|
end
|
||
|
|
|
||
|
|
function gump:NewDetailsButton (parent, container, instancia, func, param1, param2, w, h, pic_up, pic_down, pic_disabled, pic_highlight, options, FrameName, inherits, ischeck)
|
||
|
|
|
||
|
|
if (not parent) then
|
||
|
|
return nil
|
||
|
|
end
|
||
|
|
|
||
|
|
w = w or 16
|
||
|
|
h = h or 16
|
||
|
|
options = options or {}
|
||
|
|
|
||
|
|
local new_button
|
||
|
|
if (ischeck) then
|
||
|
|
new_button = CreateFrame ("CheckButton", FrameName, parent, inherits)
|
||
|
|
else
|
||
|
|
new_button = CreateFrame ("Button", FrameName, parent)
|
||
|
|
end
|
||
|
|
|
||
|
|
new_button:SetWidth (w)
|
||
|
|
new_button:SetHeight (h)
|
||
|
|
|
||
|
|
if (not pic_down and pic_up) then
|
||
|
|
pic_down = pic_up
|
||
|
|
end
|
||
|
|
if (not pic_disabled and pic_up) then
|
||
|
|
pic_disabled = pic_up
|
||
|
|
end
|
||
|
|
if (not pic_highlight and pic_up) then
|
||
|
|
pic_highlight = pic_up
|
||
|
|
end
|
||
|
|
|
||
|
|
new_button:SetNormalTexture (pic_up)
|
||
|
|
new_button:SetPushedTexture (pic_down)
|
||
|
|
new_button:SetDisabledTexture (pic_disabled)
|
||
|
|
new_button:SetHighlightTexture (pic_highlight, "ADD")
|
||
|
|
|
||
|
|
local new_text = new_button:CreateFontString (nil, "OVERLAY", "GameFontNormal")
|
||
|
|
new_text:SetPoint ("center", new_button, "center")
|
||
|
|
new_button.text = new_text
|
||
|
|
|
||
|
|
new_button.supportFrame = CreateFrame ("frame", nil, new_button)
|
||
|
|
new_button.supportFrame:SetPoint ("topleft", new_button, "topleft")
|
||
|
|
new_button.supportFrame:SetPoint ("bottomright", new_button, "bottomright")
|
||
|
|
new_button.supportFrame:SetFrameLevel (new_button:GetFrameLevel()+1)
|
||
|
|
|
||
|
|
new_button.supportFrame.disable_overlay = new_button.supportFrame:CreateTexture (nil, "overlay")
|
||
|
|
new_button.supportFrame.disable_overlay:SetTexture ("Interface\\AddOns\\Details\\images\\button_disable_overlay")
|
||
|
|
new_button.supportFrame.disable_overlay:SetPoint ("topleft", new_button.supportFrame, "topleft")
|
||
|
|
new_button.supportFrame.disable_overlay:SetPoint ("bottomright", new_button.supportFrame, "bottomright")
|
||
|
|
new_button.supportFrame.disable_overlay:Hide()
|
||
|
|
|
||
|
|
local rightFunction = options.rightFunc
|
||
|
|
|
||
|
|
new_button:SetScript ("OnDisable", function()
|
||
|
|
new_button.supportFrame.disable_overlay:Show()
|
||
|
|
end)
|
||
|
|
new_button:SetScript ("OnEnable", function()
|
||
|
|
new_button.supportFrame.disable_overlay:Hide()
|
||
|
|
end)
|
||
|
|
|
||
|
|
new_button.funcParam1 = param1
|
||
|
|
new_button.funcParam2 = param2
|
||
|
|
new_button.options = options
|
||
|
|
|
||
|
|
function new_button:ChangeOptions (_table)
|
||
|
|
options = _table
|
||
|
|
rightFunction = options.rightFunc
|
||
|
|
end
|
||
|
|
|
||
|
|
new_button.enter = false
|
||
|
|
|
||
|
|
new_button:SetScript ("OnMouseDown", function(self, button)
|
||
|
|
if (not self:IsEnabled()) then
|
||
|
|
return
|
||
|
|
end
|
||
|
|
|
||
|
|
self.mouse_down = GetTime()
|
||
|
|
local x, y = GetCursorPosition()
|
||
|
|
self.x = math_floor (x)
|
||
|
|
self.y = math_floor (y)
|
||
|
|
|
||
|
|
if (container) then
|
||
|
|
if (container:IsMovable() and not container.isLocked) then
|
||
|
|
container:StartMoving()
|
||
|
|
container.isMoving = true
|
||
|
|
end
|
||
|
|
end
|
||
|
|
|
||
|
|
if (new_button.texture) then
|
||
|
|
new_button.texture:SetTexCoord (0, 1, 0.5, 0.74609375)
|
||
|
|
end
|
||
|
|
|
||
|
|
if (options.OnGrab and options.OnGrab == "PassClick") then
|
||
|
|
if (rightFunction) then
|
||
|
|
if (button == "LeftButton") then
|
||
|
|
func (new_button.funcParam1, new_button.funcParam2)
|
||
|
|
else
|
||
|
|
rightFunction.func (rightFunction.param1, rightFunction.param2)
|
||
|
|
end
|
||
|
|
else
|
||
|
|
func (new_button.funcParam1, new_button.funcParam2)
|
||
|
|
end
|
||
|
|
end
|
||
|
|
end)
|
||
|
|
|
||
|
|
new_button:SetScript ("OnMouseUp", function (self, button)
|
||
|
|
if (not self:IsEnabled()) then
|
||
|
|
return
|
||
|
|
end
|
||
|
|
|
||
|
|
if (container) then
|
||
|
|
if (container.isMoving) then
|
||
|
|
container:StopMovingOrSizing()
|
||
|
|
container.isMoving = false
|
||
|
|
if (instancia) then
|
||
|
|
instancia:SaveMainWindowPosition()
|
||
|
|
end
|
||
|
|
end
|
||
|
|
end
|
||
|
|
|
||
|
|
if (new_button.texture) then
|
||
|
|
if (new_button.enter) then
|
||
|
|
new_button.texture:SetTexCoord (0, 1, 0.25, 0.49609375)
|
||
|
|
else
|
||
|
|
new_button.texture:SetTexCoord (0, 1, 0, 0.24609375)
|
||
|
|
end
|
||
|
|
end
|
||
|
|
|
||
|
|
local x, y = GetCursorPosition()
|
||
|
|
x = math_floor (x)
|
||
|
|
y = math_floor (y)
|
||
|
|
if ((self.mouse_down+0.4 > GetTime() and (x == self.x and y == self.y)) or (x == self.x and y == self.y)) then
|
||
|
|
if (rightFunction) then
|
||
|
|
if (button == "LeftButton") then
|
||
|
|
func (new_button.funcParam1, new_button.funcParam2)
|
||
|
|
else
|
||
|
|
rightFunction.func (rightFunction.param1, rightFunction.param2)
|
||
|
|
end
|
||
|
|
else
|
||
|
|
func (new_button.funcParam1, new_button.funcParam2)
|
||
|
|
end
|
||
|
|
end
|
||
|
|
end)
|
||
|
|
|
||
|
|
new_button.tooltip = nil
|
||
|
|
|
||
|
|
new_button:SetScript ("OnEnter", function()
|
||
|
|
|
||
|
|
new_button.enter = true
|
||
|
|
|
||
|
|
if (new_button.tooltip) then
|
||
|
|
GameCooltip:Reset()
|
||
|
|
GameCooltip:SetType ("tooltip")
|
||
|
|
GameCooltip:SetColor ("main", "transparent")
|
||
|
|
GameCooltip:AddLine (new_button.tooltip)
|
||
|
|
GameCooltip:SetOwner (new_button)
|
||
|
|
GameCooltip:ShowCooltip()
|
||
|
|
end
|
||
|
|
|
||
|
|
if (new_button.texture) then
|
||
|
|
new_button.texture:SetTexCoord (0, 1, 0.25+(0.0078125/2), 0.5+(0.0078125/2))
|
||
|
|
end
|
||
|
|
|
||
|
|
if (new_button.MouseOnEnterHook) then
|
||
|
|
new_button.MouseOnEnterHook (new_button)
|
||
|
|
end
|
||
|
|
end)
|
||
|
|
|
||
|
|
new_button:SetScript ("OnLeave", function()
|
||
|
|
|
||
|
|
new_button.enter = false
|
||
|
|
|
||
|
|
if (new_button.tooltip) then
|
||
|
|
_detalhes.popup:ShowMe (false)
|
||
|
|
end
|
||
|
|
|
||
|
|
if (new_button.texture) then
|
||
|
|
new_button.texture:SetTexCoord (0, 1, 0, 0.24609375)
|
||
|
|
end
|
||
|
|
|
||
|
|
if (new_button.MouseOnLeaveHook) then
|
||
|
|
new_button.MouseOnLeaveHook (new_button)
|
||
|
|
end
|
||
|
|
end)
|
||
|
|
|
||
|
|
function new_button:ChangeIcon (icon1, icon2, icon3, icon4)
|
||
|
|
new_button:SetNormalTexture (icon1)
|
||
|
|
new_button:SetPushedTexture (icon2)
|
||
|
|
new_button:SetDisabledTexture (icon3)
|
||
|
|
new_button:SetHighlightTexture (icon4, "ADD")
|
||
|
|
end
|
||
|
|
|
||
|
|
function new_button:InstallCustomTexture (texture, rect)
|
||
|
|
new_button:SetNormalTexture(nil)
|
||
|
|
new_button:SetPushedTexture(nil)
|
||
|
|
new_button:SetDisabledTexture(nil)
|
||
|
|
new_button:SetHighlightTexture(nil)
|
||
|
|
texture = texture or "Interface\\AddOns\\Details\\images\\default_button"
|
||
|
|
new_button.texture = new_button:CreateTexture (nil, "background")
|
||
|
|
|
||
|
|
if (not rect) then
|
||
|
|
new_button.texture:SetAllPoints (new_button)
|
||
|
|
else
|
||
|
|
new_button.texture:SetPoint ("topleft", new_button, "topleft", rect.x1, rect.y1)
|
||
|
|
new_button.texture:SetPoint ("bottomright", new_button, "bottomright", rect.x2, rect.y2)
|
||
|
|
end
|
||
|
|
|
||
|
|
new_button.texture:SetTexCoord (0, 1, 0, 0.24609375)
|
||
|
|
new_button.texture:SetTexture (texture)
|
||
|
|
end
|
||
|
|
|
||
|
|
new_button.textColor = {}
|
||
|
|
new_button.textColor.r, new_button.textColor.g, new_button.textColor.b = new_button.text:GetTextColor()
|
||
|
|
|
||
|
|
return new_button
|
||
|
|
end
|
||
|
|
|
||
|
|
local EditBoxBackdrop = {
|
||
|
|
bgFile = "Interface\\ChatFrame\\ChatFrameBackground",
|
||
|
|
edgeFile = "Interface\\ChatFrame\\ChatFrameBackground",
|
||
|
|
tile = true, edgeSize = 1, tileSize = 5,
|
||
|
|
}
|
||
|
|
|
||
|
|
function gump:NewTextBox (parent, container, member, func, param1, param2, w, h, options)
|
||
|
|
|
||
|
|
local editbox = CreateFrame ("EditBox", "DetailsEditBox1", parent)
|
||
|
|
container [member] = editbox
|
||
|
|
options = options or {}
|
||
|
|
|
||
|
|
editbox:SetAutoFocus (false)
|
||
|
|
editbox:SetFontObject (GameFontHighlightSmall)
|
||
|
|
|
||
|
|
editbox:SetWidth (w)
|
||
|
|
editbox:SetHeight (h)
|
||
|
|
editbox:SetJustifyH("CENTER")
|
||
|
|
editbox:EnableMouse (true)
|
||
|
|
editbox:SetBackdrop (EditBoxBackdrop)
|
||
|
|
editbox:SetBackdropColor (0, 0, 0, 0.5)
|
||
|
|
editbox:SetBackdropBorderColor (0.3, 0.3, 0.30, 0.80)
|
||
|
|
editbox:SetText ("") --localize-me
|
||
|
|
|
||
|
|
editbox.perdeu_foco = nil
|
||
|
|
|
||
|
|
editbox.text = ""
|
||
|
|
editbox.next = options.next
|
||
|
|
editbox.tooltip = options.tooltip
|
||
|
|
editbox.tab_on_enter = options.TabOnEnterPress
|
||
|
|
editbox.space = options.MySpace
|
||
|
|
|
||
|
|
gump:NewLabel (editbox, editbox, nil, "label", "", "GameFontHighlightSmall")
|
||
|
|
editbox ["label"]: SetPoint ("right", editbox, "left", -2, 0)
|
||
|
|
editbox.label:SetTextColor (.8, .8, .8, 1)
|
||
|
|
|
||
|
|
function editbox:SetPointAndSpace (MyAnchor, SnapTo, HisAnchor, x, y, Width)
|
||
|
|
|
||
|
|
if (type (MyAnchor) == "boolean" and MyAnchor and editbox.space) then
|
||
|
|
local textWidth = editbox ["label"]:GetStringWidth()+2
|
||
|
|
editbox:SetWidth (editbox.space - textWidth - 15)
|
||
|
|
return
|
||
|
|
|
||
|
|
elseif (not editbox.space and not Width) then
|
||
|
|
return
|
||
|
|
elseif (Width) then
|
||
|
|
editbox.space = Width
|
||
|
|
end
|
||
|
|
|
||
|
|
if (editbox.space) then
|
||
|
|
editbox ["label"]:ClearAllPoints()
|
||
|
|
editbox:ClearAllPoints()
|
||
|
|
editbox ["label"]:SetPoint (MyAnchor, SnapTo, HisAnchor, x, y)
|
||
|
|
editbox:SetPoint ("left", editbox["label"].widget, "right", 2, 0)
|
||
|
|
|
||
|
|
local textWidth = editbox ["label"]:GetStringWidth()+2
|
||
|
|
editbox:SetWidth (editbox.space - textWidth - 15)
|
||
|
|
end
|
||
|
|
end
|
||
|
|
|
||
|
|
function editbox:SetLabelText (text)
|
||
|
|
if (text) then
|
||
|
|
editbox ["label"]:SetText (text)
|
||
|
|
else
|
||
|
|
editbox ["label"]:SetText ("")
|
||
|
|
end
|
||
|
|
|
||
|
|
if (editbox.space) then
|
||
|
|
editbox:SetPointAndSpace (true) --> refresh
|
||
|
|
end
|
||
|
|
end
|
||
|
|
|
||
|
|
local EnterPress = function (byScript)
|
||
|
|
|
||
|
|
if (editbox.EnterHook) then
|
||
|
|
editbox.EnterHook()
|
||
|
|
end
|
||
|
|
|
||
|
|
local texto = _detalhes:trim (editbox:GetText())
|
||
|
|
if (_string_len (texto) > 0) then
|
||
|
|
editbox.text = texto
|
||
|
|
if (func) then
|
||
|
|
func (param1, param2, texto, editbox, byScript)
|
||
|
|
end
|
||
|
|
else
|
||
|
|
editbox:SetText ("")
|
||
|
|
editbox.text = ""
|
||
|
|
end
|
||
|
|
editbox.perdeu_foco = true --> isso aqui pra quando estiver editando e clicar em outra caixa
|
||
|
|
editbox:ClearFocus()
|
||
|
|
|
||
|
|
if (editbox.tab_on_enter and editbox.next) then
|
||
|
|
editbox.next:SetFocus()
|
||
|
|
end
|
||
|
|
end
|
||
|
|
|
||
|
|
function editbox:PressEnter (byScript)
|
||
|
|
EnterPress (byScript)
|
||
|
|
end
|
||
|
|
|
||
|
|
editbox:SetScript ("OnEnterPressed", EnterPress)
|
||
|
|
|
||
|
|
editbox:SetScript ("OnEscapePressed", function()
|
||
|
|
editbox:SetText("")
|
||
|
|
editbox.text = ""
|
||
|
|
editbox.perdeu_foco = true
|
||
|
|
editbox:ClearFocus()
|
||
|
|
|
||
|
|
if (editbox.OnEscapeHook) then
|
||
|
|
editbox.OnEscapeHook()
|
||
|
|
end
|
||
|
|
end)
|
||
|
|
|
||
|
|
editbox:SetScript ("OnEnter", function()
|
||
|
|
editbox.mouse_over = true
|
||
|
|
if (editbox:IsEnabled()) then
|
||
|
|
editbox:SetBackdropBorderColor (0.5, 0.5, 0.5, 1)
|
||
|
|
end
|
||
|
|
if (editbox.tooltip) then
|
||
|
|
GameCooltip:Reset()
|
||
|
|
GameCooltip:SetType ("tooltip")
|
||
|
|
GameCooltip:SetColor ("main", "transparent")
|
||
|
|
GameCooltip:AddLine (editbox.tooltip)
|
||
|
|
GameCooltip:SetOwner (editbox)
|
||
|
|
GameCooltip:ShowCooltip()
|
||
|
|
end
|
||
|
|
|
||
|
|
if (editbox.OnEnterHook) then
|
||
|
|
editbox:OnEnterHook()
|
||
|
|
end
|
||
|
|
end)
|
||
|
|
|
||
|
|
editbox:SetScript ("OnLeave", function()
|
||
|
|
editbox.mouse_over = false
|
||
|
|
if (editbox:IsEnabled()) then
|
||
|
|
editbox:SetBackdropBorderColor(0.3, 0.3, 0.3, 0.8)
|
||
|
|
end
|
||
|
|
|
||
|
|
if (not editbox:HasFocus()) then
|
||
|
|
--if (editbox:GetText() == "") then
|
||
|
|
-- editbox:SetText("insira o nome do buff")
|
||
|
|
--end
|
||
|
|
end
|
||
|
|
|
||
|
|
if (editbox.tooltip) then
|
||
|
|
if (not editbox.HaveMenu) then
|
||
|
|
_detalhes.popup:ShowMe (false)
|
||
|
|
end
|
||
|
|
end
|
||
|
|
|
||
|
|
if (editbox.OnLeaveHook) then
|
||
|
|
editbox:OnLeaveHook()
|
||
|
|
end
|
||
|
|
|
||
|
|
end)
|
||
|
|
|
||
|
|
editbox:SetScript ("OnEditFocusGained", function()
|
||
|
|
if (editbox.label) then
|
||
|
|
editbox.label:SetTextColor (1, 1, 1, 1)
|
||
|
|
end
|
||
|
|
if (editbox.OnFocusGainedHook) then
|
||
|
|
editbox.OnFocusGainedHook()
|
||
|
|
end
|
||
|
|
end)
|
||
|
|
|
||
|
|
editbox:SetScript ("OnEditFocusLost", function()
|
||
|
|
|
||
|
|
if (editbox:IsShown()) then
|
||
|
|
if (editbox.perdeu_foco == nil) then
|
||
|
|
local texto = _detalhes:trim (editbox:GetText())
|
||
|
|
if (_string_len (texto) > 0) then
|
||
|
|
editbox.text = texto
|
||
|
|
if (func) then
|
||
|
|
func (param1, param2, texto, editbox, nil)
|
||
|
|
end
|
||
|
|
else
|
||
|
|
editbox:SetText ("")
|
||
|
|
end
|
||
|
|
else
|
||
|
|
editbox.perdeu_foco = nil
|
||
|
|
end
|
||
|
|
|
||
|
|
if (editbox.label) then
|
||
|
|
editbox.label:SetTextColor (.8, .8, .8, 1)
|
||
|
|
end
|
||
|
|
|
||
|
|
if (editbox.OnFocusLostHook) then
|
||
|
|
editbox.OnFocusLostHook()
|
||
|
|
end
|
||
|
|
end
|
||
|
|
end)
|
||
|
|
|
||
|
|
editbox:SetScript ("OnChar", function (self, text)
|
||
|
|
if (editbox.InputHook) then
|
||
|
|
editbox:InputHook (text)
|
||
|
|
end
|
||
|
|
end)
|
||
|
|
|
||
|
|
editbox:SetScript ("OnTextChanged", function (self, userChanged)
|
||
|
|
if (editbox.TextChangeedHook and userChanged) then
|
||
|
|
editbox:TextChangeedHook (userChanged)
|
||
|
|
end
|
||
|
|
end)
|
||
|
|
|
||
|
|
editbox:SetScript ("OnTabPressed", function()
|
||
|
|
if (editbox.next) then
|
||
|
|
EnterPress()
|
||
|
|
editbox.next:SetFocus()
|
||
|
|
end
|
||
|
|
end)
|
||
|
|
|
||
|
|
editbox.SetNext = function (_, NextBox)
|
||
|
|
if (NextBox) then
|
||
|
|
editbox.next = NextBox
|
||
|
|
end
|
||
|
|
end
|
||
|
|
|
||
|
|
editbox.SetLabel = function (_, Label)
|
||
|
|
if (Label) then
|
||
|
|
editbox.label = Label
|
||
|
|
editbox.label:SetTextColor (.8, .8, .8, 1)
|
||
|
|
end
|
||
|
|
end
|
||
|
|
|
||
|
|
function editbox:Blink()
|
||
|
|
editbox.label:SetTextColor (1, .2, .2, 1)
|
||
|
|
end
|
||
|
|
|
||
|
|
if (options.Label) then
|
||
|
|
editbox:SetLabel (options.Label)
|
||
|
|
end
|
||
|
|
|
||
|
|
options = nil
|
||
|
|
|
||
|
|
return editbox
|
||
|
|
end
|
||
|
|
|
||
|
|
function gump:NewScrollBar2 (master, slave, x, y)
|
||
|
|
|
||
|
|
local slider_gump = CreateFrame ("Slider", master:GetName() and master:GetName() .. "SliderGump" or "DetailsSliderGump" .. math.random (1, 10000000), master)
|
||
|
|
slider_gump.scrollMax = 560 --default - tamanho da janela de fundo
|
||
|
|
|
||
|
|
-- ///// SLIDER /////
|
||
|
|
slider_gump:SetPoint ("TOPLEFT", master, "TOPRIGHT", x, y)
|
||
|
|
slider_gump.ativo = true
|
||
|
|
|
||
|
|
slider_gump.bg = slider_gump:CreateTexture (nil, "BACKGROUND")
|
||
|
|
slider_gump.bg:SetAllPoints (true)
|
||
|
|
slider_gump.bg:SetTexture (0, 0, 0, 0)
|
||
|
|
--coisinha do meio
|
||
|
|
slider_gump.thumb = slider_gump:CreateTexture (nil, "OVERLAY")
|
||
|
|
slider_gump.thumb:SetTexture ("Interface\\Buttons\\UI-ScrollBar-Knob")
|
||
|
|
slider_gump.thumb:SetSize (29, 30)
|
||
|
|
slider_gump:SetThumbTexture (slider_gump.thumb)
|
||
|
|
|
||
|
|
slider_gump:SetOrientation ("VERTICAL")
|
||
|
|
slider_gump:SetSize(16, 100)
|
||
|
|
slider_gump:SetMinMaxValues(0, slider_gump.scrollMax)
|
||
|
|
slider_gump:SetValue(0)
|
||
|
|
slider_gump.ultimo = 0
|
||
|
|
|
||
|
|
local botao_cima = CreateFrame ("Button", slider_gump:GetName() .. "UpButton", master)
|
||
|
|
|
||
|
|
botao_cima:SetWidth (29)
|
||
|
|
botao_cima:SetHeight (32)
|
||
|
|
botao_cima:SetNormalTexture ([[Interface\Buttons\Arrow-Up-Up]])
|
||
|
|
botao_cima:SetPushedTexture ([[Interface\Buttons\Arrow-Up-Down]])
|
||
|
|
botao_cima:SetDisabledTexture ([[Interface\Buttons\Arrow-Up-Disabled]])
|
||
|
|
botao_cima:Show()
|
||
|
|
botao_cima:Disable()
|
||
|
|
|
||
|
|
botao_cima:SetPoint ("BOTTOM", slider_gump, "TOP", 0, -12)
|
||
|
|
botao_cima.x = 0
|
||
|
|
botao_cima.y = -12
|
||
|
|
|
||
|
|
local botao_baixo = CreateFrame ("Button", slider_gump:GetName() .. "DownButton", master)
|
||
|
|
botao_baixo:SetPoint ("TOP", slider_gump, "BOTTOM", 0, 12)
|
||
|
|
botao_baixo.x = 0
|
||
|
|
botao_baixo.y = 12
|
||
|
|
|
||
|
|
botao_baixo:SetWidth (29)
|
||
|
|
botao_baixo:SetHeight (32)
|
||
|
|
botao_baixo:SetNormalTexture ([[Interface\Buttons\Arrow-Down-Up]])
|
||
|
|
botao_baixo:SetPushedTexture ([[Interface\Buttons\Arrow-Down-Down]])
|
||
|
|
botao_baixo:SetDisabledTexture ([[Interface\Buttons\Arrow-Down-Disabled]])
|
||
|
|
botao_baixo:Show()
|
||
|
|
botao_baixo:Disable()
|
||
|
|
|
||
|
|
master.baixo = botao_baixo
|
||
|
|
master.cima = botao_cima
|
||
|
|
master.slider = slider_gump
|
||
|
|
|
||
|
|
botao_baixo:SetScript ("OnMouseDown", function(self)
|
||
|
|
if (not slider_gump:IsEnabled()) then
|
||
|
|
return
|
||
|
|
end
|
||
|
|
|
||
|
|
local current = slider_gump:GetValue()
|
||
|
|
local minValue, maxValue = slider_gump:GetMinMaxValues()
|
||
|
|
if (current+5 < maxValue) then
|
||
|
|
slider_gump:SetValue (current+5)
|
||
|
|
else
|
||
|
|
slider_gump:SetValue (maxValue)
|
||
|
|
end
|
||
|
|
self.precionado = true
|
||
|
|
self.last_up = -0.3
|
||
|
|
self:SetScript ("OnUpdate", function(self, elapsed)
|
||
|
|
self.last_up = self.last_up + elapsed
|
||
|
|
if (self.last_up > 0.03) then
|
||
|
|
self.last_up = 0
|
||
|
|
local current = slider_gump:GetValue()
|
||
|
|
local minValue, maxValue = slider_gump:GetMinMaxValues()
|
||
|
|
if (current+2 < maxValue) then
|
||
|
|
slider_gump:SetValue (current+2)
|
||
|
|
else
|
||
|
|
slider_gump:SetValue (maxValue)
|
||
|
|
end
|
||
|
|
end
|
||
|
|
end)
|
||
|
|
end)
|
||
|
|
botao_baixo:SetScript ("OnMouseUp", function(self)
|
||
|
|
self.precionado = false
|
||
|
|
self:SetScript ("OnUpdate", nil)
|
||
|
|
end)
|
||
|
|
|
||
|
|
botao_cima:SetScript ("OnMouseDown", function(self)
|
||
|
|
if (not slider_gump:IsEnabled()) then
|
||
|
|
return
|
||
|
|
end
|
||
|
|
|
||
|
|
local current = slider_gump:GetValue()
|
||
|
|
if (current-5 > 0) then
|
||
|
|
slider_gump:SetValue (current-5)
|
||
|
|
else
|
||
|
|
slider_gump:SetValue (0)
|
||
|
|
end
|
||
|
|
self.precionado = true
|
||
|
|
self.last_up = -0.3
|
||
|
|
self:SetScript ("OnUpdate", function(self, elapsed)
|
||
|
|
self.last_up = self.last_up + elapsed
|
||
|
|
if (self.last_up > 0.03) then
|
||
|
|
self.last_up = 0
|
||
|
|
local current = slider_gump:GetValue()
|
||
|
|
if (current-2 > 0) then
|
||
|
|
slider_gump:SetValue (current-2)
|
||
|
|
else
|
||
|
|
slider_gump:SetValue (0)
|
||
|
|
end
|
||
|
|
end
|
||
|
|
end)
|
||
|
|
end)
|
||
|
|
botao_cima:SetScript ("OnMouseUp", function(self)
|
||
|
|
self.precionado = false
|
||
|
|
self:SetScript ("OnUpdate", nil)
|
||
|
|
end)
|
||
|
|
--> isso aqui pra quando o slider ativar, o scroll fica na posi��o zero
|
||
|
|
botao_cima:SetScript ("OnEnable", function (self)
|
||
|
|
local current = slider_gump:GetValue()
|
||
|
|
if (current == 0) then
|
||
|
|
botao_cima:Disable()
|
||
|
|
end
|
||
|
|
end)
|
||
|
|
|
||
|
|
slider_gump:SetScript ("OnValueChanged", function (self)
|
||
|
|
local current = self:GetValue()
|
||
|
|
master:SetVerticalScroll (current)
|
||
|
|
|
||
|
|
local minValue, maxValue = slider_gump:GetMinMaxValues()
|
||
|
|
|
||
|
|
if (current == minValue) then
|
||
|
|
botao_cima:Disable()
|
||
|
|
elseif (not botao_cima:IsEnabled()) then
|
||
|
|
botao_cima:Enable()
|
||
|
|
end
|
||
|
|
|
||
|
|
if (current == maxValue) then
|
||
|
|
botao_baixo:Disable()
|
||
|
|
elseif (not botao_baixo:IsEnabled()) then
|
||
|
|
botao_baixo:Enable()
|
||
|
|
end
|
||
|
|
|
||
|
|
end)
|
||
|
|
|
||
|
|
slider_gump:SetScript ("OnShow", function (self)
|
||
|
|
botao_cima:Show()
|
||
|
|
botao_baixo:Show()
|
||
|
|
end)
|
||
|
|
|
||
|
|
slider_gump:SetScript ("OnDisable", function (self)
|
||
|
|
botao_cima:Disable()
|
||
|
|
botao_baixo:Disable()
|
||
|
|
end)
|
||
|
|
|
||
|
|
slider_gump:SetScript ("OnEnable", function (self)
|
||
|
|
botao_cima:Enable()
|
||
|
|
botao_baixo:Enable()
|
||
|
|
end)
|
||
|
|
|
||
|
|
master:SetScript ("OnMouseWheel", function (self, delta)
|
||
|
|
if (not slider_gump:IsEnabled()) then
|
||
|
|
return
|
||
|
|
end
|
||
|
|
|
||
|
|
local current = slider_gump:GetValue()
|
||
|
|
if (delta < 0) then
|
||
|
|
--baixo
|
||
|
|
local minValue, maxValue = slider_gump:GetMinMaxValues()
|
||
|
|
if (current + (master.wheel_jump or 20) < maxValue) then
|
||
|
|
slider_gump:SetValue (current + (master.wheel_jump or 20))
|
||
|
|
else
|
||
|
|
slider_gump:SetValue (maxValue)
|
||
|
|
end
|
||
|
|
elseif (delta > 0) then
|
||
|
|
--cima
|
||
|
|
if (current + (master.wheel_jump or 20) > 0) then
|
||
|
|
slider_gump:SetValue (current - (master.wheel_jump or 20))
|
||
|
|
else
|
||
|
|
slider_gump:SetValue (0)
|
||
|
|
end
|
||
|
|
end
|
||
|
|
end)
|
||
|
|
|
||
|
|
function slider_gump:Altura (h)
|
||
|
|
self:SetHeight (h)
|
||
|
|
end
|
||
|
|
|
||
|
|
function slider_gump:Update (desativar)
|
||
|
|
|
||
|
|
if (desativar) then
|
||
|
|
slider_gump:Disable()
|
||
|
|
slider_gump:SetValue(0)
|
||
|
|
slider_gump.ativo = false
|
||
|
|
master:EnableMouseWheel (false)
|
||
|
|
return
|
||
|
|
end
|
||
|
|
|
||
|
|
self.scrollMax = slave:GetHeight()-master:GetHeight()
|
||
|
|
if (self.scrollMax > 0) then
|
||
|
|
slider_gump:SetMinMaxValues (0, self.scrollMax)
|
||
|
|
if (not slider_gump.ativo) then
|
||
|
|
slider_gump:Enable()
|
||
|
|
slider_gump.ativo = true
|
||
|
|
master:EnableMouseWheel (true)
|
||
|
|
end
|
||
|
|
else
|
||
|
|
slider_gump:Disable()
|
||
|
|
slider_gump:SetValue(0)
|
||
|
|
slider_gump.ativo = false
|
||
|
|
master:EnableMouseWheel (false)
|
||
|
|
end
|
||
|
|
end
|
||
|
|
|
||
|
|
function slider_gump:cimaPoint (x, y)
|
||
|
|
botao_cima:SetPoint ("BOTTOM", slider_gump, "TOP", x, (y)-12)
|
||
|
|
end
|
||
|
|
|
||
|
|
function slider_gump:baixoPoint (x, y)
|
||
|
|
botao_baixo:SetPoint ("TOP", slider_gump, "BOTTOM", x, (y)+12)
|
||
|
|
end
|
||
|
|
|
||
|
|
return slider_gump
|
||
|
|
end
|