#ifndef __CPBASEQTAPPLICATION__EDITOR__H__ #define __CPBASEQTAPPLICATION__EDITOR__H__ #include #include #include #include #include class QGraphicsScene; class QGraphicsSceneMouseEvent; class QGraphicsItem; class QGraphicsSceneContextMenuEvent; class QGraphicsSceneDragDropEvent; class QGraphicsSceneHelpEvent; class QGraphicsSceneHoverEvent; class QGraphicsSceneMouseEvent; class QGraphicsSceneMoveEvent; class QGraphicsSceneResizeEvent; class QGraphicsSceneWheelEvent; // ------------------------------------------------------------------------- #define cpBaseQtApplication_Editor_Callback_DCL( E ) \ void _##E##_cbk( QGraphicsScene##E##Event* e ); namespace cpBaseQtApplication { class Connection; class Block; /** */ class cpBaseQtApplication_EXPORT Editor : public QObject { Q_OBJECT; public: typedef Editor Self; typedef QObject Superclass; typedef cpPlugins::Workspace TWorkspace; typedef cpPlugins::ProcessObject TFilter; typedef cpExtensions::DataStructures:: Graph< Block*, Connection*, std::string > TGraph; public: explicit Editor( QObject* parent = 0 ); virtual ~Editor( ); TWorkspace* workspace( ); const TWorkspace* workspace( ) const; void setWorkspace( TWorkspace* ws ); std::string createFilter( const std::string& category, const std::string& filter, const QPointF& pnt = QPointF( qreal( 0 ), qreal( 0 ) ) ); bool deleteFilter( const std::string& name ); bool deleteConnection( const std::string& src, const std::string& des, const std::string& in, const std::string& out ); void clear( ); void install( QGraphicsScene* s ); bool eventFilter( QObject* o, QEvent* e ); void updateFilter( const std::string& filter_name ); void showOutputData( const std::string& filter_name, const std::string& output_name ); void hideOutputData( const std::string& filter_name, const std::string& output_name ); void visualPropertiesOutputData( const std::string& filter_name, const std::string& output_name ); signals: void execFilter( const std::string& filter_name ); void showFilterOutput( const std::string& filter_name, const std::string& output_name ); void hideFilterOutput( const std::string& filter_name, const std::string& output_name ); void visualPropertiesFilterOutput( const std::string& filter_name, const std::string& output_name ); private: QGraphicsItem* itemAt( const QPointF& pos ); inline Block* _createBlock( TFilter* f, const QString& name, const QPointF& pnt ); protected: typedef QGraphicsSceneDragDropEvent QGraphicsSceneDragEnterEvent; typedef QGraphicsSceneDragDropEvent QGraphicsSceneDragLeaveEvent; typedef QGraphicsSceneDragDropEvent QGraphicsSceneDragMoveEvent; typedef QGraphicsSceneDragDropEvent QGraphicsSceneDropEvent; typedef QGraphicsSceneHoverEvent QGraphicsSceneHoverEnterEvent; typedef QGraphicsSceneHoverEvent QGraphicsSceneHoverMoveEvent; typedef QGraphicsSceneHoverEvent QGraphicsSceneHoverLeaveEvent; typedef QGraphicsSceneMouseEvent QGraphicsSceneMouseDoubleClickEvent; typedef QGraphicsSceneMouseEvent QGraphicsSceneMouseMoveEvent; typedef QGraphicsSceneMouseEvent QGraphicsSceneMousePressEvent; typedef QGraphicsSceneMouseEvent QGraphicsSceneMouseReleaseEvent; cpBaseQtApplication_Editor_Callback_DCL( ContextMenu ); cpBaseQtApplication_Editor_Callback_DCL( DragEnter ); cpBaseQtApplication_Editor_Callback_DCL( DragLeave ); cpBaseQtApplication_Editor_Callback_DCL( DragMove ); cpBaseQtApplication_Editor_Callback_DCL( Drop ); cpBaseQtApplication_Editor_Callback_DCL( Help ); cpBaseQtApplication_Editor_Callback_DCL( HoverEnter ); cpBaseQtApplication_Editor_Callback_DCL( HoverLeave ); cpBaseQtApplication_Editor_Callback_DCL( HoverMove ); cpBaseQtApplication_Editor_Callback_DCL( MouseDoubleClick ); cpBaseQtApplication_Editor_Callback_DCL( MouseMove ); cpBaseQtApplication_Editor_Callback_DCL( MousePress ); cpBaseQtApplication_Editor_Callback_DCL( MouseRelease ); cpBaseQtApplication_Editor_Callback_DCL( Move ); cpBaseQtApplication_Editor_Callback_DCL( Resize ); cpBaseQtApplication_Editor_Callback_DCL( Wheel ); private: QGraphicsScene* m_Scene; Connection* m_ActualConnection; TWorkspace* m_Workspace; TGraph::Pointer m_Graph; }; } // ecapseman #endif // __CPBASEQTAPPLICATION__EDITOR__H__ // eof - $RCSfile$