Skip to content

Commit

Permalink
Update node MIDI program UI when PGC processed.
Browse files Browse the repository at this point in the history
Closes #124
  • Loading branch information
mfisher31 committed Nov 17, 2019
1 parent 4f42544 commit 64ed93f
Show file tree
Hide file tree
Showing 3 changed files with 21 additions and 44 deletions.
15 changes: 13 additions & 2 deletions src/engine/GraphNode.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -408,6 +408,9 @@ File GraphNode::getMidiProgramFile (int program) const

void GraphNode::saveMidiProgram()
{
if (useGlobalMidiPrograms())
return; // don't save global programs here.

int progamNumber = midiProgram.get();
if (! isPositiveAndBelow (progamNumber, 128))
return;
Expand Down Expand Up @@ -519,14 +522,22 @@ void GraphNode::setMidiProgram (const int program)

void GraphNode::setMidiProgramName (const int program, const String& name)
{
if (useGlobalMidiPrograms())
return; // names not supported with global programs yet.

if (auto* pr = getMidiProgram (program))
{
pr->name = name;
}
}

String GraphNode::getMidiProgramName (const int program) const
{
if (useGlobalMidiPrograms())
{
String name ("Global ");
name << (program + 1);
return name;
}

if (auto* pr = getMidiProgram (program))
return pr->name;
return {};
Expand Down
3 changes: 2 additions & 1 deletion src/gui/properties/NodeProperties.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -140,14 +140,15 @@ class NodeMidiProgramPropertyComponent : public PropertyComponent
String programName;
if (GraphNodePtr object = node.getGraphNode())
{
const bool global = object->useGlobalMidiPrograms();
// use the object because there isn't a notifaction directly back to node model
// in all cases
const auto programNumber = object->getMidiProgram();
program.slider.setValue (1 + object->getMidiProgram(), dontSendNotification);
if (isPositiveAndNotGreaterThan (roundToInt (program.slider.getValue()), 128))
{
programName = node.getMidiProgramName (programNumber);
program.name.setEnabled (enabled);
program.name.setEnabled (global ? false : enabled);
program.loadButton.setEnabled (enabled);
program.saveButton.setEnabled (enabled);
program.trashButton.setEnabled (enabled);
Expand Down
47 changes: 6 additions & 41 deletions src/gui/views/NodeMidiContentView.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -76,10 +76,10 @@ void NodeMidiContentView::stabilizeContent()

if (GraphNodePtr ptr = node.getGraphNode())
{
#if defined (EL_PRO) || defined (EL_SOLO)
ptr->midiProgramChanged.connect (
#if defined (EL_PRO) || defined (EL_SOLO)
midiProgramChangedConnection = ptr->midiProgramChanged.connect (
std::bind (&NodeMidiContentView::updateMidiProgram, this));
#endif
#endif
}
}
else
Expand All @@ -92,51 +92,16 @@ void NodeMidiContentView::stabilizeContent()

void NodeMidiContentView::updateProperties()
{
#if EL_NODE_MIDI_CONTENT_VIEW_PROPS
#if EL_NODE_MIDI_CONTENT_VIEW_PROPS
props.clear();
props.addProperties (NodeProperties (node, false, true));
resized();
#endif
#endif
}

void NodeMidiContentView::updateMidiProgram()
{
#if 0
const bool enabled = node.areMidiProgramsEnabled();
String programName;
if (GraphNodePtr object = node.getGraphNode())
{
// use the object because there isn't a notifaction directly back to node model
// in all cases
const auto programNumber = object->getMidiProgram();
midiProgram.slider.setValue (1 + object->getMidiProgram(), dontSendNotification);
if (isPositiveAndNotGreaterThan (roundToInt (midiProgram.slider.getValue()), 128))
{
programName = node.getMidiProgramName (programNumber);
midiProgram.name.setEnabled (enabled);
midiProgram.loadButton.setEnabled (enabled);
midiProgram.saveButton.setEnabled (enabled);
midiProgram.trashButton.setEnabled (enabled);
midiProgram.powerButton.setToggleState (enabled, dontSendNotification);
}
else
{
midiProgram.name.setEnabled (false);
midiProgram.loadButton.setEnabled (false);
midiProgram.saveButton.setEnabled (false);
midiProgram.trashButton.setEnabled (false);
midiProgram.powerButton.setToggleState (false, dontSendNotification);
}
}

midiProgram.name.setText (programName.isNotEmpty() ?
programName : EL_PROGRAM_NAME_PLACEHOLDER, dontSendNotification);
midiProgram.powerButton.setToggleState (node.areMidiProgramsEnabled(), dontSendNotification);
midiProgram.globalButton.setToggleState (node.useGlobalMidiPrograms(), dontSendNotification);
midiProgram.globalButton.setEnabled (enabled);
midiProgram.slider.updateText();
midiProgram.slider.setEnabled (enabled);
#endif
updateProperties();
}

}

0 comments on commit 64ed93f

Please sign in to comment.