diff --git a/src/meshlab/layerDialog.cpp b/src/meshlab/layerDialog.cpp index 893b0fccb..2b7261571 100644 --- a/src/meshlab/layerDialog.cpp +++ b/src/meshlab/layerDialog.cpp @@ -373,7 +373,8 @@ void LayerDialog::updateTable(const MLSceneGLSharedDataContext::PerMeshRendering rendertb->setIconSize(QSize(16,16)); rendertb->setAccordingToRenderingData((*rdit)); connect(rendertb,SIGNAL(updateRenderingDataAccordingToActions(int,const QList&)),this,SLOT(updateRenderingDataAccordingToActions(int,const QList&))); - MeshTreeWidgetItem* item = new MeshTreeWidgetItem(mmd,ui->meshTreeWidget,rendertb); + connect(rendertb,SIGNAL(activatedAction(MLRenderingAction*)),this,SLOT(actionActivated(MLRenderingAction*))); + MeshTreeWidgetItem* item = new MeshTreeWidgetItem(mmd,ui->meshTreeWidget,rendertb); item->setExpanded(expandedMap.value(qMakePair(item->_meshid,-1))); /* QTreeWidgetItem* childitem = new QTreeWidgetItem(); item->addChild(childitem); @@ -732,6 +733,15 @@ void LayerDialog::updateRenderingDataAccordingToActions(int meshid,const QListGLA()->update(); } +void LayerDialog::actionActivated( MLRenderingAction* ract ) +{ + if ((mw == NULL) || (ract == NULL)) + return; + MLRenderingData dt; + mw->getRenderingData(ract->meshId(),dt); + tabw->switchTab(ract->meshId(),ract->text(),dt); +} + MeshTreeWidgetItem::MeshTreeWidgetItem(MeshModel* meshmodel,QTreeWidget* tree,MLRenderingToolbar* rendertoolbar) :QTreeWidgetItem(tree),_rendertoolbar(rendertoolbar) { @@ -751,16 +761,6 @@ MeshTreeWidgetItem::MeshTreeWidgetItem(MeshModel* meshmodel,QTreeWidget* tree,ML } } -MeshTreeWidgetItem::MeshTreeWidgetItem(QTreeWidget* tree,MLRenderingToolbar* rendertoolbar) - :QTreeWidgetItem(tree),_rendertoolbar(rendertoolbar) -{ - setIcon(0,QIcon(":/images/layer_eye_open.png")); - - if (rendertoolbar != NULL) - tree->setItemWidget(this,3,_rendertoolbar); - _meshid = -1; -} - MeshTreeWidgetItem::~MeshTreeWidgetItem() { /*if (addwid->parent() == NULL) diff --git a/src/meshlab/layerDialog.h b/src/meshlab/layerDialog.h index d1193d493..d967be4a4 100644 --- a/src/meshlab/layerDialog.h +++ b/src/meshlab/layerDialog.h @@ -56,7 +56,6 @@ class MeshTreeWidgetItem : public QTreeWidgetItem { public: MeshTreeWidgetItem(MeshModel* meshmodel,QTreeWidget* tree,MLRenderingToolbar* rendertoolbar); - MeshTreeWidgetItem(QTreeWidget* tree,MLRenderingToolbar* rendertoolbar); ~MeshTreeWidgetItem(); void updateVisibility(bool isvisible); @@ -123,6 +122,7 @@ public slots: void showContextMenu(const QPoint& pos); void adaptLayout(QTreeWidgetItem * item); void updateRenderingDataAccordingToActions(int meshid,const QList&); + void actionActivated(MLRenderingAction* ract); private: Ui::layerDialog* ui; diff --git a/src/meshlab/ml_render_gui.cpp b/src/meshlab/ml_render_gui.cpp index 594ea6e78..4943c7c86 100644 --- a/src/meshlab/ml_render_gui.cpp +++ b/src/meshlab/ml_render_gui.cpp @@ -56,7 +56,11 @@ void MLRenderingToolbar::toggle( QAction* act) } } if (ract != NULL) + { emit updateRenderingDataAccordingToActions(_meshid,_acts); + if (ract->isChecked()) + emit activatedAction(ract); + } } void MLRenderingToolbar::setAccordingToRenderingData(const MLRenderingData& dt) @@ -89,88 +93,6 @@ QList& MLRenderingToolbar::getRenderingActions() } - -MLRenderingSolidParametersFrame::MLRenderingSolidParametersFrame(QWidget* parent ) - :MLRenderingParametersFrame(-1,parent) -{ - initGui(); -} - -MLRenderingSolidParametersFrame::MLRenderingSolidParametersFrame( int meshid,QWidget* parent ) - :MLRenderingParametersFrame(meshid,parent) -{ - initGui(); -} - -void MLRenderingSolidParametersFrame::initGui() -{ - setAutoFillBackground(true); - QGridLayout* layout = new QGridLayout(); - _shadingtool = new MLRenderingToolbar(_meshid,true,this); - QLabel* shadelab = new QLabel("Shading",this); - QFont boldfont; - boldfont.setBold(true); - shadelab->setFont(boldfont); - layout->addWidget(shadelab,0,0,Qt::AlignLeft); - _shadingtool->addRenderingAction(new MLRenderingSmoothAction(_meshid,this)); - _shadingtool->addRenderingAction(new MLRenderingFlatAction(_meshid,this)); - layout->addWidget(_shadingtool,0,1,Qt::AlignLeft); - connect(_shadingtool,SIGNAL(updateRenderingDataAccordingToActions(int,const QList&)),this,SIGNAL(updateRenderingDataAccordingToActions(int,const QList&))); - - QLabel* colorlab = new QLabel("Color",this); - colorlab->setFont(boldfont); - layout->addWidget(colorlab,1,0,Qt::AlignLeft); - _colortool = new MLRenderingToolbar(_meshid,true,this); - _colortool->addRenderingAction(new MLRenderingPerVertexColorAction(_meshid,this)); - _colortool->addRenderingAction(new MLRenderingPerFaceColorAction(_meshid,this)); - _colortool->addRenderingAction(new MLRenderingPerMeshColorAction(_meshid,this)); - _colortool->addRenderingAction(new MLRenderingUserDefinedColorAction(vcg::GLMeshAttributesInfo::PR_SOLID,_meshid,this)); - layout->addWidget(_colortool,1,1,Qt::AlignLeft); - connect(_colortool,SIGNAL(updateRenderingDataAccordingToActions(int,const QList&)),this,SIGNAL(updateRenderingDataAccordingToActions(int,const QList&))); - - QLabel* textlab = new QLabel("Texture Coord",this); - textlab->setFont(boldfont); - layout->addWidget(textlab,2,0,Qt::AlignLeft); - _texttool = new MLRenderingToolbar(this); - _texttool->addRenderingAction(new MLRenderingPerVertTextCoordAction(_meshid,this)); - _texttool->addRenderingAction(new MLRenderingPerWedgeTextCoordAction(_meshid,this)); - layout->addWidget(_texttool,2,1,Qt::AlignLeft); - connect(_texttool,SIGNAL(updateRenderingDataAccordingToActions(int,const QList&)),this,SIGNAL(updateRenderingDataAccordingToActions(int,const QList&))); - setMinimumSize(layout->sizeHint()); - setLayout(layout); - showNormal(); - adjustSize(); -} - -void MLRenderingSolidParametersFrame::setPrimitiveButtonStatesAccordingToRenderingData( const MLRenderingData& dt ) -{ - _shadingtool->setAccordingToRenderingData(dt); - _colortool->setAccordingToRenderingData(dt); - _texttool->setAccordingToRenderingData(dt); -} - -void MLRenderingSolidParametersFrame::setAssociatedMeshId( int meshid ) -{ - _meshid = meshid; - _shadingtool->setAssociatedMeshId(meshid); - _colortool->setAssociatedMeshId(meshid); - _texttool->setAssociatedMeshId(meshid); -} - -MLRenderingSolidParametersFrame::~MLRenderingSolidParametersFrame() -{ - delete _shadingtool; - delete _colortool; - delete _texttool; -} - -void MLRenderingSolidParametersFrame::getAllRenderingActions( QList& acts ) -{ - acts.append(_shadingtool->getRenderingActions()); - acts.append(_colortool->getRenderingActions()); - acts.append(_texttool->getRenderingActions()); -} - //MLRenderingParametersFrame::~MLRenderingParametersFrame() //{ // @@ -231,6 +153,9 @@ void MLRenderingSideToolbar::initGui() } + + + MLRenderingParametersFrame::MLRenderingParametersFrame( int meshid,QWidget* parent ) :QFrame(parent),_meshid(-1) { @@ -247,21 +172,359 @@ MLRenderingParametersFrame* MLRenderingParametersFrame::factory( MLRenderingActi if (qobject_cast(act) != NULL) return new MLRenderingSolidParametersFrame(meshid,parent); - /*if (qobject_cast(act) != NULL) + if (qobject_cast(act) != NULL) return new MLRenderingPointsParametersFrame(meshid,parent); if (qobject_cast(act) != NULL) return new MLRenderingWireParametersFrame(meshid,parent); if (qobject_cast(act) != NULL) - return new MLRenderingLightingParametersFrame(meshid,parent);*/ + return new MLRenderingLightingParametersFrame(meshid,parent); - /*if (qobject_cast(act) != NULL) - return new MLRenderingSolidParametersFrame(meshid,parent);*/ + if (qobject_cast(act) != NULL) + return new MLRenderingBBoxParametersFrame(meshid,parent); return NULL; } +MLRenderingSolidParametersFrame::MLRenderingSolidParametersFrame(QWidget* parent ) + :MLRenderingParametersFrame(-1,parent) +{ + initGui(); +} + +MLRenderingSolidParametersFrame::MLRenderingSolidParametersFrame( int meshid,QWidget* parent ) + :MLRenderingParametersFrame(meshid,parent) +{ + initGui(); +} + +void MLRenderingSolidParametersFrame::initGui() +{ + setAutoFillBackground(true); + QGridLayout* layout = new QGridLayout(); + _shadingtool = new MLRenderingToolbar(_meshid,true,this); + QLabel* shadelab = new QLabel("Shading",this); + QFont boldfont; + boldfont.setBold(true); + shadelab->setFont(boldfont); + layout->addWidget(shadelab,0,0,Qt::AlignLeft); + _shadingtool->addRenderingAction(new MLRenderingSmoothAction(_meshid,this)); + _shadingtool->addRenderingAction(new MLRenderingFlatAction(_meshid,this)); + layout->addWidget(_shadingtool,0,1,Qt::AlignLeft); + connect(_shadingtool,SIGNAL(updateRenderingDataAccordingToActions(int,const QList&)),this,SIGNAL(updateRenderingDataAccordingToActions(int,const QList&))); + + + QLabel* colorlab = new QLabel("Color",this); + colorlab->setFont(boldfont); + layout->addWidget(colorlab,1,0,Qt::AlignLeft); + _colortool = new MLRenderingToolbar(_meshid,true,this); + _colortool->addRenderingAction(new MLRenderingPerVertexColorAction(_meshid,this)); + _colortool->addRenderingAction(new MLRenderingPerFaceColorAction(_meshid,this)); + _colortool->addRenderingAction(new MLRenderingPerMeshColorAction(_meshid,this)); + _colortool->addRenderingAction(new MLRenderingUserDefinedColorAction(vcg::GLMeshAttributesInfo::PR_SOLID,_meshid,this)); + layout->addWidget(_colortool,1,1,Qt::AlignLeft); + connect(_colortool,SIGNAL(updateRenderingDataAccordingToActions(int,const QList&)),this,SIGNAL(updateRenderingDataAccordingToActions(int,const QList&))); + + + QLabel* textlab = new QLabel("Texture Coord",this); + textlab->setFont(boldfont); + layout->addWidget(textlab,2,0,Qt::AlignLeft); + _texttool = new MLRenderingToolbar(this); + _texttool->addRenderingAction(new MLRenderingPerVertTextCoordAction(_meshid,this)); + _texttool->addRenderingAction(new MLRenderingPerWedgeTextCoordAction(_meshid,this)); + layout->addWidget(_texttool,2,1,Qt::AlignLeft); + connect(_texttool,SIGNAL(updateRenderingDataAccordingToActions(int,const QList&)),this,SIGNAL(updateRenderingDataAccordingToActions(int,const QList&))); + + setMinimumSize(layout->sizeHint()); + setLayout(layout); + showNormal(); + adjustSize(); +} + +void MLRenderingSolidParametersFrame::setPrimitiveButtonStatesAccordingToRenderingData( const MLRenderingData& dt ) +{ + _shadingtool->setAccordingToRenderingData(dt); + _colortool->setAccordingToRenderingData(dt); + _texttool->setAccordingToRenderingData(dt); +} + +void MLRenderingSolidParametersFrame::setAssociatedMeshId( int meshid ) +{ + _meshid = meshid; + _shadingtool->setAssociatedMeshId(meshid); + _colortool->setAssociatedMeshId(meshid); + _texttool->setAssociatedMeshId(meshid); +} + +MLRenderingSolidParametersFrame::~MLRenderingSolidParametersFrame() +{ + delete _shadingtool; + delete _colortool; + delete _texttool; +} + +MLRenderingWireParametersFrame::MLRenderingWireParametersFrame( QWidget* parent ) + :MLRenderingParametersFrame(-1,parent) +{ + initGui(); +} + +MLRenderingWireParametersFrame::MLRenderingWireParametersFrame( int meshid,QWidget* parent ) + :MLRenderingParametersFrame(meshid,parent) +{ + initGui(); +} + +MLRenderingWireParametersFrame::~MLRenderingWireParametersFrame() +{ + delete _wiretool; + delete _shadingtool; + delete _colortool; + delete _texttool; +} + +void MLRenderingWireParametersFrame::setPrimitiveButtonStatesAccordingToRenderingData( const MLRenderingData& dt ) +{ + _shadingtool->setAccordingToRenderingData(dt); + _colortool->setAccordingToRenderingData(dt); + _texttool->setAccordingToRenderingData(dt); + _wiretool->setAccordingToRenderingData(dt); +} + +void MLRenderingWireParametersFrame::setAssociatedMeshId( int meshid ) +{ + _meshid = meshid; + _shadingtool->setAssociatedMeshId(meshid); + _colortool->setAssociatedMeshId(meshid); + _texttool->setAssociatedMeshId(meshid); + _wiretool->setAssociatedMeshId(meshid); +} + +void MLRenderingWireParametersFrame::initGui() +{ + setAutoFillBackground(true); + QGridLayout* layout = new QGridLayout(); + _shadingtool = new MLRenderingToolbar(_meshid,true,this); + QLabel* shadelab = new QLabel("Shading",this); + QFont boldfont; + boldfont.setBold(true); + shadelab->setFont(boldfont); + layout->addWidget(shadelab,0,0,Qt::AlignLeft); + _shadingtool->addRenderingAction(new MLRenderingSmoothAction(_meshid,this)); + _shadingtool->addRenderingAction(new MLRenderingFlatAction(_meshid,this)); + layout->addWidget(_shadingtool,0,1,Qt::AlignLeft); + connect(_shadingtool,SIGNAL(updateRenderingDataAccordingToActions(int,const QList&)),this,SIGNAL(updateRenderingDataAccordingToActions(int,const QList&))); + + QLabel* colorlab = new QLabel("Color",this); + colorlab->setFont(boldfont); + layout->addWidget(colorlab,1,0,Qt::AlignLeft); + _colortool = new MLRenderingToolbar(_meshid,true,this); + _colortool->addRenderingAction(new MLRenderingPerVertexColorAction(_meshid,this)); + _colortool->addRenderingAction(new MLRenderingPerFaceColorAction(_meshid,this)); + _colortool->addRenderingAction(new MLRenderingPerMeshColorAction(_meshid,this)); + _colortool->addRenderingAction(new MLRenderingUserDefinedColorAction(vcg::GLMeshAttributesInfo::PR_WIREFRAME_TRIANGLES,_meshid,this)); + layout->addWidget(_colortool,1,1,Qt::AlignLeft); + connect(_colortool,SIGNAL(updateRenderingDataAccordingToActions(int,const QList&)),this,SIGNAL(updateRenderingDataAccordingToActions(int,const QList&))); + + QLabel* textlab = new QLabel("Texture Coord",this); + textlab->setFont(boldfont); + layout->addWidget(textlab,2,0,Qt::AlignLeft); + _texttool = new MLRenderingToolbar(this); + _texttool->addRenderingAction(new MLRenderingPerVertTextCoordAction(_meshid,this)); + _texttool->addRenderingAction(new MLRenderingPerWedgeTextCoordAction(_meshid,this)); + layout->addWidget(_texttool,2,1,Qt::AlignLeft); + connect(_texttool,SIGNAL(updateRenderingDataAccordingToActions(int,const QList&)),this,SIGNAL(updateRenderingDataAccordingToActions(int,const QList&))); + + QLabel* wirelab = new QLabel("Wire Modality",this); + wirelab->setFont(boldfont); + layout->addWidget(wirelab,3,0,Qt::AlignLeft); + _wiretool = new MLRenderingToolbar(this); + _wiretool->setToolButtonStyle(Qt::ToolButtonTextOnly); + _wiretool->addRenderingAction(new MLRenderingWireAction(_meshid,this)); + _wiretool->addRenderingAction(new MLRenderingEdgeWireAction(_meshid,this)); + layout->addWidget(_wiretool,3,1,Qt::AlignLeft); + connect(_wiretool,SIGNAL(updateRenderingDataAccordingToActions(int,const QList&)),this,SIGNAL(updateRenderingDataAccordingToActions(int,const QList&))); + + setMinimumSize(layout->sizeHint()); + setLayout(layout); + showNormal(); + adjustSize(); +} + +MLRenderingPointsParametersFrame::MLRenderingPointsParametersFrame( QWidget* parent ) + :MLRenderingParametersFrame(-1,parent) +{ + initGui(); +} + + +MLRenderingPointsParametersFrame::MLRenderingPointsParametersFrame( int meshid,QWidget* parent ) + :MLRenderingParametersFrame(meshid,parent) +{ + initGui(); +} + +MLRenderingPointsParametersFrame::~MLRenderingPointsParametersFrame() +{ + delete _shadingtool; + delete _colortool; + delete _texttool; +} + +void MLRenderingPointsParametersFrame::setPrimitiveButtonStatesAccordingToRenderingData( const MLRenderingData& dt ) +{ + _shadingtool->setAccordingToRenderingData(dt); + _colortool->setAccordingToRenderingData(dt); + _texttool->setAccordingToRenderingData(dt); +} + +void MLRenderingPointsParametersFrame::setAssociatedMeshId( int meshid ) +{ + _meshid = meshid; + _shadingtool->setAssociatedMeshId(meshid); + _colortool->setAssociatedMeshId(meshid); + _texttool->setAssociatedMeshId(meshid); +} + +void MLRenderingPointsParametersFrame::initGui() +{ + setAutoFillBackground(true); + QGridLayout* layout = new QGridLayout(); + _shadingtool = new MLRenderingToolbar(_meshid,true,this); + QLabel* shadelab = new QLabel("Shading",this); + QFont boldfont; + boldfont.setBold(true); + shadelab->setFont(boldfont); + layout->addWidget(shadelab,0,0,Qt::AlignLeft); + _shadingtool->addRenderingAction(new MLRenderingSmoothAction(_meshid,this)); + layout->addWidget(_shadingtool,0,1,Qt::AlignLeft); + connect(_shadingtool,SIGNAL(updateRenderingDataAccordingToActions(int,const QList&)),this,SIGNAL(updateRenderingDataAccordingToActions(int,const QList&))); + + QLabel* colorlab = new QLabel("Color",this); + colorlab->setFont(boldfont); + layout->addWidget(colorlab,1,0,Qt::AlignLeft); + _colortool = new MLRenderingToolbar(_meshid,true,this); + _colortool->addRenderingAction(new MLRenderingPerVertexColorAction(_meshid,this)); + _colortool->addRenderingAction(new MLRenderingPerMeshColorAction(_meshid,this)); + _colortool->addRenderingAction(new MLRenderingUserDefinedColorAction(vcg::GLMeshAttributesInfo::PR_POINTS,_meshid,this)); + layout->addWidget(_colortool,1,1,Qt::AlignLeft); + connect(_colortool,SIGNAL(updateRenderingDataAccordingToActions(int,const QList&)),this,SIGNAL(updateRenderingDataAccordingToActions(int,const QList&))); + + QLabel* textlab = new QLabel("Texture Coord",this); + textlab->setFont(boldfont); + layout->addWidget(textlab,2,0,Qt::AlignLeft); + _texttool = new MLRenderingToolbar(this); + _texttool->addRenderingAction(new MLRenderingPerVertTextCoordAction(_meshid,this)); + layout->addWidget(_texttool,2,1,Qt::AlignLeft); + connect(_texttool,SIGNAL(updateRenderingDataAccordingToActions(int,const QList&)),this,SIGNAL(updateRenderingDataAccordingToActions(int,const QList&))); + + setMinimumSize(layout->sizeHint()); + setLayout(layout); + showNormal(); + adjustSize(); +} + +MLRenderingLightingParametersFrame::MLRenderingLightingParametersFrame( QWidget* parent ) + :MLRenderingParametersFrame(-1,parent) +{ + initGui(); +} + +MLRenderingLightingParametersFrame::MLRenderingLightingParametersFrame( int meshid,QWidget* parent ) + :MLRenderingParametersFrame(meshid,parent) +{ + initGui(); +} + + +MLRenderingLightingParametersFrame::~MLRenderingLightingParametersFrame() +{ + delete _lighttool; +} + +void MLRenderingLightingParametersFrame::setPrimitiveButtonStatesAccordingToRenderingData( const MLRenderingData& dt ) +{ + _lighttool->setAccordingToRenderingData(dt); +} + +void MLRenderingLightingParametersFrame::setAssociatedMeshId( int meshid ) +{ + _meshid = meshid; + _lighttool->setAssociatedMeshId(meshid); +} + +void MLRenderingLightingParametersFrame::initGui() +{ + setAutoFillBackground(true); + QGridLayout* layout = new QGridLayout(); + _lighttool = new MLRenderingToolbar(_meshid,true,this); + QLabel* lightlab = new QLabel("Lighting Options",this); + QFont boldfont; + boldfont.setBold(true); + lightlab->setFont(boldfont); + layout->addWidget(lightlab,0,0,Qt::AlignLeft); + _lighttool->addRenderingAction(new MLRenderingFancyLightingAction(_meshid,this)); + _lighttool->addRenderingAction(new MLRenderingDoubleLightingAction(_meshid,this)); + layout->addWidget(_lighttool,0,1,Qt::AlignLeft); + connect(_lighttool,SIGNAL(updateRenderingDataAccordingToActions(int,const QList&)),this,SIGNAL(updateRenderingDataAccordingToActions(int,const QList&))); + + setMinimumSize(layout->sizeHint()); + setLayout(layout); + showNormal(); + adjustSize(); +} + +MLRenderingBBoxParametersFrame::MLRenderingBBoxParametersFrame( QWidget* parent ) + :MLRenderingParametersFrame(-1,parent) +{ + initGui(); +} + +MLRenderingBBoxParametersFrame::MLRenderingBBoxParametersFrame( int meshid,QWidget* parent ) + :MLRenderingParametersFrame(meshid,parent) +{ + initGui(); +} + +MLRenderingBBoxParametersFrame::~MLRenderingBBoxParametersFrame() +{ + delete _colortool; +} + +void MLRenderingBBoxParametersFrame::setPrimitiveButtonStatesAccordingToRenderingData( const MLRenderingData& dt ) +{ + _colortool->setAccordingToRenderingData(dt); +} + +void MLRenderingBBoxParametersFrame::setAssociatedMeshId( int meshid ) +{ + _meshid = meshid; + _colortool->setAssociatedMeshId(meshid); +} + +void MLRenderingBBoxParametersFrame::initGui() +{ + setAutoFillBackground(true); + QGridLayout* layout = new QGridLayout(); + QLabel* colorlab = new QLabel("Color",this); + QFont boldfont; + boldfont.setBold(true); + colorlab->setFont(boldfont); + layout->addWidget(colorlab,0,0,Qt::AlignLeft); + _colortool = new MLRenderingToolbar(_meshid,true,this); + _colortool->addRenderingAction(new MLRenderingPerMeshColorAction(_meshid,this)); + _colortool->addRenderingAction(new MLRenderingUserDefinedColorAction(vcg::GLMeshAttributesInfo::PR_BBOX,_meshid,this)); + layout->addWidget(_colortool,0,1,Qt::AlignLeft); + connect(_colortool,SIGNAL(updateRenderingDataAccordingToActions(int,const QList&)),this,SIGNAL(updateRenderingDataAccordingToActions(int,const QList&))); + + setMinimumSize(layout->sizeHint()); + setLayout(layout); + showNormal(); + adjustSize(); +} + + MLRenderingParametersTab::MLRenderingParametersTab( int meshid,const QList& tab, QWidget* parent ) :QTabWidget(parent),_meshid(meshid) { @@ -276,11 +539,12 @@ void MLRenderingParametersTab::setAssociatedMeshId( int meshid ) } -void MLRenderingParametersTab::switchTab( const QString& name ) +void MLRenderingParametersTab::switchTab(int meshid,const QString& tabname,const MLRenderingData& dt) { - QMap::iterator itt = _parframe.find(name); + QMap::iterator itt = _parframe.find(tabname); if (itt != _parframe.end()) setCurrentWidget((*itt)); + setAssociatedMeshIdAndRenderingData(meshid,dt); } void MLRenderingParametersTab::setPrimitiveButtonStatesAccordingToRenderingData(const MLRenderingData& dt ) diff --git a/src/meshlab/ml_render_gui.h b/src/meshlab/ml_render_gui.h index 631418baf..cc5ef0f7f 100644 --- a/src/meshlab/ml_render_gui.h +++ b/src/meshlab/ml_render_gui.h @@ -58,6 +58,7 @@ private slots: signals: void updateRenderingDataAccordingToActions(int,const QList& acts); + void activatedAction(MLRenderingAction*); private: //if meshid is -1 it means that the actions are intended to be deployed to all the document and not to a specific mesh model @@ -85,7 +86,6 @@ public: virtual ~MLRenderingParametersFrame(); virtual void setPrimitiveButtonStatesAccordingToRenderingData(const MLRenderingData& dt) = 0; virtual void setAssociatedMeshId(int meshid) = 0; - virtual void getAllRenderingActions(QList& acts) = 0; static MLRenderingParametersFrame* factory(MLRenderingAction* act,int meshid,QWidget* parent); static void destroy(MLRenderingParametersFrame* pf); @@ -105,7 +105,6 @@ public: ~MLRenderingSolidParametersFrame(); void setPrimitiveButtonStatesAccordingToRenderingData(const MLRenderingData& dt); void setAssociatedMeshId(int meshid); - void getAllRenderingActions(QList& acts); private: void initGui(); @@ -114,22 +113,71 @@ private: MLRenderingToolbar* _texttool; }; -//class MLRenderingSolidParametersFrame : public MLRenderingParametersFrame -//{ -// Q_OBJECT -//public: -// MLRenderingSolidParametersFrame(QWidget* parent); -// MLRenderingSolidParametersFrame(int meshid,QWidget* parent); -// ~MLRenderingSolidParametersFrame(); -// void setPrimitiveButtonStatesAccordingToRenderingData(const MLRenderingData& dt); -// void setAssociatedMeshId(int meshid); -// -//private: -// void initGui(); -// MLRenderingToolbar* _shadingtool; -// MLRenderingToolbar* _colortool; -// MLRenderingToolbar* _texttool; -//}; +class MLRenderingWireParametersFrame : public MLRenderingParametersFrame +{ + Q_OBJECT +public: + MLRenderingWireParametersFrame(QWidget* parent); + MLRenderingWireParametersFrame(int meshid,QWidget* parent); + ~MLRenderingWireParametersFrame(); + void setPrimitiveButtonStatesAccordingToRenderingData(const MLRenderingData& dt); + void setAssociatedMeshId(int meshid); + +private: + void initGui(); + MLRenderingToolbar* _wiretool; + MLRenderingToolbar* _shadingtool; + MLRenderingToolbar* _colortool; + MLRenderingToolbar* _texttool; +}; + +class MLRenderingPointsParametersFrame : public MLRenderingParametersFrame +{ + Q_OBJECT +public: + MLRenderingPointsParametersFrame(QWidget* parent); + MLRenderingPointsParametersFrame(int meshid,QWidget* parent); + ~MLRenderingPointsParametersFrame(); + void setPrimitiveButtonStatesAccordingToRenderingData(const MLRenderingData& dt); + void setAssociatedMeshId(int meshid); + +private: + void initGui(); + MLRenderingToolbar* _shadingtool; + MLRenderingToolbar* _colortool; + MLRenderingToolbar* _texttool; +}; + +class MLRenderingLightingParametersFrame : public MLRenderingParametersFrame +{ + Q_OBJECT +public: + MLRenderingLightingParametersFrame(QWidget* parent); + MLRenderingLightingParametersFrame(int meshid,QWidget* parent); + ~MLRenderingLightingParametersFrame(); + void setPrimitiveButtonStatesAccordingToRenderingData(const MLRenderingData& dt); + void setAssociatedMeshId(int meshid); + +private: + void initGui(); + MLRenderingToolbar* _lighttool; +}; + +class MLRenderingBBoxParametersFrame : public MLRenderingParametersFrame +{ + Q_OBJECT +public: + MLRenderingBBoxParametersFrame(QWidget* parent); + MLRenderingBBoxParametersFrame(int meshid,QWidget* parent); + ~MLRenderingBBoxParametersFrame(); + void setPrimitiveButtonStatesAccordingToRenderingData(const MLRenderingData& dt); + void setAssociatedMeshId(int meshid); + +private: + void initGui(); + MLRenderingToolbar* _colortool; +}; + // // //class MLRenderingSolidParametersFrame : public MLRenderingParametersFrame @@ -182,7 +230,7 @@ private: int _meshid; public slots: - void switchTab(const QString& name); + void switchTab(int meshid,const QString& tabname,const MLRenderingData& dt); void setAssociatedMeshId(int meshid); signals: