sera défini par l'utilisateur lors de la toute première sauvegarde
(on_actionEnregistrer_triggered) ou lors de l'ouverture d'un fichier
(on_actionOuvrir_triggered) ; il est utilisé pour les sauvegardes et est affiché
dans la barre de titre (modificationAEnregistrer).
Au démarrage, on crée un modèle ModeleTableBiblio avec une liste vide : on a une
nouvelle bibliothèque vide en mémoire, prête à être remplie. Dans une version plus
élaborée de l'application, on ferait typiquement cette opération quand on active le
menu Fichier > Nouveau (cette fonction a été omise pour ne pas alourdir l'exemple).
L'appel self.modificationAEnregistrer(False) signale qu'il n'y a encore rien
à sauvegarder sur fichier, sachant que le modèle vient d'être créé. La méthode
modificationAEnregistrer configure visuellement la fenêtre pour bien indiquer
cet état (voir ).
Les boutons fléchés qui héritent de QAbstractSpinBox tels que QDateEdit et
QDoubleSpinBox affichent leurs données selon un format bien défini ; ils ne peuvent
pas a priori afficher un texte particulier ou être vide. La méthode
setSpecialValueText permet de déclarer une chaîne de caractères spéciale, qui
sera affichée à la place de la valeur minimale admise sur le widget. Ainsi, le champ
"Prix" affichera " " (un espace blanc) quand la valeur interne sera la valeur
minimale admise (—0.01). Ces valeurs minimales sont donc des valeurs sentinelles
qui ont une signification particulière à gérer par l'application ; dans notre cas, ces
valeurs indiquent que les champs n'ont pas encore été saisis (voir méthode
effaceLivre).
Note > Notons que ces instructions pourraient être omises en utilisant
Qt Designer pour assigner directement les propriétés ; il ne faut pas oublier dans
ce cas d'invoquer la fonction Compiler la feuille d'eric6 (ou exécuter directement
pyuic5).
La méthode modificationAEnregistrer gère l'attribut fichierNonEnregistre,
qui est un booléen indiquant si on a déjà enregistré les dernières modifications dans
un fichier ; on le met à vrai à chaque modification et à faux après chaque
sauvegarde. De manière assez standard, la méthode en profite pour indiquer le nom
du fichier ouvert (si existant), suivi d'un astérisque si les dernières modifications ne
sont pas encore enregistrées. L'attribut fichierNonEnregistre sera utilisé par
124
(on_actionEnregistrer_triggered) ou lors de l'ouverture d'un fichier
(on_actionOuvrir_triggered) ; il est utilisé pour les sauvegardes et est affiché
dans la barre de titre (modificationAEnregistrer).
Au démarrage, on crée un modèle ModeleTableBiblio avec une liste vide : on a une
nouvelle bibliothèque vide en mémoire, prête à être remplie. Dans une version plus
élaborée de l'application, on ferait typiquement cette opération quand on active le
menu Fichier > Nouveau (cette fonction a été omise pour ne pas alourdir l'exemple).
L'appel self.modificationAEnregistrer(False) signale qu'il n'y a encore rien
à sauvegarder sur fichier, sachant que le modèle vient d'être créé. La méthode
modificationAEnregistrer configure visuellement la fenêtre pour bien indiquer
cet état (voir ).
Les boutons fléchés qui héritent de QAbstractSpinBox tels que QDateEdit et
QDoubleSpinBox affichent leurs données selon un format bien défini ; ils ne peuvent
pas a priori afficher un texte particulier ou être vide. La méthode
setSpecialValueText permet de déclarer une chaîne de caractères spéciale, qui
sera affichée à la place de la valeur minimale admise sur le widget. Ainsi, le champ
"Prix" affichera " " (un espace blanc) quand la valeur interne sera la valeur
minimale admise (—0.01). Ces valeurs minimales sont donc des valeurs sentinelles
qui ont une signification particulière à gérer par l'application ; dans notre cas, ces
valeurs indiquent que les champs n'ont pas encore été saisis (voir méthode
effaceLivre).
Note > Notons que ces instructions pourraient être omises en utilisant
Qt Designer pour assigner directement les propriétés ; il ne faut pas oublier dans
ce cas d'invoquer la fonction Compiler la feuille d'eric6 (ou exécuter directement
pyuic5).
La méthode modificationAEnregistrer gère l'attribut fichierNonEnregistre,
qui est un booléen indiquant si on a déjà enregistré les dernières modifications dans
un fichier ; on le met à vrai à chaque modification et à faux après chaque
sauvegarde. De manière assez standard, la méthode en profite pour indiquer le nom
du fichier ouvert (si existant), suivi d'un astérisque si les dernières modifications ne
sont pas encore enregistrées. L'attribut fichierNonEnregistre sera utilisé par
124
