def data( self, index, role ):
		if( not index.isValid() ):
			return QtCore.QVariant()
		elif( role == QtCore.Qt.BackgroundRole ):
			if( index.row() % 2 == 0 ):
				return QtGui.QColor( QtCore.Qt.white )
			else:
				return QtGui.QColor( QtCore.Qt.lightGray )			
		elif( role == QtCore.Qt.DisplayRole ):
			if( index.column() == 0 ): # Nom
				return QtCore.QVariant( stringToQstring( self.listeStatus[ index.row() ].name ) )
			elif( index.column() == 1 ): # Avancement
				taille       = self.listeStatus[ index.row() ].downloaded
				tailleTotale = self.listeStatus[ index.row() ].size
				if( tailleTotale is None or tailleTotale <= 0 ):
					pourcent = "???"
				else:
					pourcent = "%.2f %%" %( 100 * taille / float( tailleTotale ) )
				return QtCore.QVariant( stringToQstring( pourcent ) )
			elif( index.column() == 2 ): # Recu
				taille = self.listeStatus[ index.row() ].downloaded
				if( taille < 1024 ):
					tailleString = "%.2f o" %( taille )
				elif( taille < 1024 * 1024 ):
					tailleString = "%.2f  Kio" %( taille / 1024.0 )
				else:
					tailleString = "%.2f  Mio" %( taille / ( 1024.0 * 1024.0 ) )
				return QtCore.QVariant( stringToQstring( tailleString ) )
			elif( index.column() == 3 ): # Etat
				return QtCore.QVariant( stringToQstring( self.listeStatus[ index.row() ].getStatusText().title() ) )
		else:
			return QtCore.QVariant()
 def data(self, index, role):
     if (not index.isValid()):
         return QtCore.QVariant()
     elif (role == QtCore.Qt.BackgroundRole):
         if (index.row() % 2 == 0):
             return QtGui.QColor(QtCore.Qt.white)
         else:
             return QtGui.QColor(QtCore.Qt.lightGray)
     elif (role == QtCore.Qt.DisplayRole):
         if (index.column() == 0):  # Nom
             return QtCore.QVariant(
                 stringToQstring(self.listeStatus[index.row()].name))
         elif (index.column() == 1):  # Avancement
             taille = self.listeStatus[index.row()].downloaded
             tailleTotale = self.listeStatus[index.row()].size
             if (tailleTotale is None or tailleTotale <= 0):
                 pourcent = "???"
             else:
                 pourcent = "%.2f %%" % (100 * taille / float(tailleTotale))
             return QtCore.QVariant(stringToQstring(pourcent))
         elif (index.column() == 2):  # Recu
             taille = self.listeStatus[index.row()].downloaded
             if (taille < 1024):
                 tailleString = "%.2f o" % (taille)
             elif (taille < 1024 * 1024):
                 tailleString = "%.2f  Kio" % (taille / 1024.0)
             else:
                 tailleString = "%.2f  Mio" % (taille / (1024.0 * 1024.0))
             return QtCore.QVariant(stringToQstring(tailleString))
         elif (index.column() == 3):  # Etat
             return QtCore.QVariant(
                 stringToQstring(
                     self.listeStatus[index.row()].getStatusText().title()))
     else:
         return QtCore.QVariant()
Ejemplo n.º 3
0
    def addIcon(self, name, icon=None):
        """
		Add an icon to the list
		icon must be a QIcon
		"""
        if (icon):
            button = QtGui.QPushButton(icon, "", self.widget)
            button.setIconSize(self.iconsSize)
        else:
            button = QtGui.QPushButton(stringToQstring(name), self.widget)
        button.setFlat(True)
        button.setCheckable(True)
        button.setToolTip(stringToQstring(name))
        self.layout.addWidget(button)
        self.buttonsNames.append(name)
        self.buttonGroup.addButton(button, len(self.buttonsNames) - 1)
Ejemplo n.º 4
0
    def afficherDescriptionFichier(self, selected, deselected):
        """
		Affiche les informations du fichier selectionne
		"""
        def threadRecupererImageDescription(self, urlImage):
            try:
                imageData = self.navigateur.getFile(urlImage)
            except:
                logger.warning(
                    "Impossible de récuperer l'image, utilisation de l'image par défaut"
                )
                imageData = self.logoDefautPixmap
            self.emit(self.nouvelleImageDescriptionSignal, imageData)

        if (selected.indexes() != deselected.indexes()):
            fichier = self.fichierTableView.model().listeFichiers[
                selected.indexes()[0].row()]
            # Affiche la description
            self.descriptionPlainTextEdit.clear()
            if (fichier.descriptif != ""):
                self.descriptionPlainTextEdit.appendPlainText(
                    stringToQstring(fichier.descriptif))
            else:
                self.descriptionPlainTextEdit.appendPlainText(
                    u"Aucune information disponible")
            # Recupere l'image
            if (fichier.urlImage != ""):
                threading.Thread(target=threadRecupererImageDescription,
                                 args=(self, fichier.urlImage)).start()
            else:
                self.afficherImageDescription(self.logoDefautPixmap)
