Salome HOME
eb82e0b7a1acd98b05be3168626013a35526f5c3
[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 public slots:
50   void             createView();
51   void             closeAllViews();
52   
53 signals:
54   void             lastViewClosed(SUIT_ViewManager*);
55   void             deleteView(SUIT_ViewWindow*);
56   void             viewCreated(SUIT_ViewWindow*);
57   void             mousePress(SUIT_ViewWindow*, QMouseEvent*);
58   void             mouseRelease(SUIT_ViewWindow*, QMouseEvent*);
59   void             mouseDoubleClick(SUIT_ViewWindow*, QMouseEvent*);
60   void             mouseMove(SUIT_ViewWindow*, QMouseEvent*);
61   void             wheel(SUIT_ViewWindow*, QWheelEvent*);
62   void             keyPress(SUIT_ViewWindow*, QKeyEvent*);
63   void             keyRelease(SUIT_ViewWindow*, QKeyEvent*);
64   void             activated(SUIT_ViewManager*);
65   
66 protected slots:
67   void             onWindowActivated(SUIT_ViewWindow*);
68   void             onDeleteView(SUIT_ViewWindow* theView);
69   void             onMousePressed(SUIT_ViewWindow* theView, QMouseEvent* theEvent);
70   void             onDeleteStudy();
71
72 private slots:
73   void             onContextMenuRequested( QContextMenuEvent* e );
74   
75 protected:
76   /*! Inserts the View into internal Views Vector.\n
77    *  Returns true if view has been added successfully
78    */
79   virtual bool     insertView(SUIT_ViewWindow* theView);
80   
81   /*! Removes the View from internal Views Vector.*/
82   virtual void     removeView(SUIT_ViewWindow* theView);
83   
84   /*! Used to set unique name for the view.*/
85   virtual void     setViewName(SUIT_ViewWindow* theView);
86
87 protected:
88   SUIT_Desktop*               myDesktop;
89   SUIT_ViewModel*             myViewModel;
90   QPtrVector<SUIT_ViewWindow> myViews;
91   SUIT_ViewWindow*            myActiveView;
92
93   QString                     myTitle;
94   SUIT_Study*                 myStudy;
95 };
96
97 #ifdef WIN32
98 #pragma warning( default:4251 )
99 #endif
100
101 #endif