From 6eba63909a763308acaea2bd78f8d4b3e9904232 Mon Sep 17 00:00:00 2001 From: Taka Date: Thu, 4 May 2017 04:07:51 +0000 Subject: [PATCH] Added an About box. --- about_widget.py | 41 +++++++++ license.txt | 11 +++ main_window.py | 10 ++ resources/pacman-ghost.png | Bin 0 -> 5834 bytes ui/about_widget.ui | 183 +++++++++++++++++++++++++++++++++++++ 5 files changed, 245 insertions(+) create mode 100644 about_widget.py create mode 100755 license.txt create mode 100644 resources/pacman-ghost.png create mode 100644 ui/about_widget.ui diff --git a/about_widget.py b/about_widget.py new file mode 100644 index 0000000..4177039 --- /dev/null +++ b/about_widget.py @@ -0,0 +1,41 @@ +import os + +from PyQt5 import uic +from PyQt5.QtWidgets import QDialog , QFrame +from PyQt5.QtGui import QPixmap + +from constants import * +import globals + +# --------------------------------------------------------------------- + +class AboutWidget( QDialog ) : + """Show an About box.""" + + def __init__( self , parent ) : + # initialize + super().__init__() + # initialize the widget + uic.loadUi( os.path.join(globals.base_dir,"ui/about_widget.ui") , self ) + self.setMinimumSize( self.size() ) + self.lbl_app_icon.setPixmap( + QPixmap( os.path.join( globals.base_dir , "resources/app.ico" ) ) + ) + self.lbl_app_icon.setFrameStyle( QFrame.NoFrame ) + self.lbl_app_name.setText( " {} ({}) ".format( APP_NAME , APP_VERSION ) ) + self.lbl_avatar.setPixmap( + QPixmap( os.path.join( globals.base_dir , "resources/pacman-ghost.png" ) ) \ + .scaled( self.lbl_avatar.size() ) + ) + self.lbl_avatar.setFrameStyle( QFrame.NoFrame ) + # load the dialog + try : + with open( os.path.join( globals.base_dir , "license.txt" ) , "r" ) as fp : + buf = fp.read() + except Exception as ex : + buf = str(ex) + self.lbl_license.setText( buf ) + self.lbl_license.setFrameStyle( QFrame.NoFrame ) + # connect our handlers + self.btn_ok.clicked.connect( self.close ) + diff --git a/license.txt b/license.txt new file mode 100755 index 0000000..ecd508b --- /dev/null +++ b/license.txt @@ -0,0 +1,11 @@ +This software is provided 'as-is', without any express or implied warranty. + +In no event will the author be held liable for any damages arising from the use of this software. + +Permission is granted to anyone to use this software for any non-commercial purpose and to alter it and redistribute it freely, subject to the following restrictions: + +(*) The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software, an acknowledgment is requested but not required. + +(*) Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. Altered source is encouraged to be submitted back to the original author so it can be shared with the community. Please share your changes. + +(*) This notice may not be removed or altered from any source distribution. \ No newline at end of file diff --git a/main_window.py b/main_window.py index 185b514..ff2a7a0 100644 --- a/main_window.py +++ b/main_window.py @@ -12,6 +12,7 @@ from constants import * import globals from add_card_widget import AddCardWidget from startup_widget import StartupWidget +from about_widget import AboutWidget # --------------------------------------------------------------------- @@ -73,6 +74,11 @@ class MainWindow( QMainWindow ) : action.setStatusTip( "Close the program." ) action.triggered.connect( self.close ) file_menu.addAction( action ) + help_menu = menu_bar.addMenu( "&Help" ) + about_action = QAction( "&About" , self ) + about_action.setStatusTip( "About this program." ) + about_action.triggered.connect( self.on_about ) + help_menu.addAction( about_action ) # restore the window geometry buf = globals.app_settings.value( MAINWINDOW_GEOMETRY ) if buf : @@ -240,3 +246,7 @@ class MainWindow( QMainWindow ) : return self.tab_widget.removeTab( index ) self._update_ui() + + def on_about( self ) : + """Show an About box.""" + AboutWidget( self ).exec_() diff --git a/resources/pacman-ghost.png b/resources/pacman-ghost.png new file mode 100644 index 0000000000000000000000000000000000000000..4316a7fc6a9e0bf7e0202cec916fdf8c6fd8b106 GIT binary patch literal 5834 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 literal 0 HcmV?d00001 diff --git a/ui/about_widget.ui b/ui/about_widget.ui new file mode 100644 index 0000000..ad3764b --- /dev/null +++ b/ui/about_widget.ui @@ -0,0 +1,183 @@ + + + AboutDialog + + + + 0 + 0 + 508 + 434 + + + + + + + + 0 + 50 + + + + + 16777215 + 50 + + + + + + 0 + 0 + 50 + 50 + + + + QFrame::Box + + + + + + + + + 60 + 0 + 281 + 21 + + + + + 16 + + + + *** APP NAME *** + + + Qt::AlignLeading|Qt::AlignLeft|Qt::AlignTop + + + + + + 60 + 26 + 121 + 21 + + + + + 8 + true + + + + <html> written by <i>Pacman Ghost</i> </html> + + + + + + 180 + 25 + 21 + 21 + + + + QFrame::Box + + + + + + + + + + + + 0 + 0 + + + + <html> Source code is available <a href="https://github.com/pacman-ghost/asl_cards">here</a>. </html> + + + true + + + Qt::LinksAccessibleByKeyboard|Qt::LinksAccessibleByMouse + + + + + + + + 0 + 0 + + + + <html> Released under an MIT-like license: </html> + + + + + + + 20 + + + + + + 0 + 100 + + + + + 9 + true + + + + QFrame::Box + + + *** LICENSE *** + + + Qt::AlignLeading|Qt::AlignLeft|Qt::AlignTop + + + true + + + + + + + + + OK + + + true + + + + + + + +