| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150 |
- """ecran d'exploration des ressources (images, sons)"""
- from PyQt4.QtCore import *
- from PyQt4.QtGui import *
- from ui.ecran_explorateur import Ui_exr_fenetre
- from ui.panneauImage import Ui_exi_panneau
- import os
- from sys import argv
- from ressources import *
- class EcranExplorateur(QDialog):
- def __init__(self, parent=None):
- """initialisation de la fenetre"""
- super (EcranExplorateur, self).__init__(parent)
- self.createWidgets()
- self._selection = None
- self._panneaux = []
- self._panneauSelectionne = None
- def createWidgets(self):
- """construction de l'interface"""
- self.ui = Ui_exr_fenetre()
- self.ui.setupUi(self)
- self.connect(self.ui.exr_ok, SIGNAL("clicked()"), self.valider)
- self.connect(self.ui.exr_annuler, SIGNAL("clicked()"), self.annuler)
- self.connect(self.ui.exr_filtreNom, SIGNAL("textEdited(QString)"), self.majFiltre)
- self.connect(self.ui.exr_filtreRep, SIGNAL("currentIndexChanged(int)"), self.majFiltre)
-
- self.ui.exr_layout.setColumnMinimumWidth(0, 140)
- self.ui.exr_layout.setColumnStretch(0, 1)
- self.ui.exr_layout.setColumnMinimumWidth(1, 140)
- self.ui.exr_layout.setColumnStretch(1, 1)
- self.ui.exr_layout.setColumnMinimumWidth(2, 140)
- self.ui.exr_layout.setColumnStretch(2, 1)
- def charger(self, typeRessource = "I"):
- """ressource vaut I ou S, pour image et sons"""
- fichiers = []
- for repR in repRessources():
- repAbs = os.path.join(repApp(), repR)
- for (dirpath, dirnames, filenames) in os.walk(repAbs):
- for f in filenames:
- if typeRessource == "I":
- r = Image(os.path.join(repR, f))
- else:
- r = Son(os.path.join(repR, f))
- if r.estValide():
- fichiers.append(r)
- for f in fichiers:
- self.ajouterImage(f)
-
- def ajouterImage(self, img):
- """ajoute un panneau image a la liste deroulante"""
- panneau = PanneauImage(self)
- panneau.chargerImage(img)
- self._panneaux.append(panneau)
- self.ui.exr_layout.addWidget(panneau)
- def selection(self):
- return self._selection
- def majSelection(self, panneau):
- if self._panneauSelectionne:
- self._panneauSelectionne.selectionner(False)
- self._panneauSelectionne = panneau
- self.majAffichage()
- def majAffichage(self):
- self.ui.exr_ok.setEnabled(self._panneauSelectionne != None)
- def majFiltre(self):
- filtreRep = ""
- if self.ui.exr_filtreRep.currentIndex() > 0:
- filtreRep = repRessources()[(self.ui.exr_filtreRep.currentIndex()-1)]
- filtreNom = self.ui.exr_filtreNom.texte()
- for panneau in self._panneaux:
- panneau.appliquerFiltre(filtreRep, filtreNom)
- def valider(self):
- self._selection = self._panneauSelectionne.image()
- self.done(1)
- def annuler(self):
- self.done(0)
- class PanneauImage(QFrame):
- def __init__(self, fenetre, parent=None):
- """initialisation de la fenetre"""
- self.fenetre = fenetre
- super (PanneauImage, self).__init__(parent)
- self.createWidgets()
- self._image = ""
- self._selectionnee = False
- def createWidgets(self):
- """construction de l'interface"""
- self.ui = Ui_exi_panneau()
- self.ui.setupUi(self)
-
- def selectionner(self, actif):
- if actif:
- couleur = QColor(250, 250, 250, 250)
- else:
- couleur = QColor(240, 240, 240, 240)
- palette = QPalette()
- palette.setColor(QPalette.Window, couleur)
- self.setPalette(palette)
-
- def chargerImage(self, image):
- self.ui.exi_image.chargerImage(image.chemin())
- self.ui.exi_nom.majTexte(image.nom())
- self.ui.exi_details.majTexte((image.extension().replace(".", "")).upper())
- self.ui.exi_situ.majTexte(image.repR())
- self._image = image
- def image(self):
- return self._image
- def appliquerFiltre(self, filtreRep, filtreNom):
- if len(filtreRep) > 0:
- self.setVisible(filtreNom in self._image.nom() and \
- self._image.repR() == filtreRep)
- else:
- self.setVisible(filtreNom in self._image.nom())
- def mousePressEvent(self, event):
- if event.button() == 1:
- if not self._selectionnee:
- self.fenetre.majSelection(self)
- self.selectionner(True)
- def mouseDoubleClickEvent(self, event):
- if event.button() == 1:
- self.fenetre.valider()
- if __name__ == "__main__":
- app = QApplication(argv)
- #settrace(trace_calls)
- exp = EcranExplorateur()
- exp.show()
- exp.charger()
- r = app.exec_()
- ressource = exp.selection()
- if ressource:
- print ressource.nom()
- exit(r)
|