void SliderDialog::addSlider(CSlider* pSlider) { if (mpParentWindow == NULL) return; // check if there already is a slider for this object CCopasiDataModel * pDataModel = pSlider->getObjectDataModel(); assert(pDataModel != NULL); SCopasiXMLGUI* pGUI = pDataModel->getGUI(); assert(pGUI); if (!equivalentSliderExists(pSlider)) { CObjectInterface::ContainerList listOfContainers; assert(CCopasiRootContainer::getDatamodelList()->size() > 0); listOfContainers.push_back(pDataModel->getModel()); pSlider->compile(listOfContainers); pGUI->getSliderList()->add(pSlider, true); } CopasiSlider* tmp = findCopasiSliderForCSlider(pSlider); if (!tmp) { setCurrentSlider(new CopasiSlider(pSlider, mpParentWindow->getDataModel(), mpSliderBox)); mpCurrSlider->installEventFilter(this); mpCurrSlider->setHidden(true); mpCurrSlider->updateSliderData(); // make sure the slider points to the correct object // for the currently set framework this->setCorrectSliderObject(this->mpCurrSlider); mSliderMap[mCurrentFolderId].push_back(mpCurrSlider); QBoxLayout* layout = static_cast<QBoxLayout*>(mpSliderBox->layout()); int childCount = layout->count() - 1; layout->insertWidget(childCount, mpCurrSlider); connect(mpCurrSlider, SIGNAL(valueChanged(double)), this , SLOT(sliderValueChanged())); connect(mpCurrSlider, SIGNAL(sliderReleased()), this, SLOT(sliderReleased())); connect(mpCurrSlider, SIGNAL(sliderPressed()), this, SLOT(sliderPressed())); connect(mpCurrSlider, SIGNAL(closeClicked(CopasiSlider*)), this, SLOT(removeSlider(CopasiSlider*))); connect(mpCurrSlider, SIGNAL(editClicked(CopasiSlider*)), this, SLOT(editSlider(CopasiSlider*))); mpCurrSlider->setHidden(false); mChanged = true; }
void SliderDialog::contextMenuEvent(QContextMenuEvent* e) { CopasiSlider* pSlider = findCopasiSliderAtPosition(e->pos()); if (pSlider) { mpaCreateNewSlider->setEnabled(false); mpaRemoveSlider->setEnabled(true); mpaEditSlider->setEnabled(true); setCurrentSlider(pSlider); } else { mpaCreateNewSlider->setEnabled(true); mpaRemoveSlider->setEnabled(false); mpaEditSlider->setEnabled(false); } mpContextMenu->popup(e->globalPos()); }