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)
feat!: upgrade configuration frame 57d1e9d2578db3650d38cb53c98f4a83e0cc8aeb Vladyslav Bondarenko 2025-03-07 14:17:45
feat!: replace group toggle mechanism 45132b0656022a4c4c0aa7a042fabccf5282a764 Vladyslav Bondarenko 2025-03-06 21:44:08
feat: simplify group frame selection 54fc78a2911abdefcf46e024cfdb6b5ec6be4a06 Vladyslav Bondarenko 2025-03-06 00:52:30
feat!: add secure raid frame toggle d130e6aeaa257ba6780c0921603967637dbf6f3f Vladyslav Bondarenko 2025-03-04 01:05:13
fix!: setup first configuraiton correctly 3ec860fe8d74ccff36c2eac206de0db98e210885 Vladyslav Bondarenko 2025-03-04 00:56:54
fix: show background correctly for all raid frames 1062919d1fc2420e4030ab6d04d26f845c49c71f Vladyslav Bondarenko 2025-03-03 21:43:59
doc: add link to release page 71cbeae09f116f2ee45fc4a7b5633c5e11a8b977 Vladyslav Bondarenko 2025-03-03 12:38:28
fix: unit class power status bar 22531fe524a0864eee9a2eb81a52e538810acdef Vladyslav Bondarenko 2025-03-02 09:50:43
feat: add instruction to build from any directory 31d7bcc6785190187fef4847586a75a60b8e678a Vladyslav Bondarenko 2025-03-01 23:32:55
feat: update build instructions bed1c76a425768336b76e98bb6ca709d2574021e Vladyslav Bondarenko 2025-03-01 23:09:16
feat!: add working druid power frame a874279e4ac6c92d88650493cdf9bb0c9be37bc8 Vladyslav Bondarenko 2025-03-01 20:54:20
feat!: add mechanism for class specific power bars 7d514689e77c6cc7eaa889d3dda8db2ddd419e0d Vladyslav Bondarenko 2025-03-01 19:08:45
feat: add different unit power type templates for 86979977d4d9946bf6bff3d595640c91ecf7289b Vladyslav Bondarenko 2025-03-01 16:34:23
fix: use builtin status bar color method 0265bfe7c193fc7588146f47529025408873cb4d Vladyslav Bondarenko 2025-03-01 16:33:48
fix: change power bar color correctly d2b3ff5918366228cfc8747074c15d8c6ecc7a96 Vladyslav Bondarenko 2025-03-01 14:38:05
feat: add custom combo points frame d374739a80a7bec053385f01c9be06517a506af6 Vladyslav Bondarenko 2025-03-01 14:25:47
fix: satisfy static analysis cf209fb2c502ef491bec62f331eb2e63d95dd28b Vladyslav Bondarenko 2025-02-26 21:11:19
fix!: tiny health status bar shrinks correctly f1e6ab44663a62b17995eec3feb43709863dd92f Vladyslav Bondarenko 2025-02-26 19:52:43
feat!: replace deprecated unit status bars dd8056c5ba236667f8dd340f8e74e837757bed80 Vladyslav Bondarenko 2025-02-26 19:26:47
feat!: add new unit health display 6b2b9d93bdda1f5f8284b37d2bbe21e35387eedd Vladyslav Bondarenko 2025-02-26 15:17:19
Commit 57d1e9d2578db3650d38cb53c98f4a83e0cc8aeb - feat!: upgrade configuration frame
Apply the new group frame visibility system for user configuration
options.

