mirror of
https://git.salome-platform.org/gitpub/modules/geom.git
synced 2025-02-15 00:53:07 +05:00
117 lines
3.3 KiB
C++
117 lines
3.3 KiB
C++
![]() |
// Copyright (C) 2007-2012 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.
|
||
|
//
|
||
|
// This library is distributed in the hope that it will be useful,
|
||
|
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||
|
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||
|
// Lesser General Public License for more details.
|
||
|
//
|
||
|
// You should have received a copy of the GNU Lesser General Public
|
||
|
// License along with this library; if not, write to the Free Software
|
||
|
// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||
|
//
|
||
|
// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
|
||
|
//
|
||
|
|
||
|
// File : Material_ResourceMgr.cxx
|
||
|
// Author : Margarita KARPUNINA, Open CASCADE S.A.S. (margarita.karpunina@opencascade.com)
|
||
|
|
||
|
#include "Material_ResourceMgr.h"
|
||
|
|
||
|
/*!
|
||
|
\class Material_ResourceMgr
|
||
|
\brief Material properties resources manager.
|
||
|
|
||
|
This class is used to manage the material properties throughout the application
|
||
|
in the similar way as QtxResourceMgr does it with application preferences.
|
||
|
|
||
|
Standard material types are stored in the global application settings files
|
||
|
(named as SalomeMaterial.xml). User-defined materials are stored in user's home
|
||
|
directory - in the file .SalomeMaterialrc.
|
||
|
|
||
|
The Material_ResourceMgr class is used by material properties dialog box
|
||
|
(GEOMToolsGUI_MaterialPropertiesDlg class).
|
||
|
*/
|
||
|
|
||
|
/*!
|
||
|
\brief Constructor
|
||
|
*/
|
||
|
Material_ResourceMgr::Material_ResourceMgr()
|
||
|
: QtxResourceMgr( "SalomeMaterial", "%1Config" )
|
||
|
{
|
||
|
if ( dirList().isEmpty() && ::getenv( "GEOM_ROOT_DIR" ) )
|
||
|
setDirList( QStringList() << Qtx::addSlash( ::getenv( "GEOM_ROOT_DIR" ) ) + "share/salome/resources/geom" );
|
||
|
setCurrentFormat( "xml" );
|
||
|
}
|
||
|
|
||
|
/*!
|
||
|
\brief Destructor
|
||
|
*/
|
||
|
Material_ResourceMgr::~Material_ResourceMgr()
|
||
|
{
|
||
|
}
|
||
|
|
||
|
/*!
|
||
|
\brief Get list of avaiable 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
|
||
|
*/
|
||
|
QStringList Material_ResourceMgr::materials( MaterialType theType, bool theSort )
|
||
|
{
|
||
|
// store original working mode
|
||
|
WorkingMode m = workingMode();
|
||
|
|
||
|
QStringList slglobal, sluser;
|
||
|
|
||
|
// retrieve all materials : global + user
|
||
|
setWorkingMode( AllowUserValues );
|
||
|
sluser = sections();
|
||
|
|
||
|
// retrieve only global materials
|
||
|
setWorkingMode( IgnoreUserValues );
|
||
|
slglobal = sections();
|
||
|
|
||
|
// remove global materials from user list to obtain only user materials
|
||
|
QMutableListIterator<QString> it( sluser );
|
||
|
while ( it.hasNext() ) {
|
||
|
QString s = it.next();
|
||
|
if ( slglobal.contains( s ) ) it.remove();
|
||
|
}
|
||
|
|
||
|
// remove 'common' material
|
||
|
slglobal.removeAll("[common]");
|
||
|
|
||
|
// restore original working mode
|
||
|
setWorkingMode( m );
|
||
|
|
||
|
// sort if necessary (separately global and user materials)
|
||
|
if ( theSort ) {
|
||
|
qSort( slglobal );
|
||
|
qSort( sluser );
|
||
|
}
|
||
|
|
||
|
// combine the materials to obtain result list
|
||
|
QStringList result;
|
||
|
|
||
|
switch ( theType ) {
|
||
|
case Global:
|
||
|
result = slglobal;
|
||
|
break;
|
||
|
case User:
|
||
|
result = sluser;
|
||
|
break;
|
||
|
case All:
|
||
|
result = slglobal + sluser;
|
||
|
break;
|
||
|
default:
|
||
|
break;
|
||
|
}
|
||
|
|
||
|
return result;
|
||
|
}
|