#ifndef __cpBaseQtApplication__Pipeline__Canvas__h__ #define __cpBaseQtApplication__Pipeline__Canvas__h__ #include #include #include class QGraphicsScene; namespace cpBaseQtApplication { namespace Pipeline { // Some other forward declarations class EventFilter; class Block; class Connection; /** */ class cpBaseQtApplication_EXPORT Canvas : public QGraphicsView { Q_OBJECT; public: typedef Canvas Self; typedef QGraphicsView Superclass; typedef cpPlugins::Interface::Workspace TWorkspace; public: Canvas( QWidget* parent = 0 ); virtual ~Canvas( ); void clear( ); TWorkspace* workspace( ); const TWorkspace* workspace( ) const; void setWorkspace( TWorkspace* ws ); std::string addFilter( const std::string& cat, const std::string& fil, const QPointF& pos = QPointF( 0, 0 ) ); bool connectOutputPortSlot( QObject* receiver, const char* slot ); void rename( QGraphicsItem* item ); void exposePort( QGraphicsItem* item ); void moveConnection( const QPointF& pnt ); void grab( const QPointF& pnt ); void release( const QPointF& pnt ); protected: void keyPressEvent( QKeyEvent* event ); void wheelEvent( QWheelEvent* event ); void dragEnterEvent( QDragEnterEvent* event ); void dragLeaveEvent( QDragLeaveEvent* event ); void dragMoveEvent( QDragMoveEvent* event ); void dropEvent( QDropEvent* event ); void _scaleView( qreal scaleFactor ); void _redrawWorkspace( ); protected: QGraphicsScene* m_Scene; EventFilter* m_EventFilter; TWorkspace* m_Workspace; std::map< std::string, Block* > m_Blocks; Connection* m_ActualConnection; QObject* m_OutputPortReceiver; std::string m_OutputPortSlot; }; } // ecapseman } // ecapseman #endif // __cpBaseQtApplication__Pipeline__Canvas__h__ // eof - $RCSfile$