Ejemplo n.º 5
0
	def addIcon( self, name, icon = None ):
		"""
		Add an icon to the list
		icon must be a QIcon
		"""
		if( icon ):
			button = QtGui.QPushButton( icon, "", self.widget )
			button.setIconSize( self.iconsSize )
		else:
			button = QtGui.QPushButton( stringToQstring( name ), self.widget )
		button.setFlat( True )
		button.setCheckable( True )
		button.setToolTip( stringToQstring( name ) )
		self.layout.addWidget( button )
		self.buttonGroup.addButton( button, len( self.buttonsNames ) - 1 )
		self.buttonsNames.append( name )
Ejemplo n.º 6
0
	def afficherDescriptionFichier( self, selected, deselected ):
		"""
		Affiche les informations du fichier selectionne
		"""
		def threadRecupererImageDescription( self, urlImage ):
			try:
				imageData = self.navigateur.getFile( urlImage )
			except :
				logger.warning( "Impossible de récuperer l'image, utilisation de l'image par défaut" )
				imageData = self.logoDefautPixmap
			self.emit( self.nouvelleImageDescriptionSignal, imageData )
		
		if( selected.indexes() != deselected.indexes() ):
			fichier = self.fichierTableView.model().listeFichiers[ selected.indexes()[ 0 ].row() ]		
			# Affiche la description
			self.descriptionPlainTextEdit.clear()
			if( fichier.descriptif != "" ):
				self.descriptionPlainTextEdit.appendPlainText( stringToQstring( fichier.descriptif ) )
			else:
				self.descriptionPlainTextEdit.appendPlainText( u"Aucune information disponible" )
			# Recupere l'image
			if( fichier.urlImage != "" ):
				threading.Thread( target = threadRecupererImageDescription, args = ( self, fichier.urlImage ) ).start()
			else:
				self.afficherImageDescription( self.logoDefautPixmap )
Ejemplo n.º 7
0
	def ajouterEmissions( self, listeEmissions ):
		"""
		Met en place la liste des emissions
		"""
		listeEmissions.sort()
		self.emissionComboBox.clear()
		map( lambda x : self.emissionComboBox.addItem( stringToQstring( x ) ), listeEmissions )
Ejemplo n.º 8
0
	def ajouterPlugins( self, listePlugins ):
		"""
		Met en place la liste des plugins donnee
		"""
		listePlugins.sort()
		self.pluginComboBox.clear()
		map( lambda x : self.pluginComboBox.addItem( stringToQstring( x ) ), listePlugins )
Ejemplo n.º 9
0
    def ajouterPlugins(self, listePlugins):
        """
		Met en place la liste des plugins donnee
		"""
        listePlugins.sort()
        self.pluginComboBox.clear()
        map(lambda x: self.pluginComboBox.addItem(stringToQstring(x)),
            listePlugins)
Ejemplo n.º 10
0
	def createItem( self, text, color ):
		"""
		Create new item to display
		"""
		item = QtGui.QTableWidgetItem( stringToQstring( text ) )
		item.setBackground( color )
		item.setFlags( QtCore.Qt.ItemIsSelectable | QtCore.Qt.ItemIsUserCheckable | QtCore.Qt.ItemIsEnabled )
		return item
Ejemplo n.º 11
0
    def ajouterEmissions(self, listeEmissions):
        """
		Met en place la liste des emissions
		"""
        listeEmissions.sort()
        self.emissionComboBox.clear()
        map(lambda x: self.emissionComboBox.addItem(stringToQstring(x)),
            listeEmissions)
Ejemplo n.º 12
0
    def createItem(self, text, color):
        """
		Create new item to display
		"""
        item = QtGui.QTableWidgetItem(stringToQstring(text))
        item.setBackground(color)
        item.setFlags(QtCore.Qt.ItemIsSelectable
                      | QtCore.Qt.ItemIsUserCheckable
                      | QtCore.Qt.ItemIsEnabled)
        return item
Ejemplo n.º 13
0
	def data( self, index, role ):
		if( not index.isValid() ):
			return QtCore.QVariant()
		elif( role == QtCore.Qt.BackgroundRole ):
			if( index.row() % 2 == 0 ):
				return QtGui.QColor( QtCore.Qt.white )
			else:
				return QtGui.QColor( QtCore.Qt.lightGray )			
		elif( role == QtCore.Qt.DisplayRole ):
			if( index.column() == 0 ):
				return QtCore.QVariant( "" )
			elif( index.column() == 1 ):
				date = self.listeFichiers[ index.row() ].date
				if( isinstance( date, datetime.date ) ):
					dateOk = date.strftime( "%a %d %b" )
				else:
					dateOk = date
				return QtCore.QVariant( stringToQstring( dateOk ) )
			else:
				return QtCore.QVariant( stringToQstring( self.listeFichiers[ index.row() ].nom ) )
		else:
			return QtCore.QVariant()
