vrtc / chorus (public) (License: CC0) (since 2023-08-12) (hash sha1)
World of Warcraft add-on stub. The overall goal is to create a specialized raid frame.
List of commits:
Subject Hash Author Date (UTC)
fix: remove XML generators 0430f8d2cc9c7cf5ee22ae518f42e2ce85d5d5e7 Vladyslav Bondarenko 2025-02-03 20:20:52
feat: change aura tooltip graphics bf7cb7b9b19ffb4850d8e72d8352af75a5bdccfa Vladyslav Bondarenko 2025-02-02 22:52:58
fix!: aura tooltip aura buttons clearly visible dcebd82df00d5daee8d008c625e71d13c8da8c37 Vladyslav Bondarenko 2025-02-02 21:26:15
feat: bump version to 0.12.0-10 fffe025cfcfbe5ec0356d34cffdef1bfb62ea0af Vladyslav Bondarenko 2025-02-02 18:57:49
feat: allow aura tooltip to be dragged d4d699efa596b5bc5004873b3e41b50a09f4f3db Vladyslav Bondarenko 2025-02-02 18:56:00
feat!: create singleton aura tooltip 8e8e798543ef100a71ba2a9d212e66b1ddd667ab Vladyslav Bondarenko 2025-02-02 00:04:55
fix: show auras over role widgets 3bb62c88147af0ee522f4ce963ce206c315f4c9a Vladyslav Bondarenko 2025-02-01 21:27:33
fix: sanitize FrameXML fa5b0bbc1db073aa06e59d9bf03eb8d471a084b2 Vladyslav Bondarenko 2025-02-01 19:20:16
fix: make combat widget more visible 4b01d27fa7eeef55a6dcb866ec30641ee80e6f5b Vladyslav Bondarenko 2025-02-01 18:02:43
fix: make player roles more visible e28bbf987659ac717962de851226aa33409f472a Vladyslav Bondarenko 2025-02-01 18:02:21
feat: remove player from party frame 6d5f8b8a8bb1af9b596895ba42fdefed177560b6 Vladyslav Bondarenko 2025-02-01 16:07:20
feat: bump version to 0.12.0 83bd49398b8bff070bcb3664be634b02c78fa6dc Vladyslav Bondarenko 2025-01-29 16:39:56
fix: appease static analysis ce0659b8b6fb49f42fda914d2fd47da38fb80e63 Vladyslav Bondarenko 2025-01-29 16:39:39
fix!: persist frame position settings correctly 390fb24c1b2a19e378694adfa6efc7c93bdf1a55 Vladyslav Bondarenko 2025-01-29 16:34:56
feat!: drag chorus frames and save their positions e84a0e1d4a43760bbb177de901575ff10b388ccc Vladyslav Bondarenko 2025-01-29 09:37:39
fix: only drag frames out of combat 03ca7d9431c849e824699089dd82739f1c28870e Vladyslav Bondarenko 2025-01-28 07:43:06
feat: bump nightly version 05ac3fad466d01d2591439c6a39e5ae47d38803b Vladyslav Bondarenko 2025-01-27 21:37:11
feat!: add configuration menu 254bab612dbdadb0db925eab00cec81256b032ff Vladyslav Bondarenko 2025-01-27 21:30:05
fix: aura buttons do not violate borders 452ee7ff2e66a63e1c86f1cc1d9056b4ebe5cec4 Vladyslav Bondarenko 2025-01-27 18:02:08
fix: do not overlap tiny aura buttons 6f894b23eb90d2e88f57285ef7d5779550386ab9 Vladyslav Bondarenko 2025-01-27 17:58:48
Commit 0430f8d2cc9c7cf5ee22ae518f42e2ce85d5d5e7 - fix: remove XML generators
Use Lua code at runtime to generate raid frames instead of XML fixtures
generated by a script at build time.

