BornAgain  1.19.0
Simulate and fit neutron and x-ray scattering at grazing incidence
settingsview.cpp
Go to the documentation of this file.
1 // ************************************************************************************************
2 //
3 // BornAgain: simulate and fit reflection and scattering
4 //
5 //! @file gui2/settingsview/settingsview.cpp
6 //! @brief Implements class CLASS?
7 //!
8 //! @homepage http://www.bornagainproject.org
9 //! @license GNU General Public License v3 or higher (see COPYING)
10 //! @copyright Forschungszentrum Jülich GmbH 2020
11 //! @authors Scientific Computing Group at MLZ (see CITATION, AUTHORS)
12 //
13 // ************************************************************************************************
14 
20 #include <QHBoxLayout>
21 #include <QListView>
22 #include <QListWidget>
23 #include <QStackedWidget>
24 #include <QTabWidget>
25 #include <QTreeView>
26 
27 namespace gui2 {
28 
30  : QWidget(parent)
31  , m_listWidget(new QListWidget)
32  , m_stackedWidget(new QStackedWidget)
33  , m_tabWidget(new QTabWidget)
34  , m_models(models)
35 {
39 
40  auto layout = new QHBoxLayout(this);
41  layout->addWidget(m_listWidget);
42  layout->addSpacing(ModelView::Utils::WidthOfLetterM() / 2);
43  layout->addWidget(m_stackedWidget);
44 
45  m_stackedWidget->setCurrentIndex(0);
46 }
47 
48 //! Initialize tabs with model content.
49 //! Each model will be represented by a single tree (with all items shown) in a tab.
50 
52 {
53  for (auto model : m_models->application_models()) {
54  auto view = new ModelView::AllItemsTreeView(model);
55  view->treeView()->setAlternatingRowColors(true);
56  m_tabWidget->addTab(view, QString::fromStdString(model->modelType()));
57  }
58  m_stackedWidget->addWidget(m_tabWidget);
59 }
60 
62 {
63  const int width = ModelView::Utils::WidthOfLetterM() * 10;
64  m_listWidget->setFixedWidth(width);
65  m_listWidget->setIconSize(
67 
68  auto item = new QListWidgetItem(QIcon(":/icons/card-bulleted-outline.svg"), "All models");
69  m_listWidget->addItem(item);
70 
71  item = new QListWidgetItem(QIcon(":/icons/cog-outline.svg"), "Miscellaneous");
72  m_listWidget->addItem(item);
73 
74  connect(m_listWidget, &QListWidget::currentRowChanged,
75  [this](int row) { m_stackedWidget->setCurrentIndex(row); });
76 }
77 
79 {
80  m_stackedWidget->addWidget(new QWidget);
81 }
82 
83 } // namespace gui2
Defines class CLASS?
Defines class CLASS?
Widget holding standard QTreeView and intended for displaying all items of SessionModel.
Main class to holds all models of GUI session.
std::vector< ModelView::SessionModel * > application_models() const
Return vector of all models of our application.
QListWidget * m_listWidget
selector for specific settings window on the left
Definition: settingsview.h:44
ApplicationModels * m_models
Definition: settingsview.h:48
QTabWidget * m_tabWidget
application model settings
Definition: settingsview.h:46
QStackedWidget * m_stackedWidget
stack with settings widgets
Definition: settingsview.h:45
SettingsView(ApplicationModels *models, QWidget *parent=nullptr)
void init_model_settings()
Initialize tabs with model content.
MVVM_VIEW_EXPORT int WidthOfLetterM()
Returns width of the letter 'M' deduced from current font metrics.
Based on Qt example "codeeditor" Copyright (C) 2016 The Qt Company Ltd.
Definition: app_constants.h:20
Defines class CLASS?
Defines class CLASS?
Defines class CLASS?