From 93d552265ff4a2d6e8dbc6b250068d8e2e15ab65 Mon Sep 17 00:00:00 2001 From: Jan Grewe Date: Sat, 9 Jan 2021 14:39:31 +0100 Subject: [PATCH] [about] add about dialog --- nixview/ui/about.py | 57 +++++++++++++++++++++++++++++++++++++++ nixview/ui/main_window.py | 13 +++++++++ setup.py | 7 ++++- 3 files changed, 76 insertions(+), 1 deletion(-) create mode 100644 nixview/ui/about.py diff --git a/nixview/ui/about.py b/nixview/ui/about.py new file mode 100644 index 0000000..4320ebe --- /dev/null +++ b/nixview/ui/about.py @@ -0,0 +1,57 @@ +import os + +from PyQt5.QtGui import QPixmap +import nixview.constants as cnst +import nixview.info + +from PyQt5.QtWidgets import QDialog, QDialogButtonBox, QLabel, QPushButton, QTextEdit, QVBoxLayout, QWidget +from PyQt5.QtCore import Qt, pyqtSignal + +class AboutDialog(QDialog): + + def __init__(self, parent=None) -> None: + super().__init__(parent=parent) + self.setModal(True) + about = About(self) + self.setLayout(QVBoxLayout()) + self.layout().addWidget(about) + bbox = QDialogButtonBox(QDialogButtonBox.StandardButton.Ok) + bbox.accepted.connect(self.accept) + self.layout().addWidget(bbox) + +class About(QWidget): + + def __init__(self, parent=None) -> None: + super().__init__(parent=parent) + self.setLayout(QVBoxLayout()) + + heading = QLabel("NixView") + font = heading.font() + font.setPointSize(18) + font.setBold(True) + heading.setFont(font) + heading.setAlignment(Qt.AlignCenter) + subheading = QLabel("viewer for nix data files\nby Jan Grewe") + subheading.setAlignment(Qt.AlignCenter) + nix_link = QLabel("https://github.com/g-node/nix") + nix_link.setOpenExternalLinks(True) + nix_link.setAlignment(Qt.AlignCenter) + rtd_link = QLabel("https://nixio.readthedocs.io/en/master/") + rtd_link.setOpenExternalLinks(True) + rtd_link.setAlignment(Qt.AlignCenter) + + iconlabel = QLabel() + pixmap = QPixmap(os.path.join(cnst.ICONS_FOLDER, "nix_logo.png")) + s = pixmap.size() + new_height = int(s.height() * 300/s.width()) + pixmap = pixmap.scaled(300, new_height, Qt.KeepAspectRatio, Qt.FastTransformation) + iconlabel.setPixmap(pixmap) + iconlabel.setMaximumWidth(300) + iconlabel.setAlignment(Qt.AlignCenter) + iconlabel.setScaledContents(True) + + self.layout().addWidget(heading) + self.layout().addWidget(subheading) + self.layout().addWidget(iconlabel) + self.layout().addWidget(nix_link) + self.layout().addWidget(rtd_link) \ No newline at end of file diff --git a/nixview/ui/main_window.py b/nixview/ui/main_window.py index 8200e8d..150c92e 100644 --- a/nixview/ui/main_window.py +++ b/nixview/ui/main_window.py @@ -8,6 +8,7 @@ from nixview.file_handler import FileHandler, NodeType import nixview.constants as cnst import nixview.communicator as comm from nixview.ui.central_widget import CentralWidget +from nixview.ui.about import AboutDialog class NixView(QMainWindow): @@ -68,6 +69,12 @@ class NixView(QMainWindow): self._table_action.setShortcut(QKeySequence("Ctrl+t")) self._table_action.setEnabled(False) # self._table_action.triggered.connect(self.on_file_close) + + self._about_action = QAction("about") + self._about_action.setStatusTip("Show about dialog") + self._about_action.setEnabled(True) + self._about_action.triggered.connect(self.on_about) + self.create_toolbar() self.create_menu() @@ -103,6 +110,8 @@ class NixView(QMainWindow): plot_menu.addAction(self._plot_action) plot_menu.addAction(self._table_action) + help_menu = menu.addMenu("&Help") + help_menu.addAction(self._about_action) self.setMenuBar(menu) def _update_recent_files(self, filename): @@ -147,3 +156,7 @@ class NixView(QMainWindow): def on_item_plot(self, s): if self._current_item is not None: self._cw.plot_item(self._current_item) + + def on_about(self, e): + about = AboutDialog(self) + about.show() \ No newline at end of file diff --git a/setup.py b/setup.py index 4717cad..408b701 100644 --- a/setup.py +++ b/setup.py @@ -25,6 +25,8 @@ with open(README) as f: packages = [ "nixview", + "nixview.ui", + "nixview.data_models" ] install_req = ["nixio>=1.4.0", "PyQt5"] @@ -48,5 +50,8 @@ setup( long_description_content_type="text/markdown", classifiers=CLASSIFIERS, license="BSD", - entry_points={"gui_scripts": ["nixview = nixview:main []"]} + entry_points={ + "gui_scripts": ["nixview = nixview:main []"], + "console_scripts": ["nixview = nixview:main []"] + } ) \ No newline at end of file