Next step is to persist configuration options with saved variables.
Author: Vladyslav Bondarenko
Author date (UTC): 2025-03-07 14:17
Committer name: Vladyslav Bondarenko
Committer date (UTC): 2025-03-07 14:17
Parent(s): 45132b0656022a4c4c0aa7a042fabccf5282a764
Signer:
Signing key: EFF9624877D25D02
Signing status: E
Tree: 14d978837d2fd0a7fb49d42415bd431fdbc075bc
File Lines added Lines deleted
conf/lua-check/luacheckrc.lua 13 0
conf/make/src.mk 4 2
src/Chorus.xml 1 0
src/ChorusConfFrame.lua 37 0
src/ChorusConfFrame.xml 95 35
src/ChorusPartyFrame.lua 3 0
src/ChorusPartyFrame.xml 1 1
src/ChorusRaidFrameTemplate.lua 10 0
src/ChorusSoloFrame.lua 1 0
src/ChorusVisibilitySecureHandler.lua 33 0
src/ChorusVisibilitySecureHandler.xml 5 0
File conf/lua-check/luacheckrc.lua changed (mode: 100644) (index 056f577..a766d73)
... ... stds.chorus = {
200 200 'ChorusSoloFrame', 'ChorusSoloFrame',
201 201 'ChorusTargetFrame', 'ChorusTargetFrame',
202 202 'ChorusTargetFrameHealthStatusBar', 'ChorusTargetFrameHealthStatusBar',
203 'ChorusVisibilitySecureHandler',
203 204 }, },
204 205 globals = { globals = {
205 206 --[[ TODO Add script that populates created frames at runtime --[[ TODO Add script that populates created frames at runtime
206 207 --and saves the variables to a file, to make this name set --and saves the variables to a file, to make this name set
207 208 --exact. ]]-- --exact. ]]--
209 'CHORUS_AUTO_TEXT',
208 210 'CHORUS_CONF_FRAME_SUB_TEXT', 'CHORUS_CONF_FRAME_SUB_TEXT',
211 'CHORUS_PARTY_TEXT',
212 'CHORUS_RAID_LARGE_TEXT',
213 'CHORUS_RAID_SMALL_TEXT',
214 'CHORUS_RAID_TINY_TEXT',
215 'CHORUS_SHOW_ALWAYS_TEXT',
216 'CHORUS_SHOW_NEVER_TEXT',
217 'CHORUS_SOLO_TEXT',
218 'CHORUS_TOGGLE_TEXT',
219 'CHORUS_VISIBILITY_AUTO',
220 'CHORUS_VISIBILITY_SHOW_ALWAYS',
221 'CHORUS_VISIBILITY_SHOW_NEVER',
209 222 'Chorus', 'Chorus',
210 223 'ChorusAuraWeightMap', 'ChorusAuraWeightMap',
211 224 'ChorusConf', 'ChorusConf',
File conf/make/src.mk changed (mode: 100644) (index 99ca29f..23bca2a)
... ... ${srcdir}src/ChorusComboPointsStatusBarTemplate.lua \
17 17 ${srcdir}src/ChorusConfFrame.lua \ ${srcdir}src/ChorusConfFrame.lua \
18 18 ${srcdir}src/ChorusFrame.lua \ ${srcdir}src/ChorusFrame.lua \
19 19 ${srcdir}src/ChorusGroupFrame.lua \ ${srcdir}src/ChorusGroupFrame.lua \
20 ${srcdir}src/ChorusGroupToggleButtonTemplate.lua \
20 21 ${srcdir}src/ChorusPartyFrame.lua \ ${srcdir}src/ChorusPartyFrame.lua \
21 22 ${srcdir}src/ChorusPetFrameTemplate.lua \ ${srcdir}src/ChorusPetFrameTemplate.lua \
22 23 ${srcdir}src/ChorusRaidFrameTemplate.lua \ ${srcdir}src/ChorusRaidFrameTemplate.lua \
 
... ... ${srcdir}src/ChorusUnitHealthStatusBarTemplate.lua \
38 39 ${srcdir}src/ChorusUnitLevelFrameTemplate.lua \ ${srcdir}src/ChorusUnitLevelFrameTemplate.lua \
39 40 ${srcdir}src/ChorusUnitNameFrameTemplate.lua \ ${srcdir}src/ChorusUnitNameFrameTemplate.lua \
40 41 ${srcdir}src/ChorusUnitPowerStatusBarTemplate.lua \ ${srcdir}src/ChorusUnitPowerStatusBarTemplate.lua \
41 ${srcdir}src/ChorusGroupToggleButtonTemplate.lua \
42 ${srcdir}src/ChorusVisibilitySecureHandler.lua \
42 43 ${srcdir}src/local.lua ${srcdir}src/local.lua
43 44
44 45 XMLFILES = \ XMLFILES = \
 
... ... ${srcdir}src/ChorusFocusFrame.xml \
55 56 ${srcdir}src/ChorusFont.xml \ ${srcdir}src/ChorusFont.xml \
56 57 ${srcdir}src/ChorusFrame.xml \ ${srcdir}src/ChorusFrame.xml \
57 58 ${srcdir}src/ChorusGroupFrame.xml \ ${srcdir}src/ChorusGroupFrame.xml \
59 ${srcdir}src/ChorusGroupToggleButtonTemplate.xml \
58 60 ${srcdir}src/ChorusHugeUnitFrameTemplate.xml \ ${srcdir}src/ChorusHugeUnitFrameTemplate.xml \
59 61 ${srcdir}src/ChorusLargeRaidFrame.xml \ ${srcdir}src/ChorusLargeRaidFrame.xml \
60 62 ${srcdir}src/ChorusLargeUnitFrameTemplate.xml \ ${srcdir}src/ChorusLargeUnitFrameTemplate.xml \
 
... ... ${srcdir}src/ChorusUnitHealthStatusBarTemplate.xml \
84 86 ${srcdir}src/ChorusUnitLevelFrameTemplate.xml \ ${srcdir}src/ChorusUnitLevelFrameTemplate.xml \
85 87 ${srcdir}src/ChorusUnitNameFrameTemplate.xml \ ${srcdir}src/ChorusUnitNameFrameTemplate.xml \
86 88 ${srcdir}src/ChorusUnitPowerFrameTemplate.xml \ ${srcdir}src/ChorusUnitPowerFrameTemplate.xml \
87 ${srcdir}src/ChorusGroupToggleButtonTemplate.xml \
89 ${srcdir}src/ChorusVisibilitySecureHandler.xml \
88 90 ${srcdir}src/ChorusUnitPowerStatusBarTemplate.xml ${srcdir}src/ChorusUnitPowerStatusBarTemplate.xml
File src/Chorus.xml changed (mode: 100644) (index 50ad855..f5176ea)
25 25 <Include file="ChorusUnitAffectingCombatFrameTemplate.xml"/> <Include file="ChorusUnitAffectingCombatFrameTemplate.xml"/>
26 26 <Include file="ChorusUnitGroupRoleFrameTemplate.xml"/> <Include file="ChorusUnitGroupRoleFrameTemplate.xml"/>
27 27 <Include file="ChorusUnitButtonTemplate.xml"/> <Include file="ChorusUnitButtonTemplate.xml"/>
28 <Include file="ChorusVisibilitySecureHandler.xml"/>
28 29 <Include file="ChorusUnitFrameTemplate.xml"/> <Include file="ChorusUnitFrameTemplate.xml"/>
29 30 <Include file="ChorusUnitBackgroundTemplate.xml"/> <Include file="ChorusUnitBackgroundTemplate.xml"/>
30 31 <Include file="ChorusUnitBackdropTemplate.xml"/> <Include file="ChorusUnitBackdropTemplate.xml"/>
File src/ChorusConfFrame.lua changed (mode: 100644) (index 3cda1fa..0d2927a)
... ... CHORUS_CONF_FRAME_SUB_TEXT = 'To drag and move Chorus frames with your mouse, '
15 15 'move the frames as required. ' .. 'move the frames as required. ' ..
16 16 "\n\nWARNING: Configuration can only be done out of combat." "\n\nWARNING: Configuration can only be done out of combat."
17 17
18 CHORUS_AUTO_TEXT = 'Auto'
19 CHORUS_PARTY_TEXT = 'Party'
20 CHORUS_RAID_LARGE_TEXT = 'Raid large'
21 CHORUS_RAID_SMALL_TEXT = 'Raid small'
22 CHORUS_RAID_TINY_TEXT = 'Raid tiny'
23 CHORUS_SHOW_ALWAYS_TEXT = 'Show always'
24 CHORUS_SHOW_NEVER_TEXT = 'Show never'
25 CHORUS_SOLO_TEXT = 'Solo'
26 CHORUS_TOGGLE_TEXT = 'Toggle'
27
18 28 local CHORUS_DEFAULT_PROFILE_NAME = 'main' local CHORUS_DEFAULT_PROFILE_NAME = 'main'
19 29
20 30 local movableFrameList = { local movableFrameList = {
 
... ... local movableFrameList = {
25 35 ChorusLargeRaidFrame, ChorusLargeRaidFrame,
26 36 } }
27 37
38 function Chorus.confVisibilityFrameMain(visibilityFrame, destinationFrame, someTitle)
39 assert(visibilityFrame ~= nil)
40
41 assert(destinationFrame ~= nil)
42 assert(select(2, destinationFrame:IsProtected()))
43
44 local button1 = visibilityFrame.button1
45 local button2 = visibilityFrame.button2
46 local button3 = visibilityFrame.button3
47 local button4 = visibilityFrame.button4
48
49 assert(button1 ~= nil)
50 assert(button2 ~= nil)
51 assert(button3 ~= nil)
52 assert(button4 ~= nil)
53
54 button1:SetAttribute('attribute-frame', destinationFrame)
55 button2:SetAttribute('attribute-frame', destinationFrame)
56 button3:SetAttribute('attribute-frame', destinationFrame)
57 Chorus.toggleMain(button4, destinationFrame)
58
59 local label = visibilityFrame.text
60 assert(label ~= nil)
61 someTitle = someTitle or destinationFrame:GetName()
62 label:SetText(someTitle)
63 end
64
28 65 --[[-- --[[--
29 66 Allow the position of the given frame to be set by the user clicking and Allow the position of the given frame to be set by the user clicking and
30 67 dragging their mouse on the frame. dragging their mouse on the frame.
File src/ChorusConfFrame.xml changed (mode: 100644) (index 93503a8..40b2023)
1 1 <?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
2 2 <Ui xmlns="http://www.blizzard.com/wow/ui/"> <Ui xmlns="http://www.blizzard.com/wow/ui/">
3 3 <Script file="ChorusConfFrame.lua"/> <Script file="ChorusConfFrame.lua"/>
4 <Button name="ChorusConfVisibilityButtonTemplate" inherits="UIPanelButtonTemplate,SecureActionButtonTemplate" text="DEFAULT" virtual="true">
5 <Size>
6 <AbsDimension x="100" y="24"/>
7 </Size>
8 <Attributes>
9 <!-- Set `attribute-frame` programmatically. -->
10 <!--<Attribute name="attribute-frame" type="frame" value="ChorusPartyFrame"/>-->
11 <Attribute name="attribute-name" type="string" value="chorus-visibility"/>
12 <Attribute name="attribute-value" type="number" value="1"/>
13 <Attribute name="type" type="string" value="attribute"/>
14 </Attributes>
15 </Button>
16 <Frame name="ChorusConfVisibilityFrameTemplate" virtual="true">
17 <Size>
18 <AbsDimension x="400" y="36"/>
19 </Size>
20 <Layers>
21 <Layer level="OVERLAY">
22 <FontString name="$parentText" inherits="GameFontNormal" justifyH="CENTER" justifyV="TOP" text="UNKNOWN" setAllPoints="true" parentKey="text"/>
23 </Layer>
24 </Layers>
25 <Frames>
26 <Button name="$parentButton1" inherits="ChorusConfVisibilityButtonTemplate" text="CHORUS_SHOW_NEVER_TEXT" parentKey="button1">
27 <Anchors>
28 <Anchor point="BOTTOMLEFT">
29 <Offset>
30 <AbsDimension x="0" y="0"/>
31 </Offset>
32 </Anchor>
33 </Anchors>
34 <Attributes>
35 <Attribute name="attribute-value" type="number" value="0"/>
36 </Attributes>
37 </Button>
38 <Button name="$parentButton2" inherits="ChorusConfVisibilityButtonTemplate" text="CHORUS_SHOW_ALWAYS_TEXT" parentKey="button2">
39 <Anchors>
40 <Anchor point="BOTTOMLEFT" relativeTo="$parentButton1" relativePoint="BOTTOMRIGHT">
41 <Offset>
42 <AbsDimension x="0" y="0"/>
43 </Offset>
44 </Anchor>
45 </Anchors>
46 <Attributes>
47 <Attribute name="attribute-value" type="number" value="2"/>
48 </Attributes>
49 </Button>
50 <Button name="$parentButton3" inherits="ChorusConfVisibilityButtonTemplate" text="CHORUS_AUTO_TEXT" parentKey="button3">
51 <Anchors>
52 <Anchor point="BOTTOMLEFT" relativeTo="$parentButton2" relativePoint="BOTTOMRIGHT">
53 <Offset>
54 <AbsDimension x="0" y="0"/>
55 </Offset>
56 </Anchor>
57 </Anchors>
58 <Attributes>
59 <Attribute name="attribute-value" type="number" value="1"/>
60 </Attributes>
61 </Button>
62 <Button name="$parentButton4" inherits="UIPanelButtonTemplate" text="CHORUS_TOGGLE_TEXT" parentKey="button4" protected="true">
63 <Size>
64 <AbsDimension x="100" y="24"/>
65 </Size>
66 <Anchors>
67 <Anchor point="BOTTOMLEFT" relativeTo="$parentButton3" relativePoint="BOTTOMRIGHT">
68 <Offset>
69 <AbsDimension x="0" y="0"/>
70 </Offset>
71 </Anchor>
72 </Anchors>
73 </Button>
74 </Frames>
75 <!--<Scripts>
76 <OnLoad>Chorus.confVisibilityFrameMain(self, ChorusPartyFrame);</OnLoad>
77 </Scripts>-->
78 </Frame>
4 79 <Frame name="ChorusConfFrame" parent="InterfaceOptionsFramePanelContainer"> <Frame name="ChorusConfFrame" parent="InterfaceOptionsFramePanelContainer">
5 80 <Size> <Size>
6 81 <AbsDimension x="640" y="480"/> <AbsDimension x="640" y="480"/>
 
53 128 </Scripts> </Scripts>
54 129 </CheckButton> </CheckButton>
55 130 <!-- Visibility toggle buttons. --> <!-- Visibility toggle buttons. -->
56 <Button name="ChorusConfSoloToggleButton" inherits="UIPanelButtonTemplate,ChorusGroupToggleButtonTemplate" text="Toggle Solo">
57 <Size>
58 <AbsDimension x="128" y="22"/>
59 </Size>
131 <Frame name="ChorusConfVisibilitySoloFrame" inherits="ChorusConfVisibilityFrameTemplate">
60 132 <Anchors> <Anchors>
61 133 <Anchor point="BOTTOMLEFT"> <Anchor point="BOTTOMLEFT">
62 134 <Offset> <Offset>
63 <AbsDimension x="48" y="30"/>
135 <AbsDimension x="6" y="156"/>
64 136 </Offset> </Offset>
65 137 </Anchor> </Anchor>
66 138 </Anchors> </Anchors>
67 139 <Scripts> <Scripts>
68 <OnLoad>Chorus.toggleMain(self, ChorusSoloFrame);</OnLoad>
140 <OnLoad>Chorus.confVisibilityFrameMain(self, ChorusSoloFrame, CHORUS_SOLO_TEXT);</OnLoad>
69 141 </Scripts> </Scripts>
70 </Button>
71 <Button name="ChorusConfPartyToggleButton" inherits="UIPanelButtonTemplate,ChorusGroupToggleButtonTemplate" text="Toggle Party">
72 <Size>
73 <AbsDimension x="128" y="22"/>
74 </Size>
142 </Frame>
143 <Frame name="ChorusConfVisibilityRaidTinyFrame" inherits="ChorusConfVisibilityFrameTemplate">
75 144 <Anchors> <Anchors>
76 145 <Anchor point="BOTTOMLEFT"> <Anchor point="BOTTOMLEFT">
77 146 <Offset> <Offset>
78 <AbsDimension x="48" y="60"/>
147 <AbsDimension x="6" y="120"/>
79 148 </Offset> </Offset>
80 149 </Anchor> </Anchor>
81 150 </Anchors> </Anchors>
82 151 <Scripts> <Scripts>
83 <OnLoad>Chorus.groupToggleMain(self, ChorusPartyFrame);</OnLoad>
152 <OnLoad>Chorus.confVisibilityFrameMain(self, ChorusTinyRaidFrame, CHORUS_RAID_TINY_TEXT);</OnLoad>
84 153 </Scripts> </Scripts>
85 </Button>
86 <Button name="ChorusConfTinyRaidToggleButton" inherits="UIPanelButtonTemplate,ChorusGroupToggleButtonTemplate" text="Toggle Tiny Raid">
87 <Size>
88 <AbsDimension x="128" y="22"/>
89 </Size>
154 </Frame>
155 <Frame name="ChorusConfVisibilityRaidSmallFrame" inherits="ChorusConfVisibilityFrameTemplate">
90 156 <Anchors> <Anchors>
91 157 <Anchor point="BOTTOMLEFT"> <Anchor point="BOTTOMLEFT">
92 158 <Offset> <Offset>
93 <AbsDimension x="48" y="90"/>
159 <AbsDimension x="6" y="84"/>
94 160 </Offset> </Offset>
95 161 </Anchor> </Anchor>
96 162 </Anchors> </Anchors>
97 163 <Scripts> <Scripts>
98 <OnLoad>Chorus.groupToggleMain(self, ChorusTinyRaidFrame);</OnLoad>
164 <OnLoad>Chorus.confVisibilityFrameMain(self, ChorusSmallRaidFrame, CHORUS_RAID_SMALL_TEXT);</OnLoad>
99 165 </Scripts> </Scripts>
100 </Button>
101 <Button name="ChorusConfSmallRaidToggleButton" inherits="UIPanelButtonTemplate,ChorusGroupToggleButtonTemplate" text="Toggle Small Raid">
102 <Size>
103 <AbsDimension x="128" y="22"/>
104 </Size>
166 </Frame>
167 <Frame name="ChorusConfVisibilityRaidLargeFrame" inherits="ChorusConfVisibilityFrameTemplate">
105 168 <Anchors> <Anchors>
106 169 <Anchor point="BOTTOMLEFT"> <Anchor point="BOTTOMLEFT">
107 170 <Offset> <Offset>
108 <AbsDimension x="48" y="120"/>
171 <AbsDimension x="6" y="48"/>
109 172 </Offset> </Offset>
110 173 </Anchor> </Anchor>
111 174 </Anchors> </Anchors>
112 175 <Scripts> <Scripts>
113 <OnLoad>Chorus.groupToggleMain(self, ChorusSmallRaidFrame);</OnLoad>
176 <OnLoad>Chorus.confVisibilityFrameMain(self, ChorusLargeRaidFrame, CHORUS_RAID_LARGE_TEXT);</OnLoad>
114 177 </Scripts> </Scripts>
115 </Button>
116 <Button name="ChorusConfLargeRaidToggleButton" inherits="UIPanelButtonTemplate,ChorusGroupToggleButtonTemplate" text="Toggle Large Raid">
117 <Size>
118 <AbsDimension x="128" y="22"/>
119 </Size>
178 </Frame>
179 <Frame name="ChorusConfVisibilityPartyFrame" inherits="ChorusConfVisibilityFrameTemplate">
120 180 <Anchors> <Anchors>
121 181 <Anchor point="BOTTOMLEFT"> <Anchor point="BOTTOMLEFT">
122 182 <Offset> <Offset>
123 <AbsDimension x="48" y="150"/>
183 <AbsDimension x="6" y="12"/>
124 184 </Offset> </Offset>
125 185 </Anchor> </Anchor>
126 186 </Anchors> </Anchors>
127 187 <Scripts> <Scripts>
128 <OnLoad>Chorus.groupToggleMain(self, ChorusLargeRaidFrame);</OnLoad>
188 <OnLoad>Chorus.confVisibilityFrameMain(self, ChorusPartyFrame, CHORUS_PARTY_TEXT);</OnLoad>
129 189 </Scripts> </Scripts>
130 </Button>
190 </Frame>
131 191 </Frames> </Frames>
132 192 <Scripts> <Scripts>
133 193 <OnLoad>Chorus.confFrameMain(self);</OnLoad> <OnLoad>Chorus.confFrameMain(self);</OnLoad>
File src/ChorusPartyFrame.lua changed (mode: 100644) (index f196a39..178ecd1)
... ... local SecureButton_GetUnit = SecureButton_GetUnit
6 6
7 7 local Chorus = Chorus local Chorus = Chorus
8 8
9 local visibilitySecureHandlerApply = Chorus.visibilitySecureHandlerApply
10
9 11 --[[-- --[[--
10 12 Given valid player unit designation, infer from it corresponding pet and target unit designations. Given valid player unit designation, infer from it corresponding pet and target unit designations.
11 13
 
... ... Logic to toggle the frame is handled in a separate frame, that is
103 105 ]] ]]
104 106 function Chorus.partyFrameMain(self) function Chorus.partyFrameMain(self)
105 107 assert(self ~= nil) assert(self ~= nil)
108 visibilitySecureHandlerApply(self)
106 109 end end
File src/ChorusPartyFrame.xml changed (mode: 100644) (index d7c7b14..2f59f61)
13 13 </Frames> </Frames>
14 14 </Frame> </Frame>
15 15 <Frame name="ChorusPartyTOTUnitFrameTemplate" inherits="ChorusTinyUnitFrameTemplate,ChorusTOTUnitFrameTemplate" virtual="true"/> <Frame name="ChorusPartyTOTUnitFrameTemplate" inherits="ChorusTinyUnitFrameTemplate,ChorusTOTUnitFrameTemplate" virtual="true"/>
16 <Frame name="ChorusPartyFrame">
16 <Frame name="ChorusPartyFrame" protected="true">
17 17 <Size> <Size>
18 18 <AbsDimension x="650" y="140"/> <AbsDimension x="650" y="140"/>
19 19 </Size> </Size>
File src/ChorusRaidFrameTemplate.lua changed (mode: 100644) (index e70bb32..573ca95)
4 4
5 5 local Chorus = Chorus local Chorus = Chorus
6 6
7 local visibilitySecureHandlerApply = Chorus.visibilitySecureHandlerApply
8
7 9 function Chorus.raidFrameButtonFactory(raidFrame, raidButtonTemplate, buttonWidth, buttonHeight) function Chorus.raidFrameButtonFactory(raidFrame, raidButtonTemplate, buttonWidth, buttonHeight)
8 10 assert(raidFrame ~= nil) assert(raidFrame ~= nil)
9 11
 
... ... function Chorus.raidFrameButtonFactory(raidFrame, raidButtonTemplate, buttonWidt
65 67 end end
66 68 end end
67 69
70 local function raidFrameMain(raidFrame)
71 assert(raidFrame ~= nil)
72 visibilitySecureHandlerApply(raidFrame)
73 end
68 74
69 75 function Chorus.raidTinyFrameMain(raidFrame) function Chorus.raidTinyFrameMain(raidFrame)
76 raidFrameMain(raidFrame)
70 77 Chorus.raidFrameButtonFactory(raidFrame, 'ChorusTinyRaidUnitFrameTemplate') Chorus.raidFrameButtonFactory(raidFrame, 'ChorusTinyRaidUnitFrameTemplate')
71 78 end end
72 79
73 80 function Chorus.raidSmallFrameMain(raidFrame) function Chorus.raidSmallFrameMain(raidFrame)
81 raidFrameMain(raidFrame)
74 82 Chorus.raidFrameButtonFactory(raidFrame, 'ChorusSmallRaidUnitFrameTemplate') Chorus.raidFrameButtonFactory(raidFrame, 'ChorusSmallRaidUnitFrameTemplate')
75 83 end end
76 84
77 85 function Chorus.raidLargeFrameMain(raidFrame) function Chorus.raidLargeFrameMain(raidFrame)
86 raidFrameMain(raidFrame)
78 87 Chorus.raidFrameButtonFactory(raidFrame, 'ChorusLargeRaidUnitFrameTemplate') Chorus.raidFrameButtonFactory(raidFrame, 'ChorusLargeRaidUnitFrameTemplate')
79 88 end end
80 89
81 90 function Chorus.raidHugeFrameMain(raidFrame) function Chorus.raidHugeFrameMain(raidFrame)
91 raidFrameMain(raidFrame)
82 92 Chorus.raidFrameButtonFactory(raidFrame, 'ChorusHugeRaidUnitFrameTemplate') Chorus.raidFrameButtonFactory(raidFrame, 'ChorusHugeRaidUnitFrameTemplate')
83 93 end end
File src/ChorusSoloFrame.lua changed (mode: 100644) (index 60eea86..ae8b4f5)
4 4
5 5 function Chorus.soloFrameMain(soloFrame) function Chorus.soloFrameMain(soloFrame)
6 6 assert(soloFrame ~= nil) assert(soloFrame ~= nil)
7 Chorus.visibilitySecureHandlerApply(soloFrame)
7 8 end end
File src/ChorusVisibilitySecureHandler.lua added (mode: 100644) (index 0000000..ffb8f8c)
1 --[[--
2 @submodule chorus
3 ]]
4
5 local Chorus = Chorus
6
7 CHORUS_VISIBILITY_AUTO = 1
8 CHORUS_VISIBILITY_SHOW_ALWAYS = 2
9 CHORUS_VISIBILITY_SHOW_NEVER = 0
10
11 function Chorus.visibilitySecureHandlerApply(frame)
12 assert(frame ~= nil)
13 assert(select(2, frame:IsProtected()))
14
15 local secureHandler = ChorusVisibilitySecureHandler
16
17 assert(secureHandler ~= nil)
18 assert(select(2, secureHandler:IsProtected()))
19
20 secureHandler:WrapScript(frame, 'OnAttributeChanged', [[
21 local CHORUS_VISIBILITY_AUTO = 1
22 local CHORUS_VISIBILITY_SHOW_ALWAYS = 2
23 local CHORUS_VISIBILITY_SHOW_NEVER = 0
24 if name and 'chorus-visibility' == tostring(name) then
25 value = tonumber(value) or -1
26 if CHORUS_VISIBILITY_SHOW_ALWAYS == value then
27 self:Show()
28 elseif CHORUS_VISIBILITY_SHOW_NEVER == value then
29 self:Hide()
30 end
31 end
32 ]])
33 end
File src/ChorusVisibilitySecureHandler.xml added (mode: 100644) (index 0000000..e315197)
1 <?xml version="1.0" encoding="UTF-8"?>
2 <Ui xmlns="http://www.blizzard.com/wow/ui/">
3 <Frame name="ChorusVisibilitySecureHandler" inherits="SecureHandlerAttributeTemplate"/>
4 <Script file="ChorusVisibilitySecureHandler.lua"/>
5 </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