GUI: Add prominent dev build indicators

This commit is contained in:
Chris Hennes
2023-08-03 22:59:34 -06:00
committed by Chris Hennes
parent 16e083c8f3
commit ea49b3fe78
7 changed files with 50 additions and 11 deletions

View File

@@ -27,7 +27,7 @@ project(FreeCAD)
set(PACKAGE_VERSION_NAME "Vulcan")
set(PACKAGE_VERSION_MAJOR "0")
set(PACKAGE_VERSION_MINOR "21")
set(PACKAGE_VERSION_MINOR "22")
set(PACKAGE_VERSION_PATCH "0") # number of patch release (e.g. "4" for the 0.18.4 release)
set(PACKAGE_VERSION_SUFFIX "dev") # either "dev" for development snapshot or "" (empty string)
set(PACKAGE_BUILD_VERSION "0") # used when the same FreeCAD version will be re-released (for example using an updated LibPack)

View File

@@ -2478,6 +2478,7 @@ void Application::initConfig(int argc, char ** argv)
App::Application::Config()["BuildVersionMajor" ] = FCVersionMajor;
App::Application::Config()["BuildVersionMinor" ] = FCVersionMinor;
App::Application::Config()["BuildVersionPoint" ] = FCVersionPoint;
App::Application::Config()["BuildVersionSuffix" ] = FCVersionSuffix;
App::Application::Config()["BuildRevision" ] = FCRevision;
App::Application::Config()["BuildRepositoryURL" ] = FCRepositoryURL;
App::Application::Config()["BuildRevisionDate" ] = FCRevisionDate;
@@ -2557,21 +2558,23 @@ void Application::initConfig(int argc, char ** argv)
// Remove banner if FreeCAD is invoked via the -c command as regular
// Python interpreter
if (!(mConfig["Verbose"] == "Strict"))
Base::Console().Message("%s %s, Libs: %s.%s.%sR%s\n%s",
Base::Console().Message("%s %s, Libs: %s.%s.%s%sR%s\n%s",
mConfig["ExeName"].c_str(),
mConfig["ExeVersion"].c_str(),
mConfig["BuildVersionMajor"].c_str(),
mConfig["BuildVersionMinor"].c_str(),
mConfig["BuildVersionPoint"].c_str(),
mConfig["BuildVersionSuffix"].c_str(),
mConfig["BuildRevision"].c_str(),
mConfig["CopyrightInfo"].c_str());
else
Base::Console().Message("%s %s, Libs: %s.%s.%sR%s\n",
Base::Console().Message("%s %s, Libs: %s.%s.%s%sR%s\n",
mConfig["ExeName"].c_str(),
mConfig["ExeVersion"].c_str(),
mConfig["BuildVersionMajor"].c_str(),
mConfig["BuildVersionMinor"].c_str(),
mConfig["BuildVersionPoint"].c_str(),
mConfig["BuildVersionSuffix"].c_str(),
mConfig["BuildRevision"].c_str());
}
LoadParameters();

View File

@@ -1,9 +1,10 @@
// Version Number
#define FCVersionMajor "${PACKAGE_VERSION_MAJOR}"
#define FCVersionMinor "${PACKAGE_VERSION_MINOR}"
#define FCVersionName "${PACKAGE_VERSION_NAME}"
#define FCVersionPoint "${PACKAGE_VERSION_PATCH}"
#define FCVersionMajor "${PACKAGE_VERSION_MAJOR}"
#define FCVersionMinor "${PACKAGE_VERSION_MINOR}"
#define FCVersionName "${PACKAGE_VERSION_NAME}"
#define FCVersionPoint "${PACKAGE_VERSION_PATCH}"
#define FCVersionSuffix "${PACKAGE_VERSION_SUFFIX}"
// test: $Format:Hash (%H), Date: %ci$
#define FCRevision "${PACKAGE_WCREF}" //Highest committed revision number
#define FCRevisionDate "${PACKAGE_WCDATE}" //Date of highest committed revision

View File

@@ -2129,8 +2129,9 @@ void Application::runApplication()
QString major = QString::fromLatin1(config["BuildVersionMajor"].c_str());
QString minor = QString::fromLatin1(config["BuildVersionMinor"].c_str());
QString point = QString::fromLatin1(config["BuildVersionPoint"].c_str());
QString suffix = QString::fromLatin1(config["BuildVersionSuffix"].c_str());
QString title =
QString::fromLatin1("%1 %2.%3.%4").arg(mainApp.applicationName(), major, minor, point);
QString::fromLatin1("%1 %2.%3.%4%5").arg(mainApp.applicationName(), major, minor, point, suffix);
mw.setWindowTitle(title);
}
else {

View File

@@ -1691,6 +1691,32 @@ QPixmap MainWindow::aboutImage() const
return about_image;
}
void MainWindow::RenderDevBuildWarning(QPainter &painter, int x, int y) const
{
// Create a background box that fades out the artwork for better legibility
QColor fader (Qt::black);
const float halfDensity (0.5);
fader.setAlphaF(halfDensity);
QBrush fillBrush(fader, Qt::BrushStyle::SolidPattern);
painter.setBrush(fillBrush);
// Construct the lines of text and figure out how much space they need
auto devWarningLine1 = tr("WARNING: This is a development version.");
auto devWarningLine2 = tr("Please do not use in a production environment.");
QFontMetrics fontMetrics(painter.font());
int padding = QtTools::horizontalAdvance(fontMetrics, QLatin1String("M")); // Arbitrary
int line1Width = QtTools::horizontalAdvance(fontMetrics, devWarningLine1);
int line2Width = QtTools::horizontalAdvance(fontMetrics, devWarningLine2);
int boxWidth = std::max(line1Width,line2Width) + 2 * padding;
int lineHeight = fontMetrics.lineSpacing();
int boxHeight = static_cast<int>(lineHeight*2.3);
// Draw the background rectangle and the text
painter.drawRect(x, y, boxWidth, boxHeight);
painter.drawText(x+padding, y+lineHeight, devWarningLine1);
painter.drawText(x+padding, y+2*lineHeight, devWarningLine2);
}
QPixmap MainWindow::splashImage() const
{
// search in the UserAppData dir as very first
@@ -1731,7 +1757,8 @@ QPixmap MainWindow::splashImage() const
QString major = QString::fromLatin1(App::Application::Config()["BuildVersionMajor"].c_str());
QString minor = QString::fromLatin1(App::Application::Config()["BuildVersionMinor"].c_str());
QString point = QString::fromLatin1(App::Application::Config()["BuildVersionPoint"].c_str());
QString version = QString::fromLatin1("%1.%2.%3").arg(major, minor, point);
QString suffix = QString::fromLatin1(App::Application::Config()["BuildVersionSuffix"].c_str());
QString version = QString::fromLatin1("%1.%2.%3%4").arg(major, minor, point, suffix);
QString position, fontFamily;
std::map<std::string,std::string>::const_iterator te = App::Application::Config().find("SplashInfoExeName");
@@ -1793,6 +1820,9 @@ QPixmap MainWindow::splashImage() const
}
painter.setFont(fontVer);
painter.drawText(x + (l + 5), y, version);
if (suffix == QLatin1String("dev")) {
RenderDevBuildWarning(painter, x + l + 5, y + 10);
}
painter.end();
}
}

