24 #include <QItemSelectionModel>
26 #include <QModelIndex>
31 , m_addInstrumentMenu(nullptr)
32 , m_removeInstrumentAction(nullptr)
33 , m_cloneInstrumentAction(nullptr)
35 , m_selectionModel(nullptr)
40 new QAction(QIcon(
":/images/delete.svg"),
"Remove this instrument",
this);
43 new QAction(QIcon(
":/images/content-copy.svg"),
"Clone this instrument",
this);
79 if (currentIndex.isValid())
91 if (currentIndex.isValid()) {
96 const QString idBackup = clone->id();
97 for (
auto child : item->
children()) {
101 clone->setId(idBackup);
102 clone->setItemName(nameOfClone);
106 auto axis_group = instrument->beamItem()->inclinationAxisGroup();
110 if (!donor_axis->containsNonXMLData())
116 ->inclinationAxisGroup()
117 ->getItemOfType(
"PointwiseAxis"));
118 acceptor_axis->
init(*donor_axis->axis(), donor_axis->getUnitsLabel());
124 const QModelIndex& indexAtPoint)
147 QModelIndex itemIndex =
157 int ncopies = map_of_names[currentName];
159 map_of_names[currentName] = 1;
162 map_of_names[currentName]++;
163 return QString(
"%1 (%2)").arg(currentName).arg(map_of_names[currentName]);
169 QMap<QString, int> result;
173 QRegExp regexp(
"\\((.*)\\)");
174 if (regexp.indexIn(
name) >= 0)
175 ncopy = regexp.cap(1).toInt();
176 name.replace(regexp.cap(0),
"");
178 result[
name] = ncopy;
192 const auto addAction = [
this](
const QString& menuEntry,
const QString& tooltip,
195 action->setToolTip(tooltip);
197 connect(action, &QAction::triggered, [=]() {
207 addAction(
"GISAS",
"Add GISAS instrument with default settings",
210 addAction(
"OffSpecular",
"Add OffSpecular instrument with default settings",
213 addAction(
"Specular",
"Add Specular instrument with default settings",
216 addAction(
"DepthProbe",
"Add DepthProbe instrument with default settings",
Defines DepthProbeInstrumentItem class.
Defines InstrumentItems classes.
Defines class InstrumentViewActions.
Defines ModelUtils namespace.
Defines pointwise axis item.
Defines class SessionModel.
virtual QString defaultName() const =0
The default user visible name when creating an instrument.
void setAllActionsEnabled(bool value)
void onRemoveInstrument()
Removes currently selected instrument.
void onContextMenuRequest(const QPoint &point, const QModelIndex &indexAtPoint)
void onCloneInstrument()
Clones currently selected instrument.
void setModel(SessionModel *model)
void setSelectionModel(QItemSelectionModel *selectionModel)
QMenu * m_addInstrumentMenu
QMap< QString, int > mapOfNames()
void initAddInstrumentMenu()
Constructs menu to add instruments of various types.
QAction * m_cloneInstrumentAction
QAction * m_removeInstrumentAction
InstrumentViewActions(QWidget *parent=nullptr)
QItemSelectionModel * m_selectionModel
QMenu * instrumentMenu()
Returns menu to create one of available instrument types.
QString suggestInstrumentName(const QString ¤tName)
Item for non-uniform axis with specified coordinates.
void init(const IAxis &axis, const QString &units_label)
QString itemName() const
Get item name, return display name if no name is set.
void setItemName(const QString &name)
Set item name, add property if necessary.
QVector< SessionItem * > children() const
Returns vector of all children.
QString modelType() const
Get model type.
QString tagFromItem(const SessionItem *item) const
Returns the tag name of given item when existing.
T * copyItem(const T *item_to_copy, SessionItem *new_parent=0, const QString &tag="")
SessionItem * itemForIndex(const QModelIndex &index) const
T * insertItem(SessionItem *parent=nullptr, int row=-1, QString tag="")
virtual QModelIndex index(int row, int column, const QModelIndex &parent) const
virtual int rowCount(const QModelIndex &parent) const
virtual bool removeRows(int row, int count, const QModelIndex &parent)
SessionItem * insertNewItem(QString model_type, SessionItem *parent_item=nullptr, int row=-1, QString tag="")
QStringList topItemNames(SessionModel *model, const QString &modelType="")
Returns list of top iten manes.
QString const & name(EShape k)