Ejemplo n.º 1
0
 def __init__(self, mixer, hue_steps=None, *args):
     QtGui.QLabel.__init__(self, *args)
     self.mixer = mixer
     self.hue_steps = hue_steps
     if hue_steps is None:
         self.ring_width_coef = 0.8
         self.steps_inner_coef = 0.8
     else:
         self.ring_width_coef = 0.85
         self.steps_inner_coef = 0.7
     self.ring = HueRing(mixer, width_coef=self.ring_width_coef)
     if hue_steps is None:
         self.steps = None
     else:
         self.steps = HueStepsRing(mixer,
                                   steps=hue_steps,
                                   outer_coef=self.ring_width_coef,
                                   inner_coef=self.steps_inner_coef)
     self.square = HueGradient(mixer, 0.0)
     self.mouse_pressed = False
     self.selected_sv = None
     self.selected_hue = 0.0
     self._prev_color = colors.Color(0, 0, 0)
     self.selected_color = colors.Color(0, 0, 0)
     self.harmony = None
     self._harmony_parameter = 0.5
     self.harmonized = []
     self.setMinimumSize(100, 100)
     self.setAcceptDrops(True)
     self.class_selector = None
     self.harmonies_selector = None
     self._sequence = 0
Ejemplo n.º 2
0
    def paintEvent(self, event):
        w, h = self.size().width(), self.size().height()
        ring = self.ring.get(w, h)
        if self.steps is not None:
            steps = self.steps.get(w, h)
        else:
            steps = None
        m = min(w, h)
        iw = ih = m * self.steps_inner_coef / sqrt(2.0)
        #print "Selector: m = {}, iw = ih = {}".format(m, iw)
        square = self.square.get(iw, ih)
        dx = (w - iw) / 2.0
        dy = (h - ih) / 2.0
        self.ls_square = QtCore.QRectF(dx, dy, iw, ih)
        qp = QtGui.QPainter()
        qp.begin(self)
        qp.drawImage(0, 0, ring)
        if steps is not None:
            qp.drawImage(0, 0, steps)
        qp.drawImage(dx, dy, square)

        R = m / 2.0
        r = self.ring_width_coef * R
        x1, y1 = self._polar(r, self.selected_hue)
        x2, y2 = self._polar(R, self.selected_hue)
        qp.setPen(colors.Color(0, 0, 0))
        qp.drawLine(x1, y1, x2, y2)

        if self.selected_sv is not None:
            s, v = self.selected_sv
            x0 = s * iw + dx
            y0 = v * ih + dy
            x, y = x0 - 3, y0 - 3
            w = h = 6
            qp.setBrush(QtGui.QColor(255, 255, 255, 127))
            qp.setPen(colors.Color(0, 0, 0))
            qp.drawEllipse(x, y, w, h)

        if self.harmony is not None and self.selected_color is not None:
            h_selected = self.mixer.getHue(self.selected_color)
            clrs = self.harmony.get(self.selected_color,
                                    self._harmony_parameter)
            for clr in clrs:
                h, s, v = self.mixer.getShade(clr)
                if abs(h - h_selected) < 0.01:
                    x0 = s * iw + dx
                    y0 = v * ih + dy
                    x, y = x0 - 3, y0 - 3
                    w = h = 6
                    qp.setPen(colors.Color(0, 0, 0))
                    qp.drawRect(x, y, w, h)
                else:
                    x0, y0 = self._polar(r, h * 2.0 * pi)
                    x, y = x0 - 3, y0 - 3
                    w = h = 6
                    qp.setPen(colors.Color(0, 0, 0))
                    qp.drawRect(x, y, w, h)

        qp.end()
Ejemplo n.º 3
0
 def dropEvent(self, event):
     if event.mimeData().hasColor():
         qcolor = QtGui.QColor(event.mimeData().colorData())
         r, g, b, _ = qcolor.getRgb()
         #print(qcolor.getRgb())
         color = colors.Color(r, g, b)
         event.acceptProposedAction()
         #print(color)
         self.setColor(color)
Ejemplo n.º 4
0
 def __init__(self, mixer, *args):
     QtGui.QLabel.__init__(self, *args)
     self.mixer = mixer
     self.ring = HueRing(mixer)
     self.square = HueGradient(mixer, 0.0)
     self.mouse_pressed = False
     self.selected_sv = None
     self.selected_hue = 0.0
     self._prev_color = colors.Color(0, 0, 0)
     self.selected_color = colors.Color(0, 0, 0)
     self.harmony = None
     self._harmony_parameter = 0.5
     self.harmonized = []
     self.setMinimumSize(100, 100)
     self.setAcceptDrops(True)
     self.class_selector = None
     self.harmonies_selector = None
     self._sequence = 0
Ejemplo n.º 5
0
 def on_click(self):
     #print("CLICK")
     current = self.getColor()
     if current is not None:
         clr = QtGui.QColorDialog.getColor(current)
     else:
         clr = QtGui.QColorDialog.getColor()
     r, g, b, a = clr.getRgb()
     self.setColor(colors.Color(r, g, b))
     self.repaint()
     if not self.model.to_set_color():
         self.selected.emit()
Ejemplo n.º 6
0
 def dropEvent(self, event):
     if event.mimeData().hasColor():
         qcolor = QtGui.QColor(event.mimeData().colorData())
         r, g, b, _ = qcolor.getRgb()
         color = colors.Color(r, g, b)
         if event.mimeData().hasFormat("application/x-metainfo"):
             data = event.mimeData().data("application/x-metainfo")
             color.meta.set_from_xml(str(data))
         self.on_drop_color(color)
         self.repaint()
         if not self.model.to_set_color():
             self.selected.emit()