From 083849161f075878e4175cd03cb7afa83d64e7f5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=B6rg=20Frings-F=C3=BCrst?= Date: Thu, 6 Jul 2017 22:55:08 +0200 Subject: New upstream version 0.9.0 --- raphodo/aboutdialog.py | 256 +++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 256 insertions(+) create mode 100644 raphodo/aboutdialog.py (limited to 'raphodo/aboutdialog.py') diff --git a/raphodo/aboutdialog.py b/raphodo/aboutdialog.py new file mode 100644 index 0000000..9df1cfa --- /dev/null +++ b/raphodo/aboutdialog.py @@ -0,0 +1,256 @@ +# Copyright (C) 2016-2017 Damon Lynch + +# This file is part of Rapid Photo Downloader. +# +# Rapid Photo Downloader 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. +# +# Rapid Photo Downloader 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 Rapid Photo Downloader. If not, +# see . + +""" +Display an About window +""" + +__author__ = 'Damon Lynch' +__copyright__ = "Copyright 2016-2017, Damon Lynch" + +from gettext import gettext as _ + +from PyQt5.QtCore import Qt, pyqtSlot +from PyQt5.QtGui import QPixmap, QFont + +from PyQt5.QtWidgets import (QDialog, QLabel, QVBoxLayout, QDialogButtonBox, QSizePolicy, + QHBoxLayout, QStackedWidget, QWidget, QScrollArea, QPushButton) + +import raphodo.qrc_resources +import raphodo.__about__ as __about__ + + +class AboutDialog(QDialog): + """ + Display an About window + """ + + def __init__(self, parent=None) -> None: + super().__init__(parent) + + self.setWindowFlags(Qt.Window | Qt.FramelessWindowHint) + + self.setObjectName('AboutDialog') + self.setStyleSheet('QDialog#AboutDialog {background-image: url(:/splashscreen.png);}') + pixmap = QPixmap(':/splashscreen.png') + self.setFixedSize(pixmap.size()) + + # These values are derived from the splash screen image contents. + # If the image changes, so should these + white_box_height = 80 + title_bottom = 45 + left_margin = 16 + + transparency = "rgba(0, 0, 0, 200)" + + # Standard About view + + msg = """Copyright © 2007-2017 Damon Lynch.

+ + www.damonlynch.net/rapid

