12 #include "ui_VuoEditorAboutBox.h"
14 const QString VuoEditorAboutBox::htmlHead =
"<head><style>a { color: #0099a9; }</style></head>";
25 QString buildDate = __DATE__;
27 QString versionAndBuild = VUO_VERSION_AND_BUILD_STRING;
28 QRegularExpressionMatch match = QRegularExpression(
"\\d+\\.\\d+\\.\\d+").match(versionAndBuild);
29 QString versionNumber = match.captured(0);
30 QString versionSuffix = versionAndBuild.mid(match.capturedEnd());
31 if (!versionSuffix.isEmpty())
32 versionSuffix =
"<span style=\"font-size:20pt; color:rgba(0,0,0,.35)\">" + versionSuffix +
"</span>";
34 QString commitHash = VUO_GIT_COMMIT;
35 if (!commitHash.isEmpty())
36 commitHash = QString(
" (revision ") + VUO_GIT_COMMIT +
")";
38 QString missionMarkdown = tr(
39 "**Create memorable interactive experiences — without coding.**\n"
41 "Drag, drop, and connect Vuo's simple building blocks to support your creative work: \n"
42 "VJ gigs, exhibits, installations, stage productions, dome graphics, visual signage, \n"
43 "video effects, maker projects, trade show booths, and more. \n"
46 .arg(
"[vuo.org](https://vuo.org)");
50 QString descriptiveText = \
51 QString(
"<html>%3<body>"
52 "<p><span style=\"font-size:28pt;\">Vuo</span>"
53 "<span style=\"font-size:20pt;\"> %1</span>%5<br>"
54 "<span style=\"font-size:12pt; color:rgba(0,0,0,.5)\">" + tr(
"Built on %2") +
"<br>"
55 "Copyright © 2012–2020 Kosada Incorporated</span></p>%4"
59 buildDate + commitHash,
66 contributorFont = ui->textEdit->font();
68 licenseFont.setFamily(
"Monaco");
69 licenseFont.setStyleHint(QFont::Monospace);
70 licenseFont.setFixedPitch(
true);
71 licenseFont.setPointSize(11);
73 const int tabStop = 8;
74 QFontMetrics licenseFontMetrics(licenseFont);
75 ui->textEdit->setTabStopWidth(tabStop * licenseFontMetrics.width(
' '));
78 ui->textLabel->setText(descriptiveText);
81 contributors =
new QTreeWidgetItem(ui->treeWidget);
82 contributors->setText(0, tr(
"Contributors"));
83 dependencyLicenses =
new QTreeWidgetItem(ui->treeWidget);
84 dependencyLicenses->setText(0, tr(
"Dependency Licenses"));
87 populateContributorsList();
88 populateLicenseTexts();
90 ui->textEdit->setReadOnly(
true);
93 connect(ui->treeWidget, &QTreeWidget::currentItemChanged,
this, &VuoEditorAboutBox::updateDisplayedTextContent);
96 ui->treeWidget->setCurrentItem(contributors);
99 setAttribute(Qt::WA_DeleteOnClose,
false);
106 void VuoEditorAboutBox::populateContributorsList()
108 QFile contributorsList(QApplication::applicationDirPath().append(
"/../Resources/CONTRIBUTORS.md"));
110 if (!contributorsList.open(QIODevice::ReadOnly))
111 contributorText =
"Please see our list of contributors at <a href=\"https://vuo.org/contributors\">https://vuo.org/contributors</a>. ";
116 QTextStream textStream(&contributorsList);
124 void VuoEditorAboutBox::populateLicenseTexts()
126 QDir licenseTextDir(QApplication::applicationDirPath().append(
"/../Frameworks/Vuo.framework/Documentation/Licenses"));
127 if (!licenseTextDir.exists())
130 QStringList licenseFileList(licenseTextDir.entryList(QDir::Files|QDir::Readable));
131 foreach (QString licenseFileName, licenseFileList)
133 QFile licenseFile(licenseTextDir.filePath(licenseFileName));
134 if (licenseFile.open(QIODevice::ReadOnly))
136 QFileInfo licenseFileInfo(licenseFile);
137 QString dependencyIdentifier = licenseFileInfo.completeBaseName();
138 QTreeWidgetItem *dependencyLicenseItem =
new QTreeWidgetItem();
139 dependencyLicenseItem->setText(0, dependencyIdentifier);
140 dependencyLicenses->addChild(dependencyLicenseItem);
142 QTextStream textStream(&licenseFile);
143 licenseTextForDependency[dependencyIdentifier] = textStream.readAll();
152 void VuoEditorAboutBox::updateDisplayedTextContent()
154 QTreeWidgetItem *currentItem = ui->treeWidget->currentItem();
155 if (currentItem == contributors)
157 ui->textEdit->setFont(contributorFont);
158 ui->textEdit->setText(htmlHead + contributorText);
160 else if (currentItem == dependencyLicenses)
161 ui->textEdit->setText(
"");
164 ui->textEdit->setFont(licenseFont);
170 QString licenseText = licenseTextForDependency[currentItem->text(0)];
171 if (Qt::mightBeRichText(licenseText))
172 ui->textEdit->document()->setHtml(htmlHead + licenseText);
174 ui->textEdit->document()->setPlainText(licenseText);
178 VuoEditorAboutBox::~VuoEditorAboutBox()