def browseColor(self): """ Show the color dialog. :rtype: None """ color = self.currentColor() if color: color = studioqt.Color.fromString(color) d = QtWidgets.QColorDialog(self) d.setCurrentColor(color) standardColors = self.browserColors() if standardColors: index = -1 for standardColor in standardColors: index += 1 try: # Support for new qt5 signature standardColor = QtGui.QColor(standardColor) d.setStandardColor(index, standardColor) except: # Support for new qt4 signature standardColor = QtGui.QColor(standardColor).rgba() d.setStandardColor(index, standardColor) d.currentColorChanged.connect(self._colorChanged) if d.exec_(): self._colorChanged(d.selectedColor()) else: self._colorChanged(color)
def createColorDialog( self, parent, standardColors=None, currentColor=None, ): """ Create a new instance of the color dialog. :type parent: QtWidgets.QWidget :type standardColors: list[int] :rtype: QtWidgets.QColorDialog """ dialog = QtWidgets.QColorDialog(parent) if standardColors: index = -1 for colorR, colorG, colorB in standardColors: index += 1 color = QtGui.QColor(colorR, colorG, colorB).rgba() try: # Support for new qt5 signature color = QtGui.QColor(color) dialog.setStandardColor(index, color) except: # Support for new qt4 signature color = QtGui.QColor(color).rgba() dialog.setStandardColor(index, color) # PySide2 doesn't support d.open(), so we need to pass a blank slot. dialog.open(self, QtCore.SLOT("blankSlot()")) if currentColor: dialog.setCurrentColor(currentColor) return dialog