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()
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)
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)
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 )
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 )
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 )
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 )
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)
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
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)
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
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()
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
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 )
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)
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()
def setDir(self, dirPath): """ Set dir """ self.folderChooserLineEdit.setText(stringToQstring(dirPath))
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()
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()