smesh/src/SMESHGUI/SMESHGUI_Hypotheses.h

237 lines
8.0 KiB
C
Raw Normal View History

2013-04-01 19:05:47 +06:00
// Copyright (C) 2007-2013 CEA/DEN, EDF R&D, OPEN CASCADE
2004-06-18 14:34:31 +06:00
//
2012-08-09 16:03:55 +06:00
// Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
2004-06-18 14:34:31 +06:00
//
2012-08-09 16:03:55 +06:00
// 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.
2004-06-18 14:34:31 +06:00
//
2012-08-09 16:03:55 +06:00
// 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.
2004-06-18 14:34:31 +06:00
//
2012-08-09 16:03:55 +06:00
// 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
2009-02-17 10:27:49 +05:00
//
2012-08-09 16:03:55 +06:00
// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
2009-02-17 10:27:49 +05:00
//
2012-08-09 16:03:55 +06:00
2009-02-17 10:27:49 +05:00
// SMESH SMESHGUI : GUI for SMESH component
// File : SMESHGUI_Hypotheses.h
// Author : Julia DOROVSKIKH, Open CASCADE S.A.S.
//
#ifndef SMESHGUI_HYPOTHESES_H
#define SMESHGUI_HYPOTHESES_H
2004-06-18 14:34:31 +06:00
2009-02-17 10:27:49 +05:00
// SMESH includes
#include "SMESH_SMESHGUI.hxx"
2012-08-09 16:03:55 +06:00
#include "SMESHGUI_HypothesesUtils.h"
2009-02-17 10:27:49 +05:00
// Qt includes
#include <QtxDialog.h>
#include <QVariant>
// IDL includes
2004-12-01 15:48:31 +05:00
#include <SALOMEconfig.h>
2004-06-18 14:34:31 +06:00
#include CORBA_SERVER_HEADER(SMESH_Hypothesis)
2009-02-17 10:27:49 +05:00
class QEventLoop;
2004-06-18 14:34:31 +06:00
/*!
* \brief Auxiliary class for creation of hypotheses
*/
class SMESHGUI_EXPORT SMESHGUI_GenericHypothesisCreator : public QObject
2004-06-18 14:34:31 +06:00
{
Q_OBJECT
public:
2009-02-17 10:27:49 +05:00
SMESHGUI_GenericHypothesisCreator( const QString& );
virtual ~SMESHGUI_GenericHypothesisCreator();
2009-02-17 10:27:49 +05:00
void create( SMESH::SMESH_Hypothesis_ptr,
2012-08-09 16:03:55 +06:00
const QString&, QWidget*, QObject*, const QString& );
void create( bool, const QString&, QWidget*, QObject*, const QString& );
void edit( SMESH::SMESH_Hypothesis_ptr, const QString&, QWidget*, QObject*, const QString& );
2009-02-17 10:27:49 +05:00
void setInitParamsHypothesis(SMESH::SMESH_Hypothesis_ptr);
2009-02-17 10:27:49 +05:00
virtual bool checkParams( QString& ) const;
virtual void onReject();
virtual QString helpPage() const;
2009-02-17 10:27:49 +05:00
QString hypType() const;
QString hypName() const;
bool isCreation() const;
2012-08-09 16:03:55 +06:00
QString getShapeEntry() const { return myShapeEntry; }
void setShapeEntry( const QString& theEntry );
QString getMainShapeEntry() const { return myMainShapeEntry; }
void setMainShapeEntry( const QString& theEntry ) { myMainShapeEntry = theEntry; }
signals:
void finished( int );
protected:
2009-02-17 10:27:49 +05:00
struct StdParam
{
2012-12-13 17:41:29 +06:00
QString myName;
QVariant myValue;
bool isVariable;
QString myText;
QByteArray myTextAsBytes;
StdParam() {
2009-02-17 10:27:49 +05:00
isVariable = false;
}
2012-12-13 17:41:29 +06:00
const char* text() const {
((QByteArray&) myTextAsBytes) = myText.toLatin1(); return myTextAsBytes.constData();
}
2009-02-17 10:27:49 +05:00
};
typedef QList<StdParam> ListOfStdParams;
typedef QList<QWidget*> ListOfWidgets;
SMESH::SMESH_Hypothesis_var hypothesis() const;
SMESH::SMESH_Hypothesis_var initParamsHypothesis(const bool strict=false) const;
bool hasInitParamsHypothesis() const;
const ListOfWidgets& widgets() const;
ListOfWidgets& changeWidgets();
QtxDialog* dlg() const;
2012-08-09 16:03:55 +06:00
QString getVariableName(const char* methodName) const;
2009-02-17 10:27:49 +05:00
virtual QFrame* buildFrame() = 0;
QFrame* buildStdFrame();
virtual void retrieveParams() const = 0;
virtual QString storeParams() const = 0;
virtual bool stdParams( ListOfStdParams& ) const;
bool getStdParamFromDlg( ListOfStdParams& ) const;
virtual QStringList getVariablesFromDlg() const;
static QString stdParamValues( const ListOfStdParams& );
virtual void attuneStdWidget( QWidget*, const int ) const;
virtual QWidget* getCustomWidget( const StdParam&,
2012-08-09 16:03:55 +06:00
QWidget*, const int ) const;
2009-02-17 10:27:49 +05:00
virtual bool getParamFromCustomWidget( StdParam&, QWidget* ) const;
virtual void valueChanged( QWidget* );
virtual QString caption() const;
virtual QPixmap icon() const;
virtual QString type() const;
protected slots:
2009-02-17 10:27:49 +05:00
virtual void onValueChanged();
private slots:
virtual void onDialogFinished( int );
private:
2012-08-09 16:03:55 +06:00
void editHypothesis( SMESH::SMESH_Hypothesis_ptr, const QString&, QWidget*, QObject* obj, const QString& );
private:
SMESH::SMESH_Hypothesis_var myHypo, myInitParamsHypo;
2013-02-12 20:37:44 +06:00
bool myToDeleteInitParamsHypo;
QString myHypName;
QString myHypType;
ListOfWidgets myParamWidgets;
bool myIsCreate;
QtxDialog* myDlg;
2012-08-09 16:03:55 +06:00
QString myShapeEntry;
QString myMainShapeEntry;
};
class SMESHGUI_HypothesisDlg : public QtxDialog
{
Q_OBJECT
public:
SMESHGUI_HypothesisDlg( SMESHGUI_GenericHypothesisCreator*, QWidget* );
virtual ~SMESHGUI_HypothesisDlg();
2012-08-09 16:03:55 +06:00
void setHIcon( const QPixmap& );
void setCustomFrame( QFrame* );
void setType( const QString& );
protected slots:
2012-08-09 16:03:55 +06:00
virtual void accept();
virtual void reject();
void onHelp();
private:
2012-08-09 16:03:55 +06:00
SMESHGUI_GenericHypothesisCreator* myCreator;
QLabel *myIconLabel, *myTypeLabel;
QString myHelpFileName;
2004-06-18 14:34:31 +06:00
};
/*!
* \brief Class containing information about hypothesis
*/
2004-06-18 14:34:31 +06:00
class HypothesisData
{
2009-02-17 10:27:49 +05:00
public:
HypothesisData( const QString&, const QString&, const QString&,
const QString&, const QString&, const QString&,
const QList<int>&, const bool,
const QStringList&, const QStringList&,
const QStringList&, const QStringList&,
2012-08-09 16:03:55 +06:00
const bool=true, const bool supportSub=false );
2009-02-17 10:27:49 +05:00
QString TypeName; //!< hypothesis type name
QString PluginName; //!< plugin name
QString ServerLibName; //!< server library name
QString ClientLibName; //!< client library name
QString Label; //!< label
QString IconId; //!< icon identifier
QList<int> Dim; //!< list of supported dimensions (see SMESH::Dimension enumeration)
bool IsAux; //!< TRUE if given hypothesis is auxiliary one, FALSE otherwise
bool IsNeedGeometry; //!< TRUE if the algorithm works with shapes only, FALSE otherwise
bool IsSupportSubmeshes; //!< TRUE if the algo building all-dim elems supports submeshes
// for algorithm only: dependencies algo <-> algo and algo -> hypos
QStringList NeededHypos; //!< list of obligatory hypotheses
QStringList OptionalHypos;//!< list of optional hypotheses
QStringList InputTypes; //!< list of element types required as a prerequisite
QStringList OutputTypes; //!< list of types of generated elements
2004-06-18 14:34:31 +06:00
};
2005-11-01 15:11:11 +05:00
/*!
* \brief Class containing set of hypotheses
*
* Actually it contains list of hypo types
*/
class HypothesesSet
{
2009-02-17 10:27:49 +05:00
public:
HypothesesSet( const QString& );
HypothesesSet( const QString&, const QStringList&, const QStringList& );
2012-08-09 16:03:55 +06:00
QString name() const;
void set( bool, const QStringList& );
int count( bool ) const;
void setIsCustom( bool );
bool getIsCustom() const;
int maxDim() const;
bool isAlgo() const;
//this method sets internal index to -1, thus before any data access it is necessary to call next()
void init( bool );
bool more() const;
void next();
QString current() const;
private:
QStringList* list(bool) const;
QStringList* list() const;
private:
QString myHypoSetName;
QStringList myHypoList, myAlgoList;
bool myIsAlgo, myIsCustom;
int myIndex;
2005-11-01 15:11:11 +05:00
};
2009-02-17 10:27:49 +05:00
#endif // SMESHGUI_HYPOTHESES_H