View File

@@ -292,6 +292,8 @@ private:
bool setupReportView(const std::string&);
bool setupPythonConsole(const std::string&);
void RenderDevBuildWarning(QPainter &painter, int x, int y) const;
private Q_SLOTS:
/**
* \internal

View File

@@ -375,6 +375,7 @@ void AboutDialog::setupLabels()
QString major = QString::fromLatin1(config["BuildVersionMajor"].c_str());
QString minor = QString::fromLatin1(config["BuildVersionMinor"].c_str());
QString point = QString::fromLatin1(config["BuildVersionPoint"].c_str());
QString suffix = QString::fromLatin1(config["BuildVersionSuffix"].c_str());
QString build = QString::fromLatin1(config["BuildRevision"].c_str());
QString disda = QString::fromLatin1(config["BuildRevisionDate"].c_str());
QString mturl = QString::fromLatin1(config["MaintainerUrl"].c_str());
@@ -393,7 +394,7 @@ void AboutDialog::setupLabels()
}
QString version = ui->labelBuildVersion->text();
version.replace(QString::fromLatin1("Unknown"), QString::fromLatin1("%1.%2.%3").arg(major, minor, point));
version.replace(QString::fromLatin1("Unknown"), QString::fromLatin1("%1.%2.%3%4").arg(major, minor, point, suffix));
ui->labelBuildVersion->setText(version);
QString revision = ui->labelBuildRevision->text();
@@ -787,6 +788,7 @@ void AboutDialog::copyToClipboard()
QString major = QString::fromLatin1(config["BuildVersionMajor"].c_str());
QString minor = QString::fromLatin1(config["BuildVersionMinor"].c_str());
QString point = QString::fromLatin1(config["BuildVersionPoint"].c_str());
QString suffix = QString::fromLatin1(config["BuildVersionSuffix"].c_str());
QString build = QString::fromLatin1(config["BuildRevision"].c_str());
QString deskEnv = QProcessEnvironment::systemEnvironment().value(QStringLiteral("XDG_CURRENT_DESKTOP"), QString());
@@ -803,7 +805,7 @@ void AboutDialog::copyToClipboard()
str << "[code]\n";
str << "OS: " << prettyProductInfoWrapper() << deskInfo << '\n';
str << "Word size of " << exe << ": " << QSysInfo::WordSize << "-bit\n";
str << "Version: " << major << "." << minor << "." << point << "." << build;
str << "Version: " << major << "." << minor << "." << point << suffix << "." << build;
char *appimage = getenv("APPIMAGE");
if (appimage)
str << " AppImage";