Salome HOME
Merge from V5_1_main 14/05/2010
[modules/smesh.git] / src / StdMeshersGUI / StdMeshersGUI_ObjectReferenceParamWdg.h
1 //  Copyright (C) 2007-2010  CEA/DEN, EDF R&D, OPEN CASCADE
2 //
3 //  Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
4 //  CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
5 //
6 //  This library is free software; you can redistribute it and/or
7 //  modify it under the terms of the GNU Lesser General Public
8 //  License as published by the Free Software Foundation; either
9 //  version 2.1 of the License.
10 //
11 //  This library is distributed in the hope that it will be useful,
12 //  but WITHOUT ANY WARRANTY; without even the implied warranty of
13 //  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
14 //  Lesser General Public License for more details.
15 //
16 //  You should have received a copy of the GNU Lesser General Public
17 //  License along with this library; if not, write to the Free Software
18 //  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
19 //
20 //  See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
21 //
22
23 // File   : StdMeshersGUI_ObjectReferenceParamWdg.h
24 // Author : Open CASCADE S.A.S.
25 //
26 #ifndef STDMESHERSGUI_OBJECTREFERENCEPARAMWDG_H
27 #define STDMESHERSGUI_OBJECTREFERENCEPARAMWDG_H
28
29 // SMESH includes
30 #include "SMESH_StdMeshersGUI.hxx"
31
32 #include <SMESH_Type.h>
33
34 // Qt includes
35 #include <QWidget>
36
37 // CORBA includes
38 #include <CORBA.h>
39
40 class SUIT_SelectionFilter;
41 class SMESHGUI;
42 class LightApp_SelectionMgr;
43 class QLineEdit;
44 class QPushButton;
45
46 /*!
47  *  \brief Widget controlling hypothesis parameter that is an object reference
48  */
49 class STDMESHERSGUI_EXPORT StdMeshersGUI_ObjectReferenceParamWdg : public QWidget
50 {
51   Q_OBJECT
52
53 public:
54   StdMeshersGUI_ObjectReferenceParamWdg( SUIT_SelectionFilter* filter, 
55                                          QWidget*              parent);
56   StdMeshersGUI_ObjectReferenceParamWdg( MeshObjectType objType,
57                                          QWidget*       parent);
58   ~StdMeshersGUI_ObjectReferenceParamWdg();
59
60   void SetObject(CORBA::Object_ptr obj);
61
62   template<class TInterface> 
63     typename TInterface::_var_type GetObject() const {
64     if ( IsObjectSelected() ) return TInterface::_narrow(myObject);
65     return TInterface::_nil();
66   }
67
68   QString GetValue() const { return myParamValue; }
69
70   bool IsObjectSelected() const { return !CORBA::is_nil(myObject); }
71
72   void AvoidSimultaneousSelection( StdMeshersGUI_ObjectReferenceParamWdg* other);
73
74 public slots:
75   /*!
76    * \brief Activates selection (if not yet done), emits selectionActivated()
77     *
78     * Useful to deactivate one Object Reference param widget when an other
79     * one is activated
80    */
81   void activateSelection();
82   void deactivateSelection();
83
84 signals:
85   /*!
86    * \brief Emitted when selection is activated
87     *
88     * Useful to deactivate one Object Reference param widget when an other
89     * one is activated
90    */
91   void selectionActivated();
92   
93 private slots:
94   void onSelectionDone(); 
95
96 private:
97   void init();
98   
99 private:
100  CORBA::Object_var      myObject;
101  SUIT_SelectionFilter*  myFilter;
102  bool                   mySelectionActivated;
103
104  SMESHGUI*              mySMESHGUI;
105  LightApp_SelectionMgr* mySelectionMgr;
106
107  QLineEdit*             myObjNameLineEdit;
108  QPushButton*           mySelButton;
109  QString                myParamValue;
110 };
111
112 #endif // STDMESHERSGUI_OBJECTREFERENCEPARAMWDG_H