32 #include <QVBoxLayout>
36 , m_treeView(new QTreeView)
38 , m_createFitParAction(0)
39 , m_removeFromFitParAction(0)
40 , m_removeFitParAction(0)
41 , m_fitParameterModel(0)
46 QVBoxLayout* layout =
new QVBoxLayout;
49 layout->setSpacing(0);
53 m_treeView->setSelectionMode(QAbstractItemView::ExtendedSelection);
54 m_treeView->setSelectionBehavior(QAbstractItemView::SelectRows);
55 m_treeView->setContextMenuPolicy(Qt::CustomContextMenu);
58 m_treeView->setDragDropMode(QAbstractItemView::DragDrop);
61 m_treeView->setStyleSheet(
"alternate-background-color: #EFF0F1;");
63 connect(
m_treeView, &QTreeView::customContextMenuRequested,
this,
119 menu.exec(
m_treeView->mapToGlobal(point + QPoint(2, 22)));
132 if (selection.indexes().isEmpty())
135 for (
auto index : selection.indexes()) {
180 for (
auto item : linksToRemove) {
181 container->
model()->removeRow(item->index().row(), item->index().parent());
189 for (
auto item : itemsToRemove) {
190 container->
model()->removeRow(item->index().row(), item->index().parent());
198 QStringList fitParNames =
202 fitParNames.at(ipar));
246 if (
jobItem()->getStatus() ==
"Fitting") {
255 QMenu* addToFitParMenu = menu.addMenu(
"Add to existing fit parameter");
256 addToFitParMenu->setEnabled(
true);
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 =
263 addToFitParMenu->setEnabled(
false);
265 for (
int i = 0; i < fitParNames.count(); ++i) {
267 new QAction(QString(
"to ").append(fitParNames.at(i)), addToFitParMenu);
269 addToFitParMenu->addAction(action);
280 if (
jobItem()->getStatus() ==
"Fitting") {
295 jobItem()->fitParameterContainerItem(),
jobItem()->fitParameterContainerItem()->model());
313 for (
auto item : selected) {
327 for (
auto item : selected) {
347 QVector<FitParameterItem*> result;
348 QModelIndexList indexes =
m_treeView->selectionModel()->selectedIndexes();
349 for (
auto index : indexes) {
351 if (item->modelType() ==
"FitParameter") {
354 result.push_back(fitParItem);
365 QVector<FitParameterItem*> result;
366 for (
auto fitParItem :
jobItem()->fitParameterContainerItem()->fitParameterItems())
368 result.push_back(fitParItem);
377 QVector<FitParameterLinkItem*> result;
378 QModelIndexList indexes =
m_treeView->selectionModel()->selectedIndexes();
379 for (QModelIndex index : indexes) {
381 if (item->parent()->modelType() ==
"FitParameterLink") {
385 result.push_back(fitParItem);
399 if (!parameter.isValid())
402 if (childRowCount > 0) {
403 for (
int j = 0; j < childRowCount; j++) {
404 m_treeView->setFirstColumnSpanned(j, parameter,
true);
436 connect(
m_treeView->selectionModel(), &QItemSelectionModel::selectionChanged,
this,
439 disconnect(
m_treeView->selectionModel(), &QItemSelectionModel::selectionChanged,
this,
#define ASSERT(condition)
Defines classes releted to event filtering.
Defines class FilterPropertyProxy.
Defines class FitParameterHelper.
Defines FitParameterItems family of classes.
Defines class FitParameterProxyModel.
Defines class FitSuiteItem.
Defines class OverlayLabelController.
Defines classes for ParameterTreeItems.
Defines class SessionModelDelegate.
Lisens for press-del-key events.
static void createFitParameter(FitParameterContainerItem *container, ParameterItem *parameterItem)
Creates fit parameter from given ParameterItem, sets starting value to the value of ParameterItem,...
static ParameterItem * getParameterItem(FitParameterContainerItem *container, const QString &link)
Returns ParameterItem corresponding to given link.
static QStringList getFitParameterNames(FitParameterContainerItem *container)
Returns list of fit parameter display names.
static FitParameterItem * getFitParameterItem(FitParameterContainerItem *container, ParameterItem *parameterItem)
Returns fFitParameterItem corresponding to given ParameterItem.
static void removeFromFitParameters(FitParameterContainerItem *container, ParameterItem *parameterItem)
Removes link to given parameterItem from fit parameters.
static void addToFitParameter(FitParameterContainerItem *container, ParameterItem *parameterItem, const QString &fitParName)
Adds given parameterItem to the existing fit parameter with display name fitParName.
The FitParameterItem class represents a fit parameter in GUI.
static const QString T_LINK
FitParameterItems is a collection of items to define fit parameters in GUI.
static const QString P_LINK
The FitParameterProxyModel adapts the original JobModel to show items from FitParameterContainer in 5...
QModelIndex index(int row, int column, const QModelIndex &parent) const Q_DECL_OVERRIDE
SessionItem * itemForIndex(const QModelIndex &index) const
int rowCount(const QModelIndex &parent) const Q_DECL_OVERRIDE
FitParameterContainerItem * fitParameterContainerItem()
The OverlayLabelController class controlls appearance of InfoLabelWidget (position,...
void setArea(QAbstractScrollArea *area)
void setText(const QString &text)
void setShown(bool shown)
Shows/removes a label from the controlled widget.
QVariant getItemValue(const QString &tag) const
Directly access value of item under given tag.
SessionItem * parent() const
Returns parent of this item.
SessionModel * model() const
Returns model of this item.
QString modelType() const
Get model type.
The SessionModelDelegate class presents the content of SessionModel items in standard QTreeView.
Defines namespace Constants.