RoseGraphicsView.h

Go to the documentation of this file.
00001 
00002 #ifndef ROSEGRAPHICSVIEW_H
00003 #define ROSEGRAPHICSVIEW_H
00004 
00005 
00006 #include <QGraphicsView>
00007 #include <QMimeData>
00008 
00009 class SgNode;
00010 class AstFilterInterface;
00011 
00017 class RoseGraphicsView : public QGraphicsView
00018 {
00019     Q_OBJECT
00020 
00021     Q_PROPERTY(bool SgDragEnabled  READ isSgDragEnabled WRITE setSgDragEnabled);
00022     Q_PROPERTY(bool SgDropEnabled  READ isSgDropEnabled WRITE setSgDropEnabled);
00023 
00024 
00025     public:
00026         RoseGraphicsView(QWidget * parent=0);
00027         virtual ~RoseGraphicsView();
00028 
00029         void setSgDragEnabled(bool b) { dragEnabled= b; }
00030         void setSgDropEnabled(bool b) { dropEnabled= b; }
00031 
00032         bool isSgDragEnabled() const { return dragEnabled; }
00033         bool isSgDropEnabled() const { return dropEnabled; }
00034 
00035 
00036     public slots:
00037         void setNode(SgNode * sgNode);
00038 
00039         // TODO: implement proper goto mechanism
00040         void gotoNode( SgNode *sgNode )
00041         { setNode( sgNode ); }
00042 
00043         void setFilter(AstFilterInterface * filter);
00044         void setFileFilter(int id);
00045 
00046 
00047     signals:
00048         void nodeActivated(SgNode * node);
00049         void nodeActivatedAlt(SgNode * node);
00050         void clicked(const QString & filename, int line, int column);
00051         void nodeDropped(SgNode * node, QPoint pos);
00052 
00053 
00054     protected:
00055 
00058         virtual void updateGraph(SgNode * node, AstFilterInterface * filter)= 0;
00059 
00060 
00061 
00062         // Zoom
00063         virtual void wheelEvent(QWheelEvent *event);
00064         virtual void scaleView(qreal scaleFactor);
00065         virtual void mousePressEvent(QMouseEvent *event);
00066 
00067         // Drop & Drop
00068         virtual void dragEnterEvent(QDragEnterEvent * ev);
00069         virtual void dropEvent(QDropEvent *ev);
00070         virtual void dragMoveEvent( QDragMoveEvent * ev);
00071         virtual void mouseMoveEvent(QMouseEvent *event);
00072 
00073         virtual bool acceptMimeData( const QMimeData *mimeData );
00074         virtual void handleMimeData( const QMimeData *mimeData, const QPoint& pos );
00075 
00076 
00077         //Drag and drop members
00078         QPoint dragStartPosition;  
00079         bool dragEnabled;          
00080         bool dropEnabled;          
00081 
00082 
00083     private:
00084         AstFilterInterface * curFilter;
00085         SgNode *             curNode;
00086 
00087 };
00088 
00089 
00090 
00091 #endif

Generated on Tue Sep 15 14:48:47 2009 for RoseQtWidgets by  doxygen 1.4.7