BornAgain  1.19.0
Simulate and fit neutron and x-ray scattering at grazing incidence
JobView.cpp
Go to the documentation of this file.
1 // ************************************************************************************************
2 //
3 // BornAgain: simulate and fit reflection and scattering
4 //
5 //! @file GUI/coregui/Views/JobView.cpp
6 //! @brief Implements class JobView
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 
29 #include <QMenu>
30 
32  : m_docks(new DocksController(this))
33  , m_progressAssistant(new JobProgressAssistant(mainWindow))
34  , m_currentItem(nullptr)
35  , m_mainWindow(mainWindow)
36  , m_activityActions(this)
37 {
38 
39  setObjectName("JobView");
40  createActions();
43 }
44 
45 void JobView::fillViewMenu(QMenu* menu)
46 {
47  menu->addActions(m_activityActions.actions());
48  menu->addSeparator();
49 
51 
52  menu->addSeparator();
53 
54  QAction* action = new QAction(menu);
55  action->setText("Reset to default layout");
56  connect(action, &QAction::triggered, this, &JobView::resetLayout);
57  menu->addAction(action);
58 }
59 
61 {
62  if (jobItem->runInBackground())
63  return;
64 
65  if (jobItem != m_jobSelector->currentJobItem()) {
68  }
69 
71 }
72 
73 //! Sets docks visibility in accordance with required activity.
74 
75 void JobView::setActivity(int activity)
76 {
77  QVector<JobViewFlags::Dock> docksToShow =
78  JobViewActivities::activeDocks(JobViewFlags::Activity(activity));
79 
80  std::vector<int> docks_id;
81  for (auto x : docksToShow)
82  docks_id.push_back(static_cast<int>(x));
83 
84  m_docks->setVisibleDocks(docks_id);
85  m_activityActions.actions()[activity]->setChecked(true);
86  emit activityChanged(activity);
87 }
88 
89 //! Propagates change in JobItem's selection down into main widgets.
90 
92 {
94  m_jobRealTimeWidget->setItem(jobItem);
95  m_fitActivityPanel->setItem(jobItem);
96 }
97 
99 {
105 
106  m_docks->addWidget(JobViewFlags::JOB_LIST_DOCK, m_jobSelector, Qt::LeftDockWidgetArea);
110 
113 
116 
117  setCentralWidget(m_jobOutputDataWidget);
118 
119  resetLayout();
120 }
121 
123 {
124  int activity = 0;
125  for (auto activityName : JobViewActivities::activityList()) {
126  QAction* action = new QAction(this);
127  action->setText(activityName);
128  action->setCheckable(true);
129  connect(action, &QAction::triggered, [=]() { setActivity(activity); });
130  m_activityActions.addAction(action);
131  activity++;
132  }
133 }
134 
136 {
139 }
140 
141 //! Connects signal related to activity change.
142 
144 {
145  // Activity was changed: this -> JobOutputDataWidget
148 }
149 
150 //! Connects signals related to JobItem
151 
153 {
154  // Focus request: JobModel -> this
156 
157  // JobItem selection: JobSelectorWidget -> this
160 }
161 
162 //! Sets appropriate activity for new JobItem
163 
165 {
166  if (!jobItem)
167  return;
168 
169  if (jobItem->isValidForFitting())
171 }
172 
174 {
175  m_docks->resetLayout();
176  setActivity(static_cast<int>(JobViewFlags::JOB_VIEW_ACTIVITY));
177 }
Defines class DocksController.
Defines class FitActivityPanel.
Defines class MainWindow.
Defines class JobItem.
Defines class JobMessagePanel.
Defines class JobModel.
Defines class JobOutputDataWidget.
Defines class JobProgressAssistant.
Defines class JobRealTimeWidget.
Defines class JobSelectorWidget.
Defines class JobViewActivities.
Defines class JobViewFlags.
Defines class JobView.
Handles creation and appearance of docked widgets in the context of QMainWindow.
void setDockHeightForWidget(int height)
A hack to request update of QDockWidget size if its child (e.g.
void addDockActionsToMenu(QMenu *menu)
void addWidget(int id, QWidget *widget, Qt::DockWidgetArea area)
void setVisibleDocks(const std::vector< int > &visibleDocks)
Show docks with id's from the list. Other docks will be hidden.
The FitActivityPanel class is a main widget to run the fitting.
void setJobMessagePanel(JobMessagePanel *jobMessagePanel)
void setRealTimeWidget(JobRealTimeWidget *realTimeWidget)
void setItem(JobItem *item)
void widgetHeightRequest(int)
bool isValidForFitting()
Definition: JobItem.cpp:165
bool runInBackground() const
Definition: JobItem.cpp:214
The JobMessagePanel class shows log messages from FitActivityPanel at the bottom part of JobView.
void focusRequest(JobItem *item)
The JobOutputDataWidget class is a central widget of JobView, shows results of the simulation.
void onActivityChanged(int activity)
void setItem(JobItem *jobItem)
The JobProgressAssistant class helps JobView to visualize current progress.
The JobRealTimeWidget class provides tuning of sample parameters in real time.
void setItem(JobItem *jobItem)
The JobSelectorWidget class represents left panel of JobView.
void makeJobItemSelected(JobItem *)
void selectionChanged(JobItem *)
const JobItem * currentJobItem() const
static QVector< JobViewFlags::Dock > activeDocks(JobViewFlags::Activity activity)
Returns vector of JobView's dockId which have to be shown for given activity.
static QStringList activityList()
Returns list of available activity names.
void connectJobRelated()
Connects signals related to JobItem.
Definition: JobView.cpp:152
void connectActivityRelated()
Connects signal related to activity change.
Definition: JobView.cpp:143
void setActivity(int activity)
Sets docks visibility in accordance with required activity.
Definition: JobView.cpp:75
void setAppropriateActivityForJob(JobItem *jobItem)
Sets appropriate activity for new JobItem.
Definition: JobView.cpp:164
void createActions()
Definition: JobView.cpp:122
void onSelectionChanged(JobItem *jobItem)
Propagates change in JobItem's selection down into main widgets.
Definition: JobView.cpp:91
FitActivityPanel * m_fitActivityPanel
Definition: JobView.h:70
JobRealTimeWidget * m_jobRealTimeWidget
Definition: JobView.h:69
DocksController * m_docks
Definition: JobView.h:62
void fillViewMenu(QMenu *menu)
Definition: JobView.cpp:45
void focusRequest(int)
void onFocusRequest(JobItem *jobItem)
Definition: JobView.cpp:60
MainWindow * m_mainWindow
Definition: JobView.h:65
JobOutputDataWidget * m_jobOutputDataWidget
Definition: JobView.h:68
JobSelectorWidget * m_jobSelector
Definition: JobView.h:67
void connectSignals()
Definition: JobView.cpp:135
void activityChanged(int activity)
JobMessagePanel * m_jobMessagePanel
Definition: JobView.h:71
void createSubWindows()
Definition: JobView.cpp:98
JobView(MainWindow *mainWindow)
Definition: JobView.cpp:31
void resetLayout()
Definition: JobView.cpp:173
QActionGroup m_activityActions
Definition: JobView.h:73
JobModel * jobModel()
Definition: mainwindow.cpp:154