MCPcopy Create free account
hub / github.com/BespokeSynth/BespokeSynth / SetPatchCableTarget

Method SetPatchCableTarget

Source/PatchCableSource.cpp:101–147  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

99}
100
101void PatchCableSource::SetPatchCableTarget(PatchCable* cable, IClickable* target, bool fromUserClick)
102{
103 IClickable* oldTarget = cable->GetTarget();
104
105 mOwner->PreRepatch(this);
106
107 if (cable->GetTarget())
108 {
109 mAudioReceiver = nullptr;
110 RemoveFromVector(dynamic_cast<INoteReceiver*>(cable->GetTarget()), mNoteReceivers);
111 RemoveFromVector(dynamic_cast<IPulseReceiver*>(cable->GetTarget()), mPulseReceivers);
112 }
113
114 cable->SetCableTarget(target);
115
116 INoteReceiver* noteReceiver = dynamic_cast<INoteReceiver*>(target);
117 if (noteReceiver)
118 mNoteReceivers.push_back(noteReceiver);
119 IPulseReceiver* pulseReceiver = dynamic_cast<IPulseReceiver*>(target);
120 if (pulseReceiver)
121 mPulseReceivers.push_back(pulseReceiver);
122 IAudioReceiver* audioReceiver = dynamic_cast<IAudioReceiver*>(target);
123 if (audioReceiver)
124 {
125 mAudioReceiver = audioReceiver;
126 TheSynth->ArrangeAudioSourceDependencies();
127 }
128
129 mOwner->PostRepatch(this, fromUserClick);
130
131 //insert
132 if (GetKeyModifiers() == kModifier_Shift && fromUserClick)
133 {
134 if (sAllowInsert) //avoid cascade on the next set
135 {
136 sAllowInsert = false;
137 IDrawableModule* targetModule = dynamic_cast<IDrawableModule*>(target);
138 if (targetModule && targetModule->GetPatchCableSource())
139 {
140 targetModule->GetPatchCableSource()->FindValidTargets();
141 if (targetModule->GetPatchCableSource()->IsValidTarget(oldTarget))
142 targetModule->SetTarget(oldTarget);
143 }
144 sAllowInsert = true;
145 }
146 }
147}
148
149void PatchCableSource::Clear()
150{

Callers 5

HideMethod · 0.80
OnSelectItemMethod · 0.80
MouseDraggedMethod · 0.80
MouseReleasedMethod · 0.80

Calls 11

RemoveFromVectorFunction · 0.85
GetKeyModifiersFunction · 0.85
SetCableTargetMethod · 0.80
FindValidTargetsMethod · 0.80
GetTargetMethod · 0.45
PreRepatchMethod · 0.45
PostRepatchMethod · 0.45
GetPatchCableSourceMethod · 0.45
IsValidTargetMethod · 0.45
SetTargetMethod · 0.45

Tested by

no test coverage detected