Ejemplo n.º 14
0
	def createItem( self, text, editable = False, checkBox = False, checked = False ):
		"""
		Return a new item for QtTable
		"""
		item = QtGui.QTableWidgetItem( stringToQstring( text ) )
		item.setTextAlignment( QtCore.Qt.AlignCenter )
		if( not editable ):
			item.setFlags( item.flags() & ~QtCore.Qt.ItemIsEditable )
		if( checkBox ):
			if( checked ):
				item.setCheckState( QtCore.Qt.Checked )
			else:
				item.setCheckState( QtCore.Qt.Unchecked )
		return item
Ejemplo n.º 15
0
	def ajouterEmissions( self, listeEmissions ):
		"""
		Met en place la liste des emissions
		"""
		listeEmissions.sort()
		self.nettoyerWidgets( plugins = False, chaines = False, emissions = True, fichiers = True, description = True )
		map( lambda x : self.emissionComboBox.addItem( stringToQstring( x ) ), listeEmissions )
		# S'il n'y a qu'une seule emission
		if( self.emissionComboBox.count() == 1 ):
			# Lance le listage des fichiers
			self.listerFichiers( self.emissionComboBox.currentText() )
		else:
			# Ne selectionne pas le plugin
			self.emissionComboBox.setCurrentIndex( -1 )	
Ejemplo n.º 16
0
    def ajouterEmissions(self, listeEmissions):
        """
		Met en place la liste des emissions
		"""
        listeEmissions.sort()
        self.nettoyerWidgets(plugins=False,
                             chaines=False,
                             emissions=True,
                             fichiers=True,
                             description=True)
        map(lambda x: self.emissionComboBox.addItem(stringToQstring(x)),
            listeEmissions)
        # S'il n'y a qu'une seule emission
        if (self.emissionComboBox.count() == 1):
            # Lance le listage des fichiers
            self.listerFichiers(self.emissionComboBox.currentText())
        else:
            # Ne selectionne pas le plugin
            self.emissionComboBox.setCurrentIndex(-1)
