Salome HOME
79b7868671f7c517e225b40d183c4f07509ca107
[modules/gui.git] / src / SalomeApp / SalomeApp_WidgetContainer.cxx
1 #include "SalomeApp_WidgetContainer.h"
2
3 #include <qobjectlist.h>
4 #include <qwidgetstack.h>
5
6 /*!
7   Constructor.
8 */
9 SalomeApp_WidgetContainer::SalomeApp_WidgetContainer( const int type, QWidget* parent )
10 : QDockWindow( QDockWindow::InDock, parent ),
11 myType( type )
12 {
13   setWidget( myStack = new QWidgetStack( this ) );
14   myStack->show();
15 }
16
17 /*!
18   Destructor.
19 */
20 SalomeApp_WidgetContainer::~SalomeApp_WidgetContainer()
21 {
22 }
23
24 /*!
25   Checks: is widget container is empty?
26 */
27 bool SalomeApp_WidgetContainer::isEmpty() const
28 {
29   const QObjectList* lst = myStack->children();
30   if ( !lst )
31     return true;
32
33   bool res = true;
34   for ( QObjectListIt it( *lst ); it.current() && res; ++it )
35   {
36     if ( it.current()->isWidgetType() && myStack->id( (QWidget*)it.current() ) != -1 )
37       res = false;
38   }
39   return res;
40 }
41
42 /*!
43   Gets type of widget container.
44 */
45 int SalomeApp_WidgetContainer::type() const
46 {
47   return myType;
48 }
49
50 /*!
51   Checks: is container contains widget with id \a id.
52 */
53 bool SalomeApp_WidgetContainer::contains( const int id ) const
54 {
55   return myStack->widget( id ) != 0;
56 }
57
58 /*!
59  * Insert widget(\a wid with id \a id) to container.And return id of widget in stack.
60  *\warning remove widget with id = \a id , if it was in container.
61  */
62 int SalomeApp_WidgetContainer::insert( const int id, QWidget* wid )
63 {
64   if ( id == -1 || !wid )
65     return -1;
66
67   if ( contains( id ) )
68     remove( id );
69
70   int stackId = myStack->addWidget( wid, id );
71   if ( !myStack->visibleWidget() )
72     myStack->raiseWidget( wid );
73
74   setCaption( myStack->visibleWidget() ? myStack->visibleWidget()->caption() : QString::null );
75
76   return stackId;
77 }
78
79 /*!
80   Remove widget from stack by widget \a id.
81 */
82 void SalomeApp_WidgetContainer::remove( const int id )
83 {
84   remove( myStack->widget( id ) );
85
86   setCaption( myStack->visibleWidget() ? myStack->visibleWidget()->caption() : QString::null );
87 }
88
89 /*!
90   Remove widget(\a wid) from stack.
91 */
92 void SalomeApp_WidgetContainer::remove( QWidget* wid )
93 {
94   myStack->removeWidget( wid );
95
96   setCaption( myStack->visibleWidget() ? myStack->visibleWidget()->caption() : QString::null );
97 }
98
99 /*!
100   Raise widget with id = \a id.
101 */
102 void SalomeApp_WidgetContainer::activate( const int id )
103 {
104   myStack->raiseWidget( id );
105
106   setCaption( myStack->visibleWidget() ? myStack->visibleWidget()->caption() : QString::null );
107 }
108
109 /*!
110   Raise widget (\a wid).
111 */
112 void SalomeApp_WidgetContainer::activate( QWidget* wid )
113 {
114   myStack->raiseWidget( wid );
115
116   setCaption( myStack->visibleWidget() ? myStack->visibleWidget()->caption() : QString::null );
117 }
118
119 /*!
120   Gets widget from container list(stack) by id = \a id.
121 */
122 QWidget* SalomeApp_WidgetContainer::widget( const int id ) const
123 {
124   return myStack->widget( id );
125 }
126
127 /*!
128   Gets visible widget.
129 */
130 QWidget* SalomeApp_WidgetContainer::active() const
131 {
132   return myStack->visibleWidget();
133 }