Skip to content

Commit d7d5f4a

Browse files
committed
Fix bug in merger input selection
1 parent 6aeca2e commit d7d5f4a

3 files changed

Lines changed: 67 additions & 49 deletions

File tree

Source/Processors/Merger/MergerEditor.cpp

Lines changed: 49 additions & 45 deletions
Original file line numberDiff line numberDiff line change
@@ -129,34 +129,38 @@ void MergerEditor::mouseDown(const MouseEvent& e)
129129
if (e.mods.isRightButtonDown())
130130
{
131131

132-
PopupMenu m;
133-
m.addItem(1, "Choose input 2:",false);
132+
PopupMenu menu;
133+
int menuItemIndex = 1;
134+
135+
menu.addItem(menuItemIndex, // index
136+
"Choose input 2:", // message
137+
false); // isSelectable
134138

135139
Array<GenericProcessor*> availableProcessors = AccessClass::getProcessorGraph()->getListOfProcessors();
140+
141+
Array<GenericProcessor*> selectableProcessors;
136142

137-
int i;
138-
139-
for (i = 0; i < availableProcessors.size(); i++)
143+
for (auto& processor : availableProcessors)
140144
{
141-
if (//!availableProcessors[i]->isSink() &&
142-
!availableProcessors[i]->isMerger() &&
143-
!availableProcessors[i]->isSplitter() &&
144-
availableProcessors[i]->getDestNode() != getProcessor())
145+
if (!processor->isMerger() &&
146+
!processor->isSplitter() &&
147+
processor->getDestNode() == 0)
145148
{
146149

147-
String name = String(availableProcessors[i]->getNodeId());
150+
String name = String(processor->getNodeId());
148151
name += " - ";
149-
name += availableProcessors[i]->getName();
152+
name += processor->getName();
150153

151-
m.addItem(i+2, name);
152-
//processorsInList.add(availableProcessors[i]);
154+
menu.addItem(++menuItemIndex, // index
155+
name, // message
156+
true); // isSelectable
157+
158+
selectableProcessors.add(processor);
153159
}
154160
}
155161

156-
//m.addItem(++i, "Merging:", false);
157-
158-
int eventMerge = ++i;
159-
int continuousMerge = ++i;
162+
int eventMerge = ++menuItemIndex;
163+
int continuousMerge = ++menuItemIndex;
160164

161165
bool* eventPtr;
162166
bool* continuousPtr;
@@ -170,20 +174,22 @@ void MergerEditor::mouseDown(const MouseEvent& e)
170174
continuousPtr = &merger->mergeContinuousB;
171175
}
172176

173-
m.addItem(eventMerge, "Events", !acquisitionIsActive, *eventPtr);
174-
m.addItem(continuousMerge, "Continuous", !acquisitionIsActive, *continuousPtr);
177+
menu.addItem(eventMerge, "Events", !acquisitionIsActive, *eventPtr);
178+
menu.addItem(continuousMerge, "Continuous", !acquisitionIsActive, *continuousPtr);
175179

176-
const int result = m.show();
180+
const int result = menu.show(); // returns 0 if nothing is selected
181+
182+
std::cout << "Selection: " << result << std::endl;
177183

178184
if (result > 1 && result < eventMerge)
179185
{
180-
std::cout << "Selected " << availableProcessors[result-2]->getName() << std::endl;
186+
std::cout << "Selected " << selectableProcessors[result-2]->getName() << std::endl;
181187

182188
switchSource(1);
183189

184190
Merger* processor = (Merger*) getProcessor();
185-
processor->setMergerSourceNode(availableProcessors[result-2]);
186-
availableProcessors[result-2]->setDestNode(getProcessor());
191+
processor->setMergerSourceNode(selectableProcessors[result-2]);
192+
selectableProcessors[result-2]->setDestNode(getProcessor());
187193

188194
AccessClass::getGraphViewer()->updateNodeLocations();
189195

@@ -198,30 +204,8 @@ void MergerEditor::mouseDown(const MouseEvent& e)
198204
CoreServices::updateSignalChain(this);
199205
}
200206
}
201-
202-
203-
204207
}
205208

