BornAgain  1.19.0
Simulate and fit neutron and x-ray scattering at grazing incidence
mainwindow.h
Go to the documentation of this file.
1 // ************************************************************************************************
2 //
3 // BornAgain: simulate and fit reflection and scattering
4 //
5 //! @file GUI/coregui/mainwindow/mainwindow.h
6 //! @brief Defines class MainWindow
7 //!
8 //! @homepage http://www.bornagainproject.org
9 //! @license GNU General Public License v3 or higher (see COPYING)
10 //! @copyright Forschungszentrum Jülich GmbH 2018
11 //! @authors Scientific Computing Group at MLZ (see CITATION, AUTHORS)
12 //
13 // ************************************************************************************************
14 
15 #ifndef BORNAGAIN_GUI_COREGUI_MAINWINDOW_MAINWINDOW_H
16 #define BORNAGAIN_GUI_COREGUI_MAINWINDOW_MAINWINDOW_H
17 
18 #include <QMainWindow>
19 
20 class WelcomeView;
21 class InstrumentView;
22 class SampleView;
23 class ImportDataView;
24 class SimulationView;
25 class JobView;
26 class SessionModelView;
27 
28 class MaterialModel;
29 class SampleModel;
30 class InstrumentModel;
31 class RealDataModel;
32 class JobModel;
33 class ApplicationModels;
34 class ProjectManager;
35 class ActionManager;
36 class ToolTipDataBase;
37 class UpdateNotifier;
38 
39 class QProgressBar;
40 class QButtonGroup;
41 class QStackedLayout;
42 class QStatusBar;
43 class QToolButton;
44 class QVBoxLayout;
46 
47 class MainWindow : public QMainWindow {
48  Q_OBJECT
49 
50 public:
52 
53  explicit MainWindow();
54  ~MainWindow();
55 
56  //! Returns the one and only instance of this class
57  static MainWindow* instance();
58 
63  JobModel* jobModel();
66 
67  QProgressBar* progressBar();
68  QStatusBar* statusBar();
69 
72 
73  QWidget* currentView() const;
74  void setCurrentView(int viewId);
75 
76 public slots:
77  void onFocusRequest(int index);
78  void openRecentProject();
80  void onSessionModelViewActive(bool isActive);
81 
82 signals:
83  void currentViewChanged(ViewId newView);
84 
85 protected:
86  void closeEvent(QCloseEvent* event);
87 
88 private:
89  void initApplication();
90  void initProgressBar();
91  void initViews();
92 
93  void readSettings();
94  void writeSettings();
95  void initConnections();
96  void addView(ViewId id, const QIcon& icon, const QString& title, const QString& tooltip,
97  QWidget* view);
98  QToolButton* createViewSelectionButton() const;
99 
100  //! Recalculate the size of the view selection buttons to show complete button text
102 
103  QProgressBar* m_progressBar;
104  QButtonGroup* m_viewSelectionButtons;
105  QStackedLayout* m_viewsStack;
107  QStatusBar* m_statusBar;
108 
115 
123 
124  //! Holds the one and only instance of this class
126 };
127 
128 #endif // BORNAGAIN_GUI_COREGUI_MAINWINDOW_MAINWINDOW_H
Class to handle MainWindow's menu and corresponding actions.
Definition: actionmanager.h:28
The ImportDataView class is a main view for importing experimental data.
The JobView class is a main view to show list of jobs, job results and widgets for real time and fitt...
Definition: JobView.h:35
The LinkInstrumentManager class provides communication between InstrumentModel and RealDataModel.
void readSettings()
Definition: mainwindow.cpp:319
SimulationView * m_simulationView
Definition: mainwindow.h:120
@ SESSIONMODEL
Definition: mainwindow.h:51
WelcomeView * m_welcomeView
Definition: mainwindow.h:116
SessionModelView * m_sessionModelView
Definition: mainwindow.h:122
void setCurrentView(int viewId)
Definition: mainwindow.cpp:194
QButtonGroup * m_viewSelectionButtons
Definition: mainwindow.h:104
InstrumentView * m_instrumentView
Definition: mainwindow.h:117
LinkInstrumentManager * m_linkManager
Definition: mainwindow.h:110
QWidget * currentView() const
Definition: mainwindow.cpp:189
UpdateNotifier * updateNotifier()
Definition: mainwindow.cpp:184
void writeSettings()
Definition: mainwindow.cpp:331
void closeEvent(QCloseEvent *event)
Definition: mainwindow.cpp:239
static MainWindow * instance()
Returns the one and only instance of this class.
Definition: mainwindow.cpp:129
void onSessionModelViewActive(bool isActive)
Inserts/removes developers SessionModelView on the left tabbar.
Definition: mainwindow.cpp:225
ProjectManager * m_projectManager
Definition: mainwindow.h:111
ActionManager * m_actionManager
Definition: mainwindow.h:112
ImportDataView * m_importDataView
Definition: mainwindow.h:119
InstrumentModel * instrumentModel()
Definition: mainwindow.cpp:139
void onFocusRequest(int index)
Definition: mainwindow.cpp:202
LinkInstrumentManager * linkInstrumentManager()
Definition: mainwindow.cpp:164
void addView(ViewId id, const QIcon &icon, const QString &title, const QString &tooltip, QWidget *view)
Definition: mainwindow.cpp:347
UpdateNotifier * m_updateNotifier
Definition: mainwindow.h:114
void onRunSimulationShortcut()
Definition: mainwindow.cpp:215
QStackedLayout * m_viewsStack
Definition: mainwindow.h:105
void openRecentProject()
Definition: mainwindow.cpp:207
void initViews()
Definition: mainwindow.cpp:281
QStatusBar * m_statusBar
Definition: mainwindow.h:107
void initProgressBar()
Definition: mainwindow.cpp:272
ApplicationModels * m_applicationModels
Definition: mainwindow.h:109
QProgressBar * progressBar()
Definition: mainwindow.cpp:169
ApplicationModels * models()
Definition: mainwindow.cpp:159
QVBoxLayout * m_viewSelectionButtonsLayout
Definition: mainwindow.h:106
SampleModel * sampleModel()
Definition: mainwindow.cpp:144
JobModel * jobModel()
Definition: mainwindow.cpp:154
QProgressBar * m_progressBar
Definition: mainwindow.h:103
MaterialModel * materialModel()
Definition: mainwindow.cpp:134
void currentViewChanged(ViewId newView)
ProjectManager * projectManager()
Definition: mainwindow.cpp:179
void initApplication()
Definition: mainwindow.cpp:256
RealDataModel * realDataModel()
Definition: mainwindow.cpp:149
QToolButton * createViewSelectionButton() const
Definition: mainwindow.cpp:401
void initConnections()
Definition: mainwindow.cpp:342
static MainWindow * s_instance
Holds the one and only instance of this class.
Definition: mainwindow.h:125
JobView * m_jobView
Definition: mainwindow.h:121
QStatusBar * statusBar()
Definition: mainwindow.cpp:174
void updateViewSelectionButtonsGeometry() const
Recalculate the size of the view selection buttons to show complete button text.
Definition: mainwindow.cpp:363
ToolTipDataBase * m_toolTipDataBase
Definition: mainwindow.h:113
SampleView * m_sampleView
Definition: mainwindow.h:118
Handles activity related to opening/save projects.
The RealDataModel class is a model to store all imported RealDataItem's.
Definition: RealDataModel.h:26
Main model to hold sample items.
Definition: SampleModel.h:24
The SessionModelView is a technical view which shows the content all current application models.
The MaterialEditor is the main class to access materials.