BornAgain  1.19.0
Simulate and fit neutron and x-ray scattering at grazing incidence
aboutapplicationdialog.cpp
Go to the documentation of this file.
1 // ************************************************************************************************
2 //
3 // BornAgain: simulate and fit reflection and scattering
4 //
5 //! @file GUI/coregui/mainwindow/aboutapplicationdialog.cpp
6 //! @brief Implements class AboutApplicationDialog
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 <QDate>
20 #include <QLabel>
21 #include <QPushButton>
22 #include <QVBoxLayout>
23 
24 namespace {
25 
26 QLabel* createLinkLabel()
27 {
28  auto result = new QLabel();
29  result->setTextFormat(Qt::RichText);
30  result->setTextInteractionFlags(Qt::TextBrowserInteraction);
31  result->setText("<a href=\"http://www.bornagainproject.org\">www.bornagainproject.org</a>");
32  result->setOpenExternalLinks(true);
33  return result;
34 }
35 
36 QLabel* createCopyrightLabel()
37 {
38  QDate date = QDate::currentDate();
39  QString copyright =
40  QString("Copyright: Forschungszentrum Jülich GmbH ").append(date.toString("yyyy"));
41 
42  auto result = new QLabel(copyright);
43  result->setContentsMargins(0, 0, 0, 15);
44  return result;
45 }
46 
47 QLabel* createLogoLabel()
48 {
49  QPixmap logo(":/images/about_icon.awk", "JPG");
50  auto result = new QLabel;
51  result->setPixmap(logo.scaled(656, 674, Qt::KeepAspectRatio));
52  return result;
53 }
54 } // namespace
55 
56 AboutApplicationDialog::AboutApplicationDialog(QWidget* parent) : QDialog(parent)
57 {
58  QColor bgColor(240, 240, 240, 255);
59  QPalette palette;
60  palette.setColor(QPalette::Window, bgColor);
61  setAutoFillBackground(true);
62  setPalette(palette);
63 
64  setWindowTitle("About BornAgain");
65  setWindowFlags(Qt::Dialog);
66 
67  QHBoxLayout* detailsLayout = new QHBoxLayout;
68  detailsLayout->addLayout(createLogoLayout());
69  detailsLayout->addLayout(createTextLayout());
70 
71  QVBoxLayout* mainLayout = new QVBoxLayout;
72  mainLayout->addLayout(detailsLayout);
73  mainLayout->addLayout(createButtonLayout());
74 
75  setLayout(mainLayout);
76 }
77 
79 {
80  auto result = new QVBoxLayout;
81 
82  QPixmap logo(":/images/about_icon.png");
83  auto label = new QLabel;
84  label->setPixmap(logo.scaled(120, 120, Qt::KeepAspectRatio));
85 
86  result->addWidget(label);
87  result->addStretch(1);
88  result->setContentsMargins(5, 5, 5, 5);
89 
90  return result;
91 }
92 
94 {
95  auto result = new QVBoxLayout;
96 
97  QFont titleFont;
98  titleFont.setPointSize(DesignerHelper::getLabelFontSize() + 2);
99  titleFont.setBold(true);
100 
101  QFont normalFont;
102  normalFont.setPointSize(DesignerHelper::getLabelFontSize());
103  normalFont.setBold(false);
104 
105  // title
106  auto aboutTitleLabel =
107  new QLabel(QString("BornAgain version ").append(GUIHelpers::getBornAgainVersionString()));
108  aboutTitleLabel->setFont(titleFont);
109  aboutTitleLabel->setContentsMargins(0, 0, 0, 15);
110 
111  // copyright
112  auto copyrightLabel = createCopyrightLabel();
113  copyrightLabel->setFont(normalFont);
114 
115  // description
116  QString description = "A software to simulate and fit grazing-incidence small-angle "
117  "scattering (GISAS) using distorted wave Born approximation (DWBA).";
118  auto descriptionLabel = new QLabel(description);
119  descriptionLabel->setFont(normalFont);
120  descriptionLabel->setWordWrap(true);
121 
122  result->addWidget(aboutTitleLabel);
123  result->addWidget(descriptionLabel);
124  result->addStretch(1);
125  result->addWidget(copyrightLabel);
126  result->addWidget(createLinkLabel());
127  result->addStretch(1);
128  result->setContentsMargins(0, 5, 5, 5);
129 
130  return result;
131 }
132 
134 {
135  auto result = new QHBoxLayout;
136 
137  auto closeButton = new QPushButton("Close");
138  connect(closeButton, &QPushButton::clicked, this, &QDialog::reject);
139 
140  result->addStretch(1);
141  result->addWidget(closeButton);
142 
143  static const char mydata[] = {0x64, 0x65, 0x76, 0x73};
144  QByteArray b = QByteArray::fromRawData(mydata, sizeof(mydata));
145  auto f = new ShortcodeFilter(b, this);
146  connect(f, &ShortcodeFilter::found, this, [=]() { layout()->addWidget(createLogoLabel()); });
147  installEventFilter(f);
148 
149  return result;
150 }
Defines classes releted to event filtering.
Defines class DesignerHelper.
Defines class GUIHelpers functions.
Defines class AboutApplicationDialog.
AboutApplicationDialog(QWidget *parent=0)
static int getLabelFontSize()
Event filter for global tracking of shortcodes.
QString getBornAgainVersionString()
Definition: GUIHelpers.cpp:130