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 LegendWidget;
00040 class ArrowMarker;
00041
00088 class SelectionMoveResizer : public QWidget
00089 {
00090 Q_OBJECT
00091
00092 public:
00094 SelectionMoveResizer(ArrowMarker *target);
00096 SelectionMoveResizer(QWidget *target);
00098 ~SelectionMoveResizer();
00101 virtual bool eventFilter(QObject *o, QEvent *e);
00103 bool contains(QWidget *w) const { return d_widgets.contains(w); };
00105 bool contains(ArrowMarker *m) const { return d_line_markers.contains(m); };
00106
00107 public slots:
00109 void add(ArrowMarker *target);
00111 void add(QWidget *target);
00113 int removeAll(ArrowMarker *target);
00115 int removeAll(QWidget *target);
00117 void recalcBoundingRect();
00118
00119 signals:
00121 void targetsChanged();
00122
00123 protected:
00125 enum Operation { None=-2, Move, Resize_N, Resize_NE, Resize_E, Resize_SE, Resize_S, Resize_SW, Resize_W, Resize_NW };
00126
00132 virtual void paintEvent(QPaintEvent *e);
00138 virtual void mousePressEvent(QMouseEvent *e);
00144 virtual void mouseMoveEvent(QMouseEvent *e);
00149 virtual void mouseReleaseEvent(QMouseEvent *e);
00154 virtual void keyPressEvent(QKeyEvent *e);
00156 virtual void mouseDoubleClickEvent(QMouseEvent *e);
00157
00158 private:
00160 static const int handler_size = 10;
00162 static const QRect handlerRect(QRect rect, Operation op);
00164 QRect operateOn(const QRect in);
00166 void operateOnTargets();
00168 void init();
00170 QRect boundingRectOf(QwtPlotMarker *target) const;
00171
00173 QList <ArrowMarker *> d_line_markers;
00175 QList <QWidget *> d_widgets;
00177 QRect d_bounding_rect;
00179 Operation d_op;
00181 QPoint d_op_start;
00183 QPoint d_op_dp;
00184
00185 private slots:
00187 void removeWidget(QObject* w) { removeAll((QWidget*) w); }
00188 };
00189
00190 #endif // ifndef SELECTION_MOVE_RESIZER_H