From 8ff60f5fba420577fa28df85209244ab1065d42c Mon Sep 17 00:00:00 2001 From: tercio Date: Fri, 17 Oct 2014 22:03:12 -0300 Subject: [PATCH] - Merged the left and right menus into only one with 6 icons. - Removed window button and added a new option for manage window under Mode Menu. - Few changes on 'Default Skin' and 'ElvUI Frame Style BW'. --- boot.lua | 29 +- classes/classe_instancia.lua | 18 +- classes/classe_instancia_include.lua | 13 +- framework/cooltip.lua | 190 ++++- functions/profiles.lua | 15 + functions/skins.lua | 528 ++++++++---- gumps/janela_options.lua | 297 +------ gumps/janela_principal.lua | 1158 ++++++++++++-------------- gumps/janela_welcome.lua | 4 +- images/icons.tga | Bin 539276 -> 537827 bytes images/modo_icones.tga | Bin 23684 -> 25884 bytes images/skins/default_skin.tga | Bin 197310 -> 198380 bytes images/toolbar_icons.tga | Bin 0 -> 9870 bytes startup.lua | 1 - 14 files changed, 1132 insertions(+), 1121 deletions(-) create mode 100644 images/toolbar_icons.tga diff --git a/boot.lua b/boot.lua index c805f8d7..735d2f2b 100644 --- a/boot.lua +++ b/boot.lua @@ -3,9 +3,9 @@ _ = nil _detalhes = LibStub("AceAddon-3.0"):NewAddon("_detalhes", "AceTimer-3.0", "AceComm-3.0", "AceSerializer-3.0", "NickTag-1.0") - _detalhes.build_counter = 125 --it's 125 for release - _detalhes.userversion = "v2.0.16" - _detalhes.realversion = 31 + _detalhes.build_counter = 125 --it's 129 for release + _detalhes.userversion = "a2.1.0" + _detalhes.realversion = 33 _detalhes.version = _detalhes.userversion .. " (core " .. _detalhes.realversion .. ")" ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- @@ -18,26 +18,15 @@ do local Loc = LibStub ("AceLocale-3.0"):GetLocale ( "Details" ) --[[ -|cFFFFFF00v2.0.14 (|cFFFFCC00Oct 14, 2014|r|cFFFFFF00)|r:\n\n -|cFFFFFF00-|r Added pre-potion recognition for WoD pots.\n\n -|cFFFFFF00-|r Added spell list for Blackrock Foundry encounters.\n\n -|cFFFFFF00-|r Added mouse wheel scroll speed option.\n\n -|cFFFFFF00-|r Added support for healing multistrike and damage multistrike.\n\n -|cFFFFFF00-|r Added a Change Log button on Options Panel.\n\n -|cFFFFFF00-|r When the windows is locked, trying to move the window through toolbar will stretch it instead.\n\n -|cFFFFFF00-|r Renamed overheal for shields, now its called 'shield wasted'.\n\n -|cFFFFFF00-|r Fine tuning on healing done, should have high accuracy now.\n\n -|cFFFFFF00-|r Encounter Details plugin now supports Highmaul and Blackrock Foundry.\n\n -|cFFFFFF00-|r New class cooldowns and spells recognition.\n\n -|cFFFFFF00-|r Fixed few bugs on comparison panel and avoidance panel.\n\n -|cFFFFFF00-|r Fixed encounter recognition, now it should show the encounter name over segments menu.\n\n -|cFFFFFF00-|r Fixed Graphic part of Encounter Details Plugin, now he draws more accurately.\n\n - - +|cFFFFFF00v2.1.0 (|cFFFFCC00Oct 17, 2014|r|cFFFFFF00)|r:\n\n +|cFFFFFF00-|r Finally we merged the left and right menus into only one with 6 icons.\n\n +|cFFFFFF00-|r Removed window button and added a new option for manage window under Mode Menu.\n\n +|cFFFFFF00-|r Few changes on 'Default Skin' and 'ElvUI Frame Style BW'.\n\n +|cFFFFFF00Important:|r If the menus is out of the position, just reaply the skin.\n\n --]] - Loc ["STRING_VERSION_LOG"] = "v2.0.15 (|cFFFFCC00Oct 15, 2014|r|cFFFFFF00)|r:\n\n|cFFFFFF00-|r Fixed tooltips where sometimes it wans't showing at all.\n\n|cFFFFFF00-|r Fixed the healing done amount on Malkorok encounter.\n\nv2.0.14 (|cFFFFCC00Oct 14, 2014|r|cFFFFFF00)|r:\n\n|cFFFFFF00-|r Added pre-potion recognition for WoD pots.\n\n|cFFFFFF00-|r Added spell list for Blackrock Foundry encounters.\n\n|cFFFFFF00-|r Added mouse wheel scroll speed option.\n\n|cFFFFFF00-|r Added support for healing multistrike and damage multistrike.\n\n|cFFFFFF00-|r Added a Change Log button on Options Panel.\n\n|cFFFFFF00-|r When the windows is locked, trying to move the window through toolbar will stretch it instead.\n\n|cFFFFFF00-|r Renamed overheal for shields, now its called 'shield wasted'.\n\n|cFFFFFF00-|r Fine tuning on healing done, should have high accuracy now.\n\n|cFFFFFF00-|r Encounter Details plugin now supports Highmaul and Blackrock Foundry.\n\n|cFFFFFF00-|r New class cooldowns and spells recognition.\n\n|cFFFFFF00-|r Fixed few bugs on comparison panel and avoidance panel.\n\n|cFFFFFF00-|r Fixed encounter recognition, now it should show the encounter name over segments menu.\n\n|cFFFFFF00-|r Fixed Graphic part of Encounter Details Plugin, now he draws more accurately.\n\n|cFFFFFF00v1.29.3 (|cFFFFCC00Oct 11, 2014|r|cFFFFFF00)|r:\n\n|cFFFFFF00-|r Fixed an addon crash bug when clicking directly on the sword button.\n\n|cFFFFFF00-|r Removed Flat Skin, added new skin: Serenity.\n\n|cFFFFFF00-|r Fixed many issues with bar animations.\n\n|cFFFFFF00-|r Fixed combat encounter start if the player already is in combat when the boss is pulled.\n\n|cFFFFFF00-|r Fixed wheel scroll when sometimes it move very slow or doesn't move the bars at all.\n\n|cFFFFFF00-|r Added option 'Always Show Me' which when enabled and you aren't at the top ranked players shown in the window, it forces to show you in the last bar.\n\n|cFFFFFF00-|r Added option 'First Hit' which when enabled show who did the first struck in the combat (normally is who pulled the boss).\n\n|cFFFFFF00-|r Added a panel to change class colors.\n\n|cFFFFFF00v1.28.3 (|cFFFFCC00Oct 04, 2014|r|cFFFFFF00)|r:\n\n|cFFFFFF00-|r Added support for plugin descriptions on options panel.\n\n|cFFFFFF00-|r Added scale option.\n\n|cFFFFFF00-|r Added a Change Log button on Options Panel.\n\n|cFFFFFF00-|r Added option to use the same profile on all characters without asking.\n\n|cFFFFFF00-|r Added a shortcut color button on main panel on Options Panel.\n\n|cFFFFFF00-|r Added auto erase/ask to erase options.\n\n|cFFFFFF00-|r Bars now highlight when hover over.\n\n|cFFFFFF00-|r Fixed problem with drag the window when the toolbar is on the bottom side.\n\n|cFFFFFF00v1.27.0 (|cFFFFCC00Set 27, 2014|r|cFFFFFF00)|r:\n\n|cFFFFFF00-|r Minimalistic skin is now the old minimalistic v2.\n\n|cFFFFFF00-|r Minimalistic v2 got a new texture, little more darker.\n\n|cFFFFFF00-|r Few tweaks to make more easy making groups of windows.\n\n|cFFFFFF00-|r Bookmark now accepts more than two columns.\n\n|cFFFFFF00v1.26.3 (|cFFFFCC00Set 18, 2014|r|cFFFFFF00)|r:\n\n|cFFFFFF00-|r Changed the way to set the broker text to be more customizable.\n\n|cFFFFFF00-|r Fixed the problem with custom display report.\n\n|cFFFFFF00-|r Added tutorial and a config panel for bookmarks.\n\n|cFFFFFF00-|r Added option for choose the format type of data broker's text.\n\n|cFFFFFF00-|r Changed few icons on damage done tooltip.\n\n|cFFFFFF00-|r Fixed the class color on texts for healing attribute.\n\n|cFFFFFF00-|r Added options for change the tooltip border's size, color and texture.\n\n|cFFFFFF00-|r Added buttons for test interrupt and cooldown announcers under raid tools section.\n\n|cFFFFFF00v1.25.1 (|cFFFFCC00Set 09, 2014|r|cFFFFFF00)|r:\n\n|cFFFFFF00-|r Added buttons to edit the total and percentage code for custom displays.\n\n|cFFFFFF00-|r Fixed a problem while report custom displays.\n\n|cFFFFFF00-|r Added Acitivity Time for Damage + Healing, tooltip show the activity separately.\n\n|cFFFFFF00-|r Major changes on Encounter Details Plugin making more easy to use.\n\n|cFFFFFF00-|r Removed Spell Details Plugin.\n\n|cFFFFFF00-|r Added new plugin for Solo Mode: Dps Tuning.\n\n|cFFFFFF00v1.24.5 (|cFFFFCC00Ago 31, 2014|r|cFFFFFF00)|r:\n\n|cFFFFFF00-|r Added Raid Tools bracket on Options Panel.\n\n|cFFFFFF00-|r Added interrupt, cooldown and death announcers (raid tools).\n\n|cFFFFFF00-|r Added pre potion recognition, showing after the encounter on the chat only for you (raid tools).\n\n|cFFFFFF00-|r Added a Boss Emotes tab for Encounter Details plugin |cFF999999(thanks Bloodforce-Azralon)|r.\n\n|cFFFFFF00-|r Rework on Activity Time, now it is tuned to closely match warcraftlogs |cFF999999(thanks www.warcraftlogs.com)|r.\n\n|cFFFFFF00-|r Added two new customs: Damage Activity Time and Healing Activity Time.\n\n|cFFFFFF00-|r Time Attack Plugin now have six fixed time amount options for test your dps on training dummies.\n\n|cFFFFFF00-|r Time Attack Plugin can now also share results on your realm, between players with the same class.\n\n|cFFFFFF00v1.23.6 (|cFFFFCC00Ago 24, 2014|r|cFFFFFF00)|r:\n\n|cFFFFFF00-|r Added 2 new bar textures and 6 new fonts.\n\n|cFFFFFF00-|r Swapped left and middle button for enemy bars, now left button open damage taken and middle button player detail window.\n\n|cFFFFFF00-|r Added new skin: Minimalistic v2.\n\n|cFFFFFF00-|r Minimalistic v2 is now the default skin.\n\n|cFFFFFF00-|r Few changes on both icon packs with transparency.\n\n|cFFFFFF00-|r Replaced the slash command '/d' with '/de' |cFF999999(thanks @kamuul-mmochampion forum)|r.\n\n|cFFFFFF00-|r Added custom spells for Atonement, Power Word: Solance and Life Bloom |cFF999999(thanks @skmzarn-mmochampion forum)|r.\n\n|cFFFFFF00v1.22.4 (|cFFFFCC00Ago 15, 2014|r|cFFFFFF00)|r:\n\n|cFFFFFF00-|r Added new skin: ElvUI Frame Style (Black White).\n\n|cFFFFFF00-|r Align With Right Chat Window option now check if the window have statusbar enabled.\n\n|cFFFFFF00-|r Few improvements on report for Deaths and Spells over Player Detail Window.\n\n|cFFFFFF00-|r Added option to disable reset button (reset only using its tooltip menu).\n\n|cFFFFFF00-|r Added option for disable window groups.\n\n|cFFFFFF00-|r Added option for select the icon pack to use, also added black white icon pack.\n\n|cFFFFFF00-|r Fixed many bugs involving skins and profiles, thing should run more smooth now.\n\n|cFFFFFF00-|r Plugin Time Attack now correctly saves the attempt when pressing the big save button.\n\n|cFFFFFF00-|r Added support for hotcorners." + Loc ["STRING_VERSION_LOG"] = "|cFFFFFF00v2.1.0 (|cFFFFCC00Oct 17, 2014|r|cFFFFFF00)|r:\n\n|cFFFFFF00-|r Finally we merged the left and right menus into only one with 6 icons.\n\n|cFFFFFF00-|r Removed window button and added a new option bracket to manage windows under Mode Menu.\n\n|cFFFFFF00-|r Few changes on 'Default Skin' and 'ElvUI Frame Style BW'.\n\n|cFFFFFF00- Important:|r If the menus is out of the position, just reaply the skin.\n\nv2.0.15 (|cFFFFCC00Oct 15, 2014|r|cFFFFFF00)|r:\n\n|cFFFFFF00-|r Fixed tooltips where sometimes it wans't showing at all.\n\n|cFFFFFF00-|r Fixed the healing done amount on Malkorok encounter.\n\nv2.0.14 (|cFFFFCC00Oct 14, 2014|r|cFFFFFF00)|r:\n\n|cFFFFFF00-|r Added pre-potion recognition for WoD pots.\n\n|cFFFFFF00-|r Added spell list for Blackrock Foundry encounters.\n\n|cFFFFFF00-|r Added mouse wheel scroll speed option.\n\n|cFFFFFF00-|r Added support for healing multistrike and damage multistrike.\n\n|cFFFFFF00-|r Added a Change Log button on Options Panel.\n\n|cFFFFFF00-|r When the windows is locked, trying to move the window through toolbar will stretch it instead.\n\n|cFFFFFF00-|r Renamed overheal for shields, now its called 'shield wasted'.\n\n|cFFFFFF00-|r Fine tuning on healing done, should have high accuracy now.\n\n|cFFFFFF00-|r Encounter Details plugin now supports Highmaul and Blackrock Foundry.\n\n|cFFFFFF00-|r New class cooldowns and spells recognition.\n\n|cFFFFFF00-|r Fixed few bugs on comparison panel and avoidance panel.\n\n|cFFFFFF00-|r Fixed encounter recognition, now it should show the encounter name over segments menu.\n\n|cFFFFFF00-|r Fixed Graphic part of Encounter Details Plugin, now he draws more accurately.\n\n|cFFFFFF00v1.29.3 (|cFFFFCC00Oct 11, 2014|r|cFFFFFF00)|r:\n\n|cFFFFFF00-|r Fixed an addon crash bug when clicking directly on the sword button.\n\n|cFFFFFF00-|r Removed Flat Skin, added new skin: Serenity.\n\n|cFFFFFF00-|r Fixed many issues with bar animations.\n\n|cFFFFFF00-|r Fixed combat encounter start if the player already is in combat when the boss is pulled.\n\n|cFFFFFF00-|r Fixed wheel scroll when sometimes it move very slow or doesn't move the bars at all.\n\n|cFFFFFF00-|r Added option 'Always Show Me' which when enabled and you aren't at the top ranked players shown in the window, it forces to show you in the last bar.\n\n|cFFFFFF00-|r Added option 'First Hit' which when enabled show who did the first struck in the combat (normally is who pulled the boss).\n\n|cFFFFFF00-|r Added a panel to change class colors.\n\n|cFFFFFF00v1.28.3 (|cFFFFCC00Oct 04, 2014|r|cFFFFFF00)|r:\n\n|cFFFFFF00-|r Added support for plugin descriptions on options panel.\n\n|cFFFFFF00-|r Added scale option.\n\n|cFFFFFF00-|r Added a Change Log button on Options Panel.\n\n|cFFFFFF00-|r Added option to use the same profile on all characters without asking.\n\n|cFFFFFF00-|r Added a shortcut color button on main panel on Options Panel.\n\n|cFFFFFF00-|r Added auto erase/ask to erase options.\n\n|cFFFFFF00-|r Bars now highlight when hover over.\n\n|cFFFFFF00-|r Fixed problem with drag the window when the toolbar is on the bottom side.\n\n|cFFFFFF00v1.27.0 (|cFFFFCC00Set 27, 2014|r|cFFFFFF00)|r:\n\n|cFFFFFF00-|r Minimalistic skin is now the old minimalistic v2.\n\n|cFFFFFF00-|r Minimalistic v2 got a new texture, little more darker.\n\n|cFFFFFF00-|r Few tweaks to make more easy making groups of windows.\n\n|cFFFFFF00-|r Bookmark now accepts more than two columns.\n\n|cFFFFFF00v1.26.3 (|cFFFFCC00Set 18, 2014|r|cFFFFFF00)|r:\n\n|cFFFFFF00-|r Changed the way to set the broker text to be more customizable.\n\n|cFFFFFF00-|r Fixed the problem with custom display report.\n\n|cFFFFFF00-|r Added tutorial and a config panel for bookmarks.\n\n|cFFFFFF00-|r Added option for choose the format type of data broker's text.\n\n|cFFFFFF00-|r Changed few icons on damage done tooltip.\n\n|cFFFFFF00-|r Fixed the class color on texts for healing attribute.\n\n|cFFFFFF00-|r Added options for change the tooltip border's size, color and texture.\n\n|cFFFFFF00-|r Added buttons for test interrupt and cooldown announcers under raid tools section.\n\n|cFFFFFF00v1.25.1 (|cFFFFCC00Set 09, 2014|r|cFFFFFF00)|r:\n\n|cFFFFFF00-|r Added buttons to edit the total and percentage code for custom displays.\n\n|cFFFFFF00-|r Fixed a problem while report custom displays.\n\n|cFFFFFF00-|r Added Acitivity Time for Damage + Healing, tooltip show the activity separately.\n\n|cFFFFFF00-|r Major changes on Encounter Details Plugin making more easy to use.\n\n|cFFFFFF00-|r Removed Spell Details Plugin.\n\n|cFFFFFF00-|r Added new plugin for Solo Mode: Dps Tuning.\n\n|cFFFFFF00v1.24.5 (|cFFFFCC00Ago 31, 2014|r|cFFFFFF00)|r:\n\n|cFFFFFF00-|r Added Raid Tools bracket on Options Panel.\n\n|cFFFFFF00-|r Added interrupt, cooldown and death announcers (raid tools).\n\n|cFFFFFF00-|r Added pre potion recognition, showing after the encounter on the chat only for you (raid tools).\n\n|cFFFFFF00-|r Added a Boss Emotes tab for Encounter Details plugin |cFF999999(thanks Bloodforce-Azralon)|r.\n\n|cFFFFFF00-|r Rework on Activity Time, now it is tuned to closely match warcraftlogs |cFF999999(thanks www.warcraftlogs.com)|r.\n\n|cFFFFFF00-|r Added two new customs: Damage Activity Time and Healing Activity Time.\n\n|cFFFFFF00-|r Time Attack Plugin now have six fixed time amount options for test your dps on training dummies.\n\n|cFFFFFF00-|r Time Attack Plugin can now also share results on your realm, between players with the same class.\n\n|cFFFFFF00v1.23.6 (|cFFFFCC00Ago 24, 2014|r|cFFFFFF00)|r:\n\n|cFFFFFF00-|r Added 2 new bar textures and 6 new fonts.\n\n|cFFFFFF00-|r Swapped left and middle button for enemy bars, now left button open damage taken and middle button player detail window.\n\n|cFFFFFF00-|r Added new skin: Minimalistic v2.\n\n|cFFFFFF00-|r Minimalistic v2 is now the default skin.\n\n|cFFFFFF00-|r Few changes on both icon packs with transparency.\n\n|cFFFFFF00-|r Replaced the slash command '/d' with '/de' |cFF999999(thanks @kamuul-mmochampion forum)|r.\n\n|cFFFFFF00-|r Added custom spells for Atonement, Power Word: Solance and Life Bloom |cFF999999(thanks @skmzarn-mmochampion forum)|r.\n\n|cFFFFFF00v1.22.4 (|cFFFFCC00Ago 15, 2014|r|cFFFFFF00)|r:\n\n|cFFFFFF00-|r Added new skin: ElvUI Frame Style (Black White).\n\n|cFFFFFF00-|r Align With Right Chat Window option now check if the window have statusbar enabled.\n\n|cFFFFFF00-|r Few improvements on report for Deaths and Spells over Player Detail Window.\n\n|cFFFFFF00-|r Added option to disable reset button (reset only using its tooltip menu).\n\n|cFFFFFF00-|r Added option for disable window groups.\n\n|cFFFFFF00-|r Added option for select the icon pack to use, also added black white icon pack.\n\n|cFFFFFF00-|r Fixed many bugs involving skins and profiles, thing should run more smooth now.\n\n|cFFFFFF00-|r Plugin Time Attack now correctly saves the attempt when pressing the big save button.\n\n|cFFFFFF00-|r Added support for hotcorners." Loc ["STRING_DETAILS1"] = "|cffffaeaeDetails!:|r " diff --git a/classes/classe_instancia.lua b/classes/classe_instancia.lua index 0da366ac..76cdaa75 100644 --- a/classes/classe_instancia.lua +++ b/classes/classe_instancia.lua @@ -2249,15 +2249,17 @@ function _detalhes:MontaAtributosOption (instancia, func) gindex = gindex + 1 end - + CoolTip:SetLastSelected (2, i, instancia.sub_atributo_last [i]) - end --> custom + CoolTip:AddMenu (1, func, nil, 5, nil, atributos.lista[5], nil, true) CoolTip:AddIcon ("Interface\\AddOns\\Details\\images\\atributos_icones", 1, 1, 20, 20, p*(5-1), p*(5), 0, 1) + CoolTip:AddMenu (2, _detalhes.OpenCustomDisplayWindow, nil, nil, nil, Loc ["STRING_CUSTOM_NEW"], "Interface\\PaperDollInfoFrame\\Character-Plus", true) + CoolTip:AddLine ("$div", nil, 2, nil, -6, -9) for index, custom in _ipairs (_detalhes.custom) do if (custom.temp) then @@ -2267,23 +2269,27 @@ function _detalhes:MontaAtributosOption (instancia, func) end CoolTip:AddMenu (2, func, true, 5, index) - CoolTip:AddIcon (custom.icon, 2, 1, 16, 16) + CoolTip:AddIcon (custom.icon, 2, 1, 20, 20) end --> set the wallpaper on custom GameCooltip:SetWallpaper (2, [[Interface\TALENTFRAME\WarriorArm-TopLeft]], {1, 0, 0, 1}, {1, 1, 1, 0.1}) if (#_detalhes.custom == 0) then - CoolTip:SetLastSelected (2, 5, 1) + CoolTip:SetLastSelected (2, 5, 2) else if (instancia.atributo == 5) then - CoolTip:SetLastSelected (2, 5, instancia.sub_atributo+1) + CoolTip:SetLastSelected (2, 5, instancia.sub_atributo+2) else - CoolTip:SetLastSelected (2, 5, instancia.sub_atributo_last [5]+1) + CoolTip:SetLastSelected (2, 5, instancia.sub_atributo_last [5]+2) end end CoolTip:SetOption ("StatusBarTexture", [[Interface\AddOns\Details\images\bar4_vidro]]) + CoolTip:SetOption ("ButtonsYMod", -7) + CoolTip:SetOption ("ButtonsYModSub", -7) + CoolTip:SetOption ("HeighMod", 8) + CoolTip:SetOption ("HeighModSub", 8) CoolTip:SetLastSelected (1, atributo_ativo) diff --git a/classes/classe_instancia_include.lua b/classes/classe_instancia_include.lua index 0725d109..939bc867 100644 --- a/classes/classe_instancia_include.lua +++ b/classes/classe_instancia_include.lua @@ -76,27 +76,16 @@ _detalhes.instance_defaults = { bars_grow_direction = 1, --sort direction is the direction of results on bars (1 = top to bottom 2 = bottom to top) bars_sort_direction = 1, - --reset button info - resetbutton_config = {size = {10, 16}, anchor = {2, 0}, normal_texture = [[Interface\Addons\Details\Images\reset_button]], highlight_texture = [[Interface\Addons\Details\Images\reset_button]], normal_texcoord = {0, 1, 0, 1}, highlight_texcoord = {0, 1, 0, 1}, normal_vertexcolor = {1, 1, 1, 1}, highlight_vertexcolor = {1, 1, 1, 1}}, - --instance button info - instancebutton_config = {size = {20, 16}, anchor = {2, 0}, highlight_texture = [[Interface\Buttons\UI-Panel-MinimizeButton-Highlight]], textcolor = {1, 1, 1, 1}, textsize = 11, textfont = "Friz Quadrata TT", textshadow = false}, - --close button info - closebutton_config = {size = {18, 18}, alpha = 1, anchor = {0, 0}, normal_texture = [[Interface\Buttons\UI-Panel-MinimizeButton-Up]], highlight_texture = [[Interface\Buttons\UI-Panel-MinimizeButton-Highlight]], pushed_texture = [[Interface\Buttons\UI-Panel-MinimizeButton-Down]]}, --menus: --anchor store the anchor point of main menu menu_anchor = {5, 1, side = 1}, --mode segment attribute report on top position menu_anchor_down = {5, 1}, --mode segment attribute report on bottom position - menu2_anchor = {14, 3}, --close instance erase on top position - menu2_anchor_down = {14, 3}, --close instance erase on bottom position --blackwhiite icons desaturated_menu = false, --mode segment attribute report - desaturated_menu2 = false, --reset instance close --icons on menu - menu_icons = {true, true, true, true}, --mode segment attribute report - menu2_icons = {true, true, true}, --reset instance close + menu_icons = {true, true, true, true, true, true}, --mode segment attribute report reset close --menu icons size multiplicator factor menu_icons_size = 1.0, --mode segment attribute report - menu2_icons_size = 1.0, --reset instance close --auto hide menu buttons auto_hide_menu = {left = false, right = false}, --attribute text diff --git a/framework/cooltip.lua b/framework/cooltip.lua index 9f9a51d9..d9b79986 100644 --- a/framework/cooltip.lua +++ b/framework/cooltip.lua @@ -103,6 +103,7 @@ function DetailsCreateCoolTip() ["LeftBorderSize"] = true, ["RightBorderSize"] = true, ["HeighMod"] = true, + ["HeighModSub"] = true, ["IconBlendMode"] = true, ["IconBlendModeHover"] = true, ["SubFollowButton"] = true, @@ -453,7 +454,7 @@ function DetailsCreateCoolTip() if (CoolTip.OptionsTable.SubMenuIsTooltip) then return CoolTip:Close() end - if (CoolTip.Type ~= 1 and CoolTip.Type ~= 2) then + if (CoolTip.Type ~= 1 and CoolTip.Type ~= 2 and not botao.isDiv) then CoolTip.active = true CoolTip.mouseOver = true @@ -972,7 +973,7 @@ function DetailsCreateCoolTip() --print ("Sub menu called but sub menu indexes is nil") return end - + if (CoolTip.OptionsTable.FixedWidthSub) then frame2:SetWidth (CoolTip.OptionsTable.FixedWidthSub) end @@ -987,6 +988,13 @@ function DetailsCreateCoolTip() local GotChecked = false + local IsTooltip = CoolTip.OptionsTable.SubMenuIsTooltip + if (IsTooltip) then + frame2:EnableMouse (false) + else + frame2:EnableMouse (true) + end + for i = 1, CoolTip.IndexesSub [index] do local button = frame2.Lines [i] @@ -999,6 +1007,12 @@ function DetailsCreateCoolTip() if (checked) then GotChecked = true end + + if (IsTooltip) then + button:EnableMouse (false) + else + button:EnableMouse (true) + end end local selected = CoolTip.SelectedIndexSec [index] @@ -1015,16 +1029,63 @@ function DetailsCreateCoolTip() for i = CoolTip.IndexesSub [index] + 1, #frame2.Lines do gump:Fade (frame2.Lines[i], 1) end + + local spacing = 0 + if (CoolTip.OptionsTable.YSpacingModSub) then + spacing = CoolTip.OptionsTable.YSpacingModSub + end - --[ - local spacing = 0 - if (CoolTip.OptionsTable.YSpacingModSub) then - spacing = CoolTip.OptionsTable.YSpacingModSub - end + --> normalize height of all rows + for i = 1, CoolTip.IndexesSub [index] do + + local menuButton = frame2.Lines [i] - --> normalize height of all rows - for i = 1, CoolTip.IndexesSub [index] do - local menuButton = frame2.Lines [i] + -- CoolTipFrame2.Lines [2].divbar + + if (menuButton.leftText:GetText() == "$div") then + + --> height + menuButton:SetHeight (4) + + --> points + menuButton:ClearAllPoints() + + menuButton:SetPoint ("center", frame2, "center") + menuButton:SetPoint ("left", frame2, "left") + menuButton:SetPoint ("right", frame2, "right") + + menuButton.rightText:SetText ("") + + local div_size_up = tonumber (CoolTip.RightTextTableSub [index] [i] [2]) + if (not div_size_up) then + div_size_up = 0 + end + local div_size_down = tonumber (CoolTip.RightTextTableSub [index] [i] [3]) + if (not div_size_down) then + div_size_down = 0 + end + + menuButton:SetPoint ("top", frame2, "top", 0, ( ( (i-1) * frame2.hHeight) * -1) - 4 + (CoolTip.OptionsTable.ButtonsYModSub or 0) + spacing + (2 + (div_size_up or 0))) + + if (CoolTip.OptionsTable.YSpacingModSub) then + spacing = spacing + CoolTip.OptionsTable.YSpacingModSub + end + + spacing = spacing + 17 + (div_size_down or 0) + + menuButton.leftText:SetText ("") + menuButton.isDiv = true + + if (not menuButton.divbar) then + CoolTip:CreateDivBar (menuButton) + else + menuButton.divbar:Show() + end + + menuButton.divbar:SetPoint ("left", menuButton, "left", frame1:GetWidth()*0.10, 0) + menuButton.divbar:SetPoint ("right", menuButton, "right", -frame1:GetWidth()*0.10, 0) + + else --> height menuButton:SetHeight (frame2.hHeight + (CoolTip.OptionsTable.ButtonHeightModSub or 0)) --> points @@ -1036,10 +1097,17 @@ function DetailsCreateCoolTip() end menuButton:SetPoint ("left", frame2, "left") menuButton:SetPoint ("right", frame2, "right") - end - --]] + + if (menuButton.divbar) then + menuButton.divbar:Hide() + menuButton.isDiv = false + end + end + + end - frame2:SetHeight ( (frame2.hHeight * CoolTip.IndexesSub [index]) + 12 + (-spacing)) + local mod = CoolTip.OptionsTable.HeighModSub or 0 + frame2:SetHeight ( (frame2.hHeight * CoolTip.IndexesSub [index]) + 12 + (-spacing) + mod) if (CoolTip.TopIconTableSub [index]) then local upperImageTable = CoolTip.TopIconTableSub [index] @@ -1064,6 +1132,8 @@ function DetailsCreateCoolTip() gump:Fade (frame2, 0) + CoolTip:CheckOverlap() + if (CoolTip.OptionsTable.SubFollowButton and not CoolTip.frame2_leftside) then local button = frame1.Lines [index] @@ -1250,9 +1320,13 @@ function DetailsCreateCoolTip() function CoolTip:CreateDivBar (button) button.divbar = button:CreateTexture (nil, "overlay") - button.divbar:SetTexture ("Interface\\TALENTFRAME\\talent-main") - button.divbar:SetTexCoord (0, 0.7890625, 0.248046875, 0.264625) + + button.divbar:SetTexture ([[Interface\QUESTFRAME\AutoQuest-Parts]]) + button.divbar:SetTexCoord (238/512, 445/512, 0/64, 4/64) + button.divbar:SetHeight (3) + button.divbar:SetAlpha (0.2) + button.divbar:SetDesaturated (true) end @@ -1349,22 +1423,34 @@ function DetailsCreateCoolTip() --> normalize height of all rows for i = 1, CoolTip.Indexes do local menuButton = frame1.Lines [i] - --> height - menuButton:SetHeight (frame1.hHeight + (CoolTip.OptionsTable.ButtonHeightMod or 0)) - --> points - menuButton:ClearAllPoints() - menuButton:SetPoint ("center", frame1, "center") - menuButton:SetPoint ("top", frame1, "top", 0, ( ( (i-1) * frame1.hHeight) * -1) - 4 + (CoolTip.OptionsTable.ButtonsYMod or 0) + spacing) - if (CoolTip.OptionsTable.YSpacingMod) then - spacing = spacing + CoolTip.OptionsTable.YSpacingMod - end - menuButton:SetPoint ("left", frame1, "left") - menuButton:SetPoint ("right", frame1, "right") - menuButton:EnableMouse (true) if (menuButton.leftText:GetText() == "$div") then + --> height + menuButton:SetHeight (4) + --> points + menuButton:ClearAllPoints() + menuButton:SetPoint ("left", frame1, "left") + menuButton:SetPoint ("right", frame1, "right") + menuButton:SetPoint ("center", frame1, "center") + + local div_size_up = tonumber (CoolTip.LeftTextTable [i] [2]) + if (not div_size_up) then + div_size_up = 0 + end + local div_size_down = tonumber (CoolTip.LeftTextTable [i] [3]) + if (not div_size_down) then + div_size_down = 0 + end + + menuButton:SetPoint ("top", frame1, "top", 0, ( ( (i-1) * frame1.hHeight) * -1) - 4 + (CoolTip.OptionsTable.ButtonsYMod or 0) + spacing - 4 + div_size_up) + if (CoolTip.OptionsTable.YSpacingMod) then + spacing = spacing + CoolTip.OptionsTable.YSpacingMod + end + + spacing = spacing + 4 + div_size_down + menuButton.leftText:SetText ("") menuButton.isDiv = true @@ -1376,15 +1462,27 @@ function DetailsCreateCoolTip() menuButton.divbar:SetPoint ("left", menuButton, "left", frame1:GetWidth()*0.10, 0) menuButton.divbar:SetPoint ("right", menuButton, "right", -frame1:GetWidth()*0.10, 0) - + else + + --> height + menuButton:SetHeight (frame1.hHeight + (CoolTip.OptionsTable.ButtonHeightMod or 0)) + --> points + menuButton:ClearAllPoints() + menuButton:SetPoint ("center", frame1, "center") + menuButton:SetPoint ("top", frame1, "top", 0, ( ( (i-1) * frame1.hHeight) * -1) - 4 + (CoolTip.OptionsTable.ButtonsYMod or 0) + spacing) + if (CoolTip.OptionsTable.YSpacingMod) then + spacing = spacing + CoolTip.OptionsTable.YSpacingMod + end + menuButton:SetPoint ("left", frame1, "left") + menuButton:SetPoint ("right", frame1, "right") + if (menuButton.divbar) then menuButton.divbar:Hide() menuButton.isDiv = false end end - - + end if (CoolTip.OptionsTable.FixedHeight) then @@ -1507,7 +1605,7 @@ function DetailsCreateCoolTip() frame2:ClearAllPoints() frame2:SetPoint ("bottomright", frame1, "bottomleft") CoolTip.frame2_leftside = true - --+ diff + --> diff return CoolTip:SetMyPoint (host, CoolTip.internal_x_mod , CoolTip.internal_y_mod) end @@ -1518,6 +1616,35 @@ function DetailsCreateCoolTip() end + function CoolTip:CheckOverlap() + if (frame2:IsShown()) then + + local frame_2_center_x = frame2:GetCenter() + if (frame_2_center_x) then + local frame_2_half_x = frame2:GetWidth() / 2 + + local frame_1_center_x = frame1:GetCenter() + if (frame_1_center_x) then + + local frame_1_half_x = frame1:GetWidth() / 2 + + local f1_end_point = frame_1_center_x + frame_1_half_x - 3 + local f2_start_point = frame_2_center_x - frame_2_half_x + + if (f2_start_point < f1_end_point) then + local diff = f2_start_point - f1_end_point + + frame2:ClearAllPoints() + frame2:SetPoint ("bottomright", frame1, "bottomleft") + CoolTip.frame2_leftside = true + end + + end + end + + end + end + function CoolTip:GetText (buttonIndex) local button1 = frame1.Lines [buttonIndex] if (not button1) then @@ -1751,6 +1878,7 @@ function DetailsCreateCoolTip() CoolTip.internal_x_mod = 0 CoolTip.internal_y_mod = 0 + CoolTip.current_anchor = nil CoolTip.overlap_checked = false CoolTip.frame2_leftside = nil diff --git a/functions/profiles.lua b/functions/profiles.lua index 108b95ff..d9844865 100644 --- a/functions/profiles.lua +++ b/functions/profiles.lua @@ -310,10 +310,25 @@ function _detalhes:ApplyProfile (profile_name, nosave, is_copy) break end + --> fix for the old flat skin if (skin.skin == "Flat Color") then skin.skin = "Serenity" end + --> fix for old left and right menus + if (skin.menu_icons and type (skin.menu_icons[5]) ~= "boolean") then + skin.menu_icons[5] = true + skin.menu_icons[6] = true + + local skin_profile = _detalhes.skins [skin.skin] and _detalhes.skins [skin.skin].instance_cprops + if (skin_profile) then + skin.menu_icons_size = skin_profile.menu_icons_size + skin.menu_anchor = table_deepcopy (skin_profile.menu_anchor) + --print (skin.menu_anchor[1], skin.menu_anchor[2], skin.menu_anchor.side) + skin.menu_anchor_down = table_deepcopy (skin_profile.menu_anchor_down) + end + end + --> get the instance local instance = _detalhes:GetInstance (index) if (not instance) then diff --git a/functions/skins.lua b/functions/skins.lua index db6c8ca4..6d4d9b83 100644 --- a/functions/skins.lua +++ b/functions/skins.lua @@ -52,7 +52,7 @@ local _ author = "Details!", version = "1.0", site = "unknown", - desc = "This was the first skin made for Details!, inspired in the standart wow intercace", + desc = "This was the first skin made for Details!, inspired in the standart wow interface", can_change_alpha_head = false, icon_anchor_main = {-1, 1}, @@ -68,49 +68,172 @@ local _ left_corner_anchor_bottom = {-107, 0}, right_corner_anchor_bottom = {96, 0}, - micro_frames = {left = "DETAILS_STATUSBAR_PLUGIN_PATTRIBUTE"}, + micro_frames = {left = "DETAILS_STATUSBAR_PLUGIN_THREAT"}, instance_cprops = { - - hide_icon = false, - menu_anchor = {5, -1, side = 1}, - menu_anchor_down = {5, -1}, - menu2_anchor = {37, 10}, - menu2_anchor_down = {22, -6}, - menu_icons_size = 1, - plugins_grow_direction = 2, - bg_alpha = 0.7, - - --rows - row_info = { - texture = "Details Serenity", - texture_class_colors = true, - alpha = 1, - texture_background_class_color = false, - texture_background = "Details Serenity", - fixed_texture_background_color = {0.619607, 0.619607, 0.619607, 0.116164}, - space = {left = 3, right = -5, between = 2}, - backdrop = {enabled = false, size = 6, color = {0, 0, 0, 0.305214}, texture = "Details BarBorder 2"} + ["hide_in_combat_type"] = 1, + ["color"] = { + 1, -- [1] + 1, -- [2] + 1, -- [3] + 1, -- [4] }, - - --instance button - instancebutton_config = {size = {22, 14}, anchor = {-2, -1}, textcolor = {.8, .6, .0, 0.8}, textsize = 10, textfont = "Friz Quadrata TT", - normal_texture = [[Interface\AddOns\Details\images\skins\default_skin]], - normal_texcoord = {0.0087890625, 0.0322265625, 0.4140625, 0.4296875}, - highlight_texture = [[Interface\Buttons\UI-Panel-MinimizeButton-Highlight]], - pushed_texture = [[Interface\AddOns\Details\images\skins\default_skin]], - pushed_texcoord = {0.0673828125, 0.0908203125, 0.4140625, 0.4296875} + ["menu_anchor"] = { + 13, -- [1] + 2, -- [2] + ["side"] = 2, }, - --reset button - resetbutton_config = {size = {22, 14}, anchor = {1, 0}, - normal_texture = [[Interface\AddOns\Details\images\skins\default_skin]], - normal_texcoord = {0.0380859375, 0.0615234375, 0.4140625, 0.4296875}, - highlight_texture = [[Interface\Buttons\UI-Panel-MinimizeButton-Highlight]], - pushed_texture = [[Interface\AddOns\Details\images\skins\default_skin]], - pushed_texcoord = {0.0966796875, 0.1201171875, 0.4140625, 0.4296875} + ["bg_r"] = 0.0941, + ["color_buttons"] = { + 1, -- [1] + 1, -- [2] + 1, -- [3] + 1, -- [4] }, - --close button - closebutton_config = {size = {32, 32}}, + ["bars_sort_direction"] = 1, + ["attribute_text"] = { + ["enabled"] = true, + ["shadow"] = false, + ["side"] = 1, + ["text_size"] = 10, + ["anchor"] = { + 5, -- [1] + 4, -- [2] + }, + ["text_color"] = { + 0.823529411764706, -- [1] + 0.549019607843137, -- [2] + 0, -- [3] + 1, -- [4] + }, + ["text_face"] = "Friz Quadrata TT", + }, + ["menu_alpha"] = { + ["enabled"] = false, + ["onenter"] = 1, + ["iconstoo"] = true, + ["ignorebars"] = false, + ["onleave"] = 1, + }, + ["total_bar"] = { + ["enabled"] = false, + ["only_in_group"] = true, + ["icon"] = "Interface\\ICONS\\INV_Sigil_Thorim", + ["color"] = { + 1, -- [1] + 1, -- [2] + 1, -- [3] + }, + }, + ["hide_out_of_combat"] = false, + ["strata"] = "LOW", + ["micro_displays_side"] = 2, + ["row_show_animation"] = { + ["anim"] = "Fade", + ["options"] = { + }, + }, + ["hide_in_combat_alpha"] = 0, + ["plugins_grow_direction"] = 2, + ["menu_icons"] = { + true, -- [1] + true, -- [2] + true, -- [3] + true, -- [4] + true, -- [5] + true, -- [6] + }, + ["desaturated_menu"] = false, + ["show_sidebars"] = true, + ["statusbar_info"] = { + ["alpha"] = 1, + ["overlay"] = { + 1, -- [1] + 1, -- [2] + 1, -- [3] + }, + }, + ["window_scale"] = 1, + ["auto_hide_menu"] = { + ["left"] = false, + ["right"] = false, + }, + ["grab_on_top"] = false, + ["hide_icon"] = false, + ["row_info"] = { + ["textR_outline"] = false, + ["textL_outline"] = true, + ["icon_file"] = "Interface\\AddOns\\Details\\images\\classes_small", + ["fixed_texture_color"] = { + 0, -- [1] + 0, -- [2] + 0, -- [3] + }, + ["texture_background_file"] = "Interface\\AddOns\\Details\\images\\bar4", + ["texture_highlight"] = "Interface\\FriendsFrame\\UI-FriendsList-Highlight", + ["textR_enable_custom_text"] = false, + ["texture_background_class_color"] = false, + ["textL_enable_custom_text"] = false, + ["textL_show_number"] = true, + ["space"] = { + ["right"] = -5, + ["left"] = 3, + ["between"] = 2, + }, + ["fixed_texture_background_color"] = { + 0.619607, -- [1] + 0.619607, -- [2] + 0.619607, -- [3] + 0.116164, -- [4] + }, + ["textR_custom_text"] = "{data1} ({data2}, {data3}%)", + ["start_after_icon"] = true, + ["font_face_file"] = "Fonts\\ARIALN.TTF", + ["fixed_text_color"] = { + 1, -- [1] + 1, -- [2] + 1, -- [3] + }, + ["backdrop"] = { + ["enabled"] = false, + ["size"] = 6, + ["color"] = { + 0, -- [1] + 0, -- [2] + 0, -- [3] + 0.305214, -- [4] + }, + ["texture"] = "Details BarBorder 2", + }, + ["textL_class_colors"] = false, + ["textL_custom_text"] = "{data1}. {data3}{data2}", + ["textR_class_colors"] = false, + ["alpha"] = 1, + ["no_icon"] = false, + ["font_size"] = 10, + ["texture_background"] = "Details Serenity", + ["font_face"] = "Arial Narrow", + ["texture_class_colors"] = true, + ["height"] = 14, + ["texture_file"] = "Interface\\AddOns\\Details\\images\\bar4", + ["texture"] = "Details Serenity", + ["percent_type"] = 1, + }, + ["menu_anchor_down"] = { + ["side"] = 2, + -14, -- [1] + -3, -- [2] + }, + ["toolbar_side"] = 1, + ["bg_g"] = 0.0941, + ["bars_grow_direction"] = 1, + ["hide_in_combat"] = false, + ["backdrop_texture"] = "Details Ground", + ["show_statusbar"] = true, + ["menu_icons_size"] = 1, + ["stretch_button_side"] = 1, + ["bg_alpha"] = 0.699999988079071, + ["bg_b"] = 0.0941, }, skin_options = { @@ -146,18 +269,12 @@ local _ instance_cprops = { hide_icon = true, - menu_anchor = {-60, 0, side = 2}, - menu_anchor_down = {-55, -1}, - menu2_anchor = {32, 3}, - menu2_anchor_down = {32, 2}, + menu_icons_size = 0.85, + menu_anchor = {16, 1, side = 2}, + menu_anchor_down = {16, -2}, - menu_icons_size = 0.8, plugins_grow_direction = 1, - instancebutton_config = {size = {20, 16}, anchor = {5, 0}, textcolor = {.8, .6, .0, 0.8}, textsize = 11, textfont = "Friz Quadrata TT", highlight_texture = [[Interface\Buttons\UI-Panel-MinimizeButton-Highlight]]}, - resetbutton_config = {size = {13, 13}, anchor = {2, 0}, normal_texture = [[Interface\Addons\Details\Images\reset_button2]], highlight_texture = [[Interface\Addons\Details\Images\reset_button2]]}, - closebutton_config = {size = {19, 19}, alpha = 0.8}, - show_sidebars = false, show_statusbar = false, color = {.3, .3, .3, 0.80}, @@ -213,18 +330,12 @@ local _ instance_cprops = { hide_icon = true, - menu_anchor = {-60, 1, side = 2}, - menu_anchor_down = {-55, -1}, - menu2_anchor = {32, 4}, - menu2_anchor_down = {32, 2}, + menu_icons_size = 0.90, + menu_anchor = {16, 2, side = 2}, + menu_anchor_down = {16, -2}, - menu_icons_size = 0.8, plugins_grow_direction = 1, - instancebutton_config = {size = {20, 16}, anchor = {5, 0}, textcolor = {.8, .6, .0, 0.8}, textsize = 10, textfont = "Friz Quadrata TT", highlight_texture = [[Interface\Buttons\UI-Panel-MinimizeButton-Highlight]]}, - resetbutton_config = {size = {13, 13}, anchor = {2, 0}, normal_texture = [[Interface\Addons\Details\Images\reset_button2]], highlight_texture = [[Interface\Addons\Details\Images\reset_button2]]}, - closebutton_config = {size = {19, 19}, alpha = 0.8}, - show_sidebars = false, show_statusbar = false, color = {0.3058, 0.3058, 0.3058, 0.8838}, --0.9350 @@ -239,7 +350,7 @@ local _ icon_file = [[Interface\AddOns\Details\images\classes_small_alpha]], start_after_icon = false, }, - attribute_text = {enabled = true, side = 1, text_size = 11, anchor = {-18, 4}, text_color = {1, 1, 1, 1}, text_face = "Arial Narrow"}, + attribute_text = {enabled = true, side = 1, text_size = 11, anchor = {-18, 5}, text_color = {1, 1, 1, 1}, text_face = "Arial Narrow"}, }, callback = function (skin, instance, just_updating) @@ -291,51 +402,14 @@ local _ right_corner_anchor_bottom = {96, 0}, instance_cprops = { - - resetbutton_config = {size = {13, 13}, anchor = {3, 0}, normal_texture = [[Interface\Addons\Details\Images\reset_button2]], highlight_texture = [[Interface\Addons\Details\Images\reset_button2]]}, - instancebutton_config = {size = {20, 16}, anchor = {5, 0}, textcolor = {.8, .6, .0, 0.8}, textsize = 10, textfont = "Friz Quadrata TT", highlight_texture = [[Interface\Buttons\UI-Panel-MinimizeButton-Highlight]]}, - closebutton_config = {size = {18, 18}, alpha = 1, anchor = {0, 0}}, ["show_statusbar"] = false, ["backdrop_texture"] = "Details Ground", - ["color"] = { - 1, -- [1] - 1, -- [2] - 1, -- [3] - 0.9199999570846558, -- [4] - }, - - ["menu_anchor"] = { - -60, -- [1] - 0, -- [2] - ["side"] = 2, - }, - ["menu2_icons"] = { - true, -- [1] - true, -- [2] - true, -- [3] - }, + ["color"] = {1, 1, 1, 0.919999}, + ["menu_anchor"] = {15, 1, ["side"] = 2}, ["bg_r"] = 1, - ["skin"] = "Flat Color", - ["hide_in_combat_type"] = 1, - ["following"] = { - ["enabled"] = false, - ["bar_color"] = { - 1, -- [1] - 1, -- [2] - 1, -- [3] - }, - ["text_color"] = { - 1, -- [1] - 1, -- [2] - 1, -- [3] - }, - }, - ["switch_healer"] = false, + ["bars_sort_direction"] = 1, - ["switch_damager_in_combat"] = false, - ["desaturated_menu2"] = false, - ["menu2_icons_size"] = 1, ["row_info"] = { ["textR_outline"] = false, ["textL_outline"] = false, @@ -395,11 +469,6 @@ local _ 0, -- [3] }, }, - ["instance_button_anchor"] = { - -27, -- [1] - 1, -- [2] - }, - ["name"] = "NewFlat1", ["attribute_text"] = { ["enabled"] = true, ["shadow"] = true, @@ -419,28 +488,18 @@ local _ }, ["menu_anchor_down"] = { - -55, -- [1] - -1, -- [2] + 15, -- [1] + -3, -- [2] }, - ["hide_in_combat_alpha"] = 0, ["plugins_grow_direction"] = 1, - ["switch_damager"] = false, ["show_sidebars"] = false, ["auto_hide_menu"] = { ["left"] = false, ["right"] = false, }, - ["menu2_anchor_down"] = { - 32, -- [1] - 2, -- [2] - }, ["bars_grow_direction"] = 1, ["hide_icon"] = true, - ["menu_icons_size"] = 0.8500000238418579, - ["menu2_anchor"] = { - 32, -- [1] - 2, -- [2] - }, + ["menu_icons_size"] = 0.95, ["toolbar_side"] = 1, ["bg_g"] = 1, ["bg_alpha"] = 0.07999999821186066, @@ -510,38 +569,177 @@ local _ --[[ when a skin is selected, all customized properties of the window is reseted and then the overwrites are applied]] --[[ for the complete cprop list see the file classe_instancia_include.lua]] instance_cprops = { - row_info = { - textL_outline = true, - textR_outline = true, - texture = "Details Serenity", - icon_file = [[Interface\AddOns\Details\images\classes_small_alpha]], - start_after_icon = false, - texture_background = "Details Serenity", - texture_background_class_color = false, - fixed_texture_background_color = {0, 0, 0, .2}, + ["hide_in_combat_type"] = 1, + ["backdrop_texture"] = "Details Ground", + ["color"] = { + 0.450980392156863, -- [1] + 0.450980392156863, -- [2] + 0.450980392156863, -- [3] + 1, -- [4] }, + ["menu_anchor"] = { + -19, -- [1] + -1, -- [2] + ["side"] = 1, + }, + ["bg_r"] = 0.0941, + ["hide_out_of_combat"] = false, + ["color_buttons"] = { + 1, -- [1] + 1, -- [2] + 1, -- [3] + 1, -- [4] + }, + ["bars_sort_direction"] = 1, + ["tooltip"] = { + ["n_abilities"] = 3, + ["n_enemies"] = 3, + }, + ["instance_button_anchor"] = { + -27, -- [1] + 1, -- [2] + }, + ["version"] = 3, + ["row_info"] = { + ["textR_outline"] = true, + ["textL_outline"] = true, + ["icon_file"] = "Interface\\AddOns\\Details\\images\\classes_small_alpha", + ["fixed_texture_color"] = { + 0, -- [1] + 0, -- [2] + 0, -- [3] + }, + ["backdrop"] = { + ["enabled"] = false, + ["texture"] = "Details BarBorder 2", + ["color"] = { + 1, -- [1] + 1, -- [2] + 1, -- [3] + 1, -- [4] + }, + ["size"] = 12, + }, + ["texture_highlight"] = "Interface\\FriendsFrame\\UI-FriendsList-Highlight", + ["textR_enable_custom_text"] = false, + ["start_after_icon"] = false, + ["textL_enable_custom_text"] = false, + ["textL_show_number"] = true, + ["space"] = { + ["right"] = 0, + ["left"] = 0, + ["between"] = 1, + }, + ["texture_background_class_color"] = false, + ["textR_custom_text"] = "{data1} ({data2}, {data3}%)", + ["texture"] = "Details Serenity", + ["font_face_file"] = "Fonts\\ARIALN.TTF", + ["texture_background_file"] = "Interface\\AddOns\\Details\\images\\bar4", + ["fixed_text_color"] = { + 1, -- [1] + 1, -- [2] + 1, -- [3] + }, + ["textL_class_colors"] = false, + ["textL_custom_text"] = "{data1}. {data3}{data2}", + ["textR_class_colors"] = false, + ["alpha"] = 1, + ["no_icon"] = false, + ["font_size"] = 10, + ["texture_background"] = "Details Serenity", + ["font_face"] = "Arial Narrow", + ["texture_class_colors"] = true, + ["height"] = 14, + ["texture_file"] = "Interface\\AddOns\\Details\\images\\bar4", + ["percent_type"] = 1, + ["fixed_texture_background_color"] = { + 0, -- [1] + 0, -- [2] + 0, -- [3] + 0.2, -- [4] + }, + }, + ["grab_on_top"] = false, + ["menu_alpha"] = { + ["enabled"] = false, + ["onleave"] = 1, + ["ignorebars"] = false, + ["iconstoo"] = true, + ["onenter"] = 1, + }, + ["menu_anchor_down"] = { + -20, -- [1] + -3, -- [2] + }, + ["micro_displays_side"] = 1, - instancebutton_config = {size = {20, 16}, anchor = {5, 0}, textcolor = {.7, .7, .7, 1}, textsize = 10, textfont = "Friz Quadrata TT", highlight_texture = [[Interface\Buttons\UI-Panel-MinimizeButton-Highlight]]}, - resetbutton_config = {size = {8, 16}, anchor = {1, 0}}, - closebutton_config = {size = {22, 22}}, - - menu_anchor = {-19, -1, side = 1}, - menu_anchor_down = {-58, 0}, - menu2_anchor = {32, 5}, - menu2_anchor_down = {32, 2}, - - hide_icon = true, - bg_alpha = 0.3, - wallpaper = { - enabled = true, - width = 244.0000362689358, - height = 96.00000674770899, - texcoord = {0.001000000014901161, 0.3424842834472656, 1, 0.5739999771118164}, - overlay = {0, 0, 0, 0.498038113117218}, - anchor = "all", - alpha = 0.4980392451398075, - texture = "Interface\\Glues\\CREDITS\\Fellwood5", + ["strata"] = "LOW", + ["desaturated_menu"] = true, + ["hide_in_combat_alpha"] = 0, + ["plugins_grow_direction"] = 2, + ["show_sidebars"] = false, + ["bars_grow_direction"] = 2, + ["row_show_animation"] = { + ["anim"] = "Fade", + ["options"] = { + }, }, + ["hide_icon"] = true, + ["statusbar_info"] = { + ["alpha"] = 1, + ["overlay"] = { + 0.450980392156863, -- [1] + 0.450980392156863, -- [2] + 0.450980392156863, -- [3] + }, + }, + ["bg_alpha"] = 0.300000011920929, + ["auto_current"] = true, + ["toolbar_side"] = 2, + ["bg_g"] = 0.0941, + ["hide_in_combat"] = false, + ["show_statusbar"] = false, + ["menu_icons_size"] = 1, + ["wallpaper"] = { + ["enabled"] = true, + ["width"] = 265.999943487933, + ["texcoord"] = { + 0.342000007629395, -- [1] + 0.00100000001490116, -- [2] + 1, -- [3] + 0.573999977111816, -- [4] + }, + ["overlay"] = { + 0, -- [1] + 0, -- [2] + 0, -- [3] + 0.807841360569, -- [4] + }, + ["anchor"] = "all", + ["height"] = 226.000007591173, + ["alpha"] = 0.807843208312988, + ["texture"] = "Interface\\Glues\\CREDITS\\Fellwood5", + }, + ["stretch_button_side"] = 1, + ["attribute_text"] = { + ["enabled"] = true, + ["shadow"] = true, + ["side"] = 2, + ["text_size"] = 11, + ["anchor"] = { + 65, -- [1] + 5, -- [2] + }, + ["text_color"] = { + 0.768627450980392, -- [1] + 0.768627450980392, -- [2] + 0.768627450980392, -- [3] + 1, -- [4] + }, + ["text_face"] = "Friz Quadrata TT", + }, + ["window_scale"] = 1, + ["bg_b"] = 0.0941, }, skin_options = { @@ -774,25 +972,15 @@ local _ --[[ for the complete cprop list see the file classe_instancia_include.lua]] instance_cprops = { - closebutton_config = {size = {20, 20}, alpha = 0.60, anchor = {1, 2}}, - instancebutton_config = {size = {20, 16}, anchor = {8, 0}, textcolor = {.7, .7, .7, 1}, textsize = 10, textfont = "Friz Quadrata TT", highlight_texture = [[Interface\Buttons\UI-Panel-MinimizeButton-Highlight]]}, - resetbutton_config = {size = {12, 12}, anchor = {4, 0}, normal_texture = [[Interface\Addons\Details\Images\reset_button2]], highlight_texture = [[Interface\Addons\Details\Images\reset_button2]]}, - - --resetbutton_config = {size = {8, 16}, anchor = {2, 0}}, - - menu_icons_size = 0.80, - menu2_icons_size = 1.10, - menu_anchor = {-58, 0, side = 2}, - menu_anchor_down = {-60, 0}, - menu2_anchor = {32, 3}, - menu2_anchor_down = {32, 3}, + menu_icons_size = 0.90, + menu_anchor = {16, 2, side = 2}, + menu_anchor_down = {16, -2}, plugins_grow_direction = 1, attribute_text = {enabled = true, anchor = {-20, 4}, text_face = "Friz Quadrata TT", text_size = 10, text_color = {1, 1, 1, .7}, side = 1, shadow = true}, hide_icon = true, desaturated_menu = true, - desaturated_menu2 = true, bg_alpha = 0.51, bg_r = 0.3294, @@ -873,25 +1061,15 @@ local _ --[[ for the complete cprop list see the file classe_instancia_include.lua]] instance_cprops = { - closebutton_config = {size = {20, 20}, alpha = 0.60, anchor = {1, 2}}, - instancebutton_config = {size = {20, 16}, anchor = {8, 0}, textcolor = {.7, .7, .7, 1}, textsize = 10, textfont = "Friz Quadrata TT", highlight_texture = [[Interface\Buttons\UI-Panel-MinimizeButton-Highlight]]}, - resetbutton_config = {size = {12, 12}, anchor = {4, 0}, normal_texture = [[Interface\Addons\Details\Images\reset_button2]], highlight_texture = [[Interface\Addons\Details\Images\reset_button2]]}, - - --resetbutton_config = {size = {8, 16}, anchor = {2, 0}}, - - menu_icons_size = 0.80, - menu2_icons_size = 1.10, - menu_anchor = {-58, 0, side = 2}, - menu_anchor_down = {-60, 0}, - menu2_anchor = {32, 3}, - menu2_anchor_down = {32, 3}, + menu_icons_size = 0.90, + menu_anchor = {16, 2, side = 2}, + menu_anchor_down = {16, -2}, plugins_grow_direction = 1, attribute_text = {enabled = true, anchor = {-20, 4}, text_face = "Friz Quadrata TT", text_size = 10, text_color = {1, 1, 1, .7}, side = 1, shadow = true}, hide_icon = true, desaturated_menu = true, - desaturated_menu2 = true, bg_alpha = 0.51, bg_r = 0.3294, @@ -901,7 +1079,7 @@ local _ row_info = { ["textR_outline"] = false, - ["textL_outline"] = true, + ["textL_outline"] = false, ["icon_file"] = "Interface\\AddOns\\Details\\images\\classes_small_alpha_bw", ["percent_type"] = 1, ["texture_highlight"] = "Interface\\FriendsFrame\\UI-FriendsList-Highlight", @@ -913,7 +1091,7 @@ local _ ["space"] = { ["right"] = -2, ["left"] = 1, - ["between"] = 2, + ["between"] = 0, }, ["fixed_texture_background_color"] = { 0, -- [1] @@ -922,7 +1100,7 @@ local _ 0.20, -- [4] }, ["textR_custom_text"] = "{data1} ({data2}, {data3}%)", - ["start_after_icon"] = true, + ["start_after_icon"] = false, ["font_face_file"] = "Fonts\\ARIALN.TTF", ["fixed_text_color"] = { 0.9058823529411765, -- [1] @@ -952,7 +1130,7 @@ local _ ["texture_class_colors"] = false, ["height"] = 14, ["texture_file"] = "Interface\\AddOns\\Details\\images\\bar4", - ["texture"] = "Details D'ictum", + ["texture"] = "Skyline", ["fixed_texture_color"] = { 0.8627450980392157, -- [1] 0.8627450980392157, -- [2] diff --git a/gumps/janela_options.lua b/gumps/janela_options.lua index 4f0eeba6..03b43fa7 100644 --- a/gumps/janela_options.lua +++ b/gumps/janela_options.lua @@ -8,7 +8,7 @@ 5 - row texts 6 - window settings 7 - left menu - 8 - right menu + 8 - ------------ 9 - wallpaper 10 - performance teaks 11 - raid tools @@ -5505,7 +5505,6 @@ function window:CreateFrame6() frame6.instanceToolbarSideSlider.OnSwitch = function (self, instance, value) instance.toolbar_side = value instance:ToolbarSide (side) - _G.DetailsOptionsWindow8:update_menuanchor_xy (instance) _G.DetailsOptionsWindow7:update_menuanchor_xy (instance) end frame6.instanceToolbarSideSlider.thumb:SetSize (50, 12) @@ -5798,7 +5797,7 @@ function window:CreateFrame7() frame7.pluginIconsDirectionSlider:SetPoint ("left", frame7.pluginIconsDirectionLabel, "right", 2) frame7.pluginIconsDirectionSlider.OnSwitch = function (self, instance, value) instance.plugins_grow_direction = value - instance:ToolbarMenuButtons() + instance:ToolbarMenuSetButtons() end frame7.pluginIconsDirectionSlider.thumb:SetSize (40, 12) @@ -5806,25 +5805,31 @@ function window:CreateFrame7() --> show or hide buttons local label_icons = g:NewLabel (frame7, _, "$parentShowButtonsLabel", "showButtonsLabel", Loc ["STRING_OPTIONS_MENU_SHOWBUTTONS"], "GameFontHighlightLeft") - local icon1 = g:NewImage (frame7, [[Interface\GossipFrame\HealerGossipIcon]], 20, 20, "border", nil, "icon1", nil) - local icon2 = g:NewImage (frame7, [[Interface\GossipFrame\TrainerGossipIcon]], 20, 20, "border", nil, "icon2", nil) - local icon3 = g:NewImage (frame7, [[Interface\AddOns\Details\images\sword]], 20, 20, "border", nil, "icon3", nil) - local icon4 = g:NewImage (frame7, [[Interface\COMMON\VOICECHAT-ON]], 20, 20, "border", nil, "icon4", nil) + local icon1 = g:NewImage (frame7, [[Interface\AddOns\Details\images\toolbar_icons]], 20, 20, "border", {0/256, 32/256, 0, 1}, "icon1", nil) + local icon2 = g:NewImage (frame7, [[Interface\AddOns\Details\images\toolbar_icons]], 20, 20, "border", {33/256, 64/256, 0, 1}, "icon2", nil) + local icon3 = g:NewImage (frame7, [[Interface\AddOns\Details\images\toolbar_icons]], 20, 20, "border", {64/256, 96/256, 0, 1}, "icon3", nil) + local icon4 = g:NewImage (frame7, [[Interface\AddOns\Details\images\toolbar_icons]], 20, 20, "border", {96/256, 128/256, 0, 1}, "icon4", nil) + local icon5 = g:NewImage (frame7, [[Interface\AddOns\Details\images\toolbar_icons]], 20, 20, "border", {128/256, 160/256, 0, 1}, "icon5", nil) + local icon6 = g:NewImage (frame7, [[Interface\AddOns\Details\images\toolbar_icons]], 20, 20, "border", {160/256, 192/256, 0, 1}, "icon6", nil) local X1 = g:NewImage (frame7, [[Interface\Glues\LOGIN\Glues-CheckBox-Check]], 16, 16, nil, nil, "x1", nil) local X2 = g:NewImage (frame7, [[Interface\Glues\LOGIN\Glues-CheckBox-Check]], 16, 16, nil, nil, "x2", nil) local X3 = g:NewImage (frame7, [[Interface\Glues\LOGIN\Glues-CheckBox-Check]], 16, 16, nil, nil, "x3", nil) local X4 = g:NewImage (frame7, [[Interface\Glues\LOGIN\Glues-CheckBox-Check]], 16, 16, nil, nil, "x4", nil) + local X5 = g:NewImage (frame7, [[Interface\Glues\LOGIN\Glues-CheckBox-Check]], 16, 16, nil, nil, "x5", nil) + local X6 = g:NewImage (frame7, [[Interface\Glues\LOGIN\Glues-CheckBox-Check]], 16, 16, nil, nil, "x6", nil) X1:SetVertexColor (1, 1, 1, .9) X2:SetVertexColor (1, 1, 1, .9) X3:SetVertexColor (1, 1, 1, .9) X4:SetVertexColor (1, 1, 1, .9) - local x_container = {X1, X2, X3, X4} + X5:SetVertexColor (1, 1, 1, .9) + X6:SetVertexColor (1, 1, 1, .9) + local x_container = {X1, X2, X3, X4, X5, X6} local func = function (menu_button, arg1, arg2) local instance = _G.DetailsOptionsWindow.instance instance.menu_icons [menu_button] = not instance.menu_icons [menu_button] - instance:ToolbarMenuButtons() + instance:ToolbarMenuSetButtons() if (instance.menu_icons [menu_button]) then x_container [menu_button]:Hide() @@ -5841,9 +5846,13 @@ function window:CreateFrame7() button3:InstallCustomTexture() local button4 = g:NewButton (frame7, _, "$parentShowButtons4", "showButtons4Button", 21, 21, func, 4) button4:InstallCustomTexture() + local button5 = g:NewButton (frame7, _, "$parentShowButtons5", "showButtons5Button", 21, 21, func, 5) + button5:InstallCustomTexture() + local button6 = g:NewButton (frame7, _, "$parentShowButtons6", "showButtons6Button", 21, 21, func, 6) + button6:InstallCustomTexture() function frame7:update_icon_buttons (instance) - for i = 1, 4 do + for i = 1, 6 do if (instance.menu_icons [i]) then x_container [i]:Hide() else @@ -5865,9 +5874,17 @@ function window:CreateFrame7() X3:SetPoint ("center", button3, "center") button4:SetPoint ("left", icon3, "right", 2, 0) - icon4:SetPoint ("left", icon3, "right", -2, 0) + icon4:SetPoint ("left", icon3, "right", 2, 0) X4:SetPoint ("center", button4, "center") + button5:SetPoint ("left", icon4, "right", 2, 0) + icon5:SetPoint ("left", icon4, "right", 2, 0) + X5:SetPoint ("center", button5, "center") + + button6:SetPoint ("left", icon5, "right", 2, 0) + icon6:SetPoint ("left", icon5, "right", 2, 0) + X6:SetPoint ("center", button6, "center") + window:CreateLineBackground2 (frame7, "showButtons1Button", "showButtonsLabel", Loc ["STRING_OPTIONS_MENU_SHOWBUTTONS_DESC"]) --icon sizes @@ -5940,240 +5957,10 @@ function window:CreateFrame8() local frame8 = window.options [8][1] - local titulo_toolbar2 = g:NewLabel (frame8, _, "$parentTituloToolbar_buttons", "tituloToolbarLabel", Loc ["STRING_OPTIONS_TOOLBAR2_SETTINGS"], "GameFontNormal", 16) - local titulo_toolbar2_desc = g:NewLabel (frame8, _, "$parentTituloToolbar_buttons", "tituloToolbar2Label", Loc ["STRING_OPTIONS_TOOLBAR2_SETTINGS_DESC"], "GameFontNormal", 9, "white") + local titulo_toolbar2 = g:NewLabel (frame8, _, "$parentTituloToolbar_buttons", "tituloToolbarLabel", "-- x -- x --", "GameFontNormal", 16) + local titulo_toolbar2_desc = g:NewLabel (frame8, _, "$parentTituloToolbar_buttons", "tituloToolbar2Label", "-- x -- x --", "GameFontNormal", 9, "white") titulo_toolbar2_desc.width = 320 - - --> general settings: - -- menu anchors - local s = g:NewSlider (frame8, _, "$parentMenuAnchorXSlider", "menuAnchorXSlider", SLIDER_WIDTH, 20, -200, 200, 1, instance.menu2_anchor[1]) - s:SetBackdrop (slider_backdrop) - s:SetBackdropColor (unpack (slider_backdrop_color)) - s:SetThumbSize (50) - local s = g:NewSlider (frame8, _, "$parentMenuAnchorYSlider", "menuAnchorYSlider", SLIDER_WIDTH, 20, -30, 30, 1, instance.menu2_anchor[2]) - s:SetBackdrop (slider_backdrop) - s:SetBackdropColor (unpack (slider_backdrop_color)) - s:SetThumbSize (50) - - g:NewLabel (frame8, _, "$parentMenuAnchorXLabel", "menuAnchorXLabel", Loc ["STRING_OPTIONS_MENU2_X"], "GameFontHighlightLeft") - g:NewLabel (frame8, _, "$parentMenuAnchorYLabel", "menuAnchorYLabel", Loc ["STRING_OPTIONS_MENU2_Y"], "GameFontHighlightLeft") - - frame8.menuAnchorXSlider:SetPoint ("left", frame8.menuAnchorXLabel, "right", 2, -1) - frame8.menuAnchorYSlider:SetPoint ("left", frame8.menuAnchorYLabel, "right", 2) - - frame8.menuAnchorXSlider:SetThumbSize (50) - frame8.menuAnchorXSlider:SetHook ("OnValueChange", function (self, instance, x) - instance:Menu2Anchor (x, nil) - end) - frame8.menuAnchorYSlider:SetThumbSize (50) - frame8.menuAnchorYSlider:SetHook ("OnValueChange", function (self, instance, y) - instance:Menu2Anchor (nil, y) - end) - - window:CreateLineBackground2 (frame8, "menuAnchorXSlider", "menuAnchorXLabel", Loc ["STRING_OPTIONS_MENU2_X_DESC"]) - window:CreateLineBackground2 (frame8, "menuAnchorYSlider", "menuAnchorYLabel", Loc ["STRING_OPTIONS_MENU2_X_DESC"]) - function frame8:update_menuanchor_xy (instance) - if (instance.toolbar_side == 1) then --top - frame8.menuAnchorXSlider:SetValue (instance.menu2_anchor [1]) - frame8.menuAnchorYSlider:SetValue (instance.menu2_anchor [2]) - elseif (instance.toolbar_side == 2) then --bottom - frame8.menuAnchorXSlider:SetValue (instance.menu2_anchor_down [1]) - frame8.menuAnchorYSlider:SetValue (instance.menu2_anchor_down [2]) - end - end - - -- desaturate - g:NewSwitch (frame8, _, "$parentDesaturateMenuSlider", "desaturateMenuSlider", 60, 20, _, _, instance.desaturated_menu2) - g:NewLabel (frame8, _, "$parentDesaturateMenuLabel", "desaturateMenuLabel", Loc ["STRING_OPTIONS_DESATURATE_MENU"], "GameFontHighlightLeft") - - frame8.desaturateMenuSlider:SetPoint ("left", frame8.desaturateMenuLabel, "right", 2) - frame8.desaturateMenuSlider.OnSwitch = function (self, instance, value) - instance:DesaturateMenu2 (value) - end - - window:CreateLineBackground2 (frame8, "desaturateMenuSlider", "desaturateMenuLabel", Loc ["STRING_OPTIONS_DESATURATE_MENU_DESC"]) - - --> show or hide buttons - local label_icons = g:NewLabel (frame8, _, "$parentShowButtonsLabel", "showButtonsLabel", Loc ["STRING_OPTIONS_MENU_SHOWBUTTONS"], "GameFontHighlightLeft") - local icon1 = g:NewImage (frame8, [[Interface\Buttons\UI-Panel-MinimizeButton-Up]], 20, 20, "border", nil, "icon1", nil) - local icon2 = g:NewImage (frame8, [[Interface\AddOns\Details\images\icons]], 10, 14, "border", nil, "icon2", nil) - icon2:SetTexCoord (0.248046875, 0.287109375, 0.078125, 0.12890625) --127 40 147 66 - icon2:SetVertexColor (.8, .8, .8, 1) - local icon3 = g:NewImage (frame8, [[Interface\AddOns\Details\images\reset_button]], 12, 20, "border", nil, "icon3", nil) - - local X1 = g:NewImage (frame8, [[Interface\Glues\LOGIN\Glues-CheckBox-Check]], 16, 16, nil, nil, "x1", nil) - local X2 = g:NewImage (frame8, [[Interface\Glues\LOGIN\Glues-CheckBox-Check]], 16, 16, nil, nil, "x2", nil) - local X3 = g:NewImage (frame8, [[Interface\Glues\LOGIN\Glues-CheckBox-Check]], 16, 16, nil, nil, "x3", nil) - X1:SetVertexColor (1, 1, 1, .9) - X2:SetVertexColor (1, 1, 1, .9) - X3:SetVertexColor (1, 1, 1, .9) - local x_container = {X1, X2, X3} - - local func = function (menu_button, arg1, arg2) - local instance = _G.DetailsOptionsWindow.instance - instance.menu2_icons [menu_button] = not instance.menu2_icons [menu_button] - instance:ToolbarMenu2Buttons() - - if (instance.menu2_icons [menu_button]) then - x_container [menu_button]:Hide() - else - x_container [menu_button]:Show() - end - end - - local button1 = g:NewButton (frame8, _, "$parentShowButtons1", "showButtons1Button", 21, 21, func, 1) - button1:InstallCustomTexture() - local button2 = g:NewButton (frame8, _, "$parentShowButtons2", "showButtons2Button", 21, 21, func, 2) - button2:InstallCustomTexture() - local button3 = g:NewButton (frame8, _, "$parentShowButtons3", "showButtons3Button", 21, 21, func, 3) - button3:InstallCustomTexture() - - function frame8:update_icon_buttons (instance) - for i = 1, 3 do - if (instance.menu2_icons [i]) then - x_container [i]:Hide() - else - x_container [i]:Show() - end - end - end - - button1:SetPoint ("left", label_icons, "right", 5, 0) - icon1:SetPoint ("center", button1, "center") - X1:SetPoint ("center", button1, "center") - - button2:SetPoint ("left", icon1, "right", 2, 0) - icon2:SetPoint ("center", button2, "center") - X2:SetPoint ("center", button2, "center") - - button3:SetPoint ("left", button2, "right", 2, 0) - icon3:SetPoint ("center", button3, "center") - X3:SetPoint ("center", button3, "center") - - window:CreateLineBackground2 (frame8, "showButtons1Button", "showButtonsLabel", Loc ["STRING_OPTIONS_MENU_SHOWBUTTONS_DESC"]) - - --icon sizes - local s = g:NewSlider (frame8, _, "$parentMenuIconSizeSlider", "menuIconSizeSlider", SLIDER_WIDTH, 20, 0.4, 1.6, 0.05, instance.menu_icons_size, true) - s:SetBackdrop (slider_backdrop) - s:SetBackdropColor (unpack (slider_backdrop_color)) - s.useDecimals = true - s.fine_tuning = 0.05 - - g:NewLabel (frame8, _, "$parentMenuIconSizeLabel", "menuIconSizeLabel", Loc ["STRING_OPTIONS_MENU_BUTTONSSIZE"], "GameFontHighlightLeft") - - frame8.menuIconSizeSlider:SetPoint ("left", frame8.menuIconSizeLabel, "right", 2, -1) - - frame8.menuIconSizeSlider:SetHook ("OnValueChange", function (self, instance, value) - instance:ToolbarMenu2ButtonsSize (value) - end) - - window:CreateLineBackground2 (frame8, "menuIconSizeSlider", "menuIconSizeLabel", Loc ["STRING_OPTIONS_MENU_BUTTONSSIZE_DESC"]) - - --> instance button - --text size - local s = g:NewSlider (frame8, _, "$parentInstanceTextSizeSlider", "instanceTextSizeSlider", SLIDER_WIDTH, 20, 8, 32, 1, tonumber (instance.instancebutton_config.textsize)) - s:SetBackdrop (slider_backdrop) - s:SetBackdropColor (unpack (slider_backdrop_color)) - s:SetThumbSize (50) - - frame8.instanceTextSizeSlider:SetHook ("OnValueChange", function (self, instance, amount) - instance:ToolbarMenu2InstanceButtonSettings (nil, nil, amount, nil) - end) - - g:NewLabel (frame8, _, "$parentInstanceTextSizeLabel", "instanceTextSizeLabel", Loc ["STRING_OPTIONS_INSTANCE_TEXTSIZE"], "GameFontHighlightLeft") - frame8.instanceTextSizeSlider:SetPoint ("left", frame8.instanceTextSizeLabel, "right", 2) - - window:CreateLineBackground2 (frame8, "instanceTextSizeSlider", "instanceTextSizeLabel", Loc ["STRING_OPTIONS_INSTANCE_TEXTSIZE_DESC"]) - - --text face - local instance_text_color_onselectfont = function (_, instance, fontName) - instance:ToolbarMenu2InstanceButtonSettings (nil, fontName, nil, nil) - end - local instance_text_color_build_font_menu = function() - local fontObjects = SharedMedia:HashTable ("font") - local fontTable = {} - for name, fontPath in pairs (fontObjects) do - fontTable[#fontTable+1] = {value = name, label = name, icon = font_select_icon, texcoord = font_select_texcoord, onclick = instance_text_color_onselectfont, font = fontPath, descfont = name, desc = "If there's a bustle in your hedgerow, don't be alarmed now\nIt's just a spring clean for the may queen."} - end - table.sort (fontTable, function (t1, t2) return t1.label < t2.label end) - return fontTable - end - local d = g:NewDropDown (frame8, _, "$parentInstanceTextFontDropdown", "instanceTextFontDropdown", DROPDOWN_WIDTH, 20, instance_text_color_build_font_menu, nil) - d.onenter_backdrop = dropdown_backdrop_onenter - d.onleave_backdrop = dropdown_backdrop_onleave - d:SetBackdrop (dropdown_backdrop) - d:SetBackdropColor (unpack (dropdown_backdrop_onleave)) - - g:NewLabel (frame8, _, "$parentInstanceTextFontLabel", "instanceTextFontLabel", Loc ["STRING_OPTIONS_INSTANCE_TEXTFONT"], "GameFontHighlightLeft") - frame8.instanceTextFontDropdown:SetPoint ("left", frame8.instanceTextFontLabel, "right", 2) - - window:CreateLineBackground2 (frame8, "instanceTextFontDropdown", "instanceTextFontLabel", Loc ["STRING_OPTIONS_INSTANCE_TEXTCOLOR_DESC"]) - - -- text color - local instance_textcolor_callback = function (button, r, g, b, a) - _G.DetailsOptionsWindow.instance:ToolbarMenu2InstanceButtonSettings ({r, g, b, a}, nil, nil, nil) - end - g:NewColorPickButton (frame8, "$parentInstanceTextColorPick", "instanceTextColorPick", instance_textcolor_callback) - g:NewLabel (frame8, _, "$parentInstanceTextLabel", "instanceTextColorPickLabel", Loc ["STRING_OPTIONS_INSTANCE_TEXTCOLOR"], "GameFontHighlightLeft") - frame8.instanceTextColorPick:SetPoint ("left", frame8.instanceTextColorPickLabel, "right", 2, 0) - - window:CreateLineBackground2 (frame8, "instanceTextColorPick", "instanceTextColorPickLabel", Loc ["STRING_OPTIONS_RESET_OVERLAY_DESC"]) - - --text shadow - g:NewLabel (frame8, _, "$parentInstanceTextShadowLabel", "instanceTextShadowLabel", Loc ["STRING_OPTIONS_MENU_ATTRIBUTE_SHADOW"], "GameFontHighlightLeft") - g:NewSwitch (frame8, _, "$parentInstanceTexShadowtSwitch", "instanceTextShadowSwitch", 60, 20, nil, nil, instance.instancebutton_config.textshadow) - frame8.instanceTextShadowSwitch:SetPoint ("left", frame8.instanceTextShadowLabel, "right", 2) - frame8.instanceTextShadowSwitch.OnSwitch = function (self, instance, value) - instance:ToolbarMenu2InstanceButtonSettings (nil, nil, nil, value) - end - window:CreateLineBackground2 (frame8, "instanceTextShadowSwitch", "instanceTextShadowLabel", Loc ["STRING_OPTIONS_MENU_ATTRIBUTE_SHADOW_DESC"]) - - --> auto hide menu - g:NewLabel (frame8, _, "$parentAutoHideRightMenuLabel", "autoHideRightMenuLabel", Loc ["STRING_OPTIONS_MENU_AUTOHIDE_RIGHT"], "GameFontHighlightLeft") - g:NewSwitch (frame8, _, "$parentAutoHideRightMenuSwitch", "autoHideRightMenuSwitch", 60, 20, nil, nil, instance.auto_hide_menu.right) - frame8.autoHideRightMenuSwitch:SetPoint ("left", frame8.autoHideRightMenuLabel, "right", 2) - frame8.autoHideRightMenuSwitch.OnSwitch = function (self, instance, value) - --do something - instance:SetAutoHideMenu (nil, value) - end - window:CreateLineBackground2 (frame8, "autoHideRightMenuSwitch", "autoHideRightMenuLabel", Loc ["STRING_OPTIONS_MENU_AUTOHIDE_DESC"]) - - --> Anchors - - --general anchor - g:NewLabel (frame8, _, "$parentRightMenuAnchor", "RightMenuAnchorLabel", Loc ["STRING_OPTIONS_LEFT_MENU_ANCHOR"], "GameFontNormal") - - local x = window.left_start_at - - titulo_toolbar2:SetPoint (x, -30) - titulo_toolbar2_desc:SetPoint (x, -50) - - local left_side = { - {"RightMenuAnchorLabel", 1, true}, - {"showButtonsLabel", 2}, - {"menuIconSizeLabel", 3}, - {"desaturateMenuLabel", 4}, - {"menuAnchorXLabel", 5}, - {"menuAnchorYLabel", 6}, - - {"autoHideRightMenuLabel", 7, true}, - } - - window:arrange_menu (frame8, left_side, x, -90) - - g:NewLabel (frame8, _, "$parentInstanceButtonAnchor", "instanceAnchorLabel", Loc ["STRING_OPTIONS_INSTANCE_BUTTON_ANCHOR"], "GameFontNormal") - - local right_menu = { - {"instanceAnchorLabel", 1, true}, - {"instanceTextColorPickLabel", 2}, - {"instanceTextFontLabel", 3}, - {"instanceTextSizeLabel", 4}, - {"instanceTextShadowLabel", 5}, - } - - window:arrange_menu (frame8, right_menu, window.right_start_at, -90) - end --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- @@ -8306,29 +8093,7 @@ end --> if not window --> window 8 - _G.DetailsOptionsWindow8MenuAnchorXSlider.MyObject:SetFixedParameter (editing_instance) - _G.DetailsOptionsWindow8MenuAnchorYSlider.MyObject:SetFixedParameter (editing_instance) - _G.DetailsOptionsWindow8:update_menuanchor_xy (editing_instance) - - _G.DetailsOptionsWindow8DesaturateMenuSlider.MyObject:SetFixedParameter (editing_instance) - _G.DetailsOptionsWindow8DesaturateMenuSlider.MyObject:SetValue (editing_instance.desaturated_menu2) - - _G.DetailsOptionsWindow8MenuIconSizeSlider.MyObject:SetFixedParameter (editing_instance) - _G.DetailsOptionsWindow8MenuIconSizeSlider.MyObject:SetValue (editing_instance.menu2_icons_size) - - _G.DetailsOptionsWindow8:update_icon_buttons (editing_instance) - - _G.DetailsOptionsWindow8AutoHideRightMenuSwitch.MyObject:SetFixedParameter (editing_instance) - _G.DetailsOptionsWindow8AutoHideRightMenuSwitch.MyObject:SetValue (editing_instance.auto_hide_menu.right) - - _G.DetailsOptionsWindow8InstanceTextFontDropdown.MyObject:SetFixedParameter (editing_instance) - _G.DetailsOptionsWindow8InstanceTextSizeSlider.MyObject:SetFixedParameter (editing_instance) - _G.DetailsOptionsWindow8InstanceTexShadowtSwitch.MyObject:SetFixedParameter (editing_instance) - - _G.DetailsOptionsWindow8InstanceTextColorPick.MyObject:SetColor (unpack (editing_instance.instancebutton_config.textcolor)) - _G.DetailsOptionsWindow8InstanceTextSizeSlider.MyObject:SetValue (editing_instance.instancebutton_config.textsize) - _G.DetailsOptionsWindow8InstanceTextFontDropdown.MyObject:Select (editing_instance.instancebutton_config.textfont) - _G.DetailsOptionsWindow8InstanceTexShadowtSwitch.MyObject:SetValue (editing_instance.instancebutton_config.textshadow) +-- _G.DetailsOptionsWindow8 --instanceTextColorLabel diff --git a/gumps/janela_principal.lua b/gumps/janela_principal.lua index 7b80092e..17fffd10 100644 --- a/gumps/janela_principal.lua +++ b/gumps/janela_principal.lua @@ -482,158 +482,230 @@ local update_line = function (self, target_frame) end -local tempo_movendo, precisa_ativar, instancia_alvo, tempo_fades, nao_anexados, flash_bounce, start_draw_lines +local show_instance_ids = function() + + for id, instance in _detalhes:ListInstances() do + if (instance:IsEnabled()) then + local id_texture1 = instance.baseframe.id_texture1 + if (not id_texture1) then + instance.baseframe.id_texture1 = instance.baseframe:CreateTexture (nil, "overlay") + instance.baseframe.id_texture2 = instance.baseframe:CreateTexture (nil, "overlay") + instance.baseframe.id_texture1:SetTexture ([[Interface\Timer\BigTimerNumbers]]) + instance.baseframe.id_texture2:SetTexture ([[Interface\Timer\BigTimerNumbers]]) + end + + local h = instance.baseframe:GetHeight() * 0.80 + instance.baseframe.id_texture1:SetSize (h, h) + instance.baseframe.id_texture2:SetSize (h, h) + + local id = instance:GetId() + + local first, second = _math_floor (id/10), _math_floor (id%10) + + if (id >= 10) then + instance.baseframe.id_texture1:SetPoint ("center", instance.baseframe, "center", -h/2/2, 0) + instance.baseframe.id_texture2:SetPoint ("left", instance.baseframe.id_texture1, "right", -h/2, 0) + + first = first + 1 + local line = _math_ceil (first / 4) + local x = ( first - ( (line-1) * 4 ) ) / 4 + local l, r, t, b = x-0.25, x, 0.33 * (line-1), 0.33 * line + instance.baseframe.id_texture1:SetTexCoord (l, r, t, b) + + second = second + 1 + local line = _math_ceil (second / 4) + local x = ( second - ( (line-1) * 4 ) ) / 4 + local l, r, t, b = x-0.25, x, 0.33 * (line-1), 0.33 * line + instance.baseframe.id_texture2:SetTexCoord (l, r, t, b) + + instance.baseframe.id_texture1:Show() + instance.baseframe.id_texture2:Show() + else + instance.baseframe.id_texture1:SetPoint ("center", instance.baseframe, "center") + + second = second + 1 + local line = _math_ceil (second / 4) + local x = ( second - ( (line-1) * 4 ) ) / 4 + local l, r, t, b = x-0.25, x, 0.33 * (line-1), 0.33 * line + instance.baseframe.id_texture1:SetTexCoord (l, r, t, b) + + instance.baseframe.id_texture1:Show() + instance.baseframe.id_texture2:Hide() + end + + end + end + +end + +local tempo_movendo, precisa_ativar, instancia_alvo, tempo_fades, nao_anexados, flash_bounce, start_draw_lines, instance_ids_shown, need_show_group_guide local movement_onupdate = function (self, elapsed) - if (start_draw_lines and start_draw_lines > 0.95) then - update_line (self, instancia_alvo.baseframe) - elseif (start_draw_lines) then - start_draw_lines = start_draw_lines + elapsed - end + if (start_draw_lines and start_draw_lines > 0.95) then + update_line (self, instancia_alvo.baseframe) + elseif (start_draw_lines) then + start_draw_lines = start_draw_lines + elapsed + end - if (tempo_movendo and tempo_movendo < 0) then + if (instance_ids_shown and instance_ids_shown > 0.95) then + show_instance_ids() + instance_ids_shown = nil + + if (need_show_group_guide) then + _detalhes.MicroButtonAlert.Text:SetText (Loc ["STRING_WINDOW1ATACH_DESC"]) + _detalhes.MicroButtonAlert:SetPoint ("bottom", need_show_group_guide.baseframe, "top", 0, 30) + _detalhes.MicroButtonAlert:SetHeight (320) + _detalhes.MicroButtonAlert:Show() + + need_show_group_guide = nil + end + elseif (instance_ids_shown) then + instance_ids_shown = instance_ids_shown + elapsed + end + + if (tempo_movendo and tempo_movendo < 0) then - if (precisa_ativar) then --> se a instância estiver fechada - gump:Fade (instancia_alvo.baseframe, "ALPHA", 0.2) - gump:Fade (instancia_alvo.baseframe.cabecalho.ball, "ALPHA", 0.2) - gump:Fade (instancia_alvo.baseframe.cabecalho.atributo_icon, "ALPHA", 0.2) - instancia_alvo:SaveMainWindowPosition() - instancia_alvo:RestoreMainWindowPosition() - precisa_ativar = false - - elseif (tempo_fades) then + if (precisa_ativar) then --> se a instância estiver fechada + gump:Fade (instancia_alvo.baseframe, "ALPHA", 0.2) + gump:Fade (instancia_alvo.baseframe.cabecalho.ball, "ALPHA", 0.2) + gump:Fade (instancia_alvo.baseframe.cabecalho.atributo_icon, "ALPHA", 0.2) + instancia_alvo:SaveMainWindowPosition() + instancia_alvo:RestoreMainWindowPosition() + precisa_ativar = false + + elseif (tempo_fades) then + + if (flash_bounce == 0) then + + flash_bounce = 1 + + local tem_livre = false - if (flash_bounce == 0) then - - flash_bounce = 1 - - local tem_livre = false + for lado, livre in _ipairs (nao_anexados) do + if (livre) then + if (lado == 1) then - for lado, livre in _ipairs (nao_anexados) do - if (livre) then - if (lado == 1) then - - local texture = instancia_alvo.h_esquerda.texture - texture:ClearAllPoints() - - if (instancia_alvo.toolbar_side == 1) then - if (instancia_alvo.show_statusbar) then - texture:SetPoint ("topright", instancia_alvo.baseframe, "topleft", 0, 20) - texture:SetPoint ("bottomright", instancia_alvo.baseframe, "bottomleft", 0, -14) - else - texture:SetPoint ("topright", instancia_alvo.baseframe, "topleft", 0, 20) - texture:SetPoint ("bottomright", instancia_alvo.baseframe, "bottomleft", 0, 0) - end - else - if (instancia_alvo.show_statusbar) then - texture:SetPoint ("topright", instancia_alvo.baseframe, "topleft", 0, 0) - texture:SetPoint ("bottomright", instancia_alvo.baseframe, "bottomleft", 0, -34) - else - texture:SetPoint ("topright", instancia_alvo.baseframe, "topleft", 0, 0) - texture:SetPoint ("bottomright", instancia_alvo.baseframe, "bottomleft", 0, -20) - end - end - - instancia_alvo.h_esquerda:Flash (1, 1, 2.0, false, 0, 0) - tem_livre = true - - elseif (lado == 2) then - - - local texture = instancia_alvo.h_baixo.texture - texture:ClearAllPoints() - - if (instancia_alvo.toolbar_side == 1) then - if (instancia_alvo.show_statusbar) then - texture:SetPoint ("topleft", instancia_alvo.baseframe, "bottomleft", 0, -14) - texture:SetPoint ("topright", instancia_alvo.baseframe, "bottomright", 0, -14) - else - texture:SetPoint ("topleft", instancia_alvo.baseframe, "bottomleft", 0, 0) - texture:SetPoint ("topright", instancia_alvo.baseframe, "bottomright", 0, 0) - end - else - if (instancia_alvo.show_statusbar) then - texture:SetPoint ("topleft", instancia_alvo.baseframe, "bottomleft", 0, -34) - texture:SetPoint ("topright", instancia_alvo.baseframe, "bottomright", 0, -34) - else - texture:SetPoint ("topleft", instancia_alvo.baseframe, "bottomleft", 0, -20) - texture:SetPoint ("topright", instancia_alvo.baseframe, "bottomright", 0, -20) - end - end - - instancia_alvo.h_baixo:Flash (1, 1, 2.0, false, 0, 0) - tem_livre = true - - elseif (lado == 3) then - - local texture = instancia_alvo.h_direita.texture - texture:ClearAllPoints() - - if (instancia_alvo.toolbar_side == 1) then - if (instancia_alvo.show_statusbar) then - texture:SetPoint ("topleft", instancia_alvo.baseframe, "topright", 0, 20) - texture:SetPoint ("bottomleft", instancia_alvo.baseframe, "bottomright", 0, -14) - else - texture:SetPoint ("topleft", instancia_alvo.baseframe, "topright", 0, 20) - texture:SetPoint ("bottomleft", instancia_alvo.baseframe, "bottomright", 0, 0) - end - else - if (instancia_alvo.show_statusbar) then - texture:SetPoint ("topleft", instancia_alvo.baseframe, "topright", 0, 0) - texture:SetPoint ("bottomleft", instancia_alvo.baseframe, "bottomright", 0, -34) - else - texture:SetPoint ("topleft", instancia_alvo.baseframe, "topright", 0, 0) - texture:SetPoint ("bottomleft", instancia_alvo.baseframe, "bottomright", 0, -20) - end - end - - instancia_alvo.h_direita:Flash (1, 1, 2.0, false, 0, 0) - tem_livre = true - - elseif (lado == 4) then - - local texture = instancia_alvo.h_cima.texture - texture:ClearAllPoints() - - if (instancia_alvo.toolbar_side == 1) then - texture:SetPoint ("bottomleft", instancia_alvo.baseframe, "topleft", 0, 20) - texture:SetPoint ("bottomright", instancia_alvo.baseframe, "topright", 0, 20) - else - texture:SetPoint ("bottomleft", instancia_alvo.baseframe, "topleft", 0, 0) - texture:SetPoint ("bottomright", instancia_alvo.baseframe, "topright", 0, 0) - end - - instancia_alvo.h_cima:Flash (1, 1, 2.0, false, 0, 0) - tem_livre = true - + local texture = instancia_alvo.h_esquerda.texture + texture:ClearAllPoints() + + if (instancia_alvo.toolbar_side == 1) then + if (instancia_alvo.show_statusbar) then + texture:SetPoint ("topright", instancia_alvo.baseframe, "topleft", 0, 20) + texture:SetPoint ("bottomright", instancia_alvo.baseframe, "bottomleft", 0, -14) + else + texture:SetPoint ("topright", instancia_alvo.baseframe, "topleft", 0, 20) + texture:SetPoint ("bottomright", instancia_alvo.baseframe, "bottomleft", 0, 0) + end + else + if (instancia_alvo.show_statusbar) then + texture:SetPoint ("topright", instancia_alvo.baseframe, "topleft", 0, 0) + texture:SetPoint ("bottomright", instancia_alvo.baseframe, "bottomleft", 0, -34) + else + texture:SetPoint ("topright", instancia_alvo.baseframe, "topleft", 0, 0) + texture:SetPoint ("bottomright", instancia_alvo.baseframe, "bottomleft", 0, -20) end end - end - if (tem_livre) then - if (not _detalhes.snap_alert.playing) then - instancia_alvo:SnapAlert() - _detalhes.snap_alert.playing = true - - _detalhes.MicroButtonAlert.Text:SetText (string.format (Loc ["STRING_ATACH_DESC"], self.instance.meu_id, instancia_alvo.meu_id)) - _detalhes.MicroButtonAlert:SetPoint ("bottom", instancia_alvo.baseframe.cabecalho.novo, "top", 0, 18) - _detalhes.MicroButtonAlert:SetHeight (200) - _detalhes.MicroButtonAlert:Show() + instancia_alvo.h_esquerda:Flash (1, 1, 2.0, false, 0, 0) + tem_livre = true + + elseif (lado == 2) then + + + local texture = instancia_alvo.h_baixo.texture + texture:ClearAllPoints() + + if (instancia_alvo.toolbar_side == 1) then + if (instancia_alvo.show_statusbar) then + texture:SetPoint ("topleft", instancia_alvo.baseframe, "bottomleft", 0, -14) + texture:SetPoint ("topright", instancia_alvo.baseframe, "bottomright", 0, -14) + else + texture:SetPoint ("topleft", instancia_alvo.baseframe, "bottomleft", 0, 0) + texture:SetPoint ("topright", instancia_alvo.baseframe, "bottomright", 0, 0) + end + else + if (instancia_alvo.show_statusbar) then + texture:SetPoint ("topleft", instancia_alvo.baseframe, "bottomleft", 0, -34) + texture:SetPoint ("topright", instancia_alvo.baseframe, "bottomright", 0, -34) + else + texture:SetPoint ("topleft", instancia_alvo.baseframe, "bottomleft", 0, -20) + texture:SetPoint ("topright", instancia_alvo.baseframe, "bottomright", 0, -20) + end end + + instancia_alvo.h_baixo:Flash (1, 1, 2.0, false, 0, 0) + tem_livre = true + + elseif (lado == 3) then + + local texture = instancia_alvo.h_direita.texture + texture:ClearAllPoints() + + if (instancia_alvo.toolbar_side == 1) then + if (instancia_alvo.show_statusbar) then + texture:SetPoint ("topleft", instancia_alvo.baseframe, "topright", 0, 20) + texture:SetPoint ("bottomleft", instancia_alvo.baseframe, "bottomright", 0, -14) + else + texture:SetPoint ("topleft", instancia_alvo.baseframe, "topright", 0, 20) + texture:SetPoint ("bottomleft", instancia_alvo.baseframe, "bottomright", 0, 0) + end + else + if (instancia_alvo.show_statusbar) then + texture:SetPoint ("topleft", instancia_alvo.baseframe, "topright", 0, 0) + texture:SetPoint ("bottomleft", instancia_alvo.baseframe, "bottomright", 0, -34) + else + texture:SetPoint ("topleft", instancia_alvo.baseframe, "topright", 0, 0) + texture:SetPoint ("bottomleft", instancia_alvo.baseframe, "bottomright", 0, -20) + end + end + + instancia_alvo.h_direita:Flash (1, 1, 2.0, false, 0, 0) + tem_livre = true + + elseif (lado == 4) then + + local texture = instancia_alvo.h_cima.texture + texture:ClearAllPoints() + + if (instancia_alvo.toolbar_side == 1) then + texture:SetPoint ("bottomleft", instancia_alvo.baseframe, "topleft", 0, 20) + texture:SetPoint ("bottomright", instancia_alvo.baseframe, "topright", 0, 20) + else + texture:SetPoint ("bottomleft", instancia_alvo.baseframe, "topleft", 0, 0) + texture:SetPoint ("bottomright", instancia_alvo.baseframe, "topright", 0, 0) + end + + instancia_alvo.h_cima:Flash (1, 1, 2.0, false, 0, 0) + tem_livre = true + end end - - tempo_movendo = 1 - else - self:SetScript ("OnUpdate", nil) - tempo_movendo = 1 end - else - tempo_movendo = tempo_movendo - elapsed + if (tem_livre) then + if (not _detalhes.snap_alert.playing) then + instancia_alvo:SnapAlert() + _detalhes.snap_alert.playing = true + + _detalhes.MicroButtonAlert.Text:SetText (string.format (Loc ["STRING_ATACH_DESC"], self.instance.meu_id, instancia_alvo.meu_id)) + _detalhes.MicroButtonAlert:SetPoint ("bottom", instancia_alvo.baseframe.cabecalho.modo_selecao.widget, "top", 0, 18) + _detalhes.MicroButtonAlert:SetHeight (200) + _detalhes.MicroButtonAlert:Show() + end + end end + + tempo_movendo = 1 + else + self:SetScript ("OnUpdate", nil) + tempo_movendo = 1 end + + elseif (tempo_movendo) then + tempo_movendo = tempo_movendo - elapsed + end + end local function move_janela (baseframe, iniciando, instancia) @@ -643,7 +715,7 @@ local function move_janela (baseframe, iniciando, instancia) end if (iniciando) then - + if (baseframe.isMoving) then --> ja esta em movimento return @@ -670,8 +742,10 @@ local function move_janela (baseframe, iniciando, instancia) nao_anexados = {true, true, true, true} tempo_movendo = 1 flash_bounce = 0 - + instance_ids_shown = 0 start_draw_lines = 0 + need_show_group_guide = nil + for lado, snap_to in _pairs (instancia_alvo.snap) do if (snap_to == instancia.meu_id) then start_draw_lines = false @@ -724,6 +798,25 @@ local function move_janela (baseframe, iniciando, instancia) need_start = false end + baseframe:SetScript ("OnUpdate", movement_onupdate) + else + --> eh a instancia 1 + local got_snap + for side, instance_id in _pairs (instancia.snap) do + if (instance_id) then + got_snap = true + end + end + + need_show_group_guide = nil + + if (not got_snap) then + need_show_group_guide = instancia + end + + tempo_movendo = nil + start_draw_lines = nil + instance_ids_shown = 0 baseframe:SetScript ("OnUpdate", movement_onupdate) end @@ -742,9 +835,13 @@ local function move_janela (baseframe, iniciando, instancia) for _, ins in _detalhes:ListInstances() do if (ins.baseframe) then ins.baseframe:SetUserPlaced (false) + if (ins.baseframe.id_texture1) then + ins.baseframe.id_texture1:Hide() + ins.baseframe.id_texture2:Hide() + end end end - + --baseframe:SetClampRectInsets (unpack (_detalhes.window_clamp)) if (instancia_alvo) then @@ -2491,8 +2588,8 @@ _detalhes.snap_alert:SetFrameStrata ("FULLSCREEN") function _detalhes:SnapAlert() _detalhes.snap_alert:ClearAllPoints() - _detalhes.snap_alert:SetPoint ("topleft", self.baseframe.cabecalho.novo, "topleft", -8, 6) - _detalhes.snap_alert:SetPoint ("bottomright", self.baseframe.cabecalho.novo, "bottomright", 8, -6) + _detalhes.snap_alert:SetPoint ("topleft", self.baseframe.cabecalho.modo_selecao.widget, "topleft", -8, 6) + _detalhes.snap_alert:SetPoint ("bottomright", self.baseframe.cabecalho.modo_selecao.widget, "bottomright", 8, -6) _detalhes.snap_alert.animOut:Stop() _detalhes.snap_alert.animIn:Play() end @@ -3753,7 +3850,7 @@ function _detalhes:InstanceButtonsColors (red, green, blue, alpha, no_save, only if (only_left) then - local icons = {baseToolbar.modo_selecao, baseToolbar.segmento, baseToolbar.atributo, baseToolbar.report} + local icons = {baseToolbar.modo_selecao, baseToolbar.segmento, baseToolbar.atributo, baseToolbar.report, baseToolbar.fechar, baseToolbar.reset, baseToolbar.fechar} for _, button in _ipairs (icons) do button:SetAlpha (alpha) @@ -4012,40 +4109,6 @@ function gump:CriaRodape (baseframe, instancia) BGFrame_scripts (baseframe.DOWNFrame, baseframe, instancia) end -function _detalhes:CheckConsolidates() - for meu_id, instancia in ipairs (_detalhes.tabela_instancias) do - if (instancia.consolidate and meu_id ~= _detalhes.lower_instance) then - instancia:UnConsolidateIcons() - end - end -end - -function _detalhes:ConsolidateIcons() - - self.consolidate = true - - self.consolidateButton:Show() - - self:ToolbarMenuButtons() - - return self:MenuAnchor() -end - -function _detalhes:UnConsolidateIcons() - - self.consolidate = false - - if (not self.consolidateButton) then - return self:ToolbarMenuButtons() - end - - self.consolidateButton:Hide() - - self:ToolbarMenuButtons() - - return self:MenuAnchor() -end - function _detalhes:GetMenuAnchorPoint() local toolbar_side = self.toolbar_side local menu_side = self.menu_anchor.side @@ -4064,14 +4127,6 @@ function _detalhes:GetMenuAnchorPoint() end end end -function _detalhes:GetMenu2AnchorPoint() - local toolbar_side = self.toolbar_side - if (toolbar_side == 1) then --top - return self.menu2_points [1], "topright", "bottomleft" - elseif (toolbar_side == 2) then --bottom - return self.menu2_points [1], "topleft", "topleft" - end -end --> search key: ~icon function _detalhes:ToolbarMenuButtonsSize (size) @@ -4079,11 +4134,6 @@ function _detalhes:ToolbarMenuButtonsSize (size) self.menu_icons_size = size return self:ToolbarMenuButtons() end -function _detalhes:ToolbarMenu2ButtonsSize (size) - size = size or self.menu2_icons_size - self.menu2_icons_size = size - return self:ToolbarMenu2Buttons() -end local SetIconAlphaCacheButtonsTable = {} function _detalhes:SetIconAlpha (alpha, hide, no_animations) @@ -4109,6 +4159,8 @@ function _detalhes:SetIconAlpha (alpha, hide, no_animations) SetIconAlphaCacheButtonsTable [2] = self.baseframe.cabecalho.segmento SetIconAlphaCacheButtonsTable [3] = self.baseframe.cabecalho.atributo SetIconAlphaCacheButtonsTable [4] = self.baseframe.cabecalho.report + SetIconAlphaCacheButtonsTable [5] = self.baseframe.cabecalho.reset + SetIconAlphaCacheButtonsTable [6] = self.baseframe.cabecalho.fechar for index, button in _ipairs (SetIconAlphaCacheButtonsTable) do if (self.menu_icons [index]) then @@ -4124,25 +4176,6 @@ function _detalhes:SetIconAlpha (alpha, hide, no_animations) end end - table.wipe (SetIconAlphaCacheButtonsTable) - SetIconAlphaCacheButtonsTable [1] = self.baseframe.cabecalho.fechar - SetIconAlphaCacheButtonsTable [2] = self.baseframe.cabecalho.novo - SetIconAlphaCacheButtonsTable [3] = self.baseframe.cabecalho.reset - - for index, button in _ipairs (SetIconAlphaCacheButtonsTable) do - if (self.menu2_icons [index]) then - if (hide) then - gump:Fade (button, _unpack (_detalhes.windows_fade_in)) - else - if (no_animations) then - button:SetAlpha (alpha) - else - gump:Fade (button, "ALPHAANIM", alpha) - end - end - end - end - if (self:IsLowerInstance()) then if (#_detalhes.ToolBar.Shown > 0) then for index, button in ipairs (_detalhes.ToolBar.Shown) do @@ -4160,8 +4193,140 @@ function _detalhes:SetIconAlpha (alpha, hide, no_animations) end end +local tbuttons = {} +function _detalhes:ToolbarMenuSetButtons (_mode, _segment, _attributes, _report, _reset, _close) + + if (_mode == nil) then + _mode = self.menu_icons[1] + end + if (_segment == nil) then + _segment = self.menu_icons[2] + end + if (_attributes == nil) then + _attributes = self.menu_icons[3] + end + if (_report == nil) then + _report = self.menu_icons[4] + end + if (_reset == nil) then + _reset = self.menu_icons[5] + end + if (_close == nil) then + _close = self.menu_icons[6] + end + + self.menu_icons[1] = _mode + self.menu_icons[2] = _segment + self.menu_icons[3] = _attributes + self.menu_icons[4] = _report + self.menu_icons[5] = _reset + self.menu_icons[6] = _close + + table.wipe (tbuttons) + + tbuttons [1] = self.baseframe.cabecalho.modo_selecao + tbuttons [2] = self.baseframe.cabecalho.segmento + tbuttons [3] = self.baseframe.cabecalho.atributo + tbuttons [4] = self.baseframe.cabecalho.report + tbuttons [5] = self.baseframe.cabecalho.reset + tbuttons [6] = self.baseframe.cabecalho.fechar + + local anchor_frame, point1, point2 = self:GetMenuAnchorPoint() + local got_anchor = false + self.lastIcon = nil + + local size = self.menu_icons_size + + --> normal buttons + + if (self.menu_anchor.side == 1) then + for index, button in _ipairs (tbuttons) do + if (self.menu_icons [index]) then + button:ClearAllPoints() + if (got_anchor) then + button:SetPoint ("left", self.lastIcon.widget or self.lastIcon, "right", -3, 0) + else + button:SetPoint (point1, anchor_frame, point2) + got_anchor = button + end + self.lastIcon = button + button:SetParent (self.baseframe) + button:SetFrameLevel (self.baseframe.UPFrame:GetFrameLevel()+1) + button:Show() + + button:SetSize (16*size, 16*size) + else + button:Hide() + end + end + + elseif (self.menu_anchor.side == 2) then + for index = #tbuttons, 1, -1 do + local button = tbuttons [index] + + if (self.menu_icons [index]) then + button:ClearAllPoints() + if (got_anchor) then + button:SetPoint ("right", self.lastIcon.widget or self.lastIcon, "left", 3, 0) + else + button:SetPoint (point1, anchor_frame, point2) + got_anchor = button + end + self.lastIcon = button + button:SetParent (self.baseframe) + button:SetFrameLevel (self.baseframe.UPFrame:GetFrameLevel()+1) + button:Show() + + button:SetSize (16*size, 16*size) + else + button:Hide() + end + end + end + + --> plugins buttons + if (self:IsLowerInstance()) then + if (#_detalhes.ToolBar.Shown > 0) then + for index, button in ipairs (_detalhes.ToolBar.Shown) do + button:ClearAllPoints() + if (got_anchor) then + if (self.plugins_grow_direction == 2) then --right (default) + if (self.lastIcon == buttons[4]) then + button:SetPoint ("left", self.lastIcon.widget or self.lastIcon, "right", 2, 0) --, button.x, button.y + else + button:SetPoint ("left", self.lastIcon.widget or self.lastIcon, "right") --, button.x, button.y + end + elseif (self.plugins_grow_direction == 1) then --left + if (index == 1) then + button:SetPoint ("right", got_anchor.widget or got_anchor, "left") --, button.x, button.y + else + button:SetPoint ("right", self.lastIcon.widget or self.lastIcon, "left") --, button.x, button.y + end + end + else + button:SetPoint (point1, anchor_frame, point2) + got_anchor = button + end + self.lastIcon = button + button:SetParent (self.baseframe) + button:SetFrameLevel (self.baseframe.UPFrame:GetFrameLevel()+1) + button:Show() + + button:SetSize (16*size, 16*size) + end + end + end + + return true + +end + function _detalhes:ToolbarMenuButtons (_mode, _segment, _attributes, _report) + if (true) then + return self:ToolbarMenuSetButtons (_mode, _segment, _attributes, _report) + end + if (_mode == nil) then _mode = self.menu_icons[1] end @@ -4249,157 +4414,6 @@ function _detalhes:ToolbarMenuButtons (_mode, _segment, _attributes, _report) return true end -function _detalhes:ToolbarMenu2Buttons (_close, _instance, _reset) - if (_close == nil) then - _close = self.menu2_icons[1] - end - if (_instance == nil) then - _instance = self.menu2_icons[2] - end - if (_reset == nil) then - _reset = self.menu2_icons[3] - end - - self.menu2_icons[1] = _close - self.menu2_icons[2] = _instance - self.menu2_icons[3] = _reset - - local buttons = {self.baseframe.cabecalho.fechar, self.baseframe.cabecalho.novo, self.baseframe.cabecalho.reset} - local config = {self.closebutton_config, self.instancebutton_config, self.resetbutton_config} - - local anchor_frame, point1, point2 = self:GetMenu2AnchorPoint() -- self.menu2_points [1], "topleft", "bottomleft" - local got_anchor = false - local lastIcon = nil - - local size = self.menu2_icons_size - local default_texcoord = {0, 1, 0, 1} - local default_vertexcolor = {1, 1, 1, 1} - --> normal buttons - for index, button in ipairs (buttons) do - if (self.menu2_icons [index]) then - - local button_config = config [index] - button:ClearAllPoints() - - if (got_anchor) then - button:SetPoint ("right", lastIcon, "left", button_config.anchor [1], button_config.anchor [2]) - else - button:SetPoint (point1, anchor_frame, point2, button_config.anchor [1], button_config.anchor [2]) - got_anchor = button - end - - button:SetSize (button_config.size[1] * size, button_config.size[2] * size) - - local normal_texture = button:GetNormalTexture() - local highlight_texture = button:GetHighlightTexture() - local pushed_texture = button:GetPushedTexture() - - normal_texture:SetTexture (button_config.normal_texture) - highlight_texture:SetTexture (button_config.highlight_texture or button_config.normal_texture) - pushed_texture:SetTexture (button_config.pushed_texture or button_config.normal_texture) - - if (button_config.normal_texcoord) then - normal_texture:SetTexCoord (unpack (button_config.normal_texcoord)) - else - normal_texture:SetTexCoord (unpack (default_texcoord)) - end - - if (button_config.highlight_texcoord) then - highlight_texture:SetTexCoord (unpack (button_config.highlight_texcoord)) - else - if (button_config.normal_texcoord and button_config.normal_texture == button_config.highlight_texture) then - highlight_texture:SetTexCoord (unpack (button_config.normal_texcoord)) - else - highlight_texture:SetTexCoord (unpack (default_texcoord)) - end - end - - if (button_config.pushed_texcoord) then - pushed_texture:SetTexCoord (unpack (button_config.pushed_texcoord)) - else - if (button_config.normal_texcoord and (not button_config.pushed_texture or button_config.normal_texture == button_config.pushed_texture)) then - pushed_texture:SetTexCoord (unpack (button_config.normal_texcoord)) - else - pushed_texture:SetTexCoord (unpack (default_texcoord)) - end - end - - if (button_config.normal_vertexcolor) then - normal_texture:SetVertexColor (unpack (button_config.normal_vertexcolor)) - else - normal_texture:SetVertexColor (unpack (default_vertexcolor)) - end - - if (button_config.highlight_vertexcolor) then - highlight_texture:SetVertexColor (unpack (button_config.highlight_vertexcolor)) - else - if (button_config.normal_vertexcolor and button_config.normal_texture == button_config.highlight_texture) then - highlight_texture:SetVertexColor (unpack (button_config.normal_vertexcolor)) - else - highlight_texture:SetVertexColor (unpack (default_vertexcolor)) - end - end - - if (button_config.pushed_vertexcolor) then - pushed_texture:SetVertexColor (unpack (button_config.pushed_vertexcolor)) - else - if (button_config.normal_vertexcolor and button_config.normal_texture == button_config.pushed_texture) then - pushed_texture:SetVertexColor (unpack (button_config.normal_vertexcolor)) - else - pushed_texture:SetVertexColor (unpack (default_vertexcolor)) - end - end - - if (button_config.alpha) then - button:GetNormalTexture():SetAlpha (button_config.alpha) - button:GetHighlightTexture():SetAlpha (button_config.alpha) - button:GetPushedTexture():SetAlpha (button_config.alpha) - end - - lastIcon = button - button:SetParent (self.baseframe) - button:SetFrameLevel (self.baseframe.UPFrame:GetFrameLevel()+1) - button:Show() - - else - button:Hide() - end - end - - self:ToolbarMenu2InstanceButtonSettings() - - return true -end - -function _detalhes:ToolbarMenu2InstanceButtonSettings (color, font, size, shadow) - - if (not color) then - color = self.instancebutton_config.textcolor - end - if (not font) then - font = self.instancebutton_config.textfont - end - if (not size) then - size = self.instancebutton_config.textsize - end - if (shadow == nil) then - shadow = self.instancebutton_config.textshadow - end - - self.instancebutton_config.textcolor = color - self.instancebutton_config.textfont = font - self.instancebutton_config.textsize = size - self.instancebutton_config.textshadow = shadow - - local fontstring = self.baseframe.cabecalho.novo:GetFontString() - - _detalhes:SetFontSize (fontstring, size) - _detalhes:SetFontFace (fontstring, SharedMedia:Fetch ("font", font)) - _detalhes:SetFontColor (fontstring, color) - _detalhes:SetFontOutline (fontstring, shadow) - -end - local parameters_table = {} local on_leave_menu = function (self, elapsed) @@ -4412,6 +4426,11 @@ local on_leave_menu = function (self, elapsed) end end +local OnClickNovoMenu = function (_, _, id, instance) + _detalhes.CriarInstancia (_, _, id) + instance.baseframe.cabecalho.modo_selecao:GetScript ("OnEnter")(instance.baseframe.cabecalho.modo_selecao) +end + local build_mode_list = function (self, elapsed) local CoolTip = GameCooltip @@ -4433,13 +4452,15 @@ local build_mode_list = function (self, elapsed) CoolTip:SetOption ("ButtonHeightMod", -5) CoolTip:SetOption ("ButtonsYModSub", -3) - CoolTip:SetOption ("ButtonsYMod", -5) + CoolTip:SetOption ("ButtonsYMod", -10) CoolTip:SetOption ("YSpacingModSub", -3) CoolTip:SetOption ("YSpacingMod", 1) - CoolTip:SetOption ("FixedHeight", 106) - CoolTip:SetOption ("FixedWidthSub", 146) + CoolTip:SetOption ("HeighMod", 10) + + --CoolTip:SetOption ("FixedHeight", 106) + --CoolTip:SetOption ("FixedWidthSub", 146) CoolTip:AddLine (Loc ["STRING_MODE_GROUP"]) CoolTip:AddMenu (1, instancia.AlteraModo, 2, true) @@ -4498,6 +4519,94 @@ local build_mode_list = function (self, elapsed) CoolTip:SetWallpaper (2, [[Interface\SPELLBOOK\Spellbook-Page-1]], {.6, 0.1, 0, 0.64453125}, {1, 1, 1, 0.1}, true) end + --> window control + GameCooltip:AddLine ("$div") + CoolTip:AddLine ("Window Control") + CoolTip:AddIcon ([[Interface\AddOns\Details\images\modo_icones]], 1, 1, 20, 20, 32/256*5, 32/256*6, 0, 1) + + --CoolTip:AddMenu (2, _detalhes.OpenOptionsWindow, true, 1, nil, "Cant Create Window", _, true) + --CoolTip:AddIcon ([[Interface\Buttons\UI-PlusButton-Up]], 2, 1, 16, 16) + + if (_detalhes:GetNumInstancesAmount() < _detalhes:GetMaxInstancesAmount()) then + CoolTip:AddMenu (2, OnClickNovoMenu, true, instancia, nil, "Create Window", _, true) + CoolTip:AddIcon ([[Interface\Buttons\UI-AttributeButton-Encourage-Up]], 2, 1, 16, 16) + GameCooltip:AddLine ("$div", nil, 2) + end + + local ClosedInstances = 0 + + for index = 1, math.min (#_detalhes.tabela_instancias, _detalhes.instances_amount), 1 do + + local _this_instance = _detalhes.tabela_instancias [index] + + if (not _this_instance.ativa) then --> só reabre se ela estiver ativa + + --> pegar o que ela ta mostrando + local atributo = _this_instance.atributo + local sub_atributo = _this_instance.sub_atributo + ClosedInstances = ClosedInstances + 1 + + if (atributo == 5) then --> custom + + local CustomObject = _detalhes.custom [sub_atributo] + + if (not CustomObject) then + _this_instance:ResetAttribute() + atributo = _this_instance.atributo + sub_atributo = _this_instance.sub_atributo + CoolTip:AddMenu (2, OnClickNovoMenu, index, instancia, nil, "#".. index .. " " .. _detalhes.atributos.lista [atributo] .. " - " .. _detalhes.sub_atributos [atributo].lista [sub_atributo], _, true) + CoolTip:AddIcon (_detalhes.sub_atributos [atributo].icones[sub_atributo] [1], 2, 1, 20, 20, unpack (_detalhes.sub_atributos [atributo].icones[sub_atributo] [2])) + else + CoolTip:AddMenu (2, OnClickNovoMenu, index, instancia, nil, "#".. index .. " " .. _detalhes.atributos.lista [atributo] .. " - " .. CustomObject:GetName(), _, true) + CoolTip:AddIcon (CustomObject.icon, 2, 1, 20, 20, 0, 1, 0, 1) + end + + else + local modo = _this_instance.modo + + if (modo == 1) then --alone + + atributo = _detalhes.SoloTables.Mode or 1 + local SoloInfo = _detalhes.SoloTables.Menu [atributo] + if (SoloInfo) then + CoolTip:AddMenu (2, OnClickNovoMenu, index, instancia, nil, "#".. index .. " " .. SoloInfo [1], _, true) + CoolTip:AddIcon (SoloInfo [2], 2, 1, 20, 20, 0, 1, 0, 1) + else + CoolTip:AddMenu (2, OnClickNovoMenu, index, instancia, nil, "#".. index .. " Unknown Plugin", _, true) + end + + elseif (modo == 4) then --raid + + local plugin_name = _this_instance.current_raid_plugin or _this_instance.last_raid_plugin + if (plugin_name) then + local plugin_object = _detalhes:GetPlugin (plugin_name) + if (plugin_object) then + CoolTip:AddMenu (2, OnClickNovoMenu, index, instancia, nil, "#".. index .. " " .. plugin_object.__name, _, true) + CoolTip:AddIcon (plugin_object.__icon, 2, 1, 20, 20, 0, 1, 0, 1) + else + CoolTip:AddMenu (2, OnClickNovoMenu, index, instancia, nil, "#".. index .. " Unknown Plugin", _, true) + end + else + CoolTip:AddMenu (2, OnClickNovoMenu, index, instancia, nil, "#".. index .. " Unknown Plugin", _, true) + end + + else + + CoolTip:AddMenu (2, OnClickNovoMenu, index, instancia, nil, "#".. index .. " " .. _detalhes.atributos.lista [atributo] .. " - " .. _detalhes.sub_atributos [atributo].lista [sub_atributo], _, true) + CoolTip:AddIcon (_detalhes.sub_atributos [atributo].icones[sub_atributo] [1], 2, 1, 20, 20, unpack (_detalhes.sub_atributos [atributo].icones[sub_atributo] [2])) + + end + end + + CoolTip:SetOption ("TextSize", _detalhes.font_sizes.menus) + end + end + + CoolTip:SetWallpaper (2, [[Interface\SPELLBOOK\Spellbook-Page-1]], {.6, 0.1, 0, 0.64453125}, {1, 1, 1, 0.1}, true) + + --> options + GameCooltip:AddLine ("$div") + CoolTip:AddLine (Loc ["STRING_OPTIONS_WINDOW"]) CoolTip:AddMenu (1, _detalhes.OpenOptionsWindow) CoolTip:AddIcon ([[Interface\AddOns\Details\images\modo_icones]], 1, 1, 20, 20, 32/256*4, 32/256*5, 0, 1) @@ -4540,7 +4649,7 @@ local build_segment_list = function (self, elapsed) CoolTip:SetOption ("FixedWidthSub", 175) CoolTip:SetOption ("RightTextWidth", 105) CoolTip:SetOption ("RightTextHeight", 12) - + ----------- segments local menuIndex = 0 _detalhes.segments_amount = math.floor (_detalhes.segments_amount) @@ -4660,7 +4769,7 @@ local build_segment_list = function (self, elapsed) if (menuIndex) then menuIndex = menuIndex + 1 if (instancia.segmento == i) then - CoolTip:SetLastSelected ("main", menuIndex); + CoolTip:SetLastSelected ("main", menuIndex) menuIndex = nil end end @@ -4669,6 +4778,8 @@ local build_segment_list = function (self, elapsed) end + GameCooltip:AddLine ("$div") + ----------- current CoolTip:AddLine (segmentos.current_standard, _, 1, "white") CoolTip:AddMenu (1, instancia.TrocaTabela, 0) @@ -4721,11 +4832,11 @@ local build_segment_list = function (self, elapsed) --> fill é a quantidade de menu que esta sendo mostrada if (instancia.segmento == 0) then if (fill - 2 == menuIndex) then - CoolTip:SetLastSelected ("main", fill - 1) + CoolTip:SetLastSelected ("main", fill + 0) elseif (fill - 1 == menuIndex) then - CoolTip:SetLastSelected ("main", fill) - else CoolTip:SetLastSelected ("main", fill + 1) + else + CoolTip:SetLastSelected ("main", fill + 2) end menuIndex = nil @@ -4776,11 +4887,11 @@ local build_segment_list = function (self, elapsed) --> fill é a quantidade de menu que esta sendo mostrada if (instancia.segmento == -1) then if (fill - 2 == menuIndex) then - CoolTip:SetLastSelected ("main", fill) + CoolTip:SetLastSelected ("main", fill + 1) elseif (fill - 1 == menuIndex) then - CoolTip:SetLastSelected ("main", fill+1) - else CoolTip:SetLastSelected ("main", fill + 2) + else + CoolTip:SetLastSelected ("main", fill + 3) end menuIndex = nil end @@ -4801,13 +4912,17 @@ local build_segment_list = function (self, elapsed) CoolTip:SetOption ("SubMenuIsTooltip", true) CoolTip:SetOption ("ButtonHeightMod", -4) - CoolTip:SetOption ("ButtonsYMod", -4) + CoolTip:SetOption ("ButtonsYMod", -10) CoolTip:SetOption ("YSpacingMod", 4) CoolTip:SetOption ("ButtonHeightModSub", 4) CoolTip:SetOption ("ButtonsYModSub", 0) CoolTip:SetOption ("YSpacingModSub", -4) + CoolTip:SetOption ("HeighMod", 12) + + --CoolTip:SetOption ("ButtonsYMod", -10) + --CoolTip:SetWallpaper (1, [[Interface\ACHIEVEMENTFRAME\UI-Achievement-Parchment-Horizontal-Desaturated]], nil, {1, 1, 1, 0.3}) CoolTip:SetWallpaper (1, [[Interface\SPELLBOOK\Spellbook-Page-1]], {.6, 0.1, 0, 0.64453125}, {1, 1, 1, 0.1}, true) CoolTip:SetBackdrop (1, _detalhes.tooltip_backdrop, nil, _detalhes.tooltip_border_color) @@ -5022,7 +5137,6 @@ function _detalhes:ChangeSkin (skin_name) --> update menu saturation self:DesaturateMenu() - self:DesaturateMenu2() --> update statusbar color self:StatusBarColor() @@ -5032,7 +5146,6 @@ function _detalhes:ChangeSkin (skin_name) --> update top menus self:LeftMenuAnchorSide() - self:Menu2Anchor() --> update window strata level self:SetFrameStrata() @@ -5687,7 +5800,6 @@ function _detalhes:ToolbarSide (side) --> update top menus self:LeftMenuAnchorSide() - self:Menu2Anchor() self:StretchButtonAnchor() @@ -5818,44 +5930,6 @@ function _detalhes:MenuAnchor (x, y) end -function _detalhes:Menu2Anchor (x, y) - - if (self.toolbar_side == 1) then --top - if (not x) then - x = self.menu2_anchor [1] - end - if (not y) then - y = self.menu2_anchor [2] - end - self.menu2_anchor [1] = x - self.menu2_anchor [2] = y - - elseif (self.toolbar_side== 2) then --bottom - if (not x) then - x = self.menu2_anchor_down [1] - end - if (not y) then - y = self.menu2_anchor_down [2] - end - self.menu2_anchor_down [1] = x - self.menu2_anchor_down [2] = y - end - - local anchor = self.menu2_points [1] - anchor:ClearAllPoints() - - if (self.toolbar_side == 1) then --> top - anchor:SetPoint ("topleft", self.baseframe.cabecalho.ball_r, "bottomleft", x, y+16) - - else --> bottom - anchor:SetPoint ("topleft", self.baseframe.cabecalho.ball_r, "topleft", x-17, (y*-1) + 1) - - end - - self:ToolbarMenu2Buttons() - -end - function _detalhes:HideMainIcon (value) if (type (value) ~= "boolean") then @@ -5915,6 +5989,8 @@ function _detalhes:DesaturateMenu (value) self.baseframe.cabecalho.segmento:GetNormalTexture():SetDesaturated (true) self.baseframe.cabecalho.atributo:GetNormalTexture():SetDesaturated (true) self.baseframe.cabecalho.report:GetNormalTexture():SetDesaturated (true) + self.baseframe.cabecalho.reset:GetNormalTexture():SetDesaturated (true) + self.baseframe.cabecalho.fechar:GetNormalTexture():SetDesaturated (true) if (self.meu_id == _detalhes:GetLowerInstanceNumber()) then for _, button in _ipairs (_detalhes.ToolBar.AllButtons) do @@ -5929,6 +6005,8 @@ function _detalhes:DesaturateMenu (value) self.baseframe.cabecalho.segmento:GetNormalTexture():SetDesaturated (false) self.baseframe.cabecalho.atributo:GetNormalTexture():SetDesaturated (false) self.baseframe.cabecalho.report:GetNormalTexture():SetDesaturated (false) + self.baseframe.cabecalho.reset:GetNormalTexture():SetDesaturated (false) + self.baseframe.cabecalho.fechar:GetNormalTexture():SetDesaturated (false) if (self.meu_id == _detalhes:GetLowerInstanceNumber()) then for _, button in _ipairs (_detalhes.ToolBar.AllButtons) do @@ -5939,25 +6017,6 @@ function _detalhes:DesaturateMenu (value) end end -function _detalhes:DesaturateMenu2 (value) - - if (value == nil) then - value = self.desaturated_menu2 - end - - if (value) then - self.desaturated_menu2 = true - self.baseframe.cabecalho.fechar:GetNormalTexture():SetDesaturated (true) - self.baseframe.cabecalho.novo:GetNormalTexture():SetDesaturated (true) - self.baseframe.cabecalho.reset:GetNormalTexture():SetDesaturated (true) - else - self.desaturated_menu2 = false - self.baseframe.cabecalho.fechar:GetNormalTexture():SetDesaturated (false) - self.baseframe.cabecalho.novo:GetNormalTexture():SetDesaturated (false) - self.baseframe.cabecalho.reset:GetNormalTexture():SetDesaturated (false) - end -end - function _detalhes:ShowSideBars (instancia) if (instancia) then self = instancia @@ -6145,6 +6204,9 @@ end GameCooltip:SetOption ("TextHeightMod", 0) GameCooltip:SetOption ("IgnoreButtonAutoHeight", false) + GameCooltip:SetOption ("ButtonsYMod", -7) + GameCooltip:SetOption ("HeighMod", 8) + local font = SharedMedia:Fetch ("font", "Friz Quadrata TT") GameCooltip:AddLine (Loc ["STRING_ERASE_DATA"], nil, 1, "white", nil, _detalhes.font_sizes.menus, font) @@ -6204,7 +6266,7 @@ end self.instance.baseframe.cabecalho.button_mouse_over = true GameCooltip:Reset() - GameCooltip:SetOption ("ButtonsYMod", -4) + GameCooltip:SetOption ("ButtonsYMod", -7) GameCooltip:SetOption ("ButtonsYModSub", -2) GameCooltip:SetOption ("YSpacingMod", 0) GameCooltip:SetOption ("YSpacingModSub", -3) @@ -6214,7 +6276,9 @@ end GameCooltip:SetOption ("IgnoreButtonAutoHeightSub", false) GameCooltip:SetOption ("SubMenuIsTooltip", true) GameCooltip:SetOption ("FixedWidthSub", 180) - GameCooltip:SetOption ("FixedHeight", 30) + --GameCooltip:SetOption ("FixedHeight", 30) + + GameCooltip:SetOption ("HeighMod", 9) local font = SharedMedia:Fetch ("font", "Friz Quadrata TT") GameCooltip:AddLine (Loc ["STRING_MENU_CLOSE_INSTANCE"], nil, 1, "white", nil, _detalhes.font_sizes.menus, font) @@ -6268,9 +6332,16 @@ function gump:CriaCabecalho (baseframe, instancia) baseframe.cabecalho.fechar:SetFrameLevel (5) --> altura mais alta que os demais frames baseframe.cabecalho.fechar:SetPoint ("bottomright", baseframe, "topright", 5, -6) --> seta o ponto dele fixando no base frame - baseframe.cabecalho.fechar:SetNormalTexture ([[Interface\Buttons\UI-Panel-MinimizeButton-Up]]) - baseframe.cabecalho.fechar:SetHighlightTexture ([[Interface\Buttons\UI-Panel-MinimizeButton-Highlight]]) - baseframe.cabecalho.fechar:SetPushedTexture ([[Interface\Buttons\UI-Panel-MinimizeButton-Down]]) + baseframe.cabecalho.fechar:SetNormalTexture ([[Interface\AddOns\Details\images\toolbar_icons]]) + baseframe.cabecalho.fechar:GetNormalTexture():SetTexCoord (160/256, 192/256, 0, 1) + baseframe.cabecalho.fechar:SetHighlightTexture ([[Interface\AddOns\Details\images\toolbar_icons]]) + baseframe.cabecalho.fechar:GetHighlightTexture():SetTexCoord (160/256, 192/256, 0, 1) + baseframe.cabecalho.fechar:SetPushedTexture ([[Interface\AddOns\Details\images\toolbar_icons]]) + baseframe.cabecalho.fechar:GetPushedTexture():SetTexCoord (160/256, 192/256, 0, 1) + + --baseframe.cabecalho.fechar:SetNormalTexture ([[Interface\Buttons\UI-Panel-MinimizeButton-Up]]) + --baseframe.cabecalho.fechar:SetHighlightTexture ([[Interface\Buttons\UI-Panel-MinimizeButton-Highlight]]) + --baseframe.cabecalho.fechar:SetPushedTexture ([[Interface\Buttons\UI-Panel-MinimizeButton-Down]]) baseframe.cabecalho.fechar.instancia = instancia baseframe.cabecalho.fechar.instance = instancia @@ -6411,38 +6482,16 @@ function gump:CriaCabecalho (baseframe, instancia) baseframe.cabecalho.modo_selecao = gump:NewButton (baseframe, nil, "DetailsModeButton"..instancia.meu_id, nil, 16, 16, _detalhes.empty_function, nil, nil, [[Interface\AddOns\Details\images\modo_icone]]) baseframe.cabecalho.modo_selecao:SetPoint ("bottomleft", baseframe.cabecalho.ball, "bottomright", instancia.menu_anchor [1], instancia.menu_anchor [2]) baseframe.cabecalho.modo_selecao:SetFrameLevel (baseframe:GetFrameLevel()+5) + + local b = baseframe.cabecalho.modo_selecao.widget + b:SetNormalTexture ([[Interface\AddOns\Details\images\toolbar_icons]]) + b:GetNormalTexture():SetTexCoord (0/256, 32/256, 0, 1) + b:SetHighlightTexture ([[Interface\AddOns\Details\images\toolbar_icons]]) + b:GetHighlightTexture():SetTexCoord (0/256, 32/256, 0, 1) + b:SetPushedTexture ([[Interface\AddOns\Details\images\toolbar_icons]]) + b:GetPushedTexture():SetTexCoord (0/256, 32/256, 0, 1) --> Generating Cooltip menu from table template - local modeMenuTable = { - - {text = Loc ["STRING_MODE_GROUP"]}, - {func = instancia.AlteraModo, param1 = 2}, - {icon = [[Interface\AddOns\Details\images\modo_icones]], l = 32/256, r = 32/256*2, t = 0, b = 1, width = 20, height = 20}, - {text = Loc ["STRING_HELP_MODEGROUP"], type = 2}, - {icon = [[Interface\TUTORIALFRAME\TutorialFrame-QuestionMark]], type = 2, width = 16, height = 16, l = 8/64, r = 1 - (8/64), t = 8/64, b = 1 - (8/64)}, - - {text = Loc ["STRING_MODE_ALL"]}, - {func = instancia.AlteraModo, param1 = 3}, - {icon = [[Interface\AddOns\Details\images\modo_icones]], l = 32/256*2, r = 32/256*3, t = 0, b = 1, width = 20, height = 20}, - {text = Loc ["STRING_HELP_MODEALL"], type = 2}, - {icon = [[Interface\TUTORIALFRAME\TutorialFrame-QuestionMark]], type = 2, width = 16, height = 16, l = 8/64, r = 1 - (8/64), t = 8/64, b = 1 - (8/64)}, - - {text = Loc ["STRING_MODE_RAID"]}, -- .. " (|cffa0a0a0" .. Loc ["STRING_MODE_PLUGINS"] .. "|r)" - {func = instancia.AlteraModo, param1 = 4}, - {icon = [[Interface\AddOns\Details\images\modo_icones]], l = 32/256*3, r = 32/256*4, t = 0, b = 1, width = 20, height = 20}, - {text = Loc ["STRING_HELP_MODERAID"], type = 2}, - {icon = [[Interface\TUTORIALFRAME\TutorialFrame-QuestionMark]], type = 2, width = 16, height = 16, l = 8/64, r = 1 - (8/64), t = 8/64, b = 1 - (8/64)}, - - {text = Loc ["STRING_MODE_SELF"]}, -- .. " (|cffa0a0a0" .. Loc ["STRING_MODE_PLUGINS"] .. "|r)" - {func = instancia.AlteraModo, param1 = 1}, - {icon = [[Interface\AddOns\Details\images\modo_icones]], l = 0, r = 32/256, t = 0, b = 1, width = 20, height = 20}, - {text = Loc ["STRING_HELP_MODESELF"], type = 2}, - {icon = [[Interface\TUTORIALFRAME\TutorialFrame-QuestionMark]], type = 2, width = 16, height = 16, l = 8/64, r = 1 - (8/64), t = 8/64, b = 1 - (8/64)}, - - {text = Loc ["STRING_OPTIONS_WINDOW"]}, - {func = _detalhes.OpenOptionsWindow}, - {icon = [[Interface\AddOns\Details\images\modo_icones]], l = 32/256*4, r = 32/256*5, t = 0, b = 1, width = 20, height = 20}, - } --> Cooltip raw method for enter/leave show/hide baseframe.cabecalho.modo_selecao:SetScript ("OnEnter", function (self) @@ -6476,7 +6525,6 @@ function gump:CriaCabecalho (baseframe, instancia) parameters_table [1] = instancia parameters_table [2] = passou parameters_table [3] = checked - parameters_table [4] = modeMenuTable self:SetScript ("OnUpdate", build_mode_list) end) @@ -6505,6 +6553,14 @@ function gump:CriaCabecalho (baseframe, instancia) baseframe.cabecalho.segmento = gump:NewButton (baseframe, nil, "DetailsSegmentButton"..instancia.meu_id, nil, 16, 16, _detalhes.empty_function, nil, nil, [[Interface\AddOns\Details\images\segmentos_icone]]) baseframe.cabecalho.segmento:SetFrameLevel (baseframe.UPFrame:GetFrameLevel()+1) + local b = baseframe.cabecalho.segmento.widget + b:SetNormalTexture ([[Interface\AddOns\Details\images\toolbar_icons]]) + b:GetNormalTexture():SetTexCoord (32/256, 64/256, 0, 1) + b:SetHighlightTexture ([[Interface\AddOns\Details\images\toolbar_icons]]) + b:GetHighlightTexture():SetTexCoord (32/256, 64/256, 0, 1) + b:SetPushedTexture ([[Interface\AddOns\Details\images\toolbar_icons]]) + b:GetPushedTexture():SetTexCoord (32/256, 64/256, 0, 1) + baseframe.cabecalho.segmento:SetHook ("OnMouseUp", function (button, buttontype) if (buttontype == "LeftButton") then @@ -6600,6 +6656,15 @@ function gump:CriaCabecalho (baseframe, instancia) --> SELECIONAR O ATRIBUTO ---------------------------------------------------------------------------------------------------------------------------------------------------- baseframe.cabecalho.atributo = gump:NewButton (baseframe, nil, "DetailsAttributeButton"..instancia.meu_id, nil, 16, 16, instancia.TrocaTabela, instancia, -3, [[Interface\AddOns\Details\images\sword]]) + + local b = baseframe.cabecalho.atributo.widget + b:SetNormalTexture ([[Interface\AddOns\Details\images\toolbar_icons]]) + b:GetNormalTexture():SetTexCoord (66/256, 93/256, 0, 1) + b:SetHighlightTexture ([[Interface\AddOns\Details\images\toolbar_icons]]) + b:GetHighlightTexture():SetTexCoord (68/256, 93/256, 0, 1) + b:SetPushedTexture ([[Interface\AddOns\Details\images\toolbar_icons]]) + b:GetPushedTexture():SetTexCoord (68/256, 93/256, 0, 1) + --baseframe.cabecalho.atributo = gump:NewDetailsButton (baseframe, _, instancia, instancia.TrocaTabela, instancia, -3, 16, 16, [[Interface\AddOns\Details\images\sword]]) baseframe.cabecalho.atributo:SetFrameLevel (baseframe.UPFrame:GetFrameLevel()+1) baseframe.cabecalho.atributo:SetPoint ("left", baseframe.cabecalho.segmento.widget, "right", 0, 0) @@ -6670,6 +6735,15 @@ function gump:CriaCabecalho (baseframe, instancia) --> REPORTAR ~report ---------------------------------------------------------------------------------------------------------------------------------------------------- baseframe.cabecalho.report = gump:NewButton (baseframe, nil, "DetailsReportButton"..instancia.meu_id, nil, 8, 16, _detalhes.Reportar, instancia, nil, [[Interface\Addons\Details\Images\report_button]]) + + local b = baseframe.cabecalho.report.widget + b:SetNormalTexture ([[Interface\AddOns\Details\images\toolbar_icons]]) + b:GetNormalTexture():SetTexCoord (96/256, 128/256, 0, 1) + b:SetHighlightTexture ([[Interface\AddOns\Details\images\toolbar_icons]]) + b:GetHighlightTexture():SetTexCoord (96/256, 128/256, 0, 1) + b:SetPushedTexture ([[Interface\AddOns\Details\images\toolbar_icons]]) + b:GetPushedTexture():SetTexCoord (96/256, 128/256, 0, 1) + --baseframe.cabecalho.report = gump:NewDetailsButton (baseframe, _, instancia, _detalhes.Reportar, instancia, nil, 16, 16, [[Interface\COMMON\VOICECHAT-ON]]) baseframe.cabecalho.report:SetPoint ("left", baseframe.cabecalho.atributo, "right", -6, 0) baseframe.cabecalho.report:SetFrameLevel (baseframe.UPFrame:GetFrameLevel()+1) @@ -6688,6 +6762,9 @@ function gump:CriaCabecalho (baseframe, instancia) GameCooltip:SetOption ("TextHeightMod", 0) GameCooltip:SetOption ("IgnoreButtonAutoHeight", false) + GameCooltip:SetOption ("ButtonsYMod", -7) + GameCooltip:SetOption ("HeighMod", 8) + GameCooltip:AddLine ("Report Results", nil, 1, "white", nil, _detalhes.font_sizes.menus, SharedMedia:Fetch ("font", "Friz Quadrata TT")) GameCooltip:AddIcon ([[Interface\Addons\Details\Images\report_button]], 1, 1, 12, 19) GameCooltip:AddMenu (1, _detalhes.Reportar, instancia) @@ -6722,146 +6799,7 @@ function gump:CriaCabecalho (baseframe, instancia) end) - --> NOVA INSTANCIA ---------------------------------------------------------------------------------------------------------------------------------------------------- - baseframe.cabecalho.novo = CreateFrame ("button", "DetailsInstanceButton"..instancia.meu_id, baseframe) --, "OptionsButtonTemplate" - baseframe.cabecalho.novo:SetFrameLevel (baseframe.UPFrame:GetFrameLevel()+1) - - baseframe.cabecalho.novo:SetNormalTexture (1, 1, 1, 1) - baseframe.cabecalho.novo:SetHighlightTexture ([[Interface\Buttons\UI-Panel-MinimizeButton-Highlight]]) - baseframe.cabecalho.novo:SetPushedTexture (1, 1, 1, 1) - - baseframe.cabecalho.novo:SetWidth (20) - baseframe.cabecalho.novo:SetHeight (16) - baseframe.cabecalho.novo:SetPoint ("bottomright", baseframe, "topright", instancia.instance_button_anchor [1], instancia.instance_button_anchor [2]) - - baseframe.cabecalho.novo:SetScript ("OnClick", function() _detalhes:CriarInstancia (_, true); _G.GameCooltip:ShowMe (false) end) - baseframe.cabecalho.novo:SetText ("#"..instancia.meu_id) - baseframe.cabecalho.novo:SetNormalFontObject ("GameFontHighlightSmall") - - --> cooltip through inject - --> OnClick Function [1] caller [2] fixed param [3] param1 [4] param2 - local OnClickNovoMenu = function (_, _, id) - _detalhes.CriarInstancia (_, _, id) - _G.GameCooltip:ExecFunc (baseframe.cabecalho.novo) - end - - --> Build Menu Function - local BuildClosedInstanceMenu = function() - - local ClosedInstances = 0 - - for index = 1, math.min (#_detalhes.tabela_instancias, _detalhes.instances_amount), 1 do - - local _this_instance = _detalhes.tabela_instancias [index] - - if (not _this_instance.ativa) then --> só reabre se ela estiver ativa - - --> pegar o que ela ta mostrando - local atributo = _this_instance.atributo - local sub_atributo = _this_instance.sub_atributo - ClosedInstances = ClosedInstances + 1 - - if (atributo == 5) then --> custom - - local CustomObject = _detalhes.custom [sub_atributo] - - if (not CustomObject) then - _this_instance:ResetAttribute() - atributo = _this_instance.atributo - sub_atributo = _this_instance.sub_atributo - CoolTip:AddMenu (1, OnClickNovoMenu, index, nil, nil, "#".. index .. " " .. _detalhes.atributos.lista [atributo] .. " - " .. _detalhes.sub_atributos [atributo].lista [sub_atributo], _, true) - CoolTip:AddIcon (_detalhes.sub_atributos [atributo].icones[sub_atributo] [1], 1, 1, 20, 20, unpack (_detalhes.sub_atributos [atributo].icones[sub_atributo] [2])) - else - CoolTip:AddMenu (1, OnClickNovoMenu, index, nil, nil, "#".. index .. " " .. _detalhes.atributos.lista [atributo] .. " - " .. CustomObject:GetName(), _, true) - CoolTip:AddIcon (CustomObject.icon, 1, 1, 20, 20, 0, 1, 0, 1) - end - - else - local modo = _this_instance.modo - - if (modo == 1) then --alone - - atributo = _detalhes.SoloTables.Mode or 1 - local SoloInfo = _detalhes.SoloTables.Menu [atributo] - if (SoloInfo) then - CoolTip:AddMenu (1, OnClickNovoMenu, index, nil, nil, "#".. index .. " " .. SoloInfo [1], _, true) - CoolTip:AddIcon (SoloInfo [2], 1, 1, 20, 20, 0, 1, 0, 1) - else - CoolTip:AddMenu (1, OnClickNovoMenu, index, nil, nil, "#".. index .. " Unknown Plugin", _, true) - end - - elseif (modo == 4) then --raid - - local plugin_name = _this_instance.current_raid_plugin or _this_instance.last_raid_plugin - if (plugin_name) then - local plugin_object = _detalhes:GetPlugin (plugin_name) - if (plugin_object) then - CoolTip:AddMenu (1, OnClickNovoMenu, index, nil, nil, "#".. index .. " " .. plugin_object.__name, _, true) - CoolTip:AddIcon (plugin_object.__icon, 1, 1, 20, 20, 0, 1, 0, 1) - else - CoolTip:AddMenu (1, OnClickNovoMenu, index, nil, nil, "#".. index .. " Unknown Plugin", _, true) - end - else - CoolTip:AddMenu (1, OnClickNovoMenu, index, nil, nil, "#".. index .. " Unknown Plugin", _, true) - end - - else - - CoolTip:AddMenu (1, OnClickNovoMenu, index, nil, nil, "#".. index .. " " .. _detalhes.atributos.lista [atributo] .. " - " .. _detalhes.sub_atributos [atributo].lista [sub_atributo], _, true) - CoolTip:AddIcon (_detalhes.sub_atributos [atributo].icones[sub_atributo] [1], 1, 1, 20, 20, unpack (_detalhes.sub_atributos [atributo].icones[sub_atributo] [2])) - - end - end - - CoolTip:SetOption ("TextSize", _detalhes.font_sizes.menus) - end - end - - if (ClosedInstances == 0) then - if (_detalhes:GetNumInstancesAmount() == _detalhes:GetMaxInstancesAmount()) then - CoolTip:AddMenu (1, _detalhes.OpenOptionsWindow, true, 1, nil, Loc ["STRING_NOMORE_INSTANCES"], _, true) - CoolTip:AddIcon ([[Interface\Buttons\UI-PlusButton-Up]], 1, 1, 16, 16) - else - CoolTip:AddMenu (1, _detalhes.CriarInstancia, true, nil, nil, Loc ["STRING_NOCLOSED_INSTANCES"], _, true) - CoolTip:AddIcon ([[Interface\Buttons\UI-AttributeButton-Encourage-Up]], 1, 1, 16, 16) - end - end - - GameCooltip:SetWallpaper (1, [[Interface\SPELLBOOK\Spellbook-Page-1]], {.6, 0.1, 0, 0.64453125}, {1, 1, 1, 0.1}, true) - GameCooltip:SetBackdrop (1, _detalhes.tooltip_backdrop, nil, _detalhes.tooltip_border_color) - GameCooltip:SetBackdrop (2, _detalhes.tooltip_backdrop, nil, _detalhes.tooltip_border_color) - - return ClosedInstances - end - - --> Inject Options Table - baseframe.cabecalho.novo.CoolTip = { - --> cooltip type "menu" "tooltip" "tooltipbars" - Type = "menu", - --> how much time wait with mouse over the frame until cooltip show up - ShowSpeed = 0.15, - --> will call for build menu - BuildFunc = BuildClosedInstanceMenu, - --> a hook for OnEnterScript - OnEnterFunc = function() OnEnterMainWindow (instancia, baseframe.cabecalho.novo, 3) end, - --> a hook for OnLeaveScript - OnLeaveFunc = function() OnLeaveMainWindow (instancia, baseframe.cabecalho.novo, 3) end, - --> default message if there is no option avaliable - Default = Loc ["STRING_NOCLOSED_INSTANCES"], - --> instancia is the first parameter sent after click, before parameters - FixedValue = instancia, - Options = function() - if (instancia.toolbar_side == 1) then --top - return {TextSize = 10, NoLastSelectedBar = true, ButtonsYMod = -2} - elseif (instancia.toolbar_side == 2) then --bottom - return {HeightAnchorMod = -7, TextSize = 10, NoLastSelectedBar = true} - end - end - } - - --> Inject - _G.GameCooltip:CoolTipInject (baseframe.cabecalho.novo) -- ~delete ~erase --> RESETAR HISTORICO ---------------------------------------------------------------------------------------------------------------------------------------------------- @@ -6881,9 +6819,13 @@ function gump:CriaCabecalho (baseframe, instancia) baseframe.cabecalho.reset:SetScript ("OnEnter", reset_button_onenter) baseframe.cabecalho.reset:SetScript ("OnLeave", reset_button_onleave) - baseframe.cabecalho.reset:SetNormalTexture ([[Interface\Addons\Details\Images\reset_button2]]) - baseframe.cabecalho.reset:SetHighlightTexture ([[Interface\Addons\Details\Images\reset_button2]]) - baseframe.cabecalho.reset:SetPushedTexture ([[Interface\Addons\Details\Images\reset_button2]]) + local b = baseframe.cabecalho.reset + b:SetNormalTexture ([[Interface\AddOns\Details\images\toolbar_icons]]) + b:GetNormalTexture():SetTexCoord (128/256, 160/256, 0, 1) + b:SetHighlightTexture ([[Interface\AddOns\Details\images\toolbar_icons]]) + b:GetHighlightTexture():SetTexCoord (128/256, 160/256, 0, 1) + b:SetPushedTexture ([[Interface\AddOns\Details\images\toolbar_icons]]) + b:GetPushedTexture():SetTexCoord (128/256, 160/256, 0, 1) --> fim botão reset diff --git a/gumps/janela_welcome.lua b/gumps/janela_welcome.lua index 206c1ead..176da67e 100644 --- a/gumps/janela_welcome.lua +++ b/gumps/janela_welcome.lua @@ -1119,8 +1119,8 @@ local window_openned_at = time() instance_frame_alert:SetScript ("OnShow", function() local instance = _detalhes:GetInstance (1) - frame_alert.alert:SetPoint ("topleft", instance.baseframe.cabecalho.novo, "topleft", -8, 6) - frame_alert.alert:SetPoint ("bottomright", instance.baseframe.cabecalho.novo, "bottomright", 8, -6) + frame_alert.alert:SetPoint ("topleft", instance.baseframe.cabecalho.modo_selecao.widget, "topleft", -8, 6) + frame_alert.alert:SetPoint ("bottomright", instance.baseframe.cabecalho.modo_selecao.widget, "bottomright", 8, -6) frame_alert.alert.animOut:Stop() frame_alert.alert.animIn:Play() diff --git a/images/icons.tga b/images/icons.tga index fda721ddda4fea4cbe7b5f6edca3ef9030774fab..e6296c08d51b9886cf1237c2cd1489893a75bab2 100644 GIT binary patch delta 112093 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 delta 111279 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 diff --git a/images/modo_icones.tga b/images/modo_icones.tga index f803b6bc142335aefe3793bb063d11122e543b97..508e464e8ec75b0ba6e9da2b01308f2aa83624c5 100644 GIT binary patch delta 4526 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 delta 1729 zcmZuyYitx%6rMXXJ3G6xyWMuT?UwGkk9L^jlK9sO=z!kY}HsmQ>)kKbTJl#uRVvuZ<7-p_KDLlbn+4wZt2F{x&`R=`bJ26GC5($ z`wR=fu(u6{a$}Bvhw6j5kC{)S;2WBz)ldSL63HwUs}(Ni7X;to^n$ZAfoaYipjf2X zYZPnY73vJf$tH>lVvhS1VUndqfk;&X{YB;?vgjcveKZm=!*agydd= z^|GS-OsSiTJft*Q;VzSVGice@hjL@P0lpgTw~?O*qwV;bn5YDThNGh-;wu-n^`h{` z0Td6MMeCVssBG>roTp0q;d-f`w@}c(Ed7;PMS&TfbMb^fA@}s53InM2o!Q6vb;$;FH>^Ue;*9y= zuF8v@{}z?OD=5utK^BUlkd=+n>Mf`YTtfM^tp){CRG3q>f@MLbsv6c#3z*GaKJ5-$ z()p&TQl3P0@G>f0fMQV$>EaqVonsU$s!-m02rWm>kklnqZ$6}!cO$bq%xaz$BpF#* zB`W$=R6f3FG8P2kX!Wsh4Jnwd77K!?E@(yHi!;%g>qCbp&&D_T+;ex>Oui%(EDADD z9ty53q~U-&I4Cn`Hd+pyMC+|TP~Nx=8F>wlCRkOY7e)?+DphrG?}eiQQ;+@`dY*WK z>-|Z3ULpi(`YP6{ubsY~jnA&G!)`7j87-Y+ww4#ai=%PsoIzS&6NPm(>0$~uE{!(o zF!+i4kxF%FIo@2#(wEe3Vk`{b)pa|KyEj3lQuxwN%ovOsh+`Bn(%n;QFcb>?rmAX^ z?y`eZ4AnO?7Kega8JjsORDT5Av%8oEy|WX(F$~kZp_(rg9U+Q~@WJeSJ@L{5mLquP zG@>~fnaysfzdrYL#eZRQN9f=X$3u_D6X#=ue#U&(G=0y!J4|#rVK^0%T~bjTK3~wv zd=N;r!TppUzDl|I#B{ox`f%zo%StANOeQ0&+qgj{dmq{wq7ZB7Vs<#y5QgU)i*-li zIMG8IJv}|b#!tpV(~xe;hbxQxuzAq{>}_(>vmdhe+UX}-C%RF#% osaxN<^c#`BBYXr)uzh*HzM=JosF~juJAn=;Tv?+ZT(OJ&18g}A0ssI2 diff --git a/images/skins/default_skin.tga b/images/skins/default_skin.tga index 41d87976b02538cbf1c1fd302ce4c04c0b42119a..0c2dd89cdc1d758e85dd05883af286477cd2756c 100644 GIT binary patch delta 3833 zcmaJ^dr;KJ9pBwM@Q}N5m%9r`4#M%$LqJhPK;B|ol^_^vFfk6t1QmxGueC-RAK`Z= zLc|!-Q`b(M6iwPie(duayn_l>_(0cduie3Hv{emPVzCrd7 z`1x_pAD!#NIUjsV!W+tI`V7*)uU~2}X)j5#UF(v*&KI{zeQ$5C?A+EVJGXYq-rc?O zg%`I-EqMJJ?V{AoJHDXh72@%-Cq#UbU1$I(b`d=ZlPUs5@5cpybYV9#tA!q3TScwb zM59S|!<3{&CB@QcHUY)_8}tZWAY4CuO;{?LMM_$xcq}zt>~f|${|DZg<`Vws!UVkE zp6cZ0TAFS)6ql7qXPQ$M6&K5zx|+b@?e<{b2wh95o!=Uzbrr%j@QL`&>OL{Esa<5x zoF}rgvqiVt?H0;;VLROUg~E?>F}AtfZtkh0cB8?bY?l>PRT54HPlxC_N|X7tTXcDu zuz~hD)7>H?GgIvR223B$5oki+0Bq7+E|-j7|NQgP)8^std`j*68<~~69#CVTX-8bJ z@Js5T)X5j$rY$vMs=HLAPn#}sa&m+_uRv&sO>q>x37Wg0AjF`74SB+yn-{Z*kKU%q zl<*siX_X;<{l<+*8aTYe&cR(%xtFno;L88dJS5zChqg3|#73{s?LI54b85wO_l$8Y zK#damk&DD=lbaWU#W-cHmX(zy8K^5kQ^~hB&}v%(&Y{^Z=+||$OHX_IWFaI2aH6$n5ppYdiX)4~EPQCJ9+klL$i7ijW8%grUE-p;{IiMH8R8@S z%Jb-jl;HLIaQ~}??$y5uM`K5rHKnx4?{BiV6LkUl_s*q}X%wM)=XMz=yTX z)NM;Z%U$3BxJ+Q~dNenNF7*N3Mwc2}Ul#TSD@1ngjPRXg$imhIZWmTm-&SGP5T9ki zO#>N$7Zo;5j~mlmSu!g->}2Tq#b;?rg67JGtF^9UUC{D1JxLb{efRsqo;fXsfb{?U zt|>j|jv~+_wlX5WaC8!fdLSB-Xo&u=7FuLBq`A^0GOS&{Rh;8dyQ_?Re&+9t9ld zUU=W;uKG%|TCIYZOeTS&5j`}YAvF9bHt?f8s>4}7EKA%i_u|NJwPOP#&1AO9_#Zsg zEWMi)VGsyEpz~qtU63!3AkvRQe|;js1mIKpO-b0mNW&}~f9lk!;PI*KCY@z4818@w zkPygqkP(oZpi<0(IRsNu8y+4GUNy3-bS@J$-v;C^x?>lBmdCw@1<|x*Mm|I$K}zthvhbH zrws7d<^In5Po3?Z+Mr78Ij*fHp;eLX^ih}fl(uet9YuTJAyoC?^ zj%M?{yQzT>&0_wAVIru;#Nc!~iOFIi4Gj&XzOf0+G>|L*zM}f?*4GnA6J#%HL)LV3 z5Dn@zAyBYmD6D)(Av;qQb{Qm0G6k|H!GR+^oh)ux8pTC?#Op^mhIj}E^$gHzTi87Q zliBQ(xf4KGfr*AlIQE7#UYDS-$no7EM_L3D( zuTs5^>d0$h?G7CzP&mee-7}Z{p+EdGiiPuM6 zmI!oLDH|?TU|5R?9aj=7AJN&9Cu2>hh&bU#cwiq*4D8+VC?DF!9^r2!!eeZ_%p4J2 z%h;1)c&t%`z@I<_ikOS&EwEv%`^tPXXf%?ZJw0Sm{UXx)N^j(iU=s6g zLa$*?PzNh3*n4@(Y28q12*ZOqosOLU@I28bPF}uzIdW2kvZ9J52AcY^1O1x$fS0E6 zY9~bV%}UlIjlQ`VHQJx3xB>4 zIgek6p&^J$L17Ry=r<~V25NRE2KrCxx#u}%;;t0tN5$f6<3 z5e!#t;Ko)H_b!3tedQ%c-t`N>MDqt=SYIuxiI74CBU7M)DSOJx%O??{0-xUqkuYfo z+cORuEK(7!*)2;y4u4SamS68ZAVEt{O)gM`7hh zs*-Ho=*86OtgSP3ny8G^b~~LmF=-o3rqi0vq;WFVU~3ame)cIEV8PpS9`fgOXTJCD zyL;~WzH{z*=f1wq=nvYWn}1CVy(FH+^^)SIzUoa?UnC{Q_XvXE0muQg4K9KZ8}&2c z1P*+!zg8nC;o^E@Z{6d0*>m_0Hm>JI%S*?1?cEbWv*T#i;`jTxw(a_(+DHP-qXc6tQm?$@{7Yp8#f7c5%9tJYQy6&9C> zyZ7zwM~%lMdmOc(HYGe_43bzBx$i)uBof8?P$8L=dmQZrZ{vOtHTZ!1oK%k48%{=I zR@4p|Q!>7k$>ile@J5h;w%}FDos<*}5~4P5!>hvHJ#{=cCyO6yJ`@3?FhB&{XCL(w zW4_vAv2dNiz$+>$`0C0kNTHhd-0hL>D^{=ObzU!j3+x49M}0l_EzHm7iV*K7hY3ky zhX+Y%)0jPYdrY^bGm^7m@31|$@GmmCVinj+*^)F$>(wY~`__#@?GI}Nr_&)GJaiC+ z^y*@Cy(WuE1oTSsr9fKjnVDRb2^SogQd9Y=itkS;M5U7MK*8YgpG=;U91&=N6jJtY6 z+)u$Q4}fJa?H^`FDth$``MJW%@|6N1MAT}vVoXd-7(|2}E(rr*sgMK_r_;&ZZa4R# z9;JKETs}FImX^lf>0+~FDI{H?rXjKcC4Kpr)U1p|ReB$hx33S$7q7i%O-a2Zm&@0J zq$t4jd#HXPFXvHyetsWJit+LBBJhP>E|=(bxx;`yw(AK=nu`K_s6cMDT6uG82VcLb zTDr@KO!x`9RCb;1;-0#?z`4T-tXNKCLt{_KFG!Pc`m4ue^N$~x?9NXN27N1qA7(^~ zQz~Vc9WE#+7(od}qfvyo2a(?Ca*BXH%*yneCdr_f8%)i#Fs$_dBMjb2R2C{4Ay-K8 zsBq@)2xvz5T?ILzXUBpT!5#Psy^0Z<~QgBm~|%ZU(6y3(29p4twZ z%{GhnS(TjaV!*h7ZG1@dEch-_gg%Wx@iwV;c8${7z&E)|ia(NSLdpQljKj<*q()3g zOcd=72SlC$NJsR8o{0=Zpz)^H*8=W+5rSuiU2zj&le zb$>f80cOTwCL)u`#AK^gOfs9rl(clw?wT_QU_nmI8B#?el|0Fm%$uR5u7}o&cZEzb zT?WiSY4UIMl#$x+q}&v480_mc_Il5S49*Gh3Jdb>qVI{!4ys~nMJ^V&|c9&rI2rcxZL3h9s}&V(5KR<8au$+qQ2DcXwanz$djAxDUeKOf*@^ zs}j9-!}+{_|9<{T%`055*Yo!-z9-#}RIGs`6Fd1)SShr?nJ#Fq-?+}(PPB#oq^GwC zF|c49&Dv};n|7(x>K!kyTleH7JH>a@zcvaO12QsQ2rXUbgIpE7aAArO*(Ol9F z>Mk4euYxDHwEJbS3;vck*_MA&4ZEF7kDack zi`cFC^!DUH!?G9B&so(Ln$5Q7(NA$Sj}>pC*3;i3ii^BcL;jXZ%^rF1<)wBt@s+AyI+14kVtsLF3rdr4aR@ThugTA!NeL{1uQB z_Y#^nwT2CQs3FkZn9UAE(K)QB81!Gwf#qPTW}9T-t)Yf)V3pgztmj9utodKyBD{nq z2If81va@#}2z?ot78cPm=B=XzsDyn}ME{5}lrnt@y@sROfZwM-?IkmJ=lx}LEh@=j z&9xMwyaJaSrC6?CQ|oN)X{_gOkVn3pW=*W{ADdW_#5!-&c=q2?dO)IQJ!SOr#HhQ0 oS_8Q|UCh3MI+^|!tbg+*x)pY|k@Yl@nGB#r9s1Quy8Ofc0iTH`o&W#< diff --git a/images/toolbar_icons.tga b/images/toolbar_icons.tga new file mode 100644 index 0000000000000000000000000000000000000000..454808faf364e9d4ef666b95aaeca3230483c28c GIT binary patch literal 9870 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 start time machine self.timeMachine:Ligar()