BornAgain  1.19.0
Simulate and fit neutron and x-ray scattering at grazing incidence
SimulationSetupWidget Class Reference

The SimulationSetupWidget class represents a main widget to define simulation settings and run the simulation. More...

Inheritance diagram for SimulationSetupWidget:
[legend]
Collaboration diagram for SimulationSetupWidget:
[legend]

Public Slots

void onExportToPythonScript ()
 
void onRunSimulation ()
 

Public Member Functions

 SimulationSetupWidget (QWidget *parent=0)
 
void setApplicationModels (ApplicationModels *model)
 
void updateViewElements ()
 

Private Member Functions

QWidget * createButtonWidget ()
 

Private Attributes

QPushButton * exportToPyScriptButton
 
ApplicationModelsm_applicationModels
 
SimulationDataSelectorWidgetm_simDataSelectorWidget
 
SimulationOptionsWidgetm_simOptionsWidget
 
QPushButton * runSimulationButton
 

Detailed Description

The SimulationSetupWidget class represents a main widget to define simulation settings and run the simulation.

Belongs to the SimulationView.

Definition at line 29 of file SimulationSetupWidget.h.

Constructor & Destructor Documentation

◆ SimulationSetupWidget()

SimulationSetupWidget::SimulationSetupWidget ( QWidget *  parent = 0)

Definition at line 31 of file SimulationSetupWidget.cpp.

