BornAgain  1.19.0
Simulate and fit neutron and x-ray scattering at grazing incidence
gui2::OpenProjectWidget Class Reference

Widget with logo, name of the program and buttons to create new project or open existing one. More...

Inheritance diagram for gui2::OpenProjectWidget:
[legend]
Collaboration diagram for gui2::OpenProjectWidget:
[legend]

Signals

void createNewProjectRequest ()
 
void openExistingProjectRequest ()
 

Public Member Functions

 OpenProjectWidget (QWidget *parent=nullptr)
 
QSize minimumSizeHint () const override
 
QSize sizeHint () const override
 

Private Member Functions

QBoxLayout * createLinkedLabelLayout ()
 
QBoxLayout * createProjectTitleLayout ()
 

Private Attributes

QLabel * m_newProjectLabel {nullptr}
 
QLabel * m_openProjectLabel {nullptr}
 

Detailed Description

Widget with logo, name of the program and buttons to create new project or open existing one.

Occupies right part of WelcomeView.

Definition at line 31 of file openprojectwidget.h.

Constructor & Destructor Documentation

◆ OpenProjectWidget()

gui2::OpenProjectWidget::OpenProjectWidget ( QWidget *  parent = nullptr)
explicit

Definition at line 37 of file openprojectwidget.cpp.

37  : QWidget(parent)
38 {
39  auto layout = new QVBoxLayout(this);
40 
41  QPixmap logo(":/icons/F-letter_1000x.png");
42  auto label = new QLabel;
43  label->setPixmap(logo.scaled(logo_width(), logo_width(), Qt::KeepAspectRatio));
44 
45  layout->addSpacing(ModelView::Utils::SizeOfLetterM().height() * 1.5);
46  layout->addWidget(label, 0, Qt::AlignHCenter);
47  layout->addSpacing(ModelView::Utils::SizeOfLetterM().height());
48  layout->addLayout(createProjectTitleLayout());
49  layout->addSpacing(ModelView::Utils::SizeOfLetterM().height());
50  layout->addLayout(createLinkedLabelLayout());
51  layout->addStretch();
52 }
QBoxLayout * createProjectTitleLayout()
QBoxLayout * createLinkedLabelLayout()
MVVM_VIEW_EXPORT QSize SizeOfLetterM()
Returns size corresponding to actual size of letter M basing on current font metrics.

References createLinkedLabelLayout(), createProjectTitleLayout(), and ModelView::Utils::SizeOfLetterM().

Here is the call graph for this function:

Member Function Documentation

◆ createLinkedLabelLayout()

QBoxLayout * gui2::OpenProjectWidget::createLinkedLabelLayout ( )
private

Definition at line 76 of file openprojectwidget.cpp.

77 {
78  auto result = new QHBoxLayout;
79 
81  m_newProjectLabel->setToolTip("Create new project");
82  connect(m_newProjectLabel, &QLabel::linkActivated, [this](auto) { createNewProjectRequest(); });
84 
86  m_openProjectLabel->setToolTip("Open existing project");
87  connect(m_openProjectLabel, &QLabel::linkActivated,
88  [this](auto) { openExistingProjectRequest(); });
90 
91  result->addStretch(1);
92  result->addWidget(m_newProjectLabel);
93  result->addSpacing(ModelView::Utils::WidthOfLetterM());
94  result->addWidget(m_openProjectLabel);
95  result->addStretch(1);
96 
97  return result;
98 }
MVVM_VIEW_EXPORT QString ClickableText(const QString &text, const QString &tag={})
Returns text wrapped into 'href' tag to provide clickable links in QLabel.
MVVM_VIEW_EXPORT void ScaleLabelFont(QLabel *label, double scale)
Set label's font size to system font size scaled by given factor.
MVVM_VIEW_EXPORT int WidthOfLetterM()
Returns width of the letter 'M' deduced from current font metrics.

References ModelView::Utils::ClickableText(), createNewProjectRequest(), m_newProjectLabel, m_openProjectLabel, openExistingProjectRequest(), ModelView::Utils::ScaleLabelFont(), and ModelView::Utils::WidthOfLetterM().

Referenced by OpenProjectWidget().

Here is the call graph for this function:

◆ createNewProjectRequest

void gui2::OpenProjectWidget::createNewProjectRequest ( )
signal

◆ createProjectTitleLayout()

QBoxLayout * gui2::OpenProjectWidget::createProjectTitleLayout ( )
private

Definition at line 64 of file openprojectwidget.cpp.

65 {
66  auto result = new QHBoxLayout;
67  QString title =
68  "BornAgain " + QString::fromStdString(BornAgain::GetVersionNumber()) + ", gui2 preview";
69  auto label = new QLabel(title);
71 
72  result->addWidget(label, 0, Qt::AlignHCenter);
73  return result;
74 }

References ModelView::Utils::ScaleLabelFont().

Referenced by OpenProjectWidget().

Here is the call graph for this function:

◆ minimumSizeHint()

QSize gui2::OpenProjectWidget::minimumSizeHint ( ) const
override

Definition at line 59 of file openprojectwidget.cpp.

60 {
62 }
DAREFLCORE_EXPORT QSize DockMinimumSizeHint()
Hint on minimum size of docks on main reflectometry window.
Definition: styleutils.cpp:34

References gui2::StyleUtils::DockMinimumSizeHint().

Here is the call graph for this function:

◆ openExistingProjectRequest

void gui2::OpenProjectWidget::openExistingProjectRequest ( )
signal

◆ sizeHint()

QSize gui2::OpenProjectWidget::sizeHint ( ) const
override

Definition at line 54 of file openprojectwidget.cpp.

55 {
56  return StyleUtils::DockSizeHint();
57 }
DAREFLCORE_EXPORT QSize DockSizeHint()
Hint on size of docks on main reflectometry window.
Definition: styleutils.cpp:29

References gui2::StyleUtils::DockSizeHint().

Here is the call graph for this function:

Member Data Documentation

◆ m_newProjectLabel

QLabel* gui2::OpenProjectWidget::m_newProjectLabel {nullptr}
private

Definition at line 48 of file openprojectwidget.h.

Referenced by createLinkedLabelLayout().

◆ m_openProjectLabel

QLabel* gui2::OpenProjectWidget::m_openProjectLabel {nullptr}
private

Definition at line 49 of file openprojectwidget.h.

Referenced by createLinkedLabelLayout().


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