diff --git a/CHANGELOG b/CHANGELOG
index a8d5860..4ec4e3f 100644
--- a/CHANGELOG
+++ b/CHANGELOG
@@ -4,6 +4,9 @@ Format: Double ## for a version number followed by a space, ISO-Date, Semantic V
Two empty lines before the next entry.
External contributors notice at the end of the line: (LastName, FirstName / nick)
+## 2022-01-15 0.3.1
+This CHANGELOG is now available through the programs help menu directly.
+
## 2021-07-08 0.3.0
Remove "Quick" mode. As it turns out "Full" mode is quick enough. Port convenience features to full mode.
diff --git a/Makefile.in b/Makefile.in
index 4a116d1..d00c892 100644
--- a/Makefile.in
+++ b/Makefile.in
@@ -50,6 +50,7 @@ install:
install -D -m 644 documentation/out/* -t $(DESTDIR)$(PREFIX)/share/doc/$(PROGRAM)
install -D -m 644 README.md $(DESTDIR)$(PREFIX)/share/doc/$(PROGRAM)/README.md
install -D -m 644 LICENSE $(DESTDIR)$(PREFIX)/share/doc/$(PROGRAM)/LICENSE
+ install -D -m 644 CHANGELOG $(DESTDIR)$(PREFIX)/share/doc/$(PROGRAM)/CHANGELOG
install -D -m 644 desktop/desktop.desktop $(DESTDIR)$(PREFIX)/share/applications/org.laborejo.agordejo.desktop
install -D -m 644 desktop/agordejo-continue.desktop $(DESTDIR)$(PREFIX)/share/applications/org.laborejo.agordejo-continue.desktop
diff --git a/documentation/out/CHANGELOG b/documentation/out/CHANGELOG
new file mode 120000
index 0000000..6fc2e33
--- /dev/null
+++ b/documentation/out/CHANGELOG
@@ -0,0 +1 @@
+../../CHANGELOG
\ No newline at end of file
diff --git a/qtgui/changelog.py b/qtgui/changelog.py
new file mode 100644
index 0000000..825b191
--- /dev/null
+++ b/qtgui/changelog.py
@@ -0,0 +1,63 @@
+#! /usr/bin/env python3
+# -*- coding: utf-8 -*-
+"""
+Copyright 2021, Nils Hilbricht, Germany ( https://www.hilbricht.net )
+
+This file is part of the Laborejo Software Suite ( https://www.laborejo.org ),
+
+This application is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 3 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program. If not, see .
+"""
+
+import logging; logger = logging.getLogger(__name__); logger.info("import")
+
+#Standard Lib
+
+#System Wide Modules
+from PyQt5 import QtCore, QtWidgets, QtGui
+
+#Local Modules
+from engine.config import * #imports METADATA
+from engine.start import PATHS
+
+class Changelog(QtWidgets.QWidget):
+ """
+ A modal window that is hidden.
+ Just shows the file CHANGELOG
+ """
+
+ def __init__(self, mainWindow):
+ super().__init__()
+ self.mainWindow = mainWindow
+
+ ourLayout = QtWidgets.QVBoxLayout()
+ #ourLayout.setSpacing(0)
+ #ourLayout.setContentsMargins(0,0,0,0)
+ self.setLayout(ourLayout)
+
+
+ self.setWindowTitle(METADATA["name"] + " " + QtCore.QCoreApplication.translate("TemplateChangelog", "Changelog"))
+ introtext = QtCore.QCoreApplication.translate("TemplateChangelog", "The Changelog is only available in English.")
+ ourLayout.addWidget(QtWidgets.QLabel(introtext))
+
+ textEdit = QtWidgets.QPlainTextEdit()
+ textEdit.setReadOnly(True)
+ with open(PATHS["doc"] + "/CHANGELOG", "r") as f:
+ textEdit.setPlainText(f.read())
+
+ ourLayout.addWidget(textEdit)
+
+ self.hide()
+
+ def closeEvent(self, event):
+ self.hide()
diff --git a/qtgui/designer/mainwindow.py b/qtgui/designer/mainwindow.py
index 006ef78..871cc83 100644
--- a/qtgui/designer/mainwindow.py
+++ b/qtgui/designer/mainwindow.py
@@ -2,7 +2,7 @@
# Form implementation generated from reading ui file 'mainwindow.ui'
#
-# Created by: PyQt5 UI code generator 5.15.4
+# Created by: PyQt5 UI code generator 5.15.6
#
# WARNING: Any manual changes made to this file will be lost when pyuic5 is
# run again. Do not edit this file unless you know what you are doing.
@@ -273,7 +273,10 @@ class Ui_MainWindow(object):
self.actionSettings.setObjectName("actionSettings")
self.actionManual = QtWidgets.QAction(MainWindow)
self.actionManual.setObjectName("actionManual")
+ self.actionChangelog = QtWidgets.QAction(MainWindow)
+ self.actionChangelog.setObjectName("actionChangelog")
self.menuControl.addAction(self.actionManual)
+ self.menuControl.addAction(self.actionChangelog)
self.menuControl.addAction(self.actionRebuild_Program_Database)
self.menuControl.addAction(self.actionHide_in_System_Tray)
self.menuControl.addAction(self.actionSettings)
@@ -374,3 +377,4 @@ class Ui_MainWindow(object):
self.actionClientRename.setShortcut(_translate("MainWindow", "F2"))
self.actionSettings.setText(_translate("MainWindow", "Settings"))
self.actionManual.setText(_translate("MainWindow", "Manual"))
+ self.actionChangelog.setText(_translate("MainWindow", "News and Changelog"))
diff --git a/qtgui/designer/mainwindow.ui b/qtgui/designer/mainwindow.ui
index 0a6d9ae..b2fbe33 100644
--- a/qtgui/designer/mainwindow.ui
+++ b/qtgui/designer/mainwindow.ui
@@ -564,6 +564,7 @@
Control
+
@@ -732,6 +733,11 @@
Manual
+
+
+ News and Changelog
+
+
diff --git a/qtgui/mainwindow.py b/qtgui/mainwindow.py
index c4d0d1c..efa88ba 100644
--- a/qtgui/mainwindow.py
+++ b/qtgui/mainwindow.py
@@ -39,6 +39,7 @@ from .systemtray import SystemTray
from .eventloop import EventLoop
from .designer.mainwindow import Ui_MainWindow
from .usermanual import UserManual
+from .changelog import Changelog
from .helper import setPaletteAndFont
from .helper import iconFromString
from .sessiontreecontroller import SessionTreeController
@@ -140,6 +141,7 @@ class MainWindow(QtWidgets.QMainWindow):
assert self.ui.tabbyCat.currentIndex() == 0, self.ui.tabbyCat.currentIndex() # this is critical. If you left the Qt Designer with the wrong tab open this is the error that happens. It will trigger the tab changed later that will go wrong because setup is not complete yet and you'll get AttributeError
self.userManual = UserManual(mainWindow=self)
+ self.changelog = Changelog(mainWindow=self)
self.ui.mainPageSwitcher.setCurrentIndex(0) #1 is messageLabel 0 is the tab widget
@@ -399,6 +401,7 @@ class MainWindow(QtWidgets.QMainWindow):
def connectMenu(self):
#Control
self.ui.actionManual.triggered.connect(self.userManual.show)
+ self.ui.actionChangelog.triggered.connect(self.changelog.show)
self.ui.actionRebuild_Program_Database.triggered.connect(self.updateProgramDatabase)
self.ui.actionSettings.triggered.connect(self._reactMenu_settings)
self.ui.actionHide_in_System_Tray.triggered.connect(lambda: self.toggleVisible(force=False))
diff --git a/qtgui/resources/translations/config.pro b/qtgui/resources/translations/config.pro
index 19d23dd..d780fc4 100644
--- a/qtgui/resources/translations/config.pro
+++ b/qtgui/resources/translations/config.pro
@@ -1,3 +1,2 @@
-SOURCES = ../../addclientprompt.py ../../descriptiontextwidget.py ../../mainwindow.py ../../projectname.py ../../sessiontreecontroller.py ../../opensessioncontroller.py ../../systemtray.py ../../waitdialog.py ../../usermanual.py ../../designer/mainwindow.py ../../designer/newsession.py ../../designer/projectname.py ../../designer/settings.py ../../designer/usermanual.py
+SOURCES = ../../addclientprompt.py ../../changelog.py ../../descriptiontextwidget.py ../../mainwindow.py ../../projectname.py ../../sessiontreecontroller.py ../../opensessioncontroller.py ../../systemtray.py ../../waitdialog.py ../../usermanual.py ../../designer/mainwindow.py ../../designer/newsession.py ../../designer/projectname.py ../../designer/settings.py ../../designer/usermanual.py
TRANSLATIONS = de.ts it.ts
-