from PyQt4 import QtCore, QtGui

class DibuCinematica(QtGui.QWidget):
  # Constructor
  def __init__(self):
    super(DibuCinematica, self).__init__()
    #
    self.dibujar = False
    #
    self.radio = self.height() / 50
    self.margen = 10
  #
  def setLimites(self, xMax, yMax, _xIni):
    if xMax == 0:
      xMax = 1e-6
    xEscala = (self.width() - 2*self.margen) / xMax
    yEscala = (self.height() - 2*self.margen) / yMax
    self.escala = xEscala if xEscala < yEscala else yEscala
    self.xIni = self.escala * _xIni
  #
  def minimumSizeHint(self):
    return( QtCore.QSize(100, 100) )
  #
  def sizeHint(self):
    return( QtCore.QSize(500, 300) )
  #
  def actualiza(self, _x, _y):
    self.x = _x
    self.y = _y
    self.repaint( self.rect() )
  # Dibujado
  def paintEvent(self, ev):
    if self.dibujar:
      painter = QtGui.QPainter(self)
      #
      painter.fillRect(self.margen - self.radio, self.height() - self.margen - self.xIni, self.radio, self.xIni, QtGui.QColor("blue"))
      xc = self.margen + self.escala * self.x
      yc = self.height() - self.margen - self.escala * self.y
      camino = QtGui.QPainterPath()
      camino.addEllipse(xc - 0.5*self.radio, yc - 0.5*self.radio, self.radio, self.radio)
      painter.fillPath(camino, QtGui.QBrush(QtGui.QColor("red")))
      painter.setPen( QtGui.QColor("black") )
      painter.drawLine(self.margen, self.height() - self.margen, self.width() - self.margen, self.height() - self.margen)
