annotate Libs/DF/split_bar.lua @ 58:0682d738499b v8.0.1.058

- 8.0.1 Update.
author Tercio
date Fri, 20 Jul 2018 19:04:12 -0300
parents 7944c081e5b4
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 _
Tercio@11 8 local _rawset = rawset --> lua local
Tercio@11 9 local _rawget = rawget --> lua local
Tercio@11 10 local _setmetatable = setmetatable --> lua local
Tercio@11 11 local _unpack = unpack --> lua local
Tercio@11 12 local _type = type --> lua local
Tercio@11 13 local _math_floor = math.floor --> lua local
Tercio@11 14
Tercio@11 15 local cleanfunction = function() end
Tercio@11 16 local APISplitBarFunctions
Tercio@11 17
Tercio@39 18 do
Tercio@39 19 local metaPrototype = {
Tercio@39 20 WidgetType = "split_bar",
Tercio@39 21 SetHook = DF.SetHook,
Tercio@39 22 RunHooksForWidget = DF.RunHooksForWidget,
Tercio@39 23 }
Tercio@39 24
Tercio@39 25 _G [DF.GlobalWidgetControlNames ["split_bar"]] = _G [DF.GlobalWidgetControlNames ["split_bar"]] or metaPrototype
Tercio@39 26 end
Tercio@39 27
Tercio@39 28 local SplitBarMetaFunctions = _G [DF.GlobalWidgetControlNames ["split_bar"]]
Tercio@39 29
Tercio@11 30 ------------------------------------------------------------------------------------------------------------
Tercio@11 31 --> metatables
Tercio@11 32
Tercio@11 33 SplitBarMetaFunctions.__call = function (_table, value)
Tercio@11 34 if (not value) then
Tercio@11 35 return _table.statusbar:GetValue()
Tercio@11 36 else
Tercio@11 37 _table.div:SetPoint ("left", _table.statusbar, "left", value * (_table.statusbar:GetWidth()/100) - 18, 0)
Tercio@11 38 return _table.statusbar:SetValue (value)
Tercio@11 39 end
Tercio@11 40 end
Tercio@11 41
Tercio@11 42 SplitBarMetaFunctions.__add = function (v1, v2)
Tercio@11 43 if (_type (v1) == "table") then
Tercio@11 44 local v = v1.statusbar:GetValue()
Tercio@11 45 v = v + v2
Tercio@11 46 v1.div:SetPoint ("left", v1.statusbar, "left", value * (v1.statusbar:GetWidth()/100) - 18, 0)
Tercio@11 47 v1.statusbar:SetValue (v)
Tercio@11 48 else
Tercio@11 49 local v = v2.statusbar:GetValue()
Tercio@11 50 v = v + v1
Tercio@11 51 v2.div:SetPoint ("left", v2.statusbar, "left", value * (v2.statusbar:GetWidth()/100) - 18, 0)
Tercio@11 52 v2.statusbar:SetValue (v)
Tercio@11 53 end
Tercio@11 54 end
Tercio@11 55
Tercio@11 56 SplitBarMetaFunctions.__sub = function (v1, v2)
Tercio@11 57 if (_type (v1) == "table") then
Tercio@11 58 local v = v1.statusbar:GetValue()
Tercio@11 59 v = v - v2
Tercio@11 60 v1.div:SetPoint ("left", v1.statusbar, "left", value * (v1.statusbar:GetWidth()/100) - 18, 0)
Tercio@11 61 v1.statusbar:SetValue (v)
Tercio@11 62 else
Tercio@11 63 local v = v2.statusbar:GetValue()
Tercio@11 64 v = v - v1
Tercio@11 65 v2.div:SetPoint ("left", v2.statusbar, "left", value * (v2.statusbar:GetWidth()/100) - 18, 0)
Tercio@11 66 v2.statusbar:SetValue (v)
Tercio@11 67 end
Tercio@11 68 end
Tercio@11 69
Tercio@11 70 ------------------------------------------------------------------------------------------------------------
Tercio@11 71 --> members
Tercio@11 72
Tercio@11 73 --> tooltip
Tercio@11 74 local function gmember_tooltip (_object)
Tercio@11 75 return _object:GetTooltip()
Tercio@11 76 end
Tercio@11 77 --> shown
Tercio@11 78 local gmember_shown = function (_object)
Tercio@11 79 return _object.statusbar:IsShown()
Tercio@11 80 end
Tercio@11 81 --> frame width
Tercio@11 82 local gmember_width = function (_object)
Tercio@11 83 return _object.statusbar:GetWidth()
Tercio@11 84 end
Tercio@11 85 --> frame height
Tercio@11 86 local gmember_height = function (_object)
Tercio@11 87 return _object.statusbar:GetHeight()
Tercio@11 88 end
Tercio@11 89 --> value
Tercio@11 90 local gmember_value = function (_object)
Tercio@11 91 return _object.statusbar:GetValue()
Tercio@11 92 end
Tercio@11 93 --> right text
Tercio@11 94 local gmember_rtext = function (_object)
Tercio@11 95 return _object.textright:GetText()
Tercio@11 96 end
Tercio@11 97 --> left text
Tercio@11 98 local gmember_ltext = function (_object)
Tercio@11 99 return _object.textleft:GetText()
Tercio@11 100 end
Tercio@11 101 --> right color
Tercio@11 102 local gmember_rcolor = function (_object)
Tercio@11 103 return _object.background.original_colors
Tercio@11 104 end
Tercio@11 105 --> left color
Tercio@11 106 local gmember_lcolor = function (_object)
Tercio@11 107 return _object.texture.original_colors
Tercio@11 108 end
Tercio@11 109 --> right icon
Tercio@11 110 local gmember_ricon = function (_object)
Tercio@11 111 return _object.iconright:GetTexture()
Tercio@11 112 end
Tercio@11 113 --> left icon
Tercio@11 114 local gmember_licon = function (_object)
Tercio@11 115 return _object.iconleft:GetTexture()
Tercio@11 116 end
Tercio@11 117 --> texture
Tercio@11 118 local gmember_texture = function (_object)
Tercio@11 119 return _object.texture:GetTexture()
Tercio@11 120 end
Tercio@11 121 --> font size
Tercio@11 122 local gmember_textsize = function (_object)
Tercio@11 123 local _, fontsize = _object.textleft:GetFont()
Tercio@11 124 return fontsize
Tercio@11 125 end
Tercio@11 126 --> font face
Tercio@11 127 local gmember_textfont = function (_object)
Tercio@11 128 local fontface = _object.textleft:GetFont()
Tercio@11 129 return fontface
Tercio@11 130 end
Tercio@11 131 --> font color
Tercio@11 132 local gmember_textcolor = function (_object)
Tercio@11 133 return _object.textleft:GetTextColor()
Tercio@11 134 end
Tercio@11 135
Tercio@39 136 SplitBarMetaFunctions.GetMembers = SplitBarMetaFunctions.GetMembers or {}
Tercio@39 137 SplitBarMetaFunctions.GetMembers ["tooltip"] = gmember_tooltip
Tercio@39 138 SplitBarMetaFunctions.GetMembers ["shown"] = gmember_shown
Tercio@39 139 SplitBarMetaFunctions.GetMembers ["width"] = gmember_width
Tercio@39 140 SplitBarMetaFunctions.GetMembers ["height"] = gmember_height
Tercio@39 141 SplitBarMetaFunctions.GetMembers ["value"] = gmember_value
Tercio@39 142 SplitBarMetaFunctions.GetMembers ["righttext"] = gmember_rtext
Tercio@39 143 SplitBarMetaFunctions.GetMembers ["lefttext"] = gmember_ltext
Tercio@39 144 SplitBarMetaFunctions.GetMembers ["rightcolor"] = gmember_rcolor
Tercio@39 145 SplitBarMetaFunctions.GetMembers ["leftcolor"] = gmember_lcolor
Tercio@39 146 SplitBarMetaFunctions.GetMembers ["righticon"] = gmember_ricon
Tercio@39 147 SplitBarMetaFunctions.GetMembers ["lefticon"] = gmember_licon
Tercio@39 148 SplitBarMetaFunctions.GetMembers ["texture"] = gmember_texture
Tercio@39 149 SplitBarMetaFunctions.GetMembers ["fontsize"] = gmember_textsize
Tercio@39 150 SplitBarMetaFunctions.GetMembers ["fontface"] = gmember_textfont
Tercio@39 151 SplitBarMetaFunctions.GetMembers ["fontcolor"] = gmember_textcolor
Tercio@39 152 SplitBarMetaFunctions.GetMembers ["textsize"] = gmember_textsize --alias
Tercio@39 153 SplitBarMetaFunctions.GetMembers ["textfont"] = gmember_textfont --alias
Tercio@39 154 SplitBarMetaFunctions.GetMembers ["textcolor"] = gmember_textcolor --alias
Tercio@11 155
Tercio@11 156 SplitBarMetaFunctions.__index = function (_table, _member_requested)
Tercio@11 157
Tercio@39 158 local func = SplitBarMetaFunctions.GetMembers [_member_requested]
Tercio@11 159 if (func) then
Tercio@11 160 return func (_table, _member_requested)
Tercio@11 161 end
Tercio@11 162
Tercio@11 163 local fromMe = _rawget (_table, _member_requested)
Tercio@11 164 if (fromMe) then
Tercio@11 165 return fromMe
Tercio@11 166 end
Tercio@11 167
Tercio@11 168 return SplitBarMetaFunctions [_member_requested]
Tercio@11 169 end
Tercio@11 170
Tercio@11 171 ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Tercio@11 172
Tercio@11 173 --> tooltip
Tercio@11 174 local smember_tooltip = function (_object, _value)
Tercio@11 175 return _object:SetTooltip (_value)
Tercio@11 176 end
Tercio@11 177 --> show
Tercio@11 178 local smember_shown = function (_object, _value)
Tercio@11 179 if (_value) then
Tercio@11 180 return _object:Show()
Tercio@11 181 else
Tercio@11 182 return _object:Hide()
Tercio@11 183 end
Tercio@11 184 end
Tercio@11 185 --> hide
Tercio@11 186 local smember_hide = function (_object, _value)
Tercio@11 187 if (_value) then
Tercio@11 188 return _object:Hide()
Tercio@11 189 else
Tercio@11 190 return _object:Show()
Tercio@11 191 end
Tercio@11 192 end
Tercio@11 193 --> width
Tercio@11 194 local smember_width = function (_object, _value)
Tercio@11 195 return _object.statusbar:SetWidth (_value)
Tercio@11 196 end
Tercio@11 197 --> height
Tercio@11 198 local smember_height = function (_object, _value)
Tercio@11 199 return _object.statusbar:SetHeight (_value)
Tercio@11 200 end
Tercio@11 201 --> statusbar value
Tercio@11 202 local smember_value = function (_object, _value)
Tercio@11 203 _object.statusbar:SetValue (_value)
Tercio@11 204 return _object.div:SetPoint ("left", _object.statusbar, "left", _value * (_object.statusbar:GetWidth()/100) - 18, 0)
Tercio@11 205 end
Tercio@11 206 --> right text
Tercio@11 207 local smember_rtext = function (_object, _value)
Tercio@11 208 return _object.textright:SetText (_value)
Tercio@11 209 end
Tercio@11 210 --> left text
Tercio@11 211 local smember_ltext = function (_object, _value)
Tercio@11 212 return _object.textleft:SetText (_value)
Tercio@11 213 end
Tercio@11 214 --> right color
Tercio@11 215 local smember_rcolor = function (_object, _value)
Tercio@11 216 local _value1, _value2, _value3, _value4 = DF:ParseColors (_value)
Tercio@11 217 _object.background.original_colors = {_value1, _value2, _value3, _value4}
Tercio@11 218 return _object.background:SetVertexColor (_value1, _value2, _value3, _value4)
Tercio@11 219 end
Tercio@11 220 --> left color
Tercio@11 221 local smember_lcolor = function (_object, _value)
Tercio@11 222 local _value1, _value2, _value3, _value4 = DF:ParseColors (_value)
Tercio@11 223
Tercio@11 224 _object.statusbar:SetStatusBarColor (_value1, _value2, _value3, _value4)
Tercio@11 225 _object.texture.original_colors = {_value1, _value2, _value3, _value4}
Tercio@11 226 return _object.texture:SetVertexColor (_value1, _value2, _value3, _value4)
Tercio@11 227 end
Tercio@11 228 --> right icon
Tercio@11 229 local smember_ricon = function (_object, _value)
Tercio@11 230 if (type (_value) == "table") then
Tercio@11 231 local _value1, _value2 = _unpack (_value)
Tercio@11 232 _object.iconright:SetTexture (_value1)
Tercio@11 233 if (_value2) then
Tercio@11 234 _object.iconright:SetTexCoord (_unpack (_value2))
Tercio@11 235 end
Tercio@11 236 else
Tercio@11 237 _object.iconright:SetTexture (_value)
Tercio@11 238 end
Tercio@11 239 return
Tercio@11 240 end
Tercio@11 241 --> left icon
Tercio@11 242 local smember_licon = function (_object, _value)
Tercio@11 243 if (type (_value) == "table") then
Tercio@11 244 local _value1, _value2 = _unpack (_value)
Tercio@11 245 _object.iconleft:SetTexture (_value1)
Tercio@11 246 if (_value2) then
Tercio@11 247 _object.iconleft:SetTexCoord (_unpack (_value2))
Tercio@11 248 end
Tercio@11 249 else
Tercio@11 250 _object.iconleft:SetTexture (_value)
Tercio@11 251 end
Tercio@11 252 return
Tercio@11 253 end
Tercio@11 254 --> texture
Tercio@11 255 local smember_texture = function (_object, _value)
Tercio@11 256 if (type (_value) == "table") then
Tercio@11 257 local _value1, _value2 = _unpack (_value)
Tercio@11 258 _object.texture:SetTexture (_value1)
Tercio@11 259 _object.background:SetTexture (_value1)
Tercio@11 260 if (_value2) then
Tercio@11 261 _object.texture:SetTexCoord (_unpack (_value2))
Tercio@11 262 _object.background:SetTexCoord (_unpack (_value2))
Tercio@11 263 end
Tercio@11 264 else
Tercio@11 265 _object.texture:SetTexture (_value)
Tercio@11 266 _object.background:SetTexture (_value)
Tercio@11 267 end
Tercio@11 268 return
Tercio@11 269 end
Tercio@11 270 --> font face
Tercio@11 271 local smember_textfont = function (_object, _value)
Tercio@11 272 DF:SetFontFace (_object.textleft, _value)
Tercio@11 273 return DF:SetFontFace (_object.textright, _value)
Tercio@11 274 end
Tercio@11 275 --> font size
Tercio@11 276 local smember_textsize = function (_object, _value)
Tercio@11 277 DF:SetFontSize (_object.textleft, _value)
Tercio@11 278 return DF:SetFontSize (_object.textright, _value)
Tercio@11 279 end
Tercio@11 280 --> font color
Tercio@11 281 local smember_textcolor = function (_object, _value)
Tercio@11 282 local _value1, _value2, _value3, _value4 = DF:ParseColors (_value)
Tercio@11 283 _object.textleft:SetTextColor (_value1, _value2, _value3, _value4)
Tercio@11 284 return _object.textright:SetTextColor (_value1, _value2, _value3, _value4)
Tercio@11 285 end
Tercio@11 286
Tercio@39 287 SplitBarMetaFunctions.SetMembers = SplitBarMetaFunctions.SetMembers or {}
Tercio@39 288 SplitBarMetaFunctions.SetMembers ["tooltip"] = smember_tooltip
Tercio@39 289 SplitBarMetaFunctions.SetMembers ["shown"] = smember_shown
Tercio@39 290 SplitBarMetaFunctions.SetMembers ["width"] = smember_width
Tercio@39 291 SplitBarMetaFunctions.SetMembers ["height"] = smember_height
Tercio@39 292 SplitBarMetaFunctions.SetMembers ["value"] = smember_value
Tercio@39 293 SplitBarMetaFunctions.SetMembers ["righttext"] = smember_rtext
Tercio@39 294 SplitBarMetaFunctions.SetMembers ["lefttext"] = smember_ltext
Tercio@39 295 SplitBarMetaFunctions.SetMembers ["rightcolor"] = smember_rcolor
Tercio@39 296 SplitBarMetaFunctions.SetMembers ["leftcolor"] = smember_lcolor
Tercio@39 297 SplitBarMetaFunctions.SetMembers ["righticon"] = smember_ricon
Tercio@39 298 SplitBarMetaFunctions.SetMembers ["lefticon"] = smember_licon
Tercio@39 299 SplitBarMetaFunctions.SetMembers ["texture"] = smember_texture
Tercio@39 300 SplitBarMetaFunctions.SetMembers ["fontsize"] = smember_textsize
Tercio@39 301 SplitBarMetaFunctions.SetMembers ["fontface"] = smember_textfont
Tercio@39 302 SplitBarMetaFunctions.SetMembers ["fontcolor"] = smember_textcolor
Tercio@39 303 SplitBarMetaFunctions.SetMembers ["textsize"] = smember_textsize --alias
Tercio@39 304 SplitBarMetaFunctions.SetMembers ["textfont"] = smember_textfont --alias
Tercio@39 305 SplitBarMetaFunctions.SetMembers ["textcolor"] = smember_textcolor --alias
Tercio@11 306
Tercio@11 307 SplitBarMetaFunctions.__newindex = function (_table, _key, _value)
Tercio@39 308 local func = SplitBarMetaFunctions.SetMembers [_key]
Tercio@11 309 if (func) then
Tercio@11 310 return func (_table, _value)
Tercio@11 311 else
Tercio@11 312 return _rawset (_table, _key, _value)
Tercio@11 313 end
Tercio@11 314 end
Tercio@11 315
Tercio@11 316 ------------------------------------------------------------------------------------------------------------
Tercio@11 317 --> methods
Tercio@11 318
Tercio@11 319 --> show & hide
Tercio@11 320 function SplitBarMetaFunctions:Show()
Tercio@11 321 return self.statusbar:Show()
Tercio@11 322 end
Tercio@11 323 function SplitBarMetaFunctions:Hide()
Tercio@11 324 return self.statusbar:Hide()
Tercio@11 325 end
Tercio@11 326
Tercio@11 327 -- set split
Tercio@11 328 function SplitBarMetaFunctions:SetSplit (value)
Tercio@11 329 if (not value) then
Tercio@11 330 value = self.statusbar:GetValue()
Tercio@11 331 elseif (value < 0 or value > 100) then
Tercio@11 332 return
Tercio@11 333 end
Tercio@11 334 self.statusbar:SetValue (value)
Tercio@11 335 self.div:SetPoint ("left", self.statusbar, "left", value * (self.statusbar:GetWidth()/100) - 18, 0)
Tercio@11 336 end
Tercio@11 337
Tercio@11 338 -- setpoint
Tercio@11 339 function SplitBarMetaFunctions:SetPoint (v1, v2, v3, v4, v5)
Tercio@11 340 v1, v2, v3, v4, v5 = DF:CheckPoints (v1, v2, v3, v4, v5, self)
Tercio@11 341 if (not v1) then
Tercio@11 342 print ("Invalid parameter for SetPoint")
Tercio@11 343 return
Tercio@11 344 end
Tercio@11 345 return self.widget:SetPoint (v1, v2, v3, v4, v5)
Tercio@11 346 end
Tercio@11 347
Tercio@11 348 -- sizes
Tercio@11 349 function SplitBarMetaFunctions:SetSize (w, h)
Tercio@11 350 if (w) then
Tercio@11 351 self.statusbar:SetWidth (w)
Tercio@11 352 end
Tercio@11 353 if (h) then
Tercio@11 354 self.statusbar:SetHeight (h)
Tercio@11 355 end
Tercio@11 356 end
Tercio@11 357
Tercio@11 358 -- texture
Tercio@11 359 function SplitBarMetaFunctions:SetTexture (texture)
Tercio@11 360 self.background:SetTexture (texture)
Tercio@11 361 self.texture:SetTexture (texture)
Tercio@11 362 end
Tercio@11 363
Tercio@11 364 -- texts
Tercio@11 365 function SplitBarMetaFunctions:SetLeftText (text)
Tercio@11 366 self.textleft:SetText (text)
Tercio@11 367 end
Tercio@11 368 function SplitBarMetaFunctions:SetRightText (text)
Tercio@11 369 self.textright:SetText (text)
Tercio@11 370 end
Tercio@11 371
Tercio@11 372 -- colors
Tercio@11 373 function SplitBarMetaFunctions:SetLeftColor (r, g, b, a)
Tercio@11 374 r, g, b, a = DF:ParseColors (r, g, b, a)
Tercio@11 375 self.texture:SetVertexColor (r, g, b, a)
Tercio@11 376 self.texture.original_colors = {r, g, b, a}
Tercio@11 377 end
Tercio@11 378 function SplitBarMetaFunctions:SetRightColor (r, g, b, a)
Tercio@11 379 r, g, b, a = DF:ParseColors (r, g, b, a)
Tercio@11 380 self.background:SetVertexColor (r, g, b, a)
Tercio@11 381 self.background.original_colors = {r, g, b, a}
Tercio@11 382 end
Tercio@11 383
Tercio@11 384 -- icons
Tercio@11 385 function SplitBarMetaFunctions:SetLeftIcon (texture, ...)
Tercio@11 386 self.iconleft:SetTexture (texture)
Tercio@11 387 if (...) then
Tercio@11 388 local L, R, U, D = unpack (...)
Tercio@11 389 self.iconleft:SetTexCoord (L, R, U, D)
Tercio@11 390 end
Tercio@11 391 end
Tercio@11 392 function SplitBarMetaFunctions:SetRightIcon (texture, ...)
Tercio@11 393 self.iconright:SetTexture (texture)
Tercio@11 394 if (...) then
Tercio@11 395 local L, R, U, D = unpack (...)
Tercio@11 396 self.iconright:SetTexCoord (L, R, U, D)
Tercio@11 397 end
Tercio@11 398 end
Tercio@11 399
Tercio@11 400 -- tooltip
Tercio@11 401 function SplitBarMetaFunctions:SetTooltip (tooltip)
Tercio@11 402 if (tooltip) then
Tercio@11 403 return _rawset (self, "have_tooltip", tooltip)
Tercio@11 404 else
Tercio@11 405 return _rawset (self, "have_tooltip", nil)
Tercio@11 406 end
Tercio@11 407 end
Tercio@11 408 function SplitBarMetaFunctions:GetTooltip()
Tercio@11 409 return _rawget (self, "have_tooltip")
Tercio@11 410 end
Tercio@11 411
Tercio@11 412 -- frame levels
Tercio@11 413 function SplitBarMetaFunctions:GetFrameLevel()
Tercio@11 414 return self.statusbar:GetFrameLevel()
Tercio@11 415 end
Tercio@11 416 function SplitBarMetaFunctions:SetFrameLevel (level, frame)
Tercio@11 417 if (not frame) then
Tercio@11 418 return self.statusbar:SetFrameLevel (level)
Tercio@11 419 else
Tercio@11 420 local framelevel = frame:GetFrameLevel (frame) + level
Tercio@11 421 return self.statusbar:SetFrameLevel (framelevel)
Tercio@11 422 end
Tercio@11 423 end
Tercio@11 424
Tercio@11 425 -- frame stratas
Tercio@11 426 function SplitBarMetaFunctions:SetFrameStrata()
Tercio@11 427 return self.statusbar:GetFrameStrata()
Tercio@11 428 end
Tercio@11 429 function SplitBarMetaFunctions:SetFrameStrata (strata)
Tercio@11 430 if (_type (strata) == "table") then
Tercio@11 431 self.statusbar:SetFrameStrata (strata:GetFrameStrata())
Tercio@11 432 else
Tercio@11 433 self.statusbar:SetFrameStrata (strata)
Tercio@11 434 end
Tercio@11 435 end
Tercio@11 436
Tercio@11 437 ------------------------------------------------------------------------------------------------------------
Tercio@11 438 --> scripts
Tercio@11 439 local OnEnter = function (frame)
Tercio@39 440 local capsule = frame.MyObject
Tercio@39 441 local kill = capsule:RunHooksForWidget ("OnEnter", frame, capsule)
Tercio@39 442 if (kill) then
Tercio@39 443 return
Tercio@11 444 end
Tercio@11 445
Tercio@11 446 frame.MyObject.div:SetPoint ("left", frame, "left", frame:GetValue() * (frame:GetWidth()/100) - 18, 0)
Tercio@11 447
Tercio@11 448 if (frame.MyObject.have_tooltip) then
Tercio@11 449 GameCooltip2:Reset()
Tercio@11 450 GameCooltip2:AddLine (frame.MyObject.have_tooltip)
Tercio@11 451 GameCooltip2:ShowCooltip (frame, "tooltip")
Tercio@11 452 end
Tercio@11 453 end
Tercio@11 454
Tercio@11 455 local OnLeave = function (frame)
Tercio@39 456 local capsule = frame.MyObject
Tercio@39 457 local kill = capsule:RunHooksForWidget ("OnLeave", frame, capsule)
Tercio@39 458 if (kill) then
Tercio@39 459 return
Tercio@11 460 end
Tercio@22 461
Tercio@11 462 if (frame.MyObject.have_tooltip) then
Tercio@11 463 DF.popup:ShowMe (false)
Tercio@11 464 end
Tercio@11 465 end
Tercio@11 466
Tercio@11 467 local OnHide = function (frame)
Tercio@39 468 local capsule = frame.MyObject
Tercio@39 469 local kill = capsule:RunHooksForWidget ("OnHide", frame, capsule)
Tercio@39 470 if (kill) then
Tercio@39 471 return
Tercio@11 472 end
Tercio@11 473 end
Tercio@11 474
Tercio@11 475 local OnShow = function (frame)
Tercio@39 476 local capsule = frame.MyObject
Tercio@39 477 local kill = capsule:RunHooksForWidget ("OnShow", frame, capsule)
Tercio@39 478 if (kill) then
Tercio@39 479 return
Tercio@11 480 end
Tercio@11 481 end
Tercio@11 482
Tercio@11 483 local OnMouseDown = function (frame, button)
Tercio@39 484 local capsule = frame.MyObject
Tercio@39 485 local kill = capsule:RunHooksForWidget ("OnMouseDown", frame, button, capsule)
Tercio@39 486 if (kill) then
Tercio@39 487 return
Tercio@11 488 end
Tercio@11 489
Tercio@11 490 if (not frame.MyObject.container.isLocked and frame.MyObject.container:IsMovable()) then
Tercio@11 491 if (not frame.isLocked and frame:IsMovable()) then
Tercio@11 492 frame.MyObject.container.isMoving = true
Tercio@11 493 frame.MyObject.container:StartMoving()
Tercio@11 494 end
Tercio@11 495 end
Tercio@11 496 end
Tercio@11 497
Tercio@11 498 local OnMouseUp = function (frame, button)
Tercio@39 499 local capsule = frame.MyObject
Tercio@39 500 local kill = capsule:RunHooksForWidget ("OnMouseUp", frame, button, capsule)
Tercio@39 501 if (kill) then
Tercio@39 502 return
Tercio@11 503 end
Tercio@11 504
Tercio@11 505 if (frame.MyObject.container.isMoving) then
Tercio@11 506 frame.MyObject.container:StopMovingOrSizing()
Tercio@11 507 frame.MyObject.container.isMoving = false
Tercio@11 508 end
Tercio@11 509 end
Tercio@11 510
Tercio@11 511 local OnSizeChanged = function (statusbar)
Tercio@11 512 statusbar.MyObject.div:SetPoint ("left", statusbar, "left", statusbar:GetValue() * (statusbar:GetWidth()/100) - 18, 0)
Tercio@11 513 end
Tercio@11 514
Tercio@11 515 ------------------------------------------------------------------------------------------------------------
Tercio@11 516 --> object constructor
Tercio@11 517
Tercio@11 518 function DetailsFrameworkSplitlBar_OnCreate (self)
Tercio@11 519 self.texture.original_colors = {1, 1, 1, 1}
Tercio@11 520 self.background.original_colors = {.5, .5, .5, 1}
Tercio@11 521 self.spark:SetPoint ("left", self, "left", self:GetValue() * (self:GetWidth()/100) - 18, 0)
Tercio@11 522 return true
Tercio@11 523 end
Tercio@11 524
Tercio@11 525 function DF:CreateSplitBar (parent, parent, w, h, member, name)
Tercio@11 526 return DF:NewSplitBar (parent, container, name, member, w, h)
Tercio@11 527 end
Tercio@11 528
Tercio@11 529 function DF:NewSplitBar (parent, container, name, member, w, h)
Tercio@11 530
Tercio@11 531 if (not name) then
Tercio@11 532 name = "DetailsFrameworkSplitbar" .. DF.SplitBarCounter
Tercio@11 533 DF.SplitBarCounter = DF.SplitBarCounter + 1
Tercio@11 534 end
Tercio@11 535 if (not parent) then
Tercioo@29 536 return error ("Details! FrameWork: parent not found.", 2)
Tercio@11 537 end
Tercio@11 538 if (not container) then
Tercio@11 539 container = parent
Tercio@11 540 end
Tercio@11 541
Tercio@11 542 if (name:find ("$parent")) then
Tercioo@29 543 local parentName = DF.GetParentName (parent)
Tercioo@29 544 name = name:gsub ("$parent", parentName)
Tercio@11 545 end
Tercio@11 546
Tercio@11 547 local SplitBarObject = {type = "barsplit", dframework = true}
Tercio@11 548
Tercio@11 549 if (member) then
Tercio@11 550 parent [member] = SplitBarObject
Tercio@11 551 end
Tercio@11 552
Tercio@11 553 if (parent.dframework) then
Tercio@11 554 parent = parent.widget
Tercio@11 555 end
Tercio@11 556 if (container.dframework) then
Tercio@11 557 container = container.widget
Tercio@11 558 end
Tercio@11 559
Tercio@11 560 --> default members:
Tercio@11 561 --> misc
Tercio@11 562 SplitBarObject.locked = false
Tercio@11 563 SplitBarObject.container = container
Tercio@11 564
Tercio@11 565 --> create widgets
Tercio@11 566 SplitBarObject.statusbar = CreateFrame ("statusbar", name, parent, "DetailsFrameworkSplitBarTemplate")
Tercio@11 567 SplitBarObject.widget = SplitBarObject.statusbar
Tercio@11 568
Tercio@11 569 if (not APISplitBarFunctions) then
Tercio@11 570 APISplitBarFunctions = true
Tercio@11 571 local idx = getmetatable (SplitBarObject.statusbar).__index
Tercio@11 572 for funcName, funcAddress in pairs (idx) do
Tercio@11 573 if (not SplitBarMetaFunctions [funcName]) then
Tercio@11 574 SplitBarMetaFunctions [funcName] = function (object, ...)
Tercio@20 575 local x = loadstring ( "return _G['"..object.statusbar:GetName().."']:"..funcName.."(...)")
Tercio@11 576 return x (...)
Tercio@11 577 end
Tercio@11 578 end
Tercio@11 579 end
Tercio@11 580 end
Tercio@11 581
Tercio@11 582 SplitBarObject.statusbar:SetHeight (h or 200)
Tercio@11 583 SplitBarObject.statusbar:SetWidth (w or 14)
Tercio@11 584
Tercio@11 585 SplitBarObject.statusbar.MyObject = SplitBarObject
Tercio@11 586
Tercio@11 587 SplitBarObject.textleft = _G [name .. "_TextLeft"]
Tercio@11 588 SplitBarObject.textright = _G [name .. "_TextRight"]
Tercio@11 589
Tercio@11 590 SplitBarObject.iconleft = _G [name .. "_IconLeft"]
Tercio@11 591 SplitBarObject.iconright = _G [name .. "_IconRight"]
Tercio@11 592
Tercio@11 593 SplitBarObject.background = _G [name .. "_StatusBarBackground"]
Tercio@11 594 SplitBarObject.texture = _G [name .. "_StatusBarTexture"]
Tercio@11 595
Tercio@11 596 SplitBarObject.div = _G [name .. "_Spark"]
Tercio@11 597
Tercio@39 598
Tercio@11 599 --> hooks
Tercio@39 600 SplitBarObject.HookList = {
Tercio@39 601 OnEnter = {},
Tercio@39 602 OnLeave = {},
Tercio@39 603 OnHide = {},
Tercio@39 604 OnShow = {},
Tercio@39 605 OnMouseDown = {},
Tercio@39 606 OnMouseUp = {},
Tercio@39 607 OnSizeChanged = {},
Tercio@39 608 }
Tercio@39 609
Tercio@39 610 SplitBarObject.statusbar:SetScript ("OnEnter", OnEnter)
Tercio@39 611 SplitBarObject.statusbar:SetScript ("OnLeave", OnLeave)
Tercio@39 612 SplitBarObject.statusbar:SetScript ("OnHide", OnHide)
Tercio@39 613 SplitBarObject.statusbar:SetScript ("OnShow", OnShow)
Tercio@39 614 SplitBarObject.statusbar:SetScript ("OnMouseDown", OnMouseDown)
Tercio@39 615 SplitBarObject.statusbar:SetScript ("OnMouseUp", OnMouseUp)
Tercio@39 616 SplitBarObject.statusbar:SetScript ("OnSizeChanged", OnSizeChanged)
Tercio@11 617
Tercio@11 618 _setmetatable (SplitBarObject, SplitBarMetaFunctions)
Tercio@11 619
Tercio@11 620 return SplitBarObject
Tercio@58 621 end