00001 /****************************************************************************************************** 00002 * (C) 2014 markummitchell@github.com. This file is part of Engauge Digitizer, which is released * 00003 * under GNU General Public License version 2 (GPLv2) or (at your option) any later version. See file * 00004 * LICENSE or go to gnu.org/licenses for details. Distribution requires prior written permission. * 00005 ******************************************************************************************************/ 00006 00007 #ifndef GRAPHICSVIEW_H 00008 #define GRAPHICSVIEW_H 00009 00010 #include <QGraphicsView> 00011 #include <QImage> 00012 #include <QUrl> 00013 00014 class MainWindow; 00015 class QByteArray; 00016 class QGraphicsPixmapItem; 00017 class QGraphicsScene; 00018 00020 class GraphicsView : public QGraphicsView 00021 { 00022 Q_OBJECT; 00023 00024 public: 00026 GraphicsView(QGraphicsScene *scene, 00027 MainWindow &mainWindow); 00028 virtual ~GraphicsView(); 00029 00031 virtual void contextMenuEvent (QContextMenuEvent *event); 00032 00034 virtual void dragEnterEvent (QDragEnterEvent *event); 00035 00037 virtual void dragMoveEvent (QDragMoveEvent *event); 00038 00040 virtual void dropEvent (QDropEvent *event); 00041 00043 virtual void keyPressEvent (QKeyEvent *event); 00044 00046 virtual void mouseMoveEvent (QMouseEvent *event); 00047 00049 virtual void mousePressEvent (QMouseEvent *event); 00050 00052 virtual void mouseReleaseEvent (QMouseEvent *event); 00053 00055 virtual void wheelEvent(QWheelEvent *event); 00056 00057 signals: 00059 void signalContextMenuEventAxis (QString pointIdentifier); 00060 00062 void signalContextMenuEventGraph (QStringList pointIdentifiers); 00063 00065 void signalDraggedDigFile (QString); 00066 00068 void signalDraggedImage (QImage); 00069 00071 void signalDraggedImageUrl (QUrl); 00072 00074 void signalKeyPress (Qt::Key, bool atLeastOneSelectedItem); 00075 00077 void signalMouseMove (QPointF); 00078 00080 void signalMousePress (QPointF); 00081 00083 void signalMouseRelease (QPointF); 00084 00086 void signalViewZoomIn(); 00087 00089 void signalViewZoomOut(); 00090 00091 private: 00092 GraphicsView(); 00093 00094 QStringList pointIdentifiersFromSelection (const QList<QGraphicsItem*> &items) const; 00095 bool inBounds (const QPointF &posScreen); 00096 00097 }; 00098 00099 #endif // GRAPHICSVIEW_H