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

import os
from PyQt4.QtCore import *
from PyQt4.QtGui import *
from gui_modules_animation.animation_base import Base
from moteur_modules_animation.mencoder import WidgetMEncoder
from moteur_modules_animation.mplayer import Mplayer

class MusiqueSon_Encodage(QWidget):
	# -----------------------------------
	# Cadre accueillant les widgets de :
	# Musique-Son >> Encodage
	# -----------------------------------
	def __init__(self, parent):
		QWidget.__init__(self)
		
		# -------------------------------
		# Parametres généraux du widget
		# -------------------------------
		self.base = Base(self) # module de animation
		#=== tout sera mis dans une boîte verticale ===#
		vbox=QVBoxLayout(self)
		
		#=== Variable de configuration ===#
		self.config=parent.config
		
		#=== Identifiant de la classe ===#
		self.idSection = "Encodage de musiques et de sons"
		self.base.printSection()
		
		# -------------------------------------------------------------------
		# Boîte de groupe : "Fichier audio source"
		# -------------------------------------------------------------------
		self.base.widgetSource(vbox, _(u"Fichier audio source"))
		
		# -------------------------------------------------------------------
		# widgets du bas : ligne + boutons Aide et Appliquer
		# -------------------------------------------------------------------
		self.base.widgetBas(vbox)
		
		# affichage de la boîte principale
		self.setLayout(vbox)
	
	
	def ouvrirSource(self, nomEntree=None):
		"""Récupération du chemin du fichier audio sélectionné et activation de certains widgets"""
		
		# Récupération du chemin du fichier audio
		#chemin = self.base.recupSource(nomEntree)
		
		txt = _("Fichiers audio")
		chemin=QFileDialog.getOpenFileName(None, _(u"Ouvrir"), os.path.expanduser('~'), "%s (*.ac3 *.mp2 *.mp3 *.ogg)\n*" %txt)
		
		if not chemin: return
		print "chemin audio d'entrée:", chemin, type(chemin)
		
		# Affichage du chemin + nom de fichier dans la ligne d'édition
		self.ligneEditionSource.setText(chemin)
		
		self.boutApp.setEnabled(True)
		
	
	def afficherAide(self):
		""" Boîte de dialogue de l'aide """
		self.base.afficherAide(_(u"Blablablablablablablablablabla ... blablabla ... blablablabla ... blablabla."))
		
		
	def encodAudioWav(self, cheminAudioSource, cheminAudioSorti, laisserOuvert=1):
		""" Encodage audio wav """
		
		try:
			mplayer = WidgetMEncoder('encodage_wav', cheminAudioSource, cheminAudioSorti, laisserOuvert=laisserOuvert)
			mplayer.setWindowTitle(_(u"Encodage Wav"))
			mplayer.exec_()
		except:
			messageErrAnEnc=QMessageBox(self)
			messageErrAnEnc.setText(_(u"Problème d'extraction audio (mplayer)"))
			messageErrAnEnc.setWindowTitle(_(u"Erreur"))
			messageErrAnEnc.setIcon(QMessageBox.Warning)
			messageErrAnEnc.exec_()
			return
		
	
	def appliquer(self, nomSortie=None, ouvert=1):
		""" appelle la boite de dialogue de sélection de fichier à sauver """
		
		#=== Détermination des chemins d'entrée et sortie ===#
		
		if not nomSortie:
			# récupération du chemin du fichier audio de destination (à l'exception de l'extension)
			cheminAudioSorti=str(QFileDialog.getSaveFileName(None, _(u"Sauver"), os.path.expanduser(self.base.repSortieProv()), _("Tous les fichiers *.*")))
		else: # module séquentiel
			cheminAudioSorti=nomSortie
		
		if cheminAudioSorti=="": return
		
		# récupération du chemin du fichier audio source
		cheminAudioSource=str(self.ligneEditionSource.text())
		
		# Encodage
		self.encodAudioWav(cheminAudioSource, cheminAudioSorti, ouvert)
	
	
	def sequentiel(self, entree, sortie, ouvert=0):
		"""Utile dans le module du même nom. Applique les opérations de la classe. Retourne le vrai nom du fichier de sortie"""
		self.ouvrirSource(entree)
		return self.appliquer(sortie, ouvert)
	
	
	def sequentielReglage(self):
		"""Utile dans le module du même nom. Récupère le widget de réglage associé à l'identifiant donné en 1er argument. Retourne l'instance du widget de réglage"""
		return self.groupReglage