#ifndef __cpBaseQtApplication__MainWindow__h__ #define __cpBaseQtApplication__MainWindow__h__ #include #include #include #include #include #include // ------------------------------------------------------------------------- #define cpBaseQtApplication_ConnectAction( _act_, _slt_ ) \ this->connect( \ this->m_UI->_act_, SIGNAL( triggered( ) ), this, SLOT( _slt_( ) ) \ ) // ------------------------------------------------------------------------- #define cpBaseQtApplication_Execute( _cmd_ ) \ { \ this->m_Blocker.block( ); \ try \ { \ _cmd_; \ this->m_Blocker.unblock( ); \ } \ catch( std::exception& err ) \ { \ this->m_Blocker.unblock( ); \ QMessageBox::critical( \ this, \ QMessageBox::tr( "Error executing filter" ), \ QMessageBox::tr( err.what( ) ) \ ); \ } \ catch( ... ) \ { \ this->m_Blocker.unblock( ); \ QMessageBox::critical( \ this, \ QMessageBox::tr( "Error executing filter" ), \ QMessageBox::tr( "Unknown error" ) \ ); \ } \ this->m_Blocker.unblock( ); \ } // ------------------------------------------------------------------------- namespace cpExtensions { namespace QT { class ActorsWidgetInterface; } } // ------------------------------------------------------------------------- namespace cpBaseQtApplication { namespace Pipeline { class Canvas; } namespace Plugins { class Navigator; } /** */ class cpBaseQtApplication_EXPORT MainWindow : public QMainWindow { Q_OBJECT; public: typedef MainWindow Self; typedef QMainWindow Superclass; typedef cpPlugins::Interface::Loader TLoader; typedef cpPlugins::Interface::Workspace TWorkspace; public: explicit MainWindow( int argc, char* argv[], QWidget* parent = NULL ); virtual ~MainWindow( ); TWorkspace* workspace( ); const TWorkspace* workspace( ) const; Pipeline::Canvas* canvas( ); const Pipeline::Canvas* canvas( ) const; void setCanvas( Pipeline::Canvas* c ); Plugins::Navigator* navigator( ); const Plugins::Navigator* navigator( ) const; void setNavigator( Plugins::Navigator* n ); cpExtensions::QT::ActorsWidgetInterface* viewer( ); const cpExtensions::QT::ActorsWidgetInterface* viewer( ) const; void setViewer( cpExtensions::QT::ActorsWidgetInterface* v ); protected: template< class _TViewer > _TViewer* _configureViewer( QWidget* w ) { _TViewer* v = dynamic_cast< _TViewer* >( w ); if( v == NULL ) v = new _TViewer( ); return( v ); } protected slots: void _loadPlugins( const std::string& filename ); void _loadPlugins( ); void _loadPluginsFromPath( const std::string& path ); void _loadPluginsFromPath( ); void _clearWorkspace( ); void _saveWorkspace( const std::string& fname ); void _saveWorkspace( ); void _loadWorkspace( const std::string& fname ); void _loadWorkspace( ); void _actorsProperties( ); protected: Blocker m_Blocker; std::string m_RunPath; TLoader m_Loader; std::string m_LastSaveFileName; TWorkspace::Pointer m_Workspace; std::string m_BaseWindowTitle; Pipeline::Canvas* m_Canvas; Plugins::Navigator* m_Navigator; cpExtensions::QT::ActorsWidgetInterface* m_Viewer; }; } // ecapseman #endif // __cpBaseQtApplication__MainWindow__h__ // eof - $RCSfile$