#include "Canvas.h" #include "Editor.h" #include "Block.h" #include "Connection.h" #include "Port.h" #include #include #include // ------------------------------------------------------------------------- cpPipelineEditor::Canvas:: Canvas( QWidget* parent ) : QGraphicsView( parent ) { QGraphicsScene* scene = new QGraphicsScene( this ); this->setScene( scene ); this->setRenderHint( QPainter::Antialiasing ); this->setAcceptDrops( true ); this->m_Editor = new Editor( this ); this->m_Editor->install( scene ); } // ------------------------------------------------------------------------- cpPipelineEditor::Canvas:: ~Canvas( ) { } // ------------------------------------------------------------------------- cpPipelineEditor:: Editor* cpPipelineEditor::Canvas:: editor( ) { return( this->m_Editor ); } // ------------------------------------------------------------------------- const cpPipelineEditor:: Editor* cpPipelineEditor::Canvas:: editor( ) const { return( this->m_Editor ); } // ------------------------------------------------------------------------- void cpPipelineEditor::Canvas:: wheelEvent( QWheelEvent* event ) { this->_scaleView( std::pow( double( 2 ), event->delta( ) / double( 240 ) ) ); } // ------------------------------------------------------------------------- void cpPipelineEditor::Canvas:: dragEnterEvent( QDragEnterEvent* event ) { const QMimeData* mime = event->mimeData( ); if( mime->hasFormat( "application/x-qabstractitemmodeldatalist" ) ) event->acceptProposedAction( ); } // ------------------------------------------------------------------------- void cpPipelineEditor::Canvas:: dragLeaveEvent( QDragLeaveEvent* event ) { } // ------------------------------------------------------------------------- void cpPipelineEditor::Canvas:: dragMoveEvent( QDragMoveEvent* event ) { } // ------------------------------------------------------------------------- void cpPipelineEditor::Canvas:: dropEvent( QDropEvent* event ) { const QMimeData* mime = event->mimeData( ); if( !( mime->hasFormat( "application/x-qabstractitemmodeldatalist" ) ) ) return; event->acceptProposedAction( ); auto tree = dynamic_cast< QTreeWidget* >( event->source( ) ); if( tree == NULL ) return; QList< QTreeWidgetItem* > items = tree->selectedItems( ); for( auto iIt = items.begin( ); iIt != items.end( ); ++iIt ) this->m_Editor->createFilter( ( *iIt )->text( 0 ).toStdString( ), this->mapToScene( event->pos( ) ) ); } // ------------------------------------------------------------------------- void cpPipelineEditor::Canvas:: _scaleView( qreal scaleFactor ) { qreal factor = this->transform( ). scale( scaleFactor, scaleFactor ). mapRect( QRectF( 0, 0, 1, 1 ) ). width( ); if( factor < qreal( 0.07 ) || factor > qreal( 100 ) ) return; this->scale( scaleFactor, scaleFactor ); } // eof - $RCSfile$