MNE-CPP  beta 1.0
mainwindow.h
1 //=============================================================================================================
36 #ifndef MAINWINDOW_H
37 #define MAINWINDOW_H
38 
39 
40 //*************************************************************************************************************
41 //=============================================================================================================
42 // INCLUDES
43 //=============================================================================================================
44 
45 #include "info.h"
46 
47 
48 //*************************************************************************************************************
49 //=============================================================================================================
50 // QT INCLUDES
51 //=============================================================================================================
52 
53 #include <QMainWindow>
54 #include <QMap>
55 #include <QVector>
56 #include <QString>
57 #include <QVBoxLayout>
58 #include <QContextMenuEvent>
59 #include <QSharedPointer>
60 #include <QShortcut>
61 
62 
63 //*************************************************************************************************************
64 //=============================================================================================================
65 // FORWARD DECLARATIONS
66 //=============================================================================================================
67 
68 class QAction;
69 class QActionGroup;//switch between log levels
70 class QMenu;
71 class QToolBar;
72 class QLabel;
73 class QTimer;
74 class QTime;
75 class QDockWidget;
76 class QTextBrowser;
77 
78 
79 //*************************************************************************************************************
80 //=============================================================================================================
81 // DEFINE NAMESPACE MNEX
82 //=============================================================================================================
83 
84 namespace MNEX
85 {
86 
87 //*************************************************************************************************************
88 //=============================================================================================================
89 // USED NAMESPACES
90 //=============================================================================================================
91 
92 
93 //*************************************************************************************************************
94 //=============================================================================================================
95 // FORWARD DECLARATIONS
96 //=============================================================================================================
97 
98 class StartUpWidget;
99 
100 class PluginGui;
101 class PluginManager;
102 class PluginSceneManager;
103 class DisplayManager;
104 
105 class IPlugin;
106 
107 class PluginConnectorConnection;
108 
109 class RunWidget;
110 class PluginDockWidget;
111 
112 
113 //=============================================================================================================
119 class MainWindow : public QMainWindow
120 {
121  Q_OBJECT
122 public:
123  typedef QSharedPointer<MainWindow> SPtr;
124  typedef QSharedPointer<const MainWindow> ConstSPtr;
126  //=========================================================================================================
132  MainWindow(QWidget *parent = 0);
133 
134  //=========================================================================================================
139  virtual ~MainWindow();
140 
141  //=========================================================================================================
145  void clear();
146 
147  //=========================================================================================================
153  void closeEvent(QCloseEvent *event);
154 
155  //=========================================================================================================
161  void startTimer(int msec);
162 
163  //=========================================================================================================
167  void stopTimer();
168 
169  //=========================================================================================================
177  void writeToLog(const QString& logMsg, LogKind lgknd = _LogKndMessage, LogLevel lglvl = _LogLvNormal);
178 
179 private:
180  //StartUp
181  StartUpWidget* m_pStartUpWidget;
183  //Run
184  RunWidget* m_pRunWidget;
185  QShortcut* m_pRunWidgetClose;
186  QSharedPointer<DisplayManager> m_pDisplayManager;
188  bool m_bDisplayMax;
189  bool m_bIsRunning;
191  //=========================================================================================================
197  void uiSetupRunningState(bool state);
198 
203  void createActions();
204  void createMenus();
205  void createToolBars();
207  void initStatusBar();
209  QAction* m_pActionNewConfig;
210  QAction* m_pActionOpenConfig;
211  QAction* m_pActionSaveConfig;
212  QAction* m_pActionExit;
214  QActionGroup* m_pActionGroupLgLv;
215  QAction* m_pActionMinLgLv;
216  QAction* m_pActionNormLgLv;
217  QAction* m_pActionMaxLgLv;
219  QAction* m_pActionHelpContents;
220  QAction* m_pActionAbout;
222  QAction* m_pActionRun;
223  QAction* m_pActionStop;
224  QAction* m_pActionZoomStd;
225  QAction* m_pActionZoomIn;
226  QAction* m_pActionZoomOut;
227  QAction* m_pActionDisplayMax;
229  QList< QAction* > m_qListDynamicPluginActions;
230  QList< QAction* > m_qListDynamicDisplayActions;
231  QList< QWidget* > m_qListDynamicDisplayWidgets;
233  //Main Window Menu
234  QMenu* m_pMenuFile;
235  QMenu* m_pMenuView;
236  QMenu* m_pMenuLgLv;
237  QMenu* m_pMenuHelp;
239  // Tool bar
240  QToolBar* m_pToolBar;
241  QToolBar* m_pDynamicPluginToolBar;
242  QToolBar* m_pDynamicDisplayToolBar;
243  QString m_sCurPluginName;
245  QLabel* m_pLabelTime;
246  QSharedPointer<QTimer> m_pTimer;
247  QSharedPointer<QTime> m_pTime;
248  int m_iTimeoutMSec;
250  void createPluginDockWindow();
251  void createLogDockWindow();
253  //Plugin Management
254  QDockWidget* m_pPluginGuiDockWidget;
255  PluginGui* m_pPluginGui;
256  QSharedPointer<PluginManager> m_pPluginManager;
257  QSharedPointer<PluginSceneManager> m_pPluginSceneManager;
259  //Log
260  QDockWidget* m_pDockWidget_Log;
261  QTextBrowser* m_pTextBrowser_Log;
263  LogLevel m_eLogLevelCurrent;
266  void updatePluginWidget(QSharedPointer<IPlugin> pPlugin);
268  void updateConnectionWidget(QSharedPointer<PluginConnectorConnection> pConnection);
271 private:
272  void newConfiguration();
273  void openConfiguration();
274  void saveConfiguration();
276  void helpContents();
278  void about();
280  void setMinLogLevel();
281  void setNormalLogLevel();
282  void setMaxLogLevel();
284  void startMeasurement();
285  void stopMeasurement();
287  void zoomStd();
288  void zoomIn();
289  void zoomOut();
290  void toggleDisplayMax();
292  void updateTime();
294 };
295 
296 }// NAMESPACE
297 
298 #endif // MAINWINDOW_H
virtual ~MainWindow()
Definition: mainwindow.cpp:138
The RunWidget class provides the central widget for the run mode.
Definition: runwidget.h:78
void startTimer(int msec)
Definition: mainwindow.cpp:761
Definition: arrow.h:75
void writeToLog(const QString &logMsg, LogKind lgknd=_LogKndMessage, LogLevel lglvl=_LogLvNormal)
Definition: mainwindow.cpp:587
MainWindow(QWidget *parent=0)
Definition: mainwindow.cpp:90
void closeEvent(QCloseEvent *event)
Definition: mainwindow.cpp:170
The MainWindow class provides the main application user interface.
Definition: mainwindow.h:119
QSharedPointer< MainWindow > SPtr
Definition: mainwindow.h:123
The StartUpWidget class provides the widget which is shown at start up in the central widget of the m...
Definition: startupwidget.h:78
QSharedPointer< const MainWindow > ConstSPtr
Definition: mainwindow.h:124