local _detalhes = _G._detalhes local AceLocale = LibStub ("AceLocale-3.0") local Loc = AceLocale:GetLocale ( "Details" ) local gump = _detalhes.gump local _ --lua locals local _unpack = unpack local _math_floor = math.floor --api locals do local _CreateFrame = CreateFrame local _UIParent = UIParent local gump_fundo_backdrop = { bgFile = "Interface\\AddOns\\Details\\images\\background", tile = true, tileSize = 16, insets = {left = 0, right = 0, top = 0, bottom = 0}} local frame = _CreateFrame ("frame", "DetailsSwitchPanel", _UIParent,"BackdropTemplate") frame:SetPoint ("center", _UIParent, "center", 500, -300) frame:SetWidth (250) frame:SetHeight (100) frame:SetBackdrop (gump_fundo_backdrop) frame:SetBackdropBorderColor (170/255, 170/255, 170/255) frame:SetBackdropColor (0, 0, 0, .7) DetailsSwitchPanel.HoverOverBackground = {.6, .6, .6, .2} frame.hover_over_texture = frame:CreateTexture (nil, "border") frame.hover_over_texture:SetTexture (unpack (DetailsSwitchPanel.HoverOverBackground)) frame.hover_over_texture:SetSize (130, 18) frame.hover_over_texture:Hide() frame:SetFrameStrata ("FULLSCREEN") frame:SetFrameLevel (16) frame.background = frame:CreateTexture (nil, "background") frame.background:SetTexture ("Interface\\AddOns\\Details\\images\\background") --frame.background:SetTexture ([[Interface\SPELLBOOK\Spellbook-Page-1]]) --frame.background:SetTexCoord (331/512, 63/512, 109/512, 143/512) frame.background:SetAllPoints() frame.background:SetDesaturated (true) --frame.background:SetVertexColor (1, 1, 1, 0.1) frame.background:SetVertexColor (0, 0, 0, .8) frame.topbg = frame:CreateTexture (nil, "background") frame.topbg:SetTexture ("Interface\\AddOns\\Details\\images\\background") --frame.topbg:SetTexCoord (100/512, 267/512, 143/512, 202/512) frame.topbg:SetPoint ("bottomleft", frame, "topleft") frame.topbg:SetPoint ("bottomright", frame, "topright") frame.topbg:SetHeight (20) frame.topbg:SetDesaturated (true) frame.topbg:SetVertexColor (0, 0, 0, 1) frame.topbg_frame = CreateFrame ("frame", nil, frame) frame.topbg_frame:SetPoint ("bottomleft", frame, "topleft") frame.topbg_frame:SetPoint ("bottomright", frame, "topright") frame.topbg_frame:SetHeight (20) frame.topbg_frame:EnableMouse (true) frame.topbg_frame:SetScript ("OnMouseDown", function (self, button) if (button == "RightButton") then _detalhes.switch:CloseMe() end end) frame.star = frame:CreateTexture (nil, "overlay") frame.star:SetTexture ([[Interface\Glues\CharacterSelect\Glues-AddOn-Icons]]) frame.star:SetTexCoord (0.75, 1, 0, 1) frame.star:SetVertexColor (1, 0.8, 0.6) frame.star:SetSize (16, 16) frame.star:SetPoint ("bottomleft", frame, "topleft", 4, 1) frame.title_label = frame:CreateFontString (nil, "overlay", "GameFontNormal") frame.title_label:SetPoint ("left", frame.star, "right", 4, 0) frame.title_label:SetTextColor (1, 0.8, 0.4) frame.title_label:SetText (Loc ["STRING_KEYBIND_BOOKMARK"]) --------------------------------------------------------------------------------------------------------------------------- frame.editing_window = nil local windowcolor_callback = function (button, r, g, b, a) local instance = frame.editing_window if (instance.menu_alpha.enabled and a ~= instance.color[4]) then _detalhes:Msg (Loc ["STRING_OPTIONS_MENU_ALPHAWARNING"]) instance:InstanceColor (r, g, b, instance.menu_alpha.onleave, nil, true) if (_detalhes.options_group_edit) then for _, this_instance in ipairs (instance:GetInstanceGroup()) do if (this_instance ~= instance) then this_instance:InstanceColor (r, g, b, instance.menu_alpha.onleave, nil, true) end end end return end instance:InstanceColor (r, g, b, a, nil, true) if (_detalhes.options_group_edit) then for _, this_instance in ipairs (instance:GetInstanceGroup()) do if (this_instance ~= instance) then this_instance:InstanceColor (r, g, b, a, nil, true) end end end end local change_color = function() frame.editing_window = _detalhes.switch.current_instancia local r, g, b, a = unpack (frame.editing_window.color) _detalhes.gump:ColorPick (frame, r, g, b, a, windowcolor_callback) _detalhes.switch:CloseMe() end local window_color = gump:CreateButton (frame.topbg_frame, change_color, 14, 14) window_color:SetPoint ("bottomright", frame, "topright", -3, 2) local window_color_texture = gump:CreateImage (window_color, [[Interface\AddOns\Details\images\icons]], 14, 14, "artwork", {434/512, 466/512, 277/512, 307/512}) window_color_texture:SetAlpha (0.55) window_color_texture:SetAllPoints() window_color:SetHook ("OnEnter", function() window_color_texture:SetAlpha (1) GameCooltip:Reset() _detalhes:CooltipPreset (1) GameCooltip:SetBackdrop (1, _detalhes.tooltip_backdrop, backgroundColor, _detalhes.tooltip_border_color) GameCooltip:AddLine (Loc ["STRING_OPTIONS_INSTANCE_COLOR"]) GameCooltip:SetOwner (window_color.widget) GameCooltip:SetType ("tooltip") GameCooltip:Show() end) window_color:SetHook ("OnLeave", function() window_color_texture:SetAlpha (0.55) GameCooltip:Hide() end) --------------------------------------------------------------------------------------------------------------------------- --> ~all local all_switch = CreateFrame ("frame", "DetailsAllAttributesFrame", UIParent,"BackdropTemplate") all_switch:SetFrameStrata ("tooltip") all_switch:Hide() all_switch:SetSize(600, 150) all_switch:SetClampedToScreen (true) all_switch:SetBackdrop ({bgFile = "Interface\\AddOns\\Details\\images\\background", tile = true, tileSize = 16 }) all_switch:SetBackdropColor (0.05, 0.05, 0.05, 0.3) all_switch.background = all_switch:CreateTexture ("DetailsAllAttributesFrameBackground", "background") all_switch.background:SetDrawLayer ("background", 2) all_switch.background:SetPoint ("topleft", all_switch, "topleft", 4, -4) all_switch.background:SetPoint ("bottomright", all_switch, "bottomright", -4, 4) all_switch.wallpaper = all_switch:CreateTexture ("DetailsAllAttributesFrameWallPaper", "background") all_switch.wallpaper:SetDrawLayer ("background", 4) all_switch.wallpaper:SetPoint ("topleft", all_switch, "topleft", 4, -4) all_switch.wallpaper:SetPoint ("bottomright", all_switch, "bottomright", -4, 4) all_switch.buttons = {} all_switch.ShowAnimation = _detalhes.gump:CreateAnimationHub (all_switch, function() all_switch:Show() end) _detalhes.gump:CreateAnimation (all_switch.ShowAnimation, "scale", 1, 0.04, 1, 0, 1, 1, "BOTTOM", 0, 0) _detalhes.gump:CreateAnimation (all_switch.ShowAnimation, "alpha", 1, 0.04, 0, 1) all_switch:SetScript ("OnMouseDown", function (self, button) if (button == "RightButton") then self:Hide() end end) all_switch:SetScript ("OnEnter", function (self, button) all_switch.interacting = true all_switch.last_up = GetTime() end) all_switch:SetScript ("OnLeave", function (self, button) all_switch.interacting = false all_switch.last_up = GetTime() end) local on_update_all_switch = function (self, elapsed) if (not self.interacting) then if (GetTime() > all_switch.last_up+2) then local cursor_x, cursor_y = GetCursorPosition() cursor_x, cursor_y = floor (cursor_x), floor (cursor_y) if (all_switch.cursor_x ~= cursor_x or all_switch.cursor_y ~= cursor_y) then self:Hide() else all_switch.last_up = GetTime()-1 end end end end all_switch:SetScript ("OnHide", function (self) all_switch:SetScript ("OnUpdate", nil) end) DetailsSwitchPanel.all_switch = all_switch function _detalhes:ShowAllSwitch() if (all_switch:IsShown()) then return all_switch:Hide() end all_switch.instance = self GameTooltip:Hide() GameCooltip:Hide() all_switch:ClearAllPoints() all_switch:SetPoint ("bottom", self.baseframe.UPFrame, "top", 4) all_switch:Show() if (_detalhes.switch.frame:IsShown()) then _detalhes.switch:CloseMe() end end local on_click_all_switch_button = function (self, button) if (button == "LeftButton") then local attribute = self.attribute local sub_attribute = self.sub_attribute local instance = all_switch.instance --check if is a plugin button if (self.isPlugin) then if (_detalhes.RaidTables.NameTable[self.pluginName]) then _detalhes.RaidTables:EnableRaidMode (instance, self.pluginName) elseif (_detalhes.SoloTables.NameTable [self.pluginName]) then _detalhes.SoloTables:EnableSoloMode (instance, self.pluginName) else _detalhes:Msg ("Plugin not found.") end all_switch:Hide() return end if (instance.modo == _detalhes._detalhes_props["MODO_ALONE"] or instance.modo == _detalhes._detalhes_props["MODO_RAID"]) then instance:AlteraModo (instance, 2) end instance:TrocaTabela (instance, true, attribute, sub_attribute) all_switch:Hide() elseif (button == "RightButton") then all_switch:Hide() end end local hover_over_texture = all_switch:CreateTexture (nil, "border") hover_over_texture:SetTexture (unpack (DetailsSwitchPanel.HoverOverBackground)) hover_over_texture:SetSize (130, 18) hover_over_texture:Hide() local icon_size = 16 local text_color = {.9, .9, .9, 1} local on_enter_all_switch_button = function (self) _detalhes:SetFontColor (self.text, "orange") all_switch.interacting = true all_switch.last_up = GetTime() hover_over_texture:SetSize (130, 18) hover_over_texture:ClearAllPoints() hover_over_texture:SetPoint ("topleft", self, "topleft", -2, 1) hover_over_texture:Show() end local on_leave_all_switch_button = function (self) _detalhes:SetFontColor (self.text, text_color) all_switch.interacting = false all_switch.last_up = GetTime() hover_over_texture:Hide() end local on_enter_all_switch_button_icon = function (self) self.MainFrame.texture:SetBlendMode ("ADD") on_enter_all_switch_button (self.MainFrame) end local on_leave_all_switch_button_icon = function (self) self.MainFrame.texture:SetBlendMode ("BLEND") on_leave_all_switch_button (self.MainFrame) end all_switch.check_text_size = function (font_string) local text_width = font_string:GetStringWidth() while (text_width > 104) do local text = font_string:GetText() text = strsub (text, 1, #text-1) font_string:SetText (text) text_width = font_string:GetStringWidth() end end local create_all_switch_button = function (attribute, sub_attribute, x, y) local button = CreateFrame ("button", "DetailsAllAttributesFrame" .. attribute .. sub_attribute, all_switch) button:SetSize (130, 16) button.texture = button:CreateTexture (nil, "overlay") button.texture:SetPoint ("left", 0, 0) button.texture:SetSize (icon_size, icon_size) local texture_highlight_frame = CreateFrame ("button", "DetailsAllAttributesFrame" .. attribute .. sub_attribute .. "IconFrame", button) texture_highlight_frame:SetSize (icon_size, icon_size) texture_highlight_frame:SetPoint ("left", 0, 0) texture_highlight_frame.texture = button.texture texture_highlight_frame.MainFrame = button button.text = button:CreateFontString (nil, "overlay", "GameFontNormal") button.text:SetPoint ("left", button.texture, "right", 2, 0) button.attribute = attribute button.sub_attribute = sub_attribute button:SetPoint ("topleft", x, y) _detalhes:SetFontSize(button.text, _detalhes.all_switch_config.font_size) _detalhes:SetFontColor (button.text, text_color) button:SetScript ("OnClick", on_click_all_switch_button) button:SetScript ("OnEnter", on_enter_all_switch_button) button:SetScript ("OnLeave", on_leave_all_switch_button) texture_highlight_frame:SetScript ("OnClick", on_click_all_switch_button) texture_highlight_frame:SetScript ("OnEnter", on_enter_all_switch_button_icon) texture_highlight_frame:SetScript ("OnLeave", on_leave_all_switch_button_icon) button:RegisterForClicks ("LeftButtonDown", "RightButtonDown") return button end all_switch:SetScript ("OnShow", function() if (not all_switch.already_built) then local x, y = 8, -8 all_switch.higher_counter = 0 for attribute = 1, _detalhes.atributos[0] do --> localized attribute name local loc_attribute_name = _detalhes.atributos.lista [attribute] local title_icon = all_switch:CreateTexture (nil, "overlay") title_icon:SetPoint ("topleft", x, y) local texture, l, r, t, b = _detalhes:GetAttributeIcon (attribute) title_icon:SetTexture (texture) title_icon:SetTexCoord (l, r, t, b) title_icon:SetSize (18, 18) local title_str = all_switch:CreateFontString (nil, "overlay", "GameFontNormal") title_str:SetPoint ("left", title_icon, "right", 2, 0) title_str:SetText (loc_attribute_name) y = y - 20 all_switch.buttons [attribute] = {} for i = 1, #_detalhes.sub_atributos [attribute].lista do --> localized sub attribute name local loc_sub_attribute_name = _detalhes.sub_atributos [attribute].lista [i] local button = create_all_switch_button (attribute, i, x, y) button.text:SetText (loc_sub_attribute_name) _detalhes:SetFontSize(button.text, _detalhes.all_switch_config.font_size) all_switch.check_text_size (button.text) button.texture:SetTexture (_detalhes.sub_atributos [attribute].icones [i] [1]) button.texture:SetTexCoord (unpack (_detalhes.sub_atributos [attribute].icones [i] [2])) tinsert (all_switch.buttons [attribute], button) y = y - 17 end if (#_detalhes.sub_atributos [attribute].lista > all_switch.higher_counter) then all_switch.higher_counter = #_detalhes.sub_atributos [attribute].lista end x = x + 130 y = -8 end --> prepare for scripts all_switch.x = x all_switch.y = -8 all_switch.buttons [_detalhes.atributos[0]+1] = {} local title_icon = all_switch:CreateTexture (nil, "overlay") local texture, l, r, t, b = _detalhes:GetAttributeIcon (_detalhes.atributos[0]+1) title_icon:SetTexture([[Interface\AddOns\Details\images\icons]]) title_icon:SetTexCoord(412/512, 441/512, 43/512, 79/512) title_icon:SetVertexColor(.7, .6, .5, 1) title_icon:SetSize(16, 16) local title_str = all_switch:CreateFontString (nil, "overlay", "GameFontNormal") title_str:SetPoint ("left", title_icon, "right", 2, 0) title_str:SetText ("Scripts") title_icon:SetPoint ("topleft", all_switch.x, all_switch.y) all_switch.y = all_switch.y - 20 all_switch.title_custom = title_icon all_switch.already_built = true --> prepare for plugins all_switch.buttons[6] = {} local title_icon = all_switch:CreateTexture(nil, "overlay") title_icon:SetTexture ([[Interface\AddOns\Details\images\modo_icones]]) title_icon:SetTexCoord (32/256*3, 32/256*4, 0, 1) title_icon:SetSize (16, 16) local title_str = all_switch:CreateFontString(nil, "overlay", "GameFontNormal") title_str:SetPoint("left", title_icon, "right", 2, 0) title_str:SetText(Loc["STRING_OPTIONS_PLUGINS"]) title_icon:SetPoint("topleft", all_switch.x + 130, -8) all_switch.title_scripts = title_icon end --> update scripts local custom_index = _detalhes.atributos[0]+1 for _, button in ipairs (all_switch.buttons [custom_index]) do button:Hide() end local button_index = 1 for i = #_detalhes.custom, 1, -1 do local button = all_switch.buttons [custom_index] [button_index] if (not button) then button = create_all_switch_button (custom_index, i, all_switch.x, all_switch.y) tinsert (all_switch.buttons [custom_index], button) all_switch.y = all_switch.y - 17 end local custom = _detalhes.custom [i] button.text:SetText (custom.name) _detalhes:SetFontSize(button.text, _detalhes.all_switch_config.font_size) all_switch.check_text_size (button.text) button.texture:SetTexture (custom.icon) button.texture:SetTexCoord (0.078125, 0.921875, 0.078125, 0.921875) button:Show() button_index = button_index + 1 end if (#_detalhes.custom > all_switch.higher_counter) then all_switch.higher_counter = #_detalhes.custom end --> update plugins local script_index = _detalhes.atributos[0]+2 local button_index = 1 all_switch.x = all_switch.x + 130 all_switch.y = -28 for _, button in ipairs (all_switch.buttons[script_index]) do button:Hide() end --build raid plugins list local raidPlugins = _detalhes.RaidTables:GetAvailablePlugins() if (#raidPlugins >= 0) then for i, ptable in ipairs (raidPlugins) do --if a plugin has the member 'NoMenu', it won't be shown on menus to select plugins if (ptable[3].__enabled and not ptable[3].NoMenu) then --PluginName, PluginIcon, PluginObject, PluginAbsoluteName local button = all_switch.buttons [script_index] [button_index] if (not button) then button = create_all_switch_button(script_index, button_index, all_switch.x, all_switch.y) tinsert (all_switch.buttons [script_index], button) all_switch.y = all_switch.y - 17 end --set the button to select the plugin button.isPlugin = true button.pluginName = ptable[4] button.text:SetText(ptable[1]) _detalhes:SetFontSize(button.text, _detalhes.all_switch_config.font_size) all_switch.check_text_size(button.text) button.texture:SetTexture (ptable[2]) button.texture:SetTexCoord (0.078125, 0.921875, 0.078125, 0.921875) button:Show() button_index = button_index + 1 end end end --check if the plugins list is the biggest list button_index = button_index - 1 if (button_index > all_switch.higher_counter) then all_switch.higher_counter = button_index end all_switch:SetHeight ((all_switch.higher_counter * 17) + 20 + 16) all_switch:SetWidth ((120 * 6) + (6 * 2) + (12*4)) all_switch.last_up = GetTime() local cursor_x, cursor_y = GetCursorPosition() all_switch.cursor_x, all_switch.cursor_y = floor (cursor_x), floor (cursor_y) all_switch:SetScript ("OnUpdate", on_update_all_switch) --updated colors (these colors are set inside the janela_principal file all_switch:SetBackdrop (_detalhes.menu_backdrop_config.menus_backdrop) all_switch:SetBackdropColor (unpack (_detalhes.menu_backdrop_config.menus_backdropcolor)) all_switch:SetBackdropBorderColor (unpack (_detalhes.menu_backdrop_config.menus_bordercolor)) all_switch:SetScale(_detalhes.all_switch_config.scale) end) --------------------------------------------------------------------------------------------------------------------------- local open_options = function() _detalhes:OpenOptionsWindow (_detalhes.switch.current_instancia) _detalhes.switch:CloseMe() end local options_button = gump:CreateButton (frame.topbg_frame, open_options, 14, 14, open_options) options_button:SetPoint ("right", window_color, "left", -2, 0) local options_button_texture = gump:CreateImage (options_button, [[Interface\AddOns\Details\images\icons]], 14, 14, "artwork", {396/512, 428/512, 277/512, 307/512}) options_button_texture:SetAlpha (0.55) options_button_texture:SetAllPoints() options_button:SetHook ("OnEnter", function() options_button_texture:SetAlpha (1) GameCooltip:Reset() _detalhes:CooltipPreset (1) GameCooltip:SetBackdrop (1, _detalhes.tooltip_backdrop, backgroundColor, _detalhes.tooltip_border_color) GameCooltip:AddLine (Loc ["STRING_INTERFACE_OPENOPTIONS"]) GameCooltip:SetOwner (window_color.widget) GameCooltip:SetType ("tooltip") GameCooltip:Show() end) options_button:SetHook ("OnLeave", function() options_button_texture:SetAlpha (0.55) GameCooltip:Hide() end) --------------------------------------------------------------------------------------------------------------------------- local open_forge = function() _detalhes:OpenForge() _detalhes.switch:CloseMe() end local forge_button = gump:CreateButton (frame.topbg_frame, open_forge, 14, 14, open_forge) forge_button:SetPoint ("right", options_button, "left", -2, 0) local forge_button_texture = gump:CreateImage (forge_button, [[Interface\AddOns\Details\images\icons]], 14, 14, "artwork", {396/512, 428/512, 243/512, 273/512}) forge_button_texture:SetAlpha (0.55) forge_button_texture:SetAllPoints() forge_button:SetHook ("OnEnter", function() forge_button_texture:SetAlpha (1) GameCooltip:Reset() _detalhes:CooltipPreset (1) GameCooltip:SetBackdrop (1, _detalhes.tooltip_backdrop, backgroundColor, _detalhes.tooltip_border_color) GameCooltip:AddLine ("Open Forge") GameCooltip:SetOwner (window_color.widget) GameCooltip:SetType ("tooltip") GameCooltip:Show() end) forge_button:SetHook ("OnLeave", function() forge_button_texture:SetAlpha (0.55) GameCooltip:Hide() end) --------------------------------------------------------------------------------------------------------------------------- local open_history = function() _detalhes:OpenRaidHistoryWindow() _detalhes.switch:CloseMe() end local history_button = gump:CreateButton (frame.topbg_frame, open_history, 14, 14, open_history) history_button:SetPoint ("right", forge_button, "left", -2, 0) local history_button_texture = gump:CreateImage (history_button, [[Interface\AddOns\Details\images\icons]], 14, 14, "artwork", {434/512, 466/512, 243/512, 273/512}) history_button_texture:SetAlpha (0.55) history_button_texture:SetAllPoints() history_button:SetHook ("OnEnter", function() history_button_texture:SetAlpha (1) GameCooltip:Reset() _detalhes:CooltipPreset (1) GameCooltip:SetBackdrop (1, _detalhes.tooltip_backdrop, backgroundColor, _detalhes.tooltip_border_color) GameCooltip:AddLine ("Open History Panel") GameCooltip:SetOwner (window_color.widget) GameCooltip:SetType ("tooltip") GameCooltip:Show() end) history_button:SetHook ("OnLeave", function() history_button_texture:SetAlpha (0.55) GameCooltip:Hide() end) window_color:Hide() options_button:Hide() forge_button:Hide() history_button:Hide() --------------------------------------------------------------------------------------------------------------------------- --animation has been disabled (July 2019) --they aren't called anymore on showing and hiding the bookmark frame --show animation local animHub = _detalhes.gump:CreateAnimationHub (frame, function() frame:Show() end) _detalhes.gump:CreateAnimation (animHub, "scale", 1, 0.04, 0, 1, 1, 1, "LEFT", 0, 0) _detalhes.gump:CreateAnimation (animHub, "alpha", 1, 0.04, 0, 1) frame.ShowAnimation = animHub --hide animation local animHub = _detalhes.gump:CreateAnimationHub (frame, function() frame:Show() end, function() frame:Hide() end) _detalhes.gump:CreateAnimation (animHub, "scale", 1, 0.04, 1, 1, 0, 1, "RIGHT", 0, 0) _detalhes.gump:CreateAnimation (animHub, "alpha", 1, 0.04, 1, 0) frame.HideAnimation = animHub --------------------------------------------------------------------------------------------------------------------------- function _detalhes.switch:CloseMe() _detalhes.switch.frame:Hide() _detalhes.switch.frame:ClearAllPoints() --_detalhes.switch.frame.HideAnimation:Play() GameCooltip:Hide() _detalhes.switch.frame:SetBackdropColor (0, 0, 0, .7) _detalhes.switch.current_instancia:StatusBarAlert (nil) _detalhes.switch.current_instancia = nil end --> limita��o: n�o tenho como pegar o base frame da inst�ncia por aqui frame.close = gump:NewDetailsButton (frame, frame, _, function() end, nil, nil, 1, 1, "", "", "", "", {rightFunc = {func = _detalhes.switch.CloseMe, param1 = nil, param2 = nil}}, "DetailsSwitchPanelClose") frame.close:SetPoint ("topleft", frame, "topleft") frame.close:SetPoint ("bottomright", frame, "bottomright") frame.close:SetFrameLevel (9) frame:Hide() _detalhes.switch.frame = frame _detalhes.switch.button_height = 24 end _detalhes.switch.buttons = {} _detalhes.switch.slots = _detalhes.switch.slots or 6 _detalhes.switch.showing = 0 _detalhes.switch.table = _detalhes.switch.table or {} _detalhes.switch.current_instancia = nil _detalhes.switch.current_button = nil _detalhes.switch.height_necessary = (_detalhes.switch.button_height * _detalhes.switch.slots) / 2 function _detalhes.switch:HideAllBookmarks() for _, bookmark in ipairs (_detalhes.switch.buttons) do bookmark:Hide() end end function _detalhes.switch:ShowMe (instancia) _detalhes.switch.current_instancia = instancia if (IsControlKeyDown()) then if (not _detalhes.tutorial.ctrl_click_close_tutorial) then if (not DetailsCtrlCloseWindowPanelTutorial) then local tutorial_frame = CreateFrame ("frame", "DetailsCtrlCloseWindowPanelTutorial", _detalhes.switch.frame, "BackdropTemplate") tutorial_frame:SetFrameStrata ("FULLSCREEN_DIALOG") tutorial_frame:SetAllPoints() tutorial_frame:EnableMouse (true) tutorial_frame:SetBackdrop ({bgFile = "Interface\\AddOns\\Details\\images\\background", tile = true, tileSize = 16 }) tutorial_frame:SetBackdropColor (0.05, 0.05, 0.05, 0.95) tutorial_frame.info_label = tutorial_frame:CreateFontString (nil, "overlay", "GameFontNormal") tutorial_frame.info_label:SetPoint ("topleft", tutorial_frame, "topleft", 10, -10) tutorial_frame.info_label:SetText (Loc ["STRING_MINITUTORIAL_CLOSECTRL1"]) tutorial_frame.info_label:SetJustifyH ("left") tutorial_frame.mouse = tutorial_frame:CreateTexture (nil, "overlay") tutorial_frame.mouse:SetTexture ([[Interface\TUTORIALFRAME\UI-TUTORIAL-FRAME]]) tutorial_frame.mouse:SetTexCoord (0.0019531, 0.1484375, 0.6269531, 0.8222656) tutorial_frame.mouse:SetSize (20, 22) tutorial_frame.mouse:SetPoint ("topleft", tutorial_frame.info_label, "bottomleft", -3, -10) tutorial_frame.close_label = tutorial_frame:CreateFontString (nil, "overlay", "GameFontHighlightSmall") tutorial_frame.close_label:SetPoint ("left", tutorial_frame.mouse, "right", 4, 0) tutorial_frame.close_label:SetText (Loc ["STRING_MINITUTORIAL_CLOSECTRL2"]) tutorial_frame.close_label:SetJustifyH ("left") local checkbox = CreateFrame ("CheckButton", "DetailsCtrlCloseWindowPanelTutorialCheckBox", tutorial_frame, "ChatConfigCheckButtonTemplate") checkbox:SetPoint ("topleft", tutorial_frame.mouse, "bottomleft", -1, -5) _G [checkbox:GetName().."Text"]:SetText (Loc ["STRING_MINITUTORIAL_BOOKMARK4"]) tutorial_frame:SetScript ("OnMouseDown", function() if (checkbox:GetChecked()) then _detalhes.tutorial.ctrl_click_close_tutorial = true end tutorial_frame:Hide() if (instancia:IsEnabled()) then return instancia:ShutDown() end end) end DetailsCtrlCloseWindowPanelTutorial:Show() DetailsCtrlCloseWindowPanelTutorial.info_label:SetWidth (_detalhes.switch.frame:GetWidth()-30) DetailsCtrlCloseWindowPanelTutorial.close_label:SetWidth (_detalhes.switch.frame:GetWidth()-30) _detalhes.switch.frame:SetPoint ("topleft", instancia.baseframe, "topleft", 0, 1) _detalhes.switch.frame:SetPoint ("bottomright", instancia.baseframe, "bottomright", 0, 1) _detalhes.switch.frame:SetBackdropColor (0.094, 0.094, 0.094, .8) _detalhes.switch.frame:Show() return end return instancia:ShutDown() elseif (IsShiftKeyDown()) then if (not _detalhes.switch.segments_blocks) then local segment_switch = function (self, button, segment) if (button == "LeftButton") then _detalhes.switch.current_instancia:TrocaTabela (segment) _detalhes.switch.CloseMe() elseif (button == "RightButton") then _detalhes.switch.CloseMe() end end local hide_label = function (self) self.texture:Hide() self.button:Hide() self.background:Hide() self:Hide() end local show_label = function (self) self.texture:Show() self.button:Show() self.background:Show() self:Show() end local on_enter = function (self) --self.MyObject.this_background:SetBlendMode ("ADD") --self.MyObject.boss_texture:SetBlendMode ("ADD") end local on_leave = function (self) self.MyObject.this_background:SetBlendMode ("BLEND") self.MyObject.boss_texture:SetBlendMode ("BLEND") end function _detalhes.switch:CreateSegmentBlock() local s = gump:CreateLabel (_detalhes.switch.frame) _detalhes:SetFontSize (s, 9) local index = #_detalhes.switch.segments_blocks if (index == 1) then --overall button index = -1 elseif (index >= 2) then index = index - 1 end local button = gump:CreateButton (_detalhes.switch.frame, segment_switch, 100, 20, "", index) button:SetPoint ("topleft", s, "topleft", -17, 0) button:SetPoint ("bottomright", s, "bottomright", 0, 0) button:SetClickFunction (segment_switch, nil, nil, "right") local boss_texture = gump:CreateImage (button, nil, 16, 16) boss_texture:SetPoint ("right", s, "left", -2, 0) local background = button:CreateTexture (nil, "background") background:SetTexture ("Interface\\SPELLBOOK\\Spellbook-Parts") background:SetTexCoord (0.31250000, 0.96484375, 0.37109375, 0.52343750) background:SetWidth (85) background:SetPoint ("topleft", s.widget, "topleft", -16, 3) background:SetPoint ("bottomright", s.widget, "bottomright", -3, -5) button.this_background = background button.boss_texture = boss_texture.widget s.texture = boss_texture s.button = button s.background = background button:SetScript ("OnEnter", on_enter) button:SetScript ("OnLeave", on_leave) s.HideMe = hide_label s.ShowMe = show_label tinsert (_detalhes.switch.segments_blocks, s) return s end function _detalhes.switch:GetSegmentBlock (index) local block = _detalhes.switch.segments_blocks [index] if (not block) then return _detalhes.switch:CreateSegmentBlock() else return block end end function _detalhes.switch:ClearSegmentBlocks() for _, block in ipairs (_detalhes.switch.segments_blocks) do block:HideMe() end end function _detalhes.switch:ResizeSegmentBlocks() local x = 7 local y = 5 local window_width, window_height = _detalhes.switch.current_instancia:GetSize() local horizontal_amt = floor (math.max (window_width / 100, 2)) local vertical_amt = floor ((window_height - y) / 20) local size = window_width / horizontal_amt local frame = _detalhes.switch.frame _detalhes.switch:ClearSegmentBlocks() local i = 1 for vertical = 1, vertical_amt do x = 7 for horizontal = 1, horizontal_amt do local button = _detalhes.switch:GetSegmentBlock (i) button:SetPoint ("topleft", frame, "topleft", x + 16, -y) button:SetSize (size - 22, 12) button:ShowMe() i = i + 1 x = x + size if (i > 40) then break end end y = y + 20 end end _detalhes.switch.segments_blocks = {} --> current and overall _detalhes.switch:CreateSegmentBlock() _detalhes.switch:CreateSegmentBlock() local block1 = _detalhes.switch:GetSegmentBlock (1) block1:SetText (Loc ["STRING_CURRENTFIGHT"]) block1.texture:SetTexture ([[Interface\Scenarios\ScenariosParts]]) block1.texture:SetTexCoord (55/512, 81/512, 368/512, 401/512) local block2 = _detalhes.switch:GetSegmentBlock (2) block2:SetText (Loc ["STRING_SEGMENT_OVERALL"]) block2.texture:SetTexture ([[Interface\Scenarios\ScenariosParts]]) block2.texture:SetTexCoord (55/512, 81/512, 368/512, 401/512) end _detalhes.switch:ClearSegmentBlocks() _detalhes.switch:HideAllBookmarks() local segment_index = 1 for i = 3, #_detalhes.tabela_historico.tabelas + 2 do local combat = _detalhes.tabela_historico.tabelas [segment_index] local block = _detalhes.switch:GetSegmentBlock (i) local enemy, color, raid_type, killed, is_trash, portrait, background, background_coords = _detalhes:GetSegmentInfo (segment_index) block:SetText ("#" .. segment_index .. " " .. enemy) if (combat.is_boss and combat.instance_type == "raid") then local L, R, T, B, Texture = _detalhes:GetBossIcon (combat.is_boss.mapid, combat.is_boss.index) if (L) then block.texture:SetTexture (Texture) block.texture:SetTexCoord (L, R, T, B) else block.texture:SetTexture ([[Interface\Scenarios\ScenarioIcon-Boss]]) end else block.texture:SetTexture ([[Interface\Scenarios\ScenarioIcon-Boss]]) end block:ShowMe() segment_index = segment_index + 1 end _detalhes.switch.frame:SetScale (instancia.window_scale) _detalhes.switch:ResizeSegmentBlocks() for i = segment_index+2, #_detalhes.switch.segments_blocks do _detalhes.switch.segments_blocks [i]:HideMe() end _detalhes.switch.frame:SetPoint ("topleft", instancia.baseframe, "topleft", 0, 1) _detalhes.switch.frame:SetPoint ("bottomright", instancia.baseframe, "bottomright", 0, 1) _detalhes.switch.frame:SetBackdropColor (0.094, 0.094, 0.094, .8) _detalhes.switch.frame:Show() return else if (_detalhes.switch.segments_blocks) then _detalhes.switch:ClearSegmentBlocks() end end --> check if there is some custom contidional if (instancia.atributo == 5) then local custom_object = instancia:GetCustomObject() if (custom_object and custom_object.OnSwitchShow) then local interrupt = custom_object.OnSwitchShow (instancia) if (interrupt) then return end end end _detalhes.switch.frame:SetPoint ("topleft", instancia.baseframe, "topleft", 0, 1) _detalhes.switch.frame:SetPoint ("bottomright", instancia.baseframe, "bottomright", 0, 1) _detalhes.switch.frame:SetBackdropColor (0, 0, 0, .7) local altura = instancia.baseframe:GetHeight() local mostrar_quantas = _math_floor (altura / _detalhes.switch.button_height) * 2 local precisa_mostrar = 0 for i = 1, #_detalhes.switch.table do local slot = _detalhes.switch.table [i] if (not slot) then _detalhes.switch.table [i] = {} slot = _detalhes.switch.table [i] end if (slot.atributo) then precisa_mostrar = precisa_mostrar + 1 else break end end if (_detalhes.switch.mostrar_quantas ~= mostrar_quantas) then for i = 1, #_detalhes.switch.buttons do if (i <= mostrar_quantas) then _detalhes.switch.buttons [i]:Show() else _detalhes.switch.buttons [i]:Hide() end end if (#_detalhes.switch.buttons < mostrar_quantas) then _detalhes.switch.slots = mostrar_quantas end _detalhes.switch.mostrar_quantas = mostrar_quantas end _detalhes.switch:Resize (precisa_mostrar) _detalhes.switch:Update() _detalhes.switch.frame:SetScale (instancia.window_scale) _detalhes.switch.frame:Show() _detalhes.switch:Resize (precisa_mostrar) if (DetailsSwitchPanel.all_switch:IsShown()) then return DetailsSwitchPanel.all_switch:Hide() end end -- ~setting function _detalhes.switch:Config (_, _, atributo, sub_atributo) if (not sub_atributo) then return end if (type (atributo) == "string") then --> is a plugin? local plugin = _detalhes:GetPlugin (atributo) if (plugin) then _detalhes.switch.table [_detalhes.switch.editing_bookmark].atributo = "plugin" _detalhes.switch.table [_detalhes.switch.editing_bookmark].sub_atributo = atributo end else --> is a attribute or custom script _detalhes.switch.table [_detalhes.switch.editing_bookmark].atributo = atributo _detalhes.switch.table [_detalhes.switch.editing_bookmark].sub_atributo = sub_atributo end _detalhes.switch.editing_bookmark = nil GameCooltip:Hide() _detalhes.switch:Update() end --[[global]] function DetailsChangeDisplayFromBookmark (number, instance) if (not instance) then local lower = _detalhes:GetLowerInstanceNumber() if (lower) then instance = _detalhes:GetInstance (lower) end if (not instance) then return _detalhes:Msg (Loc ["STRING_WINDOW_NOTFOUND"]) end end local bookmark = _detalhes.switch.table [number] if (bookmark) then _detalhes.switch.current_instancia = instance if (not bookmark.atributo) then return _detalhes:Msg (string.format (Loc ["STRING_SWITCH_SELECTMSG"], number)) end _detalhes:FastSwitch (nil, bookmark, number) end end function _detalhes:FastSwitch (button, bookmark, bookmark_number, select_new) local UnknownPlugin = bookmark and bookmark.atributo == "plugin" and not _detalhes:GetPlugin (bookmark.sub_atributo) if (select_new or not bookmark.atributo or UnknownPlugin) then --> monta o menu para escolher qual atributo colocar ~select GameCooltip:Reset() GameCooltip:SetType (3) GameCooltip:SetFixedParameter (_detalhes.switch.current_instancia) GameCooltip:SetOwner (button) _detalhes.switch.editing_bookmark = bookmark_number _detalhes:MontaAtributosOption (_detalhes.switch.current_instancia, _detalhes.switch.Config) --> build raid plugins list GameCooltip:AddLine(Loc["STRING_MODE_PLUGINS"]) GameCooltip:AddMenu(1, function() end, 4, true) GameCooltip:AddIcon([[Interface\AddOns\Details\images\modo_icones]], 1, 1, 20, 20, 32/256*3, 32/256*4, 0, 1) local available_plugins = _detalhes.RaidTables:GetAvailablePlugins() local amt = 0 if (#available_plugins >= 0) then for index, ptable in ipairs (available_plugins) do if (ptable [3].__enabled and not ptable[3].NoMenu) then GameCooltip:AddMenu (2, _detalhes.switch.Config, _detalhes.switch.current_instancia, ptable [4], true, ptable [1], ptable [2], true) --PluginName, PluginIcon, PluginObject, PluginAbsoluteName amt = amt + 1 end end GameCooltip:SetWallpaper (2, _detalhes.tooltip.menus_bg_texture, _detalhes.tooltip.menus_bg_coords, _detalhes.tooltip.menus_bg_color, true) end if (#_detalhes.SoloTables.Menu > 0) then for index, ptable in ipairs (_detalhes.SoloTables.Menu) do if (ptable [3].__enabled and not ptable[3].NoMenu) then GameCooltip:AddMenu (2, _detalhes.switch.Config, _detalhes.switch.current_instancia, ptable [4], true, ptable [1], ptable [2], true) end end GameCooltip:SetWallpaper (2, _detalhes.tooltip.menus_bg_texture, _detalhes.tooltip.menus_bg_coords, _detalhes.tooltip.menus_bg_color, true) end if (amt <= 3) then GameCooltip:SetOption ("SubFollowButton", true) end GameCooltip:SetColor (1, {.1, .1, .1, .3}) GameCooltip:SetColor (2, {.1, .1, .1, .3}) GameCooltip:SetOption ("HeightAnchorMod", -7) GameCooltip:SetOption ("TextSize", _detalhes.font_sizes.menus) GameCooltip:SetBackdrop (1, _detalhes.tooltip_backdrop, nil, _detalhes.tooltip_border_color) GameCooltip:SetBackdrop (2, _detalhes.tooltip_backdrop, nil, _detalhes.tooltip_border_color) return GameCooltip:ShowCooltip() end if (IsShiftKeyDown()) then --> get a closed window or created a new one. local instance = _detalhes:CreateInstance() if (not instance) then _detalhes.switch.CloseMe() return _detalhes:Msg (Loc ["STRING_WINDOW_NOTFOUND"]) end _detalhes.switch.current_instancia = instance end if (_detalhes.switch.current_instancia.modo == _detalhes._detalhes_props["MODO_ALONE"]) then _detalhes.switch.current_instancia:AlteraModo (_detalhes.switch.current_instancia, 2) elseif (_detalhes.switch.current_instancia.modo == _detalhes._detalhes_props["MODO_RAID"]) then _detalhes.switch.current_instancia:AlteraModo (_detalhes.switch.current_instancia, 2) end if (bookmark.atributo == "plugin") then --> is a plugin, check if is a raid or solo plugin if (_detalhes.RaidTables.NameTable [bookmark.sub_atributo]) then local raidPlugins = _detalhes.RaidTables:GetAvailablePlugins() local isAvailable = false if (#raidPlugins >= 0) then for i, ptable in ipairs (raidPlugins) do --check if the plugin is available if (ptable[4] == bookmark.sub_atributo) then isAvailable = true end end end if (isAvailable) then _detalhes.RaidTables:EnableRaidMode (_detalhes.switch.current_instancia, bookmark.sub_atributo) else Details:Msg("plugin already in use in another window. If you are wondering where, check the Orange Gear > Window Control.") --localize-me end elseif (_detalhes.SoloTables.NameTable [bookmark.sub_atributo]) then _detalhes.SoloTables:EnableSoloMode (_detalhes.switch.current_instancia, bookmark.sub_atributo) else _detalhes:Msg ("Plugin not found.") end else _detalhes.switch.current_instancia:TrocaTabela (_detalhes.switch.current_instancia, true, bookmark.atributo, bookmark.sub_atributo) end _detalhes.switch.CloseMe() end -- nao tem suporte a solo mode tank mode -- nao tem suporte a custom at� agora, n�o sei como vai ficar function _detalhes.switch:InitSwitch() local instancia = _detalhes.tabela_instancias [1] _detalhes.switch:ShowMe (instancia) _detalhes.switch:CloseMe() --return _detalhes.switch:Update() end function _detalhes.switch:OnRemoveCustom (CustomIndex) for i = 1, _detalhes.switch.slots do local options = _detalhes.switch.table [i] if (options and options.atributo == 5 and options.sub_atributo == CustomIndex) then --> precisa resetar esse aqui options.atributo = nil options.sub_atributo = nil --update if already shown once at least if (_detalhes.switch.vertical_amt) then _detalhes.switch:Update() end end end end local default_coords = {5/64, 59/64, 5/64, 59/64} local unknown_coords = {157/512, 206/512, 39/512, 89/512} local vertex_color_default = {1, 1, 1} local vertex_color_unknown = {1, 1, 1} local add_coords = {464/512, 473/512, 1/512, 11/512} function _detalhes.switch:Update() if (not _detalhes.switch.vertical_amt) then --wasn't opened yet, so doesn't matter if we update or not. return end local slots = _detalhes.switch.slots local x = 10 local y = 5 local jump = false local hide_the_rest local offset = FauxScrollFrame_GetOffset (DetailsSwitchPanelScroll) local slots_shown = _detalhes.switch.slots for i = 1, slots_shown do --bookmark index local index = (offset * _detalhes.switch.vertical_amt) + i --button local button = _detalhes.switch.buttons [i] if (not button) then button = _detalhes.switch:NewSwitchButton (_detalhes.switch.frame, i, x, y, jump) button:SetFrameLevel (_detalhes.switch.frame:GetFrameLevel()+2) _detalhes.switch.showing = _detalhes.switch.showing + 1 end local options = _detalhes.switch.table [index] if (not options and index <= 40) then options = {} _detalhes.switch.table [index] = options end button.bookmark_number = index --button on icon button.button2.bookmark_number = index --button on text local icone local coords local name local vcolor local add local textColor = "white" if (options and options.sub_atributo) then if (options.atributo == 5) then --> custom local CustomObject = _detalhes.custom [options.sub_atributo] if (not CustomObject) then --> ele j� foi deletado icone = [[Interface\AddOns\Details\images\icons]] coords = add_coords name = Loc ["STRING_SWITCH_CLICKME"] vcolor = vertex_color_unknown add = true else icone = CustomObject.icon coords = default_coords name = CustomObject.name vcolor = vertex_color_default end elseif (options.atributo == "plugin") then --> plugin local plugin = _detalhes:GetPlugin (options.sub_atributo) if (plugin) then local raidPlugins = _detalhes.RaidTables:GetAvailablePlugins() local isAvailable = false if (#raidPlugins >= 0) then for i, ptable in ipairs (raidPlugins) do --check if the plugin is available if (ptable[4] == plugin.real_name) then isAvailable = true end end end if (isAvailable) then vcolor = vertex_color_default else vcolor = {.35, .35, .35, .35} textColor = "gray" end icone = plugin.__icon coords = default_coords name = plugin.__name else icone = [[Interface\AddOns\Details\images\icons]] coords = add_coords name = Loc ["STRING_SWITCH_CLICKME"] vcolor = vertex_color_unknown add = true end else icone = _detalhes.sub_atributos [options.atributo].icones [options.sub_atributo] [1] coords = _detalhes.sub_atributos [options.atributo].icones [options.sub_atributo] [2] name = _detalhes.sub_atributos [options.atributo].lista [options.sub_atributo] vcolor = vertex_color_default end else icone = [[Interface\AddOns\Details\images\icons]] coords = add_coords name = Loc ["STRING_SWITCH_CLICKME"] vcolor = vertex_color_unknown add = true end button:Show() button.button2:Show() button.fundo:Show() local width, height = button.button2.texto:GetSize() button.button2.texto:SetWidth (300) button.button2.texto:SetText (name) local text_width = button.button2.texto:GetStringWidth() while (text_width > _detalhes.switch.text_size) do _detalhes:SetFontSize (button.button2.texto, _detalhes.bookmark_text_size) local text = button.button2.texto:GetText() text = strsub (text, 1, #text-1) button.button2.texto:SetText (text) text_width = button.button2.texto:GetStringWidth() end button.button2.texto:SetSize (width, height) DetailsFramework:SetFontColor(button.button2.texto, textColor) button.textureNormal:SetTexture (icone, true) button.textureNormal:SetTexCoord (_unpack (coords)) button.textureNormal:SetVertexColor (_unpack (vcolor)) button.texturePushed:SetTexture (icone, true) button.texturePushed:SetTexCoord (_unpack (coords)) button.texturePushed:SetVertexColor (_unpack (vcolor)) button.textureH:SetTexture (icone, true) button.textureH:SetVertexColor (_unpack (vcolor)) button.textureH:SetTexCoord (_unpack (coords)) button:ChangeIcon (button.textureNormal, button.texturePushed, nil, button.textureH) if (add) then button:SetSize (12, 12) else button:SetSize (15, 15) end if (name == Loc ["STRING_SWITCH_CLICKME"]) then --button.button2.texto:SetTextColor (.3, .3, .3, 1) button:SetAlpha (0.3) button.textureNormal:SetDesaturated (true) button.button2.texto:SetPoint ("left", button, "right", 5, -1) else --button.button2.texto:SetTextColor (.8, .8, .8, 1) button:SetAlpha (1) button.textureNormal:SetDesaturated (false) button.button2.texto:SetPoint ("left", button, "right", 3, -1) end if (jump) then x = x - 125 y = y + _detalhes.switch.button_height jump = false else x = x + 1254 jump = true end end FauxScrollFrame_Update (DetailsSwitchPanelScroll, ceil (40 / _detalhes.switch.vertical_amt) , _detalhes.switch.horizontal_amt, 20) end local scroll = CreateFrame ("scrollframe", "DetailsSwitchPanelScroll", DetailsSwitchPanel, "FauxScrollFrameTemplate") scroll:SetAllPoints() scroll:SetScript ("OnVerticalScroll", function (self, offset) FauxScrollFrame_OnVerticalScroll (self, offset, 20, _detalhes.switch.Update) end) --altura scroll.ScrollBar:Hide() scroll.ScrollBar.ScrollUpButton:Hide() scroll.ScrollBar.ScrollDownButton:Hide() function _detalhes.switch:Resize (precisa_mostrar) local x, x_original = 5, 5 local y = 5 local y_increment = 18 local window_width, window_height = _detalhes.switch.current_instancia:GetSize() local horizontal_amt = floor (math.max (window_width / 100, 2)) local vertical_amt = floor ((window_height - y) / y_increment) local total_amt = horizontal_amt * vertical_amt if (precisa_mostrar > total_amt) then --vertical_amt = floor ((window_height - y) / 15) --y_increment = 15 end _detalhes.switch.y_increment = y_increment local size = window_width / horizontal_amt local frame = _detalhes.switch.frame for index, button in ipairs (_detalhes.switch.buttons) do button:Hide() end _detalhes.switch.vertical_amt = vertical_amt _detalhes.switch.horizontal_amt = horizontal_amt _detalhes.switch.text_size = size - 30 local i = 1 for vertical = 1, vertical_amt do x = x_original for horizontal = 1, horizontal_amt do local button = _detalhes.switch.buttons [i] local options = _detalhes.switch.table [i] if (not options) then options = {atributo = nil, sub_atributo = nil} _detalhes.switch.table [i] = options end if (not button) then button = _detalhes.switch:NewSwitchButton (frame, i, x, y) button:SetFrameLevel (frame:GetFrameLevel()+2) _detalhes.switch.showing = _detalhes.switch.showing + 1 end button:SetPoint ("topleft", frame, "topleft", x, -y) button.textureNormal:SetPoint ("topleft", frame, "topleft", x, -y) button.texturePushed:SetPoint ("topleft", frame, "topleft", x, -y) button.textureH:SetPoint ("topleft", frame, "topleft", x, -y) button.button2.texto:SetSize (size - 30, 12) button.button2:SetPoint ("bottomright", button, "bottomright", size - 30, 0) button.line:SetWidth (size - 15) button.line2:SetWidth (size - 15) button:Show() i = i + 1 x = x + size if (i > 40) then break end end y = y + y_increment + 2 end _detalhes.switch.slots = i-1 end function _detalhes.switch:Resize2() local x = 7 local y = 5 local xPlus = (_detalhes.switch.current_instancia:GetSize()/2)-5 local frame = _detalhes.switch.frame for index, button in ipairs (_detalhes.switch.buttons) do if (button.rightButton) then button:SetPoint ("topleft", frame, "topleft", x, -y) button.textureNormal:SetPoint ("topleft", frame, "topleft", x, -y) button.texturePushed:SetPoint ("topleft", frame, "topleft", x, -y) button.textureH:SetPoint ("topleft", frame, "topleft", x, -y) button.button2.texto:SetSize (xPlus - 30, 12) button.button2:SetPoint ("bottomright", button, "bottomright", xPlus - 30, 0) button.line:SetWidth (xPlus - 15) button.line2:SetWidth (xPlus - 15) x = x - xPlus y = y + _detalhes.switch.button_height jump = false else button:SetPoint ("topleft", frame, "topleft", x, -y) button.textureNormal:SetPoint ("topleft", frame, "topleft", x, -y) button.texturePushed:SetPoint ("topleft", frame, "topleft", x, -y) button.textureH:SetPoint ("topleft", frame, "topleft", x, -y) button.button2.texto:SetSize (xPlus - 30, 12) button.button2:SetPoint ("topleft", button, "topright", 1, 0) button.button2:SetPoint ("bottomright", button, "bottomright", xPlus - 30, 0) button.line:SetWidth (xPlus - 20) button.line2:SetWidth (xPlus - 20) x = x + xPlus jump = true end end end local onenter = function (self) if (not _detalhes.switch.table [self.id].atributo) then GameCooltip:Reset() _detalhes:CooltipPreset (1) GameCooltip:AddLine (Loc["STRING_SWITCH_CLICKME"]) --add bookmark GameCooltip:AddIcon ([[Interface\Glues\CharacterSelect\Glues-AddOn-Icons]], 1, 1, 16, 16, 0.75, 1, 0, 1, {0, 1, 0}) GameCooltip:SetOwner (self) GameCooltip:SetType ("tooltip") GameCooltip:SetOption ("TextSize", 10) GameCooltip:SetOption ("ButtonsYMod", 0) GameCooltip:SetOption ("YSpacingMod", 0) GameCooltip:SetOption ("IgnoreButtonAutoHeight", false) GameCooltip:SetBackdrop (1, _detalhes.tooltip_backdrop, backgroundColor, _detalhes.tooltip_border_color) GameCooltip:SetBackdrop (2, _detalhes.tooltip_backdrop, backgroundColor, _detalhes.tooltip_border_color) GameCooltip:Show() else GameCooltip:Hide() end _detalhes:SetFontColor (self.texto, "orange") --self.border:SetBlendMode ("ADD") --self.button1_icon:SetBlendMode ("ADD") DetailsSwitchPanel.hover_over_texture:SetSize (self:GetWidth(), self:GetHeight()) --size of button DetailsSwitchPanel.hover_over_texture:ClearAllPoints() DetailsSwitchPanel.hover_over_texture:SetPoint ("topleft", self, "topleft", -18, 1) DetailsSwitchPanel.hover_over_texture:SetPoint ("bottomright", self, "bottomright", 8, -1) DetailsSwitchPanel.hover_over_texture:Show() end local onleave = function (self) if (GameCooltip:IsTooltip()) then GameCooltip:Hide() end self.texto:SetTextColor (.9, .9, .9, .9) self.border:SetBlendMode ("BLEND") self.button1_icon:SetBlendMode ("BLEND") end local oniconenter = function (self) if (GameCooltip:IsMenu()) then return end GameCooltip:Reset() _detalhes:CooltipPreset (1) GameCooltip:AddLine ("select bookmark") GameCooltip:AddIcon ([[Interface\TUTORIALFRAME\UI-TUTORIAL-FRAME]], 1, 1, 12, 14, 0.0019531, 0.1484375, 0.6269531, 0.8222656) GameCooltip:SetOwner (self) GameCooltip:SetType ("tooltip") GameCooltip:SetOption ("TextSize", 10) GameCooltip:SetOption ("ButtonsYMod", 0) GameCooltip:SetOption ("YSpacingMod", 0) GameCooltip:SetOption ("IgnoreButtonAutoHeight", false) GameCooltip:SetBackdrop (1, _detalhes.tooltip_backdrop, backgroundColor, _detalhes.tooltip_border_color) _detalhes:SetFontColor (self.texto, "orange") GameCooltip:Show() end local oniconleave = function (self) if (GameCooltip:IsTooltip()) then GameCooltip:Hide() end self.texto:SetTextColor (.9, .9, .9, .9) end local left_box_on_click = function (self, button) if (button == "RightButton") then --select another bookmark _detalhes:FastSwitch (self, nil, self.bookmark_number, true) else --change the display local bookmark = _detalhes.switch.table [self.bookmark_number] if (bookmark.atributo) then _detalhes:FastSwitch (self, bookmark, self.bookmark_number) else --invalid bookmark, select another bookmark _detalhes:FastSwitch (self, bookmark, self.bookmark_number, true) end end end local right_box_on_click = function (self, button) if (button == "RightButton") then --close the bookmark menu _detalhes.switch:CloseMe() else --change the display local bookmark = _detalhes.switch.table [self.bookmark_number] if (bookmark.atributo) then _detalhes:FastSwitch (self, bookmark, self.bookmark_number) else --invalid bookmark, select another bookmark _detalhes:FastSwitch (self, bookmark, self.bookmark_number, true) end end end local change_icon = function (self, icon1, icon2, icon3, icon4) self:SetNormalTexture (icon1) self:SetPushedTexture (icon2) self:SetDisabledTexture (icon3) self:SetHighlightTexture (icon4, "ADD") end function _detalhes.switch:NewSwitchButton (frame, index, x, y, rightButton) --botao dentro da caixa local button = CreateFrame ("button", "DetailsSwitchPanelButton_1_"..index, frame, "BackdropTemplate") --botao com o icone button:SetSize (15, 24) button:SetPoint ("topleft", frame, "topleft", x, -y) button:SetScript ("OnMouseDown", left_box_on_click) button:SetScript ("OnEnter", oniconenter) button:SetScript ("OnLeave", oniconleave) button.ChangeIcon = change_icon button.id = index --borda button.fundo = button:CreateTexture (nil, "overlay") button.fundo:SetTexCoord (0.00390625, 0.27734375, 0.44140625,0.69531250) button.fundo:SetWidth (26) button.fundo:SetHeight (24) button.fundo:SetPoint ("topleft", button, "topleft", -5, 5) --fundo marrom local fundo_x = -3 local fundo_y = -5 button.line = button:CreateTexture (nil, "background") button.line:SetTexCoord (0.31250000, 0.96484375, 0.37109375, 0.52343750) button.line:SetWidth (85) button.line:SetPoint ("topleft", button, "topright", fundo_x-14, 0) button.line:SetPoint ("bottomleft", button, "bottomright", fundo_x, fundo_y) button.line:SetAlpha (0.6) --fundo marrom 2 button.line2 = button:CreateTexture (nil, "background") button.line2:SetTexCoord (0.31250000, 0.96484375, 0.37109375, 0.52343750) button.line2:SetWidth (85) button.line2:SetPoint ("topleft", button, "topright", fundo_x, 0) button.line2:SetPoint ("bottomleft", button, "bottomright", fundo_x, fundo_y) --botao do fundo marrom local button2 = CreateFrame ("button", "DetailsSwitchPanelButton_2_"..index, button, "BackdropTemplate") --botao com o texto button2:SetSize (1, 1) button2:SetPoint ("topleft", button, "topright", 1, 0) button2:SetPoint ("bottomright", button, "bottomright", 90, 0) button2:SetScript ("OnMouseDown", right_box_on_click) button2:SetScript ("OnEnter", onenter) button2:SetScript ("OnLeave", onleave) button2.id = index button.button2 = button2 --icone button.textureNormal = button:CreateTexture (nil, "background") button.textureNormal:SetAllPoints (button) --icone pushed button.texturePushed = button:CreateTexture (nil, "background") button.texturePushed:SetAllPoints (button) --highlight button.textureH = button:CreateTexture (nil, "background") button.textureH:SetAllPoints (button) --texto do atributo gump:NewLabel (button2, button2, nil, "texto", "", "GameFontNormal") button2.texto:SetPoint ("left", button, "right", 5, -1) button2.texto:SetTextColor (.9, .9, .9, .9) _detalhes:SetFontSize (button2.texto, _detalhes.bookmark_text_size) button.texto = button2.texto button2.button1_icon = button.textureNormal button2.button1_icon2 = button.texturePushed button2.button1_icon3 = button.textureH button2.border = button.fundo button2.MouseOnEnterHook = onenter button2.MouseOnLeaveHook = onleave _detalhes.switch.buttons [index] = button return button end