Salome HOME
af358d1d72a74b75ad138cdfa1946a4e26309b95
[modules/gui.git] / src / SUIT / SUIT_ViewManager.h
1 #ifndef SUIT_VIEWMANAGER_H
2 #define SUIT_VIEWMANAGER_H
3
4 #include "SUIT.h"
5 #include "SUIT_ViewWindow.h"
6 #include "SUIT_PopupClient.h"
7
8 #include <qobject.h>
9 #include <qptrvector.h>
10
11 class SUIT_Study;
12 class SUIT_Desktop;
13 class SUIT_ViewModel;
14
15 class QPopupMenu;
16
17 #ifdef WIN32
18 #pragma warning( disable:4251 )
19 #endif
20
21 class SUIT_EXPORT SUIT_ViewManager : public QObject, public SUIT_PopupClient
22 {
23   Q_OBJECT
24 public:
25   SUIT_ViewManager( SUIT_Study*,
26                     SUIT_Desktop*,
27                     SUIT_ViewModel* = 0 );
28   virtual ~SUIT_ViewManager();
29
30   virtual QString  popupClientType() const { return getType(); }
31   virtual void     contextMenuPopup( QPopupMenu* );
32   
33   void             setViewModel(SUIT_ViewModel* theViewModel);
34   SUIT_ViewModel*  getViewModel() { return myViewModel; }
35   
36   SUIT_Study*      study() const;
37
38   QString          getType() const; 
39   SUIT_ViewWindow* getActiveView() { return myActiveView; }
40   
41   int              getViewsCount() { return myViews.count(); }
42   QPtrVector<SUIT_ViewWindow> getViews() { return myViews; }  
43
44   QString          getTitle() const { return myTitle;}
45   void             setTitle(QString theTitle) { myTitle = theTitle; }
46
47   SUIT_ViewWindow* createViewWindow();
48
49   virtual void     setShown( const bool );
50
51 public slots:
52   void             createView();
53   void             closeAllViews();
54   
55 signals:
56   void             lastViewClosed(SUIT_ViewManager*);
57   void             deleteView(SUIT_ViewWindow*);
58   void             viewCreated(SUIT_ViewWindow*);
59   void             mousePress(SUIT_ViewWindow*, QMouseEvent*);
60   void             mouseRelease(SUIT_ViewWindow*, QMouseEvent*);
61   void             mouseDoubleClick(SUIT_ViewWindow*, QMouseEvent*);
62   void             mouseMove(SUIT_ViewWindow*, QMouseEvent*);
63   void             wheel(SUIT_ViewWindow*, QWheelEvent*);
64   void             keyPress(SUIT_ViewWindow*, QKeyEvent*);
65   void             keyRelease(SUIT_ViewWindow*, QKeyEvent*);
66   void             activated(SUIT_ViewManager*);
67   
68 protected slots:
69   void             onWindowActivated(SUIT_ViewWindow*);
70   void             onDeleteView(SUIT_ViewWindow* theView);
71   void             onMousePressed(SUIT_ViewWindow* theView, QMouseEvent* theEvent);
72   void             onDeleteStudy();
73
74 private slots:
75   void             onContextMenuRequested( QContextMenuEvent* e );
76   
77 protected:
78   /*! Inserts the View into internal Views Vector.\n
79    *  Returns true if view has been added successfully
80    */
81   virtual bool     insertView(SUIT_ViewWindow* theView);
82   
83   /*! Removes the View from internal Views Vector.*/
84   virtual void     removeView(SUIT_ViewWindow* theView);
85   
86   /*! Used to set unique name for the view.*/
87   virtual void     setViewName(SUIT_ViewWindow* theView);
88
89 protected:
90   SUIT_Desktop*               myDesktop;
91   SUIT_ViewModel*             myViewModel;
92   QPtrVector<SUIT_ViewWindow> myViews;
93   SUIT_ViewWindow*            myActiveView;
94
95   QString                     myTitle;
96   SUIT_Study*                 myStudy;
97 };
98
99 #ifdef WIN32
100 #pragma warning( default:4251 )
101 #endif
102
103 #endif