Mercurial > wow > hansgar_and_franzok_assist
comparison Libs/DF/label.lua @ 11:2f09fe4be15c
Added an Options Panel.
| author | Tercio |
|---|---|
| date | Mon, 20 Apr 2015 16:34:18 -0300 |
| parents | |
| children | dc1c77254f80 |
comparison
equal
deleted
inserted
replaced
| 10:f1e32be6773e | 11:2f09fe4be15c |
|---|---|
| 1 | |
| 2 | |
| 3 | |
| 4 local DF = _G ["DetailsFramework"] | |
| 5 local _ | |
| 6 | |
| 7 local _rawset = rawset --> lua local | |
| 8 local _rawget = rawget --> lua local | |
| 9 local _setmetatable = setmetatable --> lua local | |
| 10 local _unpack = unpack --> lua local | |
| 11 local _type = type --> lua local | |
| 12 local _math_floor = math.floor --> lua local | |
| 13 local loadstring = loadstring --> lua local | |
| 14 | |
| 15 local cleanfunction = function() end | |
| 16 local APILabelFunctions = false | |
| 17 local LabelMetaFunctions = {} | |
| 18 | |
| 19 ------------------------------------------------------------------------------------------------------------ | |
| 20 --> metatables | |
| 21 | |
| 22 LabelMetaFunctions.__call = function (_table, value) | |
| 23 return self.label:SetText (value) | |
| 24 end | |
| 25 | |
| 26 ------------------------------------------------------------------------------------------------------------ | |
| 27 --> members | |
| 28 | |
| 29 --> shown | |
| 30 local gmember_shown = function (_object) | |
| 31 return _object:IsShown() | |
| 32 end | |
| 33 --> frame width | |
| 34 local gmember_width = function (_object) | |
| 35 return _object.label:GetStringWidth() | |
| 36 end | |
| 37 --> frame height | |
| 38 local gmember_height = function (_object) | |
| 39 return _object.label:GetStringHeight() | |
| 40 end | |
| 41 --> text | |
| 42 local gmember_text = function (_object) | |
| 43 return _object.label:GetText() | |
| 44 end | |
| 45 --> text color | |
| 46 local gmember_textcolor = function (_object) | |
| 47 return _object.label:GetTextColor() | |
| 48 end | |
| 49 --> text font | |
| 50 local gmember_textfont = function (_object) | |
| 51 local fontface = _object.label:GetFont() | |
| 52 return fontface | |
| 53 end | |
| 54 --> text size | |
| 55 local gmember_textsize = function (_object) | |
| 56 local _, fontsize = _object.label:GetFont() | |
| 57 return fontsize | |
| 58 end | |
| 59 | |
| 60 | |
| 61 local get_members_function_index = { | |
| 62 ["shown"] = gmember_shown, | |
| 63 ["width"] = gmember_width, | |
| 64 ["height"] = gmember_height, | |
| 65 ["text"] = gmember_text, | |
| 66 ["fontcolor"] = gmember_textcolor, | |
| 67 ["fontface"] = gmember_textfont, | |
| 68 ["fontsize"] = gmember_textsize, | |
| 69 ["textcolor"] = gmember_textcolor, --alias | |
| 70 ["textfont"] = gmember_textfont, --alias | |
| 71 ["textsize"] = gmember_textsize --alias | |
| 72 } | |
| 73 | |
| 74 LabelMetaFunctions.__index = function (_table, _member_requested) | |
| 75 | |
| 76 local func = get_members_function_index [_member_requested] | |
| 77 if (func) then | |
| 78 return func (_table, _member_requested) | |
| 79 end | |
| 80 | |
| 81 local fromMe = _rawget (_table, _member_requested) | |
| 82 if (fromMe) then | |
| 83 return fromMe | |
| 84 end | |
| 85 | |
| 86 return LabelMetaFunctions [_member_requested] | |
| 87 end | |
| 88 | |
| 89 ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | |
| 90 | |
| 91 --> show | |
| 92 local smember_show = function (_object, _value) | |
| 93 if (_value) then | |
| 94 return _object:Show() | |
| 95 else | |
| 96 return _object:Hide() | |
| 97 end | |
| 98 end | |
| 99 --> hide | |
| 100 local smember_hide = function (_object, _value) | |
| 101 if (not _value) then | |
| 102 return _object:Show() | |
| 103 else | |
| 104 return _object:Hide() | |
| 105 end | |
| 106 end | |
| 107 --> text | |
| 108 local smember_text = function (_object, _value) | |
| 109 return _object.label:SetText (_value) | |
| 110 end | |
| 111 --> text color | |
| 112 local smember_textcolor = function (_object, _value) | |
| 113 local _value1, _value2, _value3, _value4 = DF:ParseColors (_value) | |
| 114 return _object.label:SetTextColor (_value1, _value2, _value3, _value4) | |
| 115 end | |
| 116 --> text font | |
| 117 local smember_textfont = function (_object, _value) | |
| 118 return DF:SetFontFace (_object.label, _value) | |
| 119 end | |
| 120 --> text size | |
| 121 local smember_textsize = function (_object, _value) | |
| 122 return DF:SetFontSize (_object.label, _value) | |
| 123 end | |
| 124 --> text align | |
| 125 local smember_textalign = function (_object, _value) | |
| 126 if (_value == "<") then | |
| 127 _value = "left" | |
| 128 elseif (_value == ">") then | |
| 129 _value = "right" | |
| 130 elseif (_value == "|") then | |
| 131 _value = "center" | |
| 132 end | |
| 133 return _object.label:SetJustifyH (_value) | |
| 134 end | |
| 135 --> text valign | |
| 136 local smember_textvalign = function (_object, _value) | |
| 137 if (_value == "^") then | |
| 138 _value = "top" | |
| 139 elseif (_value == "_") then | |
| 140 _value = "bottom" | |
| 141 elseif (_value == "|") then | |
| 142 _value = "middle" | |
| 143 end | |
| 144 return _object.label:SetJustifyV (_value) | |
| 145 end | |
| 146 --> field size width | |
| 147 local smember_width = function (_object, _value) | |
| 148 return _object.label:SetWidth (_value) | |
| 149 end | |
| 150 --> field size height | |
| 151 local smember_height = function (_object, _value) | |
| 152 return _object.label:SetHeight (_value) | |
| 153 end | |
| 154 --> outline (shadow) | |
| 155 local smember_outline = function (_object, _value) | |
| 156 DF:SetFontOutline (_object.label, _value) | |
| 157 end | |
| 158 | |
| 159 local set_members_function_index = { | |
| 160 ["show"] = smember_show, | |
| 161 ["hide"] = smember_hide, | |
| 162 ["align"] = smember_textalign, | |
| 163 ["valign"] = smember_textvalign, | |
| 164 ["text"] = smember_text, | |
| 165 ["width"] = smember_width, | |
| 166 ["height"] = smember_height, | |
| 167 ["fontcolor"] = smember_textcolor, | |
| 168 ["color"] = smember_textcolor,--alias | |
| 169 ["fontface"] = smember_textfont, | |
| 170 ["fontsize"] = smember_textsize, | |
| 171 ["textcolor"] = smember_textcolor,--alias | |
| 172 ["textfont"] = smember_textfont,--alias | |
| 173 ["textsize"] = smember_textsize,--alias | |
| 174 ["shadow"] = smember_outline, | |
| 175 ["outline"] = smember_outline,--alias | |
| 176 } | |
| 177 | |
| 178 LabelMetaFunctions.__newindex = function (_table, _key, _value) | |
| 179 local func = set_members_function_index [_key] | |
| 180 if (func) then | |
| 181 return func (_table, _value) | |
| 182 else | |
| 183 return _rawset (_table, _key, _value) | |
| 184 end | |
| 185 end | |
| 186 | |
| 187 ------------------------------------------------------------------------------------------------------------ | |
| 188 --> methods | |
| 189 | |
| 190 --> show & hide | |
| 191 function LabelMetaFunctions:IsShown() | |
| 192 return self.label:IsShown() | |
| 193 end | |
| 194 function LabelMetaFunctions:Show() | |
| 195 return self.label:Show() | |
| 196 end | |
| 197 function LabelMetaFunctions:Hide() | |
| 198 return self.label:Hide() | |
| 199 end | |
| 200 | |
| 201 -- textcolor | |
| 202 function LabelMetaFunctions:SetTextColor (color, arg2, arg3, arg4) | |
| 203 if (arg2) then | |
| 204 return self.label:SetTextColor (color, arg2, arg3, arg4 or 1) | |
| 205 end | |
| 206 local _value1, _value2, _value3, _value4 = DF:ParseColors (color) | |
| 207 return self.label:SetTextColor (_value1, _value2, _value3, _value4) | |
| 208 end | |
| 209 | |
| 210 -- setpoint | |
| 211 function LabelMetaFunctions:SetPoint (v1, v2, v3, v4, v5) | |
| 212 v1, v2, v3, v4, v5 = DF:CheckPoints (v1, v2, v3, v4, v5, self) | |
| 213 if (not v1) then | |
| 214 print ("Invalid parameter for SetPoint") | |
| 215 return | |
| 216 end | |
| 217 return self.widget:SetPoint (v1, v2, v3, v4, v5) | |
| 218 end | |
| 219 | |
| 220 ------------------------------------------------------------------------------------------------------------ | |
| 221 --> object constructor | |
| 222 function DF:CreateLabel (parent, text, size, color, font, member, name, layer) | |
| 223 return DF:NewLabel (parent, nil, name, member, text, font, size, color, layer) | |
| 224 end | |
| 225 | |
| 226 function DF:NewLabel (parent, container, name, member, text, font, size, color, layer) | |
| 227 | |
| 228 if (not parent) then | |
| 229 return nil | |
| 230 end | |
| 231 if (not container) then | |
| 232 container = parent | |
| 233 end | |
| 234 | |
| 235 if (not name) then | |
| 236 name = "DetailsFrameworkLabelNumber" .. DF.LabelNameCounter | |
| 237 DF.LabelNameCounter = DF.LabelNameCounter + 1 | |
| 238 end | |
| 239 | |
| 240 if (name:find ("$parent")) then | |
| 241 local pname = parent:GetName() | |
| 242 assert (pname, "label used $parent but parent has no name.") | |
| 243 name = name:gsub ("$parent", parent:GetName()) | |
| 244 end | |
| 245 | |
| 246 local LabelObject = {type = "label", dframework = true} | |
| 247 | |
| 248 if (member) then | |
| 249 parent [member] = LabelObject | |
| 250 --container [member] = LabelObject.label | |
| 251 end | |
| 252 | |
| 253 if (parent.dframework) then | |
| 254 parent = parent.widget | |
| 255 end | |
| 256 if (container.dframework) then | |
| 257 container = container.widget | |
| 258 end | |
| 259 | |
| 260 font = font or "GameFontHighlightSmall" | |
| 261 | |
| 262 LabelObject.label = parent:CreateFontString (name, layer or "OVERLAY", font) | |
| 263 LabelObject.widget = LabelObject.label | |
| 264 | |
| 265 LabelObject.label.MyObject = LabelObject | |
| 266 | |
| 267 if (not APILabelFunctions) then | |
| 268 APILabelFunctions = true | |
| 269 local idx = getmetatable (LabelObject.label).__index | |
| 270 for funcName, funcAddress in pairs (idx) do | |
| 271 if (not LabelMetaFunctions [funcName]) then | |
| 272 LabelMetaFunctions [funcName] = function (object, ...) | |
| 273 local x = loadstring ( "return _G."..object.label:GetName()..":"..funcName.."(...)") | |
| 274 return x (...) | |
| 275 end | |
| 276 end | |
| 277 end | |
| 278 end | |
| 279 | |
| 280 LabelObject.label:SetText (text) | |
| 281 | |
| 282 if (size) then | |
| 283 DF:SetFontSize (LabelObject.label, size) | |
| 284 end | |
| 285 | |
| 286 if (color) then | |
| 287 local r, g, b, a = DF:ParseColors (color) | |
| 288 LabelObject.label:SetTextColor (r, g, b, a) | |
| 289 end | |
| 290 | |
| 291 LabelObject.label:SetJustifyH ("LEFT") | |
| 292 | |
| 293 setmetatable (LabelObject, LabelMetaFunctions) | |
| 294 | |
| 295 return LabelObject | |
| 296 end |
