<p class="spip">Dans le <a href="http://www.coagul.org/article.php3?id_article=435" class="spip_out">tutoriel précédent</a> nous avons presque finalisé l’application décrite dans ce <a href="http://www.coagul.org/article.php3?id_article=409" class="spip_out">tutoriel</a>. Mais pour respecter le cahier des charges, il nous faut gérer les révisions.</p>

<h3>Éléments abordés dans ce document</h3>
<li> Les dictionnaires
<br /><li> Les listes « avec pop() »
<br /><li> Les chaînes unicode « avec u’...’ »
<h3>Au travail</h3>
<li> Dans Eric, on lance QT Designer en double cliquant sur le fichier mainform.ui
<br /><li> Dans QT Designer créer le slot QuitSlot() avec Edits/Slots...
<br /><li> Dans QT Designer affecter le slot QuitSlot() au signal clicked() du sender QuitPushButton avec Edits/Connections...
<br /><li> Enregistrer et quitter QT Designer
<br /><li> Dans Eric compiler mainform.ui (click droit, compile form)
<br /><li> Ajouter la fonction <i class="spip"> <strong class="spip">def QuitSlot(self) :</strong> </i> dans fichier mainform_impl.py
<div style='text-align: left;' class='spip_code' dir='ltr'><code><br />
    def QuitSlot(self):<br />
        "Quitter le programme si les révisions sont terminées."<br />
        if self.timer.isActive(): self.timer.stop()<br />
        if self.revisions: <br />
            QMessageBox.information( self, u'Révision', u'Début des révisions')<br />
            self.revision=1<br />
            self.StartSlot()<br />
        else:<br />
            self.close()<br />
</code></div>
<li> Il ne reste plus qu’à ajouter le traitement des révisions à la fonction NouveauNombres().
<div style='text-align: left;' class='spip_code' dir='ltr'><code><br />
    def NouveauxNombres(self):<br />
...        <br />
        if self.revision:<br />
            if self.revisions:<br />
                exercice=self.revisions.pop()<br />
                self.op1=exercice['op1']<br />
                self.op2=exercice['op2']<br />
                self.resultat=exercice['resultat']<br />
                posTrou=exercice['posTrou']<br />
                self.operateur.setText(exercice['operateur'])<br />
            else:<br />
                if self.timer.isActive(): self.timer.stop()<br />
                QMessageBox.information( self, u'Révision',u'Révisions terminées')<br />
                return 0<br />
...<br />
        self.revisions.append({'op1':self.op1, 'op2':self.op2,'resultat':self.resultat, 'operateur':self.operateur.text().ascii(),'posTrou':posTrou})<br />
        return 1<br />
<br />
</code></div>
<p class="spip">Voilà, l’application correspond désormais au cahier des charges. 
Certains pourraient s’interroger sur la présence des quatres boutons situés dans l’onglet "Choisir un exercice". Il s’agit de boutons qui permettraient de mettre à jour le fichier <i class="spip"> <strong class="spip">exercices.txt</strong> </i> sans passer par un éditeur de texte. 
Si le coeur vous en dit, j’attends vos propositions pour les intégrer à ce programme.</p>

<p class="spip">A vous de bosser maintenant ;-)</p>

<dl class='spip_document_844 spip_documents spip_documents_left'  style='float:left;width:120px;'>
<dt><a href="http://download.tuxfamily.org/assocoagul/drupal-files/spip/Archive-8.zip" title='Zip - 45.7 ko' type="application/zip"><img src='dist/vignettes/zip.png' width='52' height='52' alt='Zip - 45.7 ko' /></a><dt>
<dt class='spip_doc_titre' style='width:120px;'><strong>Les fichiers sources de cette application</strong></dt>
</dl>
<p class="spip"><a href="http://www.coagul.org/article.php3?id_article=438" class="spip_out">Pour la suite, c’est ici</a></p>

<h2>Historique des modifications</h2>
<table class="spip">
<thead><tr class='row_first'><th scope='col'><strong class="spip">Version</strong></th><th scope='col'><strong class="spip">Date</strong></th><th scope='col'><strong class="spip">Commentaire</strong></th></tr></thead>
<tbody>
<tr class="row_even"><td>0.1</td><td>09/04/2006</td><td>Création par Jibux</td></tr>
<tr class="row_odd"><td>0.2</td><td>14/04/2006</td><td>Simplification unicode avec u’’</td></tr>
<tr class="row_even"><td>0.3</td><td>26/11/2006</td><td>Ajout d’un lien vers l’article suivant</td></tr>
</tbody>
</table>