206-
void MergerEditor::switchSource(int source)
207-
{
208-
if (source == 0)
209-
{
210-
pipelineSelectorA->setToggleState(true, dontSendNotification);
211-
pipelineSelectorB->setToggleState(false, dontSendNotification);
212-
Merger* processor = (Merger*) getProcessor();
213-
processor->switchIO(0);
214-
215-
}
216-
else if (source == 1)
217-
{
218-
pipelineSelectorB->setToggleState(true, dontSendNotification);
219-
pipelineSelectorA->setToggleState(false, dontSendNotification);
220-
Merger* processor = (Merger*) getProcessor();
221-
processor->switchIO(1);
222-
223-
}
224-
}
225209

226210
Array<GenericEditor*> MergerEditor::getConnectedEditors()
227211
{
@@ -284,3 +268,23 @@ void MergerEditor::switchSource()
284268
processor->switchIO();
285269

286270
}
271+
272+
void MergerEditor::switchSource(int source)
273+
{
274+
if (source == 0)
275+
{
276+
pipelineSelectorA->setToggleState(true, dontSendNotification);
277+
pipelineSelectorB->setToggleState(false, dontSendNotification);
278+
Merger* processor = (Merger*) getProcessor();
279+
processor->switchIO(0);
280+
281+
}
282+
else if (source == 1)
283+
{
284+
pipelineSelectorB->setToggleState(true, dontSendNotification);
285+
pipelineSelectorA->setToggleState(false, dontSendNotification);
286+
Merger* processor = (Merger*) getProcessor();
287+
processor->switchIO(1);
288+
289+
}
290+
}

Source/Processors/Merger/MergerEditor.h

Lines changed: 14 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -40,24 +40,36 @@ class MergerEditor : public GenericEditor
4040

4141
{
4242
public:
43+
44+
/** Constructor*/
4345
MergerEditor(GenericProcessor* parentNode, bool useDefaultParameterEditors);
46+
47+
/** Destructor*/
4448
virtual ~MergerEditor();
4549

50+
/** Called whenever the pathway selector button is pressed.*/
4651
virtual void buttonEvent(Button* button);
4752

53+
/** Changes the active pathway to 0 or 1 */
4854
void switchSource(int);
55+
56+
/** Swaps the active pathway*/
4957
void switchSource();
5058

59+
/** Changes the active pathway to 0 or 1, and selects the editor */
5160
void switchIO(int);
52-
61+
62+
/** Called for mouse events in the editor's title bar */
5363
void mouseDown(const MouseEvent& event);
5464

65+
/** Returns the pathway (0 or 1) for a particular editor*/
5566
int getPathForEditor(GenericEditor* editor);
5667

68+
/** Returns an array of the editors that feed into the merger*/
5769
Array<GenericEditor*> getConnectedEditors();
5870

5971
private:
60-
72+
6173
ImageButton* pipelineSelectorA;
6274
ImageButton* pipelineSelectorB;
6375

Source/UI/GraphViewer.cpp

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -78,9 +78,9 @@ int GraphViewer::getLevel(GraphNode* node) {
7878

7979
void GraphViewer::adjustBranchLayout(GraphNode* rootNode, int startLevel)
8080
{
81-
if (rootNode->getLevel() != -1)
81+
if (rootNode->getLevel() != -1 && rootNode->isSplitter())
8282
{
83-
return; // we've already adjusted this node
83+
return; // we've already adjusted this splitter node
8484
}
8585

8686
int level = startLevel + 1;
@@ -95,11 +95,13 @@ void GraphViewer::adjustBranchLayout(GraphNode* rootNode, int startLevel)
9595
if (upstreamEditors[0] != nullptr)
9696
{
9797
level1 = getNodeForEditor(upstreamEditors[0])->getLevel() + 1;
98+
std::cout << "Merger input 1 at " << level1 << std::endl;
9899
}
99100

100101
if (upstreamEditors[1] != nullptr)
101102
{
102103
level2 = getNodeForEditor(upstreamEditors[1])->getLevel() + 1;
104+
std::cout << "Merger input 2 at " << level1 << std::endl;
103105
}
104106

105107
level = (level1 > level2) ? level1 : level2;

0 commit comments

Comments
 (0)