void SpikeDetectorEditor::comboBoxChanged(ComboBox* comboBox) { if (comboBox == electrodeList) { int ID = comboBox->getSelectedId(); if (ID == 0) { SpikeDetector* processor = (SpikeDetector*) getProcessor(); processor->setElectrodeName(lastId, comboBox->getText()); refreshElectrodeList(); } else { lastId = ID; drawElectrodeButtons(ID-1); } } thresholdSlider->setActive(false); }
bool SpikeDetectorEditor::addElectrode(int nChans, int electrodeID) { SpikeDetector* processor = (SpikeDetector*) getProcessor(); if (processor->addElectrode(nChans, electrodeID)) { refreshElectrodeList(); return true; } else { return false; } }
void SpikeDetectorEditor::removeElectrode(int index) { std::cout << "Deleting electrode number " << index << std::endl; SpikeDetector* processor = (SpikeDetector*) getProcessor(); processor->removeElectrode(index); refreshElectrodeList(); int newIndex = jmin(index, electrodeList->getNumItems()-1); newIndex = jmax(newIndex, 0); electrodeList->setSelectedId(newIndex, sendNotification); electrodeList->setText(electrodeList->getItemText(newIndex)); if (electrodeList->getNumItems() == 0) { electrodeButtons.clear(); electrodeList->setEditableText(false); } }
void SpikeDetectorEditor::comboBoxChanged(ComboBox* comboBox) { if (comboBox == electrodeList) { int ID = comboBox->getSelectedId(); std::cout << "ID: " << ID << std::endl; if (ID == 0) { //SpikeDetector* processor = (SpikeDetector*) getProcessor(); //processor->setElectrodeName(lastId, comboBox->getText()); //comboBox->changeItemText(lastId, comboBox->getText()); //electrodeList->setText(comboBox->getText()); refreshElectrodeList(); } else { lastId = ID; SpikeDetector* processor = (SpikeDetector*) getProcessor(); SimpleElectrode* e = processor->setCurrentElectrodeIndex(ID-1); electrodeEditorButtons[1]->setToggleState(e->isMonitored, dontSendNotification); drawElectrodeButtons(ID-1); } } thresholdSlider->setActive(false); }
void SpikeDetectorEditor::buttonEvent(Button* button) { if (electrodeEditorButtons[0]->getToggleState()) // EDIT is active { std::cout << "Editing active." << std::endl; if (electrodeButtons.contains((ElectrodeButton*) button)) { ElectrodeButton* eb = (ElectrodeButton*) button; int electrodeNum = eb->getChannelNum()-1; std::cout << "Channel number: " << electrodeNum << std::endl; Array<int> a; a.add(electrodeNum); channelSelector->setActiveChannels(a); SpikeDetector* processor = (SpikeDetector*) getProcessor(); thresholdSlider->setActive(true); thresholdSlider->setValue(processor->getChannelThreshold(electrodeList->getSelectedItemIndex(), electrodeButtons.indexOf((ElectrodeButton*) button))); } } int num = numElectrodes->getText().getIntValue(); if (button == upButton) { numElectrodes->setText(String(++num), true); return; } else if (button == downButton) { if (num > 1) numElectrodes->setText(String(--num), true); return; } else if (button == plusButton) { // std::cout << "Plus button pressed!" << std::endl; int type = electrodeTypes->getSelectedId(); std::cout << type << std::endl; int nChans; switch (type) { case 1: nChans = 1; break; case 2: nChans = 2; break; case 3: nChans = 4; break; default: nChans = 1; } for (int n = 0; n < num; n++) { if (!addElectrode(nChans)) { sendActionMessage("Not enough channels to add electrode."); } } 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; } else if (button == electrodeEditorButtons[0]) // EDIT { Array<int> activeChannels; for (int i = 0; i < electrodeButtons.size(); i++) { if (button->getToggleState()) { electrodeButtons[i]->setToggleState(false, false); electrodeButtons[i]->setRadioGroupId(299); channelSelector->activateButtons(); channelSelector->setRadioStatus(true); } else { electrodeButtons[i]->setToggleState(true, false); electrodeButtons[i]->setRadioGroupId(0); channelSelector->inactivateButtons(); channelSelector->setRadioStatus(false); activeChannels.add(electrodeButtons[i]->getChannelNum()-1); } } if (!button->getToggleState()) { thresholdSlider->setActive(false); // This will be -1 with nothing selected int selectedItemIndex = electrodeList->getSelectedItemIndex(); if (selectedItemIndex != -1) { drawElectrodeButtons(selectedItemIndex); } else { electrodeButtons.clear(); } } // channelSelector->setActiveChannels(activeChannels); return; } else if (button == electrodeEditorButtons[1]) // MONITOR { return; } else if (button == electrodeEditorButtons[2]) // DELETE { removeElectrode(electrodeList->getSelectedItemIndex()); getEditorViewport()->makeEditorVisible(this, true, true); return; } }