Skip to content
Snippets Groups Projects
about_window.py 3.72 KiB
Newer Older
  • Learn to ignore specific revisions
  • import sys  # ONLY FOR DEBUG
    
    from qtpy.QtCore import Qt
    from qtpy.QtGui import QCursor, QPixmap
    from qtpy.QtWidgets import QApplication  # ONLY FOR DEBUG
    from qtpy.QtWidgets import (
        QDialog,
        QFrame,
        QHBoxLayout,
        QLabel,
        QPushButton,
        QToolTip,
        QVBoxLayout,
    )
    
    from b_asic._version import __version__
    
    
    class AboutWindow(QDialog):
    
        def __init__(self, window):
            super().__init__()
            self._window = window
            self.setWindowFlags(Qt.WindowTitleHint | Qt.WindowCloseButtonHint)
            self.setWindowTitle("About B-ASIC")
    
            self.dialog_layout = QVBoxLayout()
            self.setLayout(self.dialog_layout)
    
    
            self._add_information_to_layout()
    
        def _hover_text(self, url):
    
            # self.setWindowTitle(url) # When removing mouse, the title gets "B-ASIC Scheduler". Where does THAT come from?
            if url:
                QToolTip.showText(QCursor.pos(), url)
            else:
                QToolTip.hideText()
    
    
        def _add_information_to_layout(self):
    
            # |1 Title   |2        |
            # |  License |  Logo   |  <- layout12
            # |  Version |         |
            # ----------------------
            # |3 links     |4  OK  |  <- layout34
    
            label1 = QLabel(
    
                "# B-ASIC\n__Better ASIC and FPGA Signal Processing"
                " Toolbox__\n\n*Construct, simulate and analyze signal processing"
                " algorithms aimed at implementation on an ASIC or"
                " FPGA.*\n\nB-ASIC is developed by the <a"
                " href=\"https://liu.se/en/organisation/liu/isy/da\">Division of"
                " Computer Engineering</a> at <a"
                " href=\"https://liu.se/?l=en\">Linköping University</a>,"
                " Sweden.\n\nB-ASIC is released under the <a"
                " href=\"https://gitlab.liu.se/da/B-ASIC/-/blob/master/LICENSE\">MIT-license</a>"
                " and any extension to the program should follow that same"
                f" license.\n\n*Version: {__version__}*\n\nCopyright 2020-2023,"
                " Oscar Gustafsson et al."
    
            )
            label1.setTextFormat(Qt.MarkdownText)
            label1.setWordWrap(True)
            label1.setOpenExternalLinks(True)
    
            label1.linkHovered.connect(self._hover_text)
    
    
            self.logo2 = QLabel(self)
            self.logo2.setPixmap(
    
                QPixmap(
                    str(pathlib.Path(__file__).parent.resolve())
                    + "/../../logos/small_logo.png"
                ).scaledToWidth(100)
    
            )
            self.logo2.setFixedWidth(100)
    
            label3 = QLabel(
    
                """Additional resources: <a href="https://da.gitlab-pages.liu.se/B-ASIC/">documentation</a>,"""
                """ <a href="https://gitlab.liu.se/da/B-ASIC/">git repository</a>,"""
                """ <a href="https://gitlab.liu.se/da/B-ASIC/-/issues">report issues and suggestions</a>."""
    
            )
            label3.setOpenExternalLinks(True)
    
            label3.linkHovered.connect(self._hover_text)
    
    
            button4 = QPushButton()
            button4.setText("OK")
            button4.setFixedWidth(80)
            button4.clicked.connect(self.close)
    
            layout12 = QHBoxLayout()
            layout34 = QHBoxLayout()
    
            layout12.addWidget(label1)
            layout12.addWidget(self.logo2)
    
            layout34.addWidget(label3)
            layout34.addWidget(button4)
    
            hline = QFrame()
            hline.setFrameShape(QFrame.HLine)
            hline.setFrameShadow(QFrame.Sunken)
    
            self.dialog_layout.addLayout(layout12)
            self.dialog_layout.addWidget(hline)
            self.dialog_layout.addLayout(layout34)
    
    
    # ONLY FOR DEBUG below
    
    
    
    def show_about_window():
        """Simply show the about window."""
    
        app = QApplication(sys.argv)
        window = AboutWindow(QDialog)
        window.show()
        sys.exit(app.exec_())
    
    
    if __name__ == "__main__":