SelectionMoveResizer.h

Go to the documentation of this file.
00001 /***************************************************************************
00002     File                 : SelectionMoveResizer.h
00003     Project              : QtiPlot
00004     --------------------------------------------------------------------
00005     Copyright            : (C) 2007 by Knut Franke, 2008 by Ion Vasilief
00006     Email (use @ for *)  : knut.franke*gmx.de, ion_vasilief*yahoo.fr
00007     Description          : Selection of Widgets and QwtPlotMarkers
00008 
00009  ***************************************************************************/
00010 
00011 /***************************************************************************
00012  *                                                                         *
00013  *  This program is free software; you can redistribute it and/or modify   *
00014  *  it under the terms of the GNU General Public License as published by   *
00015  *  the Free Software Foundation; either version 2 of the License, or      *
00016  *  (at your option) any later version.                                    *
00017  *                                                                         *
00018  *  This program is distributed in the hope that it will be useful,        *
00019  *  but WITHOUT ANY WARRANTY; without even the implied warranty of         *
00020  *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the          *
00021  *  GNU General Public License for more details.                           *
00022  *                                                                         *
00023  *   You should have received a copy of the GNU General Public License     *
00024  *   along with this program; if not, write to the Free Software           *
00025  *   Foundation, Inc., 51 Franklin Street, Fifth Floor,                    *
00026  *   Boston, MA  02110-1301  USA                                           *
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

Generated on Fri Nov 7 03:36:52 2008 for QtiPlot by  doxygen 1.5.6