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 --> 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) 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) Details.FadeHandler.Fader (_detalhes.janela_report, 0) return true end function _detalhes:SendReportTextWindow (lines) if (not _detalhes.copypasteframe) then _detalhes.copypasteframe = CreateFrame ("frame", "DetailsCopyPasteFrame2", UIParent,"BackdropTemplate") _detalhes.copypasteframe:SetFrameStrata ("TOOLTIP") _detalhes.copypasteframe:SetPoint ("CENTER", UIParent, "CENTER", 0, 50) tinsert (UISpecialFrames, "DetailsCopyPasteFrame2") _detalhes.copypasteframe:SetSize (400, 400) _detalhes.copypasteframe:Hide() DetailsFramework:ApplyStandardBackdrop (_detalhes.copypasteframe) DetailsFramework:CreateTitleBar (_detalhes.copypasteframe, "Export Text") local editBox = CreateFrame ("editbox", nil, _detalhes.copypasteframe) editBox:SetPoint ("topleft", _detalhes.copypasteframe, "topleft", 2, -26) editBox:SetPoint ("bottomright", _detalhes.copypasteframe, "bottomright", -2, 2) editBox:SetAutoFocus (false) editBox:SetMultiLine (true) editBox:SetFontObject ("GameFontHighlightSmall") editBox:SetScript ("OnEditFocusGained", function() editBox:HighlightText() end) editBox:SetScript ("OnEditFocusLost", function() _detalhes.copypasteframe:Hide() end) editBox:SetScript ("OnEscapePressed", function() editBox:SetFocus (false); _detalhes.copypasteframe:Hide() end) editBox:SetScript ("OnChar", function() editBox:SetFocus (false); _detalhes.copypasteframe:Hide() end) _detalhes.copypasteframe.EditBox = editBox end local s = "" for _, line in ipairs (lines) do s = s .. line .. "\n" end _detalhes.copypasteframe:Show() _detalhes.copypasteframe.EditBox:SetText (s) _detalhes.copypasteframe.EditBox:HighlightText() _detalhes.copypasteframe.EditBox:SetFocus (true) end --> internal details report functions ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- function _detalhes:Reportar (param2, options, arg3, id) GameCooltip2:Hide() 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 Details.FadeHandler.Fader (_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 elseif (botao == "RightButton") then if (self.isMoving) then self:StopMovingOrSizing() savepos (self) self.isMoving = false end self:Hide() 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"] = {label = Loc ["STRING_REPORTFRAME_OFFICERS"], 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 baseChannels = { {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", IsInInstance, {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 reportChannelsTable = {} for index, channelInfo in ipairs (baseChannels) do if (not channelInfo [3] or channelInfo[3]()) then reportChannelsTable[#reportChannelsTable + 1] = {iconsize = channelInfo [4].iconsize, value = channelInfo [2], label = channelInfo [1], onclick = on_click, icon = channelInfo [4].icon, texcoord = channelInfo [4].coords, iconcolor = channelInfo [4].color} end end local channels = {_GetChannelList()} --> coloca o resultado em uma tabela .. {id1, canal1, id2, canal2} --09/august/2018: GetChannelList passed to return 3 values for each channel instead of 2 for i = 1, #channels, 3 do --> total de canais reportChannelsTable [#reportChannelsTable + 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 if (not DetailsFramework.IsTimewalkWoW()) then local _, numBNetOnline = BNGetNumFriends() for i = 1, numBNetOnline do local accountInfo = C_BattleNet.GetFriendAccountInfo(i) local gameAccountInfo = accountInfo and accountInfo.gameAccountInfo if (gameAccountInfo) then local isOnline = gameAccountInfo.isOnline if (isOnline) then local bTag = accountInfo.battleTag local bTagNoNumber = bTag:gsub("#.*", "") reportChannelsTable[#reportChannelsTable + 1] = {iconsize = iconsize, value = "REALID|" .. accountInfo.bnetAccountID, label = bTagNoNumber, onclick = on_click, icon = [[Interface\FriendsFrame\Battlenet-Battleneticon]], texcoord = {0.125, 0.875, 0.125, 0.875}, iconcolor = {1, 1, 1}} end end end end return reportChannelsTable 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 este_gump.dropdown = select_output function select_output:CheckValid() local last_selected = _detalhes.report_where local check_func for i, t in ipairs (baseChannels) 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,"BackdropTemplate") 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,"BackdropTemplate") 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 ("center") 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,BackdropTemplate") 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,BackdropTemplate") 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 local elvui_skin = function() local window = DetailsReportWindow local anchorX = 10 local b_onenter = function (self) self:SetBackdropColor (0.4, 0.4, 0.4, 0.6) self.icon:SetBlendMode ("ADD") _detalhes:SetFontColor (self.text, "yellow") end local b_onleave = function (self) self:SetBackdropColor (0, 0, 0, 0.3) self.icon:SetBlendMode ("BLEND") _detalhes:SetFontColor (self.text, "white") end window.last_reported_label:SetPoint ("topleft", window, "topleft", 5, -28) gump:SetFontSize (window.last_reported_label, 10) for i = 1, 9 do --window.max_last_buttons local b = window.recently_report_buttons [i] b:SetSize (150, 16) b:SetPoint ("topleft", window, "topleft", 5, -28 + (i*17*-1)) b:Show() b:SetBackdrop ({bgFile = [[Interface\AddOns\Details\images\background]], tile = true, tileSize = 16, insets = {left = 0, right = 0, top = 0, bottom = 0}}) b:SetBackdropColor (0, 0, 0, 0.3) b.text:SetTextColor (1, 1, 1, 1) _detalhes:SetFontSize (b.text, 9) b:SetScript ("OnEnter", b_onenter) b:SetScript ("OnLeave", b_onleave) end window.fechar:SetWidth (20) window.fechar:SetHeight (20) window.fechar:SetPoint ("TOPRIGHT", window, "TOPRIGHT", 0, -3) window.fechar:Show() window.fechar:GetNormalTexture():SetDesaturated (true) local b = window.recently_report_buttons [10] b:Hide() window.dropdown:ClearAllPoints() window.dropdown:SetWidth (155) window.dropdown:SetPoint ("topleft", window, "topleft", anchorX, -30) window.dropdown:SetBackdrop ({bgFile = [[Interface\DialogFrame\UI-DialogBox-Background-Dark]], edgeFile = [[Interface\Buttons\WHITE8X8]], edgeSize = 1, tile=true, tileSize = 64, insets = {left = 0, right = 0, top = 0, bottom = 0}}) window.dropdown:SetBackdropBorderColor (0, 0, 0, 0.5) window.dropdown:SetBackdropColor (0, 0, 0, 0.1) window.wisp_who:ClearAllPoints() window.editbox:ClearAllPoints() window.wisp_who:SetPoint ("topleft", window.dropdown.widget, "bottomleft", 0, -10) window.editbox:SetPoint ("topleft", window.wisp_who, "bottomleft", 0, -3) window.editbox:SetWidth (155) window.editbox:SetHeight (20) window.editbox:SetBackdrop ({bgFile = [[Interface\DialogFrame\UI-DialogBox-Background-Dark]], edgeFile = [[Interface\Buttons\WHITE8X8]], edgeSize = 1, tile=true, tileSize = 64, insets = {left = 0, right = 0, top = 0, bottom = 0}}) window.editbox:SetBackdropBorderColor (0, 0, 0, 0.5) window.editbox:SetBackdropColor (0, 0, 0, 0.3) window.linhas_amt:ClearAllPoints() window.linhas_amt:SetPoint ("topleft", window.editbox, "bottomleft", 0, -10) window.slider:ClearAllPoints() window.slider:SetWidth (155) window.slider:SetPoint ("topleft", window.linhas_amt, "bottomleft", 0, -3) window.slider:SetBackdrop ({bgFile = [[Interface\DialogFrame\UI-DialogBox-Background-Dark]], edgeFile = [[Interface\Buttons\WHITE8X8]], edgeSize = 1, tile=true, tileSize = 64, insets = {left = 0, right = 0, top = 0, bottom = 0}}) window.slider:SetBackdropBorderColor (0, 0, 0, 0.5) window.slider:SetBackdropColor (0, 0, 0, 0.3) window.slider.thumb:SetTexture ([[Interface\AddOns\Details\images\icons2]]) window.slider.thumb:SetTexCoord (482/512, 492/512, 104/512, 120/512) window.slider.thumb:SetSize (16, 16) window.slider.thumb:SetVertexColor (0.6, 0.6, 0.6, 0.95) Details_Report_CB_1:Hide() local reverse_checkbox = Details_Report_CB_2 reverse_checkbox:Show() reverse_checkbox:ClearAllPoints() reverse_checkbox:SetBackdrop ({bgFile = [[Interface\DialogFrame\UI-DialogBox-Background-Dark]], edgeFile = [[Interface\Buttons\WHITE8X8]], edgeSize = 1, tile=true, tileSize = 64, insets = {left = 0, right = 0, top = 0, bottom = 0}}) reverse_checkbox:SetBackdropBorderColor (0, 0, 0, 0.5) reverse_checkbox:SetBackdropColor (0, 0, 0, 0.3) reverse_checkbox:SetPoint ("topleft", window.slider, "bottomleft", 0, -8) reverse_checkbox:SetSize (14, 14) reverse_checkbox:SetNormalTexture (nil) reverse_checkbox:SetPushedTexture (nil) reverse_checkbox:SetHighlightTexture (nil) _G [reverse_checkbox:GetName().."Text"]:ClearAllPoints() _G [reverse_checkbox:GetName().."Text"]:SetPoint ("left", reverse_checkbox, "right", 2, 0) window.enviar:ClearAllPoints() window.enviar:SetPoint ("bottom", window, "bottom", 0, 10) window.enviar:SetBackdrop ({bgFile = [[Interface\DialogFrame\UI-DialogBox-Background-Dark]], edgeFile = [[Interface\Buttons\WHITE8X8]], edgeSize = 1, tile=true, tileSize = 64, insets = {left = 0, right = 0, top = 0, bottom = 0}}) window.enviar:SetBackdropBorderColor (0, 0, 0, 0.5) window.enviar:SetBackdropColor (0, 0, 0, 0.3) window.enviar.Left:Hide() window.enviar.Middle:Hide() window.enviar.Right:Hide() window.enviar:SetSize (342/2 - 15, 20) window:SetWidth (342/2 + 5) window:SetHeight (195) window:SetBackdrop ({edgeFile = [[Interface\Buttons\WHITE8X8]], edgeSize = 1}) window:SetBackdropColor (1, 1, 1, 1) window:SetBackdropBorderColor (0, 0, 0, 1) if (not window.elvui_widgets) then window.elvui_widgets = {} local titlebar = CreateFrame ("frame", window:GetName() .. "ElvUITitleBar", window,"BackdropTemplate") titlebar:SetPoint ("topleft", window, "topleft", 2, -3) titlebar:SetPoint ("topright", window, "topright", -2, -3) titlebar:SetHeight (20) titlebar:SetBackdrop ({edgeFile = [[Interface\Buttons\WHITE8X8]], edgeSize = 1, bgFile = [[Interface\AddOns\Details\images\background]], tileSize = 64, tile = true}) titlebar:SetBackdropColor (.5, .5, .5, 1) titlebar:SetBackdropBorderColor (0, 0, 0, 1) local bg1 = window:CreateTexture (nil, "background") bg1:SetTexture ([[Interface\AddOns\Details\images\background]], true) bg1:SetAlpha (0.7) bg1:SetVertexColor (0.27, 0.27, 0.27) bg1:SetVertTile (true) bg1:SetHorizTile (true) bg1:SetAllPoints() tinsert (window.all_widgets, bg1) tinsert (window.elvui_widgets, bg1) tinsert (window.all_widgets, titlebar) tinsert (window.elvui_widgets, titlebar) end window.title:ClearAllPoints() window.title:SetPoint ("center", window, "center") window.title:SetPoint ("top", window, "top", 0, -7) window.title:SetParent (_G [window:GetName() .. "ElvUITitleBar"]) window.title:SetTextColor (.8, .8, .8, 1) window.title:Show() window:SetClampedToScreen (true) for _, widget in ipairs (window.elvui_widgets) do widget:Show() end end local classic_skin = function() local window = DetailsReportWindow local b_onenter = function (self) self:SetBackdropColor (0.4, 0.4, 0.4, 0.6) self.icon:SetBlendMode ("ADD") _detalhes:SetFontColor (self.text, "yellow") end local b_onleave = function (self) self:SetBackdropColor (0, 0, 0, 0.3) self.icon:SetBlendMode ("BLEND") _detalhes:SetFontColor (self.text, "white") end window.last_reported_label:SetPoint ("topleft", window, "topleft", 10, -69) _detalhes:SetFontSize (window.last_reported_label, 10) for i = 1, 8 do --window.max_last_buttons local b = window.recently_report_buttons [i] b:SetSize (150, 16) b:SetPoint ("topleft", window, "topleft", 10, -67 + (i*17*-1)) b:Show() b:SetBackdrop ({bgFile = [[Interface\AddOns\Details\images\background]], tile = true, tileSize = 16, insets = {left = 0, right = 0, top = 0, bottom = 0}}) b:SetBackdropColor (0, 0, 0, 0.3) b.text:SetTextColor (1, 1, 1, 1) _detalhes:SetFontSize (b.text, 9) b:SetScript ("OnEnter", b_onenter) b:SetScript ("OnLeave", b_onleave) end local b = window.recently_report_buttons [10] b:Hide() b = window.recently_report_buttons [9] b:Hide() Details_Report_CB_1:Hide() Details_Report_CB_2:Hide() window.dropdown:ClearAllPoints() window.dropdown:SetWidth (145) window.dropdown:SetPoint ("topleft", window, "topleft", 175, -68) window.wisp_who:ClearAllPoints() window.editbox:ClearAllPoints() window.wisp_who:SetPoint ("topleft", window.dropdown.widget, "bottomleft", 0, -10) window.editbox:SetPoint ("topleft", window.wisp_who, "bottomleft", 0, -3) window.editbox:SetWidth (145) window.editbox:SetHeight (20) window.editbox:SetBackdrop ({bgFile = [[Interface\DialogFrame\UI-DialogBox-Background-Dark]], edgeFile = [[Interface\AddOns\Details\images\border_3]], tile=true, edgeSize = 15, tileSize = 64, insets = {left = 3, right = 3, top = 4, bottom = 4}}) window.linhas_amt:ClearAllPoints() window.linhas_amt:SetPoint ("topleft", window.editbox, "bottomleft", 0, -7) window.slider:ClearAllPoints() window.slider :SetWidth (145) window.slider:SetPoint ("topleft", window.linhas_amt, "bottomleft", 0, -3) window.slider:SetBackdrop ({bgFile = [[Interface\DialogFrame\UI-DialogBox-Background-Dark]], edgeFile = [[Interface\AddOns\Details\images\border_3]], tile=true, edgeSize = 15, tileSize = 64, insets = {left = 3, right = 3, top = 4, bottom = 4}}) window.slider.thumb:SetTexture ("Interface\\Buttons\\UI-ScrollBar-Knob") window.slider.thumb:SetSize (30, 24) window.slider.thumb:SetAlpha (0.7) Details_Report_CB_1:Hide() local reverse_checkbox = Details_Report_CB_2 reverse_checkbox:Show() reverse_checkbox:ClearAllPoints() reverse_checkbox:SetBackdrop (nil) reverse_checkbox:SetPoint ("topleft", window.slider, "bottomleft", -1, -4) reverse_checkbox:SetSize (26, 26) reverse_checkbox:SetNormalTexture ([[Interface\Buttons\UI-CheckBox-Up]]) reverse_checkbox:SetPushedTexture ([[Interface\Buttons\UI-CheckBox-Down]]) reverse_checkbox:SetHighlightTexture ([[Interface\Buttons\UI-CheckBox-Highlight]]) _G [reverse_checkbox:GetName().."Text"]:ClearAllPoints() _G [reverse_checkbox:GetName().."Text"]:SetPoint ("left", reverse_checkbox, "right", 2, 0) window.enviar:ClearAllPoints() window.enviar:SetPoint ("topleft", reverse_checkbox, "bottomleft", 0, -4) window.enviar.Left:Show() window.enviar.Middle:Show() window.enviar.Right:Show() window:SetWidth (342) window:SetHeight (255) window:SetBackdrop (nil) window.fechar:Hide() window.title:Hide() if (not window.classic_widgets) then window.classic_widgets = {} local f = CreateFrame ("frame", window:GetName() .. "F", window, "ButtonFrameTemplate") f:SetAllPoints() f.portrait:SetTexture ("Interface\\AddOns\\Details\\images\\report_frame_icons") f.portrait:SetTexCoord (1/256, 64/256, 1/256, 64/256) f.TitleText:SetText (Loc ["STRING_REPORTFRAME_WINDOW_TITLE"]) f:SetFrameLevel (window:GetFrameLevel()-1) _G [window:GetName() .. "FCloseButton"]:SetFrameLevel (window:GetFrameLevel()+1) _G [window:GetName() .. "FCloseButton"]:SetScript ("OnClick", function() window:Hide() end) tinsert (window.classic_widgets, f) tinsert (window.all_widgets, f) end for _, widget in ipairs (window.classic_widgets) do widget:Show() end end function _detalhes:UpdateRecentlyReported() DetailsReportWindow:RefreshRecentlyReported() end function _detalhes:DelayUpdateReportWindowRecentlyReported() if (DetailsReportWindow) then _detalhes:ScheduleTimer ("UpdateRecentlyReported", 0.5) end end function _detalhes:CheckLastReportsIntegrity() local last_reports = _detalhes.latest_report_table or {} if (#last_reports > 0) then local i = 1 for index = #last_reports, 1, -1 do local report = last_reports [index] local instance_id, atributo, sub_atributo, amt, where, custom_name = unpack (report) if (atributo == 5) then if (not custom_name) then tremove (last_reports, index) else local found for _, custom in ipairs (_detalhes.custom) do if (custom.name == custom_name) then found = true break end end if (not found) then tremove (last_reports, index) end end end end end end function gump:CriaJanelaReport() --> window local window = _CreateFrame ("Frame", "DetailsReportWindow", _UIParent,"BackdropTemplate") tinsert (UISpecialFrames, "DetailsReportWindow") window:SetPoint ("CENTER", UIParent, "CENTER") window:SetFrameStrata ("DIALOG") window.skins = {} window.all_widgets = {} window.max_last_buttons = 10 window:EnableMouse (true) window:SetResizable (false) window:SetMovable (true) restorepos (window) _detalhes.janela_report = window _detalhes:InstallRPSkin ("WoWClassic", classic_skin) _detalhes:InstallRPSkin ("ElvUI", elvui_skin) --> all new widgets: --recently reported: window.recently_report_buttons = {} local history_Background = window:CreateTexture (nil, "background") history_Background:SetColorTexture (0, 0, 0, .3) history_Background:SetSize (160, 158) history_Background:SetPoint ("topleft", window, "topleft", 3, -25) local separador = window:CreateTexture (nil, "border") separador:SetColorTexture (0, 0, 0, .6) separador:SetSize (2, 158) separador:SetPoint ("topleft", history_Background, "topright", 0, 0) function window:RefreshRecentlyReported() for i = 1, window.max_last_buttons do local b = window.recently_report_buttons [i] b.icon:SetTexture (nil) b:Hide() end _detalhes:CheckLastReportsIntegrity() local last_reports = _detalhes.latest_report_table if (#last_reports > 0) then local i = 1 for index = 1, min (#last_reports, 8) do local b = window.recently_report_buttons [i] local report = last_reports [index] local instance_number, attribute, subattribute, amt, report_where = unpack (report) local name = _detalhes:GetSubAttributeName (attribute, subattribute) local artwork = _detalhes.GetReportIconAndColor (report_where) b.text:SetText (name .. " (#" .. amt .. ")") b.index = index if (artwork) then b.icon:SetTexture (artwork.icon) b.icon:SetTexCoord (artwork.coords[1], artwork.coords[2], artwork.coords[3], artwork.coords[4]) b.icon:SetVertexColor (unpack (artwork.color or {})) end --b:Show() b:Hide() i = i + 1 end end end local recently_on_click = function (self) if (self.index) then return _detalhes.ReportFromLatest (_, _, self.index) end end local last_reported_label = window:CreateFontString (nil, "overlay", "GameFontNormal") window.last_reported_label = last_reported_label window.last_reported_label:SetText (Loc ["STRING_REPORTHISTORY"] .. ":") --this string could be removed from localization for i = 1, window.max_last_buttons do local b = CreateFrame ("button", "DetailsReportWindowRRB" .. i, window,"BackdropTemplate") local icon = b:CreateTexture (nil, "overlay") icon:SetPoint ("left", b, "left") icon:SetSize (16, 16) local text = b:CreateFontString (nil, "overlay", "GameFontNormal") text:SetPoint ("left", icon, "right", 2, 0) b.icon = icon b.text = text b:SetScript ("OnClick", recently_on_click) tinsert (window.recently_report_buttons, b) end history_Background:Hide() separador:Hide() window.last_reported_label:Hide() --> scritps local flashTexture = window:CreateTexture (nil, "background") flashTexture:SetColorTexture (1, 1, 1) flashTexture:SetAllPoints() local onShowAnimation = DetailsFramework:CreateAnimationHub (flashTexture, function() flashTexture:Show() end, function() flashTexture:Hide() end) DetailsFramework:CreateAnimation (onShowAnimation, "ALPHA", 1, .2, 0, .10) DetailsFramework:CreateAnimation (onShowAnimation, "ALPHA", 2, .2, .10, 0) window:SetScript ("OnShow", function (self) local dropdown = window.select.MyObject local where = _detalhes.report_where local list = window.dropdown_func() local found onShowAnimation:Play() 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 window:RefreshRecentlyReported() end) window:SetScript ("OnHide", function (self) _detalhes.janela_report.ativa = false _detalhes.last_report_id = nil end) --> close button window.fechar = CreateFrame ("Button", nil, window, "UIPanelCloseButton") window.fechar:SetScript ("OnClick", function() Details.FadeHandler.Fader (window, 1) _detalhes.janela_report.ativa = false end) --> title window.title = window:CreateFontString (nil, "OVERLAY", "GameFontHighlightLeft") window.title:SetText (Loc ["STRING_REPORTFRAME_WINDOW_TITLE"]) seta_scripts (window) cria_drop_down (window) cria_slider (window) cria_wisper_field (window) cria_check_buttons (window) window.enviar = _CreateFrame ("Button", nil, window, "OptionsButtonTemplate,BackdropTemplate") window.enviar:SetPoint ("topleft", window.editbox, "topleft", 61, -19) window.enviar:SetWidth (60) window.enviar:SetHeight (15) window.enviar:SetText (Loc ["STRING_REPORTFRAME_SEND"]) Details.FadeHandler.Fader (window, 1) gump:CreateFlashAnimation (window) --apply the current skin _detalhes:ApplyRPSkin() return window end function _detalhes:InstallRPSkin (skin_name, func) if (not DetailsReportWindow) then gump:CriaJanelaReport() DetailsReportWindow:Hide() end if (not skin_name) then return false -- sem nome elseif (DetailsReportWindow.skins [skin_name]) then return false -- ja existe end DetailsReportWindow.skins [skin_name] = func return true end function _detalhes:ApplyRPSkin (skin_name) if (not DetailsReportWindow) then gump:CriaJanelaReport() DetailsReportWindow:Hide() end if (not skin_name) then skin_name = _detalhes.player_details_window.skin if (not DetailsReportWindow.skins [skin_name]) then skin_name = "ElvUI" end end local skin = DetailsReportWindow.skins [skin_name] if (skin) then for _, widget in ipairs (DetailsReportWindow.all_widgets) do widget:Hide() end local successful, errortext = pcall (skin) if (not successful) then _detalhes:Msg ("error occurred on report window skin call():", errortext) pcall (DetailsReportWindow.skins["ElvUI"]) end end end