diff --git a/icons/Manuskript/logo-400x104.png b/icons/Manuskript/logo-400x104.png
new file mode 100644
index 00000000..56d0ba67
Binary files /dev/null and b/icons/Manuskript/logo-400x104.png differ
diff --git a/manuskript/mainWindow.py b/manuskript/mainWindow.py
index a511a7ba..2781f91a 100644
--- a/manuskript/mainWindow.py
+++ b/manuskript/mainWindow.py
@@ -18,6 +18,7 @@ from manuskript.models.plotModel import plotModel
from manuskript.models.worldModel import worldModel
from manuskript.settingsWindow import settingsWindow
from manuskript.ui import style
+from manuskript.ui.about import aboutDialog
from manuskript.ui.collapsibleDockWidgets import collapsibleDockWidgets
from manuskript.ui.exporters.exporter import exporterDialog
from manuskript.ui.helpLabel import helpLabel
@@ -107,6 +108,7 @@ class MainWindow(QMainWindow, Ui_MainWindow):
self.actCloseProject.triggered.connect(self.closeProject)
self.actQuit.triggered.connect(self.close)
self.actToolFrequency.triggered.connect(self.frequencyAnalyzer)
+ self.actAbout.triggered.connect(self.about)
self.generateViewMenu()
self.actModeGroup = QActionGroup(self)
@@ -798,6 +800,19 @@ class MainWindow(QMainWindow, Ui_MainWindow):
self.tblDebugPlots.selectionModel().currentIndex().row(),
Plot.steps.value)))
+ ###############################################################################
+ # HELP
+ ###############################################################################
+
+ def about(self):
+ self.dialog = aboutDialog(mw=self)
+ self.dialog.setFixedSize(self.dialog.size())
+ self.dialog.show()
+ # Center about dialog
+ r = self.dialog.geometry()
+ r2 = self.geometry()
+ self.dialog.move(r2.center() - r.center())
+
###############################################################################
# GENERAL AKA UNSORTED
###############################################################################
diff --git a/manuskript/ui/about.py b/manuskript/ui/about.py
new file mode 100644
index 00000000..aecb936b
--- /dev/null
+++ b/manuskript/ui/about.py
@@ -0,0 +1,48 @@
+# --!-- coding: utf8 --!--
+
+from PyQt5.Qt import PYQT_VERSION_STR
+from PyQt5.QtCore import QT_VERSION_STR
+from PyQt5.QtGui import QIcon, QPixmap
+from PyQt5.QtWidgets import QWidget
+from platform import python_version
+
+from manuskript.functions import appPath
+from manuskript.ui import about
+from manuskript.ui.about_ui import Ui_about
+from manuskript.version import getVersion
+
+class aboutDialog(QWidget, Ui_about):
+ def __init__(self, parent=None, mw=None):
+ QWidget.__init__(self, parent)
+ self.setupUi(self)
+ self.populateFields()
+ self.buttonBox.accepted.connect(self.accept)
+
+ def populateFields(self):
+ # Fill in all the fields in the About dialog
+ iconPic = appPath("icons/Manuskript/icon-64px.png")
+ self.setWindowIcon(QIcon(iconPic))
+
+ logoPic = QPixmap(appPath("icons/Manuskript/logo-400x104.png"))
+ self.labelLogo.setPixmap(logoPic)
+
+ self.labelManuskriptVersion.setText(self.tr("Version") + " " + getVersion())
+
+ self.labelWebsite.setText(
+ "" \
+ + "http://www.theologeek.ch/manuskript/" \
+ + "" )
+ self.labelWebsite.setOpenExternalLinks(True)
+
+ self.labelLicense.setText( \
+ "" \
+ + self.tr("GNU General Public License Version 3") \
+ + "" )
+ self.labelLicense.setOpenExternalLinks(True)
+
+ self.labelPythonVersion.setText(self.tr("Python") + " " + python_version())
+ self.labelPyQtVersion.setText(self.tr("PyQt") + " " + PYQT_VERSION_STR)
+ self.labelQtVersion.setText(self.tr("Qt") + " " + QT_VERSION_STR)
+
+ def accept(self):
+ self.close()
diff --git a/manuskript/ui/about_ui.py b/manuskript/ui/about_ui.py
new file mode 100644
index 00000000..e399ce35
--- /dev/null
+++ b/manuskript/ui/about_ui.py
@@ -0,0 +1,86 @@
+# -*- coding: utf-8 -*-
+
+# Form implementation generated from reading ui file 'manuskript/ui/about_ui.ui'
+#
+# Created by: PyQt5 UI code generator 5.5.1
+#
+# WARNING! All changes made in this file will be lost!
+
+from PyQt5 import QtCore, QtGui, QtWidgets
+
+class Ui_about(object):
+ def setupUi(self, about):
+ about.setObjectName("about")
+ about.setWindowModality(QtCore.Qt.ApplicationModal)
+ about.resize(445, 370)
+ icon = QtGui.QIcon()
+ icon.addPixmap(QtGui.QPixmap("../../icons/Manuskript/icon-64px.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off)
+ about.setWindowIcon(icon)
+ self.buttonBox = QtWidgets.QDialogButtonBox(about)
+ self.buttonBox.setGeometry(QtCore.QRect(20, 320, 391, 30))
+ self.buttonBox.setOrientation(QtCore.Qt.Horizontal)
+ self.buttonBox.setStandardButtons(QtWidgets.QDialogButtonBox.Ok)
+ self.buttonBox.setObjectName("buttonBox")
+ self.labelLogo = QtWidgets.QLabel(about)
+ self.labelLogo.setGeometry(QtCore.QRect(30, 20, 381, 111))
+ self.labelLogo.setText("")
+ self.labelLogo.setPixmap(QtGui.QPixmap("../../icons/Manuskript/logo-400x104.png"))
+ self.labelLogo.setObjectName("labelLogo")
+ self.labelCopyright = QtWidgets.QLabel(about)
+ self.labelCopyright.setGeometry(QtCore.QRect(70, 180, 361, 21))
+ self.labelCopyright.setText("Copyright © 2015-2017 Olivier Keshavjee")
+ self.labelCopyright.setTextInteractionFlags(QtCore.Qt.LinksAccessibleByMouse|QtCore.Qt.TextSelectableByMouse)
+ self.labelCopyright.setObjectName("labelCopyright")
+ self.labelLicense = QtWidgets.QLabel(about)
+ self.labelLicense.setGeometry(QtCore.QRect(70, 200, 361, 20))
+ self.labelLicense.setText("GNU General Public License Version 3")
+ self.labelLicense.setTextInteractionFlags(QtCore.Qt.LinksAccessibleByMouse|QtCore.Qt.TextSelectableByMouse)
+ self.labelLicense.setObjectName("labelLicense")
+ self.labelManuskriptVersion = QtWidgets.QLabel(about)
+ self.labelManuskriptVersion.setGeometry(QtCore.QRect(130, 130, 301, 20))
+ font = QtGui.QFont()
+ font.setBold(True)
+ font.setWeight(75)
+ self.labelManuskriptVersion.setFont(font)
+ self.labelManuskriptVersion.setText("Version")
+ self.labelManuskriptVersion.setTextInteractionFlags(QtCore.Qt.LinksAccessibleByMouse|QtCore.Qt.TextSelectableByMouse)
+ self.labelManuskriptVersion.setObjectName("labelManuskriptVersion")
+ self.labelSoftwareHeading = QtWidgets.QLabel(about)
+ self.labelSoftwareHeading.setGeometry(QtCore.QRect(40, 240, 391, 20))
+ font = QtGui.QFont()
+ font.setBold(True)
+ font.setWeight(75)
+ self.labelSoftwareHeading.setFont(font)
+ self.labelSoftwareHeading.setText("Software Versions in Use:")
+ self.labelSoftwareHeading.setTextInteractionFlags(QtCore.Qt.LinksAccessibleByMouse|QtCore.Qt.TextSelectableByMouse)
+ self.labelSoftwareHeading.setObjectName("labelSoftwareHeading")
+ self.labelPythonVersion = QtWidgets.QLabel(about)
+ self.labelPythonVersion.setGeometry(QtCore.QRect(70, 270, 361, 18))
+ self.labelPythonVersion.setText("Python Version")
+ self.labelPythonVersion.setTextInteractionFlags(QtCore.Qt.LinksAccessibleByMouse|QtCore.Qt.TextSelectableByMouse)
+ self.labelPythonVersion.setObjectName("labelPythonVersion")
+ self.labelQtVersion = QtWidgets.QLabel(about)
+ self.labelQtVersion.setGeometry(QtCore.QRect(70, 310, 361, 18))
+ self.labelQtVersion.setText("Qt Version")
+ self.labelQtVersion.setTextInteractionFlags(QtCore.Qt.LinksAccessibleByMouse|QtCore.Qt.TextSelectableByMouse)
+ self.labelQtVersion.setObjectName("labelQtVersion")
+ self.labelPyQtVersion = QtWidgets.QLabel(about)
+ self.labelPyQtVersion.setGeometry(QtCore.QRect(70, 290, 361, 18))
+ self.labelPyQtVersion.setText("PyQt Version")
+ self.labelPyQtVersion.setTextInteractionFlags(QtCore.Qt.LinksAccessibleByMouse|QtCore.Qt.TextSelectableByMouse)
+ self.labelPyQtVersion.setObjectName("labelPyQtVersion")
+ self.labelWebsite = QtWidgets.QLabel(about)
+ self.labelWebsite.setGeometry(QtCore.QRect(130, 150, 301, 20))
+ self.labelWebsite.setText("http://www.theologeek.ch/manuskript/")
+ self.labelWebsite.setTextInteractionFlags(QtCore.Qt.LinksAccessibleByMouse|QtCore.Qt.TextSelectableByMouse)
+ self.labelWebsite.setObjectName("labelWebsite")
+
+ self.retranslateUi(about)
+ self.buttonBox.accepted.connect(about.accept)
+ QtCore.QMetaObject.connectSlotsByName(about)
+
+ def retranslateUi(self, about):
+ _translate = QtCore.QCoreApplication.translate
+ about.setWindowTitle(_translate("about", "About Manuskript"))
+ self.labelLogo.setToolTip(_translate("about", "Manuskript"))
+
diff --git a/manuskript/ui/about_ui.ui b/manuskript/ui/about_ui.ui
new file mode 100644
index 00000000..dcf10b75
--- /dev/null
+++ b/manuskript/ui/about_ui.ui
@@ -0,0 +1,218 @@
+
+
+ about
+
+
+ Qt::ApplicationModal
+
+
+
+ 0
+ 0
+ 445
+ 370
+
+
+
+ About Manuskript
+
+
+
+ ../../icons/Manuskript/icon-64px.png../../icons/Manuskript/icon-64px.png
+
+
+
+
+ 20
+ 320
+ 391
+ 30
+
+
+
+ Qt::Horizontal
+
+
+ QDialogButtonBox::Ok
+
+
+
+
+
+ 30
+ 20
+ 381
+ 111
+
+
+
+ Manuskript
+
+
+
+
+
+ ../../icons/Manuskript/logo-400x104.png
+
+
+
+
+
+ 70
+ 180
+ 361
+ 21
+
+
+
+ Copyright © 2015-2017 Olivier Keshavjee
+
+
+ Qt::LinksAccessibleByMouse|Qt::TextSelectableByMouse
+
+
+
+
+
+ 70
+ 200
+ 361
+ 20
+
+
+
+ GNU General Public License Version 3
+
+
+ Qt::LinksAccessibleByMouse|Qt::TextSelectableByMouse
+
+
+
+
+
+ 130
+ 130
+ 301
+ 20
+
+
+
+
+ 75
+ true
+
+
+
+ Version
+
+
+ Qt::LinksAccessibleByMouse|Qt::TextSelectableByMouse
+
+
+
+
+
+ 40
+ 240
+ 391
+ 20
+
+
+
+
+ 75
+ true
+
+
+
+ Software Versions in Use:
+
+
+ Qt::LinksAccessibleByMouse|Qt::TextSelectableByMouse
+
+
+
+
+
+ 70
+ 270
+ 361
+ 18
+
+
+
+ Python Version
+
+
+ Qt::LinksAccessibleByMouse|Qt::TextSelectableByMouse
+
+
+
+
+
+ 70
+ 310
+ 361
+ 18
+
+
+
+ Qt Version
+
+
+ Qt::LinksAccessibleByMouse|Qt::TextSelectableByMouse
+
+
+
+
+
+ 70
+ 290
+ 361
+ 18
+
+
+
+ PyQt Version
+
+
+ Qt::LinksAccessibleByMouse|Qt::TextSelectableByMouse
+
+
+
+
+
+ 130
+ 150
+ 301
+ 20
+
+
+
+ http://www.theologeek.ch/manuskript/
+
+
+ Qt::LinksAccessibleByMouse|Qt::TextSelectableByMouse
+
+
+
+
+
+
+ buttonBox
+ accepted()
+ about
+ accept()
+
+
+ 248
+ 254
+
+
+ 157
+ 274
+
+
+
+
+
diff --git a/manuskript/ui/mainWindow.py b/manuskript/ui/mainWindow.py
index 5fb10e28..a10ce6d7 100644
--- a/manuskript/ui/mainWindow.py
+++ b/manuskript/ui/mainWindow.py
@@ -2,7 +2,7 @@
# Form implementation generated from reading ui file 'manuskript/ui/mainWindow.ui'
#
-# Created by: PyQt5 UI code generator 5.4.2
+# Created by: PyQt5 UI code generator 5.5.1
#
# WARNING! All changes made in this file will be lost!
@@ -1016,7 +1016,7 @@ class Ui_MainWindow(object):
self.horizontalLayout_2.addWidget(self.stack)
MainWindow.setCentralWidget(self.centralwidget)
self.menubar = QtWidgets.QMenuBar(MainWindow)
- self.menubar.setGeometry(QtCore.QRect(0, 0, 1112, 20))
+ self.menubar.setGeometry(QtCore.QRect(0, 0, 1112, 30))
self.menubar.setObjectName("menubar")
self.menuFile = QtWidgets.QMenu(self.menubar)
self.menuFile.setObjectName("menuFile")
@@ -1159,6 +1159,8 @@ class Ui_MainWindow(object):
self.actCompile.setObjectName("actCompile")
self.actToolFrequency = QtWidgets.QAction(MainWindow)
self.actToolFrequency.setObjectName("actToolFrequency")
+ self.actAbout = QtWidgets.QAction(MainWindow)
+ self.actAbout.setObjectName("actAbout")
self.menuFile.addAction(self.actOpen)
self.menuFile.addAction(self.menuRecents.menuAction())
self.menuFile.addAction(self.actSave)
@@ -1169,6 +1171,7 @@ class Ui_MainWindow(object):
self.menuFile.addSeparator()
self.menuFile.addAction(self.actQuit)
self.menuHelp.addAction(self.actShowHelp)
+ self.menuHelp.addAction(self.actAbout)
self.menuTools.addAction(self.actSpellcheck)
self.menuTools.addAction(self.actToolFrequency)
self.menuEdit.addAction(self.actLabels)
@@ -1323,6 +1326,8 @@ class Ui_MainWindow(object):
self.actCompile.setText(_translate("MainWindow", "Co&mpile"))
self.actCompile.setShortcut(_translate("MainWindow", "F6"))
self.actToolFrequency.setText(_translate("MainWindow", "&Frequency Analyzer"))
+ self.actAbout.setText(_translate("MainWindow", "&About"))
+ self.actAbout.setToolTip(_translate("MainWindow", "About Manuskript"))
from manuskript.ui.cheatSheet import cheatSheet
from manuskript.ui.editors.mainEditor import mainEditor
diff --git a/manuskript/ui/mainWindow.ui b/manuskript/ui/mainWindow.ui
index 6865a99b..4b7890f2 100644
--- a/manuskript/ui/mainWindow.ui
+++ b/manuskript/ui/mainWindow.ui
@@ -1557,8 +1557,7 @@
-
-
+ ..
true
@@ -2045,7 +2044,7 @@
0
0
1112
- 20
+ 30
@@ -2077,6 +2075,7 @@
&Help
+