| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149 |
- '''
- Fenetre de creation / edition de partie
- '''
- from PyQt4.QtCore import SIGNAL, QString, QVariant
- from PyQt4.QtGui import QDialog, QFrame
- from lib.Partie import Partie, Chapitre
- from ui.ecran_editionPartie import Ui_ept_fenetre
- from ui.ecran_panneauCh import Ui_ch_panneau
- class FenetreEditionPartie(QDialog):
- def __init__(self):
- super(FenetreEditionPartie, self).__init__()
- self.createWidgets()
- def createWidgets(self):
- """construction de l'interface"""
- self.ui = Ui_ept_fenetre()
- self.ui.setupUi(self)
- self.ui.ept_ch_liste.masquerColonneId()
- self.connect(self.ui.ept_enregistrer, SIGNAL("clicked()"), self.enregistrer)
- self.connect(self.ui.ept_annuler, SIGNAL("clicked()"), self.annuler)
- self.connect(self.ui.ept_nom, SIGNAL("textEdited(QString)"), self.majAffichage)
-
- self.connect(self.ui.ept_ch_nouveau, SIGNAL("clicked()"), self.nouveauChapitre)
-
- self.connect(self.ui.ept_ch_liste, SIGNAL("itemClicked()"), self.afficherChapitre)
- def nouvelle(self):
- self._p = Partie()
- self._p.creer()
- self.chargerChapitres()
- def charger(self, partie):
- self._p = partie
- self.ui.ept_nom.majTexte(self._p.nom() )
-
- self.chargerChapitres()
- self.ui.ept_ch_choix.allerA( self._p.chapitreEnCours() )
- self.majAffichage()
- def majAffichage(self):
- self.ui.ept_enregistrer.setEnabled( (len(self.ui.ept_nom.texte()) > 0) )
-
- def resultat(self):
- self._p.majNom( self.ui.ept_nom.texte() )
- self._p.majChapitres( self.chapitres() )
- self._p.majChapitreEnCours( self.ui.ept_ch_choix.valeurActuelle().toInt()[0] )
- return self._p
-
- def enregistrer(self):
- self.done(1)
-
- def annuler(self):
- self.done(0)
- ####### chapitres
- def ajouterChapitre(self, numCh):
- """ajoute un chapitre a la table et a la pile"""
- # txt = "Ch. {} - {}".format(numCh, self._p.chapitres()[numCh].nom) if len(self._p.chapitres()[numCh].nom) > 0 else "Chapitre {}".format(numCh)
- txt = self._p.chapitres()[numCh].nomLong()
-
- #table
- l = self.ui.ept_ch_liste.nouvelleLigneFin()
- self.ui.ept_ch_liste.majTexte(l, 0, "%02d" % numCh)
- self.ui.ept_ch_liste.majTexte(l, 1, txt)
-
- #panneau
- panneau = PanneauChapitre()
- panneau.charger( self._p.chapitres()[numCh] )
- self.connect(panneau, SIGNAL("chNomModifie(int, QString)"), self.majNomListe)
- self.ui.ept_ch_panneaux.addWidget(panneau)
-
- #liste deroulante
- self.ui.ept_ch_choix.addItem(txt, QVariant(numCh) )
-
- def chargerChapitres(self):
- """chargement des chapitres a l'ouverture"""
- for numCh in self._p.chapitres():
- self.ajouterChapitre(numCh)
- if len(self._p.chapitres()) >= 9: self.ui.ept_ch_nouveau.setEnabled(False)
- self.afficherChapitre( self._p.chapitreEnCours() )
-
- def nouveauChapitre(self):
- numero = max( [key for key in self._p.chapitres().keys()] ) + 1
- self._p.chapitres()[numero] = Chapitre(numero)
- self.ajouterChapitre(numero)
- self.afficherChapitre()
-
- def afficherChapitre(self, numCh = None):
- """affiche le chapitre demande. si pas de numero, affiche le dernier chapite"""
- if numCh == None:
- numCh = max( self._p.chapitres().keys() )
- l = self.ui.ept_ch_liste.chercherLigne(0, "%02d" % numCh)
- if l != None:
- self.ui.ept_ch_liste.setCurrentCell(l, 0)
- self.ui.ept_ch_liste.setCurrentCell(l, 1)
- self.ui.ept_ch_panneaux.setCurrentIndex(l)
- def majNomListe(self, numCh, nom):
- """met a jour le noms du chapitre dans la liste"""
- nom = str(nom)
- l = self.ui.ept_ch_liste.chercherLigne(0, "%02d" % numCh)
- if l != None:
- txt = "Ch. {} - {}".format(numCh, nom) if len(nom) > 0 else "Chapitre {}".format(numCh)
- self.ui.ept_ch_liste.majTexte(l, 1, txt)
- index = self.ui.ept_ch_choix.findData(QVariant(numCh))
- self.ui.ept_ch_choix.setItemText( index, QString().fromUtf8( txt ) )
- def chapitres(self):
- dico = {}
- for i in range( 0, len(self.ui.ept_ch_panneaux) ):
- ch = self.ui.ept_ch_panneaux.widget(i).chapitre()
- dico[ch.num] = ch
- return dico
-
- class PanneauChapitre(QFrame):
- def __init__(self, parent=None):
- super (PanneauChapitre, self).__init__(parent)
- self.createWidgets()
- self._ch = None
-
- def createWidgets(self):
- """construction de l'interface"""
- self.ui = Ui_ch_panneau()
- self.ui.setupUi(self)
- self.connect(self.ui.ch_nom, SIGNAL("editingFinished()"), self.nomModifie)
-
- def charger(self, chapitre):
- self._ch = chapitre
- self.ui.ch_num.majTexte( "Chapitre {}".format(self._ch.num) )
- self.ui.ch_nom.majTexte( self._ch.nom )
- self.ui.ch_presentation.majTexte( self._ch.presentation )
- # self.ui.ch_public.setChecked( self._ch.public )
- def chapitre(self):
- self._ch.nom = self.ui.ch_nom.texte()
- self._ch.presentation = self.ui.ch_presentation.texte()
- return self._ch
- def nomModifie(self):
- nom = QString().fromUtf8( self.ui.ch_nom.texte() )
- self.emit(SIGNAL("chNomModifie(int, QString)"), self._ch.num, nom)
|