def __init__(self, w=550, h=480, titre=u"Configuration de Ekd", parent=None): super(EkdConfigBox, self).__init__(parent) self.resize(w,h) self.w = w self.h = h self.setWindowTitle(titre) self.layout = QVBoxLayout(self) ## Menu contient l'ensemble des sections à paramétrer self.menu = QListWidget(self) self.layout.addWidget(self.menu) ## Pour chaque section à paramétrer, on utilise un Stack d'objets self.leftpart = QStackedLayout() self.leftpart.setSizeConstraint(QLayout.SetNoConstraint) self.layout.addLayout(self.leftpart) ## propWidget contient l'ensemble des objets propriété de toutes les section ## (il est nécessaire de les stocker pour être capable de les faire interagir) self.propWidget=[] wid = 0 ## On crée les différentes parties de configuration qui ne sont pas inclues dans le tableau SECTION_MASK de EkdConfig for section in EkdConfig.SECTIONS : if not section in EkdConfig.SECTION_MASK : self.menu.addItem(EkdConfig.SECTIONS[section]) allprops = EkdConfig.getAllProperties(EkdConfig.getConfigSection(section)) scroll = QScrollArea() frame = QFrame() frame.setMinimumSize(self.w-50, self.h/2) # Ajouté le 10/12/2009 Pour que la partie réglage prenne toute la place dispo. frame.setMaximumSize(self.w, self.h) linelayout = QGridLayout(frame) linelayout.setSizeConstraint(QLayout.SetMinAndMaxSize) row = 0 ## Insertion des propriété de la section en fonction de son type allkeys = allprops.keys() found = False for prop in allkeys : if not prop in EkdConfig.PROPERTIES_MASK : if prop in EkdConfig.PATH_PROPERTIES : self.propWidget.append( EkdPathPropertie(prop, EkdConfig.PROPERTIES[prop], allprops[prop], section=section) ) linelayout.addWidget(self.propWidget[wid].label, row, 0) linelayout.addWidget(self.propWidget[wid].widget, row, 1) wid += 1 found = True row += 1 for prop in allkeys : if not prop in EkdConfig.PROPERTIES_MASK : if prop in EkdConfig.STYLE_PROPERTIES : self.propWidget.append( EkdStylePropertie(prop, EkdConfig.PROPERTIES[prop], allprops[prop], EkdConfig.STYLE_PROPERTIES[prop], section=section ) ) linelayout.addWidget(self.propWidget[wid].label, row, 0) linelayout.addWidget(self.propWidget[wid].widget, row, 1) wid += 1 found = True row += 1 for prop in allkeys : if not prop in EkdConfig.PROPERTIES_MASK : if prop in EkdConfig.CODEC_PROPERTIES : self.propWidget.append( EkdCodecPropertie(prop, EkdConfig.PROPERTIES[prop], allprops[prop], EkdConfig.CODEC_PROPERTIES[prop], section=section ) ) linelayout.addWidget(self.propWidget[wid].label, row, 0) linelayout.addWidget(self.propWidget[wid].widget, row, 1) wid += 1 found = True row += 1 for prop in allkeys : if not prop in EkdConfig.PROPERTIES_MASK : if prop in EkdConfig.BOOLEAN_PROPERTIES : self.propWidget.append( EkdBoolPropertie(prop, EkdConfig.PROPERTIES[prop], allprops[prop], section=section) ) linelayout.addWidget(self.propWidget[wid].widget, row, 0, 1, 2) wid += 1 found = True row += 1 for prop in allkeys : if not prop in EkdConfig.PROPERTIES_MASK : if prop in EkdConfig.NUM_PROPERTIES : self.propWidget.append( EkdNumPropertie(prop, EkdConfig.PROPERTIES[prop], allprops[prop], section=section) ) linelayout.addWidget(self.propWidget[wid].label, row, 0) linelayout.addWidget(self.propWidget[wid].widget, row, 1) wid += 1 found = True row += 1 for prop in allkeys : if not prop in EkdConfig.PROPERTIES_MASK : if prop in EkdConfig.TIME_PROPERTIES : self.propWidget.append( EkdTimePropertie(prop, EkdConfig.PROPERTIES[prop], allprops[prop], section=section) ) linelayout.addWidget(self.propWidget[wid].label, row, 0) linelayout.addWidget(self.propWidget[wid].widget, row, 1) wid += 1 found = True row += 1 for prop in allkeys : if not prop in EkdConfig.PROPERTIES_MASK : if prop in EkdConfig.COLOR_PROPERTIES : self.propWidget.append( EkdColorPropertie(prop, EkdConfig.PROPERTIES[prop], allprops[prop], section=section) ) linelayout.addWidget(self.propWidget[wid].label, row, 0) linelayout.addWidget(self.propWidget[wid].widget, row, 1) wid += 1 found = True elif not found: line = QLineEdit(allprops[prop]) linelayout.addWidget(QLabel(prop), row, 0) linelayout.addWidget(line, row, 1) row += 1 frame.setLineWidth(0) scroll.setWidget(frame) self.leftpart.addWidget(scroll) self.menu.setAlternatingRowColors(True) # Define the size of the list depending of its content self.menu.setFixedHeight(( self.menu.sizeHintForRow(0) + self.menu.verticalStepsPerItem() + 1)* self.menu.count()) self.menu.updateGeometries() ## Boutton pour fermer la boite de dialogue self.fermer = QPushButton(_(u"Fermer")) self.layout.addWidget(self.fermer) ## Lorsqu'on clique sur fermer, la fenêtre se ferme self.connect(self.fermer, SIGNAL("clicked()"), self.close) ## Lorsqu'on selectionne un élément du menu, on met à jour la partie droite du menu self.connect(self.menu, SIGNAL("currentItemChanged(QListWidgetItem *,QListWidgetItem *)"), self.updateMenu)
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)