Esempio n. 1
0
    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)
Esempio n. 2
0
    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)