Skip to content
Snippets Groups Projects
Commit a12568bd authored by jsiegle's avatar jsiegle
Browse files

Loading SpikeDetector settings is mostly working

parent bb249976
No related branches found
No related tags found
No related merge requests found
......@@ -247,18 +247,7 @@ void SpikeDetectorEditor::buttonEvent(Button* button)
}
}
refreshElectrodeList();
if (electrodeList->getNumItems() > 0)
{
electrodeList->setSelectedId(electrodeList->getNumItems(), true);
electrodeList->setText(electrodeList->getItemText(electrodeList->getNumItems()-1));
lastId = electrodeList->getNumItems();
electrodeList->setEditableText(true);
drawElectrodeButtons(electrodeList->getNumItems()-1);
}
getEditorViewport()->makeEditorVisible(this, true, true);
return;
......@@ -359,12 +348,30 @@ void SpikeDetectorEditor::refreshElectrodeList()
{
electrodeList->addItem(electrodeNames[i], electrodeList->getNumItems()+1);
}
if (electrodeList->getNumItems() > 0)
{
electrodeList->setSelectedId(electrodeList->getNumItems(), true);
electrodeList->setText(electrodeList->getItemText(electrodeList->getNumItems()-1));
lastId = electrodeList->getNumItems();
electrodeList->setEditableText(true);
drawElectrodeButtons(electrodeList->getNumItems()-1);
}
}
bool SpikeDetectorEditor::addElectrode(int nChans)
{
SpikeDetector* processor = (SpikeDetector*) getProcessor();
return processor->addElectrode(nChans);
if (processor->addElectrode(nChans))
{
refreshElectrodeList();
return true;
} else {
return false;
}
}
......
......@@ -27,7 +27,7 @@
GenericProcessor::GenericProcessor(const String& name_) : AccessClass(),
sourceNode(0), destNode(0), isEnabled(true), wasConnected(false),
nextAvailableChannel(0), saveOrder(-1), loadOrder(-1), currentChannel(-1),
name(name_), parametersAsXml(nullptr)
name(name_), parametersAsXml(nullptr), paramsWereLoaded(false)
{
}
......@@ -609,7 +609,8 @@ void GenericProcessor::loadFromXml()
std::cout << "Loading parameters for " << name << std::endl;
if (!paramsWereLoaded)
{
if (parametersAsXml != nullptr)
{
......@@ -635,6 +636,9 @@ void GenericProcessor::loadFromXml()
}
}
}
paramsWereLoaded = true;
}
......
......@@ -584,6 +584,8 @@ private:
/** For getInputChannelName() and getOutputChannelName() */
static const String unusedNameString;
bool paramsWereLoaded;
JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR(GenericProcessor);
};
......
......@@ -204,6 +204,10 @@ void SpikeDetector::setElectrodeName(int index, String newName)
void SpikeDetector::setChannel(int electrodeIndex, int channelNum, int newChannel)
{
std::cout << "Setting electrode " << electrodeIndex << " channel " << channelNum <<
" to " << newChannel << std::endl;
*(electrodes[electrodeIndex]->channels+channelNum) = newChannel;
}
......@@ -243,7 +247,8 @@ double SpikeDetector::getChannelThreshold(int electrodeNum, int channelNum)
void SpikeDetector::setParameter(int parameterIndex, float newValue)
{
editor->updateParameterButtons(parameterIndex);
//editor->updateParameterButtons(parameterIndex);
if (parameterIndex == 99 && currentElectrode > -1)
{
*(electrodes[currentElectrode]->thresholds+currentChannelIndex) = newValue;
......@@ -586,7 +591,7 @@ void SpikeDetector::saveCustomParametersToXml(XmlElement* parentElement)
for (int j = 0; j < electrodes[i]->numChannels; j++)
{
XmlElement* channelNode = electrodeNode->createNewChildElement("CHANNEL");
XmlElement* channelNode = electrodeNode->createNewChildElement("SUBCHANNEL");
channelNode->setAttribute("ch",*(electrodes[i]->channels+j));
channelNode->setAttribute("thresh",*(electrodes[i]->thresholds+j));
channelNode->setAttribute("isActive",*(electrodes[i]->isActive+j));
......@@ -618,19 +623,19 @@ void SpikeDetector::loadCustomParametersFromXml()
SpikeDetectorEditor* sde = (SpikeDetectorEditor*) getEditor();
sde->addElectrode(channelsPerElectrode);
//setElectrodeName(electrodeIndex, xmlNode->getStringAttribute("name"));
setElectrodeName(electrodeIndex+1, xmlNode->getStringAttribute("name"));
int channelIndex = -1;
forEachXmlChildElement(*parametersAsXml, channelNode)
{
if (channelNode->hasTagName("CHANNEL"))
if (channelNode->hasTagName("SUBCHANNEL"))
{
channelIndex++;
// setChannel(electrodeIndex, channelIndex, channelNode->getIntAttribute("ch"));
//setChannelThreshold(electrodeIndex, channelIndex, channelNode->getDoubleAttribute("thresh"));
// setChannelActive(electrodeIndex, channelIndex, channelNode->getBoolAttribute("isActive"));
setChannel(electrodeIndex, channelIndex, channelNode->getIntAttribute("ch"));
setChannelThreshold(electrodeIndex, channelIndex, channelNode->getDoubleAttribute("thresh"));
setChannelActive(electrodeIndex, channelIndex, channelNode->getBoolAttribute("isActive"));
}
}
......@@ -638,4 +643,4 @@ void SpikeDetector::loadCustomParametersFromXml()
}
}
}
}
......@@ -1127,6 +1127,8 @@ const String EditorViewport::saveState(File fileToUse)
XmlElement* machineName = info->createNewChildElement("MACHINE");
machineName->addTextElement(SystemStats::getComputerName());
GenericEditor* editor;
for (int n = 0; n < signalChainArray.size(); n++)
{
......@@ -1134,7 +1136,7 @@ const String EditorViewport::saveState(File fileToUse)
XmlElement* signalChain = new XmlElement("SIGNALCHAIN");
GenericEditor* editor = signalChainArray[n]->getEditor();
editor = signalChainArray[n]->getEditor();
int insertionPt = 1;
......@@ -1289,6 +1291,8 @@ const String EditorViewport::loadState(File fileToLoad)
String description;// = " ";
int loadOrder = 0;
GenericProcessor* p;
forEachXmlChildElement(*xml, signalChain)
{
forEachXmlChildElement(*signalChain, processor)
......@@ -1315,7 +1319,7 @@ const String EditorViewport::loadState(File fileToLoad)
itemDropped(sd);
GenericProcessor* p = (GenericProcessor*) lastEditor->getProcessor();
p = (GenericProcessor*) lastEditor->getProcessor();
p->loadOrder = loadOrder;
p->parametersAsXml = processor;
//Sets parameters based on XML files
......@@ -1377,6 +1381,11 @@ const String EditorViewport::loadState(File fileToLoad)
getControlPanel()->loadStateFromXml(xml); // save the control panel settings
getUIComponent()->loadStateFromXml(xml); // save the UI settings
if (editorArray.size() > 0)
signalChainManager->updateVisibleEditors(editorArray[0], 0, 0, UPDATE);
refreshEditors();
String error = "Opened ";
error += currentFile.getFileName();
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment