ARGoS  3
A parallel, multi-engine simulator for swarm robotics
plugins/simulator/visualizations/qt-opengl/qtopengl_main_window.h
Go to the documentation of this file.
00001 
00007 #ifndef QTOPENGL_MAIN_WINDOW_H
00008 #define QTOPENGL_MAIN_WINDOW_H
00009 
00010 namespace argos {
00011    class CQTOpenGLMainWindow;
00012    class CQTOpenGLWidget;
00013    class CQTOpenGLLogStream;
00014    class CQTOpenGLUserFunctions;
00015 }
00016 
00017 class QMainWindow;
00018 class QWidget;
00019 class QHBoxLayout;
00020 class QPushButton;
00021 class QLCDNumber;
00022 class QStatusBar;
00023 class QDockWidget;
00024 class QTextEdit;
00025 class QButtonGroup;
00026 class QSpinBox;
00027 class QDoubleSpinBox;
00028 class QActionGroup;
00029 
00030 #include <argos3/core/utility/configuration/argos_configuration.h>
00031 #include <argos3/core/simulator/visualization/visualization.h>
00032 #include <QMainWindow>
00033 
00034 namespace argos {
00035 
00036    class CQTOpenGLMainWindow : public QMainWindow {
00037 
00038       Q_OBJECT
00039 
00040    public:
00041 
00042       CQTOpenGLMainWindow(TConfigurationNode& t_tree);
00043       virtual ~CQTOpenGLMainWindow();
00044 
00045       inline CQTOpenGLWidget& GetOpenGLWidget() {
00046          return *m_pcOpenGLWidget;
00047       }
00048 
00049       inline const QString& GetIconDir() const {
00050          return m_strIconDir;
00051       }
00052 
00053       inline const QString& GetTextureDir() const {
00054          return m_strTextureDir;
00055       }
00056 
00057    private:
00058 
00059       void ReadSettingsPreCreation();
00060       void ReadSettingsPostCreation();
00061       void WriteSettings();
00062 
00063       void CreateSimulationActions();
00064       void CreateCameraActions();
00065       void CreatePOVRayActions();
00066       void CreateHelpActions();
00067 
00068       void CreateSimulationToolBar();
00069       void CreateSimulationMenu();
00070       void CreateCameraToolBar();
00071       void CreateCameraMenu();
00072       void CreatePOVRayMenu();
00073       void CreateHelpMenu();
00074 
00075       void CreateOpenGLWidget(TConfigurationNode& t_tree);
00076 
00077       void CreateLogMessageDock();
00078 
00079       void CreateConnections();
00080 
00081       CQTOpenGLUserFunctions* CreateUserFunctions(TConfigurationNode& t_tree);
00082 
00083       virtual void closeEvent(QCloseEvent* pc_event);
00084 
00085    signals:
00086 
00087       void CameraSwitched(int);
00088       void SimulationReset();
00089 
00090    public slots:
00091 
00092       void StopSimulation();
00093       void SimulationCanProceed(bool);
00094       void SimulationDone();
00095       void ResetSimulation();
00096       void CameraXMLPopUp();
00097       QString GetCameraXMLData();
00098       // void POVRaySceneXMLPopUp();
00099       // QString GetPOVRaySceneXMLData();
00100       // void POVRayScenePreview();
00101       void SwitchCamera(QAction*);
00102 
00103    private:
00104 
00105       CQTOpenGLWidget* m_pcOpenGLWidget;
00106       QString m_strIconDir;
00107       QString m_strTextureDir;
00108 
00109       QAction* m_pcPlayAction;
00110       QAction* m_pcStepAction;
00111       QAction* m_pcFastForwardAction;
00112       QAction* m_pcResetAction;
00113       QAction* m_pcCaptureAction;
00114       QAction* m_pcQuitAction;
00115       QSpinBox* m_pcDrawFrameEvery;
00116       QLCDNumber* m_pcCurrentStepLCD;
00117       QToolBar* m_pcSimulationToolBar;
00118       QMenu* m_pcSimulationMenu;
00119 
00120       QAction* m_pcToggleAntiAliasingAction;
00121       QAction* m_pcShowCameraXMLAction;
00122       QList<QAction*> m_pcSwitchCameraActions;
00123       QActionGroup* m_pcSwitchCameraActionGroup;
00124       QDoubleSpinBox* m_pcFocalLength;
00125       QToolBar* m_pcCameraToolBar;
00126       QMenu* m_pcCameraMenu;
00127 
00128       QAction* m_pcPOVRayXMLAction;
00129       QAction* m_pcPOVRayPreviewAction;
00130       QMenu* m_pcPOVRayMenu;
00131 
00132       QAction* m_pcAboutQTAction;
00133       QMenu* m_pcHelpMenu;
00134 
00135       QStatusBar* m_pcStatusbar;
00136 
00137       QDockWidget* m_pcLogDock;
00138       QDockWidget* m_pcLogErrDock;
00139       QTextEdit* m_pcDockLogBuffer;
00140       QTextEdit* m_pcDockLogErrBuffer;
00141       CQTOpenGLLogStream* m_pcLogStream;
00142       CQTOpenGLLogStream* m_pcLogErrStream;
00143 
00144       bool m_bWasLogColored;
00145 
00146       CQTOpenGLUserFunctions* m_pcUserFunctions;
00147    };
00148 
00149 }
00150 
00151 #endif