annotate Libs/DF/cooltip.lua @ 63:3552946c0b9a tip

Added tag v8.2.0.062 for changeset d6704922ef5d
author Tercioo
date Fri, 28 Jun 2019 20:06:18 -0300
parents 0682d738499b
children
rev   line source
Tercio@11 1
Tercio@11 2 local DF = _G ["DetailsFramework"]
Tercio@20 3 if (not DF or not DetailsFrameworkCanLoad) then
Tercio@20 4 return
Tercio@20 5 end
Tercio@20 6
Tercio@11 7 local SharedMedia = LibStub:GetLibrary("LibSharedMedia-3.0")
Tercio@11 8 local _
Tercio@11 9 --lua locals
Tercio@11 10 local _math_floor= math.floor
Tercio@11 11 local _type = type
Tercio@11 12 local _math_abs = math.abs
Tercio@11 13 local _tinsert = tinsert
Tercio@11 14 local _unpack = unpack
Tercio@11 15 local _ipairs = ipairs
Tercio@11 16 local _table_wipe = table.wipe
Tercio@11 17 local _table_insert = table.insert
Tercio@11 18 local _math_max = math.max
Tercio@11 19 --api locals
Tercio@11 20 local _GetScreenWidth = GetScreenWidth
Tercio@11 21 local _GetScreenHeight = GetScreenHeight
Tercio@11 22 local _UIParent = UIParent
Tercio@11 23 local _CreateFrame = CreateFrame
Tercio@11 24
Tercio@20 25 local version = 2
Tercio@11 26
Tercio@11 27 function DF:CreateCoolTip()
Tercio@11 28
Tercio@11 29 ----------------------------------------------------------------------
Tercio@11 30 --> Cooltip Startup
Tercio@11 31 ----------------------------------------------------------------------
Tercio@11 32
Tercio@55 33 --> if a cooltip is already created with a higher version
Tercio@11 34 if (_G.GameCooltip2 and _G.GameCooltip2.version >= version) then
Tercio@11 35 return
Tercio@11 36 end
Tercio@11 37
Tercio@55 38 --> initialize
Tercio@55 39 local CoolTip = {
Tercio@55 40 version = version
Tercio@55 41 }
Tercio@11 42 _G.GameCooltip2 = CoolTip
Tercio@11 43
Tercio@55 44 --> containers
Tercio@11 45 CoolTip.LeftTextTable = {}
Tercio@11 46 CoolTip.LeftTextTableSub = {}
Tercio@11 47 CoolTip.RightTextTable = {}
Tercio@11 48 CoolTip.RightTextTableSub = {}
Tercio@11 49 CoolTip.LeftIconTable = {}
Tercio@11 50 CoolTip.LeftIconTableSub = {}
Tercio@11 51 CoolTip.RightIconTable = {}
Tercio@11 52 CoolTip.RightIconTableSub = {}
Tercio@11 53 CoolTip.Banner = {false, false, false}
Tercio@11 54 CoolTip.TopIconTableSub = {}
Tercio@11 55 CoolTip.StatusBarTable = {}
Tercio@11 56 CoolTip.StatusBarTableSub = {}
Tercio@11 57 CoolTip.WallpaperTable = {}
Tercio@11 58 CoolTip.WallpaperTableSub = {}
Tercio@11 59
Tercio@20 60 CoolTip.PopupFrameTable = {}
Tercio@20 61
Tercio@11 62 CoolTip.FunctionsTableMain = {} --> menus
Tercio@11 63 CoolTip.FunctionsTableSub = {} --> menus
Tercio@11 64 CoolTip.ParametersTableMain = {} --> menus
Tercio@11 65 CoolTip.ParametersTableSub = {} --> menus
Tercio@11 66
Tercio@11 67 CoolTip.FixedValue = nil --> menus
Tercio@11 68 CoolTip.SelectedIndexMain = nil --> menus
Tercio@11 69 CoolTip.SelectedIndexSec = {} --> menus
Tercio@11 70
Tercio@11 71 --options table
Tercio@11 72 CoolTip.OptionsList = {
Tercioo@30 73 ["RightTextMargin"] = true,
Tercio@11 74 ["IconSize"] = true,
Tercio@11 75 ["HeightAnchorMod"] = true,
Tercio@11 76 ["WidthAnchorMod"] = true,
Tercio@11 77 ["MinWidth"] = true,
Tercio@11 78 ["FixedWidth"] = true,
Tercio@11 79 ["FixedHeight"] = true,
Tercio@11 80 ["FixedWidthSub"] = true,
Tercio@11 81 ["FixedHeightSub"] = true,
Tercio@11 82 ["AlignAsBlizzTooltip"] = true,
Tercio@11 83 ["IgnoreSubMenu"] = true,
Tercio@11 84 ["IgnoreButtonAutoHeight"] = true,
Tercio@11 85 ["TextHeightMod"] = true,
Tercio@11 86 ["ButtonHeightMod"] = true,
Tercio@11 87 ["ButtonHeightModSub"] = true,
Tercio@11 88 ["YSpacingMod"] = true,
Tercio@11 89 ["YSpacingModSub"] = true,
Tercio@11 90 ["ButtonsYMod"] = true,
Tercio@11 91 ["ButtonsYModSub"] = true,
Tercio@11 92 ["IconHeightMod"] = true,
Tercio@11 93 ["StatusBarHeightMod"] = true,
Tercio@11 94 ["StatusBarTexture"] = true,
Tercio@11 95 ["TextSize"] = true,
Tercio@11 96 ["TextFont"] = true,
Tercio@11 97 ["TextColor"] = true,
Tercio@11 98 ["TextColorRight"] = true,
Tercio@11 99 ["TextShadow"] = true,
Tercio@11 100 ["LeftTextWidth"] = true,
Tercio@11 101 ["RightTextWidth"] = true,
Tercio@11 102 ["LeftTextHeight"] = true,
Tercio@11 103 ["RightTextHeight"] = true,
Tercio@11 104 ["NoFade"] = true,
Tercio@11 105 ["MyAnchor"] = true,
Tercio@11 106 ["Anchor"] = true,
Tercio@11 107 ["RelativeAnchor"] = true,
Tercio@11 108 ["NoLastSelectedBar"] = true,
Tercio@11 109 ["SubMenuIsTooltip"] = true,
Tercio@11 110 ["LeftBorderSize"] = true,
Tercio@11 111 ["RightBorderSize"] = true,
Tercio@11 112 ["HeighMod"] = true,
Tercio@11 113 ["HeighModSub"] = true,
Tercio@11 114 ["IconBlendMode"] = true,
Tercio@11 115 ["IconBlendModeHover"] = true,
Tercio@11 116 ["SubFollowButton"] = true,
Tercio@11 117 ["IgnoreArrows"] = true,
Tercio@11 118 ["SelectedTopAnchorMod"] = true,
Tercio@11 119 ["SelectedBottomAnchorMod"] = true,
Tercio@11 120 ["SelectedLeftAnchorMod"] = true,
Tercio@11 121 ["SelectedRightAnchorMod"] = true,
Tercio@11 122 }
Tercio@11 123
Tercio@58 124 CoolTip.AliasList = {
Tercio@58 125 ["VerticalOffset"] = "ButtonsYMod",
Tercio@58 126 ["VerticalPadding"] = "YSpacingMod",
Tercio@58 127 ["LineHeightSizeOffset"] = "ButtonHeightMod",
Tercio@58 128 ["FrameHeightSizeOffset"] = "HeighMod",
Tercio@58 129
Tercio@58 130 }
Tercio@58 131
Tercio@11 132 CoolTip.OptionsTable = {}
Tercio@11 133
Tercio@11 134 --cprops
Tercio@11 135 CoolTip.Indexes = 0 --> amount of lines current on shown
Tercio@11 136 CoolTip.IndexesSub = {} --> amount of lines current on shown
Tercio@11 137 CoolTip.HaveSubMenu = false --> amount of lines current on shown
Tercio@11 138 CoolTip.SubIndexes = 0 --> amount of lines current on shown on sub menu
Tercio@11 139 CoolTip.Type = 1 --> 1 tooltip 2 tooltip with bars 3 menu 4 menu + submenus
Tercio@11 140 CoolTip.Host = nil --> frame to anchor
Tercio@11 141 CoolTip.LastSize = 0 --> last size
Tercio@11 142
Tercio@11 143 CoolTip.LastIndex = 0
Tercio@11 144
Tercio@11 145 CoolTip.internal_x_mod = 0
Tercio@11 146 CoolTip.internal_y_mod = 0
Tercio@11 147 CoolTip.overlap_checked = false
Tercio@11 148
Tercio@11 149 --defaults
Tercio@11 150 CoolTip.default_height = 20
Tercio@11 151 CoolTip.default_text_size = 10.5
Tercio@11 152 CoolTip.default_text_font = "GameFontHighlight"
Tercio@11 153
Tercio@11 154 CoolTip.selected_anchor = {}
Tercio@11 155 CoolTip.selected_anchor.left = 2
Tercio@11 156 CoolTip.selected_anchor.right = 0
Tercio@11 157 CoolTip.selected_anchor.top = 0
Tercio@11 158 CoolTip.selected_anchor.bottom = 0
Tercio@11 159
Tercio@11 160 CoolTip._default_font = SharedMedia:Fetch ("font", "Friz Quadrata TT")
Tercio@11 161
Tercio@55 162 --> create frames
Tercio@11 163
Tercio@11 164 --> main frame
Tercio@11 165 local frame1
Tercio@11 166 if (not GameCooltipFrame1) then
Tercio@11 167 frame1 = CreateFrame ("Frame", "GameCooltipFrame1", UIParent, "DFCooltipMainFrameTemplate")
Tercio@11 168 tinsert (UISpecialFrames, "GameCooltipFrame1")
Tercio@11 169 DF:CreateFlashAnimation (frame1)
Tercio@40 170
Tercio@40 171 if (DF.CreateBorder) then
Tercio@40 172 DF:CreateBorder (frame1, .3, .1, .03)
Tercio@40 173 end
Tercio@11 174 else
Tercio@11 175 frame1 = GameCooltipFrame1
Tercio@11 176 end
Tercio@11 177
Tercio@11 178 GameCooltipFrame1_FrameBackgroundCenter:SetTexture (DF.folder .. "cooltip_background")
Tercio@11 179 GameCooltipFrame1_FrameBackgroundCenter:SetTexCoord (0.10546875, 0.89453125, 0, 1)
Tercio@11 180 GameCooltipFrame1_FrameBackgroundLeft:SetTexture (DF.folder .. "cooltip_background")
Tercio@11 181 GameCooltipFrame1_FrameBackgroundLeft:SetTexCoord (0, 0.103515625, 0, 1)
Tercio@11 182 GameCooltipFrame1_FrameBackgroundRight:SetTexture (DF.folder .. "cooltip_background")
Tercio@11 183 GameCooltipFrame1_FrameBackgroundRight:SetTexCoord (0.896484375, 1, 0, 1)
Tercio@11 184
Tercio@11 185 --> secondary frame
Tercio@11 186 local frame2
Tercio@11 187 if (not GameCooltipFrame2) then
Tercio@11 188 frame2 = CreateFrame ("Frame", "GameCooltipFrame2", UIParent, "DFCooltipMainFrameTemplate")
Tercio@11 189 tinsert (UISpecialFrames, "GameCooltipFrame2")
Tercio@11 190 DF:CreateFlashAnimation (frame2)
Tercio@11 191 frame2:SetClampedToScreen (true)
Tercio@40 192
Tercio@40 193 if (DF.CreateBorder) then
Tercio@40 194 DF:CreateBorder (frame2, .3, .1, .03)
Tercio@40 195 end
Tercio@11 196 else
Tercio@11 197 frame2 = GameCooltipFrame2
Tercio@11 198 end
Tercio@11 199
Tercio@40 200 frame2:SetPoint ("bottomleft", frame1, "bottomright", 4, 0)
Tercio@11 201
Tercio@11 202 GameCooltipFrame2_FrameBackgroundCenter:SetTexture (DF.folder .. "cooltip_background")
Tercio@11 203 GameCooltipFrame2_FrameBackgroundCenter:SetTexCoord (0.10546875, 0.89453125, 0, 1)
Tercio@11 204 GameCooltipFrame2_FrameBackgroundLeft:SetTexture (DF.folder .. "cooltip_background")
Tercio@11 205 GameCooltipFrame2_FrameBackgroundLeft:SetTexCoord (0, 0.103515625, 0, 1)
Tercio@11 206 GameCooltipFrame2_FrameBackgroundRight:SetTexture (DF.folder .. "cooltip_background")
Tercio@11 207 GameCooltipFrame2_FrameBackgroundRight:SetTexCoord (0.896484375, 1, 0, 1)
Tercio@11 208
Tercio@11 209 CoolTip.frame1 = frame1
Tercio@11 210 CoolTip.frame2 = frame2
Tercio@26 211 DF:FadeFrame (frame1, 0)
Tercio@26 212 DF:FadeFrame (frame2, 0)
Tercio@11 213
Tercio@55 214 --> line container
Tercio@11 215 frame1.Lines = {}
Tercio@11 216 frame2.Lines = {}
Tercio@11 217
Tercio@11 218 ----------------------------------------------------------------------
Tercio@11 219 --> Title Function
Tercio@11 220 ----------------------------------------------------------------------
Tercio@11 221
Tercio@11 222 function CoolTip:SetTitle (_f, text)
Tercio@11 223 if (_f == 1) then
Tercio@11 224 CoolTip.title1 = true
Tercio@11 225 CoolTip.title_text = text
Tercio@11 226 end
Tercio@11 227 end
Tercio@11 228
Tercio@11 229 function CoolTip:SetTitleAnchor (_f, _anchor, ...)
Tercio@11 230 _anchor = string.lower (_anchor)
Tercio@11 231 if (_f == 1) then
Tercio@11 232 self.frame1.titleIcon:ClearAllPoints()
Tercio@11 233 self.frame1.titleText:ClearAllPoints()
Tercio@11 234
Tercio@11 235 if (_anchor == "left") then
Tercio@11 236 self.frame1.titleIcon:SetPoint ("left", frame1, "left", ...)
Tercio@11 237 self.frame1.titleText:SetPoint ("left", frame1.titleIcon, "right")
Tercio@11 238
Tercio@11 239 elseif (_anchor == "center") then
Tercio@11 240 self.frame1.titleIcon:SetPoint ("center", frame1, "center")
Tercio@11 241 self.frame1.titleIcon:SetPoint ("bottom", frame1, "top")
Tercio@11 242 self.frame1.titleText:SetPoint ("left", frame1.titleIcon, "right")
Tercio@11 243 self.frame1.titleText:SetText ("TESTE")
Tercio@11 244
Tercio@11 245 self.frame1.titleText:Show()
Tercio@11 246 self.frame1.titleIcon:Show()
Tercio@11 247
Tercio@11 248 elseif (_anchor == "right") then
Tercio@11 249 self.frame1.titleIcon:SetPoint ("right", frame1, "right", ...)
Tercio@11 250 self.frame1.titleText:SetPoint ("right", frame1.titleIcon, "left")
Tercio@11 251
Tercio@11 252 end
Tercio@11 253 elseif (_f == 2) then
Tercio@11 254 self.frame2.titleIcon:ClearAllPoints()
Tercio@11 255 self.frame2.titleText:ClearAllPoints()
Tercio@11 256 if (_anchor == "left") then
Tercio@11 257 self.frame2.titleIcon:SetPoint ("left", frame2, "left", ...)
Tercio@11 258 self.frame2.titleText:SetPoint ("left", frame2.titleIcon, "right")
Tercio@11 259 elseif (_anchor == "center") then
Tercio@11 260 self.frame2.titleIcon:SetPoint ("center", frame2, "center", ...)
Tercio@11 261 self.frame2.titleText:SetPoint ("left", frame2.titleIcon, "right")
Tercio@11 262 elseif (_anchor == "right") then
Tercio@11 263 self.frame2.titleIcon:SetPoint ("right", frame2, "right", ...)
Tercio@11 264 self.frame2.titleText:SetPoint ("right", frame2.titleIcon, "left")
Tercio@11 265 end
Tercio@11 266 end
Tercio@11 267 end
Tercio@11 268
Tercio@11 269 ----------------------------------------------------------------------
Tercio@11 270 --> Button Hide and Show Functions
Tercio@11 271 ----------------------------------------------------------------------
Tercio@11 272
Tercio@11 273 local elapsedTime = 0
Tercio@11 274
Tercio@11 275 CoolTip.mouseOver = false
Tercio@11 276 CoolTip.buttonClicked = false
Tercio@11 277
Tercio@11 278 frame1:SetScript ("OnEnter", function (self)
Tercio@55 279 --> is cooltip a menu?
Tercio@55 280 if (CoolTip.Type ~= 1 and CoolTip.Type ~= 2) then
Tercio@11 281 CoolTip.active = true
Tercio@11 282 CoolTip.mouseOver = true
Tercio@20 283 CoolTip.had_interaction = true
Tercio@11 284 self:SetScript ("OnUpdate", nil)
Tercio@26 285 DF:FadeFrame (self, 0)
Tercio@55 286
Tercio@11 287 if (CoolTip.sub_menus) then
Tercio@26 288 DF:FadeFrame (frame2, 0)
Tercio@11 289 end
Tercio@11 290 end
Tercio@11 291 end)
Tercio@11 292
Tercio@11 293 frame2:SetScript ("OnEnter", function (self)
Tercio@11 294 if (CoolTip.OptionsTable.SubMenuIsTooltip) then
Tercio@11 295 return CoolTip:Close()
Tercio@11 296 end
Tercio@11 297 if (CoolTip.Type ~= 1 and CoolTip.Type ~= 2) then
Tercio@11 298 CoolTip.active = true
Tercio@11 299 CoolTip.mouseOver = true
Tercio@20 300 CoolTip.had_interaction = true
Tercio@11 301 self:SetScript ("OnUpdate", nil)
Tercio@26 302 DF:FadeFrame (self, 0)
Tercio@26 303 DF:FadeFrame (frame1, 0)
Tercio@11 304 end
Tercio@11 305 end)
Tercio@11 306
Tercio@11 307 local OnLeaveUpdateFrame1 = function (self, elapsed)
Tercio@11 308 elapsedTime = elapsedTime+elapsed
Tercio@11 309 if (elapsedTime > 0.7) then
Tercio@11 310 if (not CoolTip.active and not CoolTip.buttonClicked and self == CoolTip.Host) then
Tercio@26 311 DF:FadeFrame (self, 1)
Tercio@26 312 DF:FadeFrame (frame2, 1)
Tercio@11 313 elseif (not CoolTip.active) then
Tercio@26 314 DF:FadeFrame (self, 1)
Tercio@26 315 DF:FadeFrame (frame2, 1)
Tercio@11 316 end
Tercio@11 317 self:SetScript ("OnUpdate", nil)
Tercio@11 318 frame2:SetScript ("OnUpdate", nil)
Tercio@11 319 end
Tercio@11 320 end
Tercio@11 321
Tercio@11 322 frame1:SetScript ("OnLeave", function (self)
Tercio@11 323
Tercio@11 324 if (CoolTip.Type ~= 1 and CoolTip.Type ~= 2) then
Tercio@11 325 CoolTip.active = false
Tercio@11 326 CoolTip.mouseOver = false
Tercio@11 327 elapsedTime = 0
Tercio@11 328 self:SetScript ("OnUpdate", OnLeaveUpdateFrame1)
Tercio@11 329 else
Tercio@11 330 CoolTip.active = false
Tercio@11 331 CoolTip.mouseOver = false
Tercio@11 332 elapsedTime = 0
Tercio@11 333 self:SetScript ("OnUpdate", OnLeaveUpdateFrame1)
Tercio@11 334 end
Tercio@11 335 end)
Tercio@11 336
Tercio@11 337 local OnLeaveUpdateFrame2 = function (self, elapsed)
Tercio@11 338 elapsedTime = elapsedTime+elapsed
Tercio@11 339 if (elapsedTime > 0.7) then
Tercio@11 340 if (not CoolTip.active and not CoolTip.buttonClicked and self == CoolTip.Host) then
Tercio@26 341 DF:FadeFrame (self, 1)
Tercio@26 342 DF:FadeFrame (frame2, 1)
Tercio@11 343 elseif (not CoolTip.active) then
Tercio@26 344 DF:FadeFrame (self, 1)
Tercio@26 345 DF:FadeFrame (frame2, 1)
Tercio@11 346 end
Tercio@11 347 self:SetScript ("OnUpdate", nil)
Tercio@11 348 frame1:SetScript ("OnUpdate", nil)
Tercio@11 349 end
Tercio@11 350 end
Tercio@11 351
Tercio@11 352 frame2:SetScript ("OnLeave", function (self)
Tercio@11 353 if (CoolTip.Type ~= 1 and CoolTip.Type ~= 2) then
Tercio@11 354 CoolTip.active = false
Tercio@11 355 CoolTip.mouseOver = false
Tercio@11 356 elapsedTime = 0
Tercio@11 357 self:SetScript ("OnUpdate", OnLeaveUpdateFrame2)
Tercio@11 358 else
Tercio@11 359 CoolTip.active = false
Tercio@11 360 CoolTip.mouseOver = false
Tercio@11 361 elapsedTime = 0
Tercio@11 362 self:SetScript ("OnUpdate", OnLeaveUpdateFrame2)
Tercio@11 363
Tercio@11 364 end
Tercio@11 365 end)
Tercio@53 366
Tercio@11 367 frame1:SetScript ("OnHide", function (self)
Tercio@11 368 CoolTip.active = false
Tercio@11 369 CoolTip.buttonClicked = false
Tercio@11 370 CoolTip.mouseOver = false
Tercio@53 371
Tercio@53 372 --> reset parent and strata
Tercio@53 373 frame1:SetParent (UIParent)
Tercio@53 374 frame2:SetParent (UIParent)
Tercio@53 375 frame1:SetFrameStrata ("TOOLTIP")
Tercio@53 376 frame2:SetFrameStrata ("TOOLTIP")
Tercio@11 377 end)
Tercio@53 378
Tercio@11 379 ----------------------------------------------------------------------
Tercio@11 380 --> Button Creation Functions
Tercio@11 381 ----------------------------------------------------------------------
Tercio@11 382
Tercio@11 383 function GameCooltipButtonMouseDown (button)
Tercio@11 384 local mod = CoolTip.OptionsTable.TextHeightMod or 0
Tercio@11 385 button.leftText:SetPoint ("center", button.leftIcon, "center", 0, 0+mod)
Tercio@11 386 button.leftText:SetPoint ("left", button.leftIcon, "right", 4, -1+mod)
Tercio@11 387 end
Tercio@11 388
Tercio@11 389 function GameCooltipButtonMouseUp (button)
Tercio@11 390 local mod = CoolTip.OptionsTable.TextHeightMod or 0
Tercio@11 391 button.leftText:SetPoint ("center", button.leftIcon, "center", 0, 0+mod)
Tercio@11 392 button.leftText:SetPoint ("left", button.leftIcon, "right", 3, 0+mod)
Tercio@11 393 end
Tercio@11 394
Tercio@11 395 function CoolTip:CreateButton (index, frame, name)
Tercio@11 396 local new_button = CreateFrame ("Button", name, frame, "DFCooltipButtonTemplate")
Tercio@11 397 frame.Lines [index] = new_button
Tercio@11 398 return new_button
Tercio@11 399 end
Tercio@11 400
Tercio@11 401 local OnEnterUpdateButton = function (self, elapsed)
Tercio@55 402 elapsedTime = elapsedTime+elapsed
Tercio@55 403 if (elapsedTime > 0.001) then
Tercio@55 404 --> search key: ~onenterupdatemain
Tercio@55 405 CoolTip:ShowSub (self.index)
Tercio@55 406 CoolTip.last_button = self.index
Tercio@55 407 self:SetScript ("OnUpdate", nil)
Tercio@55 408 end
Tercio@55 409 end
Tercio@55 410
Tercio@11 411 local OnLeaveUpdateButton = function (self, elapsed)
Tercio@55 412 elapsedTime = elapsedTime+elapsed
Tercio@55 413 if (elapsedTime > 0.7) then
Tercio@55 414 if (not CoolTip.active and not CoolTip.buttonClicked) then
Tercio@55 415 DF:FadeFrame (frame1, 1)
Tercio@55 416 DF:FadeFrame (frame2, 1)
Tercio@55 417
Tercio@55 418 elseif (not CoolTip.active) then
Tercio@55 419 DF:FadeFrame (frame1, 1)
Tercio@55 420 DF:FadeFrame (frame2, 1)
Tercio@55 421 end
Tercio@55 422 frame1:SetScript ("OnUpdate", nil)
Tercio@55 423 end
Tercio@55 424 end
Tercio@55 425
Tercio@55 426 local OnEnterMainButton = function (self)
Tercio@55 427 if (CoolTip.Type ~= 1 and CoolTip.Type ~= 2 and not self.isDiv) then
Tercio@55 428 CoolTip.active = true
Tercio@55 429 CoolTip.mouseOver = true
Tercio@55 430 CoolTip.had_interaction = true
Tercio@55 431
Tercio@55 432 frame1:SetScript ("OnUpdate", nil)
Tercio@55 433 frame2:SetScript ("OnUpdate", nil)
Tercio@55 434
Tercio@55 435 self.background:Show()
Tercio@55 436
Tercio@55 437 if (CoolTip.OptionsTable.IconBlendModeHover) then
Tercio@55 438 self.leftIcon:SetBlendMode (CoolTip.OptionsTable.IconBlendModeHover)
Tercio@55 439 else
Tercio@55 440 self.leftIcon:SetBlendMode ("BLEND")
Tercio@55 441 end
Tercio@55 442
Tercio@55 443 if (CoolTip.PopupFrameTable [self.index]) then
Tercio@55 444 local on_enter, on_leave, param1, param2 = unpack (CoolTip.PopupFrameTable [self.index])
Tercio@55 445 if (on_enter) then
Tercio@55 446 xpcall (on_enter, geterrorhandler(), frame1, param1, param2)
Tercio@55 447 end
Tercio@55 448
Tercio@55 449 elseif (CoolTip.IndexesSub [self.index] and CoolTip.IndexesSub [self.index] > 0) then
Tercio@55 450 if (CoolTip.OptionsTable.SubMenuIsTooltip) then
Tercio@55 451 CoolTip:ShowSub (self.index)
Tercio@55 452 self.index = self.ID
Tercio@55 453 else
Tercio@55 454 if (CoolTip.last_button) then
Tercio@55 455 CoolTip:ShowSub (CoolTip.last_button)
Tercio@55 456 else
Tercio@55 457 CoolTip:ShowSub (self.index)
Tercio@55 458 end
Tercio@55 459 elapsedTime = 0
Tercio@55 460 self.index = self.ID
Tercio@55 461 self:SetScript ("OnUpdate", OnEnterUpdateButton)
Tercio@55 462 end
Tercio@55 463
Tercio@55 464 else
Tercio@55 465 --hide second frame
Tercio@55 466 DF:FadeFrame (frame2, 1)
Tercio@55 467 CoolTip.last_button = nil
Tercio@55 468 end
Tercio@55 469 else
Tercio@55 470 CoolTip.mouseOver = true
Tercio@55 471 CoolTip.had_interaction = true
Tercio@55 472 end
Tercio@55 473 end
Tercio@55 474
Tercio@55 475 local OnLeaveMainButton = function (self)
Tercio@55 476 if (CoolTip.Type ~= 1 and CoolTip.Type ~= 2 and not self.isDiv) then
Tercio@55 477 CoolTip.active = false
Tercio@55 478 CoolTip.mouseOver = false
Tercio@55 479 self:SetScript ("OnUpdate", nil)
Tercio@55 480
Tercio@55 481 self.background:Hide()
Tercio@55 482
Tercio@55 483 if (CoolTip.OptionsTable.IconBlendMode) then
Tercio@55 484 self.leftIcon:SetBlendMode (CoolTip.OptionsTable.IconBlendMode)
Tercio@55 485 self.rightIcon:SetBlendMode (CoolTip.OptionsTable.IconBlendMode)
Tercio@55 486 else
Tercio@55 487 self.leftIcon:SetBlendMode ("BLEND")
Tercio@55 488 self.rightIcon:SetBlendMode ("BLEND")
Tercio@55 489 end
Tercio@55 490
Tercio@55 491 if (CoolTip.PopupFrameTable [self.index]) then
Tercio@55 492 local on_enter, on_leave, param1, param2 = unpack (CoolTip.PopupFrameTable [self.index])
Tercio@55 493 if (on_leave) then
Tercio@55 494 xpcall (on_leave, geterrorhandler(), frame1, param1, param2)
Tercio@55 495 end
Tercio@55 496 end
Tercio@55 497
Tercio@55 498 elapsedTime = 0
Tercio@55 499 frame1:SetScript ("OnUpdate", OnLeaveUpdateButton)
Tercio@55 500 else
Tercio@55 501 CoolTip.active = false
Tercio@55 502 elapsedTime = 0
Tercio@55 503 frame1:SetScript ("OnUpdate", OnLeaveUpdateButton)
Tercio@55 504 CoolTip.mouseOver = false
Tercio@55 505 end
Tercio@55 506 end
Tercio@11 507
Tercio@11 508 function CoolTip:NewMainButton (i)
Tercio@55 509 local newButton = CoolTip:CreateButton (i, frame1, "GameCooltipMainButton"..i)
Tercio@11 510
Tercio@11 511 --> serach key: ~onenter
Tercio@55 512 newButton.ID = i
Tercio@55 513 newButton:SetScript ("OnEnter", OnEnterMainButton)
Tercio@55 514 newButton:SetScript ("OnLeave", OnLeaveMainButton)
Tercio@11 515
Tercio@55 516 return newButton
Tercio@11 517 end
Tercio@11 518
Tercio@55 519 --> buttons for the secondary frame
Tercio@55 520
Tercio@11 521 local OnLeaveUpdateButtonSec = function (self, elapsed)
Tercio@55 522 elapsedTime = elapsedTime+elapsed
Tercio@55 523 if (elapsedTime > 0.7) then
Tercio@55 524 if (not CoolTip.active and not CoolTip.buttonClicked) then
Tercio@55 525 DF:FadeFrame (frame1, 1)
Tercio@55 526 DF:FadeFrame (frame2, 1)
Tercio@55 527 elseif (not CoolTip.active) then
Tercio@55 528 DF:FadeFrame (frame1, 1)
Tercio@55 529 DF:FadeFrame (frame2, 1)
Tercio@55 530 end
Tercio@55 531 frame2:SetScript ("OnUpdate", nil)
Tercio@55 532 end
Tercio@55 533 end
Tercio@55 534
Tercio@55 535 local OnEnterSecondaryButton = function (self)
Tercio@55 536 if (CoolTip.OptionsTable.SubMenuIsTooltip) then
Tercio@55 537 return CoolTip:Close()
Tercio@55 538 end
Tercio@55 539 if (CoolTip.Type ~= 1 and CoolTip.Type ~= 2 and not self.isDiv) then
Tercio@55 540 CoolTip.active = true
Tercio@55 541 CoolTip.mouseOver = true
Tercio@55 542 CoolTip.had_interaction = true
Tercio@55 543
Tercio@55 544 self.background:Show()
Tercio@55 545
Tercio@55 546 if (CoolTip.OptionsTable.IconBlendModeHover) then
Tercio@55 547 self.leftIcon:SetBlendMode (CoolTip.OptionsTable.IconBlendModeHover)
Tercio@55 548 else
Tercio@55 549 self.leftIcon:SetBlendMode ("BLEND")
Tercio@55 550 end
Tercio@55 551
Tercio@55 552 frame1:SetScript ("OnUpdate", nil)
Tercio@55 553 frame2:SetScript ("OnUpdate", nil)
Tercio@55 554
Tercio@55 555 DF:FadeFrame (frame1, 0)
Tercio@55 556 DF:FadeFrame (frame2, 0)
Tercio@55 557 else
Tercio@55 558 CoolTip.mouseOver = true
Tercio@55 559 CoolTip.had_interaction = true
Tercio@55 560 end
Tercio@55 561 end
Tercio@55 562
Tercio@55 563 local OnLeaveSecondaryButton = function (self)
Tercio@55 564 if (CoolTip.Type ~= 1 and CoolTip.Type ~= 2) then
Tercio@55 565 CoolTip.active = false
Tercio@55 566 CoolTip.mouseOver = false
Tercio@55 567
Tercio@55 568 self.background:Hide()
Tercio@55 569
Tercio@55 570 if (CoolTip.OptionsTable.IconBlendMode) then
Tercio@55 571 self.leftIcon:SetBlendMode (CoolTip.OptionsTable.IconBlendMode)
Tercio@55 572 self.rightIcon:SetBlendMode (CoolTip.OptionsTable.IconBlendMode)
Tercio@55 573 else
Tercio@55 574 self.leftIcon:SetBlendMode ("BLEND")
Tercio@55 575 self.rightIcon:SetBlendMode ("BLEND")
Tercio@55 576 end
Tercio@55 577
Tercio@55 578 elapsedTime = 0
Tercio@55 579 frame2:SetScript ("OnUpdate", OnLeaveUpdateButtonSec)
Tercio@55 580 else
Tercio@55 581 CoolTip.active = false
Tercio@55 582 CoolTip.mouseOver = false
Tercio@55 583 elapsedTime = 0
Tercio@55 584 frame2:SetScript ("OnUpdate", OnLeaveUpdateButtonSec)
Tercio@55 585 end
Tercio@55 586 end
Tercio@11 587
Tercio@11 588 function CoolTip:NewSecondaryButton (i)
Tercio@55 589 local newButton = CoolTip:CreateButton (i, frame2, "GameCooltipSecButton"..i)
Tercio@11 590
Tercio@55 591 newButton.ID = i
Tercio@55 592 newButton:SetScript ("OnEnter", OnEnterSecondaryButton)
Tercio@55 593 newButton:SetScript ("OnLeave", OnLeaveSecondaryButton)
Tercio@11 594
Tercio@55 595 return newButton
Tercio@11 596 end
Tercio@11 597
Tercio@11 598 ----------------------------------------------------------------------
Tercio@11 599 --> Button Click Functions
Tercio@11 600 ----------------------------------------------------------------------
Tercio@11 601
Tercio@11 602 CoolTip.selected_anchor.left = 4
Tercio@11 603 CoolTip.selected_anchor.right = -4
Tercio@11 604 CoolTip.selected_anchor.top = 0
Tercio@11 605 CoolTip.selected_anchor.bottom = 0
Tercio@11 606
Tercio@11 607 function CoolTip:HideSelectedTexture (frame)
Tercio@11 608 frame.selectedTop:Hide()
Tercio@11 609 frame.selectedBottom:Hide()
Tercio@11 610 frame.selectedMiddle:Hide()
Tercio@11 611 end
Tercio@11 612
Tercio@11 613 function CoolTip:ShowSelectedTexture (frame)
Tercio@11 614 frame.selectedTop:Show()
Tercio@11 615 frame.selectedBottom:Show()
Tercio@11 616 frame.selectedMiddle:Show()
Tercio@11 617 end
Tercio@11 618
Tercio@11 619 function CoolTip:SetSelectedAnchor (frame, button)
Tercio@11 620
Tercio@11 621 local left = CoolTip.selected_anchor.left + (CoolTip.OptionsTable.SelectedLeftAnchorMod or 0)
Tercio@11 622 local right = CoolTip.selected_anchor.right + (CoolTip.OptionsTable.SelectedRightAnchorMod or 0)
Tercio@11 623
Tercio@11 624 local top = CoolTip.selected_anchor.top + (CoolTip.OptionsTable.SelectedTopAnchorMod or 0)
Tercio@11 625 local bottom = CoolTip.selected_anchor.bottom + (CoolTip.OptionsTable.SelectedBottomAnchorMod or 0)
Tercio@11 626
Tercio@11 627 frame.selectedTop:ClearAllPoints()
Tercio@11 628 frame.selectedBottom:ClearAllPoints()
Tercio@11 629
Tercio@40 630 frame.selectedTop:SetPoint ("topleft", button, "topleft", left+1, top) --
Tercio@40 631 frame.selectedTop:SetPoint ("topright", button, "topright", right-1, top) --
Tercio@11 632
Tercio@40 633 frame.selectedBottom:SetPoint ("bottomleft", button, "bottomleft", left+1, bottom) --
Tercio@40 634 frame.selectedBottom:SetPoint ("bottomright", button, "bottomright", right-1, bottom) --
Tercio@11 635
Tercio@11 636 CoolTip:ShowSelectedTexture (frame)
Tercio@11 637 end
Tercio@11 638
Tercio@55 639 local OnClickFunctionMainButton = function (self, button)
Tercio@55 640 if (CoolTip.IndexesSub [self.index] and CoolTip.IndexesSub [self.index] > 0) then
Tercio@55 641 CoolTip:ShowSub (self.index)
Tercio@55 642 CoolTip.last_button = self.index
Tercio@55 643 end
Tercio@55 644
Tercio@55 645 CoolTip.buttonClicked = true
Tercio@55 646 CoolTip:SetSelectedAnchor (frame1, self)
Tercio@55 647
Tercio@55 648 if (not CoolTip.OptionsTable.NoLastSelectedBar) then
Tercio@55 649 CoolTip:ShowSelectedTexture (frame1)
Tercio@55 650 end
Tercio@55 651 CoolTip.SelectedIndexMain = self.index
Tercio@55 652
Tercio@55 653 if (CoolTip.FunctionsTableMain [self.index]) then
Tercio@55 654 local parameterTable = CoolTip.ParametersTableMain [self.index]
Tercio@55 655 local func = CoolTip.FunctionsTableMain [self.index]
Tercio@55 656 --> passing nil as the first parameter was a design mistake
Tercio@55 657 --CoolTip.FunctionsTableMain [self.index] (_, CoolTip.FixedValue, parameterTable [1], parameterTable [2], parameterTable [3], button)
Tercio@55 658 local okay, errortext = pcall (func, nil, CoolTip.FixedValue, parameterTable [1], parameterTable [2], parameterTable [3], button)
Tercio@55 659 if (not okay) then
Tercio@55 660 print ("Cooltip OnClick Error:", errortext)
Tercio@11 661 end
Tercio@55 662 end
Tercio@55 663 end
Tercio@55 664
Tercio@55 665 local OnClickFunctionSecondaryButton = function (self, button)
Tercio@55 666 CoolTip.buttonClicked = true
Tercio@55 667
Tercio@55 668 CoolTip:SetSelectedAnchor (frame2, self)
Tercio@55 669
Tercio@55 670 if (CoolTip.FunctionsTableSub [self.mainIndex] and CoolTip.FunctionsTableSub [self.mainIndex] [self.index]) then
Tercio@55 671 local parameterTable = CoolTip.ParametersTableSub [self.mainIndex] [self.index]
Tercio@55 672 local func = CoolTip.FunctionsTableSub [self.mainIndex] [self.index]
Tercio@55 673 --CoolTip.FunctionsTableSub [self.mainIndex] [self.index] (_, CoolTip.FixedValue, parameterTable [1], parameterTable [2], parameterTable [3], button)
Tercio@55 674 local okay, errortext = pcall (func, nil, CoolTip.FixedValue, parameterTable [1], parameterTable [2], parameterTable [3], button)
Tercio@55 675 if (not okay) then
Tercio@55 676 print ("Cooltip OnClick Error:", errortext)
Tercio@55 677 end
Tercio@55 678 end
Tercio@55 679
Tercio@55 680 local botao_p = frame1.Lines [self.mainIndex]
Tercio@55 681 CoolTip:SetSelectedAnchor (frame1, botao_p)
Tercio@11 682
Tercio@55 683 if (not CoolTip.OptionsTable.NoLastSelectedBar) then
Tercio@55 684 CoolTip:ShowSelectedTexture (frame1)
Tercio@55 685 end
Tercio@55 686
Tercio@55 687 CoolTip.SelectedIndexMain = self.mainIndex
Tercio@55 688 CoolTip.SelectedIndexSec [self.mainIndex] = self.index
Tercio@55 689 end
Tercio@55 690
Tercio@55 691
Tercio@55 692 --> format functions
Tercio@11 693
Tercio@11 694 function CoolTip:TextAndIcon (index, frame, menuButton, leftTextTable, rightTextTable, leftIconTable, rightIconTable, isSub)
Tercio@11 695 --> reset width
Tercio@11 696 menuButton.leftText:SetWidth (0)
Tercio@11 697 menuButton.leftText:SetHeight (0)
Tercio@11 698 menuButton.rightText:SetWidth (0)
Tercio@11 699 menuButton.rightText:SetHeight (0)
Tercio@11 700
Tercioo@30 701 menuButton.rightText:SetPoint ("right", menuButton.rightIcon, "left", CoolTip.OptionsTable.RightTextMargin or -3, 0)
Tercioo@30 702
Tercio@11 703 --> set text
Tercio@11 704 if (leftTextTable) then
Tercio@11 705
Tercio@11 706 menuButton.leftText:SetText (leftTextTable [1])
Tercio@11 707
Tercio@11 708 local r, g, b, a = leftTextTable [2], leftTextTable [3], leftTextTable [4], leftTextTable [5]
Tercio@11 709
Tercio@11 710 if (r == 0 and g == 0 and b == 0 and a == 0) then
Tercio@11 711 if (CoolTip.OptionsTable.TextColor) then
Tercio@11 712 r, g, b, a = DF:ParseColors (CoolTip.OptionsTable.TextColor)
Tercio@11 713 menuButton.leftText:SetTextColor (r, g, b, a)
Tercio@11 714 else
Tercio@11 715 menuButton.leftText:SetTextColor (1, 1, 1, 1)
Tercio@11 716 end
Tercio@11 717 else
Tercio@11 718 menuButton.leftText:SetTextColor (r, g, b, a)
Tercio@11 719 end
Tercio@11 720
Tercio@11 721 if (CoolTip.OptionsTable.TextSize and not leftTextTable [6]) then
Tercio@11 722 DF:SetFontSize (menuButton.leftText, CoolTip.OptionsTable.TextSize)
Tercio@11 723 end
Tercio@11 724
Tercio@11 725 if (CoolTip.OptionsTable.LeftTextWidth) then
Tercio@11 726 menuButton.leftText:SetWidth (CoolTip.OptionsTable.LeftTextWidth)
Tercio@11 727 else
Tercio@11 728 menuButton.leftText:SetWidth (0)
Tercio@11 729 end
Tercio@11 730
Tercio@11 731 if (CoolTip.OptionsTable.LeftTextHeight) then
Tercio@11 732 menuButton.leftText:SetHeight (CoolTip.OptionsTable.LeftTextHeight)
Tercio@11 733 else
Tercio@11 734 menuButton.leftText:SetHeight (0)
Tercio@11 735 end
Tercio@11 736
Tercio@11 737 if (CoolTip.OptionsTable.TextFont and not leftTextTable [7]) then --font
Tercio@11 738
Tercio@11 739 if (_G [CoolTip.OptionsTable.TextFont]) then
Tercio@11 740 menuButton.leftText:SetFontObject (GameFontRed or CoolTip.OptionsTable.TextFont)
Tercio@11 741 else
Tercio@11 742 local font = SharedMedia:Fetch ("font", CoolTip.OptionsTable.TextFont)
Tercio@11 743 local _, size, flags = menuButton.leftText:GetFont()
Tercio@11 744 flags = leftTextTable [8] or CoolTip.OptionsTable.TextShadow or nil
Tercio@11 745 size = leftTextTable [6] or CoolTip.OptionsTable.TextSize or size
Tercio@11 746 menuButton.leftText:SetFont (font, size, flags)
Tercio@11 747 end
Tercio@11 748
Tercio@11 749 elseif (leftTextTable [7]) then
Tercio@11 750 if (_G [leftTextTable [7]]) then
Tercio@11 751 menuButton.leftText:SetFontObject (leftTextTable [7])
Tercio@11 752 local face, size, flags = menuButton.leftText:GetFont()
Tercio@11 753 flags = leftTextTable [8] or CoolTip.OptionsTable.TextShadow or nil
Tercio@11 754 size = leftTextTable [6] or CoolTip.OptionsTable.TextSize or size
Tercio@11 755 menuButton.leftText:SetFont (face, size, flags)
Tercio@11 756 else
Tercio@11 757 local font = SharedMedia:Fetch ("font", leftTextTable [7])
Tercio@11 758 local face, size, flags = menuButton.leftText:GetFont()
Tercio@11 759 flags = leftTextTable [8] or CoolTip.OptionsTable.TextShadow or nil
Tercio@11 760 size = leftTextTable [6] or CoolTip.OptionsTable.TextSize or size
Tercio@11 761 menuButton.leftText:SetFont (face, size, flags)
Tercio@11 762 end
Tercio@11 763 else
Tercio@11 764 menuButton.leftText:SetFont (CoolTip._default_font, leftTextTable [6] or CoolTip.OptionsTable.TextSize or 10, leftTextTable [8] or CoolTip.OptionsTable.TextShadow)
Tercio@11 765 end
Tercio@11 766
Tercio@11 767 local height_mod = CoolTip.OptionsTable.TextHeightMod or 0
Tercio@11 768 menuButton.leftText:SetPoint ("center", menuButton.leftIcon, "center", 0, 0+height_mod)
Tercio@11 769 menuButton.leftText:SetPoint ("left", menuButton.leftIcon, "right", 3, 0+height_mod)
Tercio@11 770
Tercio@11 771 else
Tercio@11 772 menuButton.leftText:SetText ("")
Tercio@11 773 end
Tercio@11 774
Tercio@11 775 if (rightTextTable) then
Tercio@11 776 menuButton.rightText:SetText (rightTextTable [1])
Tercio@11 777
Tercio@11 778 local r, g, b, a = rightTextTable [2], rightTextTable [3], rightTextTable [4], rightTextTable [5]
Tercio@11 779
Tercio@11 780 if (r == 0 and g == 0 and b == 0 and a == 0) then
Tercio@11 781
Tercio@11 782 if (CoolTip.OptionsTable.TextColorRight) then
Tercio@11 783 r, g, b, a = DF:ParseColors (CoolTip.OptionsTable.TextColorRight)
Tercio@11 784 menuButton.rightText:SetTextColor (r, g, b, a)
Tercio@11 785 elseif (CoolTip.OptionsTable.TextColor) then
Tercio@11 786 r, g, b, a = DF:ParseColors (CoolTip.OptionsTable.TextColor)
Tercio@11 787 menuButton.rightText:SetTextColor (r, g, b, a)
Tercio@11 788 else
Tercio@11 789 menuButton.rightText:SetTextColor (1, 1, 1, 1)
Tercio@11 790 end
Tercio@11 791 else
Tercio@11 792 menuButton.rightText:SetTextColor (r, g, b, a)
Tercio@11 793 end
Tercio@11 794
Tercio@11 795 if (CoolTip.OptionsTable.TextSize and not rightTextTable [6]) then
Tercio@11 796 DF:SetFontSize (menuButton.rightText, CoolTip.OptionsTable.TextSize)
Tercio@11 797 end
Tercio@11 798
Tercio@11 799 if (CoolTip.OptionsTable.RightTextWidth) then
Tercio@11 800 menuButton.rightText:SetWidth (CoolTip.OptionsTable.RightTextWidth)
Tercio@11 801 else
Tercio@11 802 menuButton.rightText:SetWidth (0)
Tercio@11 803 end
Tercio@11 804
Tercio@11 805 if (CoolTip.OptionsTable.TextFont and not rightTextTable [7]) then
Tercio@11 806 if (_G [CoolTip.OptionsTable.TextFont]) then
Tercio@11 807 menuButton.rightText:SetFontObject (CoolTip.OptionsTable.TextFont)
Tercio@11 808 else
Tercio@11 809 local font = SharedMedia:Fetch ("font", CoolTip.OptionsTable.TextFont)
Tercio@11 810 local _, size, flags = menuButton.rightText:GetFont()
Tercio@11 811 flags = rightTextTable [8] or CoolTip.OptionsTable.TextShadow or nil
Tercio@11 812 size = rightTextTable [6] or CoolTip.OptionsTable.TextSize or size
Tercio@11 813 menuButton.rightText:SetFont (font, size, flags)
Tercio@11 814 end
Tercio@11 815
Tercio@11 816 elseif (rightTextTable [7]) then
Tercio@11 817 if (_G [rightTextTable [7]]) then
Tercio@11 818 menuButton.rightText:SetFontObject (rightTextTable [7])
Tercio@11 819 local face, size, flags = menuButton.rightText:GetFont()
Tercio@11 820 flags = rightTextTable [8] or CoolTip.OptionsTable.TextShadow or nil
Tercio@11 821 size = rightTextTable [6] or CoolTip.OptionsTable.TextSize or size
Tercio@11 822 menuButton.rightText:SetFont (face, size, flags)
Tercio@11 823 else
Tercio@11 824 local font = SharedMedia:Fetch ("font", rightTextTable [7])
Tercio@11 825 local face, size, flags = menuButton.rightText:GetFont()
Tercio@11 826 flags = rightTextTable [8] or CoolTip.OptionsTable.TextShadow or nil
Tercio@11 827 size = rightTextTable [6] or CoolTip.OptionsTable.TextSize or size
Tercio@11 828 menuButton.rightText:SetFont (face, size, flags)
Tercio@11 829 end
Tercio@11 830
Tercio@11 831 else
Tercio@11 832 menuButton.rightText:SetFont (CoolTip._default_font, rightTextTable [6] or CoolTip.OptionsTable.TextSize or 10, rightTextTable [8] or CoolTip.OptionsTable.TextShadow)
Tercio@11 833 end
Tercio@11 834
Tercio@11 835
Tercio@11 836 else
Tercio@11 837 menuButton.rightText:SetText ("")
Tercio@11 838 end
Tercio@11 839
Tercio@11 840 --> left icon
Tercio@11 841 if (leftIconTable and leftIconTable [1]) then
Tercio@11 842 menuButton.leftIcon:SetTexture (leftIconTable [1])
Tercio@11 843 menuButton.leftIcon:SetWidth (leftIconTable [2])
Tercio@11 844 menuButton.leftIcon:SetHeight (leftIconTable [3])
Tercio@11 845 menuButton.leftIcon:SetTexCoord (leftIconTable [4], leftIconTable [5], leftIconTable [6], leftIconTable [7])
Tercio@11 846
Tercio@11 847 local ColorR, ColorG, ColorB, ColorA = DF:ParseColors (leftIconTable [8])
Tercio@11 848 menuButton.leftIcon:SetVertexColor (ColorR, ColorG, ColorB, ColorA)
Tercio@11 849
Tercio@11 850 if (CoolTip.OptionsTable.IconBlendMode) then
Tercio@11 851 menuButton.leftIcon:SetBlendMode (CoolTip.OptionsTable.IconBlendMode)
Tercio@11 852 else
Tercio@11 853 menuButton.leftIcon:SetBlendMode ("BLEND")
Tercio@11 854 end
Tercio@11 855
Tercio@11 856 menuButton.leftIcon:SetDesaturated (leftIconTable [9])
Tercio@11 857 else
Tercio@11 858 menuButton.leftIcon:SetTexture (nil)
Tercio@11 859 menuButton.leftIcon:SetWidth (1)
Tercio@11 860 menuButton.leftIcon:SetHeight (1)
Tercio@11 861 end
Tercio@11 862
Tercio@11 863 --> right icon
Tercio@11 864 if (rightIconTable and rightIconTable [1]) then
Tercio@11 865 menuButton.rightIcon:SetTexture (rightIconTable [1])
Tercio@11 866 menuButton.rightIcon:SetWidth (rightIconTable [2])
Tercio@11 867 menuButton.rightIcon:SetHeight (rightIconTable [3])
Tercio@11 868 menuButton.rightIcon:SetTexCoord (rightIconTable [4], rightIconTable [5], rightIconTable [6], rightIconTable [7])
Tercio@11 869
Tercio@11 870 local ColorR, ColorG, ColorB, ColorA = DF:ParseColors (rightIconTable [8])
Tercio@11 871 menuButton.rightIcon:SetVertexColor (ColorR, ColorG, ColorB, ColorA)
Tercio@11 872
Tercio@11 873 if (CoolTip.OptionsTable.IconBlendMode) then
Tercio@11 874 menuButton.rightIcon:SetBlendMode (CoolTip.OptionsTable.IconBlendMode)
Tercio@11 875 else
Tercio@11 876 menuButton.rightIcon:SetBlendMode ("BLEND")
Tercio@11 877 end
Tercio@11 878
Tercio@11 879 menuButton.rightIcon:SetDesaturated (rightIconTable [9])
Tercio@11 880 else
Tercio@11 881 menuButton.rightIcon:SetTexture (nil)
Tercio@11 882 menuButton.rightIcon:SetWidth (1)
Tercio@11 883 menuButton.rightIcon:SetHeight (1)
Tercio@11 884 end
Tercio@11 885
Tercio@11 886 --> overwrite icon size
Tercio@11 887 if (CoolTip.OptionsTable.IconSize) then
Tercio@11 888 menuButton.leftIcon:SetWidth (CoolTip.OptionsTable.IconSize)
Tercio@11 889 menuButton.leftIcon:SetHeight (CoolTip.OptionsTable.IconSize)
Tercio@11 890 menuButton.rightIcon:SetWidth (CoolTip.OptionsTable.IconSize)
Tercio@11 891 menuButton.rightIcon:SetHeight (CoolTip.OptionsTable.IconSize)
Tercio@11 892 end
Tercio@11 893
Tercio@40 894 menuButton.leftText:SetHeight (0)
Tercio@40 895 menuButton.rightText:SetHeight (0)
Tercio@40 896
Tercio@11 897 if (CoolTip.Type == 2) then
Tercio@11 898 CoolTip:LeftTextSpace (menuButton)
Tercio@11 899 end
Tercio@40 900 if (CoolTip.OptionsTable.LeftTextHeight) then
Tercio@40 901 menuButton.leftText:SetHeight (CoolTip.OptionsTable.LeftTextHeight)
Tercio@40 902 end
Tercio@40 903 if (CoolTip.OptionsTable.RightTextHeight) then
Tercio@40 904 menuButton.rightText:SetHeight (CoolTip.OptionsTable.RightTextHeight)
Tercio@40 905 end
Tercio@11 906
Tercio@11 907 --> string length
Tercio@11 908 if (not isSub) then --> main frame
Tercio@11 909 if (not CoolTip.OptionsTable.FixedWidth) then
Tercio@11 910 if (CoolTip.Type == 1 or CoolTip.Type == 2) then
Tercio@11 911 local stringWidth = menuButton.leftText:GetStringWidth() + menuButton.rightText:GetStringWidth() + menuButton.leftIcon:GetWidth() + menuButton.rightIcon:GetWidth() + 10
Tercio@11 912 if (stringWidth > frame.w) then
Tercio@11 913 frame.w = stringWidth
Tercio@11 914 end
Tercio@11 915 end
Tercio@11 916 else
Tercio@40 917 menuButton.leftText:SetWidth (CoolTip.OptionsTable.FixedWidth - menuButton.leftIcon:GetWidth() - menuButton.rightText:GetStringWidth() - menuButton.rightIcon:GetWidth() - 22)
Tercio@11 918 end
Tercio@11 919 else
Tercio@11 920 if (not CoolTip.OptionsTable.FixedWidthSub) then
Tercio@11 921 if (CoolTip.Type == 1 or CoolTip.Type == 2) then
Tercio@11 922 local stringWidth = menuButton.leftText:GetStringWidth() + menuButton.rightText:GetStringWidth() + menuButton.leftIcon:GetWidth() + menuButton.rightIcon:GetWidth()
Tercio@11 923 if (stringWidth > frame.w) then
Tercio@11 924 frame.w = stringWidth
Tercio@11 925 end
Tercio@11 926 end
Tercio@11 927 else
Tercio@40 928 menuButton.leftText:SetWidth (CoolTip.OptionsTable.FixedWidthSub - menuButton.leftIcon:GetWidth() - 12)
Tercio@11 929 end
Tercio@11 930 end
Tercio@11 931
Tercio@11 932 local height = _math_max ( menuButton.leftIcon:GetHeight(), menuButton.rightIcon:GetHeight(), menuButton.leftText:GetStringHeight(), menuButton.rightText:GetStringHeight() )
Tercio@11 933 if (height > frame.hHeight) then
Tercio@11 934 frame.hHeight = height
Tercio@11 935 end
Tercio@11 936
Tercio@11 937 end
Tercio@11 938
Tercio@11 939 function CoolTip:RefreshSpark (menuButton)
Tercio@11 940 menuButton.spark:ClearAllPoints()
Tercio@45 941 menuButton.spark:SetPoint ("LEFT", menuButton.statusbar, "LEFT", (menuButton.statusbar:GetValue() * (menuButton.statusbar:GetWidth() / 100)) - 5, 0)
Tercio@11 942 menuButton.spark2:ClearAllPoints()
Tercio@11 943 menuButton.spark2:SetPoint ("left", menuButton.statusbar, "left", menuButton.statusbar:GetValue() * (menuButton.statusbar:GetWidth()/100) - 16, 0)
Tercio@11 944 end
Tercio@11 945
Tercio@11 946 function CoolTip:StatusBar (menuButton, StatusBar)
Tercioo@29 947
Tercio@11 948 if (StatusBar) then
Tercio@11 949
Tercio@11 950 menuButton.statusbar:SetValue (StatusBar [1])
Tercio@11 951 menuButton.statusbar:SetStatusBarColor (StatusBar [2], StatusBar [3], StatusBar [4], StatusBar [5])
Tercio@11 952 menuButton.statusbar:SetHeight (20 + (CoolTip.OptionsTable.StatusBarHeightMod or 0))
Tercio@11 953
Tercio@11 954 menuButton.spark2:Hide()
Tercio@11 955 if (StatusBar [6]) then
Tercio@11 956 menuButton.spark:Show()
Tercio@11 957 --menuButton.spark:ClearAllPoints()
Tercio@11 958 --menuButton.spark:SetPoint ("LEFT", menuButton.statusbar, "LEFT", (StatusBar [1] * (menuButton.statusbar:GetWidth() / 100)) - 3, 0)
Tercio@11 959 else
Tercio@11 960 menuButton.spark:Hide()
Tercio@11 961 end
Tercio@11 962
Tercio@11 963 if (StatusBar [7]) then
Tercio@11 964 menuButton.statusbar2:SetValue (StatusBar[7].value)
Tercio@11 965 menuButton.statusbar2.texture:SetTexture (StatusBar[7].texture or [[Interface\RaidFrame\Raid-Bar-Hp-Fill]])
Tercio@11 966 if (StatusBar[7].specialSpark) then
Tercio@11 967 menuButton.spark2:Show()
Tercio@11 968 end
Tercio@11 969 if (StatusBar[7].color) then
Tercio@11 970 local ColorR, ColorG, ColorB, ColorA = DF:ParseColors (StatusBar[7].color)
Tercio@11 971 menuButton.statusbar2:SetStatusBarColor (ColorR, ColorG, ColorB, ColorA)
Tercio@11 972 else
Tercio@11 973 menuButton.statusbar2:SetStatusBarColor (1, 1, 1, 1)
Tercio@11 974 end
Tercio@11 975 else
Tercio@11 976 menuButton.statusbar2:SetValue (0)
Tercio@11 977 menuButton.spark2:Hide()
Tercio@11 978 end
Tercio@11 979
Tercioo@29 980 if (StatusBar [8]) then
Tercioo@29 981 local texture = SharedMedia:Fetch ("statusbar", StatusBar [8], true)
Tercioo@29 982 if (texture) then
Tercioo@29 983 menuButton.statusbar.texture:SetTexture (texture)
Tercioo@29 984 else
Tercioo@29 985 menuButton.statusbar.texture:SetTexture (StatusBar [8])
Tercioo@29 986 end
Tercioo@29 987 elseif (CoolTip.OptionsTable.StatusBarTexture) then
Tercioo@29 988 local texture = SharedMedia:Fetch ("statusbar", CoolTip.OptionsTable.StatusBarTexture, true)
Tercioo@29 989 if (texture) then
Tercioo@29 990 menuButton.statusbar.texture:SetTexture (texture)
Tercioo@29 991 else
Tercioo@29 992 menuButton.statusbar.texture:SetTexture (CoolTip.OptionsTable.StatusBarTexture)
Tercioo@29 993 end
Tercioo@29 994 else
Tercioo@29 995 menuButton.statusbar.texture:SetTexture ("Interface\\PaperDollInfoFrame\\UI-Character-Skills-Bar")
Tercioo@29 996 end
Tercioo@29 997
Tercioo@29 998 --[[
Tercio@11 999 if (CoolTip.OptionsTable.StatusBarTexture) then
Tercio@11 1000 menuButton.statusbar.texture:SetTexture (CoolTip.OptionsTable.StatusBarTexture)
Tercio@11 1001 else
Tercio@11 1002 menuButton.statusbar.texture:SetTexture ("Interface\\PaperDollInfoFrame\\UI-Character-Skills-Bar")
Tercio@11 1003 end
Tercioo@29 1004 --]]
Tercio@11 1005 else
Tercio@11 1006 menuButton.statusbar:SetValue (0)
Tercio@11 1007 menuButton.statusbar2:SetValue (0)
Tercio@11 1008 menuButton.spark:Hide()
Tercio@11 1009 menuButton.spark2:Hide()
Tercio@11 1010 end
Tercioo@29 1011
Tercio@11 1012 if (CoolTip.OptionsTable.LeftBorderSize) then
Tercio@11 1013 menuButton.statusbar:SetPoint ("left", menuButton, "left", 10 + CoolTip.OptionsTable.LeftBorderSize, 0)
Tercio@11 1014 else
Tercio@11 1015 menuButton.statusbar:SetPoint ("left", menuButton, "left", 10, 0)
Tercio@11 1016 end
Tercio@11 1017
Tercio@11 1018 if (CoolTip.OptionsTable.RightBorderSize) then
Tercio@11 1019 menuButton.statusbar:SetPoint ("right", menuButton, "right", CoolTip.OptionsTable.RightBorderSize + (- 10), 0)
Tercio@11 1020 else
Tercio@11 1021 menuButton.statusbar:SetPoint ("right", menuButton, "right", -10, 0)
Tercio@11 1022 end
Tercio@11 1023 end
Tercio@11 1024
Tercio@11 1025 function CoolTip:SetupMainButton (menuButton, index)
Tercio@11 1026 menuButton.index = index
Tercio@11 1027
Tercio@11 1028 --> setup texts and icons
Tercio@11 1029 CoolTip:TextAndIcon (index, frame1, menuButton, CoolTip.LeftTextTable [index], CoolTip.RightTextTable [index], CoolTip.LeftIconTable [index], CoolTip.RightIconTable [index])
Tercio@11 1030 --> setup statusbar
Tercio@11 1031 CoolTip:StatusBar (menuButton, CoolTip.StatusBarTable [index])
Tercio@11 1032
Tercio@11 1033 --> click
Tercio@11 1034 menuButton:RegisterForClicks ("LeftButtonDown")
Tercio@11 1035
Tercio@11 1036 --> string length
Tercio@11 1037 if (not CoolTip.OptionsTable.FixedWidth) then
Tercio@11 1038 local stringWidth = menuButton.leftText:GetStringWidth() + menuButton.rightText:GetStringWidth() + menuButton.leftIcon:GetWidth() + menuButton.rightIcon:GetWidth()
Tercio@11 1039 if (stringWidth > frame1.w) then
Tercio@11 1040 frame1.w = stringWidth
Tercio@11 1041 end
Tercio@11 1042 end
Tercio@11 1043
Tercio@11 1044 --> register click function
Tercio@55 1045 menuButton:SetScript ("OnClick", OnClickFunctionMainButton)
Tercio@11 1046 menuButton:Show()
Tercio@11 1047 end
Tercio@11 1048
Tercio@11 1049 function CoolTip:SetupSecondaryButton (menuButton, index, mainMenuIndex)
Tercio@11 1050
Tercio@11 1051 menuButton.index = index
Tercio@11 1052 menuButton.mainIndex = mainMenuIndex
Tercio@11 1053
Tercio@11 1054 --> setup texts and icons
Tercio@11 1055 CoolTip:TextAndIcon (index, frame2, menuButton, CoolTip.LeftTextTableSub [mainMenuIndex] and CoolTip.LeftTextTableSub [mainMenuIndex] [index],
Tercio@11 1056 CoolTip.RightTextTableSub [mainMenuIndex] and CoolTip.RightTextTableSub [mainMenuIndex] [index],
Tercio@11 1057 CoolTip.LeftIconTableSub [mainMenuIndex] and CoolTip.LeftIconTableSub [mainMenuIndex] [index],
Tercio@11 1058 CoolTip.RightIconTableSub [mainMenuIndex] and CoolTip.RightIconTableSub [mainMenuIndex] [index], true)
Tercio@11 1059 --> setup statusbar
Tercio@11 1060 CoolTip:StatusBar (menuButton, CoolTip.StatusBarTableSub [mainMenuIndex] and CoolTip.StatusBarTableSub [mainMenuIndex] [index])
Tercio@11 1061
Tercio@11 1062 --> click
Tercio@11 1063 menuButton:RegisterForClicks ("LeftButtonDown")
Tercio@11 1064
Tercio@11 1065 menuButton:ClearAllPoints()
Tercio@11 1066 menuButton:SetPoint ("center", frame2, "center")
Tercio@11 1067 menuButton:SetPoint ("top", frame2, "top", 0, (((index-1)*20)*-1)-3)
Tercio@40 1068 menuButton:SetPoint ("left", frame2, "left", -4, 0)
Tercio@40 1069 menuButton:SetPoint ("right", frame2, "right", 4, 0)
Tercio@11 1070
Tercio@26 1071 DF:FadeFrame (menuButton, 0)
Tercio@11 1072
Tercio@11 1073 --> string length
Tercio@11 1074 local stringWidth = menuButton.leftText:GetStringWidth() + menuButton.rightText:GetStringWidth() + menuButton.leftIcon:GetWidth() + menuButton.rightIcon:GetWidth()
Tercio@11 1075 if (stringWidth > frame2.w) then
Tercio@11 1076 frame2.w = stringWidth
Tercio@11 1077 end
Tercio@11 1078
Tercio@55 1079 menuButton:SetScript ("OnClick", OnClickFunctionSecondaryButton)
Tercio@11 1080 menuButton:Show()
Tercio@11 1081
Tercio@11 1082 return true
Tercio@11 1083 end
Tercio@11 1084
Tercio@11 1085 -- -- --------------------------------------------------------------------------------------------------------------
Tercio@11 1086
Tercio@11 1087 function CoolTip:SetupWallpaper (wallpaperTable, wallpaper)
Tercio@11 1088 local texture = wallpaperTable [1]
Tercio@11 1089 if (DF:IsHtmlColor (texture) or type (texture) == "table") then
Tercio@11 1090 local r, g, b, a = DF:ParseColors (texture)
Tercio@11 1091 wallpaper:SetTexture (r, g, b, a)
Tercio@11 1092 else
Tercio@11 1093 wallpaper:SetTexture (texture)
Tercio@11 1094 end
Tercio@11 1095
Tercio@11 1096 wallpaper:SetTexCoord (wallpaperTable[2], wallpaperTable[3], wallpaperTable[4], wallpaperTable[5])
Tercio@11 1097
Tercio@11 1098 local color = wallpaperTable[6]
Tercio@11 1099 if (color) then
Tercio@11 1100 local r, g, b, a = DF:ParseColors (color)
Tercio@11 1101 wallpaper:SetVertexColor (r, g, b, a)
Tercio@11 1102 else
Tercio@11 1103 wallpaper:SetVertexColor (1, 1, 1, 1)
Tercio@11 1104 end
Tercio@11 1105
Tercio@11 1106 if (wallpaperTable[7]) then
Tercio@11 1107 wallpaper:SetDesaturated (true)
Tercio@11 1108 else
Tercio@11 1109 wallpaper:SetDesaturated (false)
Tercio@11 1110 end
Tercio@11 1111
Tercio@11 1112 wallpaper:Show()
Tercio@11 1113 end
Tercio@11 1114
Tercio@11 1115 -- -- --------------------------------------------------------------------------------------------------------------
Tercio@11 1116
Tercio@11 1117 function CoolTip:ShowSub (index)
Tercio@11 1118
Tercio@11 1119 if (CoolTip.OptionsTable.IgnoreSubMenu) then
Tercio@26 1120 DF:FadeFrame (frame2, 1)
Tercio@11 1121 return
Tercio@11 1122 end
Tercio@11 1123
Tercio@11 1124 frame2:SetHeight (6)
Tercio@11 1125
Tercio@11 1126 local amtIndexes = CoolTip.IndexesSub [index]
Tercio@11 1127 if (not amtIndexes) then
Tercio@11 1128 --print ("Sub menu called but sub menu indexes is nil")
Tercio@11 1129 return
Tercio@11 1130 end
Tercio@11 1131
Tercio@11 1132 if (CoolTip.OptionsTable.FixedWidthSub) then
Tercio@11 1133 frame2:SetWidth (CoolTip.OptionsTable.FixedWidthSub)
Tercio@11 1134 end
Tercio@11 1135
Tercio@11 1136 frame2.h = CoolTip.IndexesSub [index] * 20
Tercio@11 1137 frame2.hHeight = 0
Tercio@11 1138 frame2.w = 0
Tercio@11 1139
Tercio@11 1140 --> pegar a fontsize da label principal
Tercio@11 1141 local mainButton = frame1.Lines [index]
Tercio@11 1142 local fontSize = DF:GetFontSize (mainButton.leftText)
Tercio@11 1143
Tercio@11 1144 local GotChecked = false
Tercio@11 1145
Tercio@11 1146 local IsTooltip = CoolTip.OptionsTable.SubMenuIsTooltip
Tercio@11 1147 if (IsTooltip) then
Tercio@11 1148 frame2:EnableMouse (false)
Tercio@11 1149 else
Tercio@11 1150 frame2:EnableMouse (true)
Tercio@11 1151 end
Tercio@11 1152
Tercio@11 1153 for i = 1, CoolTip.IndexesSub [index] do
Tercio@11 1154
Tercio@11 1155 local button = frame2.Lines [i]
Tercio@11 1156
Tercio@11 1157 if (not button) then
Tercio@11 1158 button = CoolTip:NewSecondaryButton (i)
Tercio@11 1159 end
Tercio@11 1160
Tercio@11 1161 local checked = CoolTip:SetupSecondaryButton (button, i, index)
Tercio@11 1162 if (checked) then
Tercio@11 1163 GotChecked = true
Tercio@11 1164 end
Tercio@11 1165
Tercio@11 1166 if (IsTooltip) then
Tercio@11 1167 button:EnableMouse (false)
Tercio@11 1168 else
Tercio@11 1169 button:EnableMouse (true)
Tercio@11 1170 end
Tercio@11 1171 end
Tercio@11 1172
Tercio@11 1173 local selected = CoolTip.SelectedIndexSec [index]
Tercio@11 1174 if (selected) then
Tercio@11 1175
Tercio@11 1176 CoolTip:SetSelectedAnchor (frame2, frame2.Lines [selected])
Tercio@11 1177
Tercio@11 1178 if (not CoolTip.OptionsTable.NoLastSelectedBar) then
Tercio@11 1179 CoolTip:ShowSelectedTexture (frame2)
Tercio@11 1180 end
Tercio@11 1181 else
Tercio@11 1182 CoolTip:HideSelectedTexture (frame2)
Tercio@11 1183 end
Tercio@11 1184
Tercio@11 1185 for i = CoolTip.IndexesSub [index] + 1, #frame2.Lines do
Tercio@26 1186 DF:FadeFrame (frame2.Lines[i], 1)
Tercio@11 1187 end
Tercio@11 1188
Tercio@11 1189 local spacing = 0
Tercio@11 1190 if (CoolTip.OptionsTable.YSpacingModSub) then
Tercio@11 1191 spacing = CoolTip.OptionsTable.YSpacingModSub
Tercio@11 1192 end
Tercio@11 1193
Tercio@11 1194 --> normalize height of all rows
Tercio@11 1195 for i = 1, CoolTip.IndexesSub [index] do
Tercio@11 1196
Tercio@11 1197 local menuButton = frame2.Lines [i]
Tercio@11 1198
Tercio@11 1199 -- CoolTipFrame2.Lines [2].divbar
Tercio@11 1200
Tercio@11 1201 if (menuButton.leftText:GetText() == "$div") then
Tercio@11 1202
Tercio@11 1203 --> height
Tercio@11 1204 menuButton:SetHeight (4)
Tercio@11 1205
Tercio@11 1206 --> points
Tercio@11 1207 menuButton:ClearAllPoints()
Tercio@11 1208
Tercio@11 1209 menuButton:SetPoint ("center", frame2, "center")
Tercio@40 1210 menuButton:SetPoint ("left", frame2, "left", -4, 0)
Tercio@40 1211 menuButton:SetPoint ("right", frame2, "right", 4, 0)
Tercio@11 1212
Tercio@11 1213 menuButton.rightText:SetText ("")
Tercio@11 1214
Tercio@11 1215 local div_size_up = tonumber (CoolTip.RightTextTableSub [index] [i] [2])
Tercio@11 1216 if (not div_size_up) then
Tercio@11 1217 div_size_up = 0
Tercio@11 1218 end
Tercio@11 1219 local div_size_down = tonumber (CoolTip.RightTextTableSub [index] [i] [3])
Tercio@11 1220 if (not div_size_down) then
Tercio@11 1221 div_size_down = 0
Tercio@11 1222 end
Tercio@11 1223
Tercio@11 1224 menuButton:SetPoint ("top", frame2, "top", 0, ( ( (i-1) * frame2.hHeight) * -1) - 4 + (CoolTip.OptionsTable.ButtonsYModSub or 0) + spacing + (2 + (div_size_up or 0)))
Tercio@11 1225
Tercio@11 1226 if (CoolTip.OptionsTable.YSpacingModSub) then
Tercio@11 1227 spacing = spacing + CoolTip.OptionsTable.YSpacingModSub
Tercio@11 1228 end
Tercio@11 1229
Tercio@11 1230 spacing = spacing + 17 + (div_size_down or 0)
Tercio@11 1231
Tercio@11 1232 menuButton.leftText:SetText ("")
Tercio@11 1233 menuButton.isDiv = true
Tercio@11 1234
Tercio@11 1235 if (not menuButton.divbar) then
Tercio@11 1236 CoolTip:CreateDivBar (menuButton)
Tercio@11 1237 else
Tercio@11 1238 menuButton.divbar:Show()
Tercio@11 1239 end
Tercio@11 1240
Tercio@11 1241 menuButton.divbar:SetPoint ("left", menuButton, "left", frame1:GetWidth()*0.10, 0)
Tercio@11 1242 menuButton.divbar:SetPoint ("right", menuButton, "right", -frame1:GetWidth()*0.10, 0)
Tercio@11 1243
Tercio@11 1244 else
Tercio@11 1245 --> height
Tercio@11 1246 menuButton:SetHeight (frame2.hHeight + (CoolTip.OptionsTable.ButtonHeightModSub or 0))
Tercio@11 1247 --> points
Tercio@11 1248 menuButton:ClearAllPoints()
Tercio@11 1249 menuButton:SetPoint ("center", frame2, "center")
Tercio@11 1250 menuButton:SetPoint ("top", frame2, "top", 0, ( ( (i-1) * frame2.hHeight) * -1) - 4 + (CoolTip.OptionsTable.ButtonsYModSub or 0) + spacing)
Tercio@11 1251 if (CoolTip.OptionsTable.YSpacingModSub) then
Tercio@11 1252 spacing = spacing + CoolTip.OptionsTable.YSpacingModSub
Tercio@11 1253 end
Tercio@40 1254 menuButton:SetPoint ("left", frame2, "left", -4, 0)
Tercio@40 1255 menuButton:SetPoint ("right", frame2, "right", 4, 0)
Tercio@11 1256
Tercio@11 1257 if (menuButton.divbar) then
Tercio@11 1258 menuButton.divbar:Hide()
Tercio@11 1259 menuButton.isDiv = false
Tercio@11 1260 end
Tercio@11 1261 end
Tercio@11 1262
Tercio@11 1263 end
Tercio@11 1264
Tercio@11 1265 local mod = CoolTip.OptionsTable.HeighModSub or 0
Tercio@11 1266 frame2:SetHeight ( (frame2.hHeight * CoolTip.IndexesSub [index]) + 12 + (-spacing) + mod)
Tercio@11 1267
Tercio@11 1268 if (CoolTip.TopIconTableSub [index]) then
Tercio@11 1269 local upperImageTable = CoolTip.TopIconTableSub [index]
Tercio@11 1270 frame2.upperImage:SetTexture (upperImageTable [1])
Tercio@11 1271 frame2.upperImage:SetWidth (upperImageTable [2])
Tercio@11 1272 frame2.upperImage:SetHeight (upperImageTable [3])
Tercio@11 1273 frame2.upperImage:SetTexCoord (upperImageTable[4], upperImageTable[5], upperImageTable[6], upperImageTable[7])
Tercio@11 1274 frame2.upperImage:Show()
Tercio@11 1275 else
Tercio@11 1276 frame2.upperImage:Hide()
Tercio@11 1277 end
Tercio@11 1278
Tercio@11 1279 if (CoolTip.WallpaperTableSub [index]) then
Tercio@11 1280 CoolTip:SetupWallpaper (CoolTip.WallpaperTableSub [index], frame2.frameWallpaper)
Tercio@11 1281 else
Tercio@11 1282 frame2.frameWallpaper:Hide()
Tercio@11 1283 end
Tercio@11 1284
Tercio@11 1285 if (not CoolTip.OptionsTable.FixedWidthSub) then
Tercio@11 1286 frame2:SetWidth (frame2.w + 44)
Tercio@11 1287 end
Tercio@11 1288
Tercio@26 1289 DF:FadeFrame (frame2, 0)
Tercio@11 1290
Tercio@11 1291 CoolTip:CheckOverlap()
Tercio@11 1292
Tercio@11 1293 if (CoolTip.OptionsTable.SubFollowButton and not CoolTip.frame2_leftside) then
Tercio@11 1294
Tercio@11 1295 local button = frame1.Lines [index]
Tercio@11 1296
Tercio@11 1297 frame2:ClearAllPoints()
Tercio@40 1298 frame2:SetPoint ("left", button, "right", 4, 0)
Tercio@11 1299
Tercio@11 1300 elseif (CoolTip.OptionsTable.SubFollowButton and CoolTip.frame2_leftside) then
Tercio@11 1301
Tercio@11 1302 local button = frame1.Lines [index]
Tercio@11 1303
Tercio@11 1304 frame2:ClearAllPoints()
Tercio@40 1305 frame2:SetPoint ("right", button, "left", -4, 0)
Tercio@11 1306
Tercio@11 1307 elseif (CoolTip.frame2_leftside) then
Tercio@11 1308 frame2:ClearAllPoints()
Tercio@40 1309 frame2:SetPoint ("bottomright", frame1, "bottomleft", -4, 0)
Tercio@11 1310 else
Tercio@11 1311 frame2:ClearAllPoints()
Tercio@40 1312 frame2:SetPoint ("bottomleft", frame1, "bottomright", 4, 0)
Tercio@11 1313 end
Tercio@11 1314
Tercio@11 1315 end
Tercio@11 1316
Tercio@11 1317 function CoolTip:HideSub()
Tercio@26 1318 DF:FadeFrame (frame2, 1)
Tercio@11 1319 end
Tercio@11 1320
Tercio@11 1321
Tercio@11 1322 function CoolTip:LeftTextSpace (row)
Tercio@11 1323 row.leftText:SetWidth (row:GetWidth() - 30 - row.leftIcon:GetWidth() - row.rightIcon:GetWidth() - row.rightText:GetStringWidth())
Tercio@11 1324 row.leftText:SetHeight (10)
Tercio@11 1325 end
Tercio@11 1326
Tercio@26 1327 --> ~inicio ~start ~tooltip
Tercio@11 1328 function CoolTip:monta_tooltip()
Tercio@11 1329
Tercio@11 1330 --> hide sub frame
Tercio@26 1331 DF:FadeFrame (frame2, 1)
Tercio@11 1332 --> hide select bar
Tercio@11 1333 CoolTip:HideSelectedTexture (frame1)
Tercio@11 1334
Tercio@11 1335 frame1:EnableMouse (false)
Tercio@11 1336
Tercio@11 1337 --> elevator
Tercio@11 1338 local yDown = 5
Tercio@11 1339 --> width
Tercio@11 1340 if (CoolTip.OptionsTable.FixedWidth) then
Tercio@11 1341 frame1:SetWidth (CoolTip.OptionsTable.FixedWidth)
Tercio@11 1342 end
Tercio@11 1343
Tercio@11 1344 frame1.w = CoolTip.OptionsTable.FixedWidth or 0
Tercio@11 1345 frame1.hHeight = 0
Tercio@11 1346 frame2.hHeight = 0
Tercio@11 1347
Tercio@11 1348 CoolTip.active = true
Tercio@11 1349
Tercio@11 1350 for i = 1, CoolTip.Indexes do
Tercio@11 1351
Tercio@11 1352 local button = frame1.Lines [i]
Tercio@11 1353 if (not button) then
Tercio@11 1354 button = CoolTip:NewMainButton (i)
Tercio@11 1355 end
Tercio@11 1356
Tercio@11 1357 button.index = i
Tercio@11 1358
Tercio@11 1359 --> basic stuff
Tercio@11 1360 button:Show()
Tercio@11 1361 button.background:Hide()
Tercio@11 1362 button:SetHeight (CoolTip.OptionsTable.ButtonHeightMod or CoolTip.default_height)
Tercio@11 1363 button:RegisterForClicks()
Tercio@11 1364
Tercio@11 1365 --> setup texts and icons
Tercio@11 1366 CoolTip:TextAndIcon (i, frame1, button, CoolTip.LeftTextTable [i], CoolTip.RightTextTable [i], CoolTip.LeftIconTable [i], CoolTip.RightIconTable [i])
Tercio@11 1367 --> setup statusbar
Tercio@11 1368 CoolTip:StatusBar (button, CoolTip.StatusBarTable [i])
Tercio@11 1369 end
Tercio@11 1370
Tercio@11 1371 --> hide unused lines
Tercio@11 1372 for i = CoolTip.Indexes+1, #frame1.Lines do
Tercio@11 1373 frame1.Lines[i]:Hide()
Tercio@11 1374 end
Tercio@11 1375 CoolTip.NumLines = CoolTip.Indexes
Tercio@11 1376
Tercio@11 1377 local spacing = 0
Tercio@11 1378 if (CoolTip.OptionsTable.YSpacingMod) then
Tercio@11 1379 spacing = CoolTip.OptionsTable.YSpacingMod
Tercio@11 1380 end
Tercio@11 1381
Tercio@11 1382 --> normalize height of all rows
Tercio@11 1383 local temp = -6 + spacing + (CoolTip.OptionsTable.ButtonsYMod or 0)
Tercio@11 1384 for i = 1, CoolTip.Indexes do
Tercio@11 1385 local menuButton = frame1.Lines [i]
Tercio@11 1386
Tercio@11 1387 menuButton:ClearAllPoints()
Tercio@11 1388 menuButton:SetPoint ("center", frame1, "center")
Tercio@40 1389 menuButton:SetPoint ("left", frame1, "left", -4, 0)
Tercio@40 1390 menuButton:SetPoint ("right", frame1, "right", 4, 0)
Tercio@11 1391
Tercio@11 1392 --> height
Tercio@11 1393 if (CoolTip.OptionsTable.AlignAsBlizzTooltip) then
Tercio@11 1394 local height = _math_max (8, menuButton.leftText:GetStringHeight(), menuButton.rightText:GetStringHeight(), menuButton.leftIcon:GetHeight(), menuButton.rightIcon:GetHeight())
Tercio@11 1395 menuButton:SetHeight (height)
Tercio@11 1396 menuButton:SetPoint ("top", frame1, "top", 0, temp)
Tercio@11 1397 temp = temp + ( height * -1)
Tercio@11 1398
Tercio@11 1399 elseif (CoolTip.OptionsTable.IgnoreButtonAutoHeight) then
Tercio@11 1400
Tercio@11 1401 local height = _math_max (menuButton.leftText:GetStringHeight(), menuButton.rightText:GetStringHeight(), menuButton.leftIcon:GetHeight(), menuButton.rightIcon:GetHeight())
Tercio@11 1402 menuButton:SetHeight (height)
Tercio@11 1403 menuButton:SetPoint ("top", frame1, "top", 0, temp)
Tercio@11 1404
Tercio@11 1405 temp = temp + ( height * -1) + spacing + (CoolTip.OptionsTable.ButtonsYMod or 0)
Tercio@11 1406
Tercio@11 1407 else
Tercio@11 1408 menuButton:SetHeight (frame1.hHeight + (CoolTip.OptionsTable.ButtonHeightMod or 0))
Tercio@11 1409 menuButton:SetPoint ("top", frame1, "top", 0, ( ( (i-1) * frame1.hHeight) * -1) - 6 + (CoolTip.OptionsTable.ButtonsYMod or 0) + spacing)
Tercio@11 1410 end
Tercio@11 1411
Tercio@11 1412 --> points
Tercio@11 1413
Tercio@11 1414 if (CoolTip.OptionsTable.YSpacingMod and not CoolTip.OptionsTable.IgnoreButtonAutoHeight) then
Tercio@11 1415 spacing = spacing + CoolTip.OptionsTable.YSpacingMod
Tercio@11 1416 end
Tercio@11 1417
Tercio@11 1418 menuButton:EnableMouse (false)
Tercio@11 1419 end
Tercio@11 1420
Tercio@11 1421 if (not CoolTip.OptionsTable.FixedWidth) then
Tercio@11 1422 if (CoolTip.Type == 2) then --> with bars
Tercio@11 1423 if (CoolTip.OptionsTable.MinWidth) then
Tercio@11 1424 local w = frame1.w + 34
Tercio@11 1425 frame1:SetWidth (math.max (w, CoolTip.OptionsTable.MinWidth))
Tercio@11 1426 else
Tercio@11 1427 frame1:SetWidth (frame1.w + 34)
Tercio@11 1428 end
Tercio@11 1429 else
Tercio@11 1430 --> width stability check
Tercio@11 1431 local width = frame1.w + 24
Tercio@11 1432 if (width > CoolTip.LastSize-5 and width < CoolTip.LastSize+5) then
Tercio@11 1433 width = CoolTip.LastSize
Tercio@11 1434 else
Tercio@11 1435 CoolTip.LastSize = width
Tercio@11 1436 end
Tercio@11 1437
Tercio@11 1438 if (CoolTip.OptionsTable.MinWidth) then
Tercio@11 1439 frame1:SetWidth (math.max (width, CoolTip.OptionsTable.MinWidth))
Tercio@11 1440 else
Tercio@11 1441 frame1:SetWidth (width)
Tercio@11 1442 end
Tercio@11 1443 end
Tercio@11 1444 end
Tercio@11 1445
Tercio@11 1446 if (CoolTip.OptionsTable.FixedHeight) then
Tercio@11 1447 frame1:SetHeight (CoolTip.OptionsTable.FixedHeight)
Tercio@11 1448 else
Tercio@11 1449 if (CoolTip.OptionsTable.AlignAsBlizzTooltip) then
Tercio@11 1450 frame1:SetHeight ( (temp-10) * -1)
Tercio@11 1451 elseif (CoolTip.OptionsTable.IgnoreButtonAutoHeight) then
Tercio@11 1452 frame1:SetHeight ( (temp+spacing) * -1)
Tercio@11 1453 else
Tercioo@29 1454 frame1:SetHeight ( _math_max ( (frame1.hHeight * CoolTip.Indexes) + 8 + ((CoolTip.OptionsTable.ButtonsYMod or 0)*-1), 22 ))
Tercio@11 1455 end
Tercio@11 1456 end
Tercio@11 1457
Tercio@11 1458 if (CoolTip.WallpaperTable [1]) then
Tercio@11 1459 CoolTip:SetupWallpaper (CoolTip.WallpaperTable, frame1.frameWallpaper)
Tercio@11 1460 else
Tercio@11 1461 frame1.frameWallpaper:Hide()
Tercio@11 1462 end
Tercio@11 1463
Tercio@11 1464 --> unhide frame
Tercio@26 1465 DF:FadeFrame (frame1, 0)
Tercio@11 1466 CoolTip:SetMyPoint (host)
Tercio@11 1467
Tercio@11 1468 --> fix sparks
Tercio@11 1469 for i = 1, CoolTip.Indexes do
Tercio@11 1470 local menuButton = frame1.Lines [i]
Tercio@11 1471 if (menuButton.spark:IsShown() or menuButton.spark2:IsShown()) then
Tercio@11 1472 CoolTip:RefreshSpark (menuButton)
Tercio@11 1473 end
Tercio@11 1474 end
Tercio@11 1475 end
Tercio@11 1476
Tercio@11 1477 function CoolTip:CreateDivBar (button)
Tercio@11 1478 button.divbar = button:CreateTexture (nil, "overlay")
Tercio@11 1479
Tercio@11 1480 button.divbar:SetTexture ([[Interface\QUESTFRAME\AutoQuest-Parts]])
Tercio@11 1481 button.divbar:SetTexCoord (238/512, 445/512, 0/64, 4/64)
Tercio@11 1482
Tercio@11 1483 button.divbar:SetHeight (3)
Tercio@11 1484 button.divbar:SetAlpha (0.1)
Tercio@11 1485
Tercio@11 1486 button.divbar:SetDesaturated (true)
Tercio@11 1487 end
Tercio@11 1488
Tercio@26 1489 --> ~inicio ~start ~menu
Tercio@11 1490 function CoolTip:monta_cooltip (host, instancia, options, sub_menus, icones, tamanho1, tamanho2, font, fontsize)
Tercio@11 1491
Tercio@11 1492 if (CoolTip.Indexes == 0) then
Tercio@11 1493 CoolTip:Reset()
Tercio@11 1494 CoolTip:SetType ("tooltip")
Tercio@11 1495 CoolTip:AddLine ("There is no options.")
Tercio@11 1496 CoolTip:ShowCooltip()
Tercio@11 1497 return
Tercio@11 1498 end
Tercio@11 1499
Tercio@11 1500 if (CoolTip.OptionsTable.FixedWidth) then
Tercio@11 1501 frame1:SetWidth (CoolTip.OptionsTable.FixedWidth)
Tercio@11 1502 end
Tercio@11 1503
Tercio@11 1504 frame1.w = CoolTip.OptionsTable.FixedWidth or 0
Tercio@11 1505 frame1.hHeight = 0
Tercio@11 1506 frame2.hHeight = 0
Tercio@11 1507
Tercio@11 1508 frame1:EnableMouse (true)
Tercio@11 1509
Tercio@11 1510 if (CoolTip.HaveSubMenu) then --> zera o segundo frame
Tercio@11 1511 frame2.w = 0
Tercio@11 1512 frame2:SetHeight (6)
Tercio@11 1513 if (CoolTip.SelectedIndexMain and CoolTip.IndexesSub [CoolTip.SelectedIndexMain] and CoolTip.IndexesSub [CoolTip.SelectedIndexMain] > 0) then
Tercio@26 1514 DF:FadeFrame (frame2, 0)
Tercio@11 1515 else
Tercio@26 1516 DF:FadeFrame (frame2, 1)
Tercio@11 1517 end
Tercio@11 1518 else
Tercio@26 1519 DF:FadeFrame (frame2, 1)
Tercio@11 1520 end
Tercio@11 1521
Tercio@11 1522 CoolTip.active = true
Tercio@11 1523
Tercio@11 1524 for i = 1, CoolTip.Indexes do
Tercio@11 1525 local menuButton = frame1.Lines [i]
Tercio@11 1526 if (not menuButton) then
Tercio@11 1527 menuButton = CoolTip:NewMainButton (i)
Tercio@11 1528 end
Tercio@11 1529
Tercio@11 1530 CoolTip:SetupMainButton (menuButton, i)
Tercio@11 1531
Tercio@11 1532 menuButton.background:Hide()
Tercio@11 1533 end
Tercio@11 1534
Tercio@11 1535 --> selected texture
Tercio@11 1536 if (CoolTip.SelectedIndexMain) then
Tercio@11 1537 CoolTip:SetSelectedAnchor (frame1, frame1.Lines [CoolTip.SelectedIndexMain])
Tercio@11 1538
Tercio@11 1539 if (CoolTip.OptionsTable.NoLastSelectedBar) then
Tercio@11 1540 CoolTip:HideSelectedTexture (frame1)
Tercio@11 1541 else
Tercio@11 1542 CoolTip:ShowSelectedTexture (frame1)
Tercio@11 1543 end
Tercio@11 1544 else
Tercio@11 1545 CoolTip:HideSelectedTexture (frame1)
Tercio@11 1546 end
Tercio@11 1547
Tercio@11 1548 if (CoolTip.Indexes < #frame1.Lines) then
Tercio@11 1549 for i = CoolTip.Indexes+1, #frame1.Lines do
Tercio@11 1550 frame1.Lines[i]:Hide()
Tercio@11 1551 end
Tercio@11 1552 end
Tercio@11 1553
Tercio@11 1554 CoolTip.NumLines = CoolTip.Indexes
Tercio@11 1555
Tercio@11 1556 local spacing = 0
Tercio@11 1557 if (CoolTip.OptionsTable.YSpacingMod) then
Tercio@11 1558 spacing = CoolTip.OptionsTable.YSpacingMod
Tercio@11 1559 end
Tercio@11 1560
Tercio@11 1561 if (not CoolTip.OptionsTable.FixedWidth) then
Tercio@11 1562 if (CoolTip.OptionsTable.MinWidth) then
Tercio@11 1563 local w = frame1.w + 24
Tercio@11 1564 frame1:SetWidth (math.max (w, CoolTip.OptionsTable.MinWidth))
Tercio@11 1565 else
Tercio@11 1566 frame1:SetWidth (frame1.w + 24)
Tercio@11 1567 end
Tercio@11 1568 end
Tercio@11 1569
Tercio@11 1570 --> normalize height of all rows
Tercio@11 1571 for i = 1, CoolTip.Indexes do
Tercio@11 1572 local menuButton = frame1.Lines [i]
Tercio@11 1573 menuButton:EnableMouse (true)
Tercio@11 1574
Tercio@11 1575 if (menuButton.leftText:GetText() == "$div") then
Tercio@11 1576
Tercio@11 1577 --> height
Tercio@11 1578 menuButton:SetHeight (4)
Tercio@11 1579 --> points
Tercio@11 1580 menuButton:ClearAllPoints()
Tercio@40 1581 menuButton:SetPoint ("left", frame1, "left", -4, 0)
Tercio@40 1582 menuButton:SetPoint ("right", frame1, "right", 4, 0)
Tercio@11 1583 menuButton:SetPoint ("center", frame1, "center")
Tercio@11 1584
Tercio@11 1585 local div_size_up = tonumber (CoolTip.LeftTextTable [i] [2])
Tercio@11 1586 if (not div_size_up) then
Tercio@11 1587 div_size_up = 0
Tercio@11 1588 end
Tercio@11 1589 local div_size_down = tonumber (CoolTip.LeftTextTable [i] [3])
Tercio@11 1590 if (not div_size_down) then
Tercio@11 1591 div_size_down = 0
Tercio@11 1592 end
Tercio@11 1593
Tercio@11 1594 menuButton:SetPoint ("top", frame1, "top", 0, ( ( (i-1) * frame1.hHeight) * -1) - 4 + (CoolTip.OptionsTable.ButtonsYMod or 0) + spacing - 4 + div_size_up)
Tercio@11 1595 if (CoolTip.OptionsTable.YSpacingMod) then
Tercio@11 1596 spacing = spacing + CoolTip.OptionsTable.YSpacingMod
Tercio@11 1597 end
Tercio@11 1598
Tercio@11 1599 spacing = spacing + 4 + div_size_down
Tercio@11 1600
Tercio@11 1601 menuButton.leftText:SetText ("")
Tercio@11 1602 menuButton.isDiv = true
Tercio@11 1603
Tercio@11 1604 if (not menuButton.divbar) then
Tercio@11 1605 CoolTip:CreateDivBar (menuButton)
Tercio@11 1606 else
Tercio@11 1607 menuButton.divbar:Show()
Tercio@11 1608 end
Tercio@11 1609
Tercio@11 1610 menuButton.divbar:SetPoint ("left", menuButton, "left", frame1:GetWidth()*0.10, 0)
Tercio@11 1611 menuButton.divbar:SetPoint ("right", menuButton, "right", -frame1:GetWidth()*0.10, 0)
Tercio@11 1612
Tercio@11 1613 else
Tercio@11 1614
Tercio@11 1615 --> height
Tercio@11 1616 menuButton:SetHeight (frame1.hHeight + (CoolTip.OptionsTable.ButtonHeightMod or 0))
Tercio@11 1617 --> points
Tercio@11 1618 menuButton:ClearAllPoints()
Tercio@11 1619 menuButton:SetPoint ("center", frame1, "center")
Tercio@11 1620 menuButton:SetPoint ("top", frame1, "top", 0, ( ( (i-1) * frame1.hHeight) * -1) - 4 + (CoolTip.OptionsTable.ButtonsYMod or 0) + spacing)
Tercio@11 1621 if (CoolTip.OptionsTable.YSpacingMod) then
Tercio@11 1622 spacing = spacing + CoolTip.OptionsTable.YSpacingMod
Tercio@11 1623 end
Tercio@40 1624 menuButton:SetPoint ("left", frame1, "left", -4, 0)
Tercio@40 1625 menuButton:SetPoint ("right", frame1, "right", 4, 0)
Tercio@11 1626
Tercio@11 1627 if (menuButton.divbar) then
Tercio@11 1628 menuButton.divbar:Hide()
Tercio@11 1629 menuButton.isDiv = false
Tercio@11 1630 end
Tercio@11 1631 end
Tercio@11 1632
Tercio@11 1633 end
Tercio@56 1634
Tercio@11 1635 if (CoolTip.OptionsTable.FixedHeight) then
Tercio@11 1636 frame1:SetHeight (CoolTip.OptionsTable.FixedHeight)
Tercio@11 1637 else
Tercio@11 1638 local mod = CoolTip.OptionsTable.HeighMod or 0
Tercio@11 1639 frame1:SetHeight (_math_max ( (frame1.hHeight * CoolTip.Indexes) + 12 + (-spacing) + mod, 22 ))
Tercio@11 1640 end
Tercio@11 1641
Tercio@11 1642 --> sub menu arrows
Tercio@11 1643 if (CoolTip.HaveSubMenu and not CoolTip.OptionsTable.IgnoreArrows and not CoolTip.OptionsTable.SubMenuIsTooltip) then
Tercio@11 1644 for i = 1, CoolTip.Indexes do
Tercio@11 1645 if (CoolTip.IndexesSub [i] and CoolTip.IndexesSub [i] > 0) then
Tercio@11 1646 frame1.Lines [i].statusbar.subMenuArrow:Show()
Tercio@11 1647 else
Tercio@11 1648 frame1.Lines [i].statusbar.subMenuArrow:Hide()
Tercio@11 1649 end
Tercio@11 1650 end
Tercio@11 1651
Tercio@11 1652 frame1:SetWidth (frame1:GetWidth() + 16)
Tercio@11 1653 end
Tercio@11 1654
Tercio@11 1655 frame1:ClearAllPoints()
Tercio@11 1656 CoolTip:SetMyPoint (host)
Tercio@11 1657
Tercio@11 1658 if (CoolTip.title1) then
Tercio@11 1659 CoolTip.frame1.titleText:Show()
Tercio@11 1660 CoolTip.frame1.titleIcon:Show()
Tercio@11 1661 CoolTip.frame1.titleText:SetText (CoolTip.title_text)
Tercio@11 1662 CoolTip.frame1.titleIcon:SetWidth (frame1:GetWidth())
Tercio@11 1663 CoolTip.frame1.titleIcon:SetHeight (40)
Tercio@11 1664 end
Tercio@11 1665
Tercio@11 1666 if (CoolTip.WallpaperTable [1]) then
Tercio@11 1667 CoolTip:SetupWallpaper (CoolTip.WallpaperTable, frame1.frameWallpaper)
Tercio@11 1668 else
Tercio@11 1669 frame1.frameWallpaper:Hide()
Tercio@11 1670 end
Tercio@11 1671
Tercio@26 1672 DF:FadeFrame (frame1, 0)
Tercio@11 1673
Tercio@11 1674 for i = 1, CoolTip.Indexes do
Tercio@11 1675 if (CoolTip.SelectedIndexMain and CoolTip.SelectedIndexMain == i) then
Tercio@11 1676 if (CoolTip.HaveSubMenu and CoolTip.IndexesSub [i] and CoolTip.IndexesSub [i] > 0) then
Tercio@11 1677 CoolTip:ShowSub (i)
Tercio@11 1678 end
Tercio@11 1679 end
Tercio@11 1680 end
Tercio@11 1681
Tercio@11 1682 return true
Tercio@11 1683 end
Tercio@11 1684
Tercio@11 1685 function CoolTip:SetMyPoint (host, x_mod, y_mod)
Tercio@11 1686
Tercio@11 1687 local moveX = x_mod or 0
Tercio@11 1688 local moveY = y_mod or 0
Tercio@11 1689
Tercio@11 1690 --> clear all points
Tercio@11 1691 frame1:ClearAllPoints()
Tercio@11 1692
Tercio@11 1693 local anchor = CoolTip.OptionsTable.Anchor or CoolTip.Host
Tercio@56 1694
Tercio@11 1695 frame1:SetPoint (CoolTip.OptionsTable.MyAnchor, anchor, CoolTip.OptionsTable.RelativeAnchor, 0 + moveX + CoolTip.OptionsTable.WidthAnchorMod, 10 + CoolTip.OptionsTable.HeightAnchorMod + moveY)
Tercio@11 1696
Tercio@11 1697 if (not x_mod) then
Tercio@11 1698 --> check if cooltip is out of screen bounds
Tercio@11 1699 local center_x = frame1:GetCenter()
Tercio@11 1700
Tercio@11 1701 if (center_x) then
Tercio@11 1702 local screen_x_res = GetScreenWidth()
Tercio@11 1703 local half_x = frame1:GetWidth() / 2
Tercio@11 1704
Tercio@11 1705 if (center_x+half_x > screen_x_res) then
Tercio@11 1706 --> out of right side
Tercio@11 1707 local move_to_left = (center_x + half_x) - screen_x_res
Tercio@11 1708 CoolTip.internal_x_mod = -move_to_left
Tercio@11 1709 return CoolTip:SetMyPoint (host, -move_to_left, 0)
Tercio@11 1710
Tercio@11 1711 elseif (center_x-half_x < 0) then
Tercio@11 1712 --> out of left side
Tercio@11 1713 local move_to_right = center_x - half_x
Tercio@11 1714 CoolTip.internal_x_mod = move_to_right*-1
Tercio@11 1715 return CoolTip:SetMyPoint (host, move_to_right*-1, 0)
Tercio@11 1716 end
Tercio@11 1717 end
Tercio@11 1718 end
Tercio@11 1719
Tercio@11 1720 if (not y_mod) then
Tercio@11 1721 --> check if cooltip is out of screen bounds
Tercio@11 1722 local _, center_y = frame1:GetCenter()
Tercio@11 1723 local screen_y_res = GetScreenHeight()
Tercio@11 1724 local half_y = frame1:GetHeight() / 2
Tercio@11 1725
Tercio@11 1726 if (center_y) then
Tercio@11 1727 if (center_y+half_y > screen_y_res) then
Tercio@11 1728 --> out of top side
Tercio@11 1729 local move_to_down = (center_y + half_y) - screen_y_res
Tercio@11 1730 CoolTip.internal_y_mod = -move_to_down
Tercio@11 1731 return CoolTip:SetMyPoint (host, 0, -move_to_down)
Tercio@11 1732
Tercio@11 1733 elseif (center_y-half_y < 0) then
Tercio@11 1734 --> out of bottom side
Tercio@11 1735 local move_to_up = center_y - half_y
Tercio@11 1736 CoolTip.internal_y_mod = move_to_up*-1
Tercio@11 1737 return CoolTip:SetMyPoint (host, 0, move_to_up*-1)
Tercio@11 1738
Tercio@11 1739 end
Tercio@11 1740 end
Tercio@11 1741 end
Tercio@11 1742
Tercio@11 1743 if (frame2:IsShown() and not CoolTip.overlap_checked) then
Tercio@11 1744
Tercio@11 1745 local frame_2_center_x = frame2:GetCenter()
Tercio@11 1746 if (frame_2_center_x) then
Tercio@11 1747 local frame_2_half_x = frame2:GetWidth() / 2
Tercio@11 1748
Tercio@11 1749 local frame_1_center_x = frame1:GetCenter()
Tercio@11 1750 if (frame_1_center_x) then
Tercio@11 1751
Tercio@11 1752 local frame_1_half_x = frame1:GetWidth() / 2
Tercio@11 1753
Tercio@11 1754 local f1_end_point = frame_1_center_x + frame_1_half_x - 3
Tercio@11 1755 local f2_start_point = frame_2_center_x - frame_2_half_x
Tercio@11 1756
Tercio@11 1757 if (f2_start_point < f1_end_point) then
Tercio@11 1758 local diff = f2_start_point - f1_end_point
Tercio@11 1759 CoolTip.overlap_checked = true
Tercio@11 1760
Tercio@11 1761 frame2:ClearAllPoints()
Tercio@40 1762 frame2:SetPoint ("bottomright", frame1, "bottomleft", 4, 0)
Tercio@11 1763 CoolTip.frame2_leftside = true
Tercio@11 1764 --> diff
Tercio@11 1765 return CoolTip:SetMyPoint (host, CoolTip.internal_x_mod , CoolTip.internal_y_mod)
Tercio@11 1766 end
Tercio@11 1767
Tercio@11 1768 end
Tercio@11 1769 end
Tercio@11 1770
Tercio@11 1771 end
Tercio@11 1772
Tercio@11 1773 end
Tercio@11 1774
Tercio@11 1775 function CoolTip:CheckOverlap()
Tercio@11 1776 if (frame2:IsShown()) then
Tercio@11 1777
Tercio@11 1778 local frame_2_center_x = frame2:GetCenter()
Tercio@11 1779 if (frame_2_center_x) then
Tercio@11 1780 local frame_2_half_x = frame2:GetWidth() / 2
Tercio@11 1781
Tercio@11 1782 local frame_1_center_x = frame1:GetCenter()
Tercio@11 1783 if (frame_1_center_x) then
Tercio@11 1784
Tercio@11 1785 local frame_1_half_x = frame1:GetWidth() / 2
Tercio@11 1786
Tercio@11 1787 local f1_end_point = frame_1_center_x + frame_1_half_x - 3
Tercio@11 1788 local f2_start_point = frame_2_center_x - frame_2_half_x
Tercio@11 1789
Tercio@11 1790 if (f2_start_point < f1_end_point) then
Tercio@11 1791 local diff = f2_start_point - f1_end_point
Tercio@11 1792
Tercio@11 1793 frame2:ClearAllPoints()
Tercio@40 1794 frame2:SetPoint ("bottomright", frame1, "bottomleft", 4, 0)
Tercio@11 1795 CoolTip.frame2_leftside = true
Tercio@11 1796 end
Tercio@11 1797
Tercio@11 1798 end
Tercio@11 1799 end
Tercio@11 1800
Tercio@11 1801 end
Tercio@11 1802 end
Tercio@11 1803
Tercio@11 1804 function CoolTip:GetText (buttonIndex)
Tercio@11 1805 local button1 = frame1.Lines [buttonIndex]
Tercio@11 1806 if (not button1) then
Tercio@11 1807 return "", ""
Tercio@11 1808 else
Tercio@11 1809 return button1.leftText:GetText() or "", button1.rightText:GetText() or ""
Tercio@11 1810 end
Tercio@11 1811 end
Tercio@11 1812
Tercio@11 1813 ----------------------------------------------------------------------
Tercio@11 1814 --> Get the number of lines current shown on cooltip
Tercio@11 1815
Tercio@11 1816 function CoolTip:GetNumLines()
Tercio@11 1817 return CoolTip.NumLines or 0
Tercio@11 1818 end
Tercio@11 1819
Tercio@11 1820 ----------------------------------------------------------------------
Tercio@11 1821 --> Remove all options actived
Tercio@11 1822 --> Set a option on current cooltip
Tercio@11 1823
Tercio@11 1824 function CoolTip:ClearAllOptions()
Tercio@11 1825 for option, _ in pairs (CoolTip.OptionsTable) do
Tercio@11 1826 CoolTip.OptionsTable [option] = nil
Tercio@11 1827 end
Tercio@11 1828
Tercio@11 1829 CoolTip:SetOption ("MyAnchor", "bottom")
Tercio@11 1830 CoolTip:SetOption ("RelativeAnchor", "top")
Tercio@11 1831 CoolTip:SetOption ("WidthAnchorMod", 0)
Tercio@11 1832 CoolTip:SetOption ("HeightAnchorMod", 0)
Tercio@11 1833 end
Tercio@11 1834
Tercio@58 1835 function CoolTip:SetOption (optionName, value)
Tercio@58 1836
Tercio@58 1837 --> check for name alias
Tercio@58 1838 optionName = CoolTip.AliasList [optionName] or optionName
Tercio@58 1839
Tercio@11 1840 --> check if this options exists
Tercio@58 1841 if (not CoolTip.OptionsList [optionName]) then
Tercio@11 1842 return --> error
Tercio@11 1843 end
Tercio@58 1844
Tercio@11 1845 --> set options
Tercio@58 1846 CoolTip.OptionsTable [optionName] = value
Tercio@11 1847 end
Tercio@11 1848
Tercio@11 1849 ----------------------------------------------------------------------
Tercio@11 1850 --> set the anchor of cooltip
Tercio@11 1851 --> parameters: frame [, cooltip anchor point, frame anchor point [, x mod, y mod]]
Tercio@11 1852 --> frame [, x mod, y mod]
Tercio@11 1853
Tercio@11 1854 --> alias
Tercio@11 1855 function CoolTip:GetOwner()
Tercio@11 1856 return CoolTip.Host
Tercio@11 1857 end
Tercio@11 1858
Tercio@11 1859 function CoolTip:SetOwner (frame, myPoint, hisPoint, x, y)
Tercio@11 1860 return CoolTip:SetHost (frame, myPoint, hisPoint, x, y)
Tercio@11 1861 end
Tercio@11 1862
Tercio@11 1863 function CoolTip:SetHost (frame, myPoint, hisPoint, x, y)
Tercio@11 1864 --> check data integrity
Tercio@11 1865 if (type (frame) ~= "table" or not frame.GetObjectType) then
Tercio@56 1866 print ("host needs to be a frame")
Tercio@11 1867 return --> error
Tercio@11 1868 end
Tercio@11 1869
Tercio@11 1870 CoolTip.Host = frame
Tercio@56 1871
Tercio@11 1872 CoolTip.frame1:SetFrameLevel (frame:GetFrameLevel()+1)
Tercio@11 1873
Tercio@11 1874 --> defaults
Tercio@11 1875 myPoint = myPoint or CoolTip.OptionsTable.MyAnchor or "bottom"
Tercio@11 1876 hisPoint = hisPoint or CoolTip.OptionsTable.hisPoint or "top"
Tercio@11 1877
Tercio@11 1878 x = x or CoolTip.OptionsTable.WidthAnchorMod or 0
Tercio@11 1879 y = y or CoolTip.OptionsTable.HeightAnchorMod or 0
Tercio@11 1880
Tercio@11 1881 --> check options
Tercio@11 1882 if (type (myPoint) == "string") then
Tercio@11 1883 CoolTip:SetOption ("MyAnchor", myPoint)
Tercio@11 1884 CoolTip:SetOption ("WidthAnchorMod", x)
Tercio@11 1885 elseif (type (myPoint) == "number") then
Tercio@11 1886 CoolTip:SetOption ("HeightAnchorMod", myPoint)
Tercio@11 1887 end
Tercio@11 1888
Tercio@11 1889 if (type (hisPoint) == "string") then
Tercio@11 1890 CoolTip:SetOption ("RelativeAnchor", hisPoint)
Tercio@11 1891 CoolTip:SetOption ("HeightAnchorMod", y)
Tercio@11 1892 elseif (type (hisPoint) == "number") then
Tercio@11 1893 CoolTip:SetOption ("WidthAnchorMod", hisPoint)
Tercio@11 1894 end
Tercio@11 1895 end
Tercio@11 1896
Tercio@11 1897 ----------------------------------------------------------------------
Tercio@11 1898 --> set cooltip type
Tercio@11 1899 --> parameters: type (1 = tooltip | 2 = tooltip with bars | 3 = menu)
Tercio@11 1900
Tercio@11 1901 function CoolTip:IsMenu()
Tercio@11 1902 return CoolTip.frame1:IsShown() and CoolTip.Type == 3
Tercio@11 1903 end
Tercio@11 1904
Tercio@11 1905 function CoolTip:IsTooltip()
Tercio@11 1906 return CoolTip.frame1:IsShown() and (CoolTip.Type == 1 or CoolTip.Type == 2)
Tercio@11 1907 end
Tercio@11 1908
Tercio@11 1909 function CoolTip:GetType()
Tercio@11 1910 if (CoolTip.Type == 1 or CoolTip.Type == 2) then
Tercio@11 1911 return "tooltip"
Tercio@11 1912 elseif (CoolTip.Type == 3) then
Tercio@11 1913 return "menu"
Tercio@11 1914 else
Tercio@11 1915 return "none"
Tercio@11 1916 end
Tercio@11 1917 end
Tercio@11 1918
Tercio@11 1919 function CoolTip:SetType (newType)
Tercio@11 1920 if (type (newType) == "string") then
Tercio@11 1921 if (newType == "tooltip") then
Tercio@11 1922 CoolTip.Type = 1
Tercio@11 1923 elseif (newType == "tooltipbar") then
Tercio@11 1924 CoolTip.Type = 2
Tercio@11 1925 elseif (newType == "menu") then
Tercio@11 1926 CoolTip.Type = 3
Tercio@11 1927 else
Tercio@11 1928 --> error
Tercio@11 1929 end
Tercio@11 1930 elseif (type (newType) == "number") then
Tercio@11 1931 if (newType == 1) then
Tercio@11 1932 CoolTip.Type = 1
Tercio@11 1933 elseif (newType == 2) then
Tercio@11 1934 CoolTip.Type = 2
Tercio@11 1935 elseif (newType == 3) then
Tercio@11 1936 CoolTip.Type = 3
Tercio@11 1937 else
Tercio@11 1938 --> error
Tercio@11 1939 end
Tercio@11 1940 else
Tercio@11 1941 --> error
Tercio@11 1942 end
Tercio@11 1943 end
Tercio@11 1944
Tercio@11 1945 --> Set a fixed value for menu
Tercio@11 1946 function CoolTip:SetFixedParameter (value, injected)
Tercio@11 1947 if (injected ~= nil) then
Tercio@11 1948 local frame = value
Tercio@11 1949 if (frame.dframework) then
Tercio@11 1950 frame = frame.widget
Tercio@11 1951 end
Tercio@11 1952 if (frame.CoolTip) then
Tercio@11 1953 frame.CoolTip.FixedValue = injected
Tercio@11 1954 else
Tercio@11 1955 --debug
Tercio@11 1956 end
Tercio@11 1957 end
Tercio@11 1958 CoolTip.FixedValue = value
Tercio@11 1959 end
Tercio@11 1960
Tercio@11 1961 function CoolTip:SetColor (menuType, ...)
Tercio@11 1962 local ColorR, ColorG, ColorB, ColorA = DF:ParseColors (...)
Tercio@11 1963 if ((type (menuType) == "string" and menuType == "main") or (type (menuType) == "number" and menuType == 1)) then
Tercio@11 1964 frame1.framebackgroundLeft:SetVertexColor (ColorR, ColorG, ColorB, ColorA)
Tercio@11 1965 frame1.framebackgroundRight:SetVertexColor (ColorR, ColorG, ColorB, ColorA)
Tercio@11 1966 frame1.framebackgroundCenter:SetVertexColor (ColorR, ColorG, ColorB, ColorA)
Tercio@11 1967
Tercio@11 1968 elseif ((type (menuType) == "string" and menuType == "sec") or (type (menuType) == "number" and menuType == 2)) then
Tercio@11 1969 frame2.framebackgroundLeft:SetVertexColor (ColorR, ColorG, ColorB, ColorA)
Tercio@11 1970 frame2.framebackgroundRight:SetVertexColor (ColorR, ColorG, ColorB, ColorA)
Tercio@11 1971 frame2.framebackgroundCenter:SetVertexColor (ColorR, ColorG, ColorB, ColorA)
Tercio@11 1972
Tercio@11 1973 else
Tercio@11 1974 return --> error
Tercio@11 1975 end
Tercio@11 1976 end
Tercio@11 1977
Tercio@11 1978 --> Set last selected option
Tercio@11 1979 function CoolTip:SetLastSelected (menuType, index, index2)
Tercio@11 1980
Tercio@11 1981 if (CoolTip.Type == 3) then
Tercio@11 1982 if ((type (menuType) == "string" and menuType == "main") or (type (menuType) == "number" and menuType == 1)) then
Tercio@11 1983 CoolTip.SelectedIndexMain = index
Tercio@11 1984 elseif ((type (menuType) == "string" and menuType == "sec") or (type (menuType) == "number" and menuType == 2)) then
Tercio@11 1985 CoolTip.SelectedIndexSec [index] = index2
Tercio@11 1986 else
Tercio@11 1987 return --> error
Tercio@11 1988 end
Tercio@11 1989 else
Tercio@11 1990 return --> error
Tercio@11 1991 end
Tercio@11 1992 end
Tercio@11 1993
Tercio@11 1994 --> serack key: ~select
Tercio@11 1995 function CoolTip:Select (menuType, option, mainIndex)
Tercio@11 1996 if (menuType == 1) then --main menu
Tercio@11 1997 local botao = frame1.Lines [option]
Tercio@11 1998 CoolTip.buttonClicked = true
Tercio@11 1999 CoolTip:SetSelectedAnchor (frame1, botao)
Tercio@11 2000
Tercio@11 2001 --UIFrameFlash (frame1.selected, 0.05, 0.05, 0.2, true, 0, 0)
Tercio@11 2002
Tercio@11 2003 elseif (menuType == 2) then --sub menu
Tercio@11 2004 CoolTip:ShowSub (mainIndex)
Tercio@11 2005 local botao = frame2.Lines [option]
Tercio@11 2006 CoolTip.buttonClicked = true
Tercio@11 2007
Tercio@11 2008 CoolTip:SetSelectedAnchor (frame2, botao)
Tercio@11 2009 end
Tercio@11 2010 end
Tercio@11 2011
Tercio@11 2012 ----------------------------------------------------------------------
Tercio@11 2013 --> Reset cooltip
Tercio@11 2014
Tercioo@29 2015 local default_backdrop = {bgFile = [[Interface\DialogFrame\UI-DialogBox-Background-Dark]], edgeFile = [[Interface\Buttons\WHITE8X8]], tile = true,
Tercioo@29 2016 edgeSize = 1, tileSize = 16, insets = {left = 0, right = 0, top = 0, bottom = 0}}
Tercio@11 2017 local default_backdrop_color = {0.09019, 0.09019, 0.18823, 1}
Tercio@11 2018 local default_backdropborder_color = {1, 1, 1, 1}
Tercio@11 2019
Tercio@11 2020 --borda preta sem usar unpack
Tercio@11 2021
Tercio@11 2022 --> wipe all data ~reset
Tercio@11 2023 function CoolTip:Reset()
Tercio@11 2024
Tercio@11 2025 frame2:ClearAllPoints()
Tercio@40 2026 frame2:SetPoint ("bottomleft", frame1, "bottomright", 4, 0)
Tercio@40 2027
Tercio@40 2028 frame1:SetParent (UIParent)
Tercio@40 2029 frame2:SetParent (UIParent)
Tercio@40 2030 frame1:SetFrameStrata ("TOOLTIP")
Tercio@40 2031 frame2:SetFrameStrata ("TOOLTIP")
Tercio@40 2032
Tercio@11 2033 CoolTip:HideSelectedTexture (frame1)
Tercio@11 2034 CoolTip:HideSelectedTexture (frame2)
Tercio@11 2035
Tercio@11 2036 CoolTip.FixedValue = nil
Tercio@11 2037 CoolTip.HaveSubMenu = false
Tercio@11 2038
Tercio@11 2039 CoolTip.SelectedIndexMain = nil
Tercio@11 2040 _table_wipe (CoolTip.SelectedIndexSec)
Tercio@11 2041
Tercio@11 2042 CoolTip.Indexes = 0
Tercio@11 2043 CoolTip.SubIndexes = 0
Tercio@11 2044 _table_wipe (CoolTip.IndexesSub)
Tercio@11 2045
Tercio@11 2046 CoolTip.internal_x_mod = 0
Tercio@11 2047 CoolTip.internal_y_mod = 0
Tercio@11 2048 CoolTip.current_anchor = nil
Tercio@11 2049 CoolTip.overlap_checked = false
Tercio@11 2050
Tercio@11 2051 CoolTip.frame2_leftside = nil
Tercio@11 2052
Tercio@11 2053 frame1:SetBackdrop (default_backdrop)
Tercio@11 2054 frame1:SetBackdropColor (unpack (default_backdrop_color))
Tercio@11 2055 frame1:SetBackdropBorderColor (unpack (default_backdropborder_color))
Tercio@11 2056
Tercio@11 2057 frame2:SetBackdrop (default_backdrop)
Tercio@11 2058 frame2:SetBackdropColor (unpack (default_backdrop_color))
Tercio@11 2059 frame2:SetBackdropBorderColor (unpack (default_backdropborder_color))
Tercio@11 2060
Tercio@11 2061 --[
Tercio@20 2062 _table_wipe (CoolTip.PopupFrameTable)
Tercio@20 2063
Tercio@11 2064 _table_wipe (CoolTip.LeftTextTable)
Tercio@11 2065 _table_wipe (CoolTip.LeftTextTableSub)
Tercio@11 2066 _table_wipe (CoolTip.RightTextTable)
Tercio@11 2067 _table_wipe (CoolTip.RightTextTableSub)
Tercio@11 2068
Tercio@11 2069 _table_wipe (CoolTip.LeftIconTable)
Tercio@11 2070 _table_wipe (CoolTip.LeftIconTableSub)
Tercio@11 2071 _table_wipe (CoolTip.RightIconTable)
Tercio@11 2072 _table_wipe (CoolTip.RightIconTableSub)
Tercio@11 2073
Tercio@11 2074 _table_wipe (CoolTip.StatusBarTable)
Tercio@11 2075 _table_wipe (CoolTip.StatusBarTableSub)
Tercio@11 2076
Tercio@11 2077 _table_wipe (CoolTip.FunctionsTableMain)
Tercio@11 2078 _table_wipe (CoolTip.FunctionsTableSub)
Tercio@11 2079
Tercio@11 2080 _table_wipe (CoolTip.ParametersTableMain)
Tercio@11 2081 _table_wipe (CoolTip.ParametersTableSub)
Tercio@11 2082
Tercio@11 2083 _table_wipe (CoolTip.WallpaperTable)
Tercio@11 2084 _table_wipe (CoolTip.WallpaperTableSub)
Tercio@11 2085 --]]
Tercio@11 2086
Tercio@11 2087 _table_wipe (CoolTip.TopIconTableSub)
Tercio@11 2088 CoolTip.Banner [1] = false
Tercio@11 2089 CoolTip.Banner [2] = false
Tercio@11 2090 CoolTip.Banner [3] = false
Tercio@11 2091
Tercio@11 2092 frame1.upperImage:Hide()
Tercio@11 2093 frame1.upperImage2:Hide()
Tercio@11 2094 frame1.upperImageText:Hide()
Tercio@11 2095 frame1.upperImageText2:Hide()
Tercio@11 2096
Tercio@11 2097 frame1.frameWallpaper:Hide()
Tercio@11 2098 frame2.frameWallpaper:Hide()
Tercio@11 2099
Tercio@11 2100 frame2.upperImage:Hide()
Tercio@11 2101
Tercio@11 2102 CoolTip.title1 = nil
Tercio@11 2103 CoolTip.title_text = nil
Tercio@11 2104
Tercio@11 2105 CoolTip.frame1.titleText:Hide()
Tercio@11 2106 CoolTip.frame1.titleIcon:Hide()
Tercio@11 2107
Tercio@11 2108 CoolTip:ClearAllOptions()
Tercio@11 2109 CoolTip:SetColor (1, "transparent")
Tercio@11 2110 CoolTip:SetColor (2, "transparent")
Tercio@11 2111
Tercio@11 2112 local f1Lines = frame1.Lines
Tercio@11 2113 for i = 1, #f1Lines do
Tercio@11 2114 f1Lines [i].statusbar.subMenuArrow:Hide()
Tercio@11 2115 end
Tercio@11 2116 end
Tercio@11 2117
Tercio@11 2118 ----------------------------------------------------------------------
Tercio@11 2119 --> Menu functions
Tercio@11 2120
Tercio@11 2121 local _default_color = {1, 1, 1}
Tercio@11 2122 local _default_point = {"center", "center", 0, -3}
Tercio@11 2123
Tercio@11 2124 function CoolTip:AddMenu (menuType, func, param1, param2, param3, leftText, leftIcon, indexUp)
Tercio@11 2125
Tercio@11 2126 if (leftText and indexUp and ((type (menuType) == "string" and menuType == "main") or (type (menuType) == "number" and menuType == 1))) then
Tercio@11 2127 CoolTip.Indexes = CoolTip.Indexes + 1
Tercio@11 2128
Tercio@11 2129 if (not CoolTip.IndexesSub [CoolTip.Indexes]) then
Tercio@11 2130 CoolTip.IndexesSub [CoolTip.Indexes] = 0
Tercio@11 2131 end
Tercio@11 2132
Tercio@11 2133 CoolTip.SubIndexes = 0
Tercio@11 2134 end
Tercio@11 2135
Tercio@11 2136 --> need a previous line
Tercio@11 2137 if (CoolTip.Indexes == 0) then
Tercio@11 2138 print ("Indexes are 0")
Tercio@11 2139 return --> return error
Tercio@11 2140 end
Tercio@11 2141
Tercio@11 2142 --> check data integrity
Tercio@11 2143 if (type (func) ~= "function") then
Tercio@11 2144 print ("No function")
Tercio@11 2145 return --> erroe
Tercio@11 2146 end
Tercio@11 2147
Tercio@11 2148 --> add
Tercio@11 2149
Tercio@11 2150 if ((type (menuType) == "string" and menuType == "main") or (type (menuType) == "number" and menuType == 1)) then
Tercio@11 2151
Tercio@11 2152 local parameterTable
Tercio@11 2153 if (CoolTip.isSpecial) then
Tercio@11 2154 parameterTable = {}
Tercio@11 2155 _table_insert (CoolTip.FunctionsTableMain, CoolTip.Indexes, func)
Tercio@11 2156 _table_insert (CoolTip.ParametersTableMain, CoolTip.Indexes, parameterTable)
Tercio@11 2157 else
Tercio@11 2158
Tercio@11 2159 CoolTip.FunctionsTableMain [CoolTip.Indexes] = func
Tercio@11 2160
Tercio@11 2161 parameterTable = CoolTip.ParametersTableMain [CoolTip.Indexes]
Tercio@11 2162 if (not parameterTable) then
Tercio@11 2163 parameterTable = {}
Tercio@11 2164 CoolTip.ParametersTableMain [CoolTip.Indexes] = parameterTable
Tercio@11 2165 end
Tercio@11 2166 end
Tercio@11 2167
Tercio@11 2168 parameterTable [1] = param1
Tercio@11 2169 parameterTable [2] = param2
Tercio@11 2170 parameterTable [3] = param3
Tercio@11 2171
Tercio@11 2172 if (leftIcon) then
Tercio@11 2173 local iconTable = CoolTip.LeftIconTable [CoolTip.Indexes]
Tercio@11 2174
Tercio@11 2175 if (not iconTable or CoolTip.isSpecial) then
Tercio@11 2176 iconTable = {}
Tercio@11 2177 CoolTip.LeftIconTable [CoolTip.Indexes] = iconTable
Tercio@11 2178 end
Tercio@11 2179
Tercio@11 2180 iconTable [1] = leftIcon
Tercio@11 2181 iconTable [2] = 16 --> default 16
Tercio@11 2182 iconTable [3] = 16 --> default 16
Tercio@11 2183 iconTable [4] = 0 --> default 0
Tercio@11 2184 iconTable [5] = 1 --> default 1
Tercio@11 2185 iconTable [6] = 0 --> default 0
Tercio@11 2186 iconTable [7] = 1 --> default 1
Tercio@11 2187 iconTable [8] = _default_color
Tercio@11 2188 end
Tercio@11 2189
Tercio@11 2190 if (leftText) then
Tercio@11 2191 local lineTable_left = CoolTip.LeftTextTable [CoolTip.Indexes]
Tercio@11 2192
Tercio@11 2193 if (not lineTable_left or CoolTip.isSpecial) then
Tercio@11 2194 lineTable_left = {}
Tercio@11 2195 CoolTip.LeftTextTable [CoolTip.Indexes] = lineTable_left
Tercio@11 2196 end
Tercio@11 2197
Tercio@11 2198 lineTable_left [1] = leftText --> line text
Tercio@11 2199 lineTable_left [2] = 0
Tercio@11 2200 lineTable_left [3] = 0
Tercio@11 2201 lineTable_left [4] = 0
Tercio@11 2202 lineTable_left [5] = 0
Tercio@11 2203 lineTable_left [6] = false
Tercio@11 2204 lineTable_left [7] = false
Tercio@11 2205 lineTable_left [8] = false
Tercio@11 2206
Tercio@11 2207 end
Tercio@11 2208
Tercio@11 2209 elseif ((type (menuType) == "string" and menuType == "sec") or (type (menuType) == "number" and menuType == 2)) then
Tercio@11 2210
Tercio@11 2211 if (CoolTip.SubIndexes == 0) then
Tercio@11 2212 if (not indexUp or not leftText) then
Tercio@11 2213 print ("not indexUp or not leftText")
Tercio@11 2214 return --> error
Tercio@11 2215 end
Tercio@11 2216 end
Tercio@11 2217
Tercio@11 2218 if (indexUp and leftText) then
Tercio@11 2219 CoolTip.SubIndexes = CoolTip.SubIndexes + 1
Tercio@11 2220 CoolTip.IndexesSub [CoolTip.Indexes] = CoolTip.IndexesSub [CoolTip.Indexes] + 1
Tercio@11 2221 elseif (indexUp and not leftText) then
Tercio@11 2222 print ("indexUp and not leftText")
Tercio@11 2223 return --> error [leftText can't be nil if indexUp are true]
Tercio@11 2224 end
Tercio@11 2225
Tercio@11 2226 --> menu container
Tercio@11 2227 local subMenuContainerParameters = CoolTip.ParametersTableSub [CoolTip.Indexes]
Tercio@11 2228 if (not subMenuContainerParameters) then
Tercio@11 2229 subMenuContainerParameters = {}
Tercio@11 2230 CoolTip.ParametersTableSub [CoolTip.Indexes] = subMenuContainerParameters
Tercio@11 2231 end
Tercio@11 2232
Tercio@11 2233 local subMenuContainerFunctions = CoolTip.FunctionsTableSub [CoolTip.Indexes]
Tercio@11 2234 if (not subMenuContainerFunctions or CoolTip.isSpecial) then
Tercio@11 2235 subMenuContainerFunctions = {}
Tercio@11 2236 CoolTip.FunctionsTableSub [CoolTip.Indexes] = subMenuContainerFunctions
Tercio@11 2237 end
Tercio@11 2238
Tercio@11 2239 --> menu table
Tercio@11 2240 local subMenuTablesParameters = subMenuContainerParameters [CoolTip.SubIndexes]
Tercio@11 2241 if (not subMenuTablesParameters or CoolTip.isSpecial) then
Tercio@11 2242 subMenuTablesParameters = {}
Tercio@11 2243 subMenuContainerParameters [CoolTip.SubIndexes] = subMenuTablesParameters
Tercio@11 2244 end
Tercio@11 2245
Tercio@11 2246 --> add
Tercio@11 2247 subMenuContainerFunctions [CoolTip.SubIndexes] = func
Tercio@11 2248
Tercio@11 2249 subMenuTablesParameters [1] = param1
Tercio@11 2250 subMenuTablesParameters [2] = param2
Tercio@11 2251 subMenuTablesParameters [3] = param3
Tercio@11 2252
Tercio@11 2253 --> text and icon
Tercio@11 2254 if (leftIcon) then
Tercio@11 2255
Tercio@11 2256 local subMenuContainerIcons = CoolTip.LeftIconTableSub [CoolTip.Indexes]
Tercio@11 2257 if (not subMenuContainerIcons) then
Tercio@11 2258 subMenuContainerIcons = {}
Tercio@11 2259 CoolTip.LeftIconTableSub [CoolTip.Indexes] = subMenuContainerIcons
Tercio@11 2260 end
Tercio@11 2261 local subMenuTablesIcons = subMenuContainerIcons [CoolTip.SubIndexes]
Tercio@11 2262 if (not subMenuTablesIcons or CoolTip.isSpecial) then
Tercio@11 2263 subMenuTablesIcons = {}
Tercio@11 2264 subMenuContainerIcons [CoolTip.SubIndexes] = subMenuTablesIcons
Tercio@11 2265 end
Tercio@11 2266
Tercio@11 2267 subMenuTablesIcons [1] = leftIcon
Tercio@11 2268 subMenuTablesIcons [2] = 16 --> default 16
Tercio@11 2269 subMenuTablesIcons [3] = 16 --> default 16
Tercio@11 2270 subMenuTablesIcons [4] = 0 --> default 0
Tercio@11 2271 subMenuTablesIcons [5] = 1 --> default 1
Tercio@11 2272 subMenuTablesIcons [6] = 0 --> default 0
Tercio@11 2273 subMenuTablesIcons [7] = 1 --> default 1
Tercio@11 2274 subMenuTablesIcons [8] = _default_color
Tercio@11 2275 end
Tercio@11 2276
Tercio@11 2277 if (leftText) then
Tercio@11 2278
Tercio@11 2279 local subMenuContainerTexts = CoolTip.LeftTextTableSub [CoolTip.Indexes]
Tercio@11 2280 if (not subMenuContainerTexts) then
Tercio@11 2281 subMenuContainerTexts = {}
Tercio@11 2282 CoolTip.LeftTextTableSub [CoolTip.Indexes] = subMenuContainerTexts
Tercio@11 2283 end
Tercio@11 2284 local subMenuTablesTexts = subMenuContainerTexts [CoolTip.SubIndexes]
Tercio@11 2285 if (not subMenuTablesTexts or CoolTip.isSpecial) then
Tercio@11 2286 subMenuTablesTexts = {}
Tercio@11 2287 subMenuContainerTexts [CoolTip.SubIndexes] = subMenuTablesTexts
Tercio@11 2288 end
Tercio@11 2289
Tercio@11 2290 subMenuTablesTexts [1] = leftText --> line text
Tercio@11 2291 subMenuTablesTexts [2] = 0
Tercio@11 2292 subMenuTablesTexts [3] = 0
Tercio@11 2293 subMenuTablesTexts [4] = 0
Tercio@11 2294 subMenuTablesTexts [5] = 0
Tercio@11 2295 subMenuTablesTexts [6] = false
Tercio@11 2296 subMenuTablesTexts [7] = false
Tercio@11 2297 subMenuTablesTexts [8] = false
Tercio@11 2298
Tercio@11 2299 end
Tercio@11 2300
Tercio@11 2301 CoolTip.HaveSubMenu = true
Tercio@11 2302
Tercio@11 2303 else
Tercio@11 2304 return --> error
Tercio@11 2305 end
Tercio@11 2306 end
Tercio@11 2307
Tercio@11 2308 ----------------------------------------------------------------------
Tercio@11 2309 --> adds a statusbar to the last line added.
Tercio@11 2310 --> only works with cooltip type 2 (tooltip with bars)
Tercio@11 2311 --> parameters: value [, color red, color green, color blue, color alpha [, glow]]
Tercio@11 2312 --> can also use a table or html color name in color red and send glow in color green
Tercio@11 2313
Tercioo@29 2314 function CoolTip:AddStatusBar (statusbarValue, frame, ColorR, ColorG, ColorB, ColorA, statusbarGlow, backgroundBar, barTexture)
Tercio@11 2315
Tercio@11 2316 --> need a previous line
Tercio@11 2317 if (CoolTip.Indexes == 0) then
Tercio@11 2318 return --> return error
Tercio@11 2319 end
Tercio@11 2320
Tercio@11 2321 --> check data integrity
Tercio@11 2322 if (type (statusbarValue) ~= "number") then
Tercio@11 2323 return --> error
Tercio@11 2324 end
Tercio@11 2325
Tercio@11 2326 if (type (ColorR) == "table" or type (ColorR) == "string") then
Tercio@11 2327 statusbarGlow, backgroundBar, ColorR, ColorG, ColorB, ColorA = ColorG, ColorB, DF:ParseColors (ColorR)
Tercio@11 2328 elseif (type (ColorR) == "boolean") then
Tercio@11 2329 backgroundBar = ColorG
Tercio@11 2330 statusbarGlow = ColorR
Tercio@11 2331 ColorR, ColorG, ColorB, ColorA = 1, 1, 1, 1
Tercio@11 2332 else
Tercio@11 2333 --> error
Tercio@11 2334 end
Tercio@11 2335
Tercio@11 2336 --> add
Tercio@11 2337 local frameTable
Tercio@11 2338 local statusbarTable
Tercio@11 2339
Tercio@11 2340 if (not frame or (type (frame) == "string" and frame == "main") or (type (frame) == "number" and frame == 1)) then
Tercio@11 2341 frameTable = CoolTip.StatusBarTable
Tercio@11 2342
Tercio@11 2343 if (CoolTip.isSpecial) then
Tercio@11 2344 statusbarTable = {}
Tercio@11 2345 _table_insert (frameTable, CoolTip.Indexes, statusbarTable)
Tercio@11 2346 else
Tercio@11 2347 statusbarTable = frameTable [CoolTip.Indexes]
Tercio@11 2348 if (not statusbarTable) then
Tercio@11 2349 statusbarTable = {}
Tercio@11 2350 _table_insert (frameTable, CoolTip.Indexes, statusbarTable)
Tercio@11 2351 --frameTable [CoolTip.Indexes] = statusbarTable
Tercio@11 2352 end
Tercio@11 2353 end
Tercio@11 2354
Tercio@11 2355 elseif ((type (frame) == "string" and frame == "sub") or (type (frame) == "number" and frame == 2)) then
Tercio@11 2356
Tercio@11 2357 frameTable = CoolTip.StatusBarTableSub
Tercio@11 2358
Tercio@11 2359 local subMenuContainerStatusBar = frameTable [CoolTip.Indexes]
Tercio@11 2360 if (not subMenuContainerStatusBar) then
Tercio@11 2361 subMenuContainerStatusBar = {}
Tercio@11 2362 frameTable [CoolTip.Indexes] = subMenuContainerStatusBar
Tercio@11 2363 end
Tercio@11 2364
Tercio@11 2365 if (CoolTip.isSpecial) then
Tercio@11 2366 statusbarTable = {}
Tercio@11 2367 _table_insert (subMenuContainerStatusBar, CoolTip.SubIndexes, statusbarTable)
Tercio@11 2368 else
Tercio@11 2369 statusbarTable = subMenuContainerStatusBar [CoolTip.SubIndexes]
Tercio@11 2370 if (not statusbarTable) then
Tercio@11 2371 statusbarTable = {}
Tercio@11 2372 _table_insert (subMenuContainerStatusBar, CoolTip.SubIndexes, statusbarTable)
Tercio@11 2373 end
Tercio@11 2374 end
Tercio@11 2375 else
Tercio@11 2376 print ("unknow frame")
Tercio@11 2377 return --> error
Tercio@11 2378 end
Tercio@11 2379
Tercio@11 2380 statusbarTable [1] = statusbarValue
Tercio@11 2381 statusbarTable [2] = ColorR
Tercio@11 2382 statusbarTable [3] = ColorG
Tercio@11 2383 statusbarTable [4] = ColorB
Tercio@11 2384 statusbarTable [5] = ColorA
Tercio@11 2385 statusbarTable [6] = statusbarGlow
Tercio@11 2386 statusbarTable [7] = backgroundBar
Tercioo@29 2387 statusbarTable [8] = barTexture
Tercio@11 2388
Tercio@11 2389 end
Tercio@11 2390
Tercio@11 2391 frame1.frameWallpaper:Hide()
Tercio@11 2392 frame2.frameWallpaper:Hide()
Tercio@11 2393
Tercio@11 2394 function CoolTip:SetWallpaper (index, texture, texcoord, color, desaturate)
Tercio@11 2395
Tercio@11 2396 if (CoolTip.Indexes == 0) then
Tercio@11 2397 return --> return error
Tercio@11 2398 end
Tercio@11 2399
Tercio@11 2400 local frameTable
Tercio@11 2401 local wallpaperTable
Tercio@11 2402
Tercio@11 2403 if ( (type (index) == "number" and index == 1) or (type (index) == "string" and index == "main") ) then
Tercio@11 2404 wallpaperTable = CoolTip.WallpaperTable
Tercio@11 2405
Tercio@11 2406 elseif ( (type (index) == "number" and index == 2) or (type (index) == "string" and index == "sub") ) then
Tercio@11 2407 frameTable = CoolTip.WallpaperTableSub
Tercio@11 2408
Tercio@11 2409 local subMenuContainerWallpapers = frameTable [CoolTip.Indexes]
Tercio@11 2410 if (not subMenuContainerWallpapers) then
Tercio@11 2411 subMenuContainerWallpapers = {}
Tercio@11 2412 frameTable [CoolTip.Indexes] = subMenuContainerWallpapers
Tercio@11 2413 end
Tercio@11 2414
Tercio@11 2415 wallpaperTable = subMenuContainerWallpapers
Tercio@11 2416 end
Tercio@11 2417
Tercio@11 2418 wallpaperTable [1] = texture
Tercio@11 2419 if (texcoord) then
Tercio@11 2420 wallpaperTable [2] = texcoord [1]
Tercio@11 2421 wallpaperTable [3] = texcoord [2]
Tercio@11 2422 wallpaperTable [4] = texcoord [3]
Tercio@11 2423 wallpaperTable [5] = texcoord [4]
Tercio@11 2424 else
Tercio@11 2425 wallpaperTable [2] = 0
Tercio@11 2426 wallpaperTable [3] = 1
Tercio@11 2427 wallpaperTable [4] = 0
Tercio@11 2428 wallpaperTable [5] = 1
Tercio@11 2429 end
Tercio@11 2430 wallpaperTable [6] = color
Tercio@11 2431 wallpaperTable [7] = desaturate
Tercio@11 2432 end
Tercio@11 2433
Tercio@11 2434 function CoolTip:SetBannerText (index, text, anchor, color, fontsize, fontface, fontflag)
Tercio@11 2435 local fontstring
Tercio@11 2436
Tercio@11 2437 if (index == 1) then
Tercio@11 2438 fontstring = frame1.upperImageText
Tercio@11 2439 elseif (index == 2) then
Tercio@11 2440 fontstring = frame1.upperImageText2
Tercio@11 2441 end
Tercio@11 2442
Tercio@11 2443 fontstring:SetText (text or "")
Tercio@11 2444
Tercio@11 2445 if (anchor and index == 1) then
Tercio@11 2446 local myAnchor, hisAnchor, x, y = unpack (anchor)
Tercio@11 2447 fontstring:SetPoint (myAnchor, frame1.upperImage, hisAnchor or myAnchor, x or 0, y or 0)
Tercio@11 2448 elseif (anchor and index == 2) then
Tercio@11 2449 local myAnchor, hisAnchor, x, y = unpack (anchor)
Tercio@11 2450 fontstring:SetPoint (myAnchor, frame1, hisAnchor or myAnchor, x or 0, y or 0)
Tercio@11 2451 end
Tercio@11 2452
Tercio@11 2453 if (color) then
Tercio@11 2454 local r, g, b, a = DF:ParseColors (color)
Tercio@11 2455 fontstring:SetTextColor (r, g, b, a)
Tercio@11 2456 end
Tercio@11 2457
Tercio@11 2458 local face, size, flags = fontstring:GetFont()
Tercio@11 2459 face = fontface or [[Fonts\FRIZQT__.TTF]]
Tercio@11 2460 size = fontsize or 13
Tercio@11 2461 flags = fontflag or nil
Tercio@11 2462 fontstring:SetFont (face, size, flags)
Tercio@11 2463 fontstring:Show()
Tercio@11 2464 end
Tercio@11 2465
Tercio@11 2466 function CoolTip:SetBackdrop (index, backdrop, backdropcolor, bordercolor)
Tercio@11 2467
Tercio@11 2468 local f
Tercio@11 2469 if (index == 1) then
Tercio@11 2470 f = frame1
Tercio@11 2471 elseif (index == 2) then
Tercio@11 2472 f = frame2
Tercio@11 2473 end
Tercio@11 2474
Tercio@11 2475 if (backdrop) then
Tercio@11 2476 f:SetBackdrop (backdrop)
Tercio@11 2477 end
Tercio@11 2478 if (backdropcolor) then
Tercio@11 2479 local r, g, b, a = DF:ParseColors (backdropcolor)
Tercio@11 2480 f:SetBackdropColor (r, g, b, a)
Tercio@11 2481 end
Tercio@11 2482 if (bordercolor) then
Tercio@11 2483 local r, g, b, a = DF:ParseColors (bordercolor)
Tercio@11 2484 f:SetBackdropBorderColor (r, g, b, a)
Tercio@11 2485 end
Tercio@11 2486
Tercio@11 2487 end
Tercio@11 2488
Tercio@11 2489 function CoolTip:SetBannerImage (index, texturepath, width, height, anchor, texcoord, overlay)
Tercio@11 2490
Tercio@11 2491 local texture
Tercio@11 2492
Tercio@11 2493 if (index == 1) then
Tercio@11 2494 texture = frame1.upperImage
Tercio@11 2495 elseif (index == 2) then
Tercio@11 2496 texture = frame1.upperImage2
Tercio@11 2497 end
Tercio@11 2498
Tercio@11 2499 if (texturepath) then
Tercio@11 2500 texture:SetTexture (texturepath)
Tercio@11 2501 end
Tercio@11 2502
Tercio@11 2503 if (width) then
Tercio@11 2504 texture:SetWidth (width)
Tercio@11 2505 end
Tercio@11 2506 if (height) then
Tercio@11 2507 texture:SetHeight (height)
Tercio@11 2508 end
Tercio@11 2509
Tercio@11 2510 if (anchor) then
Tercio@11 2511 if (type (anchor[1]) == "table") then
Tercio@11 2512 for _, t in _ipairs (anchor) do
Tercio@11 2513 local myAnchor, hisAnchor, x, y = unpack (t)
Tercio@11 2514 texture:SetPoint (myAnchor, frame1, hisAnchor or myAnchor, x or 0, y or 0)
Tercio@11 2515 end
Tercio@11 2516 else
Tercio@11 2517 local myAnchor, hisAnchor, x, y = unpack (anchor)
Tercio@11 2518 texture:SetPoint (myAnchor, frame1, hisAnchor or myAnchor, x or 0, y or 0)
Tercio@11 2519 end
Tercio@11 2520 end
Tercio@11 2521
Tercio@11 2522 if (texcoord) then
Tercio@11 2523 local L, R, T, B = unpack (texcoord)
Tercio@11 2524 texture:SetTexCoord (L, R, T, B)
Tercio@11 2525 end
Tercio@11 2526
Tercio@11 2527 if (overlay) then
Tercio@11 2528 texture:SetVertexColor (unpack (overlay))
Tercio@11 2529 end
Tercio@11 2530
Tercio@11 2531 CoolTip.Banner [index] = true
Tercio@11 2532 texture:Show()
Tercio@11 2533
Tercio@11 2534 end
Tercio@11 2535
Tercio@11 2536 ----------------------------------------------------------------------
Tercio@11 2537 --> adds a icon to the last line added.
Tercio@11 2538 --> only works with cooltip type 1 and 2 (tooltip and tooltip with bars)
Tercio@11 2539 --> parameters: icon [, width [, height [, TexCoords L R T B ]]]
Tercio@11 2540 --> texture support string path or texture object
Tercio@11 2541
Tercio@11 2542 function CoolTip:AddTexture (iconTexture, frame, side, iconWidth, iconHeight, L, R, T, B, overlayColor, point, desaturated)
Tercio@11 2543 return CoolTip:AddIcon (iconTexture, frame, side, iconWidth, iconHeight, L, R, T, B, overlayColor, point, desaturated)
Tercio@11 2544 end
Tercio@11 2545 function CoolTip:AddIcon (iconTexture, frame, side, iconWidth, iconHeight, L, R, T, B, overlayColor, point, desaturated)
Tercio@11 2546
Tercio@11 2547 --> need a previous line
Tercio@11 2548 if (CoolTip.Indexes == 0) then
Tercio@11 2549 return --> return error
Tercio@11 2550 end
Tercio@11 2551
Tercio@11 2552 --> check data integrity
Tercio@39 2553 if ( (type (iconTexture) ~= "string" and type (iconTexture) ~= "number") and (type (iconTexture) ~= "table" or not iconTexture.GetObjectType or iconTexture:GetObjectType() ~= "Texture") ) then
Tercio@11 2554 return --> return error
Tercio@11 2555 end
Tercio@11 2556
Tercio@11 2557 side = side or 1
Tercio@11 2558
Tercio@11 2559 local frameTable
Tercio@11 2560 local iconTable
Tercio@11 2561
Tercio@11 2562 if (not frame or (type (frame) == "string" and frame == "main") or (type (frame) == "number" and frame == 1)) then
Tercio@11 2563
Tercio@11 2564 if (not side or (type (side) == "string" and side == "left") or (type (side) == "number" and side == 1)) then
Tercio@11 2565 frameTable = CoolTip.LeftIconTable
Tercio@11 2566
Tercio@11 2567 elseif ((type (side) == "string" and side == "right") or (type (side) == "number" and side == 2)) then
Tercio@11 2568 frameTable = CoolTip.RightIconTable
Tercio@11 2569
Tercio@11 2570 end
Tercio@11 2571
Tercio@11 2572 if (CoolTip.isSpecial) then
Tercio@11 2573 iconTable = {}
Tercio@11 2574 _table_insert (frameTable, CoolTip.Indexes, iconTable)
Tercio@11 2575 else
Tercio@11 2576 iconTable = frameTable [CoolTip.Indexes]
Tercio@11 2577 if (not iconTable) then
Tercio@11 2578 iconTable = {}
Tercio@11 2579 _table_insert (frameTable, CoolTip.Indexes, iconTable)
Tercio@11 2580 --frameTable [CoolTip.Indexes] = iconTable
Tercio@11 2581 end
Tercio@11 2582 end
Tercio@11 2583
Tercio@11 2584 elseif ((type (frame) == "string" and frame == "sub") or (type (frame) == "number" and frame == 2)) then
Tercio@11 2585
Tercio@11 2586 if ((type (side) == "string" and side == "left") or (type (side) == "number" and side == 1)) then
Tercio@11 2587 frameTable = CoolTip.LeftIconTableSub
Tercio@11 2588 elseif ((type (side) == "string" and side == "right") or (type (side) == "number" and side == 2)) then
Tercio@11 2589 frameTable = CoolTip.RightIconTableSub
Tercio@11 2590 elseif ((type (side) == "string" and side == "top") or (type (side) == "number" and side == 3)) then
Tercio@11 2591 CoolTip.TopIconTableSub [CoolTip.Indexes] = CoolTip.TopIconTableSub [CoolTip.Indexes] or {}
Tercio@11 2592 CoolTip.TopIconTableSub [CoolTip.Indexes] [1] = iconTexture
Tercio@11 2593 CoolTip.TopIconTableSub [CoolTip.Indexes] [2] = iconWidth or 16
Tercio@11 2594 CoolTip.TopIconTableSub [CoolTip.Indexes] [3] = iconHeight or 16
Tercio@11 2595 CoolTip.TopIconTableSub [CoolTip.Indexes] [4] = L or 0
Tercio@11 2596 CoolTip.TopIconTableSub [CoolTip.Indexes] [5] = R or 1
Tercio@11 2597 CoolTip.TopIconTableSub [CoolTip.Indexes] [6] = T or 0
Tercio@11 2598 CoolTip.TopIconTableSub [CoolTip.Indexes] [7] = B or 1
Tercio@11 2599 CoolTip.TopIconTableSub [CoolTip.Indexes] [8] = overlayColor or _default_color
Tercio@11 2600 CoolTip.TopIconTableSub [CoolTip.Indexes] [9] = desaturated
Tercio@11 2601 return
Tercio@11 2602 end
Tercio@11 2603
Tercio@11 2604 local subMenuContainerIcons = frameTable [CoolTip.Indexes]
Tercio@11 2605 if (not subMenuContainerIcons) then
Tercio@11 2606 subMenuContainerIcons = {}
Tercio@11 2607 frameTable [CoolTip.Indexes] = subMenuContainerIcons
Tercio@11 2608 end
Tercio@11 2609
Tercio@11 2610 if (CoolTip.isSpecial) then
Tercio@11 2611 iconTable = {}
Tercio@11 2612 subMenuContainerIcons [CoolTip.SubIndexes] = iconTable
Tercio@11 2613 else
Tercio@11 2614 iconTable = subMenuContainerIcons [CoolTip.SubIndexes]
Tercio@11 2615 if (not iconTable) then
Tercio@11 2616 iconTable = {}
Tercio@11 2617 subMenuContainerIcons [CoolTip.SubIndexes] = iconTable
Tercio@11 2618 end
Tercio@11 2619 end
Tercio@11 2620
Tercio@11 2621 else
Tercio@11 2622 return --> error
Tercio@11 2623 end
Tercio@11 2624
Tercio@11 2625 iconTable [1] = iconTexture
Tercio@11 2626 iconTable [2] = iconWidth or 16 --> default 16
Tercio@11 2627 iconTable [3] = iconHeight or 16 --> default 16
Tercio@11 2628 iconTable [4] = L or 0 --> default 0
Tercio@11 2629 iconTable [5] = R or 1 --> default 1
Tercio@11 2630 iconTable [6] = T or 0 --> default 0
Tercio@11 2631 iconTable [7] = B or 1 --> default 1
Tercio@11 2632 iconTable [8] = overlayColor or _default_color --> default 1, 1, 1
Tercio@11 2633 iconTable [9] = desaturated
Tercio@11 2634
Tercio@11 2635 return true
Tercio@11 2636 end
Tercio@11 2637
Tercio@11 2638 ----------------------------------------------------------------------
Tercio@20 2639 --> popup frame
Tercio@20 2640 function CoolTip:AddPopUpFrame (func_on_show, func_on_hide, param1, param2)
Tercio@20 2641
Tercio@20 2642 -- act like a sub menu
Tercio@20 2643 if (CoolTip.Indexes > 0) then
Tercio@20 2644 CoolTip.PopupFrameTable [CoolTip.Indexes] = {func_on_show or false, func_on_hide or false, param1, param2}
Tercio@20 2645 end
Tercio@20 2646
Tercio@20 2647 end
Tercio@20 2648
Tercio@20 2649 ----------------------------------------------------------------------
Tercio@11 2650 --> adds a line.
Tercio@11 2651 --> only works with cooltip type 1 and 2 (tooltip and tooltip with bars)
Tercio@11 2652 --> parameters: left text, right text [, L color R, L color G, L color B, L color A [, R color R, R color G, R color B, R color A [, wrap]]]
Tercio@11 2653
Tercio@11 2654 --> alias
Tercio@11 2655 function CoolTip:AddDoubleLine (leftText, rightText, frame, ColorR1, ColorG1, ColorB1, ColorA1, ColorR2, ColorG2, ColorB2, ColorA2, fontSize, fontFace, fontFlag)
Tercio@11 2656 return CoolTip:AddLine (leftText, rightText, frame, ColorR1, ColorG1, ColorB1, ColorA1, ColorR2, ColorG2, ColorB2, ColorA2, fontSize, fontFace, fontFlag)
Tercio@11 2657 end
Tercio@11 2658
Tercio@11 2659 --> adds a line for tooltips
Tercio@11 2660 function CoolTip:AddLine (leftText, rightText, frame, ColorR1, ColorG1, ColorB1, ColorA1, ColorR2, ColorG2, ColorB2, ColorA2, fontSize, fontFace, fontFlag)
Tercio@11 2661
Tercio@11 2662 --> check data integrity
Tercio@11 2663 local t = type (leftText)
Tercio@11 2664 if (t ~= "string") then
Tercio@11 2665 if (t == "number") then
Tercio@11 2666 leftText = tostring (leftText)
Tercio@11 2667 else
Tercio@11 2668 leftText = ""
Tercio@11 2669 end
Tercio@11 2670 end
Tercio@11 2671
Tercio@11 2672 local t = type (rightText)
Tercio@11 2673 if (t ~= "string") then
Tercio@11 2674 if (t == "number") then
Tercio@11 2675 rightText = tostring (rightText)
Tercio@11 2676 else
Tercio@11 2677 rightText = ""
Tercio@11 2678 end
Tercio@11 2679 end
Tercio@11 2680
Tercio@11 2681 if (type (ColorR1) ~= "number") then
Tercio@11 2682 ColorR2, ColorG2, ColorB2, ColorA2, fontSize, fontFace, fontFlag = ColorG1, ColorB1, ColorA1, ColorR2, ColorG2, ColorB2, ColorA2
Tercio@11 2683
Tercio@11 2684 if (type (ColorR1) == "boolean" or not ColorR1) then
Tercio@11 2685 ColorR1, ColorG1, ColorB1, ColorA1 = 0, 0, 0, 0
Tercio@11 2686 else
Tercio@11 2687 ColorR1, ColorG1, ColorB1, ColorA1 = DF:ParseColors (ColorR1)
Tercio@11 2688 end
Tercio@11 2689 end
Tercio@11 2690
Tercio@11 2691 if (type (ColorR2) ~= "number") then
Tercio@11 2692 fontSize, fontFace, fontFlag = ColorG2, ColorB2, ColorA2
Tercio@11 2693
Tercio@11 2694 if (type (ColorR2) == "boolean" or not ColorR2) then
Tercio@11 2695 ColorR2, ColorG2, ColorB2, ColorA2 = 0, 0, 0, 0
Tercio@11 2696 else
Tercio@11 2697 ColorR2, ColorG2, ColorB2, ColorA2 = DF:ParseColors (ColorR2)
Tercio@11 2698 end
Tercio@11 2699 end
Tercio@11 2700
Tercio@11 2701 local frameTableLeft
Tercio@11 2702 local frameTableRight
Tercio@11 2703 local lineTable_left
Tercio@11 2704 local lineTable_right
Tercio@11 2705
Tercio@11 2706 if (not frame or (type (frame) == "string" and frame == "main") or (type (frame) == "number" and frame == 1)) then
Tercio@11 2707
Tercio@11 2708 CoolTip.Indexes = CoolTip.Indexes + 1
Tercio@11 2709
Tercio@11 2710 if (not CoolTip.IndexesSub [CoolTip.Indexes]) then
Tercio@11 2711 CoolTip.IndexesSub [CoolTip.Indexes] = 0
Tercio@11 2712 end
Tercio@11 2713
Tercio@11 2714 CoolTip.SubIndexes = 0
Tercio@11 2715
Tercio@11 2716 frameTableLeft = CoolTip.LeftTextTable
Tercio@11 2717 frameTableRight = CoolTip.RightTextTable
Tercio@11 2718
Tercio@11 2719 if (CoolTip.isSpecial) then
Tercio@11 2720 lineTable_left = {}
Tercio@11 2721 _table_insert (frameTableLeft, CoolTip.Indexes, lineTable_left)
Tercio@11 2722 lineTable_right = {}
Tercio@11 2723 _table_insert (frameTableRight, CoolTip.Indexes, lineTable_right)
Tercio@11 2724 else
Tercio@11 2725 lineTable_left = frameTableLeft [CoolTip.Indexes]
Tercio@11 2726 lineTable_right = frameTableRight [CoolTip.Indexes]
Tercio@11 2727
Tercio@11 2728 if (not lineTable_left) then
Tercio@11 2729 lineTable_left = {}
Tercio@11 2730 _table_insert (frameTableLeft, CoolTip.Indexes, lineTable_left)
Tercio@11 2731 end
Tercio@11 2732 if (not lineTable_right) then
Tercio@11 2733 lineTable_right = {}
Tercio@11 2734 _table_insert (frameTableRight, CoolTip.Indexes, lineTable_right)
Tercio@11 2735 end
Tercio@11 2736 end
Tercio@11 2737
Tercio@11 2738 elseif ((type (frame) == "string" and frame == "sub") or (type (frame) == "number" and frame == 2)) then
Tercio@11 2739
Tercio@11 2740 CoolTip.SubIndexes = CoolTip.SubIndexes + 1
Tercio@11 2741 CoolTip.IndexesSub [CoolTip.Indexes] = CoolTip.IndexesSub [CoolTip.Indexes] + 1
Tercio@11 2742 CoolTip.HaveSubMenu = true
Tercio@11 2743
Tercio@11 2744 frameTableLeft = CoolTip.LeftTextTableSub
Tercio@11 2745 frameTableRight = CoolTip.RightTextTableSub
Tercio@11 2746
Tercio@11 2747 local subMenuContainerTexts = frameTableLeft [CoolTip.Indexes]
Tercio@11 2748 if (not subMenuContainerTexts) then
Tercio@11 2749 subMenuContainerTexts = {}
Tercio@11 2750 _table_insert (frameTableLeft, CoolTip.Indexes, subMenuContainerTexts)
Tercio@11 2751 end
Tercio@11 2752
Tercio@11 2753 if (CoolTip.isSpecial) then
Tercio@11 2754 lineTable_left = {}
Tercio@11 2755 _table_insert (subMenuContainerTexts, CoolTip.SubIndexes, lineTable_left)
Tercio@11 2756 else
Tercio@11 2757 lineTable_left = subMenuContainerTexts [CoolTip.SubIndexes]
Tercio@11 2758 if (not lineTable_left) then
Tercio@11 2759 lineTable_left = {}
Tercio@11 2760 --subMenuContainerTexts [CoolTip.SubIndexes] = lineTable_left
Tercio@11 2761 _table_insert (subMenuContainerTexts, CoolTip.SubIndexes, lineTable_left)
Tercio@11 2762 end
Tercio@11 2763 end
Tercio@11 2764
Tercio@11 2765 local subMenuContainerTexts = frameTableRight [CoolTip.Indexes]
Tercio@11 2766 if (not subMenuContainerTexts) then
Tercio@11 2767 subMenuContainerTexts = {}
Tercio@11 2768 _table_insert (frameTableRight, CoolTip.Indexes, subMenuContainerTexts)
Tercio@11 2769 --frameTableRight [CoolTip.Indexes] = subMenuContainerTexts
Tercio@11 2770 end
Tercio@11 2771
Tercio@11 2772 if (CoolTip.isSpecial) then
Tercio@11 2773 lineTable_right = {}
Tercio@11 2774 _table_insert (subMenuContainerTexts, CoolTip.SubIndexes, lineTable_right)
Tercio@11 2775 else
Tercio@11 2776 lineTable_right = subMenuContainerTexts [CoolTip.SubIndexes]
Tercio@11 2777 if (not lineTable_right) then
Tercio@11 2778 lineTable_right = {}
Tercio@11 2779 _table_insert (subMenuContainerTexts, CoolTip.SubIndexes, lineTable_right)
Tercio@11 2780 --subMenuContainerTexts [CoolTip.SubIndexes] = lineTable_right
Tercio@11 2781 end
Tercio@11 2782 end
Tercio@11 2783 else
Tercio@11 2784 return --> error
Tercio@11 2785 end
Tercio@11 2786
Tercio@11 2787 lineTable_left [1] = leftText --> line text
Tercio@11 2788 lineTable_left [2] = ColorR1
Tercio@11 2789 lineTable_left [3] = ColorG1
Tercio@11 2790 lineTable_left [4] = ColorB1
Tercio@11 2791 lineTable_left [5] = ColorA1
Tercio@11 2792 lineTable_left [6] = fontSize
Tercio@11 2793 lineTable_left [7] = fontFace
Tercio@11 2794 lineTable_left [8] = fontFlag
Tercio@11 2795
Tercio@11 2796 lineTable_right [1] = rightText --> line text
Tercio@11 2797 lineTable_right [2] = ColorR2
Tercio@11 2798 lineTable_right [3] = ColorG2
Tercio@11 2799 lineTable_right [4] = ColorB2
Tercio@11 2800 lineTable_right [5] = ColorA2
Tercio@11 2801 lineTable_right [6] = fontSize
Tercio@11 2802 lineTable_right [7] = fontFace
Tercio@11 2803 lineTable_right [8] = fontFlag
Tercio@11 2804 end
Tercio@11 2805
Tercio@11 2806 function CoolTip:AddSpecial (widgetType, index, subIndex, ...)
Tercio@11 2807
Tercio@11 2808 local currentIndex = CoolTip.Indexes
Tercio@11 2809 local currentSubIndex = CoolTip.SubIndexes
Tercio@11 2810 CoolTip.isSpecial = true
Tercio@11 2811
Tercio@11 2812 widgetType = string.lower (widgetType)
Tercio@11 2813
Tercio@11 2814 if (widgetType == "line") then
Tercio@11 2815
Tercio@11 2816 if (subIndex) then
Tercio@11 2817 CoolTip.Indexes = index
Tercio@11 2818 CoolTip.SubIndexes = subIndex-1
Tercio@11 2819 else
Tercio@11 2820 CoolTip.Indexes = index-1
Tercio@11 2821 end
Tercio@11 2822
Tercio@11 2823 CoolTip:AddLine (...)
Tercio@11 2824
Tercio@11 2825 if (subIndex) then
Tercio@11 2826 CoolTip.Indexes = currentIndex
Tercio@11 2827 CoolTip.SubIndexes = currentSubIndex+1
Tercio@11 2828 else
Tercio@11 2829 CoolTip.Indexes = currentIndex+1
Tercio@11 2830 end
Tercio@11 2831
Tercio@11 2832 elseif (widgetType == "icon") then
Tercio@11 2833
Tercio@11 2834 CoolTip.Indexes = index
Tercio@11 2835 if (subIndex) then
Tercio@11 2836 CoolTip.SubIndexes = subIndex
Tercio@11 2837 end
Tercio@11 2838
Tercio@11 2839 CoolTip:AddIcon (...)
Tercio@11 2840
Tercio@11 2841 CoolTip.Indexes = currentIndex
Tercio@11 2842 if (subIndex) then
Tercio@11 2843 CoolTip.SubIndexes = currentSubIndex
Tercio@11 2844 end
Tercio@11 2845
Tercio@11 2846 elseif (widgetType == "statusbar") then
Tercio@11 2847
Tercio@11 2848 CoolTip.Indexes = index
Tercio@11 2849 if (subIndex) then
Tercio@11 2850 CoolTip.SubIndexes = subIndex
Tercio@11 2851 end
Tercio@11 2852
Tercio@11 2853 CoolTip:AddStatusBar (...)
Tercio@11 2854
Tercio@11 2855 CoolTip.Indexes = currentIndex
Tercio@11 2856 if (subIndex) then
Tercio@11 2857 CoolTip.SubIndexes = currentSubIndex
Tercio@11 2858 end
Tercio@11 2859
Tercio@11 2860 elseif (widgetType == "menu") then
Tercio@11 2861
Tercio@11 2862 CoolTip.Indexes = index
Tercio@11 2863 if (subIndex) then
Tercio@11 2864 CoolTip.SubIndexes = subIndex
Tercio@11 2865 end
Tercio@11 2866
Tercio@11 2867 CoolTip:AddMenu (...)
Tercio@11 2868
Tercio@11 2869 CoolTip.Indexes = currentIndex
Tercio@11 2870 if (subIndex) then
Tercio@11 2871 CoolTip.SubIndexes = currentSubIndex
Tercio@11 2872 end
Tercio@11 2873
Tercio@11 2874 end
Tercio@11 2875
Tercio@11 2876 CoolTip.isSpecial = false
Tercio@11 2877
Tercio@11 2878 end
Tercio@11 2879
Tercio@11 2880 --> search key: ~fromline
Tercio@11 2881 function CoolTip:AddFromTable (_table)
Tercio@11 2882 for index, menu in _ipairs (_table) do
Tercio@11 2883 if (menu.func) then
Tercio@11 2884 CoolTip:AddMenu (menu.type or 1, menu.func, menu.param1, menu.param2, menu.param3, nil, menu.icon)
Tercio@11 2885 elseif (menu.statusbar) then
Tercio@11 2886 CoolTip:AddStatusBar (menu.value, menu.type or 1, menu.color, true)
Tercio@11 2887 elseif (menu.icon) then
Tercio@11 2888 CoolTip:AddIcon (menu.icon, menu.type or 1, menu.side or 1, menu.width, menu.height, menu.l, menu.r, menu.t, menu.b, menu.color)
Tercio@11 2889 elseif (menu.textleft or menu.textright or menu.text) then
Tercio@11 2890 CoolTip:AddLine (menu.text, "", menu.type, menu.color, menu.color)
Tercio@11 2891 end
Tercio@11 2892 end
Tercio@11 2893 end
Tercio@11 2894
Tercio@11 2895 ----------------------------------------------------------------------
Tercio@11 2896 --> show cooltip
Tercio@11 2897
Tercio@11 2898 --> serach key: ~start
Tercio@11 2899 function CoolTip:Show (frame, menuType, color)
Tercio@20 2900 CoolTip.had_interaction = false
Tercio@11 2901 return CoolTip:ShowCooltip (frame, menuType, color)
Tercio@11 2902 end
Tercio@11 2903
Tercio@11 2904 function CoolTip:ShowCooltip (frame, menuType, color)
Tercio@11 2905
Tercio@40 2906 frame1:SetFrameStrata ("TOOLTIP")
Tercio@40 2907 frame2:SetFrameStrata ("TOOLTIP")
Tercio@40 2908 frame1:SetParent (UIParent)
Tercio@40 2909 frame2:SetParent (UIParent)
Tercio@40 2910
Tercio@20 2911 CoolTip.had_interaction = false
Tercio@20 2912
Tercio@11 2913 if (frame) then
Tercio@11 2914 --> details framework
Tercio@11 2915 if (frame.dframework) then
Tercio@11 2916 frame = frame.widget
Tercio@11 2917 end
Tercio@11 2918 CoolTip:SetHost (frame)
Tercio@11 2919 end
Tercio@11 2920 if (menuType) then
Tercio@11 2921 CoolTip:SetType (menuType)
Tercio@11 2922 end
Tercio@11 2923 if (color) then
Tercio@11 2924 CoolTip:SetColor (1, color)
Tercio@11 2925 CoolTip:SetColor (2, color)
Tercio@11 2926 end
Tercio@11 2927
Tercio@11 2928 if (CoolTip.Type == 1 or CoolTip.Type == 2) then
Tercio@11 2929 return CoolTip:monta_tooltip()
Tercio@11 2930
Tercio@11 2931 elseif (CoolTip.Type == 3) then
Tercio@11 2932 return CoolTip:monta_cooltip()
Tercio@11 2933
Tercio@11 2934 end
Tercio@11 2935 end
Tercio@11 2936
Tercio@11 2937 local emptyOptions = {}
Tercio@11 2938
Tercio@11 2939 function CoolTip:Hide()
Tercio@11 2940 return CoolTip:Close()
Tercio@11 2941 end
Tercio@11 2942
Tercio@11 2943 function CoolTip:Close()
Tercio@11 2944 CoolTip.active = false
Tercio@11 2945 CoolTip.Host = nil
Tercio@26 2946 DF:FadeFrame (frame1, 1)
Tercio@26 2947 DF:FadeFrame (frame2, 1)
Tercio@11 2948 end
Tercio@11 2949
Tercio@53 2950
Tercio@53 2951
Tercio@11 2952 --> old function call
Tercio@11 2953 function CoolTip:ShowMe (host, arg2)
Tercio@11 2954 --> ignore if mouse is up me
Tercio@11 2955 if (CoolTip.mouseOver) then
Tercio@11 2956 return
Tercio@11 2957 end
Tercio@11 2958
Tercio@11 2959 if (not host or not arg2) then --> hideme
Tercio@11 2960 CoolTip:Close()
Tercio@11 2961 end
Tercio@11 2962 end
Tercio@11 2963
Tercio@11 2964 --> search key: ~inject
Tercio@11 2965 function CoolTip:ExecFunc (host, fromClick)
Tercio@11 2966
Tercio@11 2967 if (host.dframework) then
Tercio@11 2968 if (not host.widget.CoolTip) then
Tercio@11 2969 host.widget.CoolTip = host.CoolTip
Tercio@11 2970 end
Tercio@11 2971 host = host.widget
Tercio@11 2972 end
Tercio@11 2973
Tercio@11 2974 CoolTip:Reset()
Tercio@11 2975 CoolTip:SetType (host.CoolTip.Type)
Tercio@11 2976 CoolTip:SetFixedParameter (host.CoolTip.FixedValue)
Tercio@11 2977 CoolTip:SetColor ("main", host.CoolTip.MainColor or "transparent")
Tercio@11 2978 CoolTip:SetColor ("sec", host.CoolTip.SubColor or "transparent")
Tercio@11 2979
Tercio@56 2980 local okay, errortext = pcall (host.CoolTip.BuildFunc, host, host.CoolTip and host.CoolTip.FixedValue) --resetting anchors
Tercio@56 2981 if (not okay) then
Tercio@56 2982 print ("Cooltip Injected Fucntion Error:", errortext)
Tercio@56 2983 end
Tercio@56 2984
Tercio@11 2985 CoolTip:SetOwner (host, host.CoolTip.MyAnchor, host.CoolTip.HisAnchor, host.CoolTip.X, host.CoolTip.Y)
Tercio@11 2986
Tercio@11 2987 local options = host.CoolTip.Options
Tercio@11 2988 if (type (options) == "function") then
Tercio@11 2989 options = options()
Tercio@11 2990 end
Tercio@11 2991 if (options) then
Tercio@11 2992 for optionName, optionValue in pairs (options) do
Tercio@11 2993 CoolTip:SetOption (optionName, optionValue)
Tercio@11 2994 end
Tercio@11 2995 end
Tercio@11 2996
Tercio@11 2997 if (CoolTip.Indexes == 0) then
Tercio@11 2998 if (host.CoolTip.Default) then
Tercio@11 2999 CoolTip:SetType ("tooltip")
Tercio@11 3000 CoolTip:AddLine (host.CoolTip.Default, nil, 1, "white")
Tercio@11 3001 end
Tercio@11 3002 end
Tercio@56 3003
Tercio@11 3004 CoolTip:ShowCooltip()
Tercio@11 3005
Tercio@11 3006 if (fromClick) then
Tercio@11 3007 --UIFrameFlash (frame1, )
Tercio@11 3008 frame1:Flash (0.05, 0.05, 0.2, true, 0, 0)
Tercio@11 3009 end
Tercio@11 3010 end
Tercio@11 3011
Tercio@11 3012 local wait = 0.2
Tercio@11 3013
Tercio@11 3014 local InjectOnUpdateEnter = function (self, elapsed)
Tercio@11 3015 elapsedTime = elapsedTime+elapsed
Tercio@11 3016 if (elapsedTime > wait) then
Tercio@11 3017 self:SetScript ("OnUpdate", nil)
Tercio@11 3018 CoolTip:ExecFunc (self)
Tercio@11 3019 end
Tercio@11 3020 end
Tercio@11 3021
Tercio@11 3022 local InjectOnUpdateLeave = function (self, elapsed)
Tercio@11 3023 elapsedTime = elapsedTime+elapsed
Tercio@11 3024 if (elapsedTime > 0.2) then
Tercio@11 3025 if (not CoolTip.mouseOver and not CoolTip.buttonOver and self == CoolTip.Host) then
Tercio@11 3026 CoolTip:ShowMe (false)
Tercio@11 3027 end
Tercio@11 3028 self:SetScript ("OnUpdate", nil)
Tercio@11 3029 end
Tercio@11 3030 end
Tercio@11 3031
Tercio@11 3032 local InjectOnLeave = function (self)
Tercio@11 3033 CoolTip.buttonOver = false
Tercio@11 3034
Tercio@11 3035 if (CoolTip.active) then
Tercio@11 3036 elapsedTime = 0
Tercio@11 3037 self:SetScript ("OnUpdate", InjectOnUpdateLeave)
Tercio@11 3038 else
Tercio@11 3039 self:SetScript ("OnUpdate", nil)
Tercio@11 3040 end
Tercio@11 3041
Tercio@11 3042 if (self.CoolTip.OnLeaveFunc) then
Tercio@11 3043 self.CoolTip.OnLeaveFunc (self)
Tercio@11 3044 end
Tercio@11 3045
Tercio@11 3046 if (self.OldOnLeaveScript) then
Tercio@11 3047 self:OldOnLeaveScript()
Tercio@11 3048 end
Tercio@11 3049 end
Tercio@11 3050
Tercio@11 3051 local InjectOnEnter = function (self)
Tercio@11 3052 CoolTip.buttonOver = true
Tercio@11 3053 if (CoolTip.active) then
Tercio@11 3054 CoolTip:ExecFunc (self)
Tercio@11 3055 else
Tercio@11 3056 elapsedTime = 0
Tercio@11 3057 wait = self.CoolTip.ShowSpeed or 0.2
Tercio@11 3058 self:SetScript ("OnUpdate", InjectOnUpdateEnter)
Tercio@11 3059 end
Tercio@11 3060
Tercio@11 3061 if (self.CoolTip.OnEnterFunc) then
Tercio@11 3062 self.CoolTip.OnEnterFunc (self)
Tercio@11 3063 end
Tercio@11 3064
Tercio@11 3065 if (self.OldOnEnterScript) then
Tercio@11 3066 self:OldOnEnterScript()
Tercio@11 3067 end
Tercio@11 3068 end
Tercio@11 3069
Tercio@11 3070 function CoolTip:CoolTipInject (host, openOnClick)
Tercio@11 3071 if (host.dframework) then
Tercio@11 3072 if (not host.widget.CoolTip) then
Tercio@11 3073 host.widget.CoolTip = host.CoolTip
Tercio@11 3074 end
Tercio@11 3075 host = host.widget
Tercio@11 3076 end
Tercio@11 3077
Tercio@11 3078 local coolTable = host.CoolTip
Tercio@11 3079 if (not coolTable) then
Tercio@11 3080 print ("Host nao tem uma CoolTable.")
Tercio@11 3081 return false
Tercio@11 3082 end
Tercio@11 3083
Tercio@11 3084 host.OldOnEnterScript = host:GetScript ("OnEnter")
Tercio@11 3085 host.OldOnLeaveScript = host:GetScript ("OnLeave")
Tercio@11 3086
Tercio@11 3087 host:SetScript ("OnEnter", InjectOnEnter)
Tercio@11 3088 host:SetScript ("OnLeave", InjectOnLeave)
Tercio@11 3089
Tercio@11 3090 if (openOnClick) then
Tercio@11 3091 if (host:GetObjectType() == "Button") then
Tercio@11 3092 host:SetScript ("OnClick", function() CoolTip:ExecFunc (host, true) end)
Tercio@11 3093 end
Tercio@11 3094 end
Tercio@11 3095
Tercio@11 3096 return ture
Tercio@11 3097 end
Tercio@11 3098
Tercio@11 3099 --> all done
Tercio@11 3100 CoolTip:ClearAllOptions()
Tercio@11 3101
Tercio@39 3102 -- local preset2_backdrop = {bgFile = [[Interface\DialogFrame\UI-DialogBox-Background-Dark]], edgeFile = DF.folder .. "border_3", tile=true,
Tercio@39 3103 -- edgeSize = 16, tileSize = 64, insets = {left = 3, right = 3, top = 4, bottom = 4}}
Tercio@11 3104
Tercio@39 3105 local preset2_backdrop = {bgFile = DF.folder .. "background", edgeFile = [[Interface\Buttons\WHITE8X8]], tile = true,
Tercio@39 3106 edgeSize = 1, tileSize = 16, insets = {left = 0, right = 0, top = 0, bottom = 0}}
Tercio@39 3107 local default_backdrop_color = {0.09019, 0.09019, 0.18823, 0.8}
Tercio@39 3108 local default_backdropborder_color = {1, 1, 1, 1}
Tercio@39 3109
Tercio@39 3110 local gray_table = {0.37, 0.37, 0.37, 0.95}
Tercio@11 3111 local white_table = {1, 1, 1, 1}
Tercio@39 3112 local black_table = {0.2, 0.2, 0.2, 1}
Tercio@11 3113
Tercio@11 3114 function CoolTip:Preset (number)
Tercio@11 3115 self:Reset()
Tercio@11 3116
Tercio@11 3117 if (number == 1) then
Tercio@11 3118 self:SetOption ("TextFont", "Friz Quadrata TT")
Tercio@11 3119 self:SetOption ("TextColor", "orange")
Tercio@11 3120 self:SetOption ("TextSize", 12)
Tercio@11 3121 self:SetOption ("ButtonsYMod", -4)
Tercio@11 3122 self:SetOption ("YSpacingMod", -4)
Tercio@11 3123 self:SetOption ("IgnoreButtonAutoHeight", true)
Tercio@11 3124 self:SetColor (1, 0.5, 0.5, 0.5, 0.5)
Tercio@11 3125
Tercio@11 3126 elseif (number == 2) then
Tercio@11 3127 self:SetOption ("TextFont", "Friz Quadrata TT")
Tercio@11 3128 self:SetOption ("TextColor", "orange")
Tercio@11 3129 self:SetOption ("TextSize", 12)
Tercio@11 3130 self:SetOption ("FixedWidth", 220)
Tercio@11 3131 self:SetOption ("ButtonsYMod", -4)
Tercio@11 3132 self:SetOption ("YSpacingMod", -4)
Tercio@11 3133 self:SetOption ("IgnoreButtonAutoHeight", true)
Tercio@11 3134
Tercio@39 3135 self:SetColor (1, 0.5, 0.5, 0.5, 0)
Tercio@39 3136
Tercio@39 3137 self:SetBackdrop (1, preset2_backdrop, gray_table, black_table)
Tercio@40 3138 self:SetBackdrop (2, preset2_backdrop, gray_table, black_table)
Tercio@11 3139 end
Tercio@11 3140 end
Tercio@11 3141
Tercio@11 3142 return CoolTip
Tercio@11 3143
Tercio@11 3144 end
Tercio@11 3145
Tercio@58 3146 DF:CreateCoolTip()