comparison src/gui/dialog/licenses.cc @ 370:ea3a74ed2ef9

*: hm, last commit wasn't quite finished?
author Paper <paper@tflc.us>
date Fri, 25 Jul 2025 10:22:04 -0400
parents 6d37a998cf91
children
comparison
equal deleted inserted replaced
369:47c9f8502269 370:ea3a74ed2ef9
5 #include "gui/widgets/text.h" 5 #include "gui/widgets/text.h"
6 6
7 #include <fmt/core.h> 7 #include <fmt/core.h>
8 8
9 #include <QCoreApplication> 9 #include <QCoreApplication>
10 #include <QFile>
10 #include <QFont> 11 #include <QFont>
11 #include <QHBoxLayout> 12 #include <QHBoxLayout>
12 #include <QTabWidget> 13 #include <QTabWidget>
13 #include <QTextBrowser> 14 #include <QTextBrowser>
14 #include <QTextCharFormat> 15 #include <QTextCharFormat>
15 #include <QTextCursor> 16 #include <QTextCursor>
16 #include <QFile>
17 17
18 #include <curl/curl.h> 18 #include <curl/curl.h>
19 #ifdef WIN32 19 #ifdef WIN32
20 # include "sys/win32/dark_theme.h" 20 # include "sys/win32/dark_theme.h"
21 #endif 21 #endif
22 22
23 static QWidget *create_license_widget(QWidget *parent, const QString& license) { 23 static QWidget *create_license_widget(QWidget *parent, const QString &license)
24 QTextBrowser* paragraph = new QTextBrowser(parent); 24 {
25 QTextBrowser *paragraph = new QTextBrowser(parent);
25 paragraph->setFrameShape(QFrame::NoFrame); 26 paragraph->setFrameShape(QFrame::NoFrame);
26 paragraph->setPlainText(license); 27 paragraph->setPlainText(license);
27 paragraph->setFont(QFont("monospace")); 28 paragraph->setFont(QFont("monospace"));
28 return paragraph; 29 return paragraph;
29 } 30 }
30 31
31 static void create_basic_license(QTabWidget *tab_widget, const QString& filename, const QString& title) { 32 static void create_basic_license(QTabWidget *tab_widget, const QString &filename, const QString &title)
33 {
32 QFile f(filename); 34 QFile f(filename);
33 if (!f.exists()) 35 if (!f.exists())
34 return; 36 return;
35 37
36 f.open(QFile::ReadOnly | QFile::Text); 38 f.open(QFile::ReadOnly | QFile::Text);
37 tab_widget->addTab(create_license_widget(tab_widget, f.readAll()), title); 39 tab_widget->addTab(create_license_widget(tab_widget, f.readAll()), title);
38 } 40 }
39 41
40 static void create_dual_license(QTabWidget *tab_widget, const QString& filename1, const QString& title1, const QString& filename2, const QString& title2) { 42 static void create_dual_license(QTabWidget *tab_widget, const QString &filename1, const QString &title1,
43 const QString &filename2, const QString &title2)
44 {
41 QString l1, l2; 45 QString l1, l2;
42 { 46 {
43 QFile f1(filename1), f2(filename2); 47 QFile f1(filename1), f2(filename2);
44 if (!f1.exists() || !f2.exists()) 48 if (!f1.exists() || !f2.exists())
45 return; 49 return;
52 } 56 }
53 57
54 QWidget *dual = new QWidget(tab_widget); 58 QWidget *dual = new QWidget(tab_widget);
55 QVBoxLayout *dual_layout = new QVBoxLayout(dual); 59 QVBoxLayout *dual_layout = new QVBoxLayout(dual);
56 60
57 QLabel *dual_notice = new QLabel(QCoreApplication::tr("%1 was originally forked from %2, where any changes divergent from %2 are now under a different license. Both the licenses for %1 and %2 are provided below, respectfully:").arg(title1, title2), dual); 61 QLabel *dual_notice = new QLabel(
62 QCoreApplication::tr("%1 was originally forked from %2, where any changes divergent from %2 are now under a "
63 "different license. Both the licenses for %1 and %2 are provided below, respectfully:")
64 .arg(title1, title2),
65 dual);
58 dual_notice->setWordWrap(true); 66 dual_notice->setWordWrap(true);
59 dual_layout->addWidget(dual_notice); 67 dual_layout->addWidget(dual_notice);
60 dual_layout->addWidget(create_license_widget(dual, l1)); 68 dual_layout->addWidget(create_license_widget(dual, l1));
61 dual_layout->addWidget(create_license_widget(dual, l2)); 69 dual_layout->addWidget(create_license_widget(dual, l2));
62 70
63 tab_widget->addTab(dual, title1); 71 tab_widget->addTab(dual, title1);
64 } 72 }
65 73
66 LicensesWindow::LicensesWindow(QWidget* parent) : Dialog(parent) { 74 LicensesWindow::LicensesWindow(QWidget *parent) : Dialog(parent)
75 {
67 resize(641, 500); 76 resize(641, 500);
68 setWindowTitle(tr("About Minori")); 77 setWindowTitle(tr("About Minori"));
69 setWindowFlags(Qt::Dialog | Qt::CustomizeWindowHint | Qt::WindowTitleHint | Qt::WindowCloseButtonHint); 78 setWindowFlags(Qt::Dialog | Qt::CustomizeWindowHint | Qt::WindowTitleHint | Qt::WindowCloseButtonHint);
70 setAutoFillBackground(true); 79 setAutoFillBackground(true);
71 80
72 QHBoxLayout* layout = new QHBoxLayout(this); 81 QHBoxLayout *layout = new QHBoxLayout(this);
73 82
74 setBackgroundRole(QPalette::Base); 83 setBackgroundRole(QPalette::Base);
75 84
76 QTabWidget *tab_widget = new QTabWidget(this); 85 QTabWidget *tab_widget = new QTabWidget(this);
77 86
78 layout->addWidget(tab_widget); 87 layout->addWidget(tab_widget);
79 88
80 create_basic_license(tab_widget, ":/licenses/LICENSE.minori", tr("Minori")); 89 create_basic_license(tab_widget, ":/licenses/LICENSE.minori", tr("Minori"));
81 90
82 create_dual_license(tab_widget, ":/licenses/LICENSE.MIT.animone", tr("Animone"), ":/licenses/LICENSE.BSD.animone", tr("Anisthesia")); 91 create_dual_license(tab_widget, ":/licenses/LICENSE.MIT.animone", tr("Animone"), ":/licenses/LICENSE.BSD.animone",
92 tr("Anisthesia"));
83 93
84 create_basic_license(tab_widget, ":/licenses/LICENSE.anitomy", tr("Anitomy")); 94 create_basic_license(tab_widget, ":/licenses/LICENSE.anitomy", tr("Anitomy"));
85 create_basic_license(tab_widget, ":/licenses/LICENSE.fmt", tr("fmt")); 95 create_basic_license(tab_widget, ":/licenses/LICENSE.fmt", tr("fmt"));
86 create_basic_license(tab_widget, ":/licenses/LICENSE.nlohmann", tr("JSON for Modern C++")); 96 create_basic_license(tab_widget, ":/licenses/LICENSE.nlohmann", tr("JSON for Modern C++"));
87 create_basic_license(tab_widget, ":/licenses/LICENSE.semver", tr("semver")); 97 create_basic_license(tab_widget, ":/licenses/LICENSE.semver", tr("semver"));