BornAgain  1.19.0
Simulate and fit neutron and x-ray scattering at grazing incidence
SampleToolBar.cpp
Go to the documentation of this file.
1 // ************************************************************************************************
2 //
3 // BornAgain: simulate and fit reflection and scattering
4 //
5 //! @file GUI/coregui/Views/SampleDesigner/SampleToolBar.cpp
6 //! @brief Implements class SampleToolBar
7 //!
8 //! @homepage http://www.bornagainproject.org
9 //! @license GNU General Public License v3 or higher (see COPYING)
10 //! @copyright Forschungszentrum Jülich GmbH 2018
11 //! @authors Scientific Computing Group at MLZ (see CITATION, AUTHORS)
12 //
13 // ************************************************************************************************
14 
19 #include <QAction>
20 #include <QButtonGroup>
21 #include <QComboBox>
22 #include <QIcon>
23 #include <QLabel>
24 #include <QMenu>
25 #include <QPushButton>
26 #include <QToolButton>
27 
28 //! main tool bar on top of SampleView window
29 SampleToolBar::SampleToolBar(SampleView* parent) : StyledToolBar(parent), m_sampleView(parent)
30 {
31  // Select & Pan
32  auto selectionPointerButton = new QToolButton;
33  selectionPointerButton->setCheckable(true);
34  selectionPointerButton->setChecked(true);
35  selectionPointerButton->setIcon(QIcon(":/SampleDesigner/images/arrow-top-left.svg"));
36  selectionPointerButton->setToolTip("Edit mode.");
37 
38  auto handPointerButton = new QToolButton;
39  handPointerButton->setCheckable(true);
40  handPointerButton->setIcon(QIcon(":/SampleDesigner/images/hand-right.svg"));
41  handPointerButton->setToolTip("Pan mode (space).");
42 
43  m_pointerModeGroup = new QButtonGroup(this);
44  m_pointerModeGroup->addButton(selectionPointerButton, DesignerView::RUBBER_SELECTION);
45  m_pointerModeGroup->addButton(handPointerButton, DesignerView::HAND_DRAG);
46 #if QT_VERSION >= QT_VERSION_CHECK(5, 15, 0)
47  connect(m_pointerModeGroup, &QButtonGroup::idClicked, this, &SampleToolBar::selectionMode);
48 #else
49  connect(m_pointerModeGroup,
50  static_cast<void (QButtonGroup::*)(int)>(&QButtonGroup::buttonClicked), this,
52 #endif
53  addWidget(selectionPointerButton);
54  addWidget(handPointerButton);
55 
57 
58  // Remove item
59  m_removeButton = new QToolButton;
60  m_removeButton->setText("Remove item");
61  m_removeButton->setIcon(QIcon(":/SampleDesigner/images/delete.svg"));
62  m_removeButton->setToolButtonStyle(Qt::ToolButtonTextBesideIcon);
63  m_removeButton->setToolTip("Remove selected items and they child items (del).");
64  connect(m_removeButton, &QToolButton::clicked, this, &SampleToolBar::deleteItems);
65  addWidget(m_removeButton);
66 
68 
69  // Center view
70  m_centerViewButton = new QToolButton;
71  m_centerViewButton->setText("Center view");
72  m_centerViewButton->setToolButtonStyle(Qt::ToolButtonTextBesideIcon);
73  m_centerViewButton->setIcon(QIcon(":/SampleDesigner/images/camera-metering-center.svg"));
74  m_centerViewButton->setToolTip("Center view.");
75  connect(m_centerViewButton, &QToolButton::clicked, this, &SampleToolBar::centerView);
76  addWidget(m_centerViewButton);
77 
78  // Zoom
79  addWidget(new QLabel(" "));
80  m_scaleCombo = new QComboBox;
81  QStringList scales = QStringList() << "25%"
82  << "50%"
83  << "75%"
84  << "100%"
85  << "125%"
86  << "150%";
87  m_scaleCombo->addItems(scales);
88  m_scaleCombo->setCurrentIndex(3);
89 #if QT_VERSION >= QT_VERSION_CHECK(5, 13, 0)
90  connect(m_scaleCombo,
91  static_cast<void (QComboBox::*)(const QString&)>(&QComboBox::currentTextChanged), this,
93 #else
94  connect(m_scaleCombo,
95  static_cast<void (QComboBox::*)(const QString&)>(&QComboBox::currentIndexChanged), this,
97 #endif
98 
99  addWidget(m_scaleCombo);
100  addWidget(new QLabel(" Zoom "));
101 
102  // MaterialEditor
103  addWidget(new QLabel(" "));
104  m_materialEditorButton = new QToolButton;
105  m_materialEditorButton->setText("Material Editor");
106  m_materialEditorButton->setIcon(QIcon(":/SampleDesigner/images/alpha-m-box.svg"));
107  m_materialEditorButton->setToolButtonStyle(Qt::ToolButtonTextBesideIcon);
108  m_materialEditorButton->setToolTip("Open material editor (m).");
109  m_materialEditorButton->setShortcut(Qt::Key_M);
110  connect(m_materialEditorButton, &QToolButton::clicked, this,
112  addWidget(m_materialEditorButton);
113 
115 
116  // RealSpace 3D Viewer
117  addWidget(new QLabel(" "));
118  addWidget(new QLabel(" "));
119  m_RealSpaceViewerButton = new QToolButton;
120  m_RealSpaceViewerButton->setIcon(QIcon(":/SampleDesigner/images/rotate-3d.svg"));
121  m_RealSpaceViewerButton->setText("3D Viewer");
122  m_RealSpaceViewerButton->setToolButtonStyle(Qt::ToolButtonTextBesideIcon);
123  m_RealSpaceViewerButton->setToolTip("Open real space 3D viewer.");
124  connect(m_RealSpaceViewerButton, &QToolButton::clicked, m_sampleView,
126  addWidget(m_RealSpaceViewerButton);
127 }
128 
130 {
132  m_pointerModeGroup->button(mode)->setChecked(true);
133 }
134 
135 void SampleToolBar::onScaleComboChanged(const QString& scale_string)
136 {
137  double scale = scale_string.left(scale_string.indexOf("%")).toDouble() / 100.0;
138  emit changeScale(scale);
139 }
140 
142 {
144 }
Defines class DesignerView.
Defines class MaterialItemUtils.
Defines class SampleToolBar.
Defines class SampleView.
The ExternalProperty class defines custom QVariant property to carry the text, color and an identifie...
void deleteItems()
void selectionMode(int)
void onViewSelectionMode(int)
QButtonGroup * m_pointerModeGroup
Definition: SampleToolBar.h:51
QToolButton * m_centerViewButton
Definition: SampleToolBar.h:53
QToolButton * m_removeButton
Definition: SampleToolBar.h:52
SampleToolBar(SampleView *parent)
main tool bar on top of SampleView window
void onMaterialEditorCall()
QToolButton * m_materialEditorButton
Definition: SampleToolBar.h:55
void onScaleComboChanged(const QString &)
QComboBox * m_scaleCombo
Definition: SampleToolBar.h:54
SampleView * m_sampleView
Definition: SampleToolBar.h:57
void centerView()
QToolButton * m_RealSpaceViewerButton
Definition: SampleToolBar.h:56
void changeScale(double)
void toggleRealSpaceView()
Definition: SampleView.cpp:46
The StyledToolBar class represents our standard narrow toolbar with the height 24 pixels.
Definition: StyledToolBar.h:22
void addStyledSeparator()
ExternalProperty selectMaterialProperty(const ExternalProperty &previous=ExternalProperty())
Calls material selector dialog.