SelectionMoveResizer.h
Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030 #ifndef SELECTION_MOVE_RESIZER_H
00031 #define SELECTION_MOVE_RESIZER_H
00032
00033 #include <QWidget>
00034 #include <QList>
00035 #include <QRect>
00036
00037 class QPoint;
00038 class QwtPlotMarker;
00039 class QwtPlotCanvas;
00040 class LegendWidget;
00041 class ArrowMarker;
00042
00089 class SelectionMoveResizer : public QWidget
00090 {
00091 Q_OBJECT
00092
00093 public:
00095 SelectionMoveResizer(ArrowMarker *target);
00097 SelectionMoveResizer(QWidget *target);
00099 ~SelectionMoveResizer();
00102 virtual bool eventFilter(QObject *o, QEvent *e);
00104 bool contains(QWidget *w) const { return d_widgets.contains(w); };
00106 bool contains(ArrowMarker *m) const { return d_line_markers.contains(m); };
00107
00108 public slots:
00110 void add(ArrowMarker *target);
00112 void add(QWidget *target);
00114 int removeAll(ArrowMarker *target);
00116 int removeAll(QWidget *target);
00118 void recalcBoundingRect();
00119
00120 signals:
00122 void targetsChanged();
00123
00124 protected:
00126 enum Operation { None=-2, Move, Resize_N, Resize_NE, Resize_E, Resize_SE, Resize_S, Resize_SW, Resize_W, Resize_NW };
00127
00133 virtual void paintEvent(QPaintEvent *e);
00139 virtual void mousePressEvent(QMouseEvent *e);
00145 virtual void mouseMoveEvent(QMouseEvent *e);
00150 virtual void mouseReleaseEvent(QMouseEvent *e);
00155 virtual void keyPressEvent(QKeyEvent *e);
00157 virtual void mouseDoubleClickEvent(QMouseEvent *e);
00158
00159 private:
00161 static const int handler_size = 10;
00163 static const QRect handlerRect(QRect rect, Operation op);
00165 QRect operateOn(const QRect in);
00167 void operateOnTargets();
00169 void init();
00171 QRect boundingRectOf(QwtPlotMarker *target) const;
00173 QRect boundingRectOf(QwtPlotCanvas *canvas) const;
00174
00176 QList <ArrowMarker *> d_line_markers;
00178 QList <QWidget *> d_widgets;
00180 QRect d_bounding_rect;
00182 Operation d_op;
00184 QPoint d_op_start;
00186 QPoint d_op_dp;
00187
00188 private slots:
00190 void removeWidget(QObject* w) { removeAll((QWidget*) w); }
00191 };
00192
00193 #endif // ifndef SELECTION_MOVE_RESIZER_H