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

The FitParametersWidget class contains a tree view to set fit parameters (fix/release, starting value, min/max bounds). More...

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

Public Slots

void onFitParametersSelectionChanged (const QItemSelection &selection)
 Propagates selection form the tree with fit parameters to the tuning widget. More...
 
void onFitParameterTreeContextMenu (const QPoint &point)
 Creates context menu for the tree with fit parameters. More...
 
void onTuningWidgetContextMenu (const QPoint &point)
 Creates context menu for ParameterTuningWidget. More...
 
void onTuningWidgetSelectionChanged (const QItemSelection &selection)
 

Public Member Functions

 FitParameterWidget (QWidget *parent=0)
 
virtual QList< QAction * > actionList ()
 
SessionItemcurrentItem ()
 
const SessionItemcurrentItem () const
 
virtual void setItem (SessionItem *item)
 
void setParameterTuningWidget (ParameterTuningWidget *tuningWidget)
 Sets ParameterTuningWidget to be able to provide it with context menu and steer it behaviour in the course of fit settings or fit runnig. More...
 

Protected Member Functions

void contextMenuEvent (QContextMenuEvent *event)
 Context menu reimplemented to suppress the default one. More...
 
virtual void hideEvent (QHideEvent *)
 
virtual void showEvent (QShowEvent *)
 
void subscribeToItem ()
 
virtual void unsubscribeFromItem ()
 

Private Slots

void onAddToFitParAction (int ipar)
 Add all selected parameters to fitParameter with given index. More...
 
void onCreateFitParAction ()
 Creates fit parameters for all selected ParameterItem's in tuning widget. More...
 
void onFitParameterModelChange ()
 
void onRemoveFitParAction ()
 All selected FitParameterItem's of FitParameterItemLink's will be removed. More...
 
void onRemoveFromFitParAction ()
 All ParameterItem's selected in tuning widget will be removed from link section of corresponding fitParameterItem. More...
 

Private Member Functions

bool canCreateFitParameter ()
 Returns true if tuning widget contains selected ParameterItem's which can be used to create a fit parameter (i.e. More...
 
bool canRemoveFromFitParameters ()
 Returns true if tuning widget contains selected ParameterItem's which can be removed from fit parameters. More...
 
void connectFitParametersSelection (bool active)
 
void connectTuningWidgetSelection (bool active)
 
QVector< FitParameterItem * > emptyFitParameters ()
 Returns list of FitParameterItem's which doesn't have any links attached. More...
 
void init_actions ()
 
void init_fit_model ()
 Initializes FitParameterModel and its tree. More...
 
void initFitParameterTreeContextMenu (QMenu &menu)
 Fills context menu for FitParameterTree with content. More...
 
void initTuningWidgetContextMenu (QMenu &menu)
 Fills context menu for ParameterTuningWidget with content. More...
 
JobItemjobItem ()
 
QVector< FitParameterLinkItem * > selectedFitParameterLinks ()
 Returns links of FitParameterLink's item selected in FitParameterItem tree. More...
 
QVector< FitParameterItem * > selectedFitParameters ()
 Returns list of FitParameterItem's currently selected in FitParameterItem tree. More...
 
void setActionsEnabled (bool value)
 Enables/disables all context menu actions. More...
 
void spanParameters ()
 Makes first column in FitParameterItem's tree related to ParameterItem link occupy whole space. More...
 
void updateInfoLabel ()
 Places overlay label on top of tree view, if there is no fit parameters. More...
 

Private Attributes

QAction * m_createFitParAction
 
SessionModelDelegatem_delegate
 
FitParameterProxyModelm_fitParameterModel
 
OverlayLabelControllerm_infoLabel
 
SessionItemControllerm_itemController
 
DeleteEventFilterm_keyboardFilter
 
QAction * m_removeFitParAction
 
QAction * m_removeFromFitParAction
 
QTreeView * m_treeView
 
ParameterTuningWidgetm_tuningWidget
 

Detailed Description

The FitParametersWidget class contains a tree view to set fit parameters (fix/release, starting value, min/max bounds).

It occupies buttom right corner of JobView.

Definition at line 38 of file FitParameterWidget.h.

Constructor & Destructor Documentation

◆ FitParameterWidget()

FitParameterWidget::FitParameterWidget ( QWidget *  parent = 0)

Definition at line 34 of file FitParameterWidget.cpp.

