class MainWindowBiblio(QMainWindow, Ui_MainWindowBiblio):
def __init__(self, parent=None):
…
self.pushButtonSauvegarder.setEnabled(False)
for lineEdit in (self.lineEditTitre, self.lineEditAuteur, self.lineEditEditeur):
lineEdit.textEdited.connect(self.declareSaisieEnCours)
self.comboBoxGenre.currentIndexChanged.connect( self.declareSaisieEnCours)
self.dateEditAnnee.dateChanged.connect(self.declareSaisieEnCours)
self.plainTextEditResume.textChanged.connect(self.declareSaisieEnCours)
self.doubleSpinBoxPrix.valueChanged.connect(self.declareSaisieEnCours) def
declareSaisieEnCours(self): self.pushButtonNouveau.setEnabled(False)
saisieValide = len(self.lineEditTitre.text().strip()) > 0
self.pushButtonSauvegarder.setEnabled(saisieValide) def
modificationAEnregistrer(self,fichierNonEnregistre): …
self.pushButtonNouveau.setEnabled(True)
self.pushButtonSauvegarder.setEnabled(False) def
on_treeViewLivres_selectionChanged(self,selected,deselected): indexesSelection =
selected.indexes() if self.pushButtonSauvegarder.isEnabled(): reponse =
QMessageBox.question(self,'Confirmation', 'Abandonner la saisie en cours ?',
QMessageBox.Yes,QMessageBox.No) if reponse == QMessageBox.No:
selectionModel = self.treeViewLivres.selectionModel()
selectionModel.selectionChanged.disconnect(
self.on_treeViewLivres_selectionChanged)
selectionModel.select(selected,QItemSelectionModel.Deselect)
selectionModel.select(deselected,QItemSelectionModel.Select)
selectionModel.selectionChanged.connect( self.on_treeViewLivres_selectionChanged)
return if len(indexesSelection) == 0: self.effaceLivre()
self.pushButtonSupprimer.setEnabled(False) else: indexSelection =
indexesSelection[0] indiceLivreSelectionne = indexSelection.row()
self.afficheLivre(self.modeleTableBiblio.livres[ indiceLivreSelectionne])
self.pushButtonSupprimer.setEnabled(True) self.pushButtonNouveau.setEnabled(True)
self.pushButtonSauvegarder.setEnabled(False) @pyqtSlot() def
on_pushButtonNouveau_clicked(self): …
self.pushButtonSauvegarder.setEnabled(False)
À l'initialisation, on commence par rendre le bouton Sauvegarder inactivable
(comme il n'y a pas encore eu de saisie).
Comme on veut détecter tout changement sur n'importe lequel des champs de saisie,
129
def __init__(self, parent=None):
…
self.pushButtonSauvegarder.setEnabled(False)
for lineEdit in (self.lineEditTitre, self.lineEditAuteur, self.lineEditEditeur):
lineEdit.textEdited.connect(self.declareSaisieEnCours)
self.comboBoxGenre.currentIndexChanged.connect( self.declareSaisieEnCours)
self.dateEditAnnee.dateChanged.connect(self.declareSaisieEnCours)
self.plainTextEditResume.textChanged.connect(self.declareSaisieEnCours)
self.doubleSpinBoxPrix.valueChanged.connect(self.declareSaisieEnCours) def
declareSaisieEnCours(self): self.pushButtonNouveau.setEnabled(False)
saisieValide = len(self.lineEditTitre.text().strip()) > 0
self.pushButtonSauvegarder.setEnabled(saisieValide) def
modificationAEnregistrer(self,fichierNonEnregistre): …
self.pushButtonNouveau.setEnabled(True)
self.pushButtonSauvegarder.setEnabled(False) def
on_treeViewLivres_selectionChanged(self,selected,deselected): indexesSelection =
selected.indexes() if self.pushButtonSauvegarder.isEnabled(): reponse =
QMessageBox.question(self,'Confirmation', 'Abandonner la saisie en cours ?',
QMessageBox.Yes,QMessageBox.No) if reponse == QMessageBox.No:
selectionModel = self.treeViewLivres.selectionModel()
selectionModel.selectionChanged.disconnect(
self.on_treeViewLivres_selectionChanged)
selectionModel.select(selected,QItemSelectionModel.Deselect)
selectionModel.select(deselected,QItemSelectionModel.Select)
selectionModel.selectionChanged.connect( self.on_treeViewLivres_selectionChanged)
return if len(indexesSelection) == 0: self.effaceLivre()
self.pushButtonSupprimer.setEnabled(False) else: indexSelection =
indexesSelection[0] indiceLivreSelectionne = indexSelection.row()
self.afficheLivre(self.modeleTableBiblio.livres[ indiceLivreSelectionne])
self.pushButtonSupprimer.setEnabled(True) self.pushButtonNouveau.setEnabled(True)
self.pushButtonSauvegarder.setEnabled(False) @pyqtSlot() def
on_pushButtonNouveau_clicked(self): …
self.pushButtonSauvegarder.setEnabled(False)
À l'initialisation, on commence par rendre le bouton Sauvegarder inactivable
(comme il n'y a pas encore eu de saisie).
Comme on veut détecter tout changement sur n'importe lequel des champs de saisie,
129
