This repository has been archived on 2021-09-15. You can view files and clone it, but cannot push or open issues or pull requests.
L3GestionParking/src/c/Parking.py

121 lines
5.0 KiB
Python

"""
Module Controleur de gestion de parking
"""
from PyQt4 import QtGui, QtCore
from PyQt4.QtGui import QTableWidgetItem
from src.m.Parking import TypePlace, Parking
from src.v.MyQt import MyQWidget
from src.v.Ui_Admin import Ui_CreaParking
#Controleur de creation de parking
class CreaParking:
## Contructeur
# @param main Controleur parent
def __init__(self, main):
self._main = main
self._main.activity("Debut Creation Parking", self._main.lvl.INFO)
self._w = MyQWidget(self._main)
self._ui = Ui_CreaParking()
self._ui.setupUi(self._w)
# connect
self._ui.btn_addRow.clicked.connect(self.addRow)
self._ui.btn_rmRow.clicked.connect(self.rmRow)
self._ui.btn_valider.clicked.connect(self.valider)
self._ui.btn_annuler.clicked.connect(self.annuler)
# Validator
self._ui.lineEdit_nom.setValidator(
QtGui.QRegExpValidator(QtCore.QRegExp('^([0-9a-zA-Z\'àâéèêôùûçñãõÀÂÉÈÔÙÛÑÃÕÇ\s-]{2,30})$')))
self._ui.tableWidget.insertRow(self._ui.tableWidget.rowCount())
self.showWindow()
## Ajoute une ligne de creation de place
def addRow(self):
self._ui.tableWidget.insertRow(self._ui.tableWidget.rowCount())
## Enleve une ligne de creation de place
def rmRow(self):
self._ui.tableWidget.removeRow(self._ui.tableWidget.rowCount() - 1)
## Gestion annulation creation parking
def annuler(self):
result = QtGui.QMessageBox.question(self._w,
"Confirmer Fermeture...",
"Etes vous sur de vouloir abandonner ?\n"
"(Toute modification non enregistrée seras perdu)",
QtGui.QMessageBox.Yes | QtGui.QMessageBox.No)
if result == QtGui.QMessageBox.Yes:
self._main.activity("Annulation Creation Parking", self._main.lvl.INFO)
self._w.hide()
self._main.showWindow()
## Gestion validation de formulaire de creation de parking
def valider(self):
if self._ui.lineEdit_nom.text() == "":
self._main.activity("Erreur lors de la creations du Parking. Nom Invalide.\n", self._main.lvl.FAIL)
self.error("Nom Invalide!")
else:
try:
l = []
for i in range(0, self._ui.tableWidget.rowCount()):
l.append(TypePlace(None, int(self._ui.tableWidget.item(i, 0).text()),
int(self._ui.tableWidget.item(i, 1).text()),
int(self._ui.tableWidget.item(i, 2).text()),
float(self._ui.tableWidget.item(i, 4).text()),
int(self._ui.tableWidget.item(i, 3).text())))
p = Parking(None, self._ui.lineEdit_nom.text(), l)
self._main.activity("Ajout:" + str(p), self._main.lvl.INFO)
self._w.hide()
self._main.showWindow()
except Exception as e:
self._main.activity("Erreur lors de la creations du Parking \n" + str(e), self._main.lvl.FAIL)
self.error("Verifiez que votre saisie est valide !")
## Gestion affichage CreaParking
def showWindow(self):
self._w.show()
## Gestion affichage QDialog d'erreur
# @param msg le message d'erreur
def error(self, msg):
QtGui.QMessageBox.warning(self._w,
"Erreur ...",
"Erreur lors de la création du parking ...\n" +
msg
)
## Controleur d'affichage des details des places d'un parking existant
class DetailsPlaces(CreaParking):
## Contructeur
# @param main Controleur parent
# @param parking praking dont on veux afficher le détail
def __init__(self, main, parking):
self.__parking = parking
super(DetailsPlaces, self).__init__(main)
self._ui.lineEdit_nom.setText(parking.nom)
for p in parking.listeTypePlace :
row = self._ui.tableWidget.rowCount() - 1
if row != 0:
self._ui.tableWidget.insertRow(row)
self._ui.tableWidget.setItem(row, 0, QTableWidgetItem(str(p.hauteur)))
self._ui.tableWidget.setItem(row, 1, QTableWidgetItem(str(p.longueur)))
self._ui.tableWidget.setItem(row, 2, QTableWidgetItem(str(p.nombre)))
self._ui.tableWidget.setItem(row, 3, QTableWidgetItem(str(p.niveau)))
self._ui.tableWidget.setItem(row, 4, QTableWidgetItem(str(p.prix)))
self._ui.lineEdit_nom.setDisabled(True)
self._ui.tableWidget.setDisabled(True)
self._ui.btn_annuler.setVisible(False)
self._ui.btn_addRow.setVisible(False)
self._ui.btn_rmRow.setVisible(False)
## Gestion de retour sur le fenetre principal
def valider(self):
self._w.hide()
self._main.showWindow()