From ff2dbd28c7d20535776feb6c77b5d286d6b8b0d1 Mon Sep 17 00:00:00 2001 From: jsiegle <jsiegle@mit.edu> Date: Sun, 19 Jan 2014 15:30:24 -0500 Subject: [PATCH] Fix issues with loading SpikeDetector parameters --- Source/Processors/Editors/ChannelSelector.cpp | 2 +- .../Editors/SpikeDetectorEditor.cpp | 24 +++++++++++-------- .../Processors/Editors/SpikeDetectorEditor.h | 8 +++---- Source/Processors/GenericProcessor.cpp | 5 ++-- Source/Processors/SpikeDetector.cpp | 17 ++++++++----- 5 files changed, 32 insertions(+), 24 deletions(-) diff --git a/Source/Processors/Editors/ChannelSelector.cpp b/Source/Processors/Editors/ChannelSelector.cpp index 1433cd15e..569018be7 100755 --- a/Source/Processors/Editors/ChannelSelector.cpp +++ b/Source/Processors/Editors/ChannelSelector.cpp @@ -302,7 +302,7 @@ Array<int> ChannelSelector::getActiveChannels() void ChannelSelector::setActiveChannels(Array<int> a) { - std::cout << "Setting active channels!" << std::endl; + //std::cout << "Setting active channels!" << std::endl; for (int i = 0; i < parameterButtons.size(); i++) { diff --git a/Source/Processors/Editors/SpikeDetectorEditor.cpp b/Source/Processors/Editors/SpikeDetectorEditor.cpp index 9b6ad49ed..47e23390a 100755 --- a/Source/Processors/Editors/SpikeDetectorEditor.cpp +++ b/Source/Processors/Editors/SpikeDetectorEditor.cpp @@ -337,19 +337,23 @@ void SpikeDetectorEditor::buttonEvent(Button* button) void SpikeDetectorEditor::channelChanged(int chan) { - //std::cout << "New channel: " << chan << std::endl; - for (int i = 0; i < electrodeButtons.size(); i++) + if (electrodeEditorButtons[0]->getToggleState()) // editing is active { - if (electrodeButtons[i]->getToggleState()) + std::cout << "New channel: " << chan << std::endl; + + for (int i = 0; i < electrodeButtons.size(); i++) { - electrodeButtons[i]->setChannelNum(chan); - electrodeButtons[i]->repaint(); + if (electrodeButtons[i]->getToggleState()) + { + electrodeButtons[i]->setChannelNum(chan); + electrodeButtons[i]->repaint(); - SpikeDetector* processor = (SpikeDetector*) getProcessor(); - processor->setChannel(electrodeList->getSelectedItemIndex(), - i, - chan-1); + SpikeDetector* processor = (SpikeDetector*) getProcessor(); + processor->setChannel(electrodeList->getSelectedItemIndex(), + i, + chan-1); + } } } @@ -548,7 +552,7 @@ ThresholdSlider::ThresholdSlider(Font f) : Slider("name"), font(f) setSliderStyle(Slider::Rotary); setRange(25.0f,400.0f,25.0f); - setValue(75.0f); + // setValue(75.0f); setTextBoxStyle(Slider::NoTextBox, false, 40, 20); } diff --git a/Source/Processors/Editors/SpikeDetectorEditor.h b/Source/Processors/Editors/SpikeDetectorEditor.h index 5e955937c..36363951b 100755 --- a/Source/Processors/Editors/SpikeDetectorEditor.h +++ b/Source/Processors/Editors/SpikeDetectorEditor.h @@ -94,15 +94,15 @@ public: void channelChanged(int chan); bool addElectrode(int nChans); + void removeElectrode(int index); void checkSettings(); + void refreshElectrodeList(); private: void drawElectrodeButtons(int); - void refreshElectrodeList(); - ComboBox* electrodeTypes; ComboBox* electrodeList; Label* numElectrodes; @@ -115,9 +115,7 @@ private: OwnedArray<ElectrodeButton> electrodeButtons; Array<ElectrodeEditorButton*> electrodeEditorButtons; - - - void removeElectrode(int index); + void editElectrode(int index, int chan, int newChan); int lastId; diff --git a/Source/Processors/GenericProcessor.cpp b/Source/Processors/GenericProcessor.cpp index ef13adae8..16ca2df00 100755 --- a/Source/Processors/GenericProcessor.cpp +++ b/Source/Processors/GenericProcessor.cpp @@ -684,11 +684,12 @@ void GenericProcessor::loadFromXml() update(); // make sure settings are updated - std::cout << "Loading parameters for " << name << std::endl; - + if (!paramsWereLoaded) { + std::cout << "Loading parameters for " << name << std::endl; + if (parametersAsXml != nullptr) { // use parametersAsXml to restore state diff --git a/Source/Processors/SpikeDetector.cpp b/Source/Processors/SpikeDetector.cpp index 7c7d00450..61d2ae8e9 100755 --- a/Source/Processors/SpikeDetector.cpp +++ b/Source/Processors/SpikeDetector.cpp @@ -229,7 +229,7 @@ void SpikeDetector::setChannelActive(int electrodeIndex, int subChannel, bool ac currentElectrode = electrodeIndex; currentChannelIndex = subChannel; - std::cout << "Setting parameter 98 to " << active << std::endl; + std::cout << "Setting channel active to " << active << std::endl; if (active) setParameter(98, 1); @@ -248,6 +248,7 @@ void SpikeDetector::setChannelThreshold(int electrodeNum, int channelNum, float { currentElectrode = electrodeNum; currentChannelIndex = channelNum; + std::cout << "Setting electrode " << electrodeNum << " channel threshold " << channelNum << " to " << thresh << std::endl; setParameter(99, thresh); } @@ -624,10 +625,13 @@ void SpikeDetector::saveCustomParametersToXml(XmlElement* parentElement) void SpikeDetector::loadCustomParametersFromXml() { - if (parametersAsXml != nullptr) + + if (parametersAsXml != nullptr) // prevent double-loading { // use parametersAsXml to restore state + SpikeDetectorEditor* sde = (SpikeDetectorEditor*) getEditor(); + int electrodeIndex = -1; forEachXmlChildElement(*parametersAsXml, xmlNode) @@ -637,12 +641,14 @@ void SpikeDetector::loadCustomParametersFromXml() electrodeIndex++; + std::cout << "ELECTRODE>>>" << std::endl; + int channelsPerElectrode = xmlNode->getIntAttribute("numChannels"); - SpikeDetectorEditor* sde = (SpikeDetectorEditor*) getEditor(); sde->addElectrode(channelsPerElectrode); setElectrodeName(electrodeIndex+1, xmlNode->getStringAttribute("name")); + sde->refreshElectrodeList(); int channelIndex = -1; @@ -663,9 +669,8 @@ void SpikeDetector::loadCustomParametersFromXml() } } - } - SpikeDetectorEditor* ed = (SpikeDetectorEditor*) getEditor(); - ed->checkSettings(); + sde->checkSettings(); + } } -- GitLab