Salome HOME
0022256: [CEA 866] Add item "Developers" in menu "Help"
[modules/gui.git] / src / QxGraph / QxGraph_CanvasView.h
1 // Copyright (C) 2007-2013  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 //  SALOME QxGraph : build Supervisor viewer into desktop
24 //
25 #ifndef QXGRAPH_CANVASVIEW_H
26 #define QXGRAPH_CANVASVIEW_H
27
28 #include "QxGraph.h"
29
30 #include <qcanvas.h>
31 #include <qcursor.h>
32 #include <qtimer.h>
33 #include <qtooltip.h>
34
35 class QxGraph_Canvas;
36 class QxGraph_ViewWindow;
37 class QxGraph_ActiveItem;
38
39 class QXGRAPH_EXPORT QxGraph_CanvasView : public QCanvasView {
40   Q_OBJECT
41
42  public:
43   enum OperationType{ NOTHING, PANVIEW, ZOOMVIEW, PANGLOBAL, 
44                       WINDOWFIT, FITALLVIEW, RESETVIEW };
45   
46   QxGraph_CanvasView(QxGraph_Canvas* theCanvas, QxGraph_ViewWindow* theViewWindow);
47   virtual ~QxGraph_CanvasView();
48
49   QxGraph_ViewWindow* getViewWindow() const;
50
51   void activateFitAll();
52   void activateFitRect();
53   void activateZoom();
54   void activatePanning();
55   void activateGlobalPanning();
56   void activateReset();
57
58   void itemRemoved( QCanvasItem* );
59
60   void setSelectedItem( QxGraph_ActiveItem* theItem );
61   QxGraph_ActiveItem* getSelectedItem() const;
62
63  signals:
64   void viewOperationDone();
65
66  public slots:
67   void onTimeout();
68    //void changeBackground();
69
70  protected:
71   void contentsMousePressEvent(QMouseEvent* theEvent); 
72   void contentsMouseMoveEvent(QMouseEvent* theEvent);
73   void contentsMouseReleaseEvent(QMouseEvent* theEvent); 
74   void contentsMouseDoubleClickEvent(QMouseEvent* theEvent);
75
76   bool isSelectedItemInCanvas();
77
78  private:
79   // for moving items
80   QCanvasItem*      myCurrentItem;
81   QPoint            myPoint;
82   QPoint            myGlobalPoint;
83   bool              myMovingDone;
84   QPoint            myCenter;
85   
86   // for control toolbar actions
87   OperationType     myOperation;
88   QCursor           myCursor;
89   QCanvasRectangle* mySelectedRect;
90
91   // for automatic content scrolling if mouse is outside
92   QTimer*           myTimer;
93   int               myDX;
94   int               myDY;
95
96   // for hilight
97   QxGraph_ActiveItem* myHilightedItem;
98
99   // for selection
100   QxGraph_ActiveItem* mySelectedItem;
101 };
102
103
104 class QxGraph_ToolTip: public QToolTip {
105   
106  public:
107   QxGraph_ToolTip(QWidget* theWidget, QToolTipGroup* theGroup = 0):
108     QToolTip(theWidget, theGroup) {}
109   ~QxGraph_ToolTip() { remove(parentWidget()); }
110     
111   virtual void maybeTip(const QPoint& theMousePos);
112 };
113
114 #endif