725 lines
26 KiB
Lua
725 lines
26 KiB
Lua
local Loc = LibStub ("AceLocale-3.0"):GetLocale ( "Details" )
|
|
|
|
local _detalhes = _G._detalhes
|
|
local gump = _detalhes.gump
|
|
local _
|
|
|
|
--lua locals
|
|
local _cstr = tostring --> lua local
|
|
local _math_ceil = math.ceil --> lua local
|
|
local _math_floor = math.floor --> lua local
|
|
local _string_len = string.len --> lua local
|
|
local _pairs = pairs --> lua local
|
|
local _tinsert = tinsert --> lua local
|
|
local _IsInRaid = IsInRaid --> lua local
|
|
|
|
local _CreateFrame = CreateFrame --> wow api locals
|
|
local _IsInGuild = IsInGuild --> wow api locals
|
|
local _GetChannelList = GetChannelList --> wow api locals
|
|
local _UIParent = UIParent --> wow api locals
|
|
|
|
local _UISpecialFrames = UISpecialFrames --> wow api locals
|
|
|
|
--> details API functions -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
|
|
|
|
function _detalhes:FastReportWindow (window)
|
|
|
|
if (not DetailsReportWindow) then
|
|
gump:CriaJanelaReport()
|
|
DetailsReportWindow:Hide()
|
|
end
|
|
|
|
local instance = _detalhes:GetInstance (window)
|
|
if (instance) then
|
|
|
|
if (instance.atributo == 1) then
|
|
_detalhes.report_lines = 14
|
|
elseif (instance.atributo == 2) then
|
|
_detalhes.report_lines = 6
|
|
else
|
|
_detalhes.report_lines = max (10, instance.rows_fit_in_window)
|
|
end
|
|
|
|
if (IsInRaid()) then
|
|
_detalhes.report_where = "RAID"
|
|
elseif (GetNumSubgroupMembers() > 0) then
|
|
_detalhes.report_where = "PARTY"
|
|
else
|
|
_detalhes.report_where = "SAY"
|
|
end
|
|
|
|
instance:monta_relatorio()
|
|
|
|
else
|
|
_detalhes:Msg (Loc ["STRING_WINDOW_NOTFOUND"])
|
|
end
|
|
end
|
|
|
|
function _detalhes.ReportFromLatest (_, _, index)
|
|
local t = _detalhes.latest_report_table [index]
|
|
|
|
if (t) then
|
|
|
|
if (not DetailsReportWindow) then
|
|
gump:CriaJanelaReport()
|
|
DetailsReportWindow:Hide()
|
|
end
|
|
|
|
local id, attribute, subattribute, amt, report_where = unpack (t)
|
|
local instance = _detalhes:GetInstance (id)
|
|
_detalhes.report_lines = amt
|
|
_detalhes.report_where = report_where
|
|
|
|
local cattribute, csubattribute = instance:GetDisplay()
|
|
instance:SetDisplay (nil, attribute, subattribute)
|
|
|
|
instance:monta_relatorio()
|
|
|
|
instance:SetDisplay (nil, cattribute, csubattribute)
|
|
|
|
if (index > 5) then
|
|
local t = _detalhes.latest_report_table [index]
|
|
tremove (_detalhes.latest_report_table, index)
|
|
tinsert (_detalhes.latest_report_table, 1, t)
|
|
end
|
|
|
|
GameCooltip:Hide()
|
|
end
|
|
end
|
|
|
|
function _detalhes:SendReportLines (lines)
|
|
if (type (lines) == "string") then
|
|
lines = {lines}
|
|
elseif (type (lines) ~= "table") then
|
|
return _detalhes:NewError ("SendReportLines parameter 1 must be a table or string.")
|
|
end
|
|
return _detalhes:envia_relatorio (lines, true)
|
|
end
|
|
|
|
function _detalhes:SendReportWindow (func, _current, _inverse, _slider)
|
|
|
|
if (type (func) ~= "function") then
|
|
return _detalhes:NewError ("SendReportWindow parameter 1 must be a function.")
|
|
end
|
|
|
|
if (not _detalhes.janela_report) then
|
|
_detalhes.janela_report = gump:CriaJanelaReport()
|
|
end
|
|
|
|
if (_current) then
|
|
_G ["Details_Report_CB_1"]:Enable()
|
|
_G ["Details_Report_CB_1Text"]:SetTextColor (1, 1, 1, 1)
|
|
else
|
|
_G ["Details_Report_CB_1"]:Disable()
|
|
_G ["Details_Report_CB_1Text"]:SetTextColor (.5, .5, .5, 1)
|
|
end
|
|
|
|
if (_inverse) then
|
|
_G ["Details_Report_CB_2"]:Enable()
|
|
_G ["Details_Report_CB_2Text"]:SetTextColor (1, 1, 1, 1)
|
|
else
|
|
_G ["Details_Report_CB_2"]:Disable()
|
|
_G ["Details_Report_CB_2Text"]:SetTextColor (.5, .5, .5, 1)
|
|
end
|
|
|
|
if (_slider) then
|
|
_detalhes.janela_report.slider:Enable()
|
|
_detalhes.janela_report.slider.lockTexture:Hide()
|
|
_detalhes.janela_report.slider.amt:Show()
|
|
else
|
|
_detalhes.janela_report.slider:Disable()
|
|
_detalhes.janela_report.slider.lockTexture:Show()
|
|
_detalhes.janela_report.slider.amt:Hide()
|
|
end
|
|
|
|
if (_detalhes.janela_report.ativa) then
|
|
_detalhes.janela_report:Flash (0.2, 0.2, 0.4, true, 0, 0, "NONE")
|
|
end
|
|
|
|
_detalhes.janela_report.ativa = true
|
|
_detalhes.janela_report.enviar:SetScript ("OnClick", function() func (_G ["Details_Report_CB_1"]:GetChecked(), _G ["Details_Report_CB_2"]:GetChecked(), _detalhes.report_lines) end)
|
|
|
|
gump:Fade (_detalhes.janela_report, 0)
|
|
|
|
return true
|
|
end
|
|
|
|
function _detalhes:SendReportTextWindow (lines)
|
|
|
|
if (not _detalhes.copypasteframe) then
|
|
_detalhes.copypasteframe = CreateFrame ("editbox", "DetailsCopyPasteFrame2", UIParent)
|
|
_detalhes.copypasteframe:SetFrameStrata ("TOOLTIP")
|
|
_detalhes.copypasteframe:SetPoint ("CENTER", UIParent, "CENTER", 0, 50)
|
|
tinsert (UISpecialFrames, "DetailsCopyPasteFrame2")
|
|
_detalhes.copypasteframe:SetSize (400, 400)
|
|
_detalhes.copypasteframe:SetBackdrop ({bgFile = "Interface\\ACHIEVEMENTFRAME\\UI-Achievement-Parchment-Horizontal-Desaturated",
|
|
edgeFile = "Interface\\Tooltips\\UI-Tooltip-Border",
|
|
tile = true, tileSize = 16, edgeSize = 8,
|
|
insets = {left = 0, right = 0, top = 0, bottom = 0},})
|
|
_detalhes.copypasteframe:SetBackdropColor (0, 0, 0, 0.9)
|
|
_detalhes.copypasteframe:SetAutoFocus (false)
|
|
_detalhes.copypasteframe:SetMultiLine (true)
|
|
_detalhes.copypasteframe:SetFontObject ("GameFontHighlightSmall")
|
|
_detalhes.copypasteframe:Hide()
|
|
|
|
local title = _detalhes.copypasteframe:CreateFontString (nil, "overlay", "GameFontNormal")
|
|
title:SetPoint ("bottomleft", _detalhes.copypasteframe, "topleft", 2, 2)
|
|
title:SetText ("Press Ctrl + C and paste wherever you want, press any key to close.")
|
|
title:SetJustifyH ("left")
|
|
|
|
local texture = _detalhes.copypasteframe:CreateTexture (nil, "overlay")
|
|
texture:SetTexture (0, 0, 0, 1)
|
|
texture:SetSize (400, 25)
|
|
texture:SetPoint ("bottomleft", _detalhes.copypasteframe, "topleft")
|
|
|
|
_detalhes.copypasteframe:SetScript ("OnEditFocusGained", function() _detalhes.copypasteframe:HighlightText() end)
|
|
_detalhes.copypasteframe:SetScript ("OnEditFocusLost", function() _detalhes.copypasteframe:Hide() end)
|
|
_detalhes.copypasteframe:SetScript ("OnEscapePressed", function() _detalhes.copypasteframe:SetFocus (false); _detalhes.copypasteframe:Hide() end)
|
|
_detalhes.copypasteframe:SetScript ("OnChar", function() _detalhes.copypasteframe:SetFocus (false); _detalhes.copypasteframe:Hide() end)
|
|
end
|
|
|
|
local s = ""
|
|
for _, line in ipairs (lines) do
|
|
s = s .. line .. "\n"
|
|
end
|
|
|
|
_detalhes.copypasteframe:Show()
|
|
_detalhes.copypasteframe:SetText (s)
|
|
_detalhes.copypasteframe:HighlightText()
|
|
_detalhes.copypasteframe:SetFocus (true)
|
|
|
|
end
|
|
|
|
|
|
--> internal details report functions -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
|
|
|
|
function _detalhes:Reportar (param2, options, arg3, id)
|
|
|
|
if (not _detalhes.janela_report) then
|
|
_detalhes.janela_report = gump:CriaJanelaReport()
|
|
end
|
|
|
|
if (options and options.meu_id) then
|
|
self = options
|
|
end
|
|
|
|
if (type (param2) == "string") then
|
|
id = param2
|
|
end
|
|
|
|
if (_detalhes.last_report_id and id and _detalhes.last_report_id == id) then
|
|
_detalhes.last_report_id = nil
|
|
_detalhes.janela_report.fechar:Click()
|
|
return
|
|
end
|
|
|
|
_detalhes.last_report_id = id
|
|
|
|
--> trabalha com as opções:
|
|
if (options and options._no_current) then
|
|
_G ["Details_Report_CB_1"]:Disable()
|
|
_G ["Details_Report_CB_1Text"]:SetTextColor (.5, .5, .5, 1)
|
|
else
|
|
_G ["Details_Report_CB_1"]:Enable()
|
|
_G ["Details_Report_CB_1Text"]:SetTextColor (1, 1, 1, 1)
|
|
end
|
|
|
|
if (options and options._no_inverse) then
|
|
_G ["Details_Report_CB_2"]:Disable()
|
|
_G ["Details_Report_CB_2Text"]:SetTextColor (.5, .5, .5, 1)
|
|
else
|
|
_G ["Details_Report_CB_2"]:Enable()
|
|
_G ["Details_Report_CB_2Text"]:SetTextColor (1, 1, 1, 1)
|
|
end
|
|
|
|
_detalhes.janela_report.slider:Enable()
|
|
_detalhes.janela_report.slider.lockTexture:Hide()
|
|
_detalhes.janela_report.slider.amt:Show()
|
|
|
|
if (options) then
|
|
_detalhes.janela_report.enviar:SetScript ("OnClick", function() self:monta_relatorio (param2, options._custom) end)
|
|
else
|
|
_detalhes.janela_report.enviar:SetScript ("OnClick", function() self:monta_relatorio (param2) end)
|
|
end
|
|
|
|
if (_detalhes.janela_report.ativa) then
|
|
_detalhes.janela_report:Flash (0.2, 0.2, 0.4, true, 0, 0, "NONE")
|
|
end
|
|
|
|
_detalhes.janela_report.ativa = true
|
|
gump:Fade (_detalhes.janela_report, 0)
|
|
end
|
|
|
|
--> build report frame gump -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
|
|
|
|
--> script
|
|
local savepos = function (self)
|
|
local xofs, yofs = self:GetCenter()
|
|
local scale = self:GetEffectiveScale()
|
|
local UIscale = UIParent:GetScale()
|
|
xofs = xofs * scale - GetScreenWidth() * UIscale / 2
|
|
yofs = yofs * scale - GetScreenHeight() * UIscale / 2
|
|
local x = xofs / UIscale
|
|
local y = yofs / UIscale
|
|
_detalhes.report_pos [1] = x
|
|
_detalhes.report_pos [2] = y
|
|
end
|
|
local restorepos = function (self)
|
|
local x, y = _detalhes.report_pos [1], _detalhes.report_pos [2]
|
|
local scale = self:GetEffectiveScale()
|
|
local UIscale = UIParent:GetScale()
|
|
x = x * UIscale / scale
|
|
y = y * UIscale / scale
|
|
self:ClearAllPoints()
|
|
self:SetPoint ("center", UIParent, "center", x, y)
|
|
end
|
|
local function seta_scripts (este_gump)
|
|
--> Janela
|
|
este_gump:SetScript ("OnMouseDown",
|
|
function (self, botao)
|
|
if (botao == "LeftButton") then
|
|
self:StartMoving()
|
|
self.isMoving = true
|
|
end
|
|
end)
|
|
|
|
este_gump:SetScript ("OnMouseUp",
|
|
function (self)
|
|
if (self.isMoving) then
|
|
self:StopMovingOrSizing()
|
|
savepos (self)
|
|
self.isMoving = false
|
|
end
|
|
end)
|
|
end
|
|
|
|
--> dropdown menus
|
|
|
|
--[[
|
|
Emote: 255 251 255
|
|
Yell: 255 63 64
|
|
Guild Chat: 64 251 64
|
|
Officer Chat: 64 189 64
|
|
Achievement: 255 251 0
|
|
Whisper: 255 126 255
|
|
RealID: 0 251 246
|
|
Party: 170 167 255
|
|
Party Lead: 118 197 255
|
|
Raid: 255 125 0
|
|
Raid Warning: 255 71 0
|
|
Raid Lead: 255 71 9
|
|
BG Leader: 255 216 183
|
|
General/Trade: 255 189 192
|
|
--]]
|
|
|
|
|
|
local icons_and_colors = {
|
|
["PARTY"] = {icon = [[Interface\FriendsFrame\UI-Toast-ToastIcons]], coords = {0.53125, 0.7265625, 0.078125, 0.40625}, color = {0.66, 0.65, 1}},
|
|
["RAID"] = {icon = [[Interface\FriendsFrame\UI-Toast-ToastIcons]], coords = {0.53125, 0.7265625, 0.078125, 0.40625}, color = {1, 0.49, 0}},
|
|
["GUILD"] = {icon = [[Interface\FriendsFrame\UI-Toast-ToastIcons]], coords = {0.8046875, 0.96875, 0.125, 0.390625}, color = {0.25, 0.98, 0.25}},
|
|
["OFFICER"] = {icon = [[Interface\FriendsFrame\UI-Toast-ToastIcons]], coords = {0.8046875, 0.96875, 0.125, 0.390625}, color = {0.25, 0.74, 0.25}},
|
|
["WHISPER"] = {icon = [[Interface\FriendsFrame\UI-Toast-ToastIcons]], coords = {0.0546875, 0.1953125, 0.625, 0.890625}, color = {1, 0.49, 1}},
|
|
["SAY"] = {icon = [[Interface\FriendsFrame\UI-Toast-ToastIcons]], coords = {0.0390625, 0.203125, 0.09375, 0.375}, color = {1, 1, 1}},
|
|
["COPY"] = {icon = [[Interface\Buttons\UI-GuildButton-PublicNote-Disabled]], coords = {0, 1, 0, 1}, color = {1, 1, 1}},
|
|
}
|
|
function _detalhes.GetReportIconAndColor (report_where)
|
|
local key = report_where:gsub ((".*|"), "")
|
|
return icons_and_colors [key]
|
|
end
|
|
|
|
local function cria_drop_down (este_gump)
|
|
|
|
local iconsize = {16, 16}
|
|
|
|
local lista = {
|
|
{Loc ["STRING_REPORTFRAME_PARTY"], "PARTY", function() return GetNumSubgroupMembers() > 0 end, {iconsize = iconsize, icon = [[Interface\FriendsFrame\UI-Toast-ToastIcons]], coords = {0.53125, 0.7265625, 0.078125, 0.40625}, color = {0.66, 0.65, 1}}},
|
|
{Loc ["STRING_REPORTFRAME_RAID"], "RAID", _IsInRaid, {iconsize = iconsize, icon = [[Interface\FriendsFrame\UI-Toast-ToastIcons]], coords = {0.53125, 0.7265625, 0.078125, 0.40625}, color = {1, 0.49, 0}}},
|
|
{Loc ["STRING_REPORTFRAME_GUILD"], "GUILD", _IsInGuild, {iconsize = iconsize, icon = [[Interface\FriendsFrame\UI-Toast-ToastIcons]], coords = {0.8046875, 0.96875, 0.125, 0.390625}, color = {0.25, 0.98, 0.25}}},
|
|
{Loc ["STRING_REPORTFRAME_OFFICERS"], "OFFICER", _IsInGuild, {iconsize = iconsize, icon = [[Interface\FriendsFrame\UI-Toast-ToastIcons]], coords = {0.8046875, 0.96875, 0.125, 0.390625}, color = {0.25, 0.74, 0.25}}},
|
|
{Loc ["STRING_REPORTFRAME_WHISPER"], "WHISPER", nil, {iconsize = iconsize, icon = [[Interface\FriendsFrame\UI-Toast-ToastIcons]], coords = {0.0546875, 0.1953125, 0.625, 0.890625}, color = {1, 0.49, 1}}},
|
|
{Loc ["STRING_REPORTFRAME_WHISPERTARGET"], "WHISPER2", nil, {iconsize = iconsize, icon = [[Interface\FriendsFrame\UI-Toast-ToastIcons]], coords = {0.0546875, 0.1953125, 0.625, 0.890625}, color = {1, 0.49, 1}}},
|
|
{Loc ["STRING_REPORTFRAME_SAY"], "SAY", nil, {iconsize = iconsize, icon = [[Interface\FriendsFrame\UI-Toast-ToastIcons]], coords = {0.0390625, 0.203125, 0.09375, 0.375}, color = {1, 1, 1}}},
|
|
{Loc ["STRING_REPORTFRAME_COPY"], "COPY", nil, {iconsize = iconsize, icon = [[Interface\Buttons\UI-GuildButton-PublicNote-Disabled]], coords = {0, 1, 0, 1}, color = {1, 1, 1}}},
|
|
}
|
|
|
|
local on_click = function (self, fixedParam, selectedOutput)
|
|
_detalhes.report_where = selectedOutput
|
|
end
|
|
|
|
local build_list = function()
|
|
|
|
local output_array = {}
|
|
|
|
for index, case in ipairs (lista) do
|
|
if (not case [3] or case [3]()) then
|
|
output_array [#output_array + 1] = {iconsize = case [4].iconsize, value = case [2], label = case [1], onclick = on_click, icon = case [4].icon, texcoord = case [4].coords, iconcolor = case [4].color}
|
|
end
|
|
end
|
|
|
|
local channels = {_GetChannelList()} --> coloca o resultado em uma tabela .. {id1, canal1, id2, canal2}
|
|
for i = 1, #channels, 2 do --> total de canais
|
|
output_array [#output_array + 1] = {iconsize = iconsize, value = "CHANNEL|"..channels [i+1], label = channels [i]..". "..channels [i+1], onclick = on_click, icon = [[Interface\FriendsFrame\UI-Toast-ToastIcons]], texcoord = {0.3046875, 0.4453125, 0.109375, 0.390625}, iconcolor = {149/255, 112/255, 112/255}}
|
|
end
|
|
|
|
local bnet_friends = {}
|
|
|
|
local BnetFriends = BNGetNumFriends()
|
|
for i = 1, BnetFriends do
|
|
local presenceID, presenceName, battleTag, isBattleTagPresence, toonName, toonID, client, isOnline, lastOnline, isAFK, isDND, messageText, noteText, isRIDFriend, broadcastTime, canSoR = BNGetFriendInfo (i)
|
|
if (isOnline) then
|
|
output_array [#output_array + 1] = {iconsize = iconsize, value = "REALID|" .. presenceID, label = presenceName, onclick = on_click, icon = [[Interface\FriendsFrame\Battlenet-Battleneticon]], texcoord = {0.125, 0.875, 0.125, 0.875}, iconcolor = {1, 1, 1}}
|
|
end
|
|
end
|
|
|
|
return output_array
|
|
end
|
|
este_gump.dropdown_func = build_list
|
|
|
|
local select_output = gump:NewDropDown (este_gump, _, "$parentOutputDropdown", "select", 185, 20, build_list, 1)
|
|
select_output:SetPoint ("topleft", este_gump, "topleft", 107, -55)
|
|
este_gump.select = select_output.widget
|
|
|
|
function select_output:CheckValid()
|
|
|
|
local last_selected = _detalhes.report_where
|
|
local check_func
|
|
for i, t in ipairs (lista) do
|
|
if (t[2] == last_selected) then
|
|
check_func = t[3]
|
|
break
|
|
end
|
|
end
|
|
|
|
if (check_func) then
|
|
local is_shown = check_func()
|
|
if (is_shown) then
|
|
select_output:Select (last_selected)
|
|
else
|
|
if (IsInRaid()) then
|
|
select_output:Select ("RAID")
|
|
elseif (GetNumSubgroupMembers() > 0) then
|
|
select_output:Select ("PARTY")
|
|
elseif (IsInGuild()) then
|
|
select_output:Select ("GUILD")
|
|
else
|
|
select_output:Select ("SAY")
|
|
end
|
|
end
|
|
else
|
|
select_output:Select (last_selected)
|
|
end
|
|
end
|
|
|
|
select_output:CheckValid()
|
|
end
|
|
|
|
--> slider
|
|
|
|
local function cria_slider (este_gump)
|
|
|
|
este_gump.linhas_amt = este_gump:CreateFontString (nil, "OVERLAY", "GameFontHighlight")
|
|
este_gump.linhas_amt:SetText (Loc ["STRING_REPORTFRAME_LINES"])
|
|
este_gump.linhas_amt:SetTextColor (.9, .9, .9, 1)
|
|
este_gump.linhas_amt:SetPoint ("bottomleft", este_gump, "bottomleft", 58, 12)
|
|
_detalhes:SetFontSize (este_gump.linhas_amt, 10)
|
|
|
|
local slider = _CreateFrame ("Slider", "Details_Report_Slider", este_gump)
|
|
este_gump.slider = slider
|
|
slider:SetPoint ("bottomleft", este_gump, "bottomleft", 58, -7)
|
|
|
|
slider.thumb = slider:CreateTexture (nil, "artwork")
|
|
slider.thumb:SetTexture ("Interface\\Buttons\\UI-ScrollBar-Knob")
|
|
slider.thumb:SetSize (30, 24)
|
|
slider.thumb:SetAlpha (0.7)
|
|
|
|
local lockTexture = slider:CreateTexture (nil, "overlay")
|
|
lockTexture:SetPoint ("center", slider.thumb, "center", -1, -1)
|
|
lockTexture:SetTexture ("Interface\\Buttons\\CancelButton-Up")
|
|
lockTexture:SetWidth (29)
|
|
lockTexture:SetHeight (24)
|
|
lockTexture:Hide()
|
|
slider.lockTexture = lockTexture
|
|
|
|
slider:SetThumbTexture (slider.thumb) --depois
|
|
slider:SetOrientation ("HORIZONTAL")
|
|
slider:SetMinMaxValues (1.0, 25.0)
|
|
slider:SetValueStep (1.0)
|
|
slider:SetWidth (232)
|
|
slider:SetHeight (20)
|
|
|
|
local last_value = _detalhes.report_lines or 5
|
|
slider:SetValue (math.floor (last_value))
|
|
|
|
slider.amt = slider:CreateFontString (nil, "OVERLAY", "GameFontHighlightSmall")
|
|
local amt = slider:GetValue()
|
|
if (amt < 10) then
|
|
amt = "0"..amt
|
|
end
|
|
slider.amt:SetText (amt)
|
|
slider.amt:SetTextColor (.8, .8, .8, 1)
|
|
|
|
slider.amt:SetPoint ("center", slider.thumb, "center")
|
|
|
|
slider:SetScript ("OnValueChanged", function (self)
|
|
local amt = math.floor (self:GetValue())
|
|
_detalhes.report_lines = amt
|
|
if (amt < 10) then
|
|
amt = "0"..amt
|
|
end
|
|
self.amt:SetText (amt)
|
|
end)
|
|
|
|
slider:SetScript ("OnEnter", function (self)
|
|
slider.thumb:SetAlpha (1)
|
|
end)
|
|
|
|
slider:SetScript ("OnLeave", function (self)
|
|
slider.thumb:SetAlpha (0.7)
|
|
end)
|
|
|
|
end
|
|
|
|
--> whisper taget field
|
|
|
|
local function cria_wisper_field (este_gump)
|
|
|
|
este_gump.wisp_who = este_gump:CreateFontString (nil, "OVERLAY", "GameFontHighlight")
|
|
este_gump.wisp_who:SetText (Loc ["STRING_REPORTFRAME_WHISPER"] .. ":")
|
|
este_gump.wisp_who:SetTextColor (1, 1, 1, 1)
|
|
|
|
este_gump.wisp_who:SetPoint ("topleft", este_gump.select, "topleft", 14, -30)
|
|
|
|
_detalhes:SetFontSize (este_gump.wisp_who, 10)
|
|
|
|
--editbox
|
|
local editbox = _CreateFrame ("EditBox", nil, este_gump)
|
|
este_gump.editbox = editbox
|
|
|
|
editbox:SetAutoFocus (false)
|
|
editbox:SetFontObject ("GameFontHighlightSmall")
|
|
|
|
editbox:SetPoint ("TOPLEFT", este_gump.select, "TOPLEFT", 64, -28)
|
|
|
|
editbox:SetHeight (14)
|
|
editbox:SetWidth (120)
|
|
editbox:SetJustifyH ("LEFT")
|
|
editbox:EnableMouse(true)
|
|
editbox:SetBackdrop ({
|
|
bgFile = "Interface\\ChatFrame\\ChatFrameBackground",
|
|
edgeFile = "Interface\\ChatFrame\\ChatFrameBackground",
|
|
tile = true, edgeSize = 1, tileSize = 5,
|
|
})
|
|
editbox:SetBackdropColor(0, 0, 0, 0.0)
|
|
editbox:SetBackdropBorderColor(0.0, 0.0, 0.0, 0.0)
|
|
|
|
local last_value = _detalhes.report_to_who or ""
|
|
editbox:SetText (last_value)
|
|
editbox.perdeu_foco = nil
|
|
editbox.focus = false
|
|
|
|
editbox:SetScript ("OnEnterPressed", function ()
|
|
local texto = _detalhes:trim (editbox:GetText())
|
|
if (_string_len (texto) > 0) then
|
|
_detalhes.report_to_who = texto
|
|
editbox:AddHistoryLine (texto)
|
|
editbox:SetText (texto)
|
|
else
|
|
_detalhes.report_to_who = ""
|
|
editbox:SetText ("")
|
|
end
|
|
editbox.perdeu_foco = true --> isso aqui pra quando estiver editando e clicar em outra caixa
|
|
editbox:ClearFocus()
|
|
end)
|
|
|
|
editbox:SetScript ("OnEscapePressed", function()
|
|
editbox:SetText("")
|
|
_detalhes.report_to_who = ""
|
|
editbox.perdeu_foco = true
|
|
editbox:ClearFocus()
|
|
end)
|
|
|
|
editbox:SetScript ("OnEnter", function()
|
|
editbox.mouse_over = true
|
|
editbox:SetBackdropColor(0.1, 0.1, 0.1, 0.7)
|
|
if (editbox:GetText() == "" and not editbox.focus) then
|
|
editbox:SetText (Loc ["STRING_REPORTFRAME_INSERTNAME"])
|
|
end
|
|
end)
|
|
|
|
editbox:SetScript ("OnLeave", function()
|
|
editbox.mouse_over = false
|
|
editbox:SetBackdropColor(0.0, 0.0, 0.0, 0.0)
|
|
if (not editbox:HasFocus()) then
|
|
if (editbox:GetText() == Loc ["STRING_REPORTFRAME_INSERTNAME"]) then
|
|
editbox:SetText("")
|
|
end
|
|
end
|
|
end)
|
|
|
|
editbox:SetScript ("OnEditFocusGained", function()
|
|
if (editbox:GetText() == Loc ["STRING_REPORTFRAME_INSERTNAME"]) then
|
|
editbox:SetText("")
|
|
end
|
|
|
|
if (editbox:GetText() ~= "") then
|
|
--> selecionar todo o texto
|
|
editbox:HighlightText (0, editbox:GetNumLetters())
|
|
end
|
|
|
|
editbox.focus = true
|
|
end)
|
|
|
|
editbox:SetScript ("OnEditFocusLost", function()
|
|
if (editbox.perdeu_foco == nil) then
|
|
local texto = _detalhes:trim (editbox:GetText())
|
|
if (_string_len (texto) > 0) then
|
|
_detalhes.report_to_who = texto
|
|
else
|
|
_detalhes.report_to_who = ""
|
|
editbox:SetText ("")
|
|
end
|
|
else
|
|
editbox.perdeu_foco = nil
|
|
end
|
|
|
|
editbox.focus = false
|
|
end)
|
|
end
|
|
|
|
--> both check buttons
|
|
|
|
function cria_check_buttons (este_gump)
|
|
local checkbox = _CreateFrame ("CheckButton", "Details_Report_CB_1", este_gump, "ChatConfigCheckButtonTemplate")
|
|
checkbox:SetPoint ("topleft", este_gump.wisp_who, "bottomleft", -25, -4)
|
|
_G [checkbox:GetName().."Text"]:SetText (Loc ["STRING_REPORTFRAME_CURRENT"])
|
|
_detalhes:SetFontSize (_G [checkbox:GetName().."Text"], 10)
|
|
checkbox.tooltip = Loc ["STRING_REPORTFRAME_CURRENTINFO"]
|
|
checkbox:SetHitRectInsets (0, -35, 0, 0)
|
|
|
|
local checkbox2 = _CreateFrame ("CheckButton", "Details_Report_CB_2", este_gump, "ChatConfigCheckButtonTemplate")
|
|
checkbox2:SetPoint ("topleft", este_gump.wisp_who, "bottomleft", 35, -4)
|
|
_G [checkbox2:GetName().."Text"]:SetText (Loc ["STRING_REPORTFRAME_REVERT"])
|
|
_detalhes:SetFontSize (_G [checkbox2:GetName().."Text"], 10)
|
|
checkbox2.tooltip = Loc ["STRING_REPORTFRAME_REVERTINFO"]
|
|
checkbox2:SetHitRectInsets (0, -35, 0, 0)
|
|
end
|
|
|
|
--> frame creation function
|
|
|
|
function gump:CriaJanelaReport()
|
|
|
|
local este_gump = _CreateFrame ("Frame", "DetailsReportWindow", _UIParent)
|
|
este_gump:SetPoint ("CENTER", UIParent, "CENTER")
|
|
este_gump:SetFrameStrata ("DIALOG")
|
|
|
|
este_gump:SetScript ("OnShow", function (self)
|
|
local dropdown = este_gump.select.MyObject
|
|
local where = _detalhes.report_where
|
|
|
|
local list = este_gump.dropdown_func()
|
|
local found
|
|
|
|
for index, option in ipairs (list) do
|
|
if (option.value == where) then
|
|
dropdown:Select (where)
|
|
found = true
|
|
break
|
|
end
|
|
end
|
|
|
|
if (not found) then
|
|
if (_IsInRaid()) then
|
|
dropdown:Select ("RAID")
|
|
_detalhes.report_where = "RAID"
|
|
|
|
elseif (GetNumSubgroupMembers() > 0) then
|
|
dropdown:Select ("PARTY")
|
|
_detalhes.report_where = "PARTY"
|
|
|
|
elseif (_IsInGuild()) then
|
|
dropdown:Select ("GUILD")
|
|
_detalhes.report_where = "GUILD"
|
|
|
|
else
|
|
dropdown:Select ("SAY")
|
|
_detalhes.report_where = "SAY"
|
|
end
|
|
end
|
|
|
|
end)
|
|
|
|
_tinsert (_UISpecialFrames, este_gump:GetName())
|
|
|
|
este_gump:SetScript ("OnHide", function (self)
|
|
_detalhes.janela_report.ativa = false
|
|
_detalhes.last_report_id = nil
|
|
|
|
if (_detalhes.delay_CheckSwitchToCurrent) then
|
|
_detalhes.delay_CheckSwitchToCurrent = nil
|
|
_detalhes:CheckSwitchToCurrent()
|
|
end
|
|
end)
|
|
|
|
este_gump:SetWidth (320)
|
|
este_gump:SetHeight (128)
|
|
este_gump:EnableMouse (true)
|
|
este_gump:SetResizable (false)
|
|
este_gump:SetMovable (true)
|
|
restorepos (este_gump)
|
|
|
|
_detalhes.janela_report = este_gump
|
|
|
|
--> icone
|
|
este_gump.icone = este_gump:CreateTexture (nil, "BACKGROUND")
|
|
este_gump.icone:SetPoint ("TOPLEFT", este_gump, "TOPLEFT", 40, -10)
|
|
este_gump.icone:SetTexture ("Interface\\AddOns\\Details\\images\\report_frame_icons") --> top left
|
|
este_gump.icone:SetWidth (64)
|
|
este_gump.icone:SetHeight (64)
|
|
este_gump.icone:SetTexCoord (1/256, 64/256, 1/256, 64/256) --left right top bottom
|
|
|
|
--> cria as 2 partes do fundo da janela
|
|
este_gump.bg1 = este_gump:CreateTexture (nil, "BORDER")
|
|
este_gump.bg1:SetPoint ("TOPLEFT", este_gump, "TOPLEFT", 0, 0)
|
|
este_gump.bg1:SetTexture ("Interface\\AddOns\\Details\\images\\report_frame1") --> top left
|
|
|
|
este_gump.bg2 = este_gump:CreateTexture (nil, "BORDER")
|
|
este_gump.bg2:SetPoint ("TOPRIGHT", este_gump, "TOPRIGHT", 0, 0)
|
|
este_gump.bg2:SetTexture ("Interface\\AddOns\\Details\\images\\report_frame2") --> top right
|
|
|
|
--> botão de fechar
|
|
este_gump.fechar = CreateFrame ("Button", nil, este_gump, "UIPanelCloseButton")
|
|
este_gump.fechar:SetWidth (32)
|
|
este_gump.fechar:SetHeight (32)
|
|
este_gump.fechar:SetPoint ("TOPRIGHT", este_gump, "TOPRIGHT", -20, -23)
|
|
este_gump.fechar:SetText ("X")
|
|
este_gump.fechar:SetScript ("OnClick", function()
|
|
gump:Fade (este_gump, 1)
|
|
_detalhes.janela_report.ativa = false
|
|
end)
|
|
|
|
este_gump.titulo = este_gump:CreateFontString (nil, "OVERLAY", "GameFontHighlightLeft")
|
|
este_gump.titulo:SetText (Loc ["STRING_REPORTFRAME_WINDOW_TITLE"])
|
|
este_gump.titulo:SetTextColor (0.999, 0.819, 0, 1)
|
|
este_gump.titulo:SetPoint ("topleft", este_gump, "topleft", 120, -33)
|
|
|
|
seta_scripts (este_gump)
|
|
|
|
cria_drop_down (este_gump)
|
|
cria_slider (este_gump)
|
|
cria_wisper_field (este_gump)
|
|
cria_check_buttons (este_gump)
|
|
|
|
este_gump.enviar = _CreateFrame ("Button", nil, este_gump, "OptionsButtonTemplate")
|
|
|
|
este_gump.enviar:SetPoint ("topleft", este_gump.editbox, "topleft", 61, -19)
|
|
|
|
este_gump.enviar:SetWidth (60)
|
|
este_gump.enviar:SetHeight (15)
|
|
este_gump.enviar:SetText (Loc ["STRING_REPORTFRAME_SEND"])
|
|
|
|
gump:Fade (este_gump, 1)
|
|
gump:CreateFlashAnimation (este_gump)
|
|
|
|
return este_gump
|
|
|
|
end |