XML generator does not offer as much runtime performance benefit as was
hoped. Therefore, simplify build process to make the project more easily
maintainable.
Author: Vladyslav Bondarenko
Author date (UTC): 2025-02-03 20:20
Committer name: Vladyslav Bondarenko
Committer date (UTC): 2025-02-03 20:20
Parent(s): eba1730d3b334f8900397d3189ad77a6d66cbb5d
Signer:
Signing key: EFF9624877D25D02
Signing status: E
Tree: be812966e6585bc78914fe36053dc733ef0cc641
File Lines added Lines deleted
bin/ChorusRaidFrameGenerator.lua 0 369
chorus.toc 1 1
conf/lua-check/luacheckrc.lua 8 5
conf/make/ChorusRaidFrameGenerator.mk 0 11
conf/make/src.mk 1 0
makefile 1 4
src/ChorusHugeRaidFrame.xml 0 627
src/ChorusLargeRaidFrame.xml 4 622
src/ChorusRaidFrameTemplate.lua 77 0
src/ChorusRaidFrameTemplate.xml 10 0
src/ChorusTinyRaidFrame.xml 4 622
File bin/ChorusRaidFrameGenerator.lua deleted (index bd7bb1a..0000000)
1 --[[--
2 A command line program, that takes a few arguments and prints to standard
3 output ugly XML descriptors.
4
5 This script parametrizes XML descriptor template for raid frame GUI widget,
6 that is only useful for `chorus` project.
7
8 There are several plausible configurations of the raid frame a user may
9 require. At least one per instance type, that is, arena, battleground, raid and
10 dungeon or party. Possibly more. The user will likely require to switch between
11 those profiles frequently and automatically.
12
13 The original intention of the project is to have the add-on come pre-configured
14 by the developer, and not require configuration by the user. Hence the need to
15 define a several useful raid frame profiles.
16
17 This script is a tool involved in producing different, but uniform raid
18 profiles, that are implemented by the project. The primary parameters are the
19 button template and button dimensions.
20
21 The unit button templates, that are hard coded in this script, are declared in
22 `src/ChorusRaidFrameTemplate.xml`. The specialization of raid profiles is
23 implemented in those virtual frame templates. This script only arranges the
24 concrete instances of buttons in a grid using XML descriptors.
25
26 The script is intended to be used by build orchestration tools, like `make` or
27 `gradle` or `ant`, rather than called manually.
28
29 The game engine loads XML descriptors quicker than Lua scripts. Therefore,
30 complex widgets, like raid frames, benefit from being declared with XML rather
31 than Lua. This does not improve responsiveness, however. This approach is
32 largely an experiment.
33
34 The usage shows how to execute the script on the command line. The first token
35 is the Lua executable. The second token is the script itself, assuming the
36 `chorus` source directory is the current working directory. The following
37 tokens are arguments for the script. The order is significant. See `function
38 emitRaidFrame`. Finally, the output is redirected to a file.
39
40 Formatting and validation of the output XML descriptor is the responsibility of
41 other tools, like `xmllint`.
42
43 @see emitRaidFrame
44
45 @usage lua bin/ChorusRaidFrameGenerator.lua ChorusTinyRaidFrame ChorusTinyRaidUnitFrameTemplate 64 16 > ChorusTinyRaidFrame.xml
46
47 @script ChorusRaidFrameGenerator
48
49 @alias mod
50 ]]
51
52 ChorusRaidFrameGenerator = {}
53
54 local mod = ChorusRaidFrameGenerator
55
56 local header = [[
57 <?xml version="1.0" encoding="UTF-8"?>
58 <!-- This file was generated automatically. Never edit it manually.
59 Instead, see `bin/ChorusRaidFrameGenerator.lua`. -->
60 <Ui xmlns="http://www.blizzard.com/wow/ui/">
61 <!-- See `ChorusRaidFrameTemplate.xml` for the unit button template declarations. -->
62 <Frame name="%s" hidden="true" inherits="SecureFrameTemplate" protected="true">
63 <Size>
64 <AbsDimension x="%d" y="%d"/>
65 </Size>
66 <Anchors>
67 <Anchor point="CENTER">
68 <Offset x="-180" y="320"/>
69 </Anchor>
70 </Anchors>
71 ]]
72
73 --[[ TODO Toggle the visibility of the raid group number labels, when
74 appropriate.]]--
75
76 local sectionHeader = [[<Frame name="%s" hidden="true"> <Size> <AbsDimension
77 x="%d" y="%d" /> </Size><Anchors><Anchor point="BOTTOMLEFT"><Offset x="%d"
78 y="%d"/></Anchor></Anchors> <Layers> <Layer level="OVERLAY"> <FontString
79 name="$parentText" inherits="ChorusFontBold13" setAllPoints="true"
80 justifyH="CENTER" justifyV="MIDDLE" text="%d"/></Layer></Layers></Frame>]]
81
82 local section = [[
83 <Frame name="%s" inherits="%s" id="%d">
84 <Anchors>
85 <Anchor point="BOTTOMLEFT">
86 <Offset>
87 <AbsDimension x="%d" y="%d"/>
88 </Offset>
89 </Anchor>
90 </Anchors>
91 <Attributes>
92 <Attribute name="unit" type="string" value="%s"/>
93 </Attributes>
94 </Frame>
95 ]]
96
97 local footer = [[
98 </Frame>
99 </Ui>]]
100
101 --[[--
102 Print a snippet of XML, that describes a button for a single raid member.
103
104 @function emitRaidButton
105
106 @tparam string buttonName frame designation, expected to be globally unique
107
108 @tparam string buttonTemplate virtual frame designation, all buttons in a
109 specific raid frame profile are expected to be uniform and share a single
110 template
111
112 @tparam int buttonId positive integer and not zero, a serial number of the
113 button, expected to be unique per raid frame profile
114
115 @tparam number buttonX offset from origin, that is bottom left corner, to the right
116
117 @tparam number buttonY offset from origin, that is bottom left corner, upwards
118
119 @tparam string unitDesignation unit designation, that is a raid member, like
120 `raid13`, each button is expected expected to map to units 1:1
121
122 @return nothing, the output is printed to standard output
123 ]]
124 function mod.emitRaidButton(buttonName, buttonTemplate, buttonId, buttonX, buttonY, unitDesignation)
125 assert(buttonName ~= nil)
126 assert('string' == type(buttonName))
127 assert(string.len(buttonName) >= 1)
128 assert(string.len(buttonName) <= 256)
129
130 assert(buttonTemplate ~= nil)
131 assert('string' == type(buttonTemplate))
132 assert(string.len(buttonTemplate) >= 1)
133 assert(string.len(buttonTemplate) <= 256)
134
135 assert(buttonId ~= nil)
136 assert('number' == type(buttonId))
137 assert(buttonId >= 1)
138 assert(buttonId <= 60)
139 buttonId = math.floor(math.abs(buttonId))
140
141 assert(buttonX ~= nil)
142 assert('number' == type(buttonX))
143 assert(buttonX >= 0)
144 assert(buttonX <= 8192)
145
146 assert(buttonY ~= nil)
147 assert('number' == type(buttonY))
148 assert(buttonY >= 0)
149 assert(buttonY <= 8192)
150
151 assert(unitDesignation ~= nil)
152 assert('string' == type(unitDesignation))
153 assert(string.len(unitDesignation) >= 5)
154 assert(string.len(unitDesignation) <= 6)
155
156 assert('raid' == string.sub(unitDesignation, 1, 4))
157 local n = tonumber(string.sub(unitDesignation, 5))
158 n = math.abs(math.floor(n))
159 assert('number' == type(n))
160 assert(n >= 1)
161 assert(n <= 60)
162
163 print(string.format(section, buttonName, buttonTemplate, buttonId,
164 buttonX, buttonY, unitDesignation))
165 end
166
167 --[[--
168 Emit exactly `groupSizeMax` quantity of buttons, with given `buttonTemplate`,
169 and other settings.
170
171 To make buttons grow horizontally, set `dirX=1` and `dirY=0`.
172
173 To make buttons grow vertically, set `dirX=0` and `dirY=1`.
174
175 WARNING: No other combination of `dirX` and `dirY` are permissible.
176
177 @function mod.emitRaidGroup
178 @tparam string raidFrameName the designation by which the root raid frame can be accessed at runtime as a global variable
179 @tparam string buttonTemplate the designation of one of several permissible button templates
180 @tparam number buttonWidth the width of a single button
181 @tparam number buttonHeight the height of a single button
182 @tparam number padding zero or positive float, the size of the gaps between individual buttons
183 @tparam number ox the origin point X component
184 @tparam number oy the origin point Y component
185 @tparam number dirX movement direction normalized vector X component
186 @tparam number dirY movement direction normalized vector Y component
187 @tparam number groupSizeMax positive integer, assumed a constant, the exact number of buttons emitted
188 @tparam number groupNumber positive integer, the numerical identifier of the group
189 @return nothing, prints to standard output
190 ]]
191 function mod.emitRaidGroup(raidFrameName, buttonTemplate, buttonWidth,
192 buttonHeight, padding, ox, oy, dirX, dirY, groupSizeMax, groupNumber)
193
194 assert(groupNumber ~= nil)
195 assert('number' == type(groupNumber))
196 assert(groupNumber >= 1)
197 assert(groupNumber <= 8)
198 groupNumber = math.abs(math.ceil(groupNumber))
199
200 assert(5 == groupSizeMax)
201
202 assert(ox >= 0)
203
204 assert(oy >= 0)
205
206 assert(padding >= 0)
207 assert(padding <= 36)
208
209 assert(dirX ~= nil)
210 assert('number' == type(dirX))
211 dirX = math.abs(math.ceil(dirX))
212
213 assert(dirY ~= nil)
214 assert('number' == type(dirY))
215 dirY = math.abs(math.ceil(dirY))
216
217 assert((1 == dirX and 0 == dirY) or
218 (0 == dirX and 1 == dirY))
219
220 print(string.format('<!-- Group %d. -->', groupNumber))
221
222 local marginLeft = 16
223
224 print(string.format(sectionHeader, raidFrameName .. 'GroupLabel' ..
225 groupNumber, marginLeft, buttonHeight, ox - marginLeft, oy,
226 groupNumber))
227
228 --[[ TODO Add margin and raid group number label. ]]--
229 local i = 0
230 local buttonId = math.abs(math.ceil((groupNumber - 1) * groupSizeMax))
231 while (i < groupSizeMax) do
232 buttonId = buttonId + 1
233 local buttonName = string.format('%sButton%02d', raidFrameName, buttonId)
234 --[[ Button template defined earlier. ]]--
235 local w = buttonWidth * i + padding * i
236 local h = buttonHeight * i + padding * i
237 local buttonX = ox + w * dirX
238 local buttonY = oy + h * dirY
239 local unitDesignation = string.format('raid%d', buttonId)
240
241 mod.emitRaidButton(buttonName, buttonTemplate,
242 buttonId, buttonX, buttonY, unitDesignation)
243
244 i = i + 1
245 end
246 end
247
248 --[[--
249 Print to standard output a valid XML descriptor for a raid frame profile, with
250 given arguments.
251
252 A raid frame consists by default of forty buttons arranged in a grid. First
253 button is the bottom left most corner of the grid, growing to the right and up.
254
255 A raid frame can be split into two blocks of twenty buttons, instead of one
256 block of forty. See the notes in the source code.
257
258 @function emitRaidFrame
259
260 @tparam string raidFrameName raid frame designation token, expected to be
261 globally unique
262
263 @tparam string buttonTemplate virtual frame template designation token, that
264 every button in the raid frame profile will inherit from
265
266 @tparam number buttonWidth positive and not zero integer, width of a single button
267
268 @tparam number buttonWidth positive and not zero integer, width of a single button
269
270 @return nothing, the output is printed to standard output
271 ]]
272 function mod.emitRaidFrame(raidFrameName, buttonTemplate, buttonWidth, buttonHeight)
273 assert(raidFrameName ~= nil)
274 assert('string' == type(raidFrameName))
275 assert(string.len(raidFrameName) >= 1)
276 assert(string.len(raidFrameName) <= 256)
277
278 assert(buttonTemplate ~= nil)
279 assert('string' == type(buttonTemplate))
280 assert('ChorusTinyRaidUnitFrameTemplate' == buttonTemplate or
281 'ChorusSmallRaidUnitFrameTemplate' == buttonTemplate or
282 'ChorusLargeRaidUnitFrameTemplate' == buttonTemplate or
283 'ChorusHugeRaidUnitFrameTemplate' == buttonTemplate)
284
285 assert(buttonWidth ~= nil)
286 buttonWidth = tonumber(buttonWidth)
287 assert('number' == type(buttonWidth))
288 assert(buttonWidth >= 12)
289 assert(buttonWidth <= 320)
290
291 assert(buttonHeight ~= nil)
292 buttonHeight = tonumber(buttonHeight)
293 assert('number' == type(buttonHeight))
294 assert(buttonHeight >= 12)
295 assert(buttonHeight <= 320)
296
297 local raidSizeMax = 40
298 local groupSizeMax = 5
299
300 local groupQuantity = math.ceil(raidSizeMax / groupSizeMax)
301
302 --[[ Effectively, when `blockQuantity = 2`, the raid frame is split
303 into two blocks of 4 groups x 5 members. ]]--
304
305 local blockQuantity = 1
306 assert(blockQuantity > 0)
307 blockQuantity = math.ceil(math.abs(blockQuantity))
308
309 --[[ Margin to leave space for group number labels. ]]--
310
311 local marginLeft = 16
312 local padding = 6
313 assert(padding >= 0)
314
315 local raidFrameWidth = marginLeft * blockQuantity + (groupSizeMax *
316 buttonWidth + groupSizeMax * padding) * blockQuantity
317
318 local raidFrameHeight = groupQuantity * buttonHeight + groupQuantity *
319 padding
320
321 print(string.format(header, raidFrameName, raidFrameWidth,
322 raidFrameHeight))
323
324 print('<Frames>')
325
326 local dirX = 1
327 local dirY = 0
328
329 local block = 0
330 local groupNumber = 0
331 while (block < blockQuantity) do
332 print(string.format('<!-- Block %d. -->', block + 1))
333
334 local ox = marginLeft * block + (buttonWidth * groupSizeMax + padding * groupSizeMax) * block
335 local i = 0
336 while (i < groupQuantity / blockQuantity) do
337 groupNumber = groupNumber + 1
338
339 local oy = (padding * i + buttonHeight * i)
340
341 mod.emitRaidGroup(raidFrameName, buttonTemplate,
342 buttonWidth, buttonHeight, padding, ox, oy, dirX, dirY,
343 groupSizeMax, groupNumber)
344 i = i + 1
345 end
346 block = block + 1
347 end
348
349 print('</Frames>')
350 print(footer)
351 end
352
353 --[[--
354 Process command line arguments with builtin global variable `arg`.
355
356 @function mod.main
357 @see emitRaidFrame
358 @return nothing, prints to standard output
359 ]]
360 function mod.main()
361 if arg ~= nil and 'table' == type(arg) then
362 return mod.emitRaidFrame(unpack(arg))
363 end
364 end
365
366 do
367 mod.main()
368 return mod
369 end
File chorus.toc changed (mode: 100644) (index a3db12d..468e987)
1 1 ##Interface: 30300 ##Interface: 30300
2 2 ##Notes: Add group frames and replace native solo frames. This is a work in progress. ##Notes: Add group frames and replace native solo frames. This is a work in progress.
3 3 ##Title: Chorus ##Title: Chorus
4 ##Version: 0.12.0-10-gd4d699e
4 ##Version: 0.12.0-14-geba1730
5 5 ##SavedVariables: ChorusUnitGroupRoleMap, ChorusConf, ChorusConfProfileName, ChorusLuacheckrcDump ##SavedVariables: ChorusUnitGroupRoleMap, ChorusConf, ChorusConfProfileName, ChorusLuacheckrcDump
6 6 src\Chorus.xml src\Chorus.xml
File conf/lua-check/luacheckrc.lua changed (mode: 100644) (index b6ab491..3ee8cc8)
... ... Author still chose to use FrameXML for convenience. ]]--
100 100
101 101 stds.framexml = { stds.framexml = {
102 102 read_globals = { read_globals = {
103 'DEAD',
104 'CORPSE',
105 'PLAYER_OFFLINE',
106 'DEATH_RELEASE',
107 103 'BUFF_MAX_DISPLAY', 'BUFF_MAX_DISPLAY',
104 'CORPSE',
108 105 'CastingBarFrame', 'CastingBarFrame',
109 106 'ComboFrame', 'ComboFrame',
107 'DEAD',
108 'DEATH_RELEASE',
110 109 'DEBUFF_MAX_DISPLAY', 'DEBUFF_MAX_DISPLAY',
111 110 'DEFAULT_CHAT_FRAME', 'DEFAULT_CHAT_FRAME',
112 111 'DebuffTypeColor', 'DebuffTypeColor',
 
... ... stds.framexml = {
120 119 'GameTooltipTextLeft1', 'GameTooltipTextLeft1',
121 120 'GameTooltip_SetDefaultAnchor', 'GameTooltip_SetDefaultAnchor',
122 121 'GameTooltip_UnitColor', 'GameTooltip_UnitColor',
122 'InterfaceOptions_AddCategory',
123 123 'MAX_PARTY_MEMBERS', 'MAX_PARTY_MEMBERS',
124 'MAX_RAID_MEMBERS',
124 125 'MAX_SPELLS', 'MAX_SPELLS',
126 'MEMBERS_PER_RAID_GROUP',
127 'NUM_RAID_GROUPS',
125 128 'NumberFontNormalSmall', 'NumberFontNormalSmall',
129 'PLAYER_OFFLINE',
126 130 'PartyMemberBackground', 'PartyMemberBackground',
127 131 'PartyMemberFrame1', 'PartyMemberFrame1',
128 132 'PartyMemberFrame1DropDown', 'PartyMemberFrame1DropDown',
 
... ... stds.framexml = {
157 161 'ToggleDropDownMenu', 'ToggleDropDownMenu',
158 162 'UIParent', 'UIParent',
159 163 'UnregisterUnitWatch', 'UnregisterUnitWatch',
160 'InterfaceOptions_AddCategory'
161 164 }, },
162 165 globals = { globals = {
163 166 }, },
File conf/make/ChorusRaidFrameGenerator.mk deleted (index ee70c14..0000000)
1 ${srcdir}src/ChorusTinyRaidFrame.xml: ${srcdir}bin/ChorusRaidFrameGenerator.lua ${srcdir}src/ChorusRaidFrameTemplate.xml
2 ${LUA} ${LUAFLAGS} ${srcdir}bin/ChorusRaidFrameGenerator.lua ChorusTinyRaidFrame ChorusTinyRaidUnitFrameTemplate 64 16 | ${FORMAT_XML} > $@
3
4 ${srcdir}src/ChorusSmallRaidFrame.xml: ${srcdir}bin/ChorusRaidFrameGenerator.lua ${srcdir}src/ChorusRaidFrameTemplate.xml
5 ${LUA} ${LUAFLAGS} ${srcdir}bin/ChorusRaidFrameGenerator.lua ChorusSmallRaidFrame ChorusSmallRaidUnitFrameTemplate 96 32 | ${FORMAT_XML} > $@
6
7 ${srcdir}src/ChorusLargeRaidFrame.xml: ${srcdir}bin/ChorusRaidFrameGenerator.lua ${srcdir}src/ChorusRaidFrameTemplate.xml
8 ${LUA} ${LUAFLAGS} ${srcdir}bin/ChorusRaidFrameGenerator.lua ChorusLargeRaidFrame ChorusLargeRaidUnitFrameTemplate 160 100 | ${FORMAT_XML} > $@
9
10 ${srcdir}src/ChorusHugeRaidFrame.xml: ${srcdir}bin/ChorusRaidFrameGenerator.lua ${srcdir}src/ChorusRaidFrameTemplate.xml
11 ${LUA} ${LUAFLAGS} ${srcdir}bin/ChorusRaidFrameGenerator.lua ChorusHugeRaidFrame ChorusHugeRaidUnitFrameTemplate 200 150 | ${FORMAT_XML} > $@
File conf/make/src.mk changed (mode: 100644) (index 58afdbd..00067c2)
... ... ${srcdir}src/ChorusFrame.lua \
18 18 ${srcdir}src/ChorusGroupFrame.lua \ ${srcdir}src/ChorusGroupFrame.lua \
19 19 ${srcdir}src/ChorusPartyFrame.lua \ ${srcdir}src/ChorusPartyFrame.lua \
20 20 ${srcdir}src/ChorusProgressFrameTemplate.lua \ ${srcdir}src/ChorusProgressFrameTemplate.lua \
21 ${srcdir}src/ChorusRaidFrameTemplate.lua \
21 22 ${srcdir}src/ChorusRaidTargetIconFrameTemplate.lua \ ${srcdir}src/ChorusRaidTargetIconFrameTemplate.lua \
22 23 ${srcdir}src/ChorusRangeFrameTemplate.lua \ ${srcdir}src/ChorusRangeFrameTemplate.lua \
23 24 ${srcdir}src/ChorusSoloFrame.lua \ ${srcdir}src/ChorusSoloFrame.lua \
File makefile changed (mode: 100644) (index b9dcc69..28cfdef)
6 6 # delimiters. Otherwise, the game client will quietly ignore the add-on and not # delimiters. Otherwise, the game client will quietly ignore the add-on and not
7 7 # load it. # load it.
8 8 NAME=chorus NAME=chorus
9 VERSION=0.12.0-10-gd4d699e
9 VERSION=0.12.0-14-geba1730
10 10 srcdir=./ srcdir=./
11 11
12 12 SHELL=/bin/sh SHELL=/bin/sh
 
... ... XMLFILES=
37 37 # File `src/Chorus.lua` must be loaded first by the tools. # File `src/Chorus.lua` must be loaded first by the tools.
38 38 include ${srcdir}conf/make/src.mk include ${srcdir}conf/make/src.mk
39 39
40 # Generate XML templates for raid frames.
41 include ${srcdir}conf/make/ChorusRaidFrameGenerator.mk
42
43 40 all: ${LUAFILES} ${XMLFILES} check all: ${LUAFILES} ${XMLFILES} check
44 41
45 42 dist: ${NAME}-${VERSION}.zip check dist: ${NAME}-${VERSION}.zip check
File src/ChorusHugeRaidFrame.xml deleted (index 8a309a1..0000000)
1 <?xml version="1.0" encoding="UTF-8"?>
2 <!-- This file was generated automatically. Never edit it manually.
3 Instead, see `bin/ChorusRaidFrameGenerator.lua`. -->
4 <Ui xmlns="http://www.blizzard.com/wow/ui/">
5 <!-- See `ChorusRaidFrameTemplate.xml` for the unit button template declarations. -->
6 <Frame name="ChorusHugeRaidFrame" hidden="true" inherits="SecureFrameTemplate" protected="true">
7 <Size>
8 <AbsDimension x="1046" y="1248"/>
9 </Size>
10 <Anchors>
11 <Anchor point="CENTER">
12 <Offset x="-180" y="320"/>
13 </Anchor>
14 </Anchors>
15 <Frames>
16 <!-- Block 1. -->
17 <!-- Group 1. -->
18 <Frame name="ChorusHugeRaidFrameGroupLabel1" hidden="true">
19 <Size>
20 <AbsDimension x="16" y="150"/>
21 </Size>
22 <Anchors>
23 <Anchor point="BOTTOMLEFT">
24 <Offset x="-16" y="0"/>
25 </Anchor>
26 </Anchors>
27 <Layers>
28 <Layer level="OVERLAY">
29 <FontString name="$parentText" inherits="ChorusFontBold13" setAllPoints="true" justifyH="CENTER" justifyV="MIDDLE" text="1"/>
30 </Layer>
31 </Layers>
32 </Frame>
33 <Frame name="ChorusHugeRaidFrameButton01" inherits="ChorusHugeRaidUnitFrameTemplate" id="1">
34 <Anchors>
35 <Anchor point="BOTTOMLEFT">
36 <Offset>
37 <AbsDimension x="0" y="0"/>
38 </Offset>
39 </Anchor>
40 </Anchors>
41 <Attributes>
42 <Attribute name="unit" type="string" value="raid1"/>
43 </Attributes>
44 </Frame>
45 <Frame name="ChorusHugeRaidFrameButton02" inherits="ChorusHugeRaidUnitFrameTemplate" id="2">
46 <Anchors>
47 <Anchor point="BOTTOMLEFT">
48 <Offset>
49 <AbsDimension x="206" y="0"/>
50 </Offset>
51 </Anchor>
52 </Anchors>
53 <Attributes>
54 <Attribute name="unit" type="string" value="raid2"/>
55 </Attributes>
56 </Frame>
57 <Frame name="ChorusHugeRaidFrameButton03" inherits="ChorusHugeRaidUnitFrameTemplate" id="3">
58 <Anchors>
59 <Anchor point="BOTTOMLEFT">
60 <Offset>
61 <AbsDimension x="412" y="0"/>
62 </Offset>
63 </Anchor>
64 </Anchors>
65 <Attributes>
66 <Attribute name="unit" type="string" value="raid3"/>
67 </Attributes>
68 </Frame>
69 <Frame name="ChorusHugeRaidFrameButton04" inherits="ChorusHugeRaidUnitFrameTemplate" id="4">
70 <Anchors>
71 <Anchor point="BOTTOMLEFT">
72 <Offset>
73 <AbsDimension x="618" y="0"/>
74 </Offset>
75 </Anchor>
76 </Anchors>
77 <Attributes>
78 <Attribute name="unit" type="string" value="raid4"/>
79 </Attributes>
80 </Frame>
81 <Frame name="ChorusHugeRaidFrameButton05" inherits="ChorusHugeRaidUnitFrameTemplate" id="5">
82 <Anchors>
83 <Anchor point="BOTTOMLEFT">
84 <Offset>
85 <AbsDimension x="824" y="0"/>
86 </Offset>
87 </Anchor>
88 </Anchors>
89 <Attributes>
90 <Attribute name="unit" type="string" value="raid5"/>
91 </Attributes>
92 </Frame>
93 <!-- Group 2. -->
94 <Frame name="ChorusHugeRaidFrameGroupLabel2" hidden="true">
95 <Size>
96 <AbsDimension x="16" y="150"/>
97 </Size>
98 <Anchors>
99 <Anchor point="BOTTOMLEFT">
100 <Offset x="-16" y="156"/>
101 </Anchor>
102 </Anchors>
103 <Layers>
104 <Layer level="OVERLAY">
105 <FontString name="$parentText" inherits="ChorusFontBold13" setAllPoints="true" justifyH="CENTER" justifyV="MIDDLE" text="2"/>
106 </Layer>
107 </Layers>
108 </Frame>
109 <Frame name="ChorusHugeRaidFrameButton06" inherits="ChorusHugeRaidUnitFrameTemplate" id="6">
110 <Anchors>
111 <Anchor point="BOTTOMLEFT">
112 <Offset>
113 <AbsDimension x="0" y="156"/>
114 </Offset>
115 </Anchor>
116 </Anchors>
117 <Attributes>
118 <Attribute name="unit" type="string" value="raid6"/>
119 </Attributes>
120 </Frame>
121 <Frame name="ChorusHugeRaidFrameButton07" inherits="ChorusHugeRaidUnitFrameTemplate" id="7">
122 <Anchors>
123 <Anchor point="BOTTOMLEFT">
124 <Offset>
125 <AbsDimension x="206" y="156"/>
126 </Offset>
127 </Anchor>
128 </Anchors>
129 <Attributes>
130 <Attribute name="unit" type="string" value="raid7"/>
131 </Attributes>
132 </Frame>
133 <Frame name="ChorusHugeRaidFrameButton08" inherits="ChorusHugeRaidUnitFrameTemplate" id="8">
134 <Anchors>
135 <Anchor point="BOTTOMLEFT">
136 <Offset>
137 <AbsDimension x="412" y="156"/>
138 </Offset>
139 </Anchor>
140 </Anchors>
141 <Attributes>
142 <Attribute name="unit" type="string" value="raid8"/>
143 </Attributes>
144 </Frame>
145 <Frame name="ChorusHugeRaidFrameButton09" inherits="ChorusHugeRaidUnitFrameTemplate" id="9">
146 <Anchors>
147 <Anchor point="BOTTOMLEFT">
148 <Offset>
149 <AbsDimension x="618" y="156"/>
150 </Offset>
151 </Anchor>
152 </Anchors>
153 <Attributes>
154 <Attribute name="unit" type="string" value="raid9"/>
155 </Attributes>
156 </Frame>
157 <Frame name="ChorusHugeRaidFrameButton10" inherits="ChorusHugeRaidUnitFrameTemplate" id="10">
158 <Anchors>
159 <Anchor point="BOTTOMLEFT">
160 <Offset>
161 <AbsDimension x="824" y="156"/>
162 </Offset>
163 </Anchor>
164 </Anchors>
165 <Attributes>
166 <Attribute name="unit" type="string" value="raid10"/>
167 </Attributes>
168 </Frame>
169 <!-- Group 3. -->
170 <Frame name="ChorusHugeRaidFrameGroupLabel3" hidden="true">
171 <Size>
172 <AbsDimension x="16" y="150"/>
173 </Size>
174 <Anchors>
175 <Anchor point="BOTTOMLEFT">
176 <Offset x="-16" y="312"/>
177 </Anchor>
178 </Anchors>
179 <Layers>
180 <Layer level="OVERLAY">
181 <FontString name="$parentText" inherits="ChorusFontBold13" setAllPoints="true" justifyH="CENTER" justifyV="MIDDLE" text="3"/>
182 </Layer>
183 </Layers>
184 </Frame>
185 <Frame name="ChorusHugeRaidFrameButton11" inherits="ChorusHugeRaidUnitFrameTemplate" id="11">
186 <Anchors>
187 <Anchor point="BOTTOMLEFT">
188 <Offset>
189 <AbsDimension x="0" y="312"/>
190 </Offset>
191 </Anchor>
192 </Anchors>
193 <Attributes>
194 <Attribute name="unit" type="string" value="raid11"/>
195 </Attributes>
196 </Frame>
197 <Frame name="ChorusHugeRaidFrameButton12" inherits="ChorusHugeRaidUnitFrameTemplate" id="12">
198 <Anchors>
199 <Anchor point="BOTTOMLEFT">
200 <Offset>
201 <AbsDimension x="206" y="312"/>
202 </Offset>
203 </Anchor>
204 </Anchors>
205 <Attributes>
206 <Attribute name="unit" type="string" value="raid12"/>
207 </Attributes>
208 </Frame>
209 <Frame name="ChorusHugeRaidFrameButton13" inherits="ChorusHugeRaidUnitFrameTemplate" id="13">
210 <Anchors>
211 <Anchor point="BOTTOMLEFT">
212 <Offset>
213 <AbsDimension x="412" y="312"/>
214 </Offset>
215 </Anchor>
216 </Anchors>
217 <Attributes>
218 <Attribute name="unit" type="string" value="raid13"/>
219 </Attributes>
220 </Frame>
221 <Frame name="ChorusHugeRaidFrameButton14" inherits="ChorusHugeRaidUnitFrameTemplate" id="14">
222 <Anchors>
223 <Anchor point="BOTTOMLEFT">
224 <Offset>
225 <AbsDimension x="618" y="312"/>
226 </Offset>
227 </Anchor>
228 </Anchors>
229 <Attributes>
230 <Attribute name="unit" type="string" value="raid14"/>
231 </Attributes>
232 </Frame>
233 <Frame name="ChorusHugeRaidFrameButton15" inherits="ChorusHugeRaidUnitFrameTemplate" id="15">
234 <Anchors>
235 <Anchor point="BOTTOMLEFT">
236 <Offset>
237 <AbsDimension x="824" y="312"/>
238 </Offset>
239 </Anchor>
240 </Anchors>
241 <Attributes>
242 <Attribute name="unit" type="string" value="raid15"/>
243 </Attributes>
244 </Frame>
245 <!-- Group 4. -->
246 <Frame name="ChorusHugeRaidFrameGroupLabel4" hidden="true">
247 <Size>
248 <AbsDimension x="16" y="150"/>
249 </Size>
250 <Anchors>
251 <Anchor point="BOTTOMLEFT">
252 <Offset x="-16" y="468"/>
253 </Anchor>
254 </Anchors>
255 <Layers>
256 <Layer level="OVERLAY">
257 <FontString name="$parentText" inherits="ChorusFontBold13" setAllPoints="true" justifyH="CENTER" justifyV="MIDDLE" text="4"/>
258 </Layer>
259 </Layers>
260 </Frame>
261 <Frame name="ChorusHugeRaidFrameButton16" inherits="ChorusHugeRaidUnitFrameTemplate" id="16">
262 <Anchors>
263 <Anchor point="BOTTOMLEFT">
264 <Offset>
265 <AbsDimension x="0" y="468"/>
266 </Offset>
267 </Anchor>
268 </Anchors>
269 <Attributes>
270 <Attribute name="unit" type="string" value="raid16"/>
271 </Attributes>
272 </Frame>
273 <Frame name="ChorusHugeRaidFrameButton17" inherits="ChorusHugeRaidUnitFrameTemplate" id="17">
274 <Anchors>
275 <Anchor point="BOTTOMLEFT">
276 <Offset>
277 <AbsDimension x="206" y="468"/>
278 </Offset>
279 </Anchor>
280 </Anchors>
281 <Attributes>
282 <Attribute name="unit" type="string" value="raid17"/>
283 </Attributes>
284 </Frame>
285 <Frame name="ChorusHugeRaidFrameButton18" inherits="ChorusHugeRaidUnitFrameTemplate" id="18">
286 <Anchors>
287 <Anchor point="BOTTOMLEFT">
288 <Offset>
289 <AbsDimension x="412" y="468"/>
290 </Offset>
291 </Anchor>
292 </Anchors>
293 <Attributes>
294 <Attribute name="unit" type="string" value="raid18"/>
295 </Attributes>
296 </Frame>
297 <Frame name="ChorusHugeRaidFrameButton19" inherits="ChorusHugeRaidUnitFrameTemplate" id="19">
298 <Anchors>
299 <Anchor point="BOTTOMLEFT">
300 <Offset>
301 <AbsDimension x="618" y="468"/>
302 </Offset>
303 </Anchor>
304 </Anchors>
305 <Attributes>
306 <Attribute name="unit" type="string" value="raid19"/>
307 </Attributes>
308 </Frame>
309 <Frame name="ChorusHugeRaidFrameButton20" inherits="ChorusHugeRaidUnitFrameTemplate" id="20">
310 <Anchors>
311 <Anchor point="BOTTOMLEFT">
312 <Offset>
313 <AbsDimension x="824" y="468"/>
314 </Offset>
315 </Anchor>
316 </Anchors>
317 <Attributes>
318 <Attribute name="unit" type="string" value="raid20"/>
319 </Attributes>
320 </Frame>
321 <!-- Group 5. -->
322 <Frame name="ChorusHugeRaidFrameGroupLabel5" hidden="true">
323 <Size>
324 <AbsDimension x="16" y="150"/>
325 </Size>
326 <Anchors>
327 <Anchor point="BOTTOMLEFT">
328 <Offset x="-16" y="624"/>
329 </Anchor>
330 </Anchors>
331 <Layers>
332 <Layer level="OVERLAY">
333 <FontString name="$parentText" inherits="ChorusFontBold13" setAllPoints="true" justifyH="CENTER" justifyV="MIDDLE" text="5"/>
334 </Layer>
335 </Layers>
336 </Frame>
337 <Frame name="ChorusHugeRaidFrameButton21" inherits="ChorusHugeRaidUnitFrameTemplate" id="21">
338 <Anchors>
339 <Anchor point="BOTTOMLEFT">
340 <Offset>
341 <AbsDimension x="0" y="624"/>
342 </Offset>
343 </Anchor>
344 </Anchors>
345 <Attributes>
346 <Attribute name="unit" type="string" value="raid21"/>
347 </Attributes>
348 </Frame>
349 <Frame name="ChorusHugeRaidFrameButton22" inherits="ChorusHugeRaidUnitFrameTemplate" id="22">
350 <Anchors>
351 <Anchor point="BOTTOMLEFT">
352 <Offset>
353 <AbsDimension x="206" y="624"/>
354 </Offset>
355 </Anchor>
356 </Anchors>
357 <Attributes>
358 <Attribute name="unit" type="string" value="raid22"/>
359 </Attributes>
360 </Frame>
361 <Frame name="ChorusHugeRaidFrameButton23" inherits="ChorusHugeRaidUnitFrameTemplate" id="23">
362 <Anchors>
363 <Anchor point="BOTTOMLEFT">
364 <Offset>
365 <AbsDimension x="412" y="624"/>
366 </Offset>
367 </Anchor>
368 </Anchors>
369 <Attributes>
370 <Attribute name="unit" type="string" value="raid23"/>
371 </Attributes>
372 </Frame>
373 <Frame name="ChorusHugeRaidFrameButton24" inherits="ChorusHugeRaidUnitFrameTemplate" id="24">
374 <Anchors>
375 <Anchor point="BOTTOMLEFT">
376 <Offset>
377 <AbsDimension x="618" y="624"/>
378 </Offset>
379 </Anchor>
380 </Anchors>
381 <Attributes>
382 <Attribute name="unit" type="string" value="raid24"/>
383 </Attributes>
384 </Frame>
385 <Frame name="ChorusHugeRaidFrameButton25" inherits="ChorusHugeRaidUnitFrameTemplate" id="25">
386 <Anchors>
387 <Anchor point="BOTTOMLEFT">
388 <Offset>
389 <AbsDimension x="824" y="624"/>
390 </Offset>
391 </Anchor>
392 </Anchors>
393 <Attributes>
394 <Attribute name="unit" type="string" value="raid25"/>
395 </Attributes>
396 </Frame>
397 <!-- Group 6. -->
398 <Frame name="ChorusHugeRaidFrameGroupLabel6" hidden="true">
399 <Size>
400 <AbsDimension x="16" y="150"/>
401 </Size>
402 <Anchors>
403 <Anchor point="BOTTOMLEFT">
404 <Offset x="-16" y="780"/>
405 </Anchor>
406 </Anchors>
407 <Layers>
408 <Layer level="OVERLAY">
409 <FontString name="$parentText" inherits="ChorusFontBold13" setAllPoints="true" justifyH="CENTER" justifyV="MIDDLE" text="6"/>
410 </Layer>
411 </Layers>
412 </Frame>
413 <Frame name="ChorusHugeRaidFrameButton26" inherits="ChorusHugeRaidUnitFrameTemplate" id="26">
414 <Anchors>
415 <Anchor point="BOTTOMLEFT">
416 <Offset>
417 <AbsDimension x="0" y="780"/>
418 </Offset>
419 </Anchor>
420 </Anchors>
421 <Attributes>
422 <Attribute name="unit" type="string" value="raid26"/>
423 </Attributes>
424 </Frame>
425 <Frame name="ChorusHugeRaidFrameButton27" inherits="ChorusHugeRaidUnitFrameTemplate" id="27">
426 <Anchors>
427 <Anchor point="BOTTOMLEFT">
428 <Offset>
429 <AbsDimension x="206" y="780"/>
430 </Offset>
431 </Anchor>
432 </Anchors>
433 <Attributes>
434 <Attribute name="unit" type="string" value="raid27"/>
435 </Attributes>
436 </Frame>
437 <Frame name="ChorusHugeRaidFrameButton28" inherits="ChorusHugeRaidUnitFrameTemplate" id="28">
438 <Anchors>
439 <Anchor point="BOTTOMLEFT">
440 <Offset>
441 <AbsDimension x="412" y="780"/>
442 </Offset>
443 </Anchor>
444 </Anchors>
445 <Attributes>
446 <Attribute name="unit" type="string" value="raid28"/>
447 </Attributes>
448 </Frame>
449 <Frame name="ChorusHugeRaidFrameButton29" inherits="ChorusHugeRaidUnitFrameTemplate" id="29">
450 <Anchors>
451 <Anchor point="BOTTOMLEFT">
452 <Offset>
453 <AbsDimension x="618" y="780"/>
454 </Offset>
455 </Anchor>
456 </Anchors>
457 <Attributes>
458 <Attribute name="unit" type="string" value="raid29"/>
459 </Attributes>
460 </Frame>
461 <Frame name="ChorusHugeRaidFrameButton30" inherits="ChorusHugeRaidUnitFrameTemplate" id="30">
462 <Anchors>
463 <Anchor point="BOTTOMLEFT">
464 <Offset>
465 <AbsDimension x="824" y="780"/>
466 </Offset>
467 </Anchor>
468 </Anchors>
469 <Attributes>
470 <Attribute name="unit" type="string" value="raid30"/>
471 </Attributes>
472 </Frame>
473 <!-- Group 7. -->
474 <Frame name="ChorusHugeRaidFrameGroupLabel7" hidden="true">
475 <Size>
476 <AbsDimension x="16" y="150"/>
477 </Size>
478 <Anchors>
479 <Anchor point="BOTTOMLEFT">
480 <Offset x="-16" y="936"/>
481 </Anchor>
482 </Anchors>
483 <Layers>
484 <Layer level="OVERLAY">
485 <FontString name="$parentText" inherits="ChorusFontBold13" setAllPoints="true" justifyH="CENTER" justifyV="MIDDLE" text="7"/>
486 </Layer>
487 </Layers>
488 </Frame>
489 <Frame name="ChorusHugeRaidFrameButton31" inherits="ChorusHugeRaidUnitFrameTemplate" id="31">
490 <Anchors>
491 <Anchor point="BOTTOMLEFT">
492 <Offset>
493 <AbsDimension x="0" y="936"/>
494 </Offset>
495 </Anchor>
496 </Anchors>
497 <Attributes>
498 <Attribute name="unit" type="string" value="raid31"/>
499 </Attributes>
500 </Frame>
501 <Frame name="ChorusHugeRaidFrameButton32" inherits="ChorusHugeRaidUnitFrameTemplate" id="32">
502 <Anchors>
503 <Anchor point="BOTTOMLEFT">
504 <Offset>
505 <AbsDimension x="206" y="936"/>
506 </Offset>
507 </Anchor>
508 </Anchors>
509 <Attributes>
510 <Attribute name="unit" type="string" value="raid32"/>
511 </Attributes>
512 </Frame>
513 <Frame name="ChorusHugeRaidFrameButton33" inherits="ChorusHugeRaidUnitFrameTemplate" id="33">
514 <Anchors>
515 <Anchor point="BOTTOMLEFT">
516 <Offset>
517 <AbsDimension x="412" y="936"/>
518 </Offset>
519 </Anchor>
520 </Anchors>
521 <Attributes>
522 <Attribute name="unit" type="string" value="raid33"/>
523 </Attributes>
524 </Frame>
525 <Frame name="ChorusHugeRaidFrameButton34" inherits="ChorusHugeRaidUnitFrameTemplate" id="34">
526 <Anchors>
527 <Anchor point="BOTTOMLEFT">
528 <Offset>
529 <AbsDimension x="618" y="936"/>
530 </Offset>
531 </Anchor>
532 </Anchors>
533 <Attributes>
534 <Attribute name="unit" type="string" value="raid34"/>
535 </Attributes>
536 </Frame>
537 <Frame name="ChorusHugeRaidFrameButton35" inherits="ChorusHugeRaidUnitFrameTemplate" id="35">
538 <Anchors>
539 <Anchor point="BOTTOMLEFT">
540 <Offset>
541 <AbsDimension x="824" y="936"/>
542 </Offset>
543 </Anchor>
544 </Anchors>
545 <Attributes>
546 <Attribute name="unit" type="string" value="raid35"/>
547 </Attributes>
548 </Frame>
549 <!-- Group 8. -->
550 <Frame name="ChorusHugeRaidFrameGroupLabel8" hidden="true">
551 <Size>
552 <AbsDimension x="16" y="150"/>
553 </Size>
554 <Anchors>
555 <Anchor point="BOTTOMLEFT">
556 <Offset x="-16" y="1092"/>
557 </Anchor>
558 </Anchors>
559 <Layers>
560 <Layer level="OVERLAY">
561 <FontString name="$parentText" inherits="ChorusFontBold13" setAllPoints="true" justifyH="CENTER" justifyV="MIDDLE" text="8"/>
562 </Layer>
563 </Layers>
564 </Frame>
565 <Frame name="ChorusHugeRaidFrameButton36" inherits="ChorusHugeRaidUnitFrameTemplate" id="36">
566 <Anchors>
567 <Anchor point="BOTTOMLEFT">
568 <Offset>
569 <AbsDimension x="0" y="1092"/>
570 </Offset>
571 </Anchor>
572 </Anchors>
573 <Attributes>
574 <Attribute name="unit" type="string" value="raid36"/>
575 </Attributes>
576 </Frame>
577 <Frame name="ChorusHugeRaidFrameButton37" inherits="ChorusHugeRaidUnitFrameTemplate" id="37">
578 <Anchors>
579 <Anchor point="BOTTOMLEFT">
580 <Offset>
581 <AbsDimension x="206" y="1092"/>
582 </Offset>
583 </Anchor>
584 </Anchors>
585 <Attributes>
586 <Attribute name="unit" type="string" value="raid37"/>
587 </Attributes>
588 </Frame>
589 <Frame name="ChorusHugeRaidFrameButton38" inherits="ChorusHugeRaidUnitFrameTemplate" id="38">
590 <Anchors>
591 <Anchor point="BOTTOMLEFT">
592 <Offset>
593 <AbsDimension x="412" y="1092"/>
594 </Offset>
595 </Anchor>
596 </Anchors>
597 <Attributes>
598 <Attribute name="unit" type="string" value="raid38"/>
599 </Attributes>
600 </Frame>
601 <Frame name="ChorusHugeRaidFrameButton39" inherits="ChorusHugeRaidUnitFrameTemplate" id="39">
602 <Anchors>
603 <Anchor point="BOTTOMLEFT">
604 <Offset>
605 <AbsDimension x="618" y="1092"/>
606 </Offset>
607 </Anchor>
608 </Anchors>
609 <Attributes>
610 <Attribute name="unit" type="string" value="raid39"/>
611 </Attributes>
612 </Frame>
613 <Frame name="ChorusHugeRaidFrameButton40" inherits="ChorusHugeRaidUnitFrameTemplate" id="40">
614 <Anchors>
615 <Anchor point="BOTTOMLEFT">
616 <Offset>
617 <AbsDimension x="824" y="1092"/>
618 </Offset>
619 </Anchor>
620 </Anchors>
621 <Attributes>
622 <Attribute name="unit" type="string" value="raid40"/>
623 </Attributes>
624 </Frame>
625 </Frames>
626 </Frame>
627 </Ui>
File src/ChorusLargeRaidFrame.xml changed (mode: 100644) (index 071e0da..b07b7dd)
1 1 <?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
2 <!-- This file was generated automatically. Never edit it manually.
3 Instead, see `bin/ChorusRaidFrameGenerator.lua`. -->
4 2 <Ui xmlns="http://www.blizzard.com/wow/ui/"> <Ui xmlns="http://www.blizzard.com/wow/ui/">
5 3 <!-- See `ChorusRaidFrameTemplate.xml` for the unit button template declarations. --> <!-- See `ChorusRaidFrameTemplate.xml` for the unit button template declarations. -->
6 <Frame name="ChorusLargeRaidFrame" hidden="true" inherits="SecureFrameTemplate" protected="true">
7 <Size>
8 <AbsDimension x="846" y="848"/>
9 </Size>
10 <Anchors>
11 <Anchor point="CENTER">
12 <Offset x="-180" y="320"/>
13 </Anchor>
14 </Anchors>
15 <Frames>
16 <!-- Block 1. -->
17 <!-- Group 1. -->
18 <Frame name="ChorusLargeRaidFrameGroupLabel1" hidden="true">
19 <Size>
20 <AbsDimension x="16" y="100"/>
21 </Size>
22 <Anchors>
23 <Anchor point="BOTTOMLEFT">
24 <Offset x="-16" y="0"/>
25 </Anchor>
26 </Anchors>
27 <Layers>
28 <Layer level="OVERLAY">
29 <FontString name="$parentText" inherits="ChorusFontBold13" setAllPoints="true" justifyH="CENTER" justifyV="MIDDLE" text="1"/>
30 </Layer>
31 </Layers>
32 </Frame>
33 <Frame name="ChorusLargeRaidFrameButton01" inherits="ChorusLargeRaidUnitFrameTemplate" id="1">
34 <Anchors>
35 <Anchor point="BOTTOMLEFT">
36 <Offset>
37 <AbsDimension x="0" y="0"/>
38 </Offset>
39 </Anchor>
40 </Anchors>
41 <Attributes>
42 <Attribute name="unit" type="string" value="raid1"/>
43 </Attributes>
44 </Frame>
45 <Frame name="ChorusLargeRaidFrameButton02" inherits="ChorusLargeRaidUnitFrameTemplate" id="2">
46 <Anchors>
47 <Anchor point="BOTTOMLEFT">
48 <Offset>
49 <AbsDimension x="166" y="0"/>
50 </Offset>
51 </Anchor>
52 </Anchors>
53 <Attributes>
54 <Attribute name="unit" type="string" value="raid2"/>
55 </Attributes>
56 </Frame>
57 <Frame name="ChorusLargeRaidFrameButton03" inherits="ChorusLargeRaidUnitFrameTemplate" id="3">
58 <Anchors>
59 <Anchor point="BOTTOMLEFT">
60 <Offset>
61 <AbsDimension x="332" y="0"/>
62 </Offset>
63 </Anchor>
64 </Anchors>
65 <Attributes>
66 <Attribute name="unit" type="string" value="raid3"/>
67 </Attributes>
68 </Frame>
69 <Frame name="ChorusLargeRaidFrameButton04" inherits="ChorusLargeRaidUnitFrameTemplate" id="4">
70 <Anchors>
71 <Anchor point="BOTTOMLEFT">
72 <Offset>
73 <AbsDimension x="498" y="0"/>
74 </Offset>
75 </Anchor>
76 </Anchors>
77 <Attributes>
78 <Attribute name="unit" type="string" value="raid4"/>
79 </Attributes>
80 </Frame>
81 <Frame name="ChorusLargeRaidFrameButton05" inherits="ChorusLargeRaidUnitFrameTemplate" id="5">
82 <Anchors>
83 <Anchor point="BOTTOMLEFT">
84 <Offset>
85 <AbsDimension x="664" y="0"/>
86 </Offset>
87 </Anchor>
88 </Anchors>
89 <Attributes>
90 <Attribute name="unit" type="string" value="raid5"/>
91 </Attributes>
92 </Frame>
93 <!-- Group 2. -->
94 <Frame name="ChorusLargeRaidFrameGroupLabel2" hidden="true">
95 <Size>
96 <AbsDimension x="16" y="100"/>
97 </Size>
98 <Anchors>
99 <Anchor point="BOTTOMLEFT">
100 <Offset x="-16" y="106"/>
101 </Anchor>
102 </Anchors>
103 <Layers>
104 <Layer level="OVERLAY">
105 <FontString name="$parentText" inherits="ChorusFontBold13" setAllPoints="true" justifyH="CENTER" justifyV="MIDDLE" text="2"/>
106 </Layer>
107 </Layers>
108 </Frame>
109 <Frame name="ChorusLargeRaidFrameButton06" inherits="ChorusLargeRaidUnitFrameTemplate" id="6">
110 <Anchors>
111 <Anchor point="BOTTOMLEFT">
112 <Offset>
113 <AbsDimension x="0" y="106"/>
114 </Offset>
115 </Anchor>
116 </Anchors>
117 <Attributes>
118 <Attribute name="unit" type="string" value="raid6"/>
119 </Attributes>
120 </Frame>
121 <Frame name="ChorusLargeRaidFrameButton07" inherits="ChorusLargeRaidUnitFrameTemplate" id="7">
122 <Anchors>
123 <Anchor point="BOTTOMLEFT">
124 <Offset>
125 <AbsDimension x="166" y="106"/>
126 </Offset>
127 </Anchor>
128 </Anchors>
129 <Attributes>
130 <Attribute name="unit" type="string" value="raid7"/>
131 </Attributes>
132 </Frame>
133 <Frame name="ChorusLargeRaidFrameButton08" inherits="ChorusLargeRaidUnitFrameTemplate" id="8">
134 <Anchors>
135 <Anchor point="BOTTOMLEFT">
136 <Offset>
137 <AbsDimension x="332" y="106"/>
138 </Offset>
139 </Anchor>
140 </Anchors>
141 <Attributes>
142 <Attribute name="unit" type="string" value="raid8"/>
143 </Attributes>
144 </Frame>
145 <Frame name="ChorusLargeRaidFrameButton09" inherits="ChorusLargeRaidUnitFrameTemplate" id="9">
146 <Anchors>
147 <Anchor point="BOTTOMLEFT">
148 <Offset>
149 <AbsDimension x="498" y="106"/>
150 </Offset>
151 </Anchor>
152 </Anchors>
153 <Attributes>
154 <Attribute name="unit" type="string" value="raid9"/>
155 </Attributes>
156 </Frame>
157 <Frame name="ChorusLargeRaidFrameButton10" inherits="ChorusLargeRaidUnitFrameTemplate" id="10">
158 <Anchors>
159 <Anchor point="BOTTOMLEFT">
160 <Offset>
161 <AbsDimension x="664" y="106"/>
162 </Offset>
163 </Anchor>
164 </Anchors>
165 <Attributes>
166 <Attribute name="unit" type="string" value="raid10"/>
167 </Attributes>
168 </Frame>
169 <!-- Group 3. -->
170 <Frame name="ChorusLargeRaidFrameGroupLabel3" hidden="true">
171 <Size>
172 <AbsDimension x="16" y="100"/>
173 </Size>
174 <Anchors>
175 <Anchor point="BOTTOMLEFT">
176 <Offset x="-16" y="212"/>
177 </Anchor>
178 </Anchors>
179 <Layers>
180 <Layer level="OVERLAY">
181 <FontString name="$parentText" inherits="ChorusFontBold13" setAllPoints="true" justifyH="CENTER" justifyV="MIDDLE" text="3"/>
182 </Layer>
183 </Layers>
184 </Frame>
185 <Frame name="ChorusLargeRaidFrameButton11" inherits="ChorusLargeRaidUnitFrameTemplate" id="11">
186 <Anchors>
187 <Anchor point="BOTTOMLEFT">
188 <Offset>
189 <AbsDimension x="0" y="212"/>
190 </Offset>
191 </Anchor>
192 </Anchors>
193 <Attributes>
194 <Attribute name="unit" type="string" value="raid11"/>
195 </Attributes>
196 </Frame>
197 <Frame name="ChorusLargeRaidFrameButton12" inherits="ChorusLargeRaidUnitFrameTemplate" id="12">
198 <Anchors>
199 <Anchor point="BOTTOMLEFT">
200 <Offset>
201 <AbsDimension x="166" y="212"/>
202 </Offset>
203 </Anchor>
204 </Anchors>
205 <Attributes>
206 <Attribute name="unit" type="string" value="raid12"/>
207 </Attributes>
208 </Frame>
209 <Frame name="ChorusLargeRaidFrameButton13" inherits="ChorusLargeRaidUnitFrameTemplate" id="13">
210 <Anchors>
211 <Anchor point="BOTTOMLEFT">
212 <Offset>
213 <AbsDimension x="332" y="212"/>
214 </Offset>
215 </Anchor>
216 </Anchors>
217 <Attributes>
218 <Attribute name="unit" type="string" value="raid13"/>
219 </Attributes>
220 </Frame>
221 <Frame name="ChorusLargeRaidFrameButton14" inherits="ChorusLargeRaidUnitFrameTemplate" id="14">
222 <Anchors>
223 <Anchor point="BOTTOMLEFT">
224 <Offset>
225 <AbsDimension x="498" y="212"/>
226 </Offset>
227 </Anchor>
228 </Anchors>
229 <Attributes>
230 <Attribute name="unit" type="string" value="raid14"/>
231 </Attributes>
232 </Frame>
233 <Frame name="ChorusLargeRaidFrameButton15" inherits="ChorusLargeRaidUnitFrameTemplate" id="15">
234 <Anchors>
235 <Anchor point="BOTTOMLEFT">
236 <Offset>
237 <AbsDimension x="664" y="212"/>
238 </Offset>
239 </Anchor>
240 </Anchors>
241 <Attributes>
242 <Attribute name="unit" type="string" value="raid15"/>
243 </Attributes>
244 </Frame>
245 <!-- Group 4. -->
246 <Frame name="ChorusLargeRaidFrameGroupLabel4" hidden="true">
247 <Size>
248 <AbsDimension x="16" y="100"/>
249 </Size>
250 <Anchors>
251 <Anchor point="BOTTOMLEFT">
252 <Offset x="-16" y="318"/>
253 </Anchor>
254 </Anchors>
255 <Layers>
256 <Layer level="OVERLAY">
257 <FontString name="$parentText" inherits="ChorusFontBold13" setAllPoints="true" justifyH="CENTER" justifyV="MIDDLE" text="4"/>
258 </Layer>
259 </Layers>
260 </Frame>
261 <Frame name="ChorusLargeRaidFrameButton16" inherits="ChorusLargeRaidUnitFrameTemplate" id="16">
262 <Anchors>
263 <Anchor point="BOTTOMLEFT">
264 <Offset>
265 <AbsDimension x="0" y="318"/>
266 </Offset>
267 </Anchor>
268 </Anchors>
269 <Attributes>
270 <Attribute name="unit" type="string" value="raid16"/>
271 </Attributes>
272 </Frame>
273 <Frame name="ChorusLargeRaidFrameButton17" inherits="ChorusLargeRaidUnitFrameTemplate" id="17">
274 <Anchors>
275 <Anchor point="BOTTOMLEFT">
276 <Offset>
277 <AbsDimension x="166" y="318"/>
278 </Offset>
279 </Anchor>
280 </Anchors>
281 <Attributes>
282 <Attribute name="unit" type="string" value="raid17"/>
283 </Attributes>
284 </Frame>
285 <Frame name="ChorusLargeRaidFrameButton18" inherits="ChorusLargeRaidUnitFrameTemplate" id="18">
286 <Anchors>
287 <Anchor point="BOTTOMLEFT">
288 <Offset>
289 <AbsDimension x="332" y="318"/>
290 </Offset>
291 </Anchor>
292 </Anchors>
293 <Attributes>
294 <Attribute name="unit" type="string" value="raid18"/>
295 </Attributes>
296 </Frame>
297 <Frame name="ChorusLargeRaidFrameButton19" inherits="ChorusLargeRaidUnitFrameTemplate" id="19">
298 <Anchors>
299 <Anchor point="BOTTOMLEFT">
300 <Offset>
301 <AbsDimension x="498" y="318"/>
302 </Offset>
303 </Anchor>
304 </Anchors>
305 <Attributes>
306 <Attribute name="unit" type="string" value="raid19"/>
307 </Attributes>
308 </Frame>
309 <Frame name="ChorusLargeRaidFrameButton20" inherits="ChorusLargeRaidUnitFrameTemplate" id="20">
310 <Anchors>
311 <Anchor point="BOTTOMLEFT">
312 <Offset>
313 <AbsDimension x="664" y="318"/>
314 </Offset>
315 </Anchor>
316 </Anchors>
317 <Attributes>
318 <Attribute name="unit" type="string" value="raid20"/>
319 </Attributes>
320 </Frame>
321 <!-- Group 5. -->
322 <Frame name="ChorusLargeRaidFrameGroupLabel5" hidden="true">
323 <Size>
324 <AbsDimension x="16" y="100"/>
325 </Size>
326 <Anchors>
327 <Anchor point="BOTTOMLEFT">
328 <Offset x="-16" y="424"/>
329 </Anchor>
330 </Anchors>
331 <Layers>
332 <Layer level="OVERLAY">
333 <FontString name="$parentText" inherits="ChorusFontBold13" setAllPoints="true" justifyH="CENTER" justifyV="MIDDLE" text="5"/>
334 </Layer>
335 </Layers>
336 </Frame>
337 <Frame name="ChorusLargeRaidFrameButton21" inherits="ChorusLargeRaidUnitFrameTemplate" id="21">
338 <Anchors>
339 <Anchor point="BOTTOMLEFT">
340 <Offset>
341 <AbsDimension x="0" y="424"/>
342 </Offset>
343 </Anchor>
344 </Anchors>
345 <Attributes>
346 <Attribute name="unit" type="string" value="raid21"/>
347 </Attributes>
348 </Frame>
349 <Frame name="ChorusLargeRaidFrameButton22" inherits="ChorusLargeRaidUnitFrameTemplate" id="22">
350 <Anchors>
351 <Anchor point="BOTTOMLEFT">
352 <Offset>
353 <AbsDimension x="166" y="424"/>
354 </Offset>
355 </Anchor>
356 </Anchors>
357 <Attributes>
358 <Attribute name="unit" type="string" value="raid22"/>
359 </Attributes>
360 </Frame>
361 <Frame name="ChorusLargeRaidFrameButton23" inherits="ChorusLargeRaidUnitFrameTemplate" id="23">
362 <Anchors>
363 <Anchor point="BOTTOMLEFT">
364 <Offset>
365 <AbsDimension x="332" y="424"/>
366 </Offset>
367 </Anchor>
368 </Anchors>
369 <Attributes>
370 <Attribute name="unit" type="string" value="raid23"/>
371 </Attributes>
372 </Frame>
373 <Frame name="ChorusLargeRaidFrameButton24" inherits="ChorusLargeRaidUnitFrameTemplate" id="24">
374 <Anchors>
375 <Anchor point="BOTTOMLEFT">
376 <Offset>
377 <AbsDimension x="498" y="424"/>
378 </Offset>
379 </Anchor>
380 </Anchors>
381 <Attributes>
382 <Attribute name="unit" type="string" value="raid24"/>
383 </Attributes>
384 </Frame>
385 <Frame name="ChorusLargeRaidFrameButton25" inherits="ChorusLargeRaidUnitFrameTemplate" id="25">
386 <Anchors>
387 <Anchor point="BOTTOMLEFT">
388 <Offset>
389 <AbsDimension x="664" y="424"/>
390 </Offset>
391 </Anchor>
392 </Anchors>
393 <Attributes>
394 <Attribute name="unit" type="string" value="raid25"/>
395 </Attributes>
396 </Frame>
397 <!-- Group 6. -->
398 <Frame name="ChorusLargeRaidFrameGroupLabel6" hidden="true">
399 <Size>
400 <AbsDimension x="16" y="100"/>
401 </Size>
402 <Anchors>
403 <Anchor point="BOTTOMLEFT">
404 <Offset x="-16" y="530"/>
405 </Anchor>
406 </Anchors>
407 <Layers>
408 <Layer level="OVERLAY">
409 <FontString name="$parentText" inherits="ChorusFontBold13" setAllPoints="true" justifyH="CENTER" justifyV="MIDDLE" text="6"/>
410 </Layer>
411 </Layers>
412 </Frame>
413 <Frame name="ChorusLargeRaidFrameButton26" inherits="ChorusLargeRaidUnitFrameTemplate" id="26">
414 <Anchors>
415 <Anchor point="BOTTOMLEFT">
416 <Offset>
417 <AbsDimension x="0" y="530"/>
418 </Offset>
419 </Anchor>
420 </Anchors>
421 <Attributes>
422 <Attribute name="unit" type="string" value="raid26"/>
423 </Attributes>
424 </Frame>
425 <Frame name="ChorusLargeRaidFrameButton27" inherits="ChorusLargeRaidUnitFrameTemplate" id="27">
426 <Anchors>
427 <Anchor point="BOTTOMLEFT">
428 <Offset>
429 <AbsDimension x="166" y="530"/>
430 </Offset>
431 </Anchor>
432 </Anchors>
433 <Attributes>
434 <Attribute name="unit" type="string" value="raid27"/>
435 </Attributes>
436 </Frame>
437 <Frame name="ChorusLargeRaidFrameButton28" inherits="ChorusLargeRaidUnitFrameTemplate" id="28">
438 <Anchors>
439 <Anchor point="BOTTOMLEFT">
440 <Offset>
441 <AbsDimension x="332" y="530"/>
442 </Offset>
443 </Anchor>
444 </Anchors>
445 <Attributes>
446 <Attribute name="unit" type="string" value="raid28"/>
447 </Attributes>
448 </Frame>
449 <Frame name="ChorusLargeRaidFrameButton29" inherits="ChorusLargeRaidUnitFrameTemplate" id="29">
450 <Anchors>
451 <Anchor point="BOTTOMLEFT">
452 <Offset>
453 <AbsDimension x="498" y="530"/>
454 </Offset>
455 </Anchor>
456 </Anchors>
457 <Attributes>
458 <Attribute name="unit" type="string" value="raid29"/>
459 </Attributes>
460 </Frame>
461 <Frame name="ChorusLargeRaidFrameButton30" inherits="ChorusLargeRaidUnitFrameTemplate" id="30">
462 <Anchors>
463 <Anchor point="BOTTOMLEFT">
464 <Offset>
465 <AbsDimension x="664" y="530"/>
466 </Offset>
467 </Anchor>
468 </Anchors>
469 <Attributes>
470 <Attribute name="unit" type="string" value="raid30"/>
471 </Attributes>
472 </Frame>
473 <!-- Group 7. -->
474 <Frame name="ChorusLargeRaidFrameGroupLabel7" hidden="true">
475 <Size>
476 <AbsDimension x="16" y="100"/>
477 </Size>
478 <Anchors>
479 <Anchor point="BOTTOMLEFT">
480 <Offset x="-16" y="636"/>
481 </Anchor>
482 </Anchors>
483 <Layers>
484 <Layer level="OVERLAY">
485 <FontString name="$parentText" inherits="ChorusFontBold13" setAllPoints="true" justifyH="CENTER" justifyV="MIDDLE" text="7"/>
486 </Layer>
487 </Layers>
488 </Frame>
489 <Frame name="ChorusLargeRaidFrameButton31" inherits="ChorusLargeRaidUnitFrameTemplate" id="31">
490 <Anchors>
491 <Anchor point="BOTTOMLEFT">
492 <Offset>
493 <AbsDimension x="0" y="636"/>
494 </Offset>
495 </Anchor>
496 </Anchors>
497 <Attributes>
498 <Attribute name="unit" type="string" value="raid31"/>
499 </Attributes>
500 </Frame>
501 <Frame name="ChorusLargeRaidFrameButton32" inherits="ChorusLargeRaidUnitFrameTemplate" id="32">
502 <Anchors>
503 <Anchor point="BOTTOMLEFT">
504 <Offset>
505 <AbsDimension x="166" y="636"/>
506 </Offset>
507 </Anchor>
508 </Anchors>
509 <Attributes>
510 <Attribute name="unit" type="string" value="raid32"/>
511 </Attributes>
512 </Frame>
513 <Frame name="ChorusLargeRaidFrameButton33" inherits="ChorusLargeRaidUnitFrameTemplate" id="33">
514 <Anchors>
515 <Anchor point="BOTTOMLEFT">
516 <Offset>
517 <AbsDimension x="332" y="636"/>
518 </Offset>
519 </Anchor>
520 </Anchors>
521 <Attributes>
522 <Attribute name="unit" type="string" value="raid33"/>
523 </Attributes>
524 </Frame>
525 <Frame name="ChorusLargeRaidFrameButton34" inherits="ChorusLargeRaidUnitFrameTemplate" id="34">
526 <Anchors>
527 <Anchor point="BOTTOMLEFT">
528 <Offset>
529 <AbsDimension x="498" y="636"/>
530 </Offset>
531 </Anchor>
532 </Anchors>
533 <Attributes>
534 <Attribute name="unit" type="string" value="raid34"/>
535 </Attributes>
536 </Frame>
537 <Frame name="ChorusLargeRaidFrameButton35" inherits="ChorusLargeRaidUnitFrameTemplate" id="35">
538 <Anchors>
539 <Anchor point="BOTTOMLEFT">
540 <Offset>
541 <AbsDimension x="664" y="636"/>
542 </Offset>
543 </Anchor>
544 </Anchors>
545 <Attributes>
546 <Attribute name="unit" type="string" value="raid35"/>
547 </Attributes>
548 </Frame>
549 <!-- Group 8. -->
550 <Frame name="ChorusLargeRaidFrameGroupLabel8" hidden="true">
551 <Size>
552 <AbsDimension x="16" y="100"/>
553 </Size>
554 <Anchors>
555 <Anchor point="BOTTOMLEFT">
556 <Offset x="-16" y="742"/>
557 </Anchor>
558 </Anchors>
559 <Layers>
560 <Layer level="OVERLAY">
561 <FontString name="$parentText" inherits="ChorusFontBold13" setAllPoints="true" justifyH="CENTER" justifyV="MIDDLE" text="8"/>
562 </Layer>
563 </Layers>
564 </Frame>
565 <Frame name="ChorusLargeRaidFrameButton36" inherits="ChorusLargeRaidUnitFrameTemplate" id="36">
566 <Anchors>
567 <Anchor point="BOTTOMLEFT">
568 <Offset>
569 <AbsDimension x="0" y="742"/>
570 </Offset>
571 </Anchor>
572 </Anchors>
573 <Attributes>
574 <Attribute name="unit" type="string" value="raid36"/>
575 </Attributes>
576 </Frame>
577 <Frame name="ChorusLargeRaidFrameButton37" inherits="ChorusLargeRaidUnitFrameTemplate" id="37">
578 <Anchors>
579 <Anchor point="BOTTOMLEFT">
580 <Offset>
581 <AbsDimension x="166" y="742"/>
582 </Offset>
583 </Anchor>
584 </Anchors>
585 <Attributes>
586 <Attribute name="unit" type="string" value="raid37"/>
587 </Attributes>
588 </Frame>
589 <Frame name="ChorusLargeRaidFrameButton38" inherits="ChorusLargeRaidUnitFrameTemplate" id="38">
590 <Anchors>
591 <Anchor point="BOTTOMLEFT">
592 <Offset>
593 <AbsDimension x="332" y="742"/>
594 </Offset>
595 </Anchor>
596 </Anchors>
597 <Attributes>
598 <Attribute name="unit" type="string" value="raid38"/>
599 </Attributes>
600 </Frame>
601 <Frame name="ChorusLargeRaidFrameButton39" inherits="ChorusLargeRaidUnitFrameTemplate" id="39">
602 <Anchors>
603 <Anchor point="BOTTOMLEFT">
604 <Offset>
605 <AbsDimension x="498" y="742"/>
606 </Offset>
607 </Anchor>
608 </Anchors>
609 <Attributes>
610 <Attribute name="unit" type="string" value="raid39"/>
611 </Attributes>
612 </Frame>
613 <Frame name="ChorusLargeRaidFrameButton40" inherits="ChorusLargeRaidUnitFrameTemplate" id="40">
614 <Anchors>
615 <Anchor point="BOTTOMLEFT">
616 <Offset>
617 <AbsDimension x="664" y="742"/>
618 </Offset>
619 </Anchor>
620 </Anchors>
621 <Attributes>
622 <Attribute name="unit" type="string" value="raid40"/>
623 </Attributes>
624 </Frame>
625 </Frames>
4 <Frame name="ChorusLargeRaidFrame" inherits="ChorusRaidFrameTemplate">
5 <Scripts>
6 <OnLoad>Chorus.raidLargeFrameMain(self);</OnLoad>
7 </Scripts>
626 8 </Frame> </Frame>
627 9 </Ui> </Ui>
File src/ChorusRaidFrameTemplate.lua added (mode: 100644) (index 0000000..ca77524)
1 local Chorus = Chorus
2
3 function Chorus.raidFrameButtonFactory(raidFrame, raidButtonTemplate, buttonWidth, buttonHeight)
4 assert(raidFrame ~= nil)
5
6 assert(raidButtonTemplate ~= nil)
7 assert('string' == type(raidButtonTemplate))
8 raidButtonTemplate = strtrim(raidButtonTemplate)
9 assert(string.len(raidButtonTemplate) >= 1)
10 assert(string.len(raidButtonTemplate) <= 256)
11
12 buttonWidth = buttonWidth or 24
13 buttonHeight = buttonHeight or 24
14 local padding = 6
15
16 --[[ See `FrameXML/RaidFrame.lua`. ]]--
17 local MAX_RAID_MEMBERS = MAX_RAID_MEMBERS or 40;
18 local NUM_RAID_GROUPS = NUM_RAID_GROUPS or 8;
19 local MEMBERS_PER_RAID_GROUP = MEMBERS_PER_RAID_GROUP or 5;
20
21 local m = raidFrame:GetName()
22 assert(m ~= nil)
23 assert('string' == type(m))
24 m = strtrim(m)
25 assert(string.len(m) >= 1)
26 assert(string.len(m) <= 256)
27
28 local i = 0
29 local column = 0
30 local row = 0
31
32 while(i < MAX_RAID_MEMBERS) do
33 i = i + 1
34 local n = string.format('%s%02d', m, i)
35 local b = CreateFrame('FRAME', n, raidFrame, raidButtonTemplate)
36
37 buttonWidth = math.max(b:GetWidth())
38 buttonHeight = math.max(b:GetHeight())
39
40 local x = column * buttonWidth + padding * column
41 local y = row * buttonHeight + padding * row
42 b:SetPoint('BOTTOMLEFT', x, y)
43
44 b:SetAttribute('unit', 'raid' .. tostring(i))
45
46 column = column + 1
47 if column >= MEMBERS_PER_RAID_GROUP then
48 column = 0
49 row = row + 1
50 end
51 end
52
53 raidFrame:SetWidth(buttonWidth * MEMBERS_PER_RAID_GROUP + padding * MEMBERS_PER_RAID_GROUP)
54 raidFrame:SetHeight(buttonHeight * NUM_RAID_GROUPS + padding * NUM_RAID_GROUPS)
55 raidFrame:SetPoint('TOPLEFT', 0, 0)
56
57 local background = _G[m .. 'Background']
58 if background then
59 background:SetAllPoints()
60 end
61 end
62
63
64 function Chorus.raidTinyFrameMain(raidFrame)
65 Chorus.raidFrameButtonFactory(raidFrame, 'ChorusTinyRaidUnitFrameTemplate')
66 end
67
68 function Chorus.raidSmallFrameMain(raidFrame)
69 Chorus.raidFrameButtonFactory(raidFrame, 'ChorusSmallRaidUnitFrameTemplate')
70 end
71
72 function Chorus.raidLargeFrameMain(raidFrame)
73 Chorus.raidFrameButtonFactory(raidFrame, 'ChorusLargeRaidUnitFrameTemplate')
74 end
75 function Chorus.raidHugeFrameMain(raidFrame)
76 Chorus.raidFrameButtonFactory(raidFrame, 'ChorusHugeRaidUnitFrameTemplate')
77 end
File src/ChorusRaidFrameTemplate.xml changed (mode: 100644) (index 0806b58..140b4ac)
12 12 <Frame name="ChorusHugeRaidUnitFrameTemplate" <Frame name="ChorusHugeRaidUnitFrameTemplate"
13 13 inherits="ChorusHugeUnitFrameTemplate,ChorusMemberUnitFrameTemplate" inherits="ChorusHugeUnitFrameTemplate,ChorusMemberUnitFrameTemplate"
14 14 virtual="true"/> virtual="true"/>
15 <Script file="ChorusRaidFrameTemplate.lua"/>
16 <Frame name="ChorusRaidFrameTemplate" hidden="true" inherits="SecureFrameTemplate" protected="true">
17 <Layers>
18 <Layer level="BACKGROUND">
19 <Texture name="$parentBackground" setAllPoints="true" hidden="true">
20 <Color r="0.87" g="0.67" b="0.08" a="0.34"/>
21 </Texture>
22 </Layer>
23 </Layers>
24 </Frame>
15 25 </Ui> </Ui>
File src/ChorusTinyRaidFrame.xml changed (mode: 100644) (index 8a776c2..f9a2127)
1 1 <?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
2 <!-- This file was generated automatically. Never edit it manually.
3 Instead, see `bin/ChorusRaidFrameGenerator.lua`. -->
4 2 <Ui xmlns="http://www.blizzard.com/wow/ui/"> <Ui xmlns="http://www.blizzard.com/wow/ui/">
5 3 <!-- See `ChorusRaidFrameTemplate.xml` for the unit button template declarations. --> <!-- See `ChorusRaidFrameTemplate.xml` for the unit button template declarations. -->
6 <Frame name="ChorusTinyRaidFrame" hidden="true" inherits="SecureFrameTemplate" protected="true">
7 <Size>
8 <AbsDimension x="366" y="176"/>
9 </Size>
10 <Anchors>
11 <Anchor point="CENTER">
12 <Offset x="-180" y="320"/>
13 </Anchor>
14 </Anchors>
15 <Frames>
16 <!-- Block 1. -->
17 <!-- Group 1. -->
18 <Frame name="ChorusTinyRaidFrameGroupLabel1" hidden="true">
19 <Size>
20 <AbsDimension x="16" y="16"/>
21 </Size>
22 <Anchors>
23 <Anchor point="BOTTOMLEFT">
24 <Offset x="-16" y="0"/>
25 </Anchor>
26 </Anchors>
27 <Layers>
28 <Layer level="OVERLAY">
29 <FontString name="$parentText" inherits="ChorusFontBold13" setAllPoints="true" justifyH="CENTER" justifyV="MIDDLE" text="1"/>
30 </Layer>
31 </Layers>
32 </Frame>
33 <Frame name="ChorusTinyRaidFrameButton01" inherits="ChorusTinyRaidUnitFrameTemplate" id="1">
34 <Anchors>
35 <Anchor point="BOTTOMLEFT">
36 <Offset>
37 <AbsDimension x="0" y="0"/>
38 </Offset>
39 </Anchor>
40 </Anchors>
41 <Attributes>
42 <Attribute name="unit" type="string" value="raid1"/>
43 </Attributes>
44 </Frame>
45 <Frame name="ChorusTinyRaidFrameButton02" inherits="ChorusTinyRaidUnitFrameTemplate" id="2">
46 <Anchors>
47 <Anchor point="BOTTOMLEFT">
48 <Offset>
49 <AbsDimension x="70" y="0"/>
50 </Offset>
51 </Anchor>
52 </Anchors>
53 <Attributes>
54 <Attribute name="unit" type="string" value="raid2"/>
55 </Attributes>
56 </Frame>
57 <Frame name="ChorusTinyRaidFrameButton03" inherits="ChorusTinyRaidUnitFrameTemplate" id="3">
58 <Anchors>
59 <Anchor point="BOTTOMLEFT">
60 <Offset>
61 <AbsDimension x="140" y="0"/>
62 </Offset>
63 </Anchor>
64 </Anchors>
65 <Attributes>
66 <Attribute name="unit" type="string" value="raid3"/>
67 </Attributes>
68 </Frame>
69 <Frame name="ChorusTinyRaidFrameButton04" inherits="ChorusTinyRaidUnitFrameTemplate" id="4">
70 <Anchors>
71 <Anchor point="BOTTOMLEFT">
72 <Offset>
73 <AbsDimension x="210" y="0"/>
74 </Offset>
75 </Anchor>
76 </Anchors>
77 <Attributes>
78 <Attribute name="unit" type="string" value="raid4"/>
79 </Attributes>
80 </Frame>
81 <Frame name="ChorusTinyRaidFrameButton05" inherits="ChorusTinyRaidUnitFrameTemplate" id="5">
82 <Anchors>
83 <Anchor point="BOTTOMLEFT">
84 <Offset>
85 <AbsDimension x="280" y="0"/>
86 </Offset>
87 </Anchor>
88 </Anchors>
89 <Attributes>
90 <Attribute name="unit" type="string" value="raid5"/>
91 </Attributes>
92 </Frame>
93 <!-- Group 2. -->
94 <Frame name="ChorusTinyRaidFrameGroupLabel2" hidden="true">
95 <Size>
96 <AbsDimension x="16" y="16"/>
97 </Size>
98 <Anchors>
99 <Anchor point="BOTTOMLEFT">
100 <Offset x="-16" y="22"/>
101 </Anchor>
102 </Anchors>
103 <Layers>
104 <Layer level="OVERLAY">
105 <FontString name="$parentText" inherits="ChorusFontBold13" setAllPoints="true" justifyH="CENTER" justifyV="MIDDLE" text="2"/>
106 </Layer>
107 </Layers>
108 </Frame>
109 <Frame name="ChorusTinyRaidFrameButton06" inherits="ChorusTinyRaidUnitFrameTemplate" id="6">
110 <Anchors>
111 <Anchor point="BOTTOMLEFT">
112 <Offset>
113 <AbsDimension x="0" y="22"/>
114 </Offset>
115 </Anchor>
116 </Anchors>
117 <Attributes>
118 <Attribute name="unit" type="string" value="raid6"/>
119 </Attributes>
120 </Frame>
121 <Frame name="ChorusTinyRaidFrameButton07" inherits="ChorusTinyRaidUnitFrameTemplate" id="7">
122 <Anchors>
123 <Anchor point="BOTTOMLEFT">
124 <Offset>
125 <AbsDimension x="70" y="22"/>
126 </Offset>
127 </Anchor>
128 </Anchors>
129 <Attributes>
130 <Attribute name="unit" type="string" value="raid7"/>
131 </Attributes>
132 </Frame>
133 <Frame name="ChorusTinyRaidFrameButton08" inherits="ChorusTinyRaidUnitFrameTemplate" id="8">
134 <Anchors>
135 <Anchor point="BOTTOMLEFT">
136 <Offset>
137 <AbsDimension x="140" y="22"/>
138 </Offset>
139 </Anchor>
140 </Anchors>
141 <Attributes>
142 <Attribute name="unit" type="string" value="raid8"/>
143 </Attributes>
144 </Frame>
145 <Frame name="ChorusTinyRaidFrameButton09" inherits="ChorusTinyRaidUnitFrameTemplate" id="9">
146 <Anchors>
147 <Anchor point="BOTTOMLEFT">
148 <Offset>
149 <AbsDimension x="210" y="22"/>
150 </Offset>
151 </Anchor>
152 </Anchors>
153 <Attributes>
154 <Attribute name="unit" type="string" value="raid9"/>
155 </Attributes>
156 </Frame>
157 <Frame name="ChorusTinyRaidFrameButton10" inherits="ChorusTinyRaidUnitFrameTemplate" id="10">
158 <Anchors>
159 <Anchor point="BOTTOMLEFT">
160 <Offset>
161 <AbsDimension x="280" y="22"/>
162 </Offset>
163 </Anchor>
164 </Anchors>
165 <Attributes>
166 <Attribute name="unit" type="string" value="raid10"/>
167 </Attributes>
168 </Frame>
169 <!-- Group 3. -->
170 <Frame name="ChorusTinyRaidFrameGroupLabel3" hidden="true">
171 <Size>
172 <AbsDimension x="16" y="16"/>
173 </Size>
174 <Anchors>
175 <Anchor point="BOTTOMLEFT">
176 <Offset x="-16" y="44"/>
177 </Anchor>
178 </Anchors>
179 <Layers>
180 <Layer level="OVERLAY">
181 <FontString name="$parentText" inherits="ChorusFontBold13" setAllPoints="true" justifyH="CENTER" justifyV="MIDDLE" text="3"/>
182 </Layer>
183 </Layers>
184 </Frame>
185 <Frame name="ChorusTinyRaidFrameButton11" inherits="ChorusTinyRaidUnitFrameTemplate" id="11">
186 <Anchors>
187 <Anchor point="BOTTOMLEFT">
188 <Offset>
189 <AbsDimension x="0" y="44"/>
190 </Offset>
191 </Anchor>
192 </Anchors>
193 <Attributes>
194 <Attribute name="unit" type="string" value="raid11"/>
195 </Attributes>
196 </Frame>
197 <Frame name="ChorusTinyRaidFrameButton12" inherits="ChorusTinyRaidUnitFrameTemplate" id="12">
198 <Anchors>
199 <Anchor point="BOTTOMLEFT">
200 <Offset>
201 <AbsDimension x="70" y="44"/>
202 </Offset>
203 </Anchor>
204 </Anchors>
205 <Attributes>
206 <Attribute name="unit" type="string" value="raid12"/>
207 </Attributes>
208 </Frame>
209 <Frame name="ChorusTinyRaidFrameButton13" inherits="ChorusTinyRaidUnitFrameTemplate" id="13">
210 <Anchors>
211 <Anchor point="BOTTOMLEFT">
212 <Offset>
213 <AbsDimension x="140" y="44"/>
214 </Offset>
215 </Anchor>
216 </Anchors>
217 <Attributes>
218 <Attribute name="unit" type="string" value="raid13"/>
219 </Attributes>
220 </Frame>
221 <Frame name="ChorusTinyRaidFrameButton14" inherits="ChorusTinyRaidUnitFrameTemplate" id="14">
222 <Anchors>
223 <Anchor point="BOTTOMLEFT">
224 <Offset>
225 <AbsDimension x="210" y="44"/>
226 </Offset>
227 </Anchor>
228 </Anchors>
229 <Attributes>
230 <Attribute name="unit" type="string" value="raid14"/>
231 </Attributes>
232 </Frame>
233 <Frame name="ChorusTinyRaidFrameButton15" inherits="ChorusTinyRaidUnitFrameTemplate" id="15">
234 <Anchors>
235 <Anchor point="BOTTOMLEFT">
236 <Offset>
237 <AbsDimension x="280" y="44"/>
238 </Offset>
239 </Anchor>
240 </Anchors>
241 <Attributes>
242 <Attribute name="unit" type="string" value="raid15"/>
243 </Attributes>
244 </Frame>
245 <!-- Group 4. -->
246 <Frame name="ChorusTinyRaidFrameGroupLabel4" hidden="true">
247 <Size>
248 <AbsDimension x="16" y="16"/>
249 </Size>
250 <Anchors>
251 <Anchor point="BOTTOMLEFT">
252 <Offset x="-16" y="66"/>
253 </Anchor>
254 </Anchors>
255 <Layers>
256 <Layer level="OVERLAY">
257 <FontString name="$parentText" inherits="ChorusFontBold13" setAllPoints="true" justifyH="CENTER" justifyV="MIDDLE" text="4"/>
258 </Layer>
259 </Layers>
260 </Frame>
261 <Frame name="ChorusTinyRaidFrameButton16" inherits="ChorusTinyRaidUnitFrameTemplate" id="16">
262 <Anchors>
263 <Anchor point="BOTTOMLEFT">
264 <Offset>
265 <AbsDimension x="0" y="66"/>
266 </Offset>
267 </Anchor>
268 </Anchors>
269 <Attributes>
270 <Attribute name="unit" type="string" value="raid16"/>
271 </Attributes>
272 </Frame>
273 <Frame name="ChorusTinyRaidFrameButton17" inherits="ChorusTinyRaidUnitFrameTemplate" id="17">
274 <Anchors>
275 <Anchor point="BOTTOMLEFT">
276 <Offset>
277 <AbsDimension x="70" y="66"/>
278 </Offset>
279 </Anchor>
280 </Anchors>
281 <Attributes>
282 <Attribute name="unit" type="string" value="raid17"/>
283 </Attributes>
284 </Frame>
285 <Frame name="ChorusTinyRaidFrameButton18" inherits="ChorusTinyRaidUnitFrameTemplate" id="18">
286 <Anchors>
287 <Anchor point="BOTTOMLEFT">
288 <Offset>
289 <AbsDimension x="140" y="66"/>
290 </Offset>
291 </Anchor>
292 </Anchors>
293 <Attributes>
294 <Attribute name="unit" type="string" value="raid18"/>
295 </Attributes>
296 </Frame>
297 <Frame name="ChorusTinyRaidFrameButton19" inherits="ChorusTinyRaidUnitFrameTemplate" id="19">
298 <Anchors>
299 <Anchor point="BOTTOMLEFT">
300 <Offset>
301 <AbsDimension x="210" y="66"/>
302 </Offset>
303 </Anchor>
304 </Anchors>
305 <Attributes>
306 <Attribute name="unit" type="string" value="raid19"/>
307 </Attributes>
308 </Frame>
309 <Frame name="ChorusTinyRaidFrameButton20" inherits="ChorusTinyRaidUnitFrameTemplate" id="20">
310 <Anchors>
311 <Anchor point="BOTTOMLEFT">
312 <Offset>
313 <AbsDimension x="280" y="66"/>
314 </Offset>
315 </Anchor>
316 </Anchors>
317 <Attributes>
318 <Attribute name="unit" type="string" value="raid20"/>
319 </Attributes>
320 </Frame>
321 <!-- Group 5. -->
322 <Frame name="ChorusTinyRaidFrameGroupLabel5" hidden="true">
323 <Size>
324 <AbsDimension x="16" y="16"/>
325 </Size>
326 <Anchors>
327 <Anchor point="BOTTOMLEFT">
328 <Offset x="-16" y="88"/>
329 </Anchor>
330 </Anchors>
331 <Layers>
332 <Layer level="OVERLAY">
333 <FontString name="$parentText" inherits="ChorusFontBold13" setAllPoints="true" justifyH="CENTER" justifyV="MIDDLE" text="5"/>
334 </Layer>
335 </Layers>
336 </Frame>
337 <Frame name="ChorusTinyRaidFrameButton21" inherits="ChorusTinyRaidUnitFrameTemplate" id="21">
338 <Anchors>
339 <Anchor point="BOTTOMLEFT">
340 <Offset>
341 <AbsDimension x="0" y="88"/>
342 </Offset>
343 </Anchor>
344 </Anchors>
345 <Attributes>
346 <Attribute name="unit" type="string" value="raid21"/>
347 </Attributes>
348 </Frame>
349 <Frame name="ChorusTinyRaidFrameButton22" inherits="ChorusTinyRaidUnitFrameTemplate" id="22">
350 <Anchors>
351 <Anchor point="BOTTOMLEFT">
352 <Offset>
353 <AbsDimension x="70" y="88"/>
354 </Offset>
355 </Anchor>
356 </Anchors>
357 <Attributes>
358 <Attribute name="unit" type="string" value="raid22"/>
359 </Attributes>
360 </Frame>
361 <Frame name="ChorusTinyRaidFrameButton23" inherits="ChorusTinyRaidUnitFrameTemplate" id="23">
362 <Anchors>
363 <Anchor point="BOTTOMLEFT">
364 <Offset>
365 <AbsDimension x="140" y="88"/>
366 </Offset>
367 </Anchor>
368 </Anchors>
369 <Attributes>
370 <Attribute name="unit" type="string" value="raid23"/>
371 </Attributes>
372 </Frame>
373 <Frame name="ChorusTinyRaidFrameButton24" inherits="ChorusTinyRaidUnitFrameTemplate" id="24">
374 <Anchors>
375 <Anchor point="BOTTOMLEFT">
376 <Offset>
377 <AbsDimension x="210" y="88"/>
378 </Offset>
379 </Anchor>
380 </Anchors>
381 <Attributes>
382 <Attribute name="unit" type="string" value="raid24"/>
383 </Attributes>
384 </Frame>
385 <Frame name="ChorusTinyRaidFrameButton25" inherits="ChorusTinyRaidUnitFrameTemplate" id="25">
386 <Anchors>
387 <Anchor point="BOTTOMLEFT">
388 <Offset>
389 <AbsDimension x="280" y="88"/>
390 </Offset>
391 </Anchor>
392 </Anchors>
393 <Attributes>
394 <Attribute name="unit" type="string" value="raid25"/>
395 </Attributes>
396 </Frame>
397 <!-- Group 6. -->
398 <Frame name="ChorusTinyRaidFrameGroupLabel6" hidden="true">
399 <Size>
400 <AbsDimension x="16" y="16"/>
401 </Size>
402 <Anchors>
403 <Anchor point="BOTTOMLEFT">
404 <Offset x="-16" y="110"/>
405 </Anchor>
406 </Anchors>
407 <Layers>
408 <Layer level="OVERLAY">
409 <FontString name="$parentText" inherits="ChorusFontBold13" setAllPoints="true" justifyH="CENTER" justifyV="MIDDLE" text="6"/>
410 </Layer>
411 </Layers>
412 </Frame>
413 <Frame name="ChorusTinyRaidFrameButton26" inherits="ChorusTinyRaidUnitFrameTemplate" id="26">
414 <Anchors>
415 <Anchor point="BOTTOMLEFT">
416 <Offset>
417 <AbsDimension x="0" y="110"/>
418 </Offset>
419 </Anchor>
420 </Anchors>
421 <Attributes>
422 <Attribute name="unit" type="string" value="raid26"/>
423 </Attributes>
424 </Frame>
425 <Frame name="ChorusTinyRaidFrameButton27" inherits="ChorusTinyRaidUnitFrameTemplate" id="27">
426 <Anchors>
427 <Anchor point="BOTTOMLEFT">
428 <Offset>
429 <AbsDimension x="70" y="110"/>
430 </Offset>
431 </Anchor>
432 </Anchors>
433 <Attributes>
434 <Attribute name="unit" type="string" value="raid27"/>
435 </Attributes>
436 </Frame>
437 <Frame name="ChorusTinyRaidFrameButton28" inherits="ChorusTinyRaidUnitFrameTemplate" id="28">
438 <Anchors>
439 <Anchor point="BOTTOMLEFT">
440 <Offset>
441 <AbsDimension x="140" y="110"/>
442 </Offset>
443 </Anchor>
444 </Anchors>
445 <Attributes>
446 <Attribute name="unit" type="string" value="raid28"/>
447 </Attributes>
448 </Frame>
449 <Frame name="ChorusTinyRaidFrameButton29" inherits="ChorusTinyRaidUnitFrameTemplate" id="29">
450 <Anchors>
451 <Anchor point="BOTTOMLEFT">
452 <Offset>
453 <AbsDimension x="210" y="110"/>
454 </Offset>
455 </Anchor>
456 </Anchors>
457 <Attributes>
458 <Attribute name="unit" type="string" value="raid29"/>
459 </Attributes>
460 </Frame>
461 <Frame name="ChorusTinyRaidFrameButton30" inherits="ChorusTinyRaidUnitFrameTemplate" id="30">
462 <Anchors>
463 <Anchor point="BOTTOMLEFT">
464 <Offset>
465 <AbsDimension x="280" y="110"/>
466 </Offset>
467 </Anchor>
468 </Anchors>
469 <Attributes>
470 <Attribute name="unit" type="string" value="raid30"/>
471 </Attributes>
472 </Frame>
473 <!-- Group 7. -->
474 <Frame name="ChorusTinyRaidFrameGroupLabel7" hidden="true">
475 <Size>
476 <AbsDimension x="16" y="16"/>
477 </Size>
478 <Anchors>
479 <Anchor point="BOTTOMLEFT">
480 <Offset x="-16" y="132"/>
481 </Anchor>
482 </Anchors>
483 <Layers>
484 <Layer level="OVERLAY">
485 <FontString name="$parentText" inherits="ChorusFontBold13" setAllPoints="true" justifyH="CENTER" justifyV="MIDDLE" text="7"/>
486 </Layer>
487 </Layers>
488 </Frame>
489 <Frame name="ChorusTinyRaidFrameButton31" inherits="ChorusTinyRaidUnitFrameTemplate" id="31">
490 <Anchors>
491 <Anchor point="BOTTOMLEFT">
492 <Offset>
493 <AbsDimension x="0" y="132"/>
494 </Offset>
495 </Anchor>
496 </Anchors>
497 <Attributes>
498 <Attribute name="unit" type="string" value="raid31"/>
499 </Attributes>
500 </Frame>
501 <Frame name="ChorusTinyRaidFrameButton32" inherits="ChorusTinyRaidUnitFrameTemplate" id="32">
502 <Anchors>
503 <Anchor point="BOTTOMLEFT">
504 <Offset>
505 <AbsDimension x="70" y="132"/>
506 </Offset>
507 </Anchor>
508 </Anchors>
509 <Attributes>
510 <Attribute name="unit" type="string" value="raid32"/>
511 </Attributes>
512 </Frame>
513 <Frame name="ChorusTinyRaidFrameButton33" inherits="ChorusTinyRaidUnitFrameTemplate" id="33">
514 <Anchors>
515 <Anchor point="BOTTOMLEFT">
516 <Offset>
517 <AbsDimension x="140" y="132"/>
518 </Offset>
519 </Anchor>
520 </Anchors>
521 <Attributes>
522 <Attribute name="unit" type="string" value="raid33"/>
523 </Attributes>
524 </Frame>
525 <Frame name="ChorusTinyRaidFrameButton34" inherits="ChorusTinyRaidUnitFrameTemplate" id="34">
526 <Anchors>
527 <Anchor point="BOTTOMLEFT">
528 <Offset>
529 <AbsDimension x="210" y="132"/>
530 </Offset>
531 </Anchor>
532 </Anchors>
533 <Attributes>
534 <Attribute name="unit" type="string" value="raid34"/>
535 </Attributes>
536 </Frame>
537 <Frame name="ChorusTinyRaidFrameButton35" inherits="ChorusTinyRaidUnitFrameTemplate" id="35">
538 <Anchors>
539 <Anchor point="BOTTOMLEFT">
540 <Offset>
541 <AbsDimension x="280" y="132"/>
542 </Offset>
543 </Anchor>
544 </Anchors>
545 <Attributes>
546 <Attribute name="unit" type="string" value="raid35"/>
547 </Attributes>
548 </Frame>
549 <!-- Group 8. -->
550 <Frame name="ChorusTinyRaidFrameGroupLabel8" hidden="true">
551 <Size>
552 <AbsDimension x="16" y="16"/>
553 </Size>
554 <Anchors>
555 <Anchor point="BOTTOMLEFT">
556 <Offset x="-16" y="154"/>
557 </Anchor>
558 </Anchors>
559 <Layers>
560 <Layer level="OVERLAY">
561 <FontString name="$parentText" inherits="ChorusFontBold13" setAllPoints="true" justifyH="CENTER" justifyV="MIDDLE" text="8"/>
562 </Layer>
563 </Layers>
564 </Frame>
565 <Frame name="ChorusTinyRaidFrameButton36" inherits="ChorusTinyRaidUnitFrameTemplate" id="36">
566 <Anchors>
567 <Anchor point="BOTTOMLEFT">
568 <Offset>
569 <AbsDimension x="0" y="154"/>
570 </Offset>
571 </Anchor>
572 </Anchors>
573 <Attributes>
574 <Attribute name="unit" type="string" value="raid36"/>
575 </Attributes>
576 </Frame>
577 <Frame name="ChorusTinyRaidFrameButton37" inherits="ChorusTinyRaidUnitFrameTemplate" id="37">
578 <Anchors>
579 <Anchor point="BOTTOMLEFT">
580 <Offset>
581 <AbsDimension x="70" y="154"/>
582 </Offset>
583 </Anchor>
584 </Anchors>
585 <Attributes>
586 <Attribute name="unit" type="string" value="raid37"/>
587 </Attributes>
588 </Frame>
589 <Frame name="ChorusTinyRaidFrameButton38" inherits="ChorusTinyRaidUnitFrameTemplate" id="38">
590 <Anchors>
591 <Anchor point="BOTTOMLEFT">
592 <Offset>
593 <AbsDimension x="140" y="154"/>
594 </Offset>
595 </Anchor>
596 </Anchors>
597 <Attributes>
598 <Attribute name="unit" type="string" value="raid38"/>
599 </Attributes>
600 </Frame>
601 <Frame name="ChorusTinyRaidFrameButton39" inherits="ChorusTinyRaidUnitFrameTemplate" id="39">
602 <Anchors>
603 <Anchor point="BOTTOMLEFT">
604 <Offset>
605 <AbsDimension x="210" y="154"/>
606 </Offset>
607 </Anchor>
608 </Anchors>
609 <Attributes>
610 <Attribute name="unit" type="string" value="raid39"/>
611 </Attributes>
612 </Frame>
613 <Frame name="ChorusTinyRaidFrameButton40" inherits="ChorusTinyRaidUnitFrameTemplate" id="40">
614 <Anchors>
615 <Anchor point="BOTTOMLEFT">
616 <Offset>
617 <AbsDimension x="280" y="154"/>
618 </Offset>
619 </Anchor>
620 </Anchors>
621 <Attributes>
622 <Attribute name="unit" type="string" value="raid40"/>
623 </Attributes>
624 </Frame>
625 </Frames>
4 <Frame name="ChorusTinyRaidFrame" inherits="ChorusRaidFrameTemplate">
5 <Scripts>
6 <OnLoad>Chorus.raidTinyFrameMain(self);</OnLoad>
7 </Scripts>
626 8 </Frame> </Frame>
627 9 </Ui> </Ui>
Hints:
Before first commit, do not forget to setup your git environment:
git config --global user.name "your_name_here"
git config --global user.email "your@email_here"

Clone this repository using HTTP(S):
git clone https://rocketgit.com/user/vrtc/chorus

Clone this repository using ssh (do not forget to upload a key first):
git clone ssh://rocketgit@ssh.rocketgit.com/user/vrtc/chorus

Clone this repository using git:
git clone git://git.rocketgit.com/user/vrtc/chorus

You are allowed to anonymously push to this repository.
This means that your pushed commits will automatically be transformed into a merge request:
... clone the repository ...
... make some changes and some commits ...
git push origin main