@@ -28,8 +28,7 @@ using namespace OnixSourcePlugin;
2828using namespace ColourScheme ;
2929
3030NeuropixelsV1Interface::NeuropixelsV1Interface (std::shared_ptr<Neuropixels1> d, OnixSourceEditor* e, OnixSourceCanvas* c) :
31- SettingsInterface(d, e, c),
32- neuropix_info(" INFO" )
31+ SettingsInterface(d, e, c)
3332{
3433 if (d->getDeviceType () != OnixDeviceType::NEUROPIXELSV1E && d->getDeviceType () != OnixDeviceType::NEUROPIXELSV1F)
3534 {
@@ -144,6 +143,20 @@ NeuropixelsV1Interface::NeuropixelsV1Interface(std::shared_ptr<Neuropixels1> d,
144143 loadJsonButton->setTooltip (" Load channel map from probeinterface .json file" );
145144 addAndMakeVisible (loadJsonButton.get ());
146145
146+ saveSettingsButton = std::make_unique<UtilityButton>(" Save Settings" );
147+ saveSettingsButton->setRadius (3 .0f );
148+ saveSettingsButton->setBounds (saveJsonButton->getX (), saveJsonButton->getBottom () + 20 , 120 , 22 );
149+ saveSettingsButton->addListener (this );
150+ saveSettingsButton->setTooltip (" Save all Neuropixels settings to file." );
151+ addAndMakeVisible (saveSettingsButton.get ());
152+
153+ loadSettingsButton = std::make_unique<UtilityButton>(" Load Settings" );
154+ loadSettingsButton->setRadius (3 .0f );
155+ loadSettingsButton->setBounds (saveSettingsButton->getRight () + 5 , saveSettingsButton->getY (), saveSettingsButton->getWidth (), saveSettingsButton->getHeight ());
156+ loadSettingsButton->addListener (this );
157+ loadSettingsButton->setTooltip (" Load all Neuropixels settings from a file." );
158+ addAndMakeVisible (loadSettingsButton.get ());
159+
147160 electrodesLabel = std::make_unique<Label>(" ELECTRODES" , " ELECTRODES" );
148161 electrodesLabel->setFont (FontOptions (" Inter" , " Regular" , 13 .0f ));
149162 electrodesLabel->setBounds (446 , currentHeight - 20 , 100 , 20 );
@@ -294,36 +307,6 @@ NeuropixelsV1Interface::NeuropixelsV1Interface(std::shared_ptr<Neuropixels1> d,
294307
295308 currentHeight += 55 ;
296309
297- // activityViewButton = std::make_unique<UtilityButton>("VIEW");
298- // activityViewButton->setFont(fontRegularButton);
299- // activityViewButton->setRadius(3.0f);
300-
301- // activityViewButton->addListener(this);
302- // activityViewButton->setTooltip("View peak-to-peak amplitudes for each channel");
303- // addAndMakeVisible(activityViewButton.get());
304-
305- // activityViewComboBox = std::make_unique<ComboBox>("ActivityView Combo Box");
306-
307- // if (settings->availableLfpGains.size() > 0)
308- // {
309- // activityViewComboBox->setBounds(450, currentHeight, 65, 22);
310- // activityViewComboBox->addListener(this);
311- // activityViewComboBox->addItem("AP", 1);
312- // activityViewComboBox->addItem("LFP", 2);
313- // activityViewComboBox->setSelectedId(1, dontSendNotification);
314- // addAndMakeVisible(activityViewComboBox.get());
315- // activityViewButton->setBounds(530, currentHeight + 2, 45, 18);
316- // }
317- // else
318- // {
319- // activityViewButton->setBounds(450, currentHeight + 2, 45, 18);
320- // }
321-
322- // activityViewLabel = std::make_unique<Label>("PROBE SIGNAL", "PROBE SIGNAL");
323- // activityViewLabel->setFont(fontRegularLabel);
324- // activityViewLabel->setBounds(446, currentHeight - 20, 180, 20);
325- // addAndMakeVisible(activityViewLabel.get());
326-
327310#pragma region Draw Legends
328311
329312 // ENABLE View
@@ -784,6 +767,32 @@ void NeuropixelsV1Interface::buttonClicked(Button* button)
784767 CoreServices::sendStatusMessage (" Successfully wrote probe channel map." );
785768 }
786769 }
770+ else if (button == saveSettingsButton.get ())
771+ {
772+ FileChooser fileChooser (" Save Neuropixels settings to an XML file." , File (), " *.xml" );
773+
774+ if (fileChooser.browseForFileToSave (true ))
775+ {
776+ XmlElement rootElement (" DEVICE" );
777+
778+ saveParameters (&rootElement);
779+
780+ writeToXmlFile (&rootElement, fileChooser.getResult ());
781+ }
782+ }
783+ else if (button == loadSettingsButton.get ())
784+ {
785+ FileChooser fileChooser (" Load Neuropixels settings from an XML file." , File (), " *.xml" );
786+
787+ if (fileChooser.browseForFileToOpen ())
788+ {
789+ auto rootElement = readFromXmlFile (fileChooser.getResult ());
790+
791+ loadParameters (rootElement);
792+
793+ delete rootElement;
794+ }
795+ }
787796 else if (button == adcCalibrationFileButton.get ())
788797 {
789798 if (adcCalibrationFileChooser->browseForFileToOpen ())
@@ -1060,7 +1069,7 @@ void NeuropixelsV1Interface::loadParameters(XmlElement* xml)
10601069
10611070 if (xmlNode == nullptr )
10621071 {
1063- LOGD (" No NEUROPIXELSV1F element found matching name = " + npx->getName () + " , and idx = " + npx->getDeviceIdx ());
1072+ LOGD (" No " , deviceName, " element found matching name = " + npx->getName () + " , and idx = " + std::to_string ( npx->getDeviceIdx () ));
10641073 return ;
10651074 }
10661075
0 commit comments