mirror of
https://git.salome-platform.org/gitpub/modules/smesh.git
synced 2024-11-12 00:29:17 +05:00
fixing adaptation default mode
This commit is contained in:
parent
86be227dee
commit
97ad2bb328
@ -177,6 +177,7 @@ void SMESHGUI_MgAdaptDlg::buildDlg()
|
|||||||
connect(cancelBtn, SIGNAL(clicked()), this, SLOT(reject()));
|
connect(cancelBtn, SIGNAL(clicked()), this, SLOT(reject()));
|
||||||
connect(buttonApply, SIGNAL(clicked()), this,SLOT(clickOnApply()));
|
connect(buttonApply, SIGNAL(clicked()), this,SLOT(clickOnApply()));
|
||||||
connect(buttonApplyAndClose, SIGNAL(clicked()), this,SLOT(clickOnOk()));
|
connect(buttonApplyAndClose, SIGNAL(clicked()), this,SLOT(clickOnOk()));
|
||||||
|
connect(myArgs, SIGNAL(meshDimSignal(ADAPTATION_MODE)), myAdvOpt, SLOT( onMeshDimChanged(ADAPTATION_MODE)) );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -471,7 +472,7 @@ SMESHGUI_MgAdaptArguments::SMESHGUI_MgAdaptArguments( QWidget* parent )
|
|||||||
*myFileSizeMapDir = SUIT_FileDlg::getLastVisitedPath();
|
*myFileSizeMapDir = SUIT_FileDlg::getLastVisitedPath();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
meshDim = 0;
|
||||||
// Mesh in
|
// Mesh in
|
||||||
aMeshIn = new QGroupBox( tr( "MeshIn" ), this );
|
aMeshIn = new QGroupBox( tr( "MeshIn" ), this );
|
||||||
aMedfile = new QRadioButton( tr( "MEDFile" ), aMeshIn );
|
aMedfile = new QRadioButton( tr( "MEDFile" ), aMeshIn );
|
||||||
@ -741,7 +742,7 @@ void SMESHGUI_MgAdaptArguments::onSelectMedFilebuttonClicked()
|
|||||||
QString fileName = getMedFileName(false);
|
QString fileName = getMedFileName(false);
|
||||||
if(fileName != QString::null)
|
if(fileName != QString::null)
|
||||||
{
|
{
|
||||||
QString aMeshName = lireNomMaillage(fileName.trimmed());
|
QString aMeshName = lireNomMaillage(fileName.trimmed(), meshDim);
|
||||||
if (aMeshName == QString::null )
|
if (aMeshName == QString::null )
|
||||||
{
|
{
|
||||||
QMessageBox::critical( 0, QObject::tr("MG_ADAPT_ERROR"),
|
QMessageBox::critical( 0, QObject::tr("MG_ADAPT_ERROR"),
|
||||||
@ -751,6 +752,8 @@ void SMESHGUI_MgAdaptArguments::onSelectMedFilebuttonClicked()
|
|||||||
else
|
else
|
||||||
{
|
{
|
||||||
meshNameLineEdit->setText(aMeshName);
|
meshNameLineEdit->setText(aMeshName);
|
||||||
|
ADAPTATION_MODE aMode = meshDim == 3 ? ADAPTATION_MODE::BOTH : ADAPTATION_MODE::SURFACE; // and when dimesh 3 without 2D mesh?
|
||||||
|
emit meshDimSignal(aMode);
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
@ -764,7 +767,8 @@ void SMESHGUI_MgAdaptArguments::onSelectMedFilebuttonClicked()
|
|||||||
*myFileInDir = myFileInfo.path();
|
*myFileInDir = myFileInfo.path();
|
||||||
*myFileOutDir = myFileInfo.path();
|
*myFileOutDir = myFileInfo.path();
|
||||||
selectMedFileLineEdit->setText(myFileInfo.fileName());
|
selectMedFileLineEdit->setText(myFileInfo.fileName());
|
||||||
QString outF = QString( remove_extension(myFileInfo.fileName().toStdString() ).c_str() )+QString(".adapt.med");
|
QString outF = fileName == QString::null ? myFileInfo.fileName() :
|
||||||
|
QString( remove_extension(myFileInfo.fileName().toStdString() ).c_str() )+ QString(".adapt.med");
|
||||||
selectOutMedFileLineEdit->setText(outF);
|
selectOutMedFileLineEdit->setText(outF);
|
||||||
onLocalSelected(myFileInfo.filePath());
|
onLocalSelected(myFileInfo.filePath());
|
||||||
|
|
||||||
@ -786,7 +790,7 @@ void SMESHGUI_MgAdaptArguments::onLocalSelected(QString filePath)
|
|||||||
// fill field name Combobox
|
// fill field name Combobox
|
||||||
fieldNameCmb->clear();
|
fieldNameCmb->clear();
|
||||||
std::map<QString, int>::const_iterator it;
|
std::map<QString, int>::const_iterator it;
|
||||||
for ( it=myFieldList.begin() ; it != myFieldList.end(); it++)
|
for ( it = myFieldList.begin() ; it != myFieldList.end(); it++)
|
||||||
{
|
{
|
||||||
fieldNameCmb->insertItem(0,QString(it->first));
|
fieldNameCmb->insertItem(0,QString(it->first));
|
||||||
int typeStepInField = it->second > 2 ? 2 : it->second ;
|
int typeStepInField = it->second > 2 ? 2 : it->second ;
|
||||||
@ -923,7 +927,10 @@ void SMESHGUI_MgAdaptArguments::clear()
|
|||||||
meshNameLineEdit->clear();
|
meshNameLineEdit->clear();
|
||||||
selectOutMedFileLineEdit->clear();
|
selectOutMedFileLineEdit->clear();
|
||||||
}
|
}
|
||||||
|
med_int SMESHGUI_MgAdaptArguments::getMeshDim() const
|
||||||
|
{
|
||||||
|
return meshDim;
|
||||||
|
}
|
||||||
QWidget* ItemDelegate::createEditor(QWidget *parent, const QStyleOptionViewItem &o, const QModelIndex &index) const
|
QWidget* ItemDelegate::createEditor(QWidget *parent, const QStyleOptionViewItem &o, const QModelIndex &index) const
|
||||||
{
|
{
|
||||||
bool editable = index.data( EDITABLE_ROLE ).toInt();
|
bool editable = index.data( EDITABLE_ROLE ).toInt();
|
||||||
@ -957,12 +964,7 @@ MgAdaptAdvWidget::~MgAdaptAdvWidget()
|
|||||||
|
|
||||||
void MgAdaptAdvWidget::AddOption( const char* option, bool isCustom )
|
void MgAdaptAdvWidget::AddOption( const char* option, bool isCustom )
|
||||||
{
|
{
|
||||||
QTreeWidget * table = myOptionTable;
|
|
||||||
//table->setExpanded( true );
|
|
||||||
|
|
||||||
QTreeWidgetItem * row = new QTreeWidgetItem( table );
|
|
||||||
row->setData( NAME_COL, EDITABLE_ROLE, int( isCustom && !option ));
|
|
||||||
row->setFlags( row->flags() | Qt::ItemIsEditable );
|
|
||||||
|
|
||||||
QString name, value;
|
QString name, value;
|
||||||
bool isDefault = false;
|
bool isDefault = false;
|
||||||
@ -977,6 +979,23 @@ void MgAdaptAdvWidget::AddOption( const char* option, bool isCustom )
|
|||||||
isDefault = !name_value_type[2].toInt();
|
isDefault = !name_value_type[2].toInt();
|
||||||
|
|
||||||
}
|
}
|
||||||
|
QTreeWidget* table = myOptionTable;
|
||||||
|
//table->setExpanded( true );
|
||||||
|
|
||||||
|
QTreeWidgetItem* row;
|
||||||
|
if (optionTreeWidgetItem.size())
|
||||||
|
{
|
||||||
|
std::map<QString, QTreeWidgetItem *>::iterator it = optionTreeWidgetItem.find(name);
|
||||||
|
if(it != optionTreeWidgetItem.end()) return; // option exist
|
||||||
|
else
|
||||||
|
{
|
||||||
|
row = getNewQTreeWidgetItem(table, option, name, isCustom);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
row = getNewQTreeWidgetItem(table, option, name, isCustom);
|
||||||
|
}
|
||||||
row->setText( 0, tr( name.toLatin1().constData() ));
|
row->setText( 0, tr( name.toLatin1().constData() ));
|
||||||
row->setText( 1, tr( value.toLatin1().constData() ));
|
row->setText( 1, tr( value.toLatin1().constData() ));
|
||||||
row->setCheckState( 0, isDefault ? Qt::Unchecked : Qt::Checked);
|
row->setCheckState( 0, isDefault ? Qt::Unchecked : Qt::Checked);
|
||||||
@ -989,6 +1008,17 @@ void MgAdaptAdvWidget::AddOption( const char* option, bool isCustom )
|
|||||||
myOptionTable->editItem( row, NAME_COL );
|
myOptionTable->editItem( row, NAME_COL );
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
QTreeWidgetItem* MgAdaptAdvWidget::getNewQTreeWidgetItem(QTreeWidget* table, const char* option, QString& name, bool isCustom)
|
||||||
|
{
|
||||||
|
QTreeWidgetItem* row = new QTreeWidgetItem( table );
|
||||||
|
row->setData( NAME_COL, EDITABLE_ROLE, int( isCustom && !option ));
|
||||||
|
row->setFlags( row->flags() | Qt::ItemIsEditable );
|
||||||
|
optionTreeWidgetItem.insert(std::pair <QString, QTreeWidgetItem*> (name, row));
|
||||||
|
|
||||||
|
return row;
|
||||||
|
}
|
||||||
|
|
||||||
void MgAdaptAdvWidget::onAddOption()
|
void MgAdaptAdvWidget::onAddOption()
|
||||||
{
|
{
|
||||||
AddOption( NULL, true );
|
AddOption( NULL, true );
|
||||||
@ -1005,7 +1035,7 @@ void MgAdaptAdvWidget::GetOptionAndValue( QTreeWidgetItem * tblRow,
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void MgAdaptAdvWidget::itemChanged(QTreeWidgetItem * tblRow, int column)
|
void MgAdaptAdvWidget::itemChanged(QTreeWidgetItem* tblRow, int column)
|
||||||
{
|
{
|
||||||
if ( tblRow )
|
if ( tblRow )
|
||||||
{
|
{
|
||||||
@ -1127,7 +1157,50 @@ void MgAdaptAdvWidget::_onWorkingDirectoryPushButton()
|
|||||||
QString aDirName=QFileDialog::getExistingDirectory ();
|
QString aDirName=QFileDialog::getExistingDirectory ();
|
||||||
if (!(aDirName.isEmpty()))workingDirectoryLineEdit->setText(aDirName);
|
if (!(aDirName.isEmpty()))workingDirectoryLineEdit->setText(aDirName);
|
||||||
}
|
}
|
||||||
|
void MgAdaptAdvWidget::onMeshDimChanged(ADAPTATION_MODE aMode)
|
||||||
|
{
|
||||||
|
/* default adaptation mode
|
||||||
|
* assume that if meshDim == 2 -->adaptation surface
|
||||||
|
* if meshDim == 3 and if there is not 2D mesh -->VOLUME
|
||||||
|
* else BOTH
|
||||||
|
*/
|
||||||
|
|
||||||
|
QString adaptation("adaptation"), value;
|
||||||
|
switch(aMode)
|
||||||
|
{
|
||||||
|
case ADAPTATION_MODE::SURFACE:
|
||||||
|
{
|
||||||
|
value ="surface";
|
||||||
|
setOptionValue(adaptation, value);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
case ADAPTATION_MODE::BOTH :
|
||||||
|
{
|
||||||
|
value = "both";
|
||||||
|
setOptionValue(adaptation, value);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
case ADAPTATION_MODE::VOLUME :
|
||||||
|
{
|
||||||
|
value = "volume";
|
||||||
|
setOptionValue(adaptation, value);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
void MgAdaptAdvWidget::setOptionValue(QString& option, QString& value)
|
||||||
|
{
|
||||||
|
|
||||||
|
std::map<QString, QTreeWidgetItem *>::iterator it = optionTreeWidgetItem.find(option);
|
||||||
|
if (it != optionTreeWidgetItem.end())
|
||||||
|
{
|
||||||
|
it->second->setText( 0, tr( option.toLatin1().constData() ));
|
||||||
|
it->second->setText( 1, tr( value.toLatin1().constData() ));
|
||||||
|
it->second->setCheckState( 0, Qt::Checked );
|
||||||
|
it->second->setData( NAME_COL, PARAM_NAME, option );
|
||||||
|
myOptionTable->editItem( it->second, NAME_COL );
|
||||||
|
}
|
||||||
|
}
|
||||||
namespace
|
namespace
|
||||||
{
|
{
|
||||||
bool isEditable( const QModelIndex& index )
|
bool isEditable( const QModelIndex& index )
|
||||||
@ -1215,7 +1288,7 @@ med_idt OuvrirFichier(QString aFile)
|
|||||||
|
|
||||||
// ======================================================
|
// ======================================================
|
||||||
// ========================================================
|
// ========================================================
|
||||||
QString lireNomMaillage(QString aFile)
|
QString lireNomMaillage(QString aFile, med_int& meshdim)
|
||||||
{
|
{
|
||||||
QString nomMaillage = QString::null ;
|
QString nomMaillage = QString::null ;
|
||||||
int erreur = 0 ;
|
int erreur = 0 ;
|
||||||
@ -1244,7 +1317,7 @@ QString lireNomMaillage(QString aFile)
|
|||||||
return nomMaillage;
|
return nomMaillage;
|
||||||
}
|
}
|
||||||
|
|
||||||
nomMaillage = lireNomMaillage2(medIdt,1);
|
nomMaillage = lireNomMaillage2(medIdt,1, meshdim);
|
||||||
// Fermeture du fichier
|
// Fermeture du fichier
|
||||||
if ( medIdt > 0 ) MEDfileClose(medIdt);
|
if ( medIdt > 0 ) MEDfileClose(medIdt);
|
||||||
|
|
||||||
@ -1253,11 +1326,11 @@ QString lireNomMaillage(QString aFile)
|
|||||||
|
|
||||||
// =======================================================================
|
// =======================================================================
|
||||||
// =======================================================================
|
// =======================================================================
|
||||||
QString lireNomMaillage2(med_idt medIdt,int meshId)
|
QString lireNomMaillage2(med_idt medIdt,int meshId, med_int& meshdim )
|
||||||
{
|
{
|
||||||
QString NomMaillage=QString::null;
|
QString NomMaillage=QString::null;
|
||||||
char meshname[MED_NAME_SIZE+1];
|
char meshname[MED_NAME_SIZE+1];
|
||||||
med_int spacedim,meshdim;
|
med_int spacedim;
|
||||||
med_mesh_type meshtype;
|
med_mesh_type meshtype;
|
||||||
char descriptionription[MED_COMMENT_SIZE+1];
|
char descriptionription[MED_COMMENT_SIZE+1];
|
||||||
char dtunit[MED_SNAME_SIZE+1];
|
char dtunit[MED_SNAME_SIZE+1];
|
||||||
|
@ -94,11 +94,17 @@ class QFileDialog;
|
|||||||
|
|
||||||
|
|
||||||
std::map<QString, int> GetListeChamps(QString aFile, bool errorMessage = true);
|
std::map<QString, int> GetListeChamps(QString aFile, bool errorMessage = true);
|
||||||
QString lireNomMaillage(QString aFile);
|
QString lireNomMaillage(QString aFile, med_int& meshDim);
|
||||||
QString lireNomMaillage2(med_idt medIdt,int meshId);
|
QString lireNomMaillage2(med_idt medIdt,int meshId, med_int& meshDim);
|
||||||
med_idt OuvrirFichier(QString aFile);
|
med_idt OuvrirFichier(QString aFile);
|
||||||
std::string remove_extension(const std::string& filename);
|
std::string remove_extension(const std::string& filename);
|
||||||
|
|
||||||
|
|
||||||
|
enum ADAPTATION_MODE{
|
||||||
|
SURFACE, // surface adaption when meshDim == 2
|
||||||
|
VOLUME, //
|
||||||
|
BOTH
|
||||||
|
};
|
||||||
//=================================================================================
|
//=================================================================================
|
||||||
// class : SMESHGUI_MgAdaptDlg
|
// class : SMESHGUI_MgAdaptDlg
|
||||||
// purpose :
|
// purpose :
|
||||||
@ -156,6 +162,7 @@ public:
|
|||||||
SMESHGUI_MgAdaptArguments( QWidget* parent);
|
SMESHGUI_MgAdaptArguments( QWidget* parent);
|
||||||
~SMESHGUI_MgAdaptArguments();
|
~SMESHGUI_MgAdaptArguments();
|
||||||
void setMode( const Mode, const SIZEMAP );
|
void setMode( const Mode, const SIZEMAP );
|
||||||
|
med_int getMeshDim() const;
|
||||||
|
|
||||||
QString* myFileInDir;
|
QString* myFileInDir;
|
||||||
QString* myFileOutDir;
|
QString* myFileOutDir;
|
||||||
@ -210,6 +217,7 @@ public:
|
|||||||
signals:
|
signals:
|
||||||
void updateSelection();
|
void updateSelection();
|
||||||
void toExportMED(const char *);
|
void toExportMED(const char *);
|
||||||
|
void meshDimSignal(ADAPTATION_MODE aMode);
|
||||||
public slots:
|
public slots:
|
||||||
|
|
||||||
protected slots:
|
protected slots:
|
||||||
@ -233,7 +241,7 @@ private:
|
|||||||
|
|
||||||
QString getMedFileName(bool avertir);
|
QString getMedFileName(bool avertir);
|
||||||
LightApp_SelectionMgr* selMgr ;
|
LightApp_SelectionMgr* selMgr ;
|
||||||
|
med_int meshDim;
|
||||||
std::map<QString, int> myFieldList;
|
std::map<QString, int> myFieldList;
|
||||||
|
|
||||||
|
|
||||||
@ -281,8 +289,14 @@ public slots:
|
|||||||
|
|
||||||
void onAddOption();
|
void onAddOption();
|
||||||
void itemChanged(QTreeWidgetItem * tblRow, int column);
|
void itemChanged(QTreeWidgetItem * tblRow, int column);
|
||||||
|
void onMeshDimChanged(ADAPTATION_MODE aMode);
|
||||||
private slots:
|
private slots:
|
||||||
void _onWorkingDirectoryPushButton();
|
void _onWorkingDirectoryPushButton();
|
||||||
|
private:
|
||||||
|
void setOptionValue(QString& option, QString& value);
|
||||||
|
std::map<QString, QTreeWidgetItem *> optionTreeWidgetItem;
|
||||||
|
|
||||||
|
QTreeWidgetItem* getNewQTreeWidgetItem(QTreeWidget* table, const char* option, QString& name, bool isCustom);
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -339,6 +339,13 @@ void SMESHGUI_MG_ADAPTDRIVER::selectionChanged()
|
|||||||
myArgs->aBrowserObject->setText( aString );
|
myArgs->aBrowserObject->setText( aString );
|
||||||
myArgs->meshNameLineEdit->setText( aString );
|
myArgs->meshNameLineEdit->setText( aString );
|
||||||
myArgs->selectOutMedFileLineEdit->setText(aString+QString(".med"));
|
myArgs->selectOutMedFileLineEdit->setText(aString+QString(".med"));
|
||||||
|
ADAPTATION_MODE aMode;
|
||||||
|
int nbVolumes = myMesh->NbVolumes();
|
||||||
|
int nbFaces = myMesh->NbFaces();
|
||||||
|
if(nbFaces > 0 && nbVolumes > 0) aMode = ADAPTATION_MODE::BOTH;
|
||||||
|
else if(nbFaces > 0) aMode = ADAPTATION_MODE::SURFACE;
|
||||||
|
else aMode = ADAPTATION_MODE::VOLUME;
|
||||||
|
emit myArgs->meshDimSignal(aMode);
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user