Ejemplo n.º 17
0
	def __init__( self, tvdVersion ):
		"""
		Constructeur
		"""
		# Appel au constructeur de la classe mere
		QtGui.QMainWindow.__init__( self )
		
		#
		# Fonts
		#
		
		# Font pour les titres
		self.titreFont = QtGui.QFont()
		self.titreFont.setPointSize( 11 )
		self.titreFont.setWeight( 75 )
		self.titreFont.setBold( True )
		
		#
		# Icones
		#
		
		self.tvdIco      = QtGui.QIcon( "uis/qt/ico/TVDownloader.png" )
		self.folderIco   = QtGui.QIcon( "uis/qt/ico/gtk-folder.svg" )
		self.startIco    = QtGui.QIcon( "uis/qt/ico/gtk-media-play-ltr.svg" )
		self.settingsIco = QtGui.QIcon( "uis/qt/ico/gtk-preferences.svg" )
		self.fileIco     = QtGui.QIcon( "uis/qt/ico/gtk-file.svg" )
		self.downloadIco = QtGui.QIcon( "uis/qt/ico/fr_stock_add.svg" )
		self.pauseIco    = QtGui.QIcon( "uis/qt/ico/gtk-media-pause.svg" )
		self.cancelIco   = QtGui.QIcon( "uis/qt/ico/gtk-cancel.svg" )
		self.deleteIco   = QtGui.QIcon( "uis/qt/ico/gtk-delete-full.svg" )
		
		#
		# Signaux
		#
		
		# Liste des plugins a mettre en place
		self.listePluginsSignal = QtCore.SIGNAL( "listePlugins(PyQt_PyObject)" )
		QtCore.QObject.connect( self, self.listePluginsSignal, self.ajouterPlugins )
		
		# Liste des chaines a mettre en place
		self.listeChainesSignal = QtCore.SIGNAL( "listeChaines(PyQt_PyObject)" )
		QtCore.QObject.connect( self, self.listeChainesSignal, self.ajouterChaines )
		
		# Liste des emissions a mettre en place
		self.listeEmissionsSignal = QtCore.SIGNAL( "listeEmission(PyQt_PyObject)" )
		QtCore.QObject.connect( self, self.listeEmissionsSignal, self.ajouterEmissions )

		# Liste des fichiers a mettre en place
		self.listeFichiersSignal = QtCore.SIGNAL( "listeFichiers(PyQt_PyObject)" )
		QtCore.QObject.connect( self, self.listeFichiersSignal, self.ajouterFichiers )
		
		# Affiche une nouvelle image de description
		self.nouvelleImageDescriptionSignal = QtCore.SIGNAL( "nouvelleImageDescription(PyQt_PyObject)" )
		QtCore.QObject.connect( self, self.nouvelleImageDescriptionSignal, self.afficherImageDescription )
		
		#
		# Reglages de la fenetre
		#
		
		# Nom de la fenetre
		self.setWindowTitle( "%s %s" %( Constantes.TVD_NOM, Constantes.TVD_VERSION ) )
		# Mise en place de son icone
		self.setWindowIcon( self.tvdIco )
		
		#
		# Widget central de la fenetre
		#
		
		# Widget central qui contiendra tout
		self.centralWidget = QtGui.QWidget( self )
		self.setCentralWidget( self.centralWidget )
		
		# Layout de grille pour le widget central
		self.centralGridLayout = QtGui.QGridLayout( self.centralWidget )
		
		#
		# Onglets
		#
		
		# Gestionnaire onglets
		self.tabWidget = QtGui.QTabWidget( self.centralWidget )
		self.centralGridLayout.addWidget( self.tabWidget, 0, 0, 1, 2 )
		
		# Onglet Fichiers
		self.fichiersWidget = QtGui.QSplitter( QtCore.Qt.Vertical, self.centralWidget )
		self.tabWidget.addTab( self.fichiersWidget, self.fileIco, u"Choix des fichiers" )
		
		# Onglet Telechargements
		self.telechargementsWidget = QtTableView( self.centralWidget )
		self.tabWidget.addTab( self.telechargementsWidget, self.downloadIco, u"Téléchargements" )
		
		# Onglet Parametres
		self.parametresWidget = QtGui.QWidget( self.centralWidget )
		self.tabWidget.addTab( self.parametresWidget, self.settingsIco, u"Paramètres" )
		
		#
		# Onglet Fichiers
		#
		
		# Widget choix fichiers
		self.choixFichiersWidget = QtGui.QSplitter( QtCore.Qt.Horizontal, self.fichiersWidget )
		self.fichiersWidget.addWidget( self.choixFichiersWidget )
				
		# Widget choix de la chaine
		self.chaineWidget = QtGui.QWidget( self.choixFichiersWidget )
		self.choixFichiersWidget.addWidget( self.chaineWidget )
		
		# Layout chaine
		self.chaineLayout = QtGui.QVBoxLayout( self.chaineWidget )
		
		# Choix du plugin
		self.pluginComboBox = QtGui.QComboBox( self.chaineWidget )
		QtCore.QObject.connect( self.pluginComboBox,
								QtCore.SIGNAL( "activated(QString)" ),
								self.listerChaines )
		self.chaineLayout.addWidget( self.pluginComboBox )
		
		# Liste des chaines
		self.chaineIconsList = QtIconsList( self.chaineWidget )
		QtCore.QObject.connect( self.chaineIconsList,
								QtCore.SIGNAL( "buttonClicked(PyQt_PyObject)" ),
								self.listerEmissions )
		self.chaineLayout.addWidget( self.chaineIconsList )
		
		# Widget choix des fichiers
		self.fichierWidget = QtGui.QWidget( self.choixFichiersWidget )
		self.choixFichiersWidget.addWidget( self.fichierWidget )
		
		# Layout fichiers
		self.fichierLayout = QtGui.QVBoxLayout( self.fichierWidget )
		
		# Choix de l'emission
		self.emissionComboBox = QtGui.QComboBox( self.fichierWidget )
		QtCore.QObject.connect( self.emissionComboBox,
								QtCore.SIGNAL( "activated(QString)" ),
								self.listerFichiers )
		self.fichierLayout.addWidget( self.emissionComboBox )
		
		# Liste des fichiers
		self.fichierTableView = QtTableView( self.fichierWidget )
		fichierTableModel = FichiersTableModel()
		self.fichierTableView.setModel( fichierTableModel )
		self.fichierLayout.addWidget( self.fichierTableView )

		QtCore.QObject.connect( self.fichierTableView.selectionModel(),
								QtCore.SIGNAL( "selectionChanged(const QItemSelection &, const QItemSelection &)" ),
								self.afficherDescriptionFichier )	
		
		QtCore.QObject.connect( self.fichierTableView,
								QtCore.SIGNAL( "doubleClicked(const QModelIndex &)" ),
								self.ajouterTelechargement)	

		# Widget descriptif fichier
		self.descriptifFichierWidget = QtGui.QSplitter( QtCore.Qt.Horizontal, self.fichiersWidget )
		self.fichiersWidget.addWidget( self.descriptifFichierWidget )
		
		# Label du fichier
		self.fichierLabel = QtGui.QLabel( self.descriptifFichierWidget )
		self.descriptifFichierWidget.addWidget( self.fichierLabel )

		# Logo par defaut
		self.logoDefautPixmap = QtGui.QPixmap()
		self.logoDefautPixmap.load( "uis/qt/ico/gtk-dialog-question.svg" )
		self.afficherImageDescription( self.logoDefautPixmap )

		# Descriptif du fichier
		self.descriptionPlainTextEdit = QtGui.QPlainTextEdit( self.descriptifFichierWidget )
		self.descriptifFichierWidget.addWidget( self.descriptionPlainTextEdit )
		
		#
		# Onglet Telechargements
		#

		# Liste des telechargements
		telechargementsTableModel = TelechargementsTableModel()
		self.telechargementsWidget.setModel( telechargementsTableModel )
		# self.telechargementsWidget.setItemDelegateForColumn( 1, QtProgressBarDelegate() )
		
		# Menu clic droit sur la liste des telechargements
		self.telechargementsWidget.setContextMenuPolicy( QtCore.Qt.ActionsContextMenu )
		
		# self.telechargementsWidget.addAction( QtGui.QAction( self.pauseIco, stringToQstring( "Suspendre le téléchargement" ), self.telechargementsWidget ) )
		
		# self.telechargementsWidget.addAction( QtGui.QAction( self.startIco, stringToQstring( "Reprendre le téléchargement" ), self.telechargementsWidget ) )
		
		# Action pour annuler un telechargement
		cancelAction = QtGui.QAction( self.cancelIco, stringToQstring( "Annuler le téléchargement" ), self.telechargementsWidget )
		self.telechargementsWidget.addAction( cancelAction )
		QtCore.QObject.connect( cancelAction,
								QtCore.SIGNAL( "triggered()" ),
								self.supprimerTelechargement )		
		
		# Action pour effacer les telechargement termines de la liste
		clearListAction = QtGui.QAction( self.deleteIco, stringToQstring( "Effacer les téléchargements terminées de la liste" ), self.telechargementsWidget )
		self.telechargementsWidget.addAction( clearListAction )
		QtCore.QObject.connect( clearListAction,
								QtCore.SIGNAL( "triggered()" ),
								telechargementsTableModel.clearList )
				
		#
		# Onglet Parametres
		#
		
		# Layout de forumlaire
		self.parametresLayout = QtGui.QFormLayout( self.parametresWidget )
		
		# Titre Repertoire
		self.titreRepertoireLabel = QtGui.QLabel( self.parametresWidget )
		self.titreRepertoireLabel.setFont( self.titreFont )
		self.titreRepertoireLabel.setText( u"Répertoires :" )
		self.parametresLayout.addRow( self.titreRepertoireLabel, None )		
		
		# Repertoire par defaut pour les videos
		self.choixRepertoire = QtFolderChooser( self.parametresWidget, self.folderIco )
		QtCore.QObject.connect( self.choixRepertoire,
								QtCore.SIGNAL( "valueChanged(PyQt_PyObject)" ),
								lambda valeur : self.enregistrerConfiguration( Configuration.TVD_REPERTOIRE_TELECHARGEMENT, valeur ) )
		self.parametresLayout.addRow( u"Répertoire de téléchargement :", self.choixRepertoire )
		
		# Titre Internet
		self.titreInternetLabel = QtGui.QLabel( self.parametresWidget )
		self.titreInternetLabel.setFont( self.titreFont )
		self.titreInternetLabel.setText( u"Paramètres Internet :" )
		self.parametresLayout.addRow( self.titreInternetLabel, None )

		# Time out du navigateur
		self.timeOutSpinBox = QtGui.QSpinBox( self.parametresWidget )
		self.timeOutSpinBox.setMinimum( 1 )
		self.timeOutSpinBox.setMaximum( 60 )
		QtCore.QObject.connect( self.timeOutSpinBox,
								QtCore.SIGNAL( "valueChanged(int)" ),
								lambda valeur : self.enregistrerConfiguration( Configuration.NAVIGATEUR_TIMEOUT, str( valeur ) ) )
		self.parametresLayout.addRow( u"Time out (en s) :", self.timeOutSpinBox )
		
		# Nombre de threads du navigateur
		self.threadSpinBox = QtGui.QSpinBox( self.parametresWidget )
		self.threadSpinBox.setMinimum( 1 )
		self.threadSpinBox.setMaximum( 100 )
		QtCore.QObject.connect( self.threadSpinBox,
								QtCore.SIGNAL( "valueChanged(int)" ),
								lambda valeur : self.enregistrerConfiguration( Configuration.NAVIGATEUR_THREADS, str( valeur ) ) )
		self.parametresLayout.addRow( u"Nombre de threads max :", self.threadSpinBox )
		
		#
		# Descriptif des fichiers
		#
		
		#
		# Barres de progression
		#
		
		# self.dlFichierProgressBar = QtGui.QProgressBar( self.centralWidget )
		# self.dlFichierProgressBar.setProperty( "value", 0 )
		# self.centralGridLayout.addWidget( self.dlFichierProgressBar, 2, 0, 1, 2 )
		
		# self.dlProgressBar = QtGui.QProgressBar( self.centralWidget )
		# self.dlProgressBar.setProperty( "value", 0 )
		# self.centralGridLayout.addWidget( self.dlProgressBar, 3, 0, 1, 2 )
		
		#
		# Bouton de téléchargement
		#
		
		# self.lancerPushButton = QtGui.QPushButton( self.startIco, u"Lancer téléchargement", self.centralWidget )
		# self.centralGridLayout.addWidget( self.lancerPushButton, 4, 0, 1, 2 )
		
		#
		# Autre
		#
		
		# Instancie la fenetre d'attente
		self.fenetreAttente = WaitWindow( self )
		QtCore.QObject.connect( self,
								QtCore.SIGNAL( "debutActualisation(PyQt_PyObject)" ),
								self.fenetreAttente.ouvrirFenetreAttente )
		QtCore.QObject.connect( self,
								QtCore.SIGNAL( "finActualisation()" ),
								self.fenetreAttente.fermerFenetreAttente )
		
		#
		# Debut
		#
		
		self.actionsAuDebut()
