def __init__(self, statusBar, filer=False): QWidget.__init__(self) # Boite d'alignement vertical vbox=QVBoxLayout(self) # On ne passe pas tout le parent, mais juste ce dont on a besoin (ici la bar de status) # Barre des tâches self.statusBar = statusBar #------------------- # Navigateur de répertoires #------------------- # arborescence des fichiers et dossiers permettant l'affichage self.listViewVisioVideo = QListView() filtres_option = QDir.AllDirs | QDir.Files | QDir.Readable filtres = QStringList() filtres << "*.avi" << "*.mpg" << "*.mpeg" << "*.mjpeg" << "*.flv" << "*.mp4" << "*.ogg" << "*.vob" << "*.mov" << "*.h264" << "*.wmv" << "*.3gp" sorting = QDir.DirsFirst if int(EkdConfig.get("general", "ignore_case")): sorting |= QDir.IgnoreCase self.model = QDirModel(filtres, filtres_option, sorting) try : index = self.model.index(EkdConfig.get('general', 'video_input_path')) except Exception, e: index = self.model.index(QDir.homePath())
def loadFiles(self): """ # On sauvegarde la liste des fichiers chargés """ self.afficheurVideoSource.loadFileLocation(self.idSection) self.valeurDebut = float(EkdConfig.get(self.idSection, "valeurDebut")) self.valeurFin = float(EkdConfig.get(self.idSection, "valeurFin")) self.mettreAJourLabel("debut") self.mettreAJourLabel("fin")
def loadOptions(self): """ On charge les différentes variables necessaire au widget """ idCodec = EkdConfig.get(self.idSection,'codec') self.codecSortie.setCurrentIndex(int(idCodec)) resolution = EkdConfig.get(self.idSection,'resolution') self.resoSortie.setCurrentIndex(int(resolution)) frequence = EkdConfig.get(self.idSection,'images_par_seconde') self.nbrImage.setValue(int(frequence)) qualite = EkdConfig.get(self.idSection,'qualite') self.qualite.setValue(int(qualite))
def load(self): ''' Chargement de la configuration de tous les objets ''' self.loadFiles() files = EkdConfig.get(self.idSection, 'ordreVideo') if debug : #print files EkdPrint(u"%s" % str(files)) self.ordreVideo.addSoundAction(files.split(u":")) files = EkdConfig.get(self.idSection, 'ordreAudio') if debug : #print files EkdPrint(u"%s" % str(files)) self.ordreAudio.addSoundAction(files.split(u":"))
def displayLenght(self) : #QT4 OK self.totimage=0 if self.videof.currentText()=="NTSC" : self.n=1 imgpsec=30 ips=float(30000/1001) else : self.n=0 imgpsec=25 ips=imgpsec dicspeed={"0":1,"1":2,"2":4,"3":5,"4":10,"5":20} speedtrans=dicspeed[str(EkdConfig.get("videoporamaconfig","speedt"))] frametransition = 100 / speedtrans k=0 while k<self.timeline.columnCount() : self.totimage += self.timeline.cellWidget(0,k).imagetime(self.n)[1]+self.timeline.cellWidget(0,k).imagetime(self.n)[2] k+=1 self.totimage+=frametransition sec=float(self.totimage) / ips seconde=str(sec % 60).split(".") minute=int(sec / 60) heure=int(minute / 60) timesnd="%s:%s:%s.%s" % (str(heure).rjust(2,'0'),str(minute).rjust(2,'0'),seconde[0].rjust(2,'0'),seconde[1].ljust(3,'0')[0:3]) self.duration.setText(timesnd)
def getFile(self): ''' Invoque la boite de dialogue et retourne le fichier saisi ''' ## Ajout d'une boite de dialogue avertissant du format des fichier de sortis dans le cas de multiples fichier à enregistrer show = Qt.Unchecked try : show = int(EkdConfig.get("general", "show_warning_messages")) except Exception, e: #print "%s" % e EkdPrint("%s" % e) pass
def add2(self,files) : #Different de videoporama try : self.lastdir=self.findDir(files[0]) except : None try : bgf=EkdConfig.get("videoporamaconfig","bgfile") except : bgf="" for file in files : k=self.timeline.columnCount() if file != u"" : self.DisplayThumb(file,k, EkdConfig.get("videoporamaconfig","time"), bgf, int(EkdConfig.get("videoporamaconfig","bgcolor"),16), EkdConfig.get("videoporamaconfig","typet"), 0, EkdConfig.get("videoporamaconfig","speedt")) if self.timeline.columnCount() != 0 : self.serieBut.setEnabled(True) self.displayLenght()
def load(self) : self.afficheurImgSource.loadFileLocation(self.idSection) self.spin1_ImTrait.setValue(int(EkdConfig.get(self.idSection, 'spin1_ImTrait'))) self.spin2_ImTrait.setValue(int(EkdConfig.get(self.idSection, 'spin2_ImTrait'))) self.stacked_redim_avec_ratio.spin.setValue(int(EkdConfig.get(self.idSection, 'stacked_redim_avec_ratio'))) self.stacked_redim_sans_ratio.spin.setValue(int(EkdConfig.get(self.idSection, 'stacked_redim_sans_ratio1'))) self.stacked_redim_sans_ratio.spin2.setValue(int(EkdConfig.get(self.idSection, 'stacked_redim_sans_ratio2'))) self.comboReglage.setCurrentIndex(int(EkdConfig.get(self.idSection, 'type_redim')))
def ouvrirSource(self, nomEntree=None): """ Récupération des chemins vidéo sélectionnée """ # On n'utilise pas le fonction recupSources du fichier animation_base.py contenu dans # le répertoire gui_modules_animation car pour cette fonction uniquement les fichiers # AVI (donc extension .avi) sont autorisés try: repEntree = EkdConfig.get('general', 'video_input_path') except: repEntree = os.path.expanduser('~') #################################################################################### txt = _(u"Fichiers vidéos") if not nomEntree: liste=QFileDialog.getOpenFileNames(None, _(u"Ouvrir"), repEntree, "%s (*.avi *.mpg *.mpeg *.vob)\n" %txt) self.liste = [unicode(i) for i in liste] #################################################################################### chemin=self.liste if not chemin: return ## On a récupérer la vidéo, on défini le nouveau chemin par défaut des vidéos EkdConfig.set('general', 'video_input_path', os.path.dirname(chemin[0])) self.lstFichiersSource = [] for fichier in chemin: self.lstFichiersSource.append(fichier) # Appel de la fonction nouvelleResolution pour application 16/9 ou 4/3 self.nouvelleResolution() #print 'self.idCombo', self.idCombo EkdPrint(u'self.idCombo %s' % self.idCombo) # Le bouton appliquer devient utilisable self.boutApp.setEnabled(True) self.boutApp.setToolTip("") self.mplayer.setEnabled(True) self.mplayer.listeVideos = self.lstFichiersSource self.radioSource.setChecked(True) self.radioSource.setEnabled(False) self.radioConvert.setEnabled(False) # Affichage du chemin + nom de fichier dans la ligne d'édition self.ligneEditionSource.setText(liste[0]) self.statusBar.showMessage(_(u"La vidéo résultante ne pourra pas être lue avec tous les logiciels"))
def load(self) : self.selectionAudioFile.loadFileLocation(self.idSection) self.selectionFile.reglageExp.loadConfig(self.idSection) self.choix1.setChecked(int(EkdConfig.get(self.idSection, 'choix1'))) self.choix2.setChecked(int(EkdConfig.get(self.idSection, 'choix2'))) self.choix3.setChecked(int(EkdConfig.get(self.idSection, 'choix3'))) self.choixm1.setChecked(int(EkdConfig.get(self.idSection, 'choixm1'))) self.choixm2.setChecked(int(EkdConfig.get(self.idSection, 'choixm2'))) self.choixm3.setChecked(int(EkdConfig.get(self.idSection, 'choixm3')))
def ouvrirVideo(self): """Ouverture de la boîte de dialogue de fichiers""" txt = u"Fichiers vidéo" if self.cheminPourBoutonParcourir: chemin = self.cheminPourBoutonParcourir else: try: chemin = EkdConfig.get('general','video_input_path').decode("UTF8") except: chemin = os.path.expanduser('~') liste=QFileDialog.getOpenFileNames(None, u"Ouvrir", chemin, "%s (*.avi *.mpg *.mpeg *.mjpeg *.flv *.mp4 *.ogg *.vob *.mov *.wmv *.3gp *.h264)\n*" %txt) if not liste: return self.listeVideos = liste self.changeRatio(unicode(self.listeVideos[0])) chemin = unicode(self.listeVideos[0]) EkdConfig.set('general','video_input_path',os.path.dirname(chemin).encode("UTF8"))
def recupSourceAudio(self, nomEntree=None): """Récupère le fichier source audio via une boite de dialogue. Utilise et modifie les paramètres de configuration""" if self.ligneEditionSource.text().isEmpty(): lignePleine = False else: lignePleine = True fichier = unicode(self.ligneEditionSource.text()) path = os.path.dirname(fichier) if lignePleine and os.path.exists(path): repEntree = path else: try: repEntree = EkdConfig.get('general','audio_input_path').decode("UTF8") except Exception, e: repEntree = '~' EkdConfig.set('general','audio_input_path', repEntree.encode("UTF8")) if not QFileInfo(repEntree).exists(): repEntree = '~' EkdConfig.set('general','audio_input_path', repEntree.encode("UTF8"))
def recupSourcesAudio(self, nomEntree=None): """Récupère les fichiers sources audio via une boite de dialogue. Utilise et modifie les paramètres de configuration""" if not self.lstFichiersSourceAudio: listePleine = False else: listePleine = True fichier = self.lstFichiersSourceAudio[0] path = os.path.dirname(fichier) if listePleine and os.path.exists(path): repEntree = path else: try: repEntree = EkdConfig.get('general','audio_input_path').decode("UTF8") except Exception, e: repEntree = '~' EkdConfig.set('general','audio_input_path', repEntree.encode("UTF8")) if not os.path.exists(repEntree): repEntree = '~' EkdConfig.set('general','audio_input_path', repEntree.encode("UTF8"))
def __init__(self, verifsformats, parent=None) : super(vid_widg, self).__init__(parent) self.retranslateUi() self.parent=parent self.verifsformats = verifsformats self.outputfileformat.addItems(self.verifsformats[4]) z=self.checkfirsttime("o") self.home=os.path.expanduser("~") self.lastdir=self.home self.timeline.horizontalHeader().hide() self.timeline.verticalHeader().hide() self.timeline.setRowCount(1) self.timeline.setRowHeight(0,75) self.pfilee=0 self.saveas=0 self.index=-1 self.actionMove_left.setDisabled(True) self.actionMove_right.setDisabled(True) self.serieBut.setDisabled(True) if os.name != 'nt' : self.I=EkdConfig.get("videoporamaconfig", "imgmgkdir") else : self.I="" # Chargement des données template fo=open(self.templatedir + os.sep +"template_data.idv","r") # Import des données template à partir du fichier idv self.datat=minidom.parse(fo) fo.close() self.data=self.datat # Create transition list self.LstTransi() self.typet.addItems(self.lstT) self.transiopt.addItem(self.tr("No Option")) # Display default values and configs self.affichedata(self.templatedir + os.sep + 'template_data.idv') sizes=QFontDatabase.standardSizes() Ssizes=QStringList() for size in sizes : Ssizes.append(str(size)) self.fontSize.insertItems(0,Ssizes) self.fontSize.setCurrentIndex(6) FD=QFont(self.fontComboBox.currentText(),int(self.fontSize.currentText())) self.changeFont(FD) bckcol=QPalette() bckcol.setColor(QPalette.Base,Qt.black) self.fontColor.setPalette(bckcol) # Qt SLOT/SIGNAL connection self.connect(self.fontColorB,SIGNAL("pressed()"),self.setTextColor) self.connect(self.fontComboBox,SIGNAL("currentFontChanged(QFont)"),self.changeFont) self.connect(self.bold,SIGNAL("released()"),self.setBold) self.connect(self.Italic,SIGNAL("released()"),self.setItalic) self.connect(self.Souligne,SIGNAL("released()"),self.setUnderline) self.connect(self.textLeft,SIGNAL("pressed()"),self.setTextLeft) self.connect(self.textCenter,SIGNAL("pressed()"),self.setTextCenter) self.connect(self.textRight,SIGNAL("pressed()"),self.setTextRight) self.connect(self.addText,SIGNAL("pressed()"),self.addTextToImage) self.connect(self.updateText,SIGNAL("pressed()"),self.updateTextImage) self.connect(self.deleteText,SIGNAL("pressed()"),self.deleteTextImage) self.connect(self.emptyText,SIGNAL("pressed()"),self.emptyTextf) self.connect(self.fontSize,SIGNAL("currentIndexChanged(QString)"),self.changeSizeFont) self.connect(self.timeline,SIGNAL("itemSelectionChanged()"),self.selectionListe) self.connect(self.textEdit,SIGNAL("currentCharFormatChanged(QTextCharFormat)"),self.updateFont) self.connect(self.typet,SIGNAL("currentIndexChanged(int)"),self.chgTrOption) self.connect(self.transiopt,SIGNAL("currentIndexChanged(int)"),self.chgopttransi) self.connect(self.time,SIGNAL("valueChanged(int)"),self.chtime) self.connect(self.actionMove_right,SIGNAL("pressed()"),self.up) self.connect(self.actionMove_left,SIGNAL("pressed()"),self.down) self.connect(self.speedt,SIGNAL("activated(int)"),self.choixspeedt) self.connect(self.bgcolor,SIGNAL("lostFocus()"),self.chbgcolor) self.connect(self.bgfile,SIGNAL("lostFocus()"),self.chbgfile) self.connect(self.bgcolora,SIGNAL("clicked()"),self.setBgcolor) self.connect(self.soundfile,SIGNAL("lostFocus()"),self.chsndfile) self.connect(self.bgfilea,SIGNAL("clicked()"),self.setBgfile) self.connect(self.soundfilea,SIGNAL("clicked()"),self.sndfilea) self.connect(self.startZoomSize,SIGNAL("valueChanged(int)"),self.startZoomSizeA) self.connect(self.endZoomSize,SIGNAL("valueChanged(int)"),self.endZoomSizeA) self.connect(self.option,SIGNAL("currentChanged(int)"),self.setTabZoom) self.connect(self.chkZoom,SIGNAL("stateChanged(int)"),self.chkZoomAction) self.connect(self.validZoom,SIGNAL("pressed()"),self.validZoomAction) self.connect(self.imgformat,SIGNAL("activated(int)"),self.setImgFormat) self.connect(self.videof,SIGNAL("activated(int)"),self.choixvideof) self.connect(self.outputfileformat,SIGNAL("activated(int)"),self.choixoutputformat) self.connect(self.serieBut,SIGNAL("pressed()"),self.serie)
def load(self) : self.afficheurImgSourceAvecCanalAlpha.loadFileLocation(self.idSection, u'sourcesa') self.afficheurImgSourceSansCanalAlpha.loadFileLocation(self.idSection, u'sourcessa') self.spin1.setValue(int(EkdConfig.get(self.idSection, u'spin1'))) self.spin2.setValue(int(EkdConfig.get(self.idSection, u'spin2')))
def updateTimer(self): interval = float(EkdConfig.get("general", "interval_speed")) * 1000 if interval > 100: self.timer.setInterval(interval) else: self.timer.setInterval(100)
def updateNum(self, val): self.value = val EkdConfig.set(self.section, self.id, self.value) #print "Debug:: TIMER %s | value %s | value Ekd config %s | section %s" % (self.id, self.value, EkdConfig.get(self.section, self.id), self.section) EkdPrint(u"Debug:: TIMER %s | value %s | value Ekd config %s | section %s" % (self.id, self.value, EkdConfig.get(self.section, self.id), self.section))
def __init__(self, statusBar, boutParcourir=False, filer=False): QWidget.__init__(self) self.sortie = [] # Boite d'alignement verticale vbox = QVBoxLayout(self) # On ne passe pas tout le parent, mais juste ce dont on a besoin (ici la bar de status) # Barre des tâches self.statusBar = statusBar # ------------------- # Navigateur de répertoires # ------------------- # arborescence des fichiers et dossiers permettant l'affichage self.listViewVisioImg = QListView() filtres_option = QDir.Dirs | QDir.Readable | QDir.Executable filtres = QStringList() filtres << "*" sorting = QDir.DirsFirst if int(EkdConfig.get("general", "ignore_case")): sorting |= QDir.IgnoreCase self.model = QDirModel(filtres, filtres_option, sorting) try: index = self.model.index(EkdConfig.get("general", "image_input_path")) except: index = self.model.index(QDir.homePath()) self.listViewVisioImg.setModel(self.model) self.listViewVisioImg.setRootIndex(index) self.connect(self.listViewVisioImg, SIGNAL("doubleClicked(const QModelIndex &)"), self.naviguer) self.connect(self.listViewVisioImg, SIGNAL("clicked(QModelIndex)"), self.updateDir) # Ajout du navigateur à la VBox if filer: vbox.addWidget(self.listViewVisioImg) self.listViewVisioImg.setMaximumHeight(100) # ------------------- # Boite de commandes # ------------------- # Création du visionneur self.afficheurImg = VisionneurImagePourEKD() # -Boite horizontale des boutons de commandes hbox2 = QHBoxLayout() iconTaille = 32 flat = 1 # --Bouton début boutDebut = QPushButton() boutDebut.setIcon(QIcon("Icones" + os.sep + "player_start.png")) boutDebut.setIconSize(QSize(iconTaille, iconTaille)) boutDebut.setToolTip(_(u"Première image")) boutDebut.setFlat(flat) hbox2.addWidget(boutDebut) self.connect(boutDebut, SIGNAL("clicked()"), self.debut) # --Bouton precedent boutPrecedent = QPushButton() boutPrecedent.setIcon(QIcon("Icones" + os.sep + "player_rew.png")) boutPrecedent.setIconSize(QSize(iconTaille, iconTaille)) boutPrecedent.setToolTip(_(u"Image précédente")) boutPrecedent.setFlat(flat) hbox2.addWidget(boutPrecedent) self.connect(boutPrecedent, SIGNAL("clicked()"), self.precedent) # --Bouton de lecture boutLecture = QPushButton() boutLecture.setIcon(QIcon("Icones" + os.sep + "player_play.png")) boutLecture.setIconSize(QSize(iconTaille, iconTaille)) boutLecture.setToolTip(_(u"Lancer le diaporama")) boutLecture.setFlat(flat) hbox2.addWidget(boutLecture) self.connect(boutLecture, SIGNAL("clicked()"), self.diaporama) # --Bouton pause boutArret = QPushButton() boutArret.setIcon(QIcon("Icones" + os.sep + "player_pause.png")) boutArret.setIconSize(QSize(iconTaille, iconTaille)) boutArret.setToolTip(_(u"Mettre en pause le diaporama")) boutArret.setFlat(flat) hbox2.addWidget(boutArret) self.connect(boutArret, SIGNAL("clicked()"), self.pause) ############################################################ # --Bouton suivant boutSuivant = QPushButton() boutSuivant.setIcon(QIcon("Icones" + os.sep + "player_fwd.png")) boutSuivant.setIconSize(QSize(iconTaille, iconTaille)) boutSuivant.setToolTip(_(u"Image suivante")) boutSuivant.setFlat(flat) hbox2.addWidget(boutSuivant) self.connect(boutSuivant, SIGNAL("clicked()"), self.suivant) # --Bouton fin boutFin = QPushButton() boutFin.setIcon(QIcon("Icones" + os.sep + "player_end.png")) boutFin.setIconSize(QSize(iconTaille, iconTaille)) boutFin.setToolTip(_(u"Dernière image")) boutFin.setFlat(flat) hbox2.addWidget(boutFin) self.connect(boutFin, SIGNAL("clicked()"), self.fin) hbox2.addStretch() # --Bouton taille fenetre boutTailleFenetre = QPushButton() boutTailleFenetre.setIcon(QIcon("Icones" + os.sep + "fenetre.png")) boutTailleFenetre.setIconSize(QSize(iconTaille, iconTaille)) boutTailleFenetre.setToolTip(_(u"Ajuster à la fenêtre")) boutTailleFenetre.setFlat(flat) hbox2.addWidget(boutTailleFenetre) self.connect(boutTailleFenetre, SIGNAL("clicked()"), self.afficheurImg.setTailleFenetre) # --Bouton taille reel boutTailleReelle = QPushButton() boutTailleReelle.setIcon(QIcon("Icones" + os.sep + "taillereelle.png")) boutTailleReelle.setIconSize(QSize(iconTaille, iconTaille)) boutTailleReelle.setToolTip(_(u"Taille réelle")) boutTailleReelle.setFlat(flat) hbox2.addWidget(boutTailleReelle) self.connect(boutTailleReelle, SIGNAL("clicked()"), self.afficheurImg.setTailleReelle) # --Bouton zoom avant boutZoomAvant = QPushButton() boutZoomAvant.setIcon(QIcon("Icones" + os.sep + "zoomplus.png")) boutZoomAvant.setIconSize(QSize(iconTaille, iconTaille)) boutZoomAvant.setToolTip(_(u"Zoom avant")) boutZoomAvant.setFlat(flat) hbox2.addWidget(boutZoomAvant) self.connect(boutZoomAvant, SIGNAL("clicked()"), self.afficheurImg.zoomAvant) # --Bouton zoom arrière boutZoomArriere = QPushButton() boutZoomArriere.setIcon(QIcon("Icones" + os.sep + "zoommoins.png")) boutZoomArriere.setIconSize(QSize(iconTaille, iconTaille)) boutZoomArriere.setToolTip(_(u"Zoom arrière")) boutZoomArriere.setFlat(flat) hbox2.addWidget(boutZoomArriere) self.connect(boutZoomArriere, SIGNAL("clicked()"), self.afficheurImg.zoomArriere) # --Bouton zoom arrière prop = "interval_speed" allprops = EkdConfig.getAllProperties(EkdConfig.getConfigSection("general")) self.boutTimer = EkdTimePropertie(prop, EkdConfig.PROPERTIES[prop], allprops[prop], section="general") self.boutTimer.widget.setToolTip(_(u"Vitesse de défilement")) hbox2.addWidget(self.boutTimer.widget) if boutParcourir: # --Bouton Configuration du diaporama # La variable suivante fait le lien entre le chemin sélectionné de l'arbre # et celui qui sera ouvert avec la boite de dialogue du bouton parcourir self.cheminImage = None boutSelectFich = QPushButton("...") boutSelectFich.setToolTip(_(u"Parcourir")) hbox2.addWidget(boutSelectFich) self.connect(boutSelectFich, SIGNAL("clicked()"), self.ouvrirImages) # Apercus self.listeApercus = QListWidget() self.listeApercus.setGridSize(QSize(85, 64)) self.listeApercus.setIconSize(QSize(64, 64)) self.listeApercus.setFlow(QListView.LeftToRight) if PYQT_VERSION_STR >= "4.1.0": self.listeApercus.setHorizontalScrollMode(QAbstractItemView.ScrollPerItem) self.connect(self.listeApercus, SIGNAL("currentRowChanged(int)"), self.changerImage) # Ajout du viewer à la VBox vbox.addWidget(self.afficheurImg) # Ajout de l'apercu à la VBox vbox.addWidget(self.listeApercus) # Fonction de test et de lecture de l'image gif self.isGif = self.afficheurImg.isGif self.startPauseGif = self.afficheurImg.startPauseGif # Création du QTimer self.timer = QTimer() self.updateTimer() self.connect(self.timer, SIGNAL("timeout()"), self.diapo) # Ajout des commandes self.listeApercus.setMaximumSize(QSize(2000, 100)) vbox.addLayout(hbox2)
def __init__(self, titre, texte="", min_w=320, min_h=250, max_w=500, max_h=600, icone="Icones/messagebox_info.png", checkbox=False, parent=None): """Boite de message standard pour ekd. Usage : 1. initialisation en spécifiant la taille, le titre et éventuellement le texte de la fenêtre. l'icone est également paramétrable 2. Ajout du text avec la fonction setAideText. 3. Affichage de la fenêtre en appelant la fonction show(). Facilité : 1. Redimensionnement de la fenêtre par appel de la fonction setSize(w, h) 2. Ajout automatique des bars de défilement.""" super(EkdMessage, self).__init__(parent) self.setWindowTitle(titre) self.setMaximumHeight(max_h) self.setMaximumWidth(max_w) self.setMinimumHeight(min_h) self.setMinimumWidth(min_w) sizePolicy = QSizePolicy(QSizePolicy.Expanding, QSizePolicy.Expanding) sizePolicy.setVerticalStretch(1) self.setSizePolicy(sizePolicy) self.w = min_w self.h = min_h self.verticalLayout = QVBoxLayout(self) self.hbox1 = QHBoxLayout() self.vbox1 = QVBoxLayout() # Icone self.iconeI = QLabel(self) sizePolicy = QSizePolicy(QSizePolicy.Fixed, QSizePolicy.Fixed) sizePolicy.setHorizontalStretch(0) sizePolicy.setVerticalStretch(0) sizePolicy.setHeightForWidth( self.iconeI.sizePolicy().hasHeightForWidth()) self.iconeI.setSizePolicy(sizePolicy) self.iconeI.setPixmap(QPixmap(icone)) self.vbox1.addWidget(self.iconeI) spacerItem = QSpacerItem(20, 40, QSizePolicy.Minimum, QSizePolicy.Expanding) self.vbox1.addItem(spacerItem) self.hbox1.addLayout(self.vbox1) ## # Definition de la zone de texte self.text = QTextEdit(self) ## On utilise le même thème que la fenêtre pour la zone de texte ## On force les couleur ici, on ne laisse pas le Thème s'en charger palette = self.text.palette() palette.setBrush(QPalette.Active, QPalette.Base, self.palette().window()) palette.setBrush(QPalette.Inactive, QPalette.Base, self.palette().window()) palette.setBrush(QPalette.Disabled, QPalette.Base, self.palette().window()) palette.setBrush(QPalette.Active, QPalette.Text, self.palette().windowText()) palette.setBrush(QPalette.Inactive, QPalette.Text, self.palette().windowText()) palette.setBrush(QPalette.Disabled, QPalette.Text, self.palette().windowText()) self.text.setPalette(palette) self.text.setFrameShape(QFrame.NoFrame) self.text.setFrameShadow(QFrame.Plain) self.text.setLineWidth(0) self.text.setReadOnly(True) self.text.setAlignment(Qt.AlignLeft | Qt.AlignTop) sizePolicy = QSizePolicy(QSizePolicy.Expanding,QSizePolicy.Expanding) sizePolicy.setHorizontalStretch(0) sizePolicy.setVerticalStretch(0) sizePolicy.setHeightForWidth(self.text.sizePolicy().hasHeightForWidth()) self.text.setSizePolicy(sizePolicy) self.hbox1.addWidget(self.text) ## self.verticalLayout.addLayout(self.hbox1) self.hbox2 = QHBoxLayout() self.ok = QPushButton(self) self.ok.setText(_("Ok")) sizePolicy = QSizePolicy(QSizePolicy.Fixed, QSizePolicy.Fixed) sizePolicy.setHorizontalStretch(0) sizePolicy.setVerticalStretch(0) sizePolicy.setHeightForWidth(self.ok.sizePolicy().hasHeightForWidth()) self.ok.setSizePolicy(sizePolicy) self.hbox2.addWidget(self.ok) self.verticalLayout.addLayout(self.hbox2) self.setText(texte) ''' Checkbox pour savoir si l'utilisateur veut oui ou non revoir l'avertissement ''' if checkbox : self.checkbox = QCheckBox(_(u"Voir ce message la prochaine fois"), self) self.hbox2.addWidget(self.checkbox) try : self.checkbox.setCheckState(int(EkdConfig.get("general", "show_warning_messages"))) except Exception, e: #print "First time launched" EkdPrint(u"First time launched") self.connect(self.checkbox, SIGNAL("stateChanged(int)"), self.setDontShow)
def __init__(self, parent, path = None, suffix = '', title = u"Sauver", multiple = False, mode = None): if type(suffix) == tuple or type(suffix) == list : sfilter="" for s in suffix : sfilter += "*"+s+" " self.filter=sfilter[:-1] # Si on a plusieur suffix, on prend le premier par défaut pour # la sauvegarde self.suffix = suffix[0] else : self.suffix = suffix self.filter = "*" + self.suffix QDialog.__init__(self, parent) self.setWindowTitle(title) self.multiple = multiple self.mode = mode if not path: if self.mode == "image" : path = EkdConfig.get("general", "image_output_path") elif self.mode == "video" : path = EkdConfig.get("general", "video_output_path") elif self.mode == "audio" : path = EkdConfig.get("general", "sound_output_path") else : path = unicode(QDir.homePath()) # Nom du répertoire courant self.location = QLabel("<b>%s</b>" % path) # Variable permettant de savoir à tout moment le répertoire courant. self.currentDir = path self.mkdirButton = QPushButton(u" Créer un répertoire") self.mkdirButton.setIcon(QIcon("Icones" + os.sep + "add_sub_task.png")) if int(EkdConfig.get("general", "show_hidden_files")) : #print "hidden shown" EkdPrint(u"hidden shown") shf = QDir.Hidden else : shf = QDir.Readable # Liste des fichiers self.dirList = QListView() sorting = QDir.DirsFirst if int(EkdConfig.get("general", "ignore_case")): sorting |= QDir.IgnoreCase self.sorting = sorting self.flags = QDir.Files | QDir.Readable | shf self.dirModel = QStandardItemModel() self.dirList.setModel(self.dirModel) self.updateDir(path) self.dirList.setWrapping(True) #panneau latéral self.dirTree = QTreeView() self.dirModelLight = QDirModel(QStringList(""), QDir.AllDirs | QDir.NoDotAndDotDot | shf, QDir.DirsFirst | QDir.Name | QDir.IgnoreCase) self.dirTree.setModel(self.dirModelLight) self.dirTree.setColumnHidden(1,True) self.dirTree.setColumnHidden(2,True) self.dirTree.setColumnHidden(3,True) self.dirTree.setMaximumWidth(200) self.dirTree.setMinimumWidth(150) self.dirTree.setCurrentIndex(self.dirModelLight.index(path)) self.dirTree.resizeColumnToContents(0) self.connect(self.dirTree, SIGNAL("pressed(QModelIndex)"), self.updateLatDir) self.connect(self.dirTree, SIGNAL("expanded(QModelIndex)"), self.treeMAJ) self.connect(self.dirTree, SIGNAL("collapsed(QModelIndex)"), self.treeMAJ) # Nom du fichier self.fileField = QLineEdit() # Nom du filtre self.filterField = QComboBox() self.filterField.addItems(QStringList(self.filter)) # Bouton de sauvegarde et d'annulation self.saveButton = QPushButton(_(u" Enregistrer")) self.saveButton.setIcon(QIcon("Icones" + os.sep + "action.png")) self.cancelButton = QPushButton(_(u" Annuler")) self.cancelButton.setIcon(QIcon("Icones" + os.sep + "annuler.png")) # Organisation des différents objets de la boite de dialogue self.layout = QHBoxLayout(self) self.layout.addWidget(self.dirTree) self.filelinelayout = QGridLayout() self.filelinelayout.addWidget(self.location, 0, 0, 1, 0) self.filelinelayout.addWidget(self.mkdirButton, 0, 2) self.filelinelayout.addWidget(self.dirList, 1, 0, 1, 0) self.filelinelayout.addWidget(QLabel(_("Nom de fichier : ")), 2, 0) self.filelinelayout.addWidget(self.fileField, 2, 1) self.filelinelayout.addWidget(self.saveButton, 2, 2) self.filelinelayout.addWidget(QLabel(_("Filtre extension : ")), 3, 0) self.filelinelayout.addWidget(self.filterField, 3, 1) self.filelinelayout.addWidget(self.cancelButton, 3, 2) self.layout.addLayout(self.filelinelayout) # Connexion des différents objets self.connect(self.dirList, SIGNAL("clicked(QModelIndex)"), self.updateFile) self.connect(self.saveButton, SIGNAL("clicked()"), self.accept) self.connect(self.cancelButton, SIGNAL("clicked()"), self.reject) self.connect(self.mkdirButton, SIGNAL("clicked()"), self.mkdir) self.connect(self.dirList, SIGNAL("indexesMoved (const QModelIndexList&)"), self.updateFile) self.connect(self.fileField, SIGNAL("textChanged (const QString&)"), self.activate) self.connect(self.fileField, SIGNAL("returnPressed()"), self.accept) # Taille minimum self.setMinimumSize(700, 480) # Par défaut, on désactive self.deactivate() # Completion des fichiers self.completion = QCompleter(self.dirModel, self.dirList)
def loadConfig(self, idsection="") : if idsection == "" : return self.comboFormat.setCurrentIndex(int(EkdConfig.get(idsection, 'format'))) self.expert.setChecked(int(EkdConfig.get(idsection, 'expert'))) self.qualite.setCurrentIndex(int(EkdConfig.get(idsection, 'qualite')))
def loadOptions(self): ''' # On charge les options ''' idCodec = EkdConfig.get(self.idSection,'codec') self.chargerItemCombo(idCodec)
def load(self) : self.afficheurImgSource.loadFileLocation(self.idSection) self.comboReglage.setCurrentIndex(int(EkdConfig.get(self.idSection, u'choixReglage'))) self.spin1.setValue(int(EkdConfig.get(self.idSection, u'spin1'))) self.spin2.setValue(int(EkdConfig.get(self.idSection, u'spin2'))) self.spin3.setValue(int(EkdConfig.get(self.idSection, u'spin3')))
def __init__(self, choixCodec, min_range_1, max_range_1, min_range_2, max_range_2, txt1 = _(u"Réglage de la compression : "), txt5 = _(u"Réglage du bitrate vidéo : ")): ''' Codecs_AvecReglages : Crée un widget avec : 1 slider, 1 bare de progession et un texte explicatif choixCodec : Nom du codec qui sera utilisé lors de l'enregistrement dans EkdConfig min_range_1 : Valeur minimale du slider et de la barre max_range_1 : Valeur maximale du slider et de la barre min_range_2 : Valeur minimale du slider et de la barre max_range_2 : Valeur maximale du slider et de la barre txt1 : Texte intitulé du réglage (compression vidéo) txt5 : Texte intitulé du réglage (bitrate vidéo) ''' QWidget.__init__(self) self.choixCodec = choixCodec self.idSection = "animation_encodage_general" # label titre self.txt1 = txt1 self.txt5 = txt5 self.min_range_2 = min_range_2 self.max_range_2 = max_range_2 #txt1=_(u"Réglage de la compression : ") self.label_1=QLabel("<center><u>%s</u></center>" % txt1) # boite de spin pour la compression vidéo self.spinCompression=QSpinBox() # self car on va récupérer la variable depuis le moteur self.spinCompression.setRange(min_range_1, max_range_1) self.label_2=QLabel("<center><u>%s</u></center>" % txt5) txt6 = _(u'Dimension de la vidéo :') self.label_3 = QLabel("<center><u>%s</u></center>" % txt6) self.label_4 = QLabel("<center><u>%s</u></center>" % txt6) self.label_5 = QLabel("<center><u>%s</u></center>" % txt6) # Boîte de spin pour le bitrate vidéo self.spinBitrateVideo=QSpinBox() self.spinBitrateVideo.setRange(min_range_2, max_range_2) # Curseur associé à spinCompression self.curseur_1 = QSlider(Qt.Horizontal) self.curseur_1.setRange(min_range_1, max_range_1) self.connect(self.spinCompression,SIGNAL("valueChanged(int)"),self.sauverSpin_1) self.connect(self.curseur_1, SIGNAL("sliderMoved(int)"), self.curseurBouge_1) # Curseur associé à spinBitrateVideo self.curseur_2 = QSlider(Qt.Horizontal) self.curseur_2.setRange(min_range_2, max_range_2) self.connect(self.spinBitrateVideo,SIGNAL("valueChanged(int)"),self.sauverSpin_2) self.connect(self.curseur_2, SIGNAL("sliderMoved(int)"), self.curseurBouge_2) # Widgets pour la sélection de la résolution # en sortie pour le 3GP self.resoSortie3gp = QComboBox() liste_reso_3gp = [(u'128x96', '128x96'), (u'176x144', '176x144'), (u'352x288', '352x288'), (u'704x576', '704x576')] for i in liste_reso_3gp: self.resoSortie3gp.addItem(i[0],QVariant(i[1])) self.connect(self.resoSortie3gp, SIGNAL("activated(int)"), self.changerReglagesResol3gp) # Widgets pour la sélection de la résolution # en sortie pour l'AMV self.resoSortieAMV = QComboBox() liste_reso_AMV = [(u'128x90', '128x90'), (u'128x128', '128x128'), (u'160x120', '160x120'), (u'208x176', '208x176')] for i in liste_reso_AMV: self.resoSortieAMV.addItem(i[0],QVariant(i[1])) self.connect(self.resoSortieAMV, SIGNAL("activated(int)"), self.changerReglagesResolAMV) # Widgets pour la sélection de la résolution en sortie pour les codecs: # codecmotionjpeg, codecmpeg2, codech264mpeg4, codech264mpeg4_ext_h264, # codecdivx4, codecmpeg1, macromediaflashvideo, codecwmv2 self.resoSortieGeneral = QComboBox() liste_reso_General = [(_(u"Pas de changement (vidéo avec la même taille que l'original)"), u'idem'), (_(u'HD 1080p (16/9): 1920x1080'), u'-vf scale=1920:1080 -aspect 16:9'), (_(u'HD 720p (16/9): 1280x720'), u'-vf scale=1280:720 -aspect 16:9'), (_(u'HD 1080p divisé par deux (16/9): 960x540'), u'-vf scale=960:540 -aspect 16:9'), (_(u'HD 480 (16/9): 852x480'), u'-vf scale=852:480 -aspect 16:9'), (_(u'PAL/SECAM (16/9): 1024x576'), u'-vf scale=1024:576 -aspect 16:9'), (_(u'PAL/SECAM Computer Video (4/3): 768x576'), u'-vf scale=768:576 -aspect 4:3'), (_(u'PAL/SECAM (rapport 1.25): 720x576'), u'-vf scale=720:576'), (_(u'PAL/SECAM (4/3): 384x288'), u'-vf scale=384:288 -aspect 4:3'), (_(u'PAL/SECAM Qualité VCD (rapport 1.22): 352x288'), u'-vf scale=352:288'), (_(u'PAL/SECAM (4/3): 320x240'), u'-vf scale=320:240 -aspect 4:3'), (_(u'NTSC (rapport 1.5): 720x480'), u'-vf scale=720:480'), (_(u'NTSC Computer Video (4/3): 640x480'), u'-vf scale=640:480 -aspect 4:3'), (_(u'NTSC Computer Video (4/3): 512x384'), u'-vf scale=512:384 -aspect 4:3'), (_(u'NTSC SVCD (1/1): 480x480'), u'-vf scale=480:480'), (_(u'NTSC Qualité VCD (rapport 1.46): 352x240'), u'-vf scale=352:240'), (_(u'Affichage WHUXGA (rapport 1.6): 7680x4800'), u'-vf scale=7680:4800'), (_(u'Affichage WHSXGA (rapport 1.56): 6400x4096'), u'-vf scale=6400:4096'), (_(u'Affichage HSXGA (rapport 1.25): 5120x4096'), u'-vf scale=5120:4096'), (_(u'Affichage WQUXGA (rapport 1.6): 3840x2400'), u'-vf scale=3840:2400'), (_(u'Affichage WQSXGA (rapport 1.56): 3200x2048'), u'-vf scale=3200:2048'), (_(u'Affichage QSXGA (rapport 1.25): 2560x2048'), u'-vf scale=2560:2048'), (_(u'Affichage WOXGA (rapport 1.6): 2560x1600'), u'-vf scale=2560:1600'), (_(u'Affichage QXGA (4/3): 2048x1536'), u'-vf scale=2048:1536 -aspect 4:3'), (_(u'Affichage WUXGA (rapport 1.6): 1920x1200'), u'-vf scale=1920:1200'), (_(u'Affichage WSXGA (rapport 1.56): 1600x1024'), u'-vf scale=1600:1024'), (_(u'Affichage WXGA (16/9): 1366x768'), u'-vf scale=1366:768 -aspect 16:9'), (_(u'Affichage SXGA (rapport 1.25): 1280x1024'), u'-vf scale=1280:1024'), (_(u'Affichage UXGA (4/3): 1600x1200'), u'-vf scale=1600:1200 -aspect 4:3'), (_(u'Affichage XGA (4/3): 1024x768'), u'-vf scale=1024:768 -aspect 4:3'), (_(u'Affichage SVGA (4/3): 800x600'), u'-vf scale=800:600 -aspect 4:3'), (_(u'Affichage VEGA (rapport 1.83): 640x350'), u'-vf scale=640:350'), (_(u'Affichage VGA (4/3): 640x480'), u'-vf scale=640:480 -aspect 4:3'), (_(u'Affichage QQVGA (4/3): 160x120'), u'-vf scale=160:120 -aspect 4:3'), (_(u'Smartphone (16/10): 800x480'), u'-vf scale=800:480 -aspect 16:10')] for i in liste_reso_General: self.resoSortieGeneral.addItem(i[0],QVariant(i[1])) self.connect(self.resoSortieGeneral, SIGNAL("activated(int)"), self.changerReglagesResolGeneral) try: debug( "%s" % EkdConfig.get(self.idSection,self.choixCodec)) self.spinCompression.setValue(int(EkdConfig.get(self.idSection,self.choixCodec))) except: debug("Pas de parametre ou mauvais parametre de configuration pour:\n\ DivX4, Codec Motion JPEG, Codec MPEG1, Codec MPEG2 ou Codec WMV2") #debug( "Pas de paramètre ou mauvais paramètre de configuration pour:\n\ #DivX4, Codec Motion JPEG, Codec MPEG1, Codec MPEG2 ou Codec WMV2") # Rangement des widgets vbox = QVBoxLayout(self) grid=QGridLayout() # Label pour la compression vidéo grid.addWidget(self.label_1,1,2) # Slider de la qualité de la compression grid.addWidget(self.spinCompression,2,1) # Curseur associé à spinCompression grid.addWidget(self.curseur_1,2,2) # Label pour le bitrate vidéo grid.addWidget(self.label_2,3,2) # Slider du bitrate vidéo grid.addWidget(self.spinBitrateVideo,4,1) # Curseur associé à spinBitrateVideo grid.addWidget(self.curseur_2,4,2) grid.addWidget(self.label_3,5,2) grid.addWidget(self.resoSortie3gp,6,2) grid.addWidget(self.label_4,7,2) grid.addWidget(self.resoSortieAMV,8,2) grid.addWidget(self.label_5,9,2) grid.addWidget(self.resoSortieGeneral,10,2) vbox.addStretch() vbox.addLayout(grid) vbox.addStretch() # On récupère la valeur du bitrate à partir de la configuration try: bitrate = EkdConfig.get('animation_encodage_general_bitrate_video',self.choixCodec) self.spinBitrateVideo.setValue(int(bitrate)) except IndexError: pass # On cache certains widgets suivant les codecs choisis dans # la liste ... et on montre ceux qui doivent être montrés if self.choixCodec in ['codech264mpeg4', 'codech264mpeg4_ext_h264']: self.label_1.hide() self.spinCompression.hide() self.curseur_1.hide() self.label_3.hide() self.resoSortie3gp.hide() self.label_4.hide() self.resoSortieAMV.hide() elif self.choixCodec in ['codecoggtheora', 'codec_vob_ffmpeg']: self.label_2.hide() self.spinBitrateVideo.hide() self.curseur_2.hide() self.label_3.hide() self.resoSortie3gp.hide() self.label_4.hide() self.resoSortieAMV.hide() self.label_5.hide() self.resoSortieGeneral.hide() elif self.choixCodec in ['codecdivx4', 'codecmotionjpeg', 'codecmpeg1', 'codecmpeg2', 'codecwmv2', 'macromediaflashvideo']: self.label_3.hide() self.resoSortie3gp.hide() self.label_4.hide() self.resoSortieAMV.hide() elif self.choixCodec in ['avirawsanscompression', 'codec_hfyu_ffmpeg']: self.label_1.hide() self.spinCompression.hide() self.curseur_1.hide() self.label_2.hide() self.spinBitrateVideo.hide() self.curseur_2.hide() self.label_3.hide() self.resoSortie3gp.hide() self.label_4.hide() self.resoSortieAMV.hide() self.label_5.show() self.resoSortieGeneral.show() elif self.choixCodec in ['codecxvid']: self.label_1.hide() self.spinCompression.hide() self.curseur_1.hide() self.label_2.show() self.spinBitrateVideo.show() self.curseur_2.show() self.label_3.hide() self.resoSortie3gp.hide() self.label_4.hide() self.resoSortieAMV.hide() self.label_5.show() self.resoSortieGeneral.show() elif self.choixCodec in ['codec_3GP_ffmpeg']: self.label_1.hide() self.spinCompression.hide() self.curseur_1.hide() self.label_2.hide() self.spinBitrateVideo.hide() self.curseur_2.hide() self.label_4.hide() self.resoSortieAMV.hide() self.label_3.show() self.resoSortie3gp.show() self.label_5.hide() self.resoSortieGeneral.hide() elif self.choixCodec in ['codec_AMV_ffmpeg']: self.label_1.hide() self.spinCompression.hide() self.curseur_1.hide() self.label_2.hide() self.spinBitrateVideo.hide() self.curseur_2.hide() self.label_3.hide() self.resoSortie3gp.hide() self.label_4.show() self.resoSortieAMV.show() self.label_5.hide() self.resoSortieGeneral.hide() elif self.choixCodec in ['codec_mov_ffmpeg']: self.label_1.show() self.spinCompression.show() self.curseur_1.show() self.label_2.hide() self.spinBitrateVideo.hide() self.curseur_2.hide() self.label_3.hide() self.resoSortie3gp.hide() self.label_4.hide() self.resoSortieAMV.hide()
def load(self) : self.selectionAudioFile.loadFileLocation(self.idSection) self.selectionFile.choixFormatAudio.reglageExp.loadConfig(self.idSection) files = eval(EkdConfig.get(self.idSection, 'ordre')) #print "[Debug] Chargement des fichiers |",files,"| de la section :",idsection self.selectionFile.setListSource(files)
def load(self) : self.afficheurImgSource.loadFileLocation(self.idSection) self.spin1.setValue(int(EkdConfig.get(self.idSection, 'spin1'))) self.spin2.setValue(int(EkdConfig.get(self.idSection, 'spin2'))) self.spin3.setValue(int(EkdConfig.get(self.idSection, 'spin3'))) self.comboClassement.setCurrentIndex(int(EkdConfig.get(self.idSection, 'comboClassement')))
def __init__(self, statusBar): # On joue avec l'héritage de Base vbox=QVBoxLayout() # Identifiant de la classe self.idSection = "animation_conversion_video_16_9_4_3" super(Animation_ConvertirAnimEn_16_9_Ou_4_3, self).__init__('vbox', titre=_(u"Conversion 16/9 - 4/3")) self.printSection() # Liste de fichiers initiaux (contenu dans le fichier de configuration) self.lstFichiersSource = [] self.lstFichiersSourceProv = [] # idem mais provisoire (sert à récupérer les chemins dans l'ordre de sélection) self.statusBar = statusBar # ------------------------------------------------------------------- # Boîte de groupe : "Fichier vidéo source" # ------------------------------------------------------------------- self.afficheurVideoSource=SelectWidget(extensions = ["*.avi", "*.mpg", "*.mpeg", "*.vob"], mode="texte", video = True) ################################################################################################### # Onglets self.indexVideoSource = self.add(self.afficheurVideoSource, _(u'Video(s) source')) self.connect(self.afficheurVideoSource,SIGNAL("fileSelected"),self.getFile) self.connect(self.afficheurVideoSource, SIGNAL("pictureChanged(int)"), self.getFile) #-------------------------------------------------------------------- groupReglage=QGroupBox() self.layoutReglage=QVBoxLayout(groupReglage) ## --------------------------------------------------------------------- # Variables pour la fonction tampon ## --------------------------------------------------------------------- self.typeEntree = "video" # Défini le type de fichier source. self.typeSortie = "video" # Défini le type de fichier de sortie. self.sourceEntrees = self.afficheurVideoSource # Fait le lien avec le sélecteur de fichier source. #=== Widget qui seront inclus dans la boite de réglage ===# # boite de combo self.combo=QComboBox() # le self sert à afficher des informations sur les items à partir de la fonction listeCombo=[ (_(u'16/9 ème --> rapport 1.77') ,'16_9'),\ (_(u'16/10 ème --> rapport 1.60') ,'16_10'),\ (_(u'4/3 --> rapport 1.33') ,'4_3'),\ (_(u'5/3 --> rapport 1.66') ,'5_3'),\ (_(u'Panoramique 1,85:1 --> rapport 1.85') ,'1_85'),\ (_(u'Cinemascope Panavision 2,35:1 --> rapport 2.35') ,'2_35'),\ (_(u'CinemaScope optique 2,39:1 --> rapport 2.39') ,'2_39'),\ (_(u'CinemaScope magnétique 2,55:1 --> rapport 2.55') ,'2_55'),] ############################################################################################## # Insertion des codecs de compression dans la combo box for i in listeCombo: self.combo.addItem(i[0],QVariant(i[1])) self.connect(self.combo, SIGNAL("activated(int)"), self.nouvelleResolution) self.layoutReglage.addWidget(self.combo, 0, Qt.AlignHCenter) # Chargement du paramètre de configuration try: typ = EkdConfig.get(self.idSection,'type') indice = 0 # indice de la ligne de self.listeCombo correspondant au type d'ordre for i in listeCombo: if i[1]!=typ: indice += 1 else: break self.combo.setCurrentIndex(indice) except: self.combo.setCurrentIndex(0) self.nouvelleResolution() self.add(groupReglage, _(u"Réglages")) self.addPreview() self.addLog()
def __init__(self,dom,win,lstfmt,wide=0,parent=None) : super(process, self).__init__(parent) self.win=win self.listformat = lstfmt self.wide=wide if wide == 1 : self.aspect="3" self.wimage="16:9" else : self.aspect="2" self.wimage="4:3" self.img=[] self.err=0 # define if there's an error in initialisation phase self.msgerror="" self.sont=0 try: self.t=EkdConfig.get("videoporamaconfig","speedt") except: self.t="3" try: self.n=dom.getElementsByTagName('videof')[0].childNodes[0].nodeValue if self.n=="0" : #PAL self.VIDEO_TYPE_LETTER="p" self.VIDEO_FORMAT="SIZE_720x576" self.IMGSEC="25:1" self.widthpict=720 self.heightpict=576 self.imgpsec=25 elif self.n=="1" : #NTSC self.VIDEO_TYPE_LETTER="n" self.VIDEO_FORMAT="SIZE_720x480" self.IMGSEC="30000:1001" self.widthpict=720 self.heightpict=480 self.imgpsec=30 elif self.n=="2" : #SECAM self.VIDEO_TYPE_LETTER="s" self.VIDEO_FORMAT="SIZE_720x576" self.IMGSEC="25:1" self.widthpict=720 self.heightpict=576 self.imgpsec=25 elif self.n=="3" : #HDReady self.VIDEO_TYPE_LETTER="p" self.IMGSEC="25:1" self.widthpict=1280 self.heightpict=720 self.imgpsec=25 elif self.n=="4" : #Full HD self.VIDEO_TYPE_LETTER="p" self.IMGSEC="25:1" self.widthpict=1920 self.heightpict=1080 self.imgpsec=25 elif self.n=="5" : #Web flv self.VIDEO_TYPE_LETTER="p" self.IMGSEC="25:1" self.widthpict=384 self.heightpict=288 self.imgpsec=25 elif self.n=="6" : #moyen xvid self.VIDEO_TYPE_LETTER="p" self.IMGSEC="25:1" self.widthpict=640 if self.wide : self.heightpict=480 else : self.heightpict=480 self.imgpsec=25 except: self.VIDEO_TYPE_LETTER="p" self.VIDEO_FORMAT="SIZE_720x576" self.widthpict=720 self.heightpict=576 self.imgpsec=25 # Definition of total number of frame to process self.dicspeed={"0":1,"1":2,"2":4,"3":5,"4":10,"5":20} self.speedtrans=self.dicspeed[self.t] self.frametransition = 100 / self.speedtrans self.totimage=0 # Images files if self.win.timeline.columnCount() == 0 : self.msgerror=self.msgerror+self.tr("There aren't picture to process \n") self.err=1 else : k=0 while k<self.win.timeline.columnCount() : self.img.append(self.win.timeline.cellWidget(0,k)) self.totimage += self.win.timeline.cellWidget(0,k).imagetime(int(self.n))[1]+self.win.timeline.cellWidget(0,k).imagetime(int(self.n))[2] k+=1 self.totimage+=self.frametransition # configurations elements # tmp directory self.T=self.win.T #ffmpeg directory if os.name != 'nt' : self.I=EkdConfig.get("videoporamaconfig","imgmgkdir") else : self.I="" #mjpegtools directory if os.name != 'nt' : self.MJ=EkdConfig.get("videoporamaconfig","mjpegtoolsdir") else: self.MJ="" # sox directory if os.name != 'nt' : self.S=EkdConfig.get("videoporamaconfig","soxdir") else: self.S="" try: self.w=dom.getElementsByTagName('sndfile')[0].childNodes[0].nodeValue if self.w=="" : self.w=os.getcwd()+os.sep+u"videoporama/template/nullsound.wav" self.sont=1 except: self.w=os.getcwd()+os.sep+u"videoporama/template/nullsound.wav" self.sont=1 try: self.f=dom.getElementsByTagName('outputf')[0].childNodes[0].nodeValue except: None try: self.mpgf=dom.getElementsByTagName('mpegformat')[0].childNodes[0].nodeValue self.formatmpg(self.mpgf) except: None try: self.o=dom.getElementsByTagName('outputfile')[0].childNodes[0].nodeValue if self.o=="" : self.msgerror=self.msgerror+self.tr("There isn't output file define \n") self.err=1 except: self.msgerror=self.msgerror+self.tr("There isn't output file define \n") self.err=1 None self.lumask={} z=0 b=os.listdir(os.getcwd()+os.sep+u"videoporama/luma/") for c in b : # Ajouté le 23/11/2009 pour corriger le problème des .svn if not c.startswith(".") : self.lumask[z]=os.getcwd()+os.sep+u"videoporama/luma/"+c z+=1 if self.err : self.error(self.msgerror)