+ This program comes with absolutely no warranty.
+ See the GNU General + Public License, + version 3 or later for details. + """ % dict(link_style='style="color: white;"') + + details = QLabel(msg) + + style_sheet = """QLabel { + color: white; + background-color: %(transparency)s; + margin-left: 0px; + padding-left: %(left_margin)dpx; + padding-top: 6px; + padding-right: 6px; + padding-bottom: 6px; + }""" % dict(left_margin=left_margin, transparency=transparency) + + details.setStyleSheet(style_sheet) + details.setOpenExternalLinks(True) + details.setSizePolicy(QSizePolicy.Minimum, QSizePolicy.Minimum) + font = self.font() # type: QFont + font_size = font.pointSize() - 2 + font.setPointSize(font_size) + details.setFont(font) + + aboutLayout = QVBoxLayout() + aboutLayout.setContentsMargins(0, 0, 0, 0) + aboutLayout.addSpacing(150) + detailsLayout = QHBoxLayout() + detailsLayout.setContentsMargins(0, 0, 0, 0) + detailsLayout.addWidget(details) + detailsLayout.addStretch(10) + aboutLayout.addLayout(detailsLayout) + aboutLayout.addStretch(10) + + about = QWidget() + about.setLayout(aboutLayout) + + # Credits view + + credits_text = """ + Copyright © 2007-2017 Damon Lynch. + Portions copyright © 2008-2015 Canonical Ltd. + Portions copyright © 2013 Bernard Baeyens. + Portions copyright © 2012-2015 Jim Easterbrook. + Portions copyright © 2012 Sven Marnach. + + Photo %(photolink)s copyright © 2014 Damon Lynch, all rights reserved. + Camera icon courtesy %(artlink1)s. + Video camera icon courtesy %(artlink2)s. + Home icon courtesy %(artlink3)s. + Speech bubble courtesy %(artlink4)s. + Lightbulb icon courtesy %(artlink5)s. + + Translators: + + Anton Alyab'ev + Lőrincz András + Michel Ange + Tobias Bannert + Adolfo Jayme Barrientos + Alain J. Baudrez + Mohammed Belkacem + Kevin Brubeck Unhammer + Pavel Borecki + Bert + Martin Dahl Moe + Marco de Freitas + Martin Egger + Tauno Erik + Sergiy Gavrylov + Emanuele Grande + Torben Gundtofte-Bruun + Мирослав Николић + Joachim Johansson + Jean-Marc Lartigue + Miroslav Matejaš + Nicolás M. Zahlut + Erik M + Toni Lähdekorpi + Jose Luis Navarro + Tomas Novak + Abel O'Rian + Balazs Oveges + Daniel Paessler + Miloš Popović + Michal Predotka + Ye Qing + Luca Reverberi + Mikko Ruohola + Ahmed Shubbar + Sergei Sedov + Marco Solari + Jose Luis Tirado + Ilya Tsimokhin + Ulf Urdén + Julien Valroff + Dimitris Xenakis + Aron Xu + Koji Yokota + 梁其学 + """ + + for i, j in (('<', '<'), ('>', '>'), ('\n', '
\n')): + credits_text = credits_text.replace(i, j) + + credits_text = credits_text % dict( + photolink="""Afghan Men Pulling Heavy Load""", + artlink1='Vincent Le Moign', + artlink2="""The + Pictographers""", + artlink3='Enes' + ' Dal', + artlink4='Icons Solid', + artlink5='Icon Coon' + ) + + style_sheet = """QLabel { + background-color: rgba(0, 0, 0, 0); + color: white; + padding-left: %(left_margin)dpx; + padding-top: 6px; + padding-right: 6px; + padding-bottom: 6px; + }""" % dict(left_margin=left_margin) + + creditsLabel = QLabel(credits_text) + creditsLabel.setFont(font) + creditsLabel.setStyleSheet(style_sheet) + creditsLabel.setOpenExternalLinks(True) + + credits = QScrollArea() + credits.setWidget(creditsLabel) + style_sheet = """QScrollArea { + background-color: %(transparency)s; + border: 0px; + } + """ % dict(transparency=transparency) + credits.setStyleSheet(style_sheet) + + mainLayout = QVBoxLayout() + + self.stack = QStackedWidget() + self.stack.addWidget(about) + self.stack.addWidget(credits) + self.stack.setSizePolicy(QSizePolicy.Expanding, QSizePolicy.Expanding) + + buttonBox = QDialogButtonBox() + closeButton = buttonBox.addButton(QDialogButtonBox.Close) # type: QPushButton + self.creditsButton = buttonBox.addButton(_('Credits'), QDialogButtonBox.HelpRole) # type: QPushButton + self.creditsButton.setDefault(False) + self.creditsButton.setCheckable(True) + closeButton.setDefault(True) + + buttonLayout = QVBoxLayout() + buttonLayout.addWidget(buttonBox) + buttonLayout.setContentsMargins(left_margin, left_margin, left_margin, left_margin) + + mainLayout.setContentsMargins(0, 0, 0, 0) + + version = QLabel(__about__.__version__) + version.setFixedHeight(white_box_height-title_bottom) + + style_sheet = """QLabel { + padding-left: %(left_margin)dpx; + }""" % dict(left_margin=left_margin) + + version.setStyleSheet(style_sheet) + + mainLayout.addSpacing(title_bottom) + mainLayout.addWidget(version) + mainLayout.addWidget(self.stack) + mainLayout.addLayout(buttonLayout) + + self.setLayout(mainLayout) + + buttonBox.rejected.connect(self.reject) + buttonBox.helpRequested.connect(self.showCredits) + + closeButton.setFocus() + + @pyqtSlot() + def showCredits(self) -> None: + if self.creditsButton.isChecked(): + self.stack.setCurrentIndex(1) + else: + self.stack.setCurrentIndex(0) + + -- cgit v1.2.3