BornAgain  1.19.0
Simulate and fit neutron and x-ray scattering at grazing incidence
MaskEditor.cpp
Go to the documentation of this file.
1 // ************************************************************************************************
2 //
3 // BornAgain: simulate and fit reflection and scattering
4 //
5 //! @file GUI/coregui/Views/MaskWidgets/MaskEditor.cpp
6 //! @brief Implements class MaskEditor
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 
22 #include <QBoxLayout>
23 #include <QContextMenuEvent>
24 #include <QSplitter>
25 
26 MaskEditor::MaskEditor(QWidget* parent)
27  : QMainWindow(parent)
28  , m_editorActions(new MaskEditorActions(this))
29  , m_toolBar(new MaskEditorToolBar(m_editorActions))
30  , m_editorPropertyPanel(new MaskEditorPropertyPanel)
31  , m_editorCanvas(new MaskEditorCanvas)
32 {
33  setObjectName("MaskEditor");
34  setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding);
35 
36  auto splitter = new QSplitter;
37  splitter->addWidget(m_editorCanvas);
38  splitter->addWidget(m_editorPropertyPanel);
39  splitter->setCollapsible(1, true);
40 
41  addToolBar(Qt::RightToolBarArea, m_toolBar);
42 
43  setCentralWidget(splitter);
44 
46 
48 }
49 
50 void MaskEditor::setMaskContext(SessionModel* model, const QModelIndex& maskContainerIndex,
51  IntensityDataItem* intensityItem)
52 {
53  m_editorPropertyPanel->setMaskContext(model, maskContainerIndex, intensityItem);
54 
55  ASSERT(intensityItem);
56  ASSERT(maskContainerIndex.isValid());
57  ASSERT(model->itemForIndex(maskContainerIndex)->modelType() == "MaskContainer");
58 
60  m_editorCanvas->setMaskContext(model, maskContainerIndex, intensityItem);
61 
62  m_editorActions->setModel(model, maskContainerIndex);
64 }
65 
67 {
70 }
71 
72 //! shows/hides right panel with properties
74 {
76 }
77 
78 //! Context menu reimplemented to supress default menu
79 void MaskEditor::contextMenuEvent(QContextMenuEvent* event)
80 {
81  Q_UNUSED(event);
82 }
83 
84 //! Returns list of actions intended for styled toolbar (on the top).
85 
87 {
89 }
90 
92 {
93  // reset view request is propagated from editorActions to graphics view
96 
97  // tool panel request is propagated from editorActions to this MaskEditor
100 
101  // save plot request is propagated from editorActions to graphics scene
104 
105  // selection/drawing activity is propagated from ToolBar to graphics scene
108 
109  // mask value is propagated from ToolBar to graphics scene
112 
113  // show results request is propagated from ToolBar to Canvas
116 
117  // space bar push (request for zoom mode) is propagated from graphics view to ToolBar
120 
121  // Delete request is propagated from canvas to actions
124 
125  // context menu request is propagated from graphics scene to MaskEditorActions
128 
129  // context menu request is propagated from PropertyPanel to MaskEditorActions
132 }
#define ASSERT(condition)
Definition: Assert.h:31
Defines class MaskEditorActions.
Defines class MaskEditorCanvas.
Defines class MaskEditorPropertyPanel.
Defines class MaskEditorToolBar.
Defines class MaskEditor.
Defines class MaskGraphicsScene.
Defines class SessionModel.
Defines actions for MaskEditor which are related to selected MaskItem (toggle mask value,...
void propertyPanelRequest()
QList< QAction * > topToolBarActions()
void onItemContextMenuRequest(const QPoint &point)
Constructs MaskItem context menu following the request from MaskGraphicsScene or MaskEditorInfoPanel.
void setModel(SessionModel *maskModel, const QModelIndex &rootIndex)
void setSelectionModel(QItemSelectionModel *selectionModel)
Painting widget for MaskEditor, contains graphics scene and graphics view.
void deleteSelectedRequest()
void onSavePlotRequest()
Saves plot into project directory.
void changeActivityRequest(MaskEditorFlags::Activity)
MaskGraphicsScene * getScene()
void onPresentationTypeRequest(MaskEditorFlags::PresentationType presentationType)
void setSelectionModel(QItemSelectionModel *model)
void setMaskContext(SessionModel *model, const QModelIndex &maskContainerIndex, IntensityDataItem *intensityItem)
Tool widget for MaskEditor.
void setPanelHidden(bool value)
Show/Hide panel. When panel is hidden, all property editors are disabled.
void itemContextMenuRequest(const QPoint &point)
void setMaskContext(SessionModel *model, const QModelIndex &maskContainerIndex, IntensityDataItem *intensityItem)
QItemSelectionModel * selectionModel()
Main class to draw masks on top of intensity data map.
void presentationTypeRequest(MaskEditorFlags::PresentationType)
void activityModeChanged(MaskEditorFlags::Activity)
void maskValueChanged(MaskEditorFlags::MaskValue)
void onChangeActivityRequest(MaskEditorFlags::Activity value)
Handles ZOOM requests from MaskGraphicsView while user press and holds space bar.
QList< QAction * > topToolBarActions()
Returns list of actions intended for styled toolbar (on the top).
Definition: MaskEditor.cpp:86
MaskEditorCanvas * m_editorCanvas
Definition: MaskEditor.h:59
void resetContext()
Definition: MaskEditor.cpp:66
void onPropertyPanelRequest()
shows/hides right panel with properties
Definition: MaskEditor.cpp:73
void contextMenuEvent(QContextMenuEvent *event)
Context menu reimplemented to supress default menu.
Definition: MaskEditor.cpp:79
MaskEditor(QWidget *parent=nullptr)
Definition: MaskEditor.cpp:26
MaskEditorToolBar * m_toolBar
Definition: MaskEditor.h:57
void setup_connections()
Definition: MaskEditor.cpp:91
MaskEditorActions * m_editorActions
Definition: MaskEditor.h:56
void setMaskContext(SessionModel *model, const QModelIndex &maskContainerIndex, IntensityDataItem *intensityItem)
Main method to setup context for mask editing.
Definition: MaskEditor.cpp:50
MaskEditorPropertyPanel * m_editorPropertyPanel
Definition: MaskEditor.h:58
void onMaskValueChanged(MaskEditorFlags::MaskValue value)
void itemContextMenuRequest(const QPoint &point)
void onActivityModeChanged(MaskEditorFlags::Activity value)
QString modelType() const
Get model type.
SessionItem * itemForIndex(const QModelIndex &index) const