Ejemplo n.º 18
0
    def setDir(self, dirPath):
        """
		Set dir
		"""
        self.folderChooserLineEdit.setText(stringToQstring(dirPath))
Ejemplo n.º 19
0
	def setDir( self, dirPath ):
		"""
		Set dir
		"""
		self.folderChooserLineEdit.setText( stringToQstring( dirPath ) )
	def headerData( self, section, orientation, role ):
		if( orientation == QtCore.Qt.Horizontal and role == QtCore.Qt.DisplayRole ):
			return QtCore.QVariant( stringToQstring( self.header[ section ] ) )
		return QtCore.QVariant()
 def headerData(self, section, orientation, role):
     if (orientation == QtCore.Qt.Horizontal
             and role == QtCore.Qt.DisplayRole):
         return QtCore.QVariant(stringToQstring(self.header[section]))
     return QtCore.QVariant()
Ejemplo n.º 22
0
    def __init__(self, tvdVersion):
        """
		Constructeur
		"""
        # Appel au constructeur de la classe mere
        QtGui.QMainWindow.__init__(self)

        #
        # Fonts
        #

        # Font pour les titres
        self.titreFont = QtGui.QFont()
        self.titreFont.setPointSize(11)
        self.titreFont.setWeight(75)
        self.titreFont.setBold(True)

        #
        # Icones
        #

        self.tvdIco = QtGui.QIcon("uis/qt/ico/TVDownloader.png")
        self.folderIco = QtGui.QIcon("uis/qt/ico/gtk-folder.svg")
        self.startIco = QtGui.QIcon("uis/qt/ico/gtk-media-play-ltr.svg")
        self.settingsIco = QtGui.QIcon("uis/qt/ico/gtk-preferences.svg")
        self.fileIco = QtGui.QIcon("uis/qt/ico/gtk-file.svg")
        self.downloadIco = QtGui.QIcon("uis/qt/ico/fr_stock_add.svg")
        self.pauseIco = QtGui.QIcon("uis/qt/ico/gtk-media-pause.svg")
        self.cancelIco = QtGui.QIcon("uis/qt/ico/gtk-cancel.svg")
        self.deleteIco = QtGui.QIcon("uis/qt/ico/gtk-delete-full.svg")

        #
        # Signaux
        #

        # Liste des plugins a mettre en place
        self.listePluginsSignal = QtCore.SIGNAL("listePlugins(PyQt_PyObject)")
        QtCore.QObject.connect(self, self.listePluginsSignal,
                               self.ajouterPlugins)

        # Liste des chaines a mettre en place
        self.listeChainesSignal = QtCore.SIGNAL("listeChaines(PyQt_PyObject)")
        QtCore.QObject.connect(self, self.listeChainesSignal,
                               self.ajouterChaines)

        # Liste des emissions a mettre en place
        self.listeEmissionsSignal = QtCore.SIGNAL(
            "listeEmission(PyQt_PyObject)")
        QtCore.QObject.connect(self, self.listeEmissionsSignal,
                               self.ajouterEmissions)

        # Liste des fichiers a mettre en place
        self.listeFichiersSignal = QtCore.SIGNAL(
            "listeFichiers(PyQt_PyObject)")
        QtCore.QObject.connect(self, self.listeFichiersSignal,
                               self.ajouterFichiers)

        # Affiche une nouvelle image de description
        self.nouvelleImageDescriptionSignal = QtCore.SIGNAL(
            "nouvelleImageDescription(PyQt_PyObject)")
        QtCore.QObject.connect(self, self.nouvelleImageDescriptionSignal,
                               self.afficherImageDescription)

        #
        # Reglages de la fenetre
        #

        # Nom de la fenetre
        self.setWindowTitle("%s %s" %
                            (Constantes.TVD_NOM, Constantes.TVD_VERSION))
        # Mise en place de son icone
        self.setWindowIcon(self.tvdIco)

        #
        # Widget central de la fenetre
        #

        # Widget central qui contiendra tout
        self.centralWidget = QtGui.QWidget(self)
        self.setCentralWidget(self.centralWidget)

        # Layout de grille pour le widget central
        self.centralGridLayout = QtGui.QGridLayout(self.centralWidget)

        #
        # Onglets
        #

        # Gestionnaire onglets
        self.tabWidget = QtGui.QTabWidget(self.centralWidget)
        self.centralGridLayout.addWidget(self.tabWidget, 0, 0, 1, 2)

        # Onglet Fichiers
        self.fichiersWidget = QtGui.QSplitter(QtCore.Qt.Vertical,
                                              self.centralWidget)
        self.tabWidget.addTab(self.fichiersWidget, self.fileIco,
                              u"Choix des fichiers")

        # Onglet Telechargements
        self.telechargementsWidget = QtTableView(self.centralWidget)
        self.tabWidget.addTab(self.telechargementsWidget, self.downloadIco,
                              u"Téléchargements")

        # Onglet Parametres
        self.parametresWidget = QtGui.QWidget(self.centralWidget)
        self.tabWidget.addTab(self.parametresWidget, self.settingsIco,
                              u"Paramètres")

        #
        # Onglet Fichiers
        #

        # Widget choix fichiers
        self.choixFichiersWidget = QtGui.QSplitter(QtCore.Qt.Horizontal,
                                                   self.fichiersWidget)
        self.fichiersWidget.addWidget(self.choixFichiersWidget)

        # Widget choix de la chaine
        self.chaineWidget = QtGui.QWidget(self.choixFichiersWidget)
        self.choixFichiersWidget.addWidget(self.chaineWidget)

        # Layout chaine
        self.chaineLayout = QtGui.QVBoxLayout(self.chaineWidget)

        # Choix du plugin
        self.pluginComboBox = QtGui.QComboBox(self.chaineWidget)
        QtCore.QObject.connect(self.pluginComboBox,
                               QtCore.SIGNAL("activated(QString)"),
                               self.listerChaines)
        self.chaineLayout.addWidget(self.pluginComboBox)

        # Liste des chaines
        self.chaineIconsList = QtIconsList(self.chaineWidget)
        QtCore.QObject.connect(self.chaineIconsList,
                               QtCore.SIGNAL("buttonClicked(PyQt_PyObject)"),
                               self.listerEmissions)
        self.chaineLayout.addWidget(self.chaineIconsList)

        # Widget choix des fichiers
        self.fichierWidget = QtGui.QWidget(self.choixFichiersWidget)
        self.choixFichiersWidget.addWidget(self.fichierWidget)

        # Layout fichiers
        self.fichierLayout = QtGui.QVBoxLayout(self.fichierWidget)

        # Choix de l'emission
        self.emissionComboBox = QtGui.QComboBox(self.fichierWidget)
        QtCore.QObject.connect(self.emissionComboBox,
                               QtCore.SIGNAL("activated(QString)"),
                               self.listerFichiers)
        self.fichierLayout.addWidget(self.emissionComboBox)

        # Liste des fichiers
        self.fichierTableView = QtTableView(self.fichierWidget)
        fichierTableModel = FichiersTableModel()
        self.fichierTableView.setModel(fichierTableModel)
        self.fichierLayout.addWidget(self.fichierTableView)

        QtCore.QObject.connect(
            self.fichierTableView.selectionModel(),
            QtCore.SIGNAL(
                "selectionChanged(const QItemSelection &, const QItemSelection &)"
            ), self.afficherDescriptionFichier)

        QtCore.QObject.connect(
            self.fichierTableView,
            QtCore.SIGNAL("doubleClicked(const QModelIndex &)"),
            self.ajouterTelechargement)

        # Widget descriptif fichier
        self.descriptifFichierWidget = QtGui.QSplitter(QtCore.Qt.Horizontal,
                                                       self.fichiersWidget)
        self.fichiersWidget.addWidget(self.descriptifFichierWidget)

        # Label du fichier
        self.fichierLabel = QtGui.QLabel(self.descriptifFichierWidget)
        self.descriptifFichierWidget.addWidget(self.fichierLabel)

        # Logo par defaut
        self.logoDefautPixmap = QtGui.QPixmap()
        self.logoDefautPixmap.load("uis/qt/ico/gtk-dialog-question.svg")
        self.afficherImageDescription(self.logoDefautPixmap)

        # Descriptif du fichier
        self.descriptionPlainTextEdit = QtGui.QPlainTextEdit(
            self.descriptifFichierWidget)
        self.descriptifFichierWidget.addWidget(self.descriptionPlainTextEdit)

        #
        # Onglet Telechargements
        #

        # Liste des telechargements
        telechargementsTableModel = TelechargementsTableModel()
        self.telechargementsWidget.setModel(telechargementsTableModel)
        # self.telechargementsWidget.setItemDelegateForColumn( 1, QtProgressBarDelegate() )

        # Menu clic droit sur la liste des telechargements
        self.telechargementsWidget.setContextMenuPolicy(
            QtCore.Qt.ActionsContextMenu)

        # self.telechargementsWidget.addAction( QtGui.QAction( self.pauseIco, stringToQstring( "Suspendre le téléchargement" ), self.telechargementsWidget ) )

        # self.telechargementsWidget.addAction( QtGui.QAction( self.startIco, stringToQstring( "Reprendre le téléchargement" ), self.telechargementsWidget ) )

        # Action pour annuler un telechargement
        cancelAction = QtGui.QAction(
            self.cancelIco, stringToQstring("Annuler le téléchargement"),
            self.telechargementsWidget)
        self.telechargementsWidget.addAction(cancelAction)
        QtCore.QObject.connect(cancelAction, QtCore.SIGNAL("triggered()"),
                               self.supprimerTelechargement)

        # Action pour effacer les telechargement termines de la liste
        clearListAction = QtGui.QAction(
            self.deleteIco,
            stringToQstring(
                "Effacer les téléchargements terminées de la liste"),
            self.telechargementsWidget)
        self.telechargementsWidget.addAction(clearListAction)
        QtCore.QObject.connect(clearListAction, QtCore.SIGNAL("triggered()"),
                               telechargementsTableModel.clearList)

        #
        # Onglet Parametres
        #

        # Layout de forumlaire
        self.parametresLayout = QtGui.QFormLayout(self.parametresWidget)

        # Titre Repertoire
        self.titreRepertoireLabel = QtGui.QLabel(self.parametresWidget)
        self.titreRepertoireLabel.setFont(self.titreFont)
        self.titreRepertoireLabel.setText(u"Répertoires :")
        self.parametresLayout.addRow(self.titreRepertoireLabel, None)

        # Repertoire par defaut pour les videos
        self.choixRepertoire = QtFolderChooser(self.parametresWidget,
                                               self.folderIco)
        QtCore.QObject.connect(
            self.choixRepertoire, QtCore.SIGNAL("valueChanged(PyQt_PyObject)"),
            lambda valeur: self.enregistrerConfiguration(
                Configuration.TVD_REPERTOIRE_TELECHARGEMENT, valeur))
        self.parametresLayout.addRow(u"Répertoire de téléchargement :",
                                     self.choixRepertoire)

        # Titre Internet
        self.titreInternetLabel = QtGui.QLabel(self.parametresWidget)
        self.titreInternetLabel.setFont(self.titreFont)
        self.titreInternetLabel.setText(u"Paramètres Internet :")
        self.parametresLayout.addRow(self.titreInternetLabel, None)

        # Time out du navigateur
        self.timeOutSpinBox = QtGui.QSpinBox(self.parametresWidget)
        self.timeOutSpinBox.setMinimum(1)
        self.timeOutSpinBox.setMaximum(60)
        QtCore.QObject.connect(
            self.timeOutSpinBox, QtCore.SIGNAL("valueChanged(int)"),
            lambda valeur: self.enregistrerConfiguration(
                Configuration.NAVIGATEUR_TIMEOUT, str(valeur)))
        self.parametresLayout.addRow(u"Time out (en s) :", self.timeOutSpinBox)

        # Nombre de threads du navigateur
        self.threadSpinBox = QtGui.QSpinBox(self.parametresWidget)
        self.threadSpinBox.setMinimum(1)
        self.threadSpinBox.setMaximum(100)
        QtCore.QObject.connect(
            self.threadSpinBox, QtCore.SIGNAL("valueChanged(int)"),
            lambda valeur: self.enregistrerConfiguration(
                Configuration.NAVIGATEUR_THREADS, str(valeur)))
        self.parametresLayout.addRow(u"Nombre de threads max :",
                                     self.threadSpinBox)

        #
        # Descriptif des fichiers
        #

        #
        # Barres de progression
        #

        # self.dlFichierProgressBar = QtGui.QProgressBar( self.centralWidget )
        # self.dlFichierProgressBar.setProperty( "value", 0 )
        # self.centralGridLayout.addWidget( self.dlFichierProgressBar, 2, 0, 1, 2 )

        # self.dlProgressBar = QtGui.QProgressBar( self.centralWidget )
        # self.dlProgressBar.setProperty( "value", 0 )
        # self.centralGridLayout.addWidget( self.dlProgressBar, 3, 0, 1, 2 )

        #
        # Bouton de téléchargement
        #

        # self.lancerPushButton = QtGui.QPushButton( self.startIco, u"Lancer téléchargement", self.centralWidget )
        # self.centralGridLayout.addWidget( self.lancerPushButton, 4, 0, 1, 2 )

        #
        # Autre
        #

        # Instancie la fenetre d'attente
        self.fenetreAttente = WaitWindow(self)
        QtCore.QObject.connect(
            self, QtCore.SIGNAL("debutActualisation(PyQt_PyObject)"),
            self.fenetreAttente.ouvrirFenetreAttente)
        QtCore.QObject.connect(self, QtCore.SIGNAL("finActualisation()"),
                               self.fenetreAttente.fermerFenetreAttente)

        #
        # Debut
        #

        self.actionsAuDebut()