diff --git a/src/App/Application.cpp b/src/App/Application.cpp
index aa49a5575..bed1c143d 100644
--- a/src/App/Application.cpp
+++ b/src/App/Application.cpp
@@ -1028,12 +1028,18 @@ void Application::initConfig(int argc, char ** argv)
// only for 'BuildVersionMajor'.
if (App::Application::Config().find("BuildVersionMajor") == App::Application::Config().end()) {
std::stringstream str; str << FCVersionMajor << "." << FCVersionMinor;
- App::Application::Config()["ExeVersion"] = str.str();
- App::Application::Config()["BuildVersionMajor"] = FCVersionMajor;
- App::Application::Config()["BuildVersionMinor"] = FCVersionMinor;
- App::Application::Config()["BuildRevision"] = FCRevision;
- App::Application::Config()["BuildRepositoryURL"] = FCRepositoryURL;
- App::Application::Config()["BuildRevisionDate"] = FCCurrentDateT;
+ App::Application::Config()["ExeVersion" ] = str.str();
+ App::Application::Config()["BuildVersionMajor" ] = FCVersionMajor;
+ App::Application::Config()["BuildVersionMinor" ] = FCVersionMinor;
+ App::Application::Config()["BuildRevision" ] = FCRevision;
+ App::Application::Config()["BuildRepositoryURL" ] = FCRepositoryURL;
+ App::Application::Config()["BuildRevisionDate" ] = FCRevisionDate;
+#if defined(FCRepositoryHash)
+ App::Application::Config()["BuildRevisionHash" ] = FCRepositoryHash;
+#endif
+#if defined(FCRepositoryBranch)
+ App::Application::Config()["BuildRevisionBranch"] = FCRepositoryBranch;
+#endif
}
_argc = argc;
diff --git a/src/Build/Version.h.in b/src/Build/Version.h.in
index c67cfb174..ac7a33ee4 100644
--- a/src/Build/Version.h.in
+++ b/src/Build/Version.h.in
@@ -1,18 +1,10 @@
-/// Version Number
+// Version Number
#define FCVersionMajor "0"
#define FCVersionMinor "13"
#define FCVersionName "Vulcan"
#define FCRevision "$WCREV$" //Highest committed revision number
#define FCRevisionDate "$WCDATE$" //Date of highest committed revision
-#define FCRevisionRange "$WCRANGE$" //Update revision range
#define FCRepositoryURL "$WCURL$" //Repository URL of the working copy
-#define FCCurrentDateT "$WCNOW$" //Current system date & time
-
-//Placeholders of the form "$WCxxx?TrueText:FalseText$" are replaced with
-//TrueText if the tested condition is true, and FalseText if false.
-
-#define FCScrClean "$WCMODS?Src modified:Src not modified$" //True if local modifications found
-#define FCScrMixed "$WCMIXED?Src mixed:Src not mixed$" //True if mixed update revisions found
diff --git a/src/Gui/AboutApplication.ui b/src/Gui/AboutApplication.ui
index e8d20441f..3c864a682 100644
--- a/src/Gui/AboutApplication.ui
+++ b/src/Gui/AboutApplication.ui
@@ -16,13 +16,17 @@
true
-
-
- 9
-
-
- 6
-
+
+ -
+
+
+
+
+
+ Qt::AlignCenter
+
+
+
-
@@ -36,15 +40,18 @@
- -
-
-
-
+
-
+
+
+ Qt::Horizontal
-
- Qt::AlignCenter
+
+
+ 31
+ 20
+
-
+
-
@@ -161,6 +168,34 @@
+ -
+
+
+ Branch
+
+
+
+ -
+
+
+ <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:MS Shell Dlg 2; font-size:7.8pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:8pt;"><span style=" font-weight:600;">Unknown</span></p></body></html>
+
+
+
+ -
+
+
+ <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:MS Shell Dlg 2; font-size:7.8pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:8pt;"><span style=" font-weight:600;">Unknown</span></p></body></html>
+
+
+
+ -
+
+
+ Hash
+
+
+
@@ -178,19 +213,6 @@
- -
-
-
- Qt::Horizontal
-
-
-
- 31
- 20
-
-
-
-
-
@@ -219,6 +241,13 @@
+ -
+
+
+ Copy to clipboard
+
+
+
-
@@ -239,19 +268,6 @@
- -
-
-
- Qt::Horizontal
-
-
-
- 181
- 20
-
-
-
-
@@ -264,7 +280,7 @@
-
+
diff --git a/src/Gui/Splashscreen.cpp b/src/Gui/Splashscreen.cpp
index 9da80f552..f7e2d1e10 100644
--- a/src/Gui/Splashscreen.cpp
+++ b/src/Gui/Splashscreen.cpp
@@ -248,18 +248,18 @@ static QString getPlatform()
void AboutDialog::setupLabels()
{
- QString exeName = QString::fromAscii(App::Application::Config()["ExeName"].c_str());
- std::map& cfg = App::Application::Config();
- std::map::iterator it = cfg.find("WindowTitle");
- if (it != cfg.end())
+ std::map& config = App::Application::Config();
+ QString exeName = QString::fromAscii(config["ExeName"].c_str());
+ std::map::iterator it = config.find("WindowTitle");
+ if (it != config.end())
exeName = QString::fromUtf8(it->second.c_str());
- QString banner = QString::fromUtf8(App::Application::Config()["ConsoleBanner"].c_str());
+ QString banner = QString::fromUtf8(config["ConsoleBanner"].c_str());
banner = banner.left( banner.indexOf(QLatin1Char('\n')) );
- QString major = QString::fromAscii(App::Application::Config()["BuildVersionMajor"].c_str());
- QString minor = QString::fromAscii(App::Application::Config()["BuildVersionMinor"].c_str());
- QString build = QString::fromAscii(App::Application::Config()["BuildRevision"].c_str());
- QString disda = QString::fromAscii(App::Application::Config()["BuildRevisionDate"].c_str());
- QString mturl = QString::fromAscii(App::Application::Config()["MaintainerUrl"].c_str());
+ QString major = QString::fromAscii(config["BuildVersionMajor"].c_str());
+ QString minor = QString::fromAscii(config["BuildVersionMinor"].c_str());
+ QString build = QString::fromAscii(config["BuildRevision"].c_str());
+ QString disda = QString::fromAscii(config["BuildRevisionDate"].c_str());
+ QString mturl = QString::fromAscii(config["MaintainerUrl"].c_str());
QString author = ui->labelAuthor->text();
author.replace(QString::fromAscii("Unknown Application"), exeName);
@@ -283,10 +283,38 @@ void AboutDialog::setupLabels()
platform.replace(QString::fromAscii("Unknown"),
QString::fromAscii("%1 (%2-bit)").arg(getPlatform()).arg(QSysInfo::WordSize));
ui->labelBuildPlatform->setText(platform);
+
+ // branch name
+ it = config.find("BuildRevisionBranch");
+ if (it != config.end()) {
+ QString branch = ui->labelBuildBranch->text();
+ branch.replace(QString::fromAscii("Unknown"), QString::fromAscii(it->second.c_str()));
+ ui->labelBuildBranch->setText(branch);
+ }
+ else {
+ ui->labelBranch->hide();
+ ui->labelBuildBranch->hide();
+ }
+
+ // hash id
+ it = config.find("BuildRevisionHash");
+ if (it != config.end()) {
+ QString hash = ui->labelBuildHash->text();
+ hash.replace(QString::fromAscii("Unknown"), QString::fromAscii(it->second.c_str()));
+ ui->labelBuildHash->setText(hash);
+ }
+ else {
+ ui->labelHash->hide();
+ ui->labelBuildHash->hide();
+ }
}
void AboutDialog::on_licenseButton_clicked()
{
}
+void AboutDialog::on_copyButton_clicked()
+{
+}
+
#include "moc_Splashscreen.cpp"
diff --git a/src/Gui/Splashscreen.h b/src/Gui/Splashscreen.h
index 957d4c748..0f07e8d2b 100644
--- a/src/Gui/Splashscreen.h
+++ b/src/Gui/Splashscreen.h
@@ -85,6 +85,7 @@ protected:
protected Q_SLOTS:
virtual void on_licenseButton_clicked();
+ virtual void on_copyButton_clicked();
private:
Ui_AboutApplication* ui;
diff --git a/src/Tools/SubWCRev.py b/src/Tools/SubWCRev.py
index 28835ce36..843f0796b 100644
--- a/src/Tools/SubWCRev.py
+++ b/src/Tools/SubWCRev.py
@@ -50,11 +50,7 @@ class VersionControl:
def __init__(self):
self.rev = ""
self.date = ""
- self.range = ""
self.url = ""
- self.time = ""
- self.mods = "Src not modified"
- self.mixed = "Src not mixed"
def extractInfo(self, srcdir):
return False
@@ -67,11 +63,7 @@ class VersionControl:
for line in lines:
line = string.replace(line,'$WCREV$',self.rev)
line = string.replace(line,'$WCDATE$',self.date)
- line = string.replace(line,'$WCRANGE$',self.range)
line = string.replace(line,'$WCURL$',self.url)
- line = string.replace(line,'$WCNOW$',self.time)
- line = string.replace(line,'$WCMODS?Src modified:Src not modified$',self.mods)
- line = string.replace(line,'$WCMIXED?Src mixed:Src not mixed$',self.mixed)
content.append(line)
return content
@@ -82,9 +74,7 @@ class UnknownControl(VersionControl):
return False
self.rev = "Unknown"
self.date = "Unknown"
- self.range = "Unknown"
self.url = "Unknown"
- self.time = "Unknown"
return True
def printInfo(self):
@@ -104,13 +94,10 @@ class DebianChangelog(VersionControl):
r=re.search("bzr(\\d+)",c)
if r != None:
self.rev = r.groups()[0] + " (Launchpad)"
- self.range = self.rev
t = time.localtime()
- self.url = "https://code.launchpad.net/~vcs-imports/freecad/trunk"
- #self.time = time.asctime()
self.date = ("%d/%02d/%02d %02d:%02d:%02d") % (t.tm_year, t.tm_mon, t.tm_mday, t.tm_hour, t.tm_min, t.tm_sec)
- self.time = ("%d/%02d/%02d %02d:%02d:%02d") % (t.tm_year, t.tm_mon, t.tm_mday, t.tm_hour, t.tm_min, t.tm_sec)
+ self.url = "https://code.launchpad.net/~vcs-imports/freecad/trunk"
return True
def printInfo(self):
@@ -121,8 +108,6 @@ class BazaarControl(VersionControl):
info=os.popen("bzr log -l 1 %s" % (srcdir)).read()
if len(info) == 0:
return False
- #Get the current local date
- self.time = time.strftime("%Y/%m/%d %H:%M:%S")
lines=info.split("\n")
for i in lines:
r = re.match("^revno: (\\d+)$", i)
@@ -151,7 +136,6 @@ class GitControl(VersionControl):
if len(info) == 0:
return False
self.rev='%04d (Git)' % (info.count('\n'))
- self.range='%04d' % (info.count('\n'))
# date/time
info=os.popen("git log -1 --date=iso").read()
info=info.split("\n")
@@ -159,9 +143,7 @@ class GitControl(VersionControl):
r = re.match("^Date:\\W+(\\d+-\\d+-\\d+\\W+\\d+:\\d+:\\d+)", i)
if r != None:
self.date = r.groups()[0].replace('-','/')
- self.time = self.date
break
- #self.time = time.strftime("%Y/%m/%d %H:%M:%S")
self.url = "Unknown"
info=os.popen("git remote -v").read()
info=info.split("\n")
@@ -170,11 +152,20 @@ class GitControl(VersionControl):
if r != None:
self.url = r.groups()[0]
break
+ self.hash=os.popen("git log -1 --pretty=format:%H").read()
+ self.branch=os.popen("git branch").read().split('\n')[0][2:]
return True
def printInfo(self):
print "git"
+ def writeVersion(self, lines):
+ content = VersionControl.writeVersion(self, lines)
+ content.append('// Git relevant stuff\n')
+ content.append('#define FCRepositoryHash "%s"\n' % (self.hash))
+ content.append('#define FCRepositoryBranch "%s"\n' % (self.branch))
+ return content
+
class MercurialControl(VersionControl):
def extractInfo(self, srcdir):
return False