]> Creatis software - cpPlugins.git/blobdiff - lib/cpBaseQtApplication/MainWindow.h
...
[cpPlugins.git] / lib / cpBaseQtApplication / MainWindow.h
index ca06a2167bd10cc91f8c0b6579b7a6704c388cc4..b62d30f62fe388343bb95ef6018257cdc57f0073 100644 (file)
@@ -1,23 +1,57 @@
-#ifndef __CPBASEQTAPPLICATION__MAINWINDOW__H__
-#define __CPBASEQTAPPLICATION__MAINWINDOW__H__
+#ifndef __cpBaseQtApplication__MainWindow__h__
+#define __cpBaseQtApplication__MainWindow__h__
 
 #include <cpBaseQtApplication_Export.h>
 #include <QMainWindow>
-#include <cpPlugins/Interface.h>
-#include <cpPlugins/Workspace.h>
-
-namespace cpExtensions
-{
-  namespace QT
-  {
-    class SimpleMPRWidget;
+#include <QMessageBox>
+#include <cpPlugins/Interface/Plugins.h>
+#include <cpPlugins/Interface/Workspace.h>
+#include <cpBaseQtApplication/Blocker.h>
+
+// -------------------------------------------------------------------------
+#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( );                         \
   }
-}
-class QTreeWidget;
 
+// -------------------------------------------------------------------------
+namespace cpExtensions { namespace QT { class ActorsWidgetInterface; } }
+
+// -------------------------------------------------------------------------
 namespace cpBaseQtApplication
 {
-  class Editor;
+  namespace Pipeline { class Canvas; }
+  namespace Plugins  { class Navigator; }
 
   /**
    */
@@ -30,76 +64,118 @@ namespace cpBaseQtApplication
     typedef MainWindow  Self;
     typedef QMainWindow Superclass;
 
-  protected:
-    /**
-     */
-    class _TBlocker
-      : public QObject
-    {
-    protected:
-      virtual bool eventFilter( QObject* obj, QEvent* event ) ITK_OVERRIDE;
-    };
+    typedef cpPlugins::Interface::Plugins   TPlugins;
+    typedef cpPlugins::Interface::Workspace TWorkspace;
 
   public:
     explicit MainWindow(
       int argc, char* argv[],
-      QApplication* app,
       QWidget* parent = NULL
       );
     virtual ~MainWindow( );
 
-    void UpdateEnvironment( );
-
-  protected:
-    void _Configure(
-      QTreeWidget* tree,
-      cpExtensions::QT::SimpleMPRWidget* mpr,
-      cpBaseQtApplication::Editor* editor
-      );
-    void _ClearWorkspace( );
-    void _LoadPlugins( const std::string& filename );
-    void _LoadPluginsFromPath( const std::string& path );
-    void _UpdateLoadedPlugins( );
-    void _ShowPlugins( );
-    void _Block( );
-    void _UnBlock( );
-
-    void _LoadWorkspace( const std::string& filename );
-    void _SaveWorkspace( const std::string& filename );
-
-    void _BackgroundProperties( unsigned int i );
+    /* TODO
+       void updateEnvironment( );
+       void updateFilter( const std::string& name );
+       void showData( const std::string& name, const std::string& port );
+       void showData(
+       cpPlugins::BaseObjects::DataObject* data, const std::string& name
+       );
+       void hideData( const std::string& name, const std::string& port );
+       void hideData( const std::string& name );
+       void dataProperties( const std::string& name, const std::string& port );
+       void dataProperties( const std::string& name );
+    */
+
+    TWorkspace* workspace( const std::string& wname );
+    const TWorkspace* workspace( const std::string& wname ) 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 );
+
+    /* TODO
+       protected:
+       void _configure( PluginsNavigator* nav, TMPR* mpr, Editor* edt );
+       void _updatePlugins( );
+    */
 
   protected slots:
-    void _InteractiveLoadPlugins( );
-    void _InteractiveLoadPluginsFromPath( );
-    void _InteractiveLoadWorkspace( );
-    void _InteractiveSaveWorkspace( );
-    void _ExecFilter( const std::string& filter_name );
-    void _ShowData(
-      const std::string& filter_name, const std::string& output_name
-      );
-    void _HideData(
-      const std::string& filter_name, const std::string& output_name
-      );
-    void _DataProperties(
-      const std::string& filter_name, const std::string& output_name
-      );
+    void _loadPlugins( const std::string& filename );
+    void _loadPlugins( );
+    void _loadPluginsFromPath( const std::string& path );
+    void _loadPluginsFromPath( );
+
+    void _clearWorkspaces( );
+
+    virtual void _addWorkspace( const std::string& name );
+    void _addWorkspace( );
+
+    void _saveWorkspace( const std::string& wname, const std::string& fname );
+    void _saveWorkspace( const std::string& wname, bool force );
+    void _saveWorkspace( );
+
+    void _loadWorkspace( const std::string& fname );
+    void _loadWorkspace( );
+
+    /* TODO
+       void _loadWorkspace( const std::string& filename );
+       void _loadWorkspace( );
+       void _saveWorkspace( const std::string& filename );
+       void _saveWorkspace( );
+       void _showPlugins( );
+       void _addEnvironmentPaths( const std::string& envs );
+       void _addEnvironmentPaths( );
+       void _actorsProperties( );
+    */
+
+    /* TODO
+       void _ClearWorkspace( );
+       void _LoadPlugins( const std::string& filename );
+       void _LoadPluginsFromPath( const std::string& path );
+
+       void _LoadWorkspace( const std::string& filename );
+       void _SaveWorkspace( const std::string& filename );
+
+       void _BackgroundProperties( unsigned int i );
+       void _DataProperties( const std::string& actor );
+
+       void _AddEnviromentPaths( );
+       void _LoadPlugins( );
+       void _LoadPluginsFromPath( );
+       void _ShowPlugins( );
+       void _LoadWorkspace( );
+       void _SaveWorkspace( );
+       void _DataProperties(
+       const std::string& filter_name, const std::string& output_name
+       );
+    */
 
   protected:
-    QApplication* m_Application;
-    _TBlocker     m_Blocker;
-    std::string   m_PluginsPath;
-
-    cpPlugins::Interface m_Interface;
-    cpPlugins::Workspace m_Workspace;
-
-    QTreeWidget* m_TreeWidget;
-    Editor*      m_Editor;
-    cpExtensions::QT::SimpleMPRWidget* m_MPR;
+    Blocker           m_Blocker;
+    std::string       m_RunPath;
+    TPlugins::Pointer m_Plugins;
+    std::string       m_LastSaveFileName;
+    std::map< std::string, TWorkspace::Pointer > m_Workspaces;
+
+    bool        m_SingleWorkspace;
+    std::string m_BaseWindowTitle;
+
+    Pipeline::Canvas*                        m_Canvas;
+    Plugins::Navigator*                      m_Navigator;
+    cpExtensions::QT::ActorsWidgetInterface* m_Viewer;
   };
 
 } // ecapseman
 
-#endif // __CPBASEQTAPPLICATION__MAINWINDOW__H__
+#endif // __cpBaseQtApplication__MainWindow__h__
 
 // eof - $RCSfile$