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

Toolbar for MaterialEditor. More...

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

Public Slots

void onCustomContextMenuRequested (const QPoint &point)
 

Public Member Functions

 MaterialEditorToolBar (MaterialModel *materialModel, QWidget *parent=nullptr)
 
void setSelectionModel (QItemSelectionModel *selectionModel)
 

Private Slots

void onCloneMaterialAction ()
 
void onNewMaterialAction ()
 
void onRemoveMaterialAction ()
 

Private Member Functions

void initItemContextMenu (QMenu &menu)
 

Private Attributes

QAction * m_cloneMaterialAction
 
MaterialModelm_materialModel
 
QAction * m_newMaterialAction
 
QAction * m_removeMaterialAction
 
QItemSelectionModel * m_selectionModel
 

Detailed Description

Toolbar for MaterialEditor.

Definition at line 28 of file MaterialEditorToolBar.h.

Constructor & Destructor Documentation

◆ MaterialEditorToolBar()

MaterialEditorToolBar::MaterialEditorToolBar ( MaterialModel materialModel,
QWidget *  parent = nullptr 
)

Definition at line 28 of file MaterialEditorToolBar.cpp.

29  : QToolBar(parent)
30  , m_materialModel(materialModel)
31  , m_selectionModel(nullptr)
32  , m_newMaterialAction(nullptr)
33  , m_cloneMaterialAction(nullptr)
34  , m_removeMaterialAction(nullptr)
35 {
36  setIconSize(QSize(toolbar_icon_size, toolbar_icon_size));
37  setToolButtonStyle(Qt::ToolButtonTextBesideIcon);
38 
39  m_newMaterialAction = new QAction("Add", parent);
40  m_newMaterialAction->setIcon(QIcon(":/images/shape-square-plus.svg"));
41  m_newMaterialAction->setToolTip("Add new material");
42  connect(m_newMaterialAction, &QAction::triggered, this,
44  addAction(m_newMaterialAction);
45 
46  m_cloneMaterialAction = new QAction("Clone", parent);
47  m_cloneMaterialAction->setIcon(QIcon(":/images/content-copy.svg"));
48  m_cloneMaterialAction->setToolTip("Clone selected material");
49  connect(m_cloneMaterialAction, &QAction::triggered, this,
51  addAction(m_cloneMaterialAction);
52 
53  m_removeMaterialAction = new QAction("Remove", parent);
54  m_removeMaterialAction->setIcon(QIcon(":/images/delete.svg"));
55  m_removeMaterialAction->setToolTip("Remove selected material");
56  connect(m_removeMaterialAction, &QAction::triggered, this,
58  addAction(m_removeMaterialAction);
59 }
QItemSelectionModel * m_selectionModel
MaterialModel * m_materialModel
const int toolbar_icon_size

References m_cloneMaterialAction, m_newMaterialAction, m_removeMaterialAction, onCloneMaterialAction(), onNewMaterialAction(), onRemoveMaterialAction(), and Constants::toolbar_icon_size.

Here is the call graph for this function:

Member Function Documentation

◆ initItemContextMenu()

void MaterialEditorToolBar::initItemContextMenu ( QMenu &  menu)
private

Definition at line 99 of file MaterialEditorToolBar.cpp.

100 {
101  menu.addAction(m_newMaterialAction);
102  menu.addAction(m_cloneMaterialAction);
103  menu.addSeparator();
104  menu.addAction(m_removeMaterialAction);
105 }

References m_cloneMaterialAction, m_newMaterialAction, and m_removeMaterialAction.

Referenced by onCustomContextMenuRequested().

◆ onCloneMaterialAction

void MaterialEditorToolBar::onCloneMaterialAction ( )
privateslot

Definition at line 80 of file MaterialEditorToolBar.cpp.

81 {
82  auto selected = m_selectionModel->currentIndex();
83 
84  if (selected.isValid())
85  m_materialModel->cloneMaterial(selected);
86 }
MaterialItem * cloneMaterial(const QModelIndex &index)
Returns clone of material with given index. Clone will get unique identifier.

References MaterialModel::cloneMaterial(), m_materialModel, and m_selectionModel.

Referenced by MaterialEditorToolBar().

Here is the call graph for this function:

◆ onCustomContextMenuRequested

void MaterialEditorToolBar::onCustomContextMenuRequested ( const QPoint &  point)
slot

Definition at line 66 of file MaterialEditorToolBar.cpp.

67 {
68  QListView* listView = qobject_cast<QListView*>(sender());
69  ASSERT(listView);
70  QMenu menu;
71  initItemContextMenu(menu);
72  menu.exec(listView->mapToGlobal(point));
73 }
#define ASSERT(condition)
Definition: Assert.h:31
void initItemContextMenu(QMenu &menu)

References ASSERT, and initItemContextMenu().

Referenced by MaterialEditor::init_views().

Here is the call graph for this function:

◆ onNewMaterialAction

void MaterialEditorToolBar::onNewMaterialAction ( )
privateslot

Definition at line 75 of file MaterialEditorToolBar.cpp.

76 {
77  m_materialModel->addRefractiveMaterial("unnamed", 0.0, 0.0); // vacuum
78 }
MaterialItem * addRefractiveMaterial(const QString &name, double delta, double beta)

References MaterialModel::addRefractiveMaterial(), and m_materialModel.

Referenced by MaterialEditorToolBar().

Here is the call graph for this function:

◆ onRemoveMaterialAction

void MaterialEditorToolBar::onRemoveMaterialAction ( )
privateslot

Definition at line 88 of file MaterialEditorToolBar.cpp.

89 {
92 
93  auto selected = m_selectionModel->currentIndex();
94 
95  if (selected.isValid())
96  m_materialModel->removeRows(selected.row(), 1, selected.parent());
97 }
virtual bool removeRows(int row, int count, const QModelIndex &parent)

References ASSERT, m_materialModel, m_selectionModel, and SessionModel::removeRows().

Referenced by MaterialEditorToolBar().

Here is the call graph for this function:

◆ setSelectionModel()

void MaterialEditorToolBar::setSelectionModel ( QItemSelectionModel *  selectionModel)

Definition at line 61 of file MaterialEditorToolBar.cpp.

62 {
63  m_selectionModel = selectionModel;
64 }

References m_selectionModel.

Referenced by MaterialEditor::init_views().

Member Data Documentation

◆ m_cloneMaterialAction

QAction* MaterialEditorToolBar::m_cloneMaterialAction
private

Definition at line 49 of file MaterialEditorToolBar.h.

Referenced by MaterialEditorToolBar(), and initItemContextMenu().

◆ m_materialModel

MaterialModel* MaterialEditorToolBar::m_materialModel
private

◆ m_newMaterialAction

QAction* MaterialEditorToolBar::m_newMaterialAction
private

Definition at line 48 of file MaterialEditorToolBar.h.

Referenced by MaterialEditorToolBar(), and initItemContextMenu().

◆ m_removeMaterialAction

QAction* MaterialEditorToolBar::m_removeMaterialAction
private

Definition at line 50 of file MaterialEditorToolBar.h.

Referenced by MaterialEditorToolBar(), and initItemContextMenu().

◆ m_selectionModel

QItemSelectionModel* MaterialEditorToolBar::m_selectionModel
private

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