#include "renderTopoSurfaceDockTab.h" #include "renderTopoSurface.h" #include "window.h" #include "mapHandler.h" namespace CGoGN { namespace SCHNApps { RenderTopoSurfaceDockTab::RenderTopoSurfaceDockTab(Window* w, RenderTopoSurfacePlugin* p) : m_window(w), m_plugin(p), b_refreshingUI(false) { setupUi(this); connect(mapList, SIGNAL(itemSelectionChanged()), this, SLOT(selectedMapChanged())); connect(combo_positionAttribute, SIGNAL(currentIndexChanged(int)), this, SLOT(positionAttributeChanged(int))); connect(slider_edgesScaleFactor, SIGNAL(valueChanged(int)), this, SLOT(edgesScaleFactorChanged(int))); connect(slider_facesScaleFactor, SIGNAL(valueChanged(int)), this, SLOT(facesScaleFactorChanged(int))); } void RenderTopoSurfaceDockTab::refreshUI(ParameterSet* params) { m_currentParams = params; b_refreshingUI = true; mapList->clear(); combo_positionAttribute->clear(); MapHandlerGen* mh = params->selectedMap; QHash::const_iterator i = params->perMap.constBegin(); while (i != params->perMap.constEnd()) { mapList->addItem(i.key()); if(mh != NULL && i.key() == mh->getName()) { QList item = mapList->findItems(mh->getName(), Qt::MatchExactly); item[0]->setSelected(true); PerMapParameterSet* p = params->perMap[mh->getName()]; QString vec3TypeName = QString::fromStdString(nameOfType(PFP2::VEC3())); unsigned int j = 0; const AttributeHash& attribs = mh->getAttributesList(VERTEX); for(AttributeHash::const_iterator i = attribs.constBegin(); i != attribs.constEnd(); ++i) { if(i.value() == vec3TypeName) { combo_positionAttribute->addItem(i.key()); if(i.key() == QString::fromStdString(p->positionAttribute.name())) combo_positionAttribute->setCurrentIndex(j); ++j; } } slider_edgesScaleFactor->setSliderPosition(p->edgesScaleFactor * 100.0); slider_facesScaleFactor->setSliderPosition(p->facesScaleFactor * 100.0); } ++i; } b_refreshingUI = false; } void RenderTopoSurfaceDockTab::selectedMapChanged() { if(!b_refreshingUI) { QList currentItems = mapList->selectedItems(); if(!currentItems.empty()) m_plugin->changeSelectedMap(m_window->getCurrentView(), m_window->getMap(currentItems[0]->text()), true); } } void RenderTopoSurfaceDockTab::positionAttributeChanged(int index) { if(!b_refreshingUI) { View* view = m_window->getCurrentView(); MapHandlerGen* map = m_currentParams->selectedMap; m_plugin->changePositionAttribute(view, map, map->getAttribute(combo_positionAttribute->currentText()), true); } } void RenderTopoSurfaceDockTab::facesScaleFactorChanged(int i) { if(!b_refreshingUI) { View* view = m_window->getCurrentView(); MapHandlerGen* map = m_currentParams->selectedMap; m_plugin->changeEdgesScaleFactor(view, map, i, true); } } void RenderTopoSurfaceDockTab::edgesScaleFactorChanged(int i) { if(!b_refreshingUI) { View* view = m_window->getCurrentView(); MapHandlerGen* map = m_currentParams->selectedMap; m_plugin->changeFacesScaleFactor(view, map, i, true); } } } // namespace SCHNApps } // namespace CGoGN