From c958fba997aa026b2c00dd86a28572f6b33db421 Mon Sep 17 00:00:00 2001 From: Guido Ranzuglia granzuglia Date: Wed, 5 Dec 2012 15:55:23 +0000 Subject: [PATCH] - eventually removed the MeshLab historical bug "you cannot click a check box in the first row of dialog" --- src/meshlab/filterScriptDialog.cpp | 27 ++- src/meshlab/layerDialog.cpp | 27 ++- src/meshlab/layerDialog.h | 1 + src/meshlab/stdpardialog.cpp | 263 ++++++++++++++++++++--------- src/meshlab/stdpardialog.h | 34 +++- 5 files changed, 252 insertions(+), 100 deletions(-) diff --git a/src/meshlab/filterScriptDialog.cpp b/src/meshlab/filterScriptDialog.cpp index 0b6349bcf..e9ec8a665 100644 --- a/src/meshlab/filterScriptDialog.cpp +++ b/src/meshlab/filterScriptDialog.cpp @@ -112,17 +112,32 @@ void FilterScriptDialog::clearScript() void FilterScriptDialog::saveScript() { - QString fileName = QFileDialog::getSaveFileName(this,tr("Save Filter Script File"),".", "*.mlx"); + QString filt; + QString mlx("mlx"); + QString xml("xml"); + QString mlxast("(*." + mlx + ")"); + QString xmlast("(*." + xml + ")"); + QString fileName = QFileDialog::getSaveFileName(this,tr("Save Filter Script File"),".", "MeshLab Scripting File Format " + mlxast + ";;Extensible Markup Language " + xmlast,&filt); if (fileName.isEmpty()) return; - QFileInfo fi(fileName); - if(fi.suffix().toLower()!="mlx") - fileName.append(".mlx"); - scriptPtr->save(fileName); + + QFileInfo fi(fileName); + QString suf(fi.suffix().toLower()); + if (filt.contains(mlxast)) + { + if(suf != mlx) + fileName.append("." + mlx); + } + else + { + if(suf != xml) + fileName.append("." + xml); + } + scriptPtr->save(fileName); } void FilterScriptDialog::openScript() { - QString fileName = QFileDialog::getOpenFileName(this,tr("Open Filter Script File"),".", "*.mlx"); + QString fileName = QFileDialog::getOpenFileName(this,tr("Open Filter Script File"),".", "MeshLab Scripting File Format (*.mlx);;Extensible Markup Language (*.xml)"); if (fileName.isEmpty()) return; scriptPtr->open(fileName); setScript(scriptPtr); diff --git a/src/meshlab/layerDialog.cpp b/src/meshlab/layerDialog.cpp index 479aa3c71..3edd3ae2c 100644 --- a/src/meshlab/layerDialog.cpp +++ b/src/meshlab/layerDialog.cpp @@ -571,10 +571,11 @@ DecoratorParamsTreeWidget::DecoratorParamsTreeWidget(QAction* act,MainWindow *mw savebut = new QPushButton("Save",parent); resetbut = new QPushButton("Reset",parent); loadbut = new QPushButton("Load",parent); - dialoglayout->addWidget(frame,0,0,1,3); - dialoglayout->addWidget(savebut,1,0); - dialoglayout->addWidget(resetbut,1,1); - dialoglayout->addWidget(loadbut,1,2); + int countel = frame->stdfieldwidgets.size(); + dialoglayout->addWidget(savebut,countel,0); + dialoglayout->addWidget(resetbut,countel,1); + dialoglayout->addWidget(loadbut,countel,2); + dialoglayout->addWidget(frame,0,0,countel,3); this->setLayout(dialoglayout); this->layout()->setContentsMargins(0,0,0,0); frame->layout()->setContentsMargins(0,0,0,0); @@ -584,9 +585,10 @@ DecoratorParamsTreeWidget::DecoratorParamsTreeWidget(QAction* act,MainWindow *mw savebut->setFont(font); resetbut->setFont(font); loadbut->setFont(font); - savebut ->setMaximumSize( savebut ->maximumSize().width(), savebut ->minimumSizeHint().height()/2); - resetbut->setMaximumSize( resetbut->maximumSize().width(), resetbut->minimumSizeHint().height()/2); - loadbut ->setMaximumSize( loadbut ->maximumSize().width(), loadbut ->minimumSizeHint().height()/2); + + savebut ->setMaximumSize( savebut ->maximumSize().width(), savebut ->minimumSizeHint().height()/osDependentButtonHeightScaleFactor()); + resetbut->setMaximumSize( resetbut->maximumSize().width(), resetbut->minimumSizeHint().height()/osDependentButtonHeightScaleFactor()); + loadbut ->setMaximumSize( loadbut ->maximumSize().width(), loadbut ->minimumSizeHint().height()/osDependentButtonHeightScaleFactor()); connect(frame,SIGNAL(parameterChanged()),this,SLOT(apply())); connect(resetbut,SIGNAL(clicked()),this,SLOT(reset())); @@ -657,3 +659,14 @@ void DecoratorParamsTreeWidget::load() } apply(); } + +float DecoratorParamsTreeWidget::osDependentButtonHeightScaleFactor() +{ +#if defined(Q_OS_WIN) + return 1.5f; +#elif defined(Q_OS_MAC) + return 2.0f; +#else + return 1.5f; +#endif +} \ No newline at end of file diff --git a/src/meshlab/layerDialog.h b/src/meshlab/layerDialog.h index 1a4db23d8..1bf26cf72 100644 --- a/src/meshlab/layerDialog.h +++ b/src/meshlab/layerDialog.h @@ -77,6 +77,7 @@ public slots: void load(); private: + float osDependentButtonHeightScaleFactor(); MainWindow* mainWin; StdParFrame* frame; RichParameterSet tmpSet; diff --git a/src/meshlab/stdpardialog.cpp b/src/meshlab/stdpardialog.cpp index dc60036a6..8427a8906 100644 --- a/src/meshlab/stdpardialog.cpp +++ b/src/meshlab/stdpardialog.cpp @@ -195,7 +195,7 @@ void MeshlabStdDialog::loadFrameContent(MeshDocument *mdPt) void StdParFrame::loadFrameContent(RichParameterSet &curParSet,MeshDocument * /*_mdPt*/ ) { if(layout()) delete layout(); - setLayout(new QGridLayout()); + QGridLayout* glay = new QGridLayout(); // QGridLayout *vlayout = new QGridLayout(this); // vLayout->setAlignment(Qt::AlignTop); RichWidgetInterfaceConstructor rwc(this); @@ -206,9 +206,14 @@ void StdParFrame::loadFrameContent(RichParameterSet &curParSet,MeshDocument * /* //vLayout->addWidget(rwc.lastCreated,i,0,1,1,Qt::AlignTop); stdfieldwidgets.push_back(rwc.lastCreated); helpList.push_back(rwc.lastCreated->helpLab); + //glay->addItem(rwc.lastCreated->leftItem(),i,0); + //glay->addItem(rwc.lastCreated->centralItem(),i,1); + //glay->addItem(rwc.lastCreated->rightItem(),i,2); + rwc.lastCreated->addWidgetToGridLayout(glay,i); + } // end for each parameter - -// this->setMinimumSize(vLayout->sizeHint()); + setLayout(glay); + this->setMinimumSize(glay->sizeHint()); this->showNormal(); this->adjustSize(); } @@ -358,10 +363,10 @@ MeshlabStdDialog::~MeshlabStdDialog() m_min = absd->min; m_max = absd->max; - fieldDesc = new QLabel(rp->pd->fieldDesc + " (abs and %)",p); + fieldDesc = new QLabel(rp->pd->fieldDesc + " (abs and %)",this); fieldDesc->setToolTip(rp->pd->tooltip); - absSB = new QDoubleSpinBox(p); - percSB = new QDoubleSpinBox(p); + absSB = new QDoubleSpinBox(this); + percSB = new QDoubleSpinBox(this); absSB->setMinimum(m_min-(m_max-m_min)); absSB->setMaximum(m_max*2); @@ -384,16 +389,16 @@ MeshlabStdDialog::~MeshlabStdDialog() QLabel *absLab=new QLabel(" world unit"); QLabel *percLab=new QLabel(" perc on"+QString("(%1 .. %2)").arg(m_min).arg(m_max)+""); - gridLay->addWidget(fieldDesc,row,0,Qt::AlignHCenter); + // gridLay->addWidget(fieldDesc,row,0,Qt::AlignHCenter); - QGridLayout* lay = new QGridLayout(p); - lay->addWidget(absLab,0,0,Qt::AlignHCenter); - lay->addWidget(percLab,0,1,Qt::AlignHCenter); + vlay = new QGridLayout(); + vlay->addWidget(absLab,0,0,Qt::AlignHCenter); + vlay->addWidget(percLab,0,1,Qt::AlignHCenter); - lay->addWidget(absSB,1,0,Qt::AlignTop); - lay->addWidget(percSB,1,1,Qt::AlignTop); + vlay->addWidget(absSB,1,0,Qt::AlignTop); + vlay->addWidget(percSB,1,1,Qt::AlignTop); - gridLay->addLayout(lay,row,1,Qt::AlignTop); + //gridLay->addLayout(lay,row,1,Qt::AlignTop); connect(absSB,SIGNAL(valueChanged(double)),this,SLOT(on_absSB_valueChanged(double))); connect(percSB,SIGNAL(valueChanged(double)),this,SLOT(on_percSB_valueChanged(double))); @@ -450,6 +455,15 @@ void AbsPercWidget::setWidgetValue( const Value& nv ) setValue(nv.getAbsPerc(),absd->min,absd->max); } +void AbsPercWidget::addWidgetToGridLayout( QGridLayout* lay,const int r ) +{ + if (lay != NULL) + { + lay->addWidget(fieldDesc,r,0,Qt::AlignLeft); + lay->addLayout(vlay,r,1,Qt::AlignTop); + } + MeshLabWidget::addWidgetToGridLayout(lay,r); +} /******************************************/ // Point3fWidget Implementation /******************************************/ @@ -461,12 +475,12 @@ Point3fWidget::Point3fWidget(QWidget *p, RichPoint3f* rpf, QWidget *gla_curr): M qDebug("Creating a Point3fWidget"); paramName = rpf->name; //int row = gridLay->rowCount() - 1; - descLab = new QLabel(rpf->pd->fieldDesc); + descLab = new QLabel(rpf->pd->fieldDesc,this); descLab->setToolTip(rpf->pd->fieldDesc); - gridLay->addWidget(descLab,row,0); + //gridLay->addWidget(descLab,row,0); - QHBoxLayout* lay = new QHBoxLayout(); - lay->setSpacing(0); + vlay = new QHBoxLayout(); + vlay->setSpacing(0); for(int i =0;i<3;++i) { coordSB[i]= new QLineEdit(this); @@ -481,30 +495,30 @@ Point3fWidget::Point3fWidget(QWidget *p, RichPoint3f* rpf, QWidget *gla_curr): M coordSB[i]->setValidator(new QDoubleValidator()); coordSB[i]->setAlignment(Qt::AlignRight); //this->addWidget(coordSB[i],1,Qt::AlignHCenter); - lay->addWidget(coordSB[i]); + vlay->addWidget(coordSB[i]); connect(coordSB[i],SIGNAL(textChanged(QString)),p,SIGNAL(parameterChanged())); } this->setValue(paramName,rp->val->getPoint3f()); if(gla_curr) // if we have a connection to the current glarea we can setup the additional button for getting the current view direction. { - getPoint3Button = new QPushButton("Get"); + getPoint3Button = new QPushButton("Get",this); getPoint3Button->setMaximumWidth(getPoint3Button->sizeHint().width()/2); getPoint3Button->setFlat(true); //getPoint3Button->setMinimumWidth(getPoint3Button->sizeHint().width()); //this->addWidget(getPoint3Button,0,Qt::AlignHCenter); - lay->addWidget(getPoint3Button); + vlay->addWidget(getPoint3Button); QStringList names; names << "View Dir"; names << "View Pos"; names << "Surf. Pos"; names << "Camera Pos"; - getPoint3Combo = new QComboBox(); + getPoint3Combo = new QComboBox(this); getPoint3Combo->addItems(names); //getPoint3Combo->setMinimumWidth(getPoint3Combo->sizeHint().width()); //this->addWidget(getPoint3Combo,0,Qt::AlignHCenter); - lay->addWidget(getPoint3Combo); + vlay->addWidget(getPoint3Combo); connect(getPoint3Button,SIGNAL(clicked()),this,SLOT(getPoint())); connect(getPoint3Combo,SIGNAL(currentIndexChanged(int)),this,SLOT(getPoint())); @@ -516,7 +530,7 @@ Point3fWidget::Point3fWidget(QWidget *p, RichPoint3f* rpf, QWidget *gla_curr): M connect(this,SIGNAL(askSurfacePos(QString)),gla_curr,SLOT(sendSurfacePos(QString))); connect(this,SIGNAL(askCameraPos(QString)),gla_curr,SLOT(sendCameraPos(QString))); } - gridLay->addLayout(lay,row,1,Qt::AlignTop); + //gridLay->addLayout(lay,row,1,Qt::AlignTop); } void Point3fWidget::getPoint() @@ -576,6 +590,15 @@ void Point3fWidget::setWidgetValue( const Value& nv ) coordSB[ii]->setText(QString::number(nv.getPoint3f()[ii],'g',3)); } +void Point3fWidget::addWidgetToGridLayout( QGridLayout* lay,const int r ) +{ + if (lay != NULL) + { + lay->addWidget(descLab,r,0); + lay->addLayout(vlay,r,1,Qt::AlignTop); + } + MeshLabWidget::addWidgetToGridLayout(lay,r); +} /******************************************/ // Matrix44fWidget Implementation /******************************************/ @@ -588,12 +611,11 @@ Matrix44fWidget::Matrix44fWidget(QWidget *p, RichMatrix44f* rpf, QWidget *gla_c paramName = rpf->name; //int row = gridLay->rowCount() - 1; - descLab = new QLabel(rpf->pd->fieldDesc,p); + descLab = new QLabel(rpf->pd->fieldDesc,this); descLab->setToolTip(rpf->pd->fieldDesc); - gridLay->addWidget(descLab,row,0,Qt::AlignTop); - - QVBoxLayout* lay = new QVBoxLayout(p); - QGridLayout* lay44 = new QGridLayout(p); + //gridLay->addWidget(descLab,row,0,Qt::AlignTop); + vlay = new QVBoxLayout(); + lay44 = new QGridLayout(this); @@ -616,15 +638,15 @@ Matrix44fWidget::Matrix44fWidget(QWidget *p, RichMatrix44f* rpf, QWidget *gla_c } this->setValue(paramName,rp->val->getMatrix44f()); - lay->addLayout(lay44); + vlay->addLayout(lay44); QPushButton * getMatrixButton = new QPushButton("Read from current layer"); - lay->addWidget(getMatrixButton); + vlay->addWidget(getMatrixButton); QPushButton * pasteMatrixButton = new QPushButton("Paste from clipboard"); - lay->addWidget(pasteMatrixButton); + vlay->addWidget(pasteMatrixButton); - gridLay->addLayout(lay,row,1,Qt::AlignTop); + //gridLay->addLayout(vlay,row,1,Qt::AlignTop); connect(gla_curr,SIGNAL(transmitMatrix(QString,vcg::Matrix44f)),this,SLOT(setValue(QString,vcg::Matrix44f))); connect(getMatrixButton,SIGNAL(clicked()),this,SLOT(getMatrix())); @@ -695,6 +717,15 @@ void Matrix44fWidget::setWidgetValue( const Value& nv ) coordSB[ii]->setText(QString::number(nv.getMatrix44f()[ii/4][ii%4],'g',3)); } +void Matrix44fWidget::addWidgetToGridLayout( QGridLayout* lay,const int r ) +{ + if (lay != NULL) + { + lay->addWidget(descLab,r,0,Qt::AlignTop); + lay->addLayout(vlay,r,1,Qt::AlignTop); + } + MeshLabWidget::addWidgetToGridLayout(lay,r); +} /********************/ // ShotfWidget Implementation @@ -706,16 +737,16 @@ ShotfWidget::ShotfWidget(QWidget *p, RichShotf* rpf, QWidget *gla_curr): MeshLab descLab = new QLabel(rpf->pd->fieldDesc,p); descLab->setToolTip(rpf->pd->fieldDesc); - gridLay->addWidget(descLab,row,0,Qt::AlignTop); + //gridLay->addWidget(descLab,row,0,Qt::AlignTop); - QHBoxLayout* lay = new QHBoxLayout(p); + hlay = new QHBoxLayout(); this->setShotValue(paramName,rp->val->getShotf()); if(gla_curr) // if we have a connection to the current glarea we can setup the additional button for getting the current view direction. { - getShotButton = new QPushButton("Get shot",p); - lay->addWidget(getShotButton); + getShotButton = new QPushButton("Get shot",this); + hlay->addWidget(getShotButton); QStringList names; names << "Current Trackball"; @@ -723,9 +754,9 @@ ShotfWidget::ShotfWidget(QWidget *p, RichShotf* rpf, QWidget *gla_curr): MeshLab names << "Current Raster"; names << "From File"; - getShotCombo = new QComboBox(p); + getShotCombo = new QComboBox(this); getShotCombo->addItems(names); - lay->addWidget(getShotCombo); + hlay->addWidget(getShotCombo); connect(getShotCombo,SIGNAL(currentIndexChanged(int)),this,SLOT(getShot())); connect(getShotButton,SIGNAL(clicked()),this,SLOT(getShot())); connect(gla_curr,SIGNAL(transmitShot(QString,vcg::Shotf)),this,SLOT(setShotValue(QString,vcg::Shotf))); @@ -733,7 +764,7 @@ ShotfWidget::ShotfWidget(QWidget *p, RichShotf* rpf, QWidget *gla_curr): MeshLab connect(this,SIGNAL(askMeshShot(QString)), gla_curr,SLOT(sendMeshShot(QString))); connect(this,SIGNAL(askRasterShot(QString)),gla_curr,SLOT(sendRasterShot(QString))); } - gridLay->addLayout(lay,row,1,Qt::AlignTop); + //gridLay->addLayout(hlay,row,1,Qt::AlignTop); } void ShotfWidget::getShot() @@ -802,6 +833,15 @@ void ShotfWidget::setWidgetValue( const Value& nv ) curShot = nv.getShotf(); } +void ShotfWidget::addWidgetToGridLayout( QGridLayout* lay,const int r ) +{ + if (lay != NULL) + { + lay->addLayout(hlay,r,1); + lay->addWidget(descLab,r,0); + } + MeshLabWidget::addWidgetToGridLayout(lay,r); +} /********************/ // ComboWidget End Implementation @@ -810,14 +850,14 @@ ComboWidget::ComboWidget(QWidget *p, RichParameter* rpar) :MeshLabWidget(p,rpar) void ComboWidget::Init(QWidget *p,int defaultEnum, QStringList values) { - enumLabel = new QLabel(p); + enumLabel = new QLabel(this); enumLabel->setText(rp->pd->fieldDesc); - enumCombo = new QComboBox(p); + enumCombo = new QComboBox(this); enumCombo->addItems(values); setIndex(defaultEnum); //int row = gridLay->rowCount() - 1; - gridLay->addWidget(enumLabel,row,0,Qt::AlignTop); - gridLay->addWidget(enumCombo,row,1,Qt::AlignTop); + //gridLay->addWidget(enumLabel,row,0,Qt::AlignTop); + //gridLay->addWidget(enumCombo,row,1,Qt::AlignTop); connect(enumCombo,SIGNAL(activated(int)),this,SIGNAL(dialogParamChanged())); connect(this,SIGNAL(dialogParamChanged()),p,SIGNAL(parameterChanged())); } @@ -838,6 +878,15 @@ ComboWidget::~ComboWidget() delete enumLabel; } +void ComboWidget::addWidgetToGridLayout( QGridLayout* lay,const int r ) +{ + if (lay != NULL) + { + lay->addWidget(enumLabel,r,0); + lay->addWidget(enumCombo,r,1); + } + MeshLabWidget::addWidgetToGridLayout(lay,r); +} /******************************************/ //EnumWidget Implementation /******************************************/ @@ -1140,28 +1189,27 @@ DynamicFloatWidget::DynamicFloatWidget(QWidget *p, RichDynamicFloat* rdf):MeshLa { minVal = reinterpret_cast(rdf->pd)->min; maxVal = reinterpret_cast(rdf->pd)->max; - valueLE = new QLineEdit(p); + valueLE = new QLineEdit(this); valueLE->setAlignment(Qt::AlignRight); - valueSlider = new QSlider(Qt::Horizontal,p); + valueSlider = new QSlider(Qt::Horizontal,this); valueSlider->setSizePolicy(QSizePolicy::Expanding,QSizePolicy::Fixed); - fieldDesc = new QLabel(rp->pd->fieldDesc); + fieldDesc = new QLabel(rp->pd->fieldDesc,this); valueSlider->setMinimum(0); valueSlider->setMaximum(100); valueSlider->setValue(floatToInt(rp->val->getFloat())); const DynamicFloatDecoration* dfd = reinterpret_cast(&(rp->pd)); valueLE->setValidator(new QDoubleValidator (dfd->min,dfd->max, 5, valueLE)); valueLE->setText(QString::number(rp->val->getFloat())); - + valueLE->setSizePolicy(QSizePolicy::Minimum,QSizePolicy::Preferred); //int row = gridLay->rowCount() - 1; - gridLay->addWidget(fieldDesc,row,0); + //lay->addWidget(fieldDesc,row,0); - QHBoxLayout* lay = new QHBoxLayout(p); - valueLE->setSizePolicy(QSizePolicy::Minimum,QSizePolicy::Preferred); - lay->addWidget(valueLE,0,Qt::AlignHCenter); - lay->addWidget(valueSlider,0,0); - gridLay->addLayout(lay,row,1); + hlay = new QHBoxLayout(); + hlay->addWidget(valueLE,0,Qt::AlignHCenter); + hlay->addWidget(valueSlider,0,0); + //gridLay->addLayout(hlay,row,1); connect(valueLE,SIGNAL(textChanged(const QString &)),this,SLOT(setValue())); connect(valueSlider,SIGNAL(valueChanged(int)),this,SLOT(setValue(int))); @@ -1222,6 +1270,16 @@ void DynamicFloatWidget::setWidgetValue( const Value& nv ) { valueLE->setText(QString::number(nv.getFloat())); } + +void DynamicFloatWidget::addWidgetToGridLayout( QGridLayout* lay,const int r ) +{ + if (lay != NULL) + { + lay->addWidget(fieldDesc,r,0); + lay->addLayout(hlay,r,1); + } + MeshLabWidget::addWidgetToGridLayout(lay,r); +} /****************************/ Value& MeshLabWidget::getWidgetValue() { @@ -1237,9 +1295,10 @@ void MeshLabWidget::resetValue() } MeshLabWidget::MeshLabWidget( QWidget* p,RichParameter* rpar ) -//:QWidget(p),rp(rpar) // this version of the line caused the very strange error of uncheckabe first bool widget -:rp(rpar) +:QWidget(p),rp(rpar) // this version of the line caused the very strange error of uncheckabe first bool widget +//:rp(rpar) { + //setParent(p); if (rp!= NULL) { helpLab = new QLabel(""+rpar->pd->tooltip +"",this); @@ -1249,10 +1308,10 @@ MeshLabWidget::MeshLabWidget( QWidget* p,RichParameter* rpar ) helpLab->setSizePolicy(QSizePolicy::Expanding,QSizePolicy::Preferred); helpLab->setMinimumWidth(250); helpLab->setMaximumWidth(QWIDGETSIZE_MAX); - gridLay = qobject_cast(p->layout()); + /*gridLay = qobject_cast(p->layout()); assert(gridLay != 0); - row = gridLay->rowCount(); - gridLay->addWidget(helpLab,row,3,1,1,Qt::AlignTop); + row = gridLay->rowCount();*/ + //gridLay->addWidget(helpLab,row,3,1,1,Qt::AlignTop); } } @@ -1267,11 +1326,17 @@ MeshLabWidget::~MeshLabWidget() delete helpLab; } -void MeshLabWidget::setEqualSpaceForEachColumn() +//void MeshLabWidget::setEqualSpaceForEachColumn() +//{ +// int singlewidth = gridLay->geometry().width() / gridLay->columnCount(); +// for (int ii = 0;ii < gridLay->columnCount();++ii) +// gridLay->setColumnMinimumWidth(ii,singlewidth); +//} + +void MeshLabWidget::addWidgetToGridLayout( QGridLayout* lay, const int r) { - int singlewidth = gridLay->geometry().width() / gridLay->columnCount(); - for (int ii = 0;ii < gridLay->columnCount();++ii) - gridLay->setColumnMinimumWidth(ii,singlewidth); + if (lay != NULL) + lay->addWidget(helpLab,r,2,1,1); } //connect(qcb,SIGNAL(stateChanged(int)),this,SIGNAL(parameterChanged())); @@ -1281,7 +1346,6 @@ BoolWidget::BoolWidget(QWidget* p, RichBool* rb ) cb = new QCheckBox(rp->pd->fieldDesc,this); cb->setToolTip(rp->pd->tooltip); cb->setChecked(rp->val->getBool()); - gridLay->addWidget(cb,row,0,1,2); connect(cb,SIGNAL(stateChanged(int)),p,SIGNAL(parameterChanged())); } @@ -1307,6 +1371,13 @@ void BoolWidget::setWidgetValue( const Value& nv ) cb->setChecked(nv.getBool()); } +void BoolWidget::addWidgetToGridLayout(QGridLayout* lay,const int r) +{ + if (lay !=NULL) + lay->addWidget(cb,r,0); + MeshLabWidget::addWidgetToGridLayout(lay,r); +} + //connect(qle,SIGNAL(editingFinished()),this,SIGNAL(parameterChanged())); LineEditWidget::LineEditWidget( QWidget* p,RichParameter* rpar ) :MeshLabWidget(p,rpar) @@ -1316,8 +1387,8 @@ LineEditWidget::LineEditWidget( QWidget* p,RichParameter* rpar ) //int row = gridLay->rowCount() -1; lab->setToolTip(rp->pd->tooltip); - gridLay->addWidget(lab,row,0); - gridLay->addWidget(lned,row,1); + //gridLay->addWidget(lab,row,0); + //gridLay->addWidget(lned,row,1); connect(lned,SIGNAL(editingFinished()),this,SLOT(changeChecker())); connect(this,SIGNAL(lineEditChanged()),p,SIGNAL(parameterChanged())); lned->setAlignment(Qt::AlignLeft); @@ -1339,6 +1410,16 @@ void LineEditWidget::changeChecker() } } +void LineEditWidget::addWidgetToGridLayout( QGridLayout* lay,const int r ) +{ + if (lay !=NULL) + { + lay->addWidget(lab,r,0); + lay->addWidget(lned,r,1); + } + MeshLabWidget::addWidgetToGridLayout(lay,r); +} + IntWidget::IntWidget( QWidget* p,RichInt* rpar ) :LineEditWidget(p,rpar) { @@ -1411,22 +1492,22 @@ void StringWidget::setWidgetValue( const Value& nv ) ColorWidget::ColorWidget(QWidget *p, RichColor* newColor) :MeshLabWidget(p,newColor),pickcol() { - colorLabel = new QLabel(p); - descLabel = new QLabel(rp->pd->fieldDesc,p); - colorButton = new QPushButton(p); + colorLabel = new QLabel(this); + descLabel = new QLabel(rp->pd->fieldDesc,this); + colorButton = new QPushButton(this); colorButton->setAutoFillBackground(true); colorButton->setFlat(true); //const QColor cl = rp->pd->defVal->getColor(); //resetWidgetValue(); initWidgetValue(); //int row = gridLay->rowCount() - 1; - gridLay->addWidget(descLabel,row,0,Qt::AlignTop); + //gridLay->addWidget(descLabel,row,0,Qt::AlignTop); - QHBoxLayout* lay = new QHBoxLayout(p); - lay->addWidget(colorLabel); - lay->addWidget(colorButton); + vlay = new QHBoxLayout(); + vlay->addWidget(colorLabel); + vlay->addWidget(colorButton); - gridLay->addLayout(lay,row,1,Qt::AlignTop); + //gridLay->addLayout(lay,row,1,Qt::AlignTop); pickcol = rp->val->getColor(); connect(colorButton,SIGNAL(clicked()),this,SLOT(pickColor())); connect(this,SIGNAL(dialogParamChanged()),p,SIGNAL(parameterChanged())); @@ -1483,6 +1564,16 @@ void ColorWidget::setWidgetValue( const Value& nv ) pickcol = cl; updateColorInfo(cl); } + +void ColorWidget::addWidgetToGridLayout( QGridLayout* lay,const int r ) +{ + if (lay != NULL) + { + lay->addWidget(descLabel,r,0,Qt::AlignTop); + lay->addLayout(vlay,r,1,Qt::AlignTop); + } + MeshLabWidget::addWidgetToGridLayout(lay,r); +} /* void GetFileNameWidget::launchGetFileNameDialog() { @@ -1557,20 +1648,20 @@ void RichParameterToQTableWidgetItemConstructor::visit( RichDynamicFloat& pd ) IOFileWidget::IOFileWidget( QWidget* p,RichParameter* rpar ) :MeshLabWidget(p,rpar),fl() { - filename = new QLineEdit(p); + filename = new QLineEdit(this); filename->setText(tr("")); - browse = new QPushButton(p); - descLab = new QLabel(rp->pd->fieldDesc,p); + browse = new QPushButton(this); + descLab = new QLabel(rp->pd->fieldDesc,this); browse->setText("..."); //const QColor cl = rp->pd->defVal->getColor(); //resetWidgetValue(); //int row = gridLay->rowCount() - 1; - gridLay->addWidget(descLab,row,0,Qt::AlignTop); - QHBoxLayout* lay = new QHBoxLayout(p); - lay->addWidget(filename,2); - lay->addWidget(browse); + //gridLay->addWidget(descLab,row,0,Qt::AlignTop); + hlay = new QHBoxLayout(); + hlay->addWidget(filename,2); + hlay->addWidget(browse); - gridLay->addLayout(lay,row,1,Qt::AlignTop); + //gridLay->addLayout(lay,row,1,Qt::AlignTop); connect(browse,SIGNAL(clicked()),this,SLOT(selectFile())); connect(this,SIGNAL(dialogParamChanged()),p,SIGNAL(parameterChanged())); @@ -1608,6 +1699,16 @@ void IOFileWidget::updateFileName( const FileValue& file ) filename->setText(file.getFileName()); } +void IOFileWidget::addWidgetToGridLayout( QGridLayout* lay,const int r ) +{ + if (lay != NULL) + { + lay->addWidget(descLab,r,0,Qt::AlignTop); + lay->addLayout(hlay,r,1,Qt::AlignTop); + } + MeshLabWidget::addWidgetToGridLayout(lay,r); +} + OpenFileWidget::OpenFileWidget( QWidget *p, RichOpenFile* rdf ) :IOFileWidget(p,rdf) { diff --git a/src/meshlab/stdpardialog.h b/src/meshlab/stdpardialog.h index c0139b51c..660ca9cad 100644 --- a/src/meshlab/stdpardialog.h +++ b/src/meshlab/stdpardialog.h @@ -44,8 +44,9 @@ public: virtual void collectWidgetValue() = 0; virtual void setWidgetValue(const Value& nv) = 0; virtual ~MeshLabWidget(); - - // called when the user press the 'default' button to reset the parameter values to its default. + + virtual void addWidgetToGridLayout(QGridLayout* lay,const int r) = 0; + // called when the user press the 'default' button to reset the parameter values to its default. // It just set the parameter value and then it calls the specialized resetWidgetValue() to update also the widget. void resetValue(); // update the parameter with the current widget values and return it. @@ -56,10 +57,10 @@ public: signals: void parameterChanged(); protected: - void setEqualSpaceForEachColumn(); + //void setEqualSpaceForEachColumn(); - int row; - QGridLayout* gridLay; + //int row; + //QGridLayout* gridLay; void InitRichParameter(RichParameter* rpar); }; @@ -72,6 +73,8 @@ class BoolWidget : public MeshLabWidget public: BoolWidget(QWidget* p,RichBool* rb); ~BoolWidget(); + + void addWidgetToGridLayout(QGridLayout* lay,const int r); void collectWidgetValue(); void resetWidgetValue(); void setWidgetValue(const Value& nv); @@ -94,6 +97,7 @@ protected: public: LineEditWidget(QWidget* p,RichParameter* rpar); ~LineEditWidget(); + void addWidgetToGridLayout(QGridLayout* lay,const int r); virtual void collectWidgetValue() = 0; virtual void resetWidgetValue() = 0; virtual void setWidgetValue(const Value& nv) = 0; @@ -181,7 +185,8 @@ class ColorWidget : public MeshLabWidget public: ColorWidget(QWidget *p, RichColor* newColor); ~ColorWidget(); - + + void addWidgetToGridLayout(QGridLayout* lay,const int r); void collectWidgetValue(); void resetWidgetValue(); void setWidgetValue(const Value& nv); @@ -194,6 +199,8 @@ private: void dialogParamChanged(); private slots: void pickColor(); +protected: + QHBoxLayout* vlay; }; @@ -212,6 +219,7 @@ public: AbsPercWidget(QWidget *p,RichAbsPerc* rabs); ~AbsPercWidget(); + void addWidgetToGridLayout(QGridLayout* lay,const int r); void collectWidgetValue(); void resetWidgetValue(); void setWidgetValue(const Value& nv); @@ -232,6 +240,7 @@ protected: QLabel* fieldDesc; float m_min; float m_max; + QGridLayout* vlay; }; @@ -251,6 +260,7 @@ public: QString paramName; vcg::Point3f getValue(); + void addWidgetToGridLayout(QGridLayout* lay,const int r); void collectWidgetValue(); void resetWidgetValue(); void setWidgetValue(const Value& nv); @@ -270,6 +280,7 @@ protected: QComboBox *getPoint3Combo; QPushButton *getPoint3Button; QLabel* descLab; + QHBoxLayout* vlay; }; class Matrix44fWidget : public MeshLabWidget @@ -282,6 +293,7 @@ public: QString paramName; vcg::Matrix44f getValue(); + void addWidgetToGridLayout(QGridLayout* lay,const int r); void collectWidgetValue(); void resetWidgetValue(); void setWidgetValue(const Value& nv); @@ -298,6 +310,8 @@ protected: QLineEdit * coordSB[16]; QPushButton *getPoint3Button; QLabel* descLab; + QGridLayout* lay44; + QVBoxLayout* vlay; }; /// Widget to enter a Shot, @@ -314,6 +328,7 @@ public: QString paramName; vcg::Shotf getValue(); + void addWidgetToGridLayout(QGridLayout* lay,const int r); void collectWidgetValue(); void resetWidgetValue(); void setWidgetValue(const Value& nv); @@ -332,6 +347,7 @@ protected: QPushButton *getShotButton; QComboBox *getShotCombo; QLabel* descLab; + QHBoxLayout* hlay; }; @@ -347,6 +363,7 @@ public: float getValue(); void setValue(float val, float minV, float maxV); + void addWidgetToGridLayout(QGridLayout* lay,const int r); void collectWidgetValue(); void resetWidgetValue(); void setWidgetValue(const Value& nv); @@ -366,6 +383,7 @@ protected: QLabel* fieldDesc; float minVal; float maxVal; + QHBoxLayout* hlay; private : float intToFloat(int val); int floatToInt(float val); @@ -383,6 +401,7 @@ public: ComboWidget(QWidget *p, RichParameter* rpar); ~ComboWidget(); void Init(QWidget *p,int newEnum, QStringList values); + void addWidgetToGridLayout(QGridLayout* lay,const int r); virtual void collectWidgetValue() = 0; virtual void resetWidgetValue() = 0; virtual void setWidgetValue(const Value& nv) = 0; @@ -423,6 +442,7 @@ private: public: MeshWidget(QWidget *p, RichMesh* defaultMesh); ~MeshWidget(){}; + void collectWidgetValue(); void resetWidgetValue(); void setWidgetValue(const Value& nv); @@ -442,6 +462,7 @@ protected: void updateFileName(const FileValue& file); public: + void addWidgetToGridLayout(QGridLayout* lay,const int r); void collectWidgetValue(); void resetWidgetValue(); void setWidgetValue(const Value& nv); @@ -458,6 +479,7 @@ protected: QPushButton* browse; QString fl; QLabel* descLab; + QHBoxLayout* hlay; }; class SaveFileWidget : public IOFileWidget