-// SMESH SMESHGUI : GUI for SMESH component
+// SMESH SMESHGUI : GUI for SMESH component
//
-// Copyright (C) 2003 CEA
-//
-// 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.org
+// Copyright (C) 2003 CEA
//
+// 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.
//
-// File : SMESHGUI_Hypotheses.h
-// Author : Julia DOROVSKIKH
-// Module : SMESH
-// $Header$
+// 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 : SMESHGUI_Hypotheses.h
+// Author : Julia DOROVSKIKH, Open CASCADE S.A.S.
+//
+
+#ifndef SMESHGUI_HYPOTHESES_H
+#define SMESHGUI_HYPOTHESES_H
-#ifndef SMESHGUI_Hypotheses_HeaderFile
-#define SMESHGUI_Hypotheses_HeaderFile
+// SMESH includes
+#include "SMESH_SMESHGUI.hxx"
+// Qt includes
+#include <QtxDialog.h>
+#include <QVariant>
+
+// IDL includes
#include <SALOMEconfig.h>
#include CORBA_SERVER_HEADER(SMESH_Hypothesis)
-// QT Includes
-#include <qstring.h>
-#include <qwidget.h>
-#include <qvaluevector.h>
-#include <qstringlist.h>
+class QEventLoop;
/*!
* \brief Auxiliary class for creation of hypotheses
*/
-class SMESHGUI_GenericHypothesisCreator
+class SMESHGUI_EXPORT SMESHGUI_GenericHypothesisCreator : public QObject
{
- public:
- virtual void CreateHypothesis (const bool isAlgo, QWidget* parent) = 0;
- virtual void EditHypothesis (SMESH::SMESH_Hypothesis_ptr theHyp) = 0;
+ Q_OBJECT
+
+public:
+ SMESHGUI_GenericHypothesisCreator( const QString& );
+ virtual ~SMESHGUI_GenericHypothesisCreator();
+
+ void create( SMESH::SMESH_Hypothesis_ptr,
+ const QString&, QWidget* );
+ void create( bool, const QString&, QWidget* );
+ void edit( SMESH::SMESH_Hypothesis_ptr,
+ const QString&, QWidget* );
+
+ virtual bool checkParams() const = 0;
+ virtual void onReject();
+
+ QString hypType() const;
+ QString hypName() const;
+ bool isCreation() const;
+
+protected:
+ typedef struct
+ {
+ QString myName;
+ QVariant myValue;
+
+ } StdParam;
+
+ typedef QList<StdParam> ListOfStdParams;
+ typedef QList<QWidget*> ListOfWidgets;
+
+ SMESH::SMESH_Hypothesis_var hypothesis() const;
+ SMESH::SMESH_Hypothesis_var initParamsHypothesis() const;
+ const ListOfWidgets& widgets() const;
+ ListOfWidgets& changeWidgets();
+ QtxDialog* dlg() const;
+
+ 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;
+ static QString stdParamValues( const ListOfStdParams& );
+ virtual void attuneStdWidget( QWidget*, const int ) const;
+ virtual QWidget* getCustomWidget( const StdParam&,
+ QWidget*, const int ) const;
+ virtual bool getParamFromCustomWidget( StdParam&, QWidget* ) const;
+ virtual QString caption() const;
+ virtual QPixmap icon() const;
+ virtual QString type() const;
+
+protected slots:
+ virtual void onValueChanged();
+
+private slots:
+ virtual void onDialogFinished( int );
+
+private:
+ bool editHypothesis( SMESH::SMESH_Hypothesis_ptr,
+ const QString&, QWidget* );
+
+private:
+ SMESH::SMESH_Hypothesis_var myHypo, myInitParamsHypo;
+ QString myHypName;
+ QString myHypType;
+ ListOfWidgets myParamWidgets;
+ bool myIsCreate;
+ QtxDialog* myDlg;
+ QEventLoop* myEventLoop;
+};
+
+class SMESHGUI_HypothesisDlg : public QtxDialog
+{
+ Q_OBJECT
+
+public:
+ SMESHGUI_HypothesisDlg( SMESHGUI_GenericHypothesisCreator*, QWidget* );
+ virtual ~SMESHGUI_HypothesisDlg();
+
+ void setHIcon( const QPixmap& );
+ void setCustomFrame( QFrame* );
+ void setType( const QString& );
+
+protected slots:
+ virtual void accept();
+ virtual void reject();
+ void onHelp();
+
+private:
+ SMESHGUI_GenericHypothesisCreator* myCreator;
+ QLabel* myIconLabel;
+ QLabel* myTypeLabel;
+ QString myHelpFileName;
};
/*!
*/
class HypothesisData
{
- public:
- HypothesisData( const QString& thePluginName,
- const QString& theServerLibName,
- const QString& theClientLibName,
- const QString& theLabel,
- const QString& theIconId,
- const QValueList<int>& theDim,
- const bool theIsAux )
-: PluginName( thePluginName ),
- ServerLibName( theServerLibName ),
- ClientLibName( theClientLibName ),
- Label( theLabel ),
- IconId( theIconId ),
- Dim( theDim ),
- IsAux( theIsAux )
- {};
-
- QString PluginName; //!< plugin name
- QString ServerLibName; //!< server library name
- QString ClientLibName; //!< client library name
- QString Label; //!< label
- QString IconId; //!< icon identifier
- QValueList<int> Dim; //!< list of supported dimensions (see SMESH::Dimension enumeration)
- bool IsAux; //!< TRUE if given hypothesis is auxiliary one, FALSE otherwise
+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&,
+ const bool = true );
+
+ 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 for given hypothesis need shape, FALSE otherwise
+
+ // 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
};
/*!
*/
class HypothesesSet
{
- public:
- HypothesesSet( const QString& theSetName )
- : HypoSetName( theSetName ) {};
- HypothesesSet( const QString& theSetName,
- const QStringList& theHypoList,
- const QStringList& theAlgoList )
- : HypoSetName( theSetName ), HypoList(theHypoList), AlgoList(theAlgoList) {};
+public:
+ HypothesesSet( const QString& );
+ HypothesesSet( const QString&, const QStringList&, const QStringList& );
+
QString HypoSetName;
QStringList HypoList, AlgoList;
};
-#endif
+
+#endif // SMESHGUI_HYPOTHESES_H