-// Copyright (C) 2007-2012 CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2019 CEA/DEN, EDF R&D, OPEN CASCADE
//
// This library is free software; you can redistribute it and/or
// modify it under the terms of the GNU Lesser General Public
// License as published by the Free Software Foundation; either
-// version 2.1 of the License.
+// version 2.1 of the License, or (at your option) any later version.
//
// This library is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
#include "Material_ResourceMgr.h"
+#include <QFileInfo>
#include <QFileSystemWatcher>
#include <QThread>
}
/*!
- \brief Get list of avaiable materials
+ \brief Get list of available materials
\param theType material type
\param theSort if \c true (default), returns a list of materials sorted by name
- \return list of avaiable materials names
+ \return list of available materials names
*/
QStringList Material_ResourceMgr::materials( MaterialType theType, bool theSort )
{
qSort( slglobal );
qSort( sluser );
}
+ // special processing for default material (to make it first in the list)
+ if ( slglobal.contains( "[ Default ]" ) ) {
+ slglobal.removeAll( "[ Default ]" );
+ slglobal.prepend( "[ Default ]" );
+ }
// combine the materials to obtain result list
QStringList result;
if ( on ) {
if ( !myWatcher ) {
myWatcher = new QFileSystemWatcher( this );
- myWatcher->addPath( userFileName( appName() ) );
+ QFileInfo ufile = userFileName( appName() );
+ if ( ufile.exists() ) {
+ myWatcher->addPath( ufile.filePath() );
+ }
connect( myWatcher, SIGNAL( fileChanged( QString ) ), this, SLOT( update() ) );
}
}
}
}
+/*!
+ \brief This function is called after user configuration file is saved.
+ \internal
+*/
+void Material_ResourceMgr::saved()
+{
+ if ( resourceMgr() != this ) {
+ resourceMgr()->saved();
+ }
+ else if ( myWatcher ) {
+ QStringList files = myWatcher->files();
+ QFileInfo ufile = userFileName( appName() );
+ if ( ufile.exists() && !files.contains( ufile.filePath() ) ) {
+ myWatcher->addPath( ufile.filePath() );
+ update();
+ }
+ }
+}
+
/*!
\brief Update user database slot
\internal