32  : QWidget(parent)
38 {
39  QVBoxLayout* mainLayout = new QVBoxLayout;
40  mainLayout->addWidget(m_simDataSelectorWidget);
41  mainLayout->addWidget(m_simOptionsWidget);
42  mainLayout->addWidget(createButtonWidget());
43  mainLayout->addStretch(10);
44  setLayout(mainLayout);
45 
46  // signal and slots
47  connect(runSimulationButton, &QPushButton::clicked, this,
49  connect(exportToPyScriptButton, &QPushButton::clicked, this,
51 }
The SimulationDataSelectorWidget class represents widget to select instrument, sample and real data.
Holds widgets related to the setup of simulation/job options (nthreads, run policy,...
ApplicationModels * m_applicationModels
SimulationDataSelectorWidget * m_simDataSelectorWidget
SimulationOptionsWidget * m_simOptionsWidget
QPushButton * exportToPyScriptButton

References createButtonWidget(), exportToPyScriptButton, m_simDataSelectorWidget, m_simOptionsWidget, onExportToPythonScript(), onRunSimulation(), and runSimulationButton.

Here is the call graph for this function:

Member Function Documentation

◆ createButtonWidget()

QWidget * SimulationSetupWidget::createButtonWidget ( )
private

Definition at line 105 of file SimulationSetupWidget.cpp.

106 {
107  QWidget* result = new QWidget;
108 
109  QHBoxLayout* simButtonLayout = new QHBoxLayout;
110  // run simulation button
111  runSimulationButton = new QPushButton("Run simulation");
112  runSimulationButton->setIcon(QIcon(":/images/main_simulation.png"));
113  runSimulationButton->setMinimumWidth(100);
114  runSimulationButton->setMinimumHeight(50);
115  runSimulationButton->setToolTip("Run the simulation using settings above.\n"
116  " Global shortcut ctrl-r can be used to run from sample view.");
117  // QPalette palette = runSimulationButton->palette();
118  // palette.setColor(QPalette::Button, QColor(Constants::BUTTON_COLOR));
119  // palette.setColor(QPalette::ButtonText, QColor(Constants::BUTTON_TEXT_COLOR));
120  // runSimulationButton->setPalette(palette);
121 
122  // export simulation to a python script
123  exportToPyScriptButton = new QPushButton("Export to Python Script");
124  exportToPyScriptButton->setIcon(QIcon(":/images/mode_script.png"));
125  exportToPyScriptButton->setMinimumWidth(100);
126  exportToPyScriptButton->setMinimumHeight(50);
127  exportToPyScriptButton->setToolTip("Export the simulation using settings above to "
128  "a python script.\n");
129  // exportToPyScriptButton->setPalette(palette);
130 
131  simButtonLayout->addStretch();
132  simButtonLayout->addWidget(runSimulationButton);
133  simButtonLayout->addWidget(exportToPyScriptButton);
134  simButtonLayout->addStretch();
135 
136  result->setLayout(simButtonLayout);
137 
138  return result;
139 }

References exportToPyScriptButton, and runSimulationButton.

Referenced by SimulationSetupWidget().

◆ onExportToPythonScript

void SimulationSetupWidget::onExportToPythonScript ( )
slot

Definition at line 87 of file SimulationSetupWidget.cpp.

88 {
90  const auto instrumentItem = m_simDataSelectorWidget->selectedInstrumentItem();
91 
92  SimulationSetupAssistant assistant;
93  if (!assistant.isValidSimulationSetup(multiLayerItem, instrumentItem))
94  return;
95 
96  PythonScriptWidget* pythonWidget = new PythonScriptWidget(this);
97  pythonWidget->show();
98  pythonWidget->raise();
99  pythonWidget->generatePythonScript(
100  multiLayerItem, instrumentItem,
103 }
static ProjectManager * projectManager()
Definition: AppSvc.cpp:18
DocumentModel * documentModel()
SimulationOptionsItem * simulationOptionsItem()
QString projectDir() const
Returns name of the current project directory.
The PythonScriptWidget displays a python script which represents full simulation.
void generatePythonScript(const MultiLayerItem *sampleItem, const InstrumentItem *instrumentItem, const SimulationOptionsItem *optionItem=0, const QString &outputDir="")
const MultiLayerItem * selectedMultiLayerItem() const
Returns selected MultiLayerItem taking into account that there might be several multilayers with same...
const InstrumentItem * selectedInstrumentItem() const
Returns selected InstrumentItem taking into account that there might be several instruments with same...
The SimulationSetupAssistant class provides sample, instrument and real data validation before submit...
bool isValidSimulationSetup(const MultiLayerItem *multiLayerItem, const InstrumentItem *instrumentItem, const RealDataItem *realData=0)

References ApplicationModels::documentModel(), PythonScriptWidget::generatePythonScript(), SimulationSetupAssistant::isValidSimulationSetup(), m_applicationModels, m_simDataSelectorWidget, ProjectManager::projectDir(), AppSvc::projectManager(), SimulationDataSelectorWidget::selectedInstrumentItem(), SimulationDataSelectorWidget::selectedMultiLayerItem(), and DocumentModel::simulationOptionsItem().

Referenced by SimulationSetupWidget().

Here is the call graph for this function:

◆ onRunSimulation

void SimulationSetupWidget::onRunSimulation ( )
slot

Definition at line 69 of file SimulationSetupWidget.cpp.

70 {
72  const auto instrumentItem = m_simDataSelectorWidget->selectedInstrumentItem();
74 
75  SimulationSetupAssistant assistant;
76  if (!assistant.isValidSimulationSetup(multiLayerItem, instrumentItem, realDataItem))
77  return;
78 
80  multiLayerItem, instrumentItem, realDataItem,
82 
83  if (jobItem->runImmediately() || jobItem->runInBackground())
84  m_applicationModels->jobModel()->runJob(jobItem->index());
85 }
bool runImmediately() const
Definition: JobItem.cpp:209
bool runInBackground() const
Definition: JobItem.cpp:214
void runJob(const QModelIndex &index)
Definition: JobModel.cpp:179
JobItem * addJob(const MultiLayerItem *multiLayerItem, const InstrumentItem *instrumentItem, const RealDataItem *realDataItem, const SimulationOptionsItem *optionItem)
Main method to add a job.
Definition: JobModel.cpp:73
The RealDataItem class represents intensity data imported from file and intended for fitting.
Definition: RealDataItem.h:35
QModelIndex index() const
Returns model index of this item.
Definition: SessionItem.cpp:80
const RealDataItem * selectedRealDataItem() const
Returns selected real data item taking into account that there might be several items with same name.

References JobModel::addJob(), ApplicationModels::documentModel(), SessionItem::index(), SimulationSetupAssistant::isValidSimulationSetup(), ApplicationModels::jobModel(), m_applicationModels, m_simDataSelectorWidget, JobItem::runImmediately(), JobItem::runInBackground(), JobModel::runJob(), SimulationDataSelectorWidget::selectedInstrumentItem(), SimulationDataSelectorWidget::selectedMultiLayerItem(), SimulationDataSelectorWidget::selectedRealDataItem(), and DocumentModel::simulationOptionsItem().

Referenced by SimulationSetupWidget(), and SimulationView::onRunSimulationShortcut().

Here is the call graph for this function:

◆ setApplicationModels()

void SimulationSetupWidget::setApplicationModels ( ApplicationModels model)

Definition at line 53 of file SimulationSetupWidget.cpp.

54 {
55  ASSERT(model);
56  if (model != m_applicationModels) {
57  m_applicationModels = model;
60  }
61 }
#define ASSERT(condition)
Definition: Assert.h:31
void setApplicationModels(ApplicationModels *applicationModels)

References ASSERT, m_applicationModels, m_simDataSelectorWidget, SimulationDataSelectorWidget::setApplicationModels(), and updateViewElements().

Referenced by SimulationView::SimulationView().

Here is the call graph for this function:

◆ updateViewElements()

void SimulationSetupWidget::updateViewElements ( )

Member Data Documentation

◆ exportToPyScriptButton

QPushButton* SimulationSetupWidget::exportToPyScriptButton
private

Definition at line 48 of file SimulationSetupWidget.h.

Referenced by SimulationSetupWidget(), and createButtonWidget().

◆ m_applicationModels

ApplicationModels* SimulationSetupWidget::m_applicationModels
private

◆ m_simDataSelectorWidget

SimulationDataSelectorWidget* SimulationSetupWidget::m_simDataSelectorWidget
private

◆ m_simOptionsWidget

SimulationOptionsWidget* SimulationSetupWidget::m_simOptionsWidget
private

Definition at line 51 of file SimulationSetupWidget.h.

Referenced by SimulationSetupWidget(), and updateViewElements().

◆ runSimulationButton

QPushButton* SimulationSetupWidget::runSimulationButton
private

Definition at line 47 of file SimulationSetupWidget.h.

Referenced by SimulationSetupWidget(), and createButtonWidget().


The documentation for this class was generated from the following files: