0021197: EDF 1772 SMESH: Automatic meshing hypothesis

return names of HypoSets sorted with dimension and [custom] appended

-  QStringList GetHypothesesSets();
+  QStringList GetHypothesesSets( int maxDim );
This commit is contained in:
eap 2011-03-11 13:16:16 +00:00
parent 9296d2af7b
commit 8b054381e1
2 changed files with 71 additions and 15 deletions

View File

@ -50,6 +50,7 @@
// Qt includes // Qt includes
#include <QMap> #include <QMap>
#include <QDir>
//#include <QList> //#include <QList>
// Other includes // Other includes
@ -126,6 +127,40 @@ namespace SMESH
} }
} }
//================================================================================
/*!
* \brief Prepends dimension and appends '[custom]' to the name of hypothesis set
*/
//================================================================================
static QString mangledHypoSetName(HypothesesSet* hypSet)
{
QString name = hypSet->name();
// prepend 'xD: '
int dim = hypSet->maxDim();
if ( dim > -1 )
name = QString("%1D: %2").arg(dim).arg(name);
// custom
if ( hypSet->getIsCustom() )
name = QString("%1 [custom]").arg(name);
return name;
}
//================================================================================
/*!
* \brief Removes dimension and '[custom]' from the name of hypothesis set
*/
//================================================================================
static QString demangledHypoSetName(QString name)
{
name.remove(QRegExp("[0-3]D: "));
name.remove(" [custom]");
return name;
}
void InitAvailableHypotheses() void InitAvailableHypotheses()
{ {
@ -148,9 +183,9 @@ namespace SMESH
QObject::tr("MESHERS_FILE_NO_VARIABLE")); QObject::tr("MESHERS_FILE_NO_VARIABLE"));
return; return;
} }
// get full names of xml files from HypsXmlList
// loop on files in HypsXml QStringList xmlFiles;
QString aNoAccessFiles; xmlFiles.append( QDir::home().filePath("CustomMeshers.xml")); // may be inexistent
for (int i = 0; i < HypsXmlList.count(); i++) { for (int i = 0; i < HypsXmlList.count(); i++) {
QString HypsXml = HypsXmlList[ i ]; QString HypsXml = HypsXmlList[ i ];
@ -158,9 +193,18 @@ namespace SMESH
QString xmlFile = resMgr->path("resources", "SMESH", HypsXml + ".xml"); QString xmlFile = resMgr->path("resources", "SMESH", HypsXml + ".xml");
if ( xmlFile.isEmpty() ) // try PLUGIN resources if ( xmlFile.isEmpty() ) // try PLUGIN resources
xmlFile = resMgr->path("resources", HypsXml, HypsXml + ".xml"); xmlFile = resMgr->path("resources", HypsXml, HypsXml + ".xml");
if ( !xmlFile.isEmpty() )
xmlFiles.append( xmlFile );
}
// loop on xmlFiles
QString aNoAccessFiles;
for (int i = 0; i < xmlFiles.count(); i++)
{
QString xmlFile = xmlFiles[ i ];
QFile file (xmlFile); QFile file (xmlFile);
if (file.exists() && file.open(QIODevice::ReadOnly)) { if (file.exists() && file.open(QIODevice::ReadOnly))
{
file.close(); file.close();
SMESHGUI_XmlHandler* aXmlHandler = new SMESHGUI_XmlHandler(); SMESHGUI_XmlHandler* aXmlHandler = new SMESHGUI_XmlHandler();
@ -178,7 +222,9 @@ namespace SMESH
QList<HypothesesSet*>::iterator it, pos = myListOfHypothesesSets.begin(); QList<HypothesesSet*>::iterator it, pos = myListOfHypothesesSets.begin();
for ( it = aXmlHandler->myListOfHypothesesSets.begin(); for ( it = aXmlHandler->myListOfHypothesesSets.begin();
it != aXmlHandler->myListOfHypothesesSets.end(); it != aXmlHandler->myListOfHypothesesSets.end();
++it ) { ++it )
{
(*it)->setIsCustom( i == 0 );
myListOfHypothesesSets.insert( pos, *it ); myListOfHypothesesSets.insert( pos, *it );
} }
} }
@ -187,15 +233,15 @@ namespace SMESH
QObject::tr("INF_PARSE_ERROR"), QObject::tr("INF_PARSE_ERROR"),
QObject::tr(aXmlHandler->errorProtocol().toLatin1().data())); QObject::tr(aXmlHandler->errorProtocol().toLatin1().data()));
} }
delete aXmlHandler; delete aXmlHandler;
} }
else { else if ( i > 0 ) { // 1st is ~/CustomMeshers.xml
if (aNoAccessFiles.isEmpty()) if (aNoAccessFiles.isEmpty())
aNoAccessFiles = xmlFile; aNoAccessFiles = xmlFile;
else else
aNoAccessFiles += ", " + xmlFile; aNoAccessFiles += ", " + xmlFile;
} }
} // end loop } // end loop on xmlFiles
if (!aNoAccessFiles.isEmpty()) { if (!aNoAccessFiles.isEmpty()) {
@ -240,7 +286,7 @@ namespace SMESH
} }
QStringList GetHypothesesSets() QStringList GetHypothesesSets(int maxDim)
{ {
QStringList aSetNameList; QStringList aSetNameList;
@ -252,22 +298,32 @@ namespace SMESH
hypoSet != myListOfHypothesesSets.end(); hypoSet != myListOfHypothesesSets.end();
++hypoSet ) { ++hypoSet ) {
HypothesesSet* aSet = *hypoSet; HypothesesSet* aSet = *hypoSet;
if ( aSet && aSet->count( true ) ) { if ( aSet &&
aSetNameList.append( aSet->name() ); ( aSet->count( true ) || aSet->count( false )) &&
aSet->maxDim() <= maxDim)
{
aSetNameList.append( mangledHypoSetName( aSet ));
} }
} }
aSetNameList.sort();
// reverse order of aSetNameList
QStringList reversedNames;
for ( int i = 0; i < aSetNameList.count(); ++i )
reversedNames.prepend( aSetNameList[i] );
return aSetNameList; return reversedNames;
} }
HypothesesSet* GetHypothesesSet(const QString& theSetName) HypothesesSet* GetHypothesesSet(const QString& theSetName)
{ {
QString name = demangledHypoSetName( theSetName );
QList<HypothesesSet*>::iterator hypoSet; QList<HypothesesSet*>::iterator hypoSet;
for ( hypoSet = myListOfHypothesesSets.begin(); for ( hypoSet = myListOfHypothesesSets.begin();
hypoSet != myListOfHypothesesSets.end(); hypoSet != myListOfHypothesesSets.end();
++hypoSet ) { ++hypoSet ) {
HypothesesSet* aSet = *hypoSet; HypothesesSet* aSet = *hypoSet;
if ( aSet && aSet->name() == theSetName ) if ( aSet && aSet->name() == name )
return aSet; return aSet;
} }
return 0; return 0;

View File

@ -68,7 +68,7 @@ namespace SMESH
const bool = false, const bool = false,
const bool = true); const bool = true);
SMESHGUI_EXPORT SMESHGUI_EXPORT
QStringList GetHypothesesSets(); QStringList GetHypothesesSets( int maxDim );
SMESHGUI_EXPORT SMESHGUI_EXPORT
HypothesesSet* GetHypothesesSet( const QString& ); HypothesesSet* GetHypothesesSet( const QString& );