예제 #1
0
 def __init__(self, parent=None):
     QtGui.QWidget.__init__(self, parent)
     self.ui = Ui_DialogModifPalette()
     self.ui.setupUi(self)
     # Fin du wrapper
     
     self.ui.inputRed.setMinimum(0)
     self.ui.inputGreen.setMinimum(0)
     self.ui.inputBlue.setMinimum(0)
     self.ui.inputGray.setMinimum(0)
     
     self.ui.inputRed.setMaximum(255)
     self.ui.inputGreen.setMaximum(255)
     self.ui.inputBlue.setMaximum(255)
     self.ui.inputGray.setMaximum(255)
         
     self.ui.inputX.setMinimum(0)
     self.ui.inputY.setMinimum(0)
     
     self.parent = parent
     
     # Evenements
     self.ui.inputRed.valueChanged.connect(self.majColor)
     self.ui.inputGreen.valueChanged.connect(self.majColor)
     self.ui.inputBlue.valueChanged.connect(self.majColor)
     self.ui.inputGray.valueChanged.connect(self.majColor)
     self.ui.inputX.valueChanged.connect(self.majColor)
     self.ui.inputY.valueChanged.connect(self.majColor)
예제 #2
0
class DialogModifPalette(QtGui.QDialog):
    def __init__(self, parent=None):
        QtGui.QWidget.__init__(self, parent)
        self.ui = Ui_DialogModifPalette()
        self.ui.setupUi(self)
        # Fin du wrapper
        
        self.ui.inputRed.setMinimum(0)
        self.ui.inputGreen.setMinimum(0)
        self.ui.inputBlue.setMinimum(0)
        self.ui.inputGray.setMinimum(0)
        
        self.ui.inputRed.setMaximum(255)
        self.ui.inputGreen.setMaximum(255)
        self.ui.inputBlue.setMaximum(255)
        self.ui.inputGray.setMaximum(255)
            
        self.ui.inputX.setMinimum(0)
        self.ui.inputY.setMinimum(0)
        
        self.parent = parent
        
        # Evenements
        self.ui.inputRed.valueChanged.connect(self.majColor)
        self.ui.inputGreen.valueChanged.connect(self.majColor)
        self.ui.inputBlue.valueChanged.connect(self.majColor)
        self.ui.inputGray.valueChanged.connect(self.majColor)
        self.ui.inputX.valueChanged.connect(self.majColor)
        self.ui.inputY.valueChanged.connect(self.majColor)
    
    # Ferme le dialogue
    def close(self):
        if self.parent != None:
            self.parent.setNoMode()
        
        super(DialogModifPalette, self).accept()
    
    # Affiche le dialogue
    def show(self):
        if self.parent == None:
            return
        
        if self.parent.basePicture.image == 0:
            print "Operation interdite sans image"
            return
        
        if self.parent.basePicture.image.mode != "L" and self.parent.basePicture.image.mode != "P":
            print "Operation interdite sur une image couleur"
            return
        
        self.ui.inputX.setMaximum(self.parent.basePicture.image.size[0])
        self.ui.inputY.setMaximum(self.parent.basePicture.image.size[1])
        
        self.parent.setColorPickerMode()
        super(DialogModifPalette, self).show()
    
    # Met a jour les couleurs affichées
    def majColor(self, value):
        # Récupére les saisies
        r = self.ui.inputRed.value()
        g = self.ui.inputGreen.value()
        b = self.ui.inputBlue.value()
        
        gray = self.ui.inputGray.value()
        
        x = self.ui.inputX.value()
        y = self.ui.inputY.value()
        
        # Récupére l'ancienne couleur
        oldColor = self.parent.basePicture.getPixel(x, y)
        
        # Crée les pixmap
        oldColorPixmap = QtGui.QPixmap(25, 25)
        newColorPixmap = QtGui.QPixmap(25, 25)
        
        # Niveau de gris
        if self.parent.basePicture.image.mode == "L":
            oldColorPixmap.fill(QtGui.QColor(oldColor, oldColor, oldColor))
            newColorPixmap.fill(QtGui.QColor(gray, gray, gray))
        # Couleur
        else:
            oldColorPixmap.fill(QtGui.QColor(oldColor[0], oldColor[1], oldColor[2]))
            newColorPixmap.fill(QtGui.QColor(r, g, b))
        
        # Met a jout l'image
        self.ui.oldColor.setPixmap(oldColorPixmap)
        self.ui.newColor.setPixmap(newColorPixmap)
    
    # Récupére une couleur et sa position
    def setPickedColor(self, pos, color):
        # Niveau de gris
        if type(color) == type(0):
            self.ui.inputRed.setValue(0)
            self.ui.inputGreen.setValue(0)
            self.ui.inputBlue.setValue(0)
            self.ui.inputGray.setValue(color)
        # Indexées
        else:
            self.ui.inputRed.setValue(color[0])
            self.ui.inputGreen.setValue(color[1])
            self.ui.inputBlue.setValue(color[2])
            self.ui.inputGray.setValue(0)
        
        self.ui.inputX.setValue(pos[0])
        self.ui.inputY.setValue(pos[1])
    
    # Rejet des modifications
    def reject(self):
        self.close()

    # Accepte le changement de taille
    def accept(self):
        if self.parent == None or self.parent.basePicture.image == 0:
            self.close()
            return
        
        # Récupére la couleur
        r = self.ui.inputRed.value()
        g = self.ui.inputGreen.value()
        b = self.ui.inputBlue.value()
        
        gray = self.ui.inputGray.value()
        
        x = self.ui.inputX.value()
        y = self.ui.inputY.value()
        
        pos = (x, y)
        if self.parent.basePicture.image.mode == "L":
            color = (gray)
        else:
            color = (r, g, b)
        
        self.parent.resultPicture.setImage(self.parent.basePicture.image.copy())
        self.parent.resultPicture.setPaletteColor(pos, color)
        self.parent.showResultPicture()
        
        self.close()