35  : SessionItemWidget(parent)
36  , m_treeView(new QTreeView)
37  , m_tuningWidget(0)
42  , m_delegate(new SessionModelDelegate(this))
45 {
46  QVBoxLayout* layout = new QVBoxLayout;
47  layout->addWidget(m_treeView);
48  layout->setMargin(0);
49  layout->setSpacing(0);
50  setLayout(layout);
51  init_actions();
52 
53  m_treeView->setSelectionMode(QAbstractItemView::ExtendedSelection);
54  m_treeView->setSelectionBehavior(QAbstractItemView::SelectRows);
55  m_treeView->setContextMenuPolicy(Qt::CustomContextMenu);
56  m_treeView->setItemDelegate(m_delegate);
57  m_treeView->setDragEnabled(true);
58  m_treeView->setDragDropMode(QAbstractItemView::DragDrop);
59  m_treeView->installEventFilter(m_keyboardFilter);
60  m_treeView->setAlternatingRowColors(true);
61  m_treeView->setStyleSheet("alternate-background-color: #EFF0F1;");
62 
63  connect(m_treeView, &QTreeView::customContextMenuRequested, this,
65 
67  m_infoLabel->setText("Drop parameter(s) to fit here");
68 }
Lisens for press-del-key events.
ParameterTuningWidget * m_tuningWidget
void onFitParameterTreeContextMenu(const QPoint &point)
Creates context menu for the tree with fit parameters.
FitParameterProxyModel * m_fitParameterModel
QAction * m_createFitParAction
QAction * m_removeFitParAction
OverlayLabelController * m_infoLabel
SessionModelDelegate * m_delegate
DeleteEventFilter * m_keyboardFilter
QAction * m_removeFromFitParAction
The OverlayLabelController class controlls appearance of InfoLabelWidget (position,...
void setArea(QAbstractScrollArea *area)
void setText(const QString &text)
SessionItemWidget(QWidget *parent=0)
The SessionModelDelegate class presents the content of SessionModel items in standard QTreeView.

References init_actions(), m_delegate, m_infoLabel, m_keyboardFilter, m_treeView, onFitParameterTreeContextMenu(), OverlayLabelController::setArea(), and OverlayLabelController::setText().

Here is the call graph for this function:

Member Function Documentation

◆ actionList()

QList< QAction * > SessionItemWidget::actionList ( )
virtualinherited

◆ canCreateFitParameter()

bool FitParameterWidget::canCreateFitParameter ( )
private

Returns true if tuning widget contains selected ParameterItem's which can be used to create a fit parameter (i.e.

it is not linked with some fit parameter already).

Definition at line 310 of file FitParameterWidget.cpp.

311 {
312  QVector<ParameterItem*> selected = m_tuningWidget->getSelectedParameters();
313  for (auto item : selected) {
314  if (FitParameterHelper::getFitParameterItem(jobItem()->fitParameterContainerItem(), item)
315  == nullptr)
316  return true;
317  }
318  return false;
319 }
static FitParameterItem * getFitParameterItem(FitParameterContainerItem *container, ParameterItem *parameterItem)
Returns fFitParameterItem corresponding to given ParameterItem.
QVector< ParameterItem * > getSelectedParameters()
Returns list of ParameterItem's currently selected in parameter tree.

References FitParameterHelper::getFitParameterItem(), ParameterTuningWidget::getSelectedParameters(), jobItem(), and m_tuningWidget.

Referenced by initTuningWidgetContextMenu().

Here is the call graph for this function:

◆ canRemoveFromFitParameters()

bool FitParameterWidget::canRemoveFromFitParameters ( )
private

Returns true if tuning widget contains selected ParameterItem's which can be removed from fit parameters.

Definition at line 324 of file FitParameterWidget.cpp.

325 {
326  QVector<ParameterItem*> selected = m_tuningWidget->getSelectedParameters();
327  for (auto item : selected) {
328  if (FitParameterHelper::getFitParameterItem(jobItem()->fitParameterContainerItem(), item))
329  return true;
330  }
331  return false;
332 }

References FitParameterHelper::getFitParameterItem(), ParameterTuningWidget::getSelectedParameters(), jobItem(), and m_tuningWidget.

Referenced by initTuningWidgetContextMenu().

Here is the call graph for this function:

◆ connectFitParametersSelection()

void FitParameterWidget::connectFitParametersSelection ( bool  active)
private

Definition at line 433 of file FitParameterWidget.cpp.

434 {
435  if (active) {
436  connect(m_treeView->selectionModel(), &QItemSelectionModel::selectionChanged, this,
438  } else {
439  disconnect(m_treeView->selectionModel(), &QItemSelectionModel::selectionChanged, this,
441  }
442 }
void onFitParametersSelectionChanged(const QItemSelection &selection)
Propagates selection form the tree with fit parameters to the tuning widget.

References m_treeView, and onFitParametersSelectionChanged().

Referenced by init_fit_model().

Here is the call graph for this function:

◆ connectTuningWidgetSelection()

void FitParameterWidget::connectTuningWidgetSelection ( bool  active)
private

Definition at line 420 of file FitParameterWidget.cpp.

421 {
423 
424  if (active) {
425  connect(m_tuningWidget->selectionModel(), &QItemSelectionModel::selectionChanged, this,
427  } else {
428  disconnect(m_tuningWidget->selectionModel(), &QItemSelectionModel::selectionChanged, this,
430  }
431 }
#define ASSERT(condition)
Definition: Assert.h:31
void onTuningWidgetSelectionChanged(const QItemSelection &selection)
QItemSelectionModel * selectionModel()

References ASSERT, m_tuningWidget, onTuningWidgetSelectionChanged(), and ParameterTuningWidget::selectionModel().

Here is the call graph for this function:

◆ contextMenuEvent()

void FitParameterWidget::contextMenuEvent ( QContextMenuEvent *  event)
protected

Context menu reimplemented to suppress the default one.

Definition at line 214 of file FitParameterWidget.cpp.

215 {
216  Q_UNUSED(event);
217 }

◆ currentItem() [1/2]

SessionItem * SessionItemWidget::currentItem ( )
inherited

Definition at line 41 of file SessionItemWidget.cpp.

42 {
43  return const_cast<SessionItem*>(static_cast<const SessionItemWidget*>(this)->currentItem());
44 }
The SessionItemWidget class is a base for all widgets representing the content of SessionItem.
SessionItem * currentItem()

Referenced by RectangularDetectorEditor::detectorItem(), SphericalDetectorEditor::detectorItem(), FitFlowWidget::fitSuiteItem(), DistributionEditor::groupItem(), DepthProbeInstrumentEditor::instrumentItem(), EnvironmentEditor::instrumentItem(), GISASBeamEditor::instrumentItem(), GISASDetectorEditor::instrumentItem(), GISASInstrumentEditor::instrumentItem(), OffSpecularBeamEditor::instrumentItem(), OffSpecularInstrumentEditor::instrumentItem(), PolarizationAnalysisEditor::instrumentItem(), SpecularBeamEditor::instrumentItem(), SpecularInstrumentEditor::instrumentItem(), RealDataMaskWidget::intensityDataItem(), IntensityDataCanvas::intensityDataItem(), IntensityDataProjectionsWidget::intensityDataItem(), IntensityDataWidget::intensityDataItem(), ProjectionsPlot::intensityItem(), ColorMap::intensityItem(), DetectorPresenter::itemPresentation(), InstrumentPresenter::itemPresentation(), JobResultsPresenter::itemPresentation(), FitComparisonWidget::jobItem(), FitComparisonWidget1D::jobItem(), jobItem(), RunFitControlWidget::jobItem(), JobPropertiesWidget::jobItem(), ParameterTuningWidget::jobItem(), SpecularDataImportWidget::realDataItem(), ItemComboWidget::setPresentation(), JobResultsPresenter::setPresentation(), SpecularDataCanvas::specularDataItem(), SpecularDataImportWidget::specularDataItem(), SpecularDataWidget::specularDataItem(), SpecularPlot::specularItem(), ItemComboWidget::subscribeToItem(), DistributionEditor::subscribeToItem(), GISASDetectorEditor::subscribeToItem(), PolarizationAnalysisEditor::subscribeToItem(), IntensityDataPropertyWidget::subscribeToItem(), JobPropertiesWidget::subscribeToItem(), ProjectionsPropertyPanel::subscribeToItem(), ProjectionsPlot::unsubscribeFromChildren(), and Plot1D::viewItem().

◆ currentItem() [2/2]

const SessionItem * SessionItemWidget::currentItem ( ) const
inherited

Definition at line 46 of file SessionItemWidget.cpp.

47 {
48  return m_itemController->currentItem();
49 }
SessionItemController * m_itemController

References SessionItemController::currentItem(), and SessionItemWidget::m_itemController.

Here is the call graph for this function:

◆ emptyFitParameters()

QVector< FitParameterItem * > FitParameterWidget::emptyFitParameters ( )
private

Returns list of FitParameterItem's which doesn't have any links attached.

Definition at line 363 of file FitParameterWidget.cpp.

364 {
365  QVector<FitParameterItem*> result;
366  for (auto fitParItem : jobItem()->fitParameterContainerItem()->fitParameterItems())
367  if (fitParItem->getItems(FitParameterItem::T_LINK).empty())
368  result.push_back(fitParItem);
369 
370  return result;
371 }
static const QString T_LINK

References jobItem(), and FitParameterItem::T_LINK.

Here is the call graph for this function:

◆ hideEvent()

void SessionItemWidget::hideEvent ( QHideEvent *  )
protectedvirtualinherited

Definition at line 56 of file SessionItemWidget.cpp.

57 {
59 }
void unsubscribe()
Fully unsubscribes the parent from listening item's signals.

References SessionItemWidget::m_itemController, and SessionItemController::unsubscribe().

Here is the call graph for this function:

◆ init_actions()

void FitParameterWidget::init_actions ( )
private

Definition at line 224 of file FitParameterWidget.cpp.

225 {
226  m_createFitParAction = new QAction("Create fit parameter", this);
227  connect(m_createFitParAction, &QAction::triggered, this,
229 
230  m_removeFromFitParAction = new QAction("Remove from fit parameters", this);
231  connect(m_removeFromFitParAction, &QAction::triggered, this,
233 
234  m_removeFitParAction = new QAction("Remove fit parameter", this);
235  connect(m_removeFitParAction, &QAction::triggered, this,
237 
240 }
void onCreateFitParAction()
Creates fit parameters for all selected ParameterItem's in tuning widget.
void onRemoveFromFitParAction()
All ParameterItem's selected in tuning widget will be removed from link section of corresponding fitP...
void onRemoveFitParAction()
All selected FitParameterItem's of FitParameterItemLink's will be removed.

References m_createFitParAction, m_keyboardFilter, m_removeFitParAction, m_removeFromFitParAction, onCreateFitParAction(), onRemoveFitParAction(), onRemoveFromFitParAction(), and DeleteEventFilter::removeItem().

Referenced by FitParameterWidget().

Here is the call graph for this function:

◆ init_fit_model()

void FitParameterWidget::init_fit_model ( )
private

Initializes FitParameterModel and its tree.

Definition at line 289 of file FitParameterWidget.cpp.

290 {
291  m_treeView->setModel(0);
292 
293  delete m_fitParameterModel;
295  jobItem()->fitParameterContainerItem(), jobItem()->fitParameterContainerItem()->model());
296  m_treeView->setModel(m_fitParameterModel);
297 
298  connect(m_fitParameterModel, &FitParameterProxyModel::dataChanged, this,
300  connect(m_fitParameterModel, &FitParameterProxyModel::modelReset, this,
302 
305 }
The FitParameterProxyModel adapts the original JobModel to show items from FitParameterContainer in 5...
void connectFitParametersSelection(bool active)

References connectFitParametersSelection(), jobItem(), m_fitParameterModel, m_treeView, and onFitParameterModelChange().

Referenced by subscribeToItem().

Here is the call graph for this function:

◆ initFitParameterTreeContextMenu()

void FitParameterWidget::initFitParameterTreeContextMenu ( QMenu &  menu)
private

Fills context menu for FitParameterTree with content.

Definition at line 278 of file FitParameterWidget.cpp.

279 {
280  if (jobItem()->getStatus() == "Fitting") {
281  setActionsEnabled(false);
282  return;
283  }
284  menu.addAction(m_removeFitParAction);
285 }
void setActionsEnabled(bool value)
Enables/disables all context menu actions.

References jobItem(), m_removeFitParAction, and setActionsEnabled().

Referenced by onFitParameterTreeContextMenu().

Here is the call graph for this function:

◆ initTuningWidgetContextMenu()

void FitParameterWidget::initTuningWidgetContextMenu ( QMenu &  menu)
private

Fills context menu for ParameterTuningWidget with content.

Definition at line 244 of file FitParameterWidget.cpp.

245 {
246  if (jobItem()->getStatus() == "Fitting") {
247  setActionsEnabled(false);
248  return;
249  }
250 
253 
254  menu.addAction(m_createFitParAction);
255  QMenu* addToFitParMenu = menu.addMenu("Add to existing fit parameter");
256  addToFitParMenu->setEnabled(true);
257 
258  const bool allow_one_fit_parameter_to_have_more_than_one_link = true;
259  if (allow_one_fit_parameter_to_have_more_than_one_link) {
260  QStringList fitParNames =
261  FitParameterHelper::getFitParameterNames(jobItem()->fitParameterContainerItem());
262  if (fitParNames.isEmpty() || canCreateFitParameter() == false) {
263  addToFitParMenu->setEnabled(false);
264  }
265  for (int i = 0; i < fitParNames.count(); ++i) {
266  QAction* action =
267  new QAction(QString("to ").append(fitParNames.at(i)), addToFitParMenu);
268  connect(action, &QAction::triggered, [=] { onAddToFitParAction(i); });
269  addToFitParMenu->addAction(action);
270  }
271  }
272  menu.addSeparator();
273  menu.addAction(m_removeFromFitParAction);
274 }
static QStringList getFitParameterNames(FitParameterContainerItem *container)
Returns list of fit parameter display names.
void onAddToFitParAction(int ipar)
Add all selected parameters to fitParameter with given index.
bool canRemoveFromFitParameters()
Returns true if tuning widget contains selected ParameterItem's which can be removed from fit paramet...
bool canCreateFitParameter()
Returns true if tuning widget contains selected ParameterItem's which can be used to create a fit par...

References canCreateFitParameter(), canRemoveFromFitParameters(), FitParameterHelper::getFitParameterNames(), jobItem(), m_createFitParAction, m_removeFromFitParAction, onAddToFitParAction(), and setActionsEnabled().

Referenced by onTuningWidgetContextMenu().

Here is the call graph for this function:

◆ jobItem()

JobItem * FitParameterWidget::jobItem ( )
private

Definition at line 444 of file FitParameterWidget.cpp.

445 {
446  return dynamic_cast<JobItem*>(currentItem());
447 }

References SessionItemWidget::currentItem().

Referenced by canCreateFitParameter(), canRemoveFromFitParameters(), emptyFitParameters(), init_fit_model(), initFitParameterTreeContextMenu(), initTuningWidgetContextMenu(), onAddToFitParAction(), onCreateFitParAction(), onFitParametersSelectionChanged(), onRemoveFitParAction(), onRemoveFromFitParAction(), and updateInfoLabel().

Here is the call graph for this function:

◆ onAddToFitParAction

void FitParameterWidget::onAddToFitParAction ( int  ipar)
privateslot

Add all selected parameters to fitParameter with given index.

Definition at line 196 of file FitParameterWidget.cpp.

197 {
198  QStringList fitParNames =
199  FitParameterHelper::getFitParameterNames(jobItem()->fitParameterContainerItem());
200  for (auto item : m_tuningWidget->getSelectedParameters()) {
201  FitParameterHelper::addToFitParameter(jobItem()->fitParameterContainerItem(), item,
202  fitParNames.at(ipar));
203  }
204 }
static void addToFitParameter(FitParameterContainerItem *container, ParameterItem *parameterItem, const QString &fitParName)
Adds given parameterItem to the existing fit parameter with display name fitParName.

References FitParameterHelper::addToFitParameter(), FitParameterHelper::getFitParameterNames(), ParameterTuningWidget::getSelectedParameters(), jobItem(), and m_tuningWidget.

Referenced by initTuningWidgetContextMenu().

Here is the call graph for this function:

◆ onCreateFitParAction

void FitParameterWidget::onCreateFitParAction ( )
privateslot

Creates fit parameters for all selected ParameterItem's in tuning widget.

Definition at line 148 of file FitParameterWidget.cpp.

149 {
150  for (auto item : m_tuningWidget->getSelectedParameters()) {
151  if (!FitParameterHelper::getFitParameterItem(jobItem()->fitParameterContainerItem(),
152  item)) {
153  FitParameterHelper::createFitParameter(jobItem()->fitParameterContainerItem(), item);
154  }
155  }
156 }
static void createFitParameter(FitParameterContainerItem *container, ParameterItem *parameterItem)
Creates fit parameter from given ParameterItem, sets starting value to the value of ParameterItem,...

References FitParameterHelper::createFitParameter(), FitParameterHelper::getFitParameterItem(), ParameterTuningWidget::getSelectedParameters(), jobItem(), and m_tuningWidget.

Referenced by init_actions().

Here is the call graph for this function:

◆ onFitParameterModelChange

void FitParameterWidget::onFitParameterModelChange ( )
privateslot

Definition at line 206 of file FitParameterWidget.cpp.

207 {
208  spanParameters();
209  updateInfoLabel();
210 }
void spanParameters()
Makes first column in FitParameterItem's tree related to ParameterItem link occupy whole space.
void updateInfoLabel()
Places overlay label on top of tree view, if there is no fit parameters.

References spanParameters(), and updateInfoLabel().

Referenced by init_fit_model().

Here is the call graph for this function:

◆ onFitParametersSelectionChanged

void FitParameterWidget::onFitParametersSelectionChanged ( const QItemSelection &  selection)
slot

Propagates selection form the tree with fit parameters to the tuning widget.

Definition at line 130 of file FitParameterWidget.cpp.

131 {
132  if (selection.indexes().isEmpty())
133  return;
134 
135  for (auto index : selection.indexes()) {
136  m_tuningWidget->selectionModel()->clearSelection();
138  if (item->parent()->modelType() == "FitParameterLink") {
139  QString link = item->parent()->getItemValue(FitParameterLinkItem::P_LINK).toString();
141  FitParameterHelper::getParameterItem(jobItem()->fitParameterContainerItem(), link));
142  }
143  }
144 }
static ParameterItem * getParameterItem(FitParameterContainerItem *container, const QString &link)
Returns ParameterItem corresponding to given link.
static const QString P_LINK
SessionItem * itemForIndex(const QModelIndex &index) const
void makeSelected(ParameterItem *item)
QVariant getItemValue(const QString &tag) const
Directly access value of item under given tag.
SessionItem * parent() const
Returns parent of this item.
Definition: SessionItem.cpp:73
QString modelType() const
Get model type.

References SessionItem::getItemValue(), FitParameterHelper::getParameterItem(), FitParameterProxyModel::itemForIndex(), jobItem(), m_fitParameterModel, m_tuningWidget, ParameterTuningWidget::makeSelected(), SessionItem::modelType(), FitParameterLinkItem::P_LINK, SessionItem::parent(), and ParameterTuningWidget::selectionModel().

Referenced by connectFitParametersSelection().

Here is the call graph for this function:

◆ onFitParameterTreeContextMenu

void FitParameterWidget::onFitParameterTreeContextMenu ( const QPoint &  point)
slot

Creates context menu for the tree with fit parameters.

Definition at line 115 of file FitParameterWidget.cpp.

116 {
117  QMenu menu;
119  menu.exec(m_treeView->mapToGlobal(point + QPoint(2, 22)));
120  setActionsEnabled(true);
121 }
void initFitParameterTreeContextMenu(QMenu &menu)
Fills context menu for FitParameterTree with content.

References initFitParameterTreeContextMenu(), m_treeView, and setActionsEnabled().

Referenced by FitParameterWidget().

Here is the call graph for this function:

◆ onRemoveFitParAction

void FitParameterWidget::onRemoveFitParAction ( )
privateslot

All selected FitParameterItem's of FitParameterItemLink's will be removed.

Definition at line 173 of file FitParameterWidget.cpp.

174 {
176 
177  // retrieve both, selected FitParameterItem and FitParameterItemLink
178  QVector<FitParameterLinkItem*> linksToRemove = selectedFitParameterLinks();
179 
180  for (auto item : linksToRemove) {
181  container->model()->removeRow(item->index().row(), item->index().parent());
182  }
183 
184  QVector<FitParameterItem*> itemsToRemove = selectedFitParameters();
185  // By uncommenting line below, removing link from fit parameter will lead to fit parameter
186  // removal too (if it doesn't have other links)
187  // QVector<FitParameterItem *> itemsToRemove = selectedFitParameters()+emptyFitParameters();
188 
189  for (auto item : itemsToRemove) {
190  container->model()->removeRow(item->index().row(), item->index().parent());
191  }
192 }
QVector< FitParameterItem * > selectedFitParameters()
Returns list of FitParameterItem's currently selected in FitParameterItem tree.
QVector< FitParameterLinkItem * > selectedFitParameterLinks()
Returns links of FitParameterLink's item selected in FitParameterItem tree.
FitParameterContainerItem * fitParameterContainerItem()
Definition: JobItem.cpp:251
SessionModel * model() const
Returns model of this item.
Definition: SessionItem.cpp:66

References JobItem::fitParameterContainerItem(), jobItem(), SessionItem::model(), selectedFitParameterLinks(), and selectedFitParameters().

Referenced by init_actions().

Here is the call graph for this function:

◆ onRemoveFromFitParAction

void FitParameterWidget::onRemoveFromFitParAction ( )
privateslot

All ParameterItem's selected in tuning widget will be removed from link section of corresponding fitParameterItem.

Definition at line 161 of file FitParameterWidget.cpp.

162 {
163  for (auto item : m_tuningWidget->getSelectedParameters()) {
164  if (FitParameterHelper::getFitParameterItem(jobItem()->fitParameterContainerItem(), item)) {
165  FitParameterHelper::removeFromFitParameters(jobItem()->fitParameterContainerItem(),
166  item);
167  }
168  }
169 }
static void removeFromFitParameters(FitParameterContainerItem *container, ParameterItem *parameterItem)
Removes link to given parameterItem from fit parameters.

References FitParameterHelper::getFitParameterItem(), ParameterTuningWidget::getSelectedParameters(), jobItem(), m_tuningWidget, and FitParameterHelper::removeFromFitParameters().

Referenced by init_actions().

Here is the call graph for this function:

◆ onTuningWidgetContextMenu

void FitParameterWidget::onTuningWidgetContextMenu ( const QPoint &  point)
slot

Creates context menu for ParameterTuningWidget.

Definition at line 105 of file FitParameterWidget.cpp.

106 {
107  QMenu menu;
109  menu.exec(point);
110  setActionsEnabled(true);
111 }
void initTuningWidgetContextMenu(QMenu &menu)
Fills context menu for ParameterTuningWidget with content.

References initTuningWidgetContextMenu(), and setActionsEnabled().

Referenced by setParameterTuningWidget().

Here is the call graph for this function:

◆ onTuningWidgetSelectionChanged

void FitParameterWidget::onTuningWidgetSelectionChanged ( const QItemSelection &  selection)
slot

Definition at line 123 of file FitParameterWidget.cpp.

124 {
125  Q_UNUSED(selection);
126 }

Referenced by connectTuningWidgetSelection().

◆ selectedFitParameterLinks()

QVector< FitParameterLinkItem * > FitParameterWidget::selectedFitParameterLinks ( )
private

Returns links of FitParameterLink's item selected in FitParameterItem tree.

Definition at line 375 of file FitParameterWidget.cpp.

376 {
377  QVector<FitParameterLinkItem*> result;
378  QModelIndexList indexes = m_treeView->selectionModel()->selectedIndexes();
379  for (QModelIndex index : indexes) {
380  if (SessionItem* item = m_fitParameterModel->itemForIndex(index)) {
381  if (item->parent()->modelType() == "FitParameterLink") {
382  FitParameterLinkItem* fitParItem =
383  dynamic_cast<FitParameterLinkItem*>(item->parent());
384  ASSERT(fitParItem);
385  result.push_back(fitParItem);
386  }
387  }
388  }
389  return result;
390 }
FitParameterItems is a collection of items to define fit parameters in GUI.

References ASSERT, FitParameterProxyModel::itemForIndex(), m_fitParameterModel, and m_treeView.

Referenced by onRemoveFitParAction().

Here is the call graph for this function:

◆ selectedFitParameters()

QVector< FitParameterItem * > FitParameterWidget::selectedFitParameters ( )
private

Returns list of FitParameterItem's currently selected in FitParameterItem tree.

Definition at line 345 of file FitParameterWidget.cpp.

346 {
347  QVector<FitParameterItem*> result;
348  QModelIndexList indexes = m_treeView->selectionModel()->selectedIndexes();
349  for (auto index : indexes) {
350  if (SessionItem* item = m_fitParameterModel->itemForIndex(index)) {
351  if (item->modelType() == "FitParameter") {
352  FitParameterItem* fitParItem = dynamic_cast<FitParameterItem*>(item);
353  ASSERT(fitParItem);
354  result.push_back(fitParItem);
355  }
356  }
357  }
358  return result;
359 }
The FitParameterItem class represents a fit parameter in GUI.

References ASSERT, FitParameterProxyModel::itemForIndex(), m_fitParameterModel, and m_treeView.

Referenced by onRemoveFitParAction().

Here is the call graph for this function:

◆ setActionsEnabled()

void FitParameterWidget::setActionsEnabled ( bool  value)
private

Enables/disables all context menu actions.

Definition at line 336 of file FitParameterWidget.cpp.

337 {
338  m_createFitParAction->setEnabled(value);
339  m_removeFromFitParAction->setEnabled(value);
340  m_removeFitParAction->setEnabled(value);
341 }

References m_createFitParAction, m_removeFitParAction, and m_removeFromFitParAction.

Referenced by initFitParameterTreeContextMenu(), initTuningWidgetContextMenu(), onFitParameterTreeContextMenu(), and onTuningWidgetContextMenu().

◆ setItem()

void SessionItemWidget::setItem ( SessionItem item)
virtualinherited

Reimplemented in SpecularPlotCanvas, SpecularDataImportWidget, SpecularDataWidget, IntensityDataWidget, SpecularDataCanvas, ProjectionsWidget, IntensityDataCanvas, ColorMapCanvas, and Plot1DCanvas.

Definition at line 28 of file SessionItemWidget.cpp.

29 {
31 
32  if (isVisible())
34 }
void setItem(SessionItem *item)
void subscribe()
Subscribe parent to item's signals.

References SessionItemWidget::m_itemController, SessionItemController::setItem(), and SessionItemController::subscribe().

Referenced by IntensityDataWidget::onFFTAction(), JobSelectorWidget::onSelectionChanged(), ProjectionsEditor::resetContext(), ProjectionsEditor::setContext(), MaskGraphicsProxy::setIntensityItem(), FitSessionWidget::setItem(), Plot1DCanvas::setItem(), InstrumentEditorWidget::setItem(), ColorMapCanvas::setItem(), IntensityDataCanvas::setItem(), ProjectionsWidget::setItem(), SpecularDataCanvas::setItem(), DistributionDialog::setItem(), IntensityDataWidget::setItem(), SpecularDataWidget::setItem(), SpecularDataImportWidget::setItem(), SpecularPlotCanvas::setItem(), ItemComboWidget::setPresentation(), GISASInstrumentEditor::subscribeToItem(), OffSpecularInstrumentEditor::subscribeToItem(), SpecularInstrumentEditor::subscribeToItem(), FitComparisonWidget::subscribeToItem(), FitComparisonWidget1D::subscribeToItem(), and GISASDetectorEditor::updateDetectorPresenter().

Here is the call graph for this function:

◆ setParameterTuningWidget()

void FitParameterWidget::setParameterTuningWidget ( ParameterTuningWidget tuningWidget)

Sets ParameterTuningWidget to be able to provide it with context menu and steer it behaviour in the course of fit settings or fit runnig.

Definition at line 73 of file FitParameterWidget.cpp.

74 {
75  if (tuningWidget == m_tuningWidget) {
76  return;
77 
78  } else {
79  if (m_tuningWidget)
82 
83  m_tuningWidget = tuningWidget;
84  if (!m_tuningWidget)
85  return;
86 
88  &FitParameterWidget::onTuningWidgetContextMenu, Qt::UniqueConnection);
89  connect(m_tuningWidget, &QObject::destroyed, [this] { m_tuningWidget = nullptr; });
90  }
91 }
void onTuningWidgetContextMenu(const QPoint &point)
Creates context menu for ParameterTuningWidget.
void itemContextMenuRequest(const QPoint &point)

References ParameterTuningWidget::itemContextMenuRequest(), m_tuningWidget, and onTuningWidgetContextMenu().

Referenced by FitSessionWidget::setModelTuningWidget().

Here is the call graph for this function:

◆ showEvent()

void SessionItemWidget::showEvent ( QShowEvent *  )
protectedvirtualinherited

Definition at line 51 of file SessionItemWidget.cpp.

52 {
54 }

References SessionItemWidget::m_itemController, and SessionItemController::subscribe().

Here is the call graph for this function:

◆ spanParameters()

void FitParameterWidget::spanParameters ( )
private

Makes first column in FitParameterItem's tree related to ParameterItem link occupy whole space.

Definition at line 394 of file FitParameterWidget.cpp.

395 {
396  m_treeView->expandAll();
397  for (int i = 0; i < m_fitParameterModel->rowCount(QModelIndex()); i++) {
398  QModelIndex parameter = m_fitParameterModel->index(i, 0, QModelIndex());
399  if (!parameter.isValid())
400  break;
401  int childRowCount = m_fitParameterModel->rowCount(parameter);
402  if (childRowCount > 0) {
403  for (int j = 0; j < childRowCount; j++) {
404  m_treeView->setFirstColumnSpanned(j, parameter, true);
405  }
406  }
407  }
408 }
QModelIndex index(int row, int column, const QModelIndex &parent) const Q_DECL_OVERRIDE
int rowCount(const QModelIndex &parent) const Q_DECL_OVERRIDE

References FitParameterProxyModel::index(), m_fitParameterModel, m_treeView, and FitParameterProxyModel::rowCount().

Referenced by onFitParameterModelChange().

Here is the call graph for this function:

◆ subscribeToItem()

void FitParameterWidget::subscribeToItem ( )
protectedvirtual

Reimplemented from SessionItemWidget.

Definition at line 219 of file FitParameterWidget.cpp.

220 {
221  init_fit_model();
222 }
void init_fit_model()
Initializes FitParameterModel and its tree.

References init_fit_model().

Here is the call graph for this function:

◆ unsubscribeFromItem()

◆ updateInfoLabel()

void FitParameterWidget::updateInfoLabel ( )
private

Places overlay label on top of tree view, if there is no fit parameters.

Definition at line 411 of file FitParameterWidget.cpp.

412 {
413  if (!jobItem())
414  return;
415 
416  bool is_to_show_label = jobItem()->fitParameterContainerItem()->isEmpty();
417  m_infoLabel->setShown(is_to_show_label);
418 }
void setShown(bool shown)
Shows/removes a label from the controlled widget.

References JobItem::fitParameterContainerItem(), FitParameterContainerItem::isEmpty(), jobItem(), m_infoLabel, and OverlayLabelController::setShown().

Referenced by onFitParameterModelChange().

Here is the call graph for this function:

Member Data Documentation

◆ m_createFitParAction

QAction* FitParameterWidget::m_createFitParAction
private

◆ m_delegate

SessionModelDelegate* FitParameterWidget::m_delegate
private

Definition at line 93 of file FitParameterWidget.h.

Referenced by FitParameterWidget().

◆ m_fitParameterModel

FitParameterProxyModel* FitParameterWidget::m_fitParameterModel
private

◆ m_infoLabel

OverlayLabelController* FitParameterWidget::m_infoLabel
private

Definition at line 95 of file FitParameterWidget.h.

Referenced by FitParameterWidget(), and updateInfoLabel().

◆ m_itemController

◆ m_keyboardFilter

DeleteEventFilter* FitParameterWidget::m_keyboardFilter
private

Definition at line 94 of file FitParameterWidget.h.

Referenced by FitParameterWidget(), and init_actions().

◆ m_removeFitParAction

QAction* FitParameterWidget::m_removeFitParAction
private

◆ m_removeFromFitParAction

QAction* FitParameterWidget::m_removeFromFitParAction
private

◆ m_treeView

◆ m_tuningWidget


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