Update to Python3 and PyQt5

This commit is contained in:
Silvan Calarco 2020-07-18 17:10:34 +02:00
parent 15f7e46cc0
commit da269a7480

View File

@ -1,119 +1,123 @@
#!/usr/bin/python #!/usr/bin/python3
# -*- coding: utf-8 -*- # openmamba license-dialog
# Copyright (C) 2011 by michiamophil
# Copyright (C) 2011-2020 by Silvan Calarco
# Distributed under the terms of the GPL version 3 FLOSS License
import os #--Uscite possibili:
import sys #---: 0 -> licenza accettata #--Uscite possibili:
import gettext #---: 1 -> licenza rifiutata #---: 0 -> licenza accettata
from PyQt4 import QtGui, QtCore #---: 2 -> percorso licenza sbagliato o non presente o se l'argomento digitato è -h o --help #---: 1 -> licenza rifiutata
#---: 2 -> percorso licenza sbagliato o non presente o se l'argomento digitato è -h o --help
import os
import sys
import gettext
from PyQt5.QtWidgets import QDesktopWidget, QWidget, QApplication, QToolTip, QPushButton,\
QTextEdit, QGridLayout
from PyQt5.QtGui import QIcon, QFont
from PyQt5.QtCore import pyqtSignal
# Decisione presa in run-time # Decisione presa in run-time
imgAccetto = "object-select-symbolic" imgAccetto = "object-select-symbolic"
imgRifiuto = "window-close-symbolic" imgRifiuto = "window-close-symbolic"
imgForm = "document" imgForm = "document"
if (os.getenv('DESKTOP_SESSION')): if (os.getenv('DESKTOP_SESSION')):
desktop_session = QtCore.QString(os.getenv('DESKTOP_SESSION')) # Codice preso da mambatray desktop_session = os.getenv('DESKTOP_SESSION') # Codice preso da mambatray
if (desktop_session == 'default') or (desktop_session.left(3) == 'kde'): # Scelgo le icone di kde if desktop_session == 'default' or desktop_session[:3] == 'kde': # Scelgo le icone di kde
imgAccetto = "dialog-ok-apply" imgAccetto = "dialog-ok-apply"
imgRifiuto = "dialog-close" imgRifiuto = "dialog-close"
imgForm = "text-rtf" imgForm = "text-rtf"
def usage(): def usage():
print _("Usage: license-dialog /license/path") print(_("Usage: license-dialog /license/path"))
print _("License-dialog is a simple PyQt4 based license accept/refuse dialog") print(_("License-dialog is a simple PyQt5 based license accept/refuse dialog"))
gettext.install('license-dialog', '/usr/share/locale', unicode=1) gettext.install('license-dialog', '/usr/share/locale')
try: try:
path = sys.argv[1] path = sys.argv[1]
#si verifica se non si fornisce alcun argomento
except: except:
# si verifica se non si fornisce alcun argomento
usage() usage()
print _("Error: path not defined") print(_("Error: path not defined"))
sys.exit(2) sys.exit(2)
# controlla se la licenza esiste e la assegna a txt
#controlla se la licenza esiste e la assegna a txt
if path == "-h" or path == "--help": if path == "-h" or path == "--help":
usage() usage()
sys.exit(2) sys.exit(2)
#esce con 2 se è una cartella
elif not os.path.exists(path): elif not os.path.exists(path):
# esce con 2 se è una cartella
usage() usage()
print _("Error: Wrong path") print(_("Error: Wrong path"))
sys.exit(2) sys.exit(2)
elif os.path.isdir(path): elif os.path.isdir(path):
usage() usage()
print _("Error: path cannot be a directory") print(_("Error: path cannot be a directory"))
sys.exit(2) sys.exit(2)
licenza = open(path, "r") licenza = open(path, "r")
txtTp = licenza.read() txt = licenza.read()
#così vanno i caratteri accentati sulla QTextEdit
txt= txtTp.decode("utf-8")
licenza.close() licenza.close()
#centra il form sullo schermo #centra il form sullo schermo
def center(self): def center(self):
screen = QtGui.QDesktopWidget().screenGeometry() screen = QDesktopWidget().screenGeometry()
size = self.geometry() size = self.geometry()
self.move((screen.width()-size.width())/2, (screen.height()-size.height())/2) self.move((screen.width()-size.width())/2, (screen.height()-size.height())/2)
class Form(QWidget):
class Form(QtGui.QWidget):
def __init__(self, parent=None): def __init__(self, parent=None):
QtGui.QWidget.__init__(self, parent) QWidget.__init__(self, parent)
self.setWindowTitle(_("Licenze")) self.setWindowTitle(_("Licenze"))
self.setWindowIcon(QtGui.QIcon.fromTheme(imgForm)) self.setWindowIcon(QIcon.fromTheme(imgForm))
self.resize(500, 400) self.resize(500, 400)
center(self) center(self)
QtGui.QToolTip.setFont(QtGui.QFont('sans', 10)) QToolTip.setFont(QFont('sans', 10))
btnAccetto = QtGui.QPushButton(QtGui.QIcon.fromTheme(imgAccetto), _("I agree"))
btnAccetto.setToolTip(_("Click here if you want to accept the license"))
self.connect(btnAccetto, QtCore.SIGNAL('clicked()'), evtAccetto)
btnRifiuto = QtGui.QPushButton(QtGui.QIcon.fromTheme(imgRifiuto), _("I do not agree")) btnAccetto = QPushButton(QIcon.fromTheme(imgAccetto), _("I agree"))
btnAccetto.setToolTip(_("Click here if you want to accept the license"))
btnAccetto.clicked.connect(self.evtAccetto)
btnRifiuto = QPushButton(QIcon.fromTheme(imgRifiuto), _("I do not agree"))
btnRifiuto.setToolTip(_("Click here if you do <b>not</b> want to accept the license")) btnRifiuto.setToolTip(_("Click here if you do <b>not</b> want to accept the license"))
self.connect(btnRifiuto, QtCore.SIGNAL('clicked()'), evtRifiuto) btnRifiuto.clicked.connect(self.evtRifiuto)
licenza = QtGui.QTextEdit() licenza = QTextEdit()
licenza.setReadOnly(True) licenza.setReadOnly(True)
licenza.setPlainText(txt) licenza.setPlainText(txt)
grid = QtGui.QGridLayout() grid = QGridLayout()
grid.setSpacing(10) grid.setSpacing(10)
grid.addWidget(licenza, 1, 0, 1, 2) grid.addWidget(licenza, 1, 0, 1, 2)
grid.addWidget(btnRifiuto, 2, 0) grid.addWidget(btnRifiuto, 2, 0)
grid.addWidget(btnAccetto, 2, 1) grid.addWidget(btnAccetto, 2, 1)
self.setLayout(grid) self.setLayout(grid)
#annulla la chiusura con la x del window manager # annulla la chiusura con la x del window manager
def closeEvent(form, event): def closeEvent(form, event):
event.ignore() event.ignore()
def evtAccetto(self):
sys.exit(0)
def evtAccetto(): def evtRifiuto(self):
sys.exit(0) #mostra un messaggio:
#msg = QtGui.QMessageBox.question(form, _("Message"), _("Are you sure to refuse?"), QtGui.QMessageBox.Yes | QtGui.QMessageBox.No, QtGui.QMessageBox.No)
#if msg == QtGui.QMessageBox.Yes:
def evtRifiuto(): sys.exit(1)
#mostra un messaggio:
#msg = QtGui.QMessageBox.question(form, _("Message"), _("Are you sure to refuse?"), QtGui.QMessageBox.Yes | QtGui.QMessageBox.No, QtGui.QMessageBox.No)
#if msg == QtGui.QMessageBox.Yes:
sys.exit(1)
#crea la finestra di dialogo #crea la finestra di dialogo
app = QtGui.QApplication(sys.argv) app = QApplication(sys.argv)
form = Form() form = Form()
form.show() form.show()
sys.exit(app.exec_()) sys.exit(app.exec_())