#!/usr/bin/python
# -*- coding: Utf-8 -*-

from PyQt4.QtCore import *
from PyQt4.QtGui import *

from moteur_modules_animation.mplayer import Mplayer

class Lecture_VisionVideo(QWidget):
	# -----------------------------------
	# Cadre accueillant les widgets de :
	# Lecture >> Visionner des images
	# -----------------------------------
	def __init__(self, parent):
        	QWidget.__init__(self)
		
		#self.chemin = '' # chemin du fichier sélectionné
		
		# Boite d'alignement vertical
		vbox=QVBoxLayout(self)
		
		# Titre de la page
		#txt1=_(u'Visionner des vidéos')
		#titre_du_cadre=QLabel('<H2><CENTER>%s</CENTER></H2>' %txt1, self)
		
		#hbox = QHBoxLayout()
		#hbox.addWidget(titre_du_cadre,1) # étirement: centré
		
		# Ajout du titre de la page et de l'aperçu à la boite verticale
		#vbox.addLayout(hbox, 0)
		
		# -------------------------------------------------------------------
		# Boîte de groupe : chargement de vidéos
		# -------------------------------------------------------------------
		# Instance de la classe Mplayer (moteur_modules_animation/mplayer)
		# pour l'affichage des vidéos
		# La largeur et hauteur initiale de l'image en pixels (là où est affichée 
		# la vidéo) est changée ici elle prend les valeurs:
		# tailleLargeur=500, tailleHauteur=500
		self.statusBar = parent.statusBar()
		self.afficheurVideo=Mplayer([], (400, 400*3/4),
			(Mplayer.PRECEDENT_SUIVANT,Mplayer.CURSEUR_A_PART,Mplayer.PARCOURIR),
			barreTaches=self.statusBar, facteurLimitant=Mplayer.LARGEUR)
		
		group=QGroupBox("")
		layout=QHBoxLayout(group)
		layout.addWidget(self.afficheurVideo)
		
		hbox = QHBoxLayout()
		hbox.addStretch()
		hbox.addWidget(group)
		hbox.addStretch()
		vbox.addLayout(hbox)
		
		vbox.addStretch()
		
		# -------------------------------------------------------------------
		# widgets du bas : ligne + boutons
		# -------------------------------------------------------------------
		
		# boutons
		boutAide=QPushButton(_(u" Aide"))
		boutAide.setIcon(QIcon("Icones/icone_aide_128.png"))
		self.connect(boutAide, SIGNAL("clicked()"), self.afficherAide)
		
		# ligne de séparation juste au dessus des boutons
		ligne = QFrame()
		ligne.setFrameShape(QFrame.HLine)
		ligne.setFrameShadow(QFrame.Sunken)
		vbox.addWidget(ligne)
		vbox.addSpacing(-5)	# la ligne doit être plus près des boutons
		
		hbox=QHBoxLayout()
		hbox.addWidget(boutAide)
		hbox.addStretch()	# espace entre les 2 boutons
		vbox.addLayout(hbox)
		
		# affichage de la boîte principale
		self.setLayout(vbox)
	
	
	def updateDir(self, index):
		"Fonction appelée par le treeview lors d'un changement de repertoire. Chemin(s) fourni(s) à mplayer."
		print "QModelIndex", index
		
		# QModelIndex -> QDirModel
		modele = index.model()
		print "QDirModel", modele
		
		# chemin sélectionné (QString)
		cheminSelect = modele.filePath(index)
		
		#=== Le chemin sélectionné est un fichier ===#
		if not modele.isDir(index):
			self.afficheurVideo.listeVideos = [str(cheminSelect)]
			return
		
		#=== Le chemin sélectionné est un répertoire ===#
		# On crée le QDir
		rep=QDir(cheminSelect)
		print "chemin", cheminSelect, type(cheminSelect)
		print "QDir", rep
		rep.setFilter(QDir.Files)
		
		# Filtre des extensions (pas sensible à la casse)
		listeExtension=["avi", "mpg", "mpeg", "mjpeg", "flv", "mp4", "ogg"]
		# Liste des vidéos qui sera fournie à mplayer
		listeVideo=[]
		
		# Récuperation des fichiers du dossier
		liste=rep.entryList()
		print "QStringList", liste
		
		# Sélection des fichiers
		for entree in liste:
			# Création du QFileInfo
			fichier=QFileInfo(rep.absolutePath() + "/" + entree)
			
			# Recuperation de l'extension
			extension=fichier.suffix()
			
			# Application du filtre
			for validExtension in listeExtension:
				# Si l'extension est valide
				if extension.toLower()==validExtension:
					# On ajoute à la liste
					listeVideo.append(fichier.absoluteFilePath())
		
		print "listePython", listeVideo, '\n'
		
		# On communique les vidéos à mplayer
		self.afficheurVideo.listeVideos = listeVideo
	
	def afficherAide(self):
		"""Boîte de dialogue de l'aide"""

		messageAide=QMessageBox(self)
		messageAide.setText(_(u"<h3><center>Lire des vidéos</center></h3><p>Vous allez ici pouvoir lire une ou plusieurs vidéo(s).</p><p>Cliquez sur le bouton 'Parcourir...', dans la boîte de dialogue allez chercher votre (ou vos) vidéo(s) ... et cliquez sur le bouton juste à droite (la flèche blanche vers la droite).</p><p>Pour sélectionner plusieurs vidéos (dans la boîte de dialogue), maintenez la touche CTRL du clavier enfoncée (pour une sélection individuelle) ou bien SHIFT (pour une sélection groupée) ... tout en sélectionnant vos fichiers.</p><p>Pour certaines opérations précises, vous pouvez utiliser les raccourcis claviers suivants (pour que ces raccourcis soient opérationnels, n'oubliez pas de mettre le pointeur de votre souris sur la fenêtre de lecture):</p><h4><ul>** Les touches Alt Gr avec [ et Alt Gr avec ] diminuent/accélèrent la vitesse courante de lecture de 10% (avec la touche backspace, on revient à une vitesse de lecture normale).</ul></h4><h4><ul>** Les touches Shift avec 0 augmentent le volume et les touches Shift avec 9 diminuent le volume (pour le son). Attention pour le 0 et le 9, ce sont les chiffres à gauche du clavier (pas les touches du pavé numérique).</ul></h4><h4><ul>** Avec la touche q (ou Echap) on arrête la lecture.</ul></h4>"))
		messageAide.setWindowTitle(_(u"Aide"))
		messageAide.setIcon(QMessageBox.Information)
		messageAide.exec_()