]> SALOME platform Git repositories - modules/gui.git/blob - src/Plot2d/Plot2d_ViewFrame.h
Salome HOME
6cc8ff364140bd3a5aaa794e0c4d69c4d85c794d
[modules/gui.git] / src / Plot2d / Plot2d_ViewFrame.h
1 #ifndef PLOT2D_VIEWFRAME_H
2 #define PLOT2D_VIEWFRAME_H
3
4 #include "Plot2d_Curve.h"
5 #include <qwidget.h>
6 #include <qintdict.h>
7
8 class Plot2d_Plot2d;
9 class Plot2d_Prs;
10
11 typedef QIntDict<Plot2d_Curve> CurveDict;
12
13 class PLOT2D_EXPORT Plot2d_ViewFrame : public QWidget
14
15   Q_OBJECT
16
17   enum { NoOpId, FitAreaId, ZoomId, PanId, GlPanId, DumpId, 
18    ModeXLinearId, ModeXLogarithmicId, ModeYLinearId, ModeYLogarithmicId,
19    LegendId, CurvePointsId, CurveLinesId, CurveSplinesId };
20 public:
21   /* Construction/destruction */
22   Plot2d_ViewFrame( QWidget* parent, const QString& title = "" );
23   virtual ~Plot2d_ViewFrame();
24
25   enum ObjectType { MainTitle, XTitle, YTitle, Y2Title, XAxis, YAxis, Y2Axis };
26
27 public:
28   QWidget* getViewWidget();
29
30   /* display */
31   void    DisplayAll();
32   void    EraseAll();
33   void    Repaint();
34
35   void    Display( const Plot2d_Prs* );
36   void    Erase( const Plot2d_Prs*, const bool = false );
37   Plot2d_Prs* CreatePrs( const char* entry = 0 );
38
39   /* operations */
40   void    setTitle( const QString& title );
41   QString getTitle() const { return myTitle; }
42   void    displayCurve( Plot2d_Curve* curve, bool update = false );
43   void    displayCurves( const curveList& curves, bool update = false );
44   void    eraseCurve( Plot2d_Curve* curve, bool update = false );
45   void    eraseCurves( const curveList& curves, bool update = false );
46   int     getCurves( curveList& clist );
47   const   CurveDict& getCurves() { return myCurves; }
48   int     hasCurve( Plot2d_Curve* curve );
49   bool    isVisible( Plot2d_Curve* curve );
50   void    updateCurve( Plot2d_Curve* curve, bool update = false );
51   void    updateLegend( const Plot2d_Prs* prs );
52   void    fitAll();
53   void    fitArea( const QRect& area );
54   void    fitData(const int mode,
55                   const double xMin, const double xMax,
56                   const double yMin, const double yMax,
57                   const double y2Min = 0, const double y2Max = 0);
58
59   void    getFitRanges(double& xMin, double& xMax,
60                        double& yMin, double& yMax,
61                        double& y2Min, double& y2Max);
62
63   /* view parameters */
64   void    copyPreferences( Plot2d_ViewFrame* );
65   void    setCurveType( int curveType, bool update = true );
66   int     getCurveType() const { return myCurveType; }
67   void    setCurveTitle( int curveKey, const QString& title );
68   void    showLegend( bool show, bool update = true );
69   void    setLegendPos( int pos );
70   int     getLegendPos() const { return myLegendPos; }
71   void    setMarkerSize( const int size, bool update = true  );
72   int     getMarkerSize() const { return myMarkerSize; }
73   void    setBackgroundColor( const QColor& color );
74   QColor  backgroundColor() const;
75   void    setXGrid( bool xMajorEnabled, const int xMajorMax,
76                     bool xMinorEnabled, const int xMinorMax, bool update = true );
77   void    setYGrid( bool yMajorEnabled, const int yMajorMax,
78                     bool yMinorEnabled, const int yMinorMax,
79                     bool y2MajorEnabled, const int y2MajorMax,
80                     bool y2MinorEnabled, const int y2MinorMax, bool update = true );
81   void    setTitle( bool enabled, const QString& title, ObjectType type, bool update = true );
82   QString getTitle( ObjectType type ) const;
83
84   void    setFont( const QFont& font, ObjectType type, bool update = true );
85   void    setHorScaleMode( const int mode, bool update = true );
86   int     getHorScaleMode() const { return myXMode; }
87   void    setVerScaleMode( const int mode, bool update = true );
88   int     getVerScaleMode() const { return myYMode; }
89
90   bool    isModeHorLinear();
91   bool    isModeVerLinear();
92   bool    isLegendShow() { return myShowLegend; };
93
94 protected:
95   int     testOperation( const QMouseEvent& );
96   void    readPreferences();
97   void    writePreferences();
98   QString getInfo( const QPoint& pnt );
99   virtual void wheelEvent( QWheelEvent* );
100
101 public slots:
102   void    onViewPan(); 
103   void    onViewZoom();
104   void    onViewFitAll();
105   void    onViewFitArea();
106   void    onViewGlobalPan(); 
107   void    onSettings();
108   void    onFitData();
109   void    onChangeBackground();
110
111 protected slots:
112   void    plotMousePressed( const QMouseEvent& );
113   void    plotMouseMoved( const QMouseEvent& );
114   void    plotMouseReleased( const QMouseEvent& );
115
116 signals:
117   void    vpModeHorChanged();
118   void    vpModeVerChanged();
119   void    vpCurveChanged();
120   void    contextMenuRequested( QContextMenuEvent *e );
121
122 protected:
123   Plot2d_Plot2d* myPlot;
124   int            myOperation;
125   QPoint         myPnt;
126   CurveDict      myCurves;
127
128   int            myCurveType;
129   bool           myShowLegend;
130   int            myLegendPos;
131   int            myMarkerSize;
132   QColor         myBackground;
133   QString        myTitle, myXTitle, myYTitle, myY2Title;
134   bool           myTitleEnabled, myXTitleEnabled, myYTitleEnabled, myY2TitleEnabled;
135   bool           myXGridMajorEnabled, myYGridMajorEnabled, myY2GridMajorEnabled;
136   bool           myXGridMinorEnabled, myYGridMinorEnabled, myY2GridMinorEnabled;
137   int            myXGridMaxMajor, myYGridMaxMajor, myY2GridMaxMajor;
138   int            myXGridMaxMinor, myYGridMaxMinor, myY2GridMaxMinor;
139   int            myXMode, myYMode;
140   double         myXDistance, myYDistance, myYDistance2;
141   bool           mySecondY;
142 };
143
144 class Plot2d_Plot2d : public QwtPlot 
145 {
146 public:
147   Plot2d_Plot2d( QWidget* parent );
148
149   void       replot();
150   void       getNextMarker( QwtSymbol::Style& typeMarker, QColor& color, Qt::PenStyle& typeLine );
151   QwtLegend* getLegend() {
152 #if QWT_VERSION < 0x040200
153      return d_legend;
154 #else  
155      return legend(); /* mpv: porting to the Qwt 4.2.0 */
156 #endif
157   }
158   virtual QSize       sizeHint() const;
159   virtual QSizePolicy sizePolicy() const;
160   virtual QSize       minimumSizeHint() const;
161
162 protected:
163   bool       existMarker( const QwtSymbol::Style typeMarker, const QColor& color, const Qt::PenStyle typeLine );
164
165 protected:
166   QValueList<QColor> myColors;
167 };
168
169 #endif