BornAgain  1.19.0
Simulate and fit neutron and x-ray scattering at grazing incidence
SampleView.cpp
Go to the documentation of this file.
1 // ************************************************************************************************
2 //
3 // BornAgain: simulate and fit reflection and scattering
4 //
5 //! @file GUI/coregui/Views/SampleView.cpp
6 //! @brief Implements class SampleView
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 
16 #include "Base/Utils/Assert.h"
28 #include <QDockWidget>
29 #include <QMenu>
30 #include <memory>
31 
33  : QMainWindow(mainWindow), m_docks(new DocksController(this))
34 {
35 
36  setObjectName("SampleView");
39 }
40 
42 {
43  return MainWindow::instance()->models();
44 }
45 
47 {
49 }
50 
51 void SampleView::fillViewMenu(QMenu* menu)
52 {
54 
55  menu->addSeparator();
56 
57  QAction* action = new QAction(menu);
58  action->setText("Reset to default layout");
59  connect(action, &QAction::triggered, this, &SampleView::resetLayout);
60  menu->addAction(action);
61 }
62 
64 {
65  m_sampleDesigner = new SampleDesigner(this);
67  m_treeWidget = new SampleTreeWidget(this, models()->sampleModel());
68  m_propertyWidget = new SamplePropertyWidget(m_treeWidget->treeView()->selectionModel(), this);
69  m_scriptPanel = new ScriptPanel(this);
70  m_realSpacePanel = new RealSpacePanel(models()->sampleModel(),
71  m_treeWidget->treeView()->selectionModel(), this);
72 
73  m_docks->addWidget(WIDGET_BOX, m_widgetBox, Qt::LeftDockWidgetArea);
74  m_docks->addWidget(SAMPLE_TREE, m_treeWidget, Qt::RightDockWidgetArea);
75  m_docks->addWidget(PROPERTY_EDITOR, m_propertyWidget, Qt::RightDockWidgetArea);
76  m_docks->addWidget(INFO, m_scriptPanel, Qt::BottomDockWidgetArea);
77  m_docks->addWidget(REALSPACEPANEL, m_realSpacePanel, Qt::BottomDockWidgetArea);
78 
81 
82  m_scriptPanel->setSampleModel(models()->sampleModel());
83  m_scriptPanel->setInstrumentModel(models()->instrumentModel());
84 
87  m_treeWidget->treeView()->selectionModel(),
88  dynamic_cast<FilterPropertyProxy*>(
89  const_cast<QAbstractItemModel*>(m_treeWidget->treeView()->model())));
90 
91  setCentralWidget(m_sampleDesigner->getCentralWidget());
92  resetLayout();
93 }
94 
96 {
97  // toolBar should be initialized after MaterialBrowser
98  m_toolBar = new SampleToolBar(this);
111 
112  addToolBar(m_toolBar);
113 }
114 
116 {
117  m_docks->resetLayout();
118  tabifyDockWidget(m_docks->findDock(REALSPACEPANEL), m_docks->findDock(INFO));
119  m_docks->findDock(REALSPACEPANEL)->raise(); // makes first tab active
120 
121  m_docks->findDock(REALSPACEPANEL)->hide();
122  m_docks->findDock(INFO)->hide();
123 }
Defines class holding all application models.
Defines the macro ASSERT.
Defines class DocksController.
Defines class FilterPropertyProxy.
Defines class MainWindow.
Defines class RealSpacePanel.
Defines class SampleDesigner.
Defines class SamplePropertyWidget.
Defines class SampleToolBar.
Defines class SampleTreeWidget.
Defines class SampleView.
Defines class SampleWidgetBox.
Defines class SampleDesigner.
void selectionModeChangeRequest(int)
void deleteSelectedItems()
void onChangeScale(double)
void onSelectionMode(int)
void selectionModeChanged(int)
void onCenterView()
Handles creation and appearance of docked widgets in the context of QMainWindow.
void setDockHeightForWidget(int height)
A hack to request update of QDockWidget size if its child (e.g.
void addDockActionsToMenu(QMenu *menu)
void addWidget(int id, QWidget *widget, Qt::DockWidgetArea area)
QDockWidget * findDock(int id)
void toggleDock(int id)
The FilterPropertyProxy class filters out all PropertyItem's and similar from SessionModel to have on...
void widgetHeightRequest(int)
static MainWindow * instance()
Returns the one and only instance of this class.
Definition: mainwindow.cpp:129
ApplicationModels * models()
Definition: mainwindow.cpp:159
Panel with item selector, property editor on the right side of RealSpaceWidget.
sample designer provide central window with graphic scene to drag and drop
DesignerScene * getScene() const
void setModels(ApplicationModels *models)
QWidget * getCentralWidget()
DesignerView * getView() const
void setSelectionModel(QItemSelectionModel *model, FilterPropertyProxy *proxy)
Property editor to modify property of the object currently selected on the graphics scene.
The SampleToolBar class represents a main toolbar on top of SampleView window.
Definition: SampleToolBar.h:32
void deleteItems()
void selectionMode(int)
void onViewSelectionMode(int)
void centerView()
void changeScale(double)
Holds tree to select top level sample items. Part of SampleView.
QTreeView * treeView()
ApplicationModels * models()
Definition: SampleView.cpp:41
SampleView(MainWindow *mainWindow)
Definition: SampleView.cpp:32
RealSpacePanel * m_realSpacePanel
Definition: SampleView.h:56
void fillViewMenu(QMenu *menu)
Definition: SampleView.cpp:51
SampleDesigner * m_sampleDesigner
Definition: SampleView.h:51
void resetLayout()
Definition: SampleView.cpp:115
void toggleRealSpaceView()
Definition: SampleView.cpp:46
SampleTreeWidget * m_treeWidget
Definition: SampleView.h:53
@ PROPERTY_EDITOR
Definition: SampleView.h:35
@ REALSPACEPANEL
Definition: SampleView.h:35
SampleWidgetBox * m_widgetBox
Definition: SampleView.h:52
ScriptPanel * m_scriptPanel
Definition: SampleView.h:55
void connectSignals()
Definition: SampleView.cpp:95
void createSubWindows()
Definition: SampleView.cpp:63
SampleToolBar * m_toolBar
Definition: SampleView.h:49
DocksController * m_docks
Definition: SampleView.h:48
SamplePropertyWidget * m_propertyWidget
Definition: SampleView.h:54
widget box and tool window on the left side of SampleView
Resides at the bottom of SampleView and displays a Python script.
Definition: ScriptPanel.h:26
void setInstrumentModel(InstrumentModel *instrumentModel)
Definition: ScriptPanel.cpp:38
void setSampleModel(SampleModel *sampleModel)
Definition: ScriptPanel.cpp:33