def __init__(self, parent=None):
   """
   metodo constructor
   """
   QtGui.QMainWindow.__init__(self, parent)
   self.ui = Ui_Form()
   self.ui.setupUi(self)
   self.carga_actores()
   self.dialogo = ctrl_form_actor()
   self.ed_dialogo = Editar()
   #self.show()
   self.set_box()
   self.signals()
class Actores(QtGui.QMainWindow):
  """
  clase principal 
  """
  tabla_columnas = (
      (u"Nombre", 200),
      (u"Birtday", 150),
      (u"Genero", 150))

  def __init__(self, parent=None):
    """
    metodo constructor
    """
    QtGui.QMainWindow.__init__(self, parent)
    self.ui = Ui_Form()
    self.ui.setupUi(self)
    self.carga_actores()
    self.dialogo = ctrl_form_actor()
    self.ed_dialogo = Editar()
    #self.show()
    self.set_box()
    self.signals()

    
  def set_box(self):
    """
    Rellena el combobox con peliculas
    """
    self.i = Modelo_actor.num_peli()
    self.ui.filtro_box.setMaxCount(self.i)
    self.peli = Modelo_actor.llena_box()
    for itm in range(len(self.peli)):
	#print self.peli[itm][0]
	#print itm
	self.ui.filtro_box.addItem(self.peli[itm][0])

  def signals(self):
      """
      define el manejo de señales
      """
      self.ui.tabla_actor.clicked.connect(self.show_poster)
      self.ui.elim_actor.clicked.connect(self.elimina)
      self.ui.agre_actor.clicked.connect(self.agregando)
      self.ui.edit_actor.clicked.connect(self.editando)
      self.ui.boton_filtrar.clicked.connect(self.filtrando)
      self.ed_dialogo.ui.boton_guardar.clicked.connect(self.carga_actores)
      self.dialogo.ui.boton_crear.clicked.connect(self.carga_actores)

  def agregando(self):
    """
    abre la ventana para agregar un nuevo actor
    """
    self.dialogo.show();
  def editando(self):
    """
    abre ventana para editar actores
    """
    index =self.ui.tabla_actor.currentIndex()
    data = self.ui.tabla_actor.model()
    mov = data.item(index.row(),0).mov
    iD = str(mov['id'])
    self.ed_dialogo.setID(iD)
    self.ed_dialogo.show();



  
  def elimina(self):
    """
    elimina un actor de la base de datos
    """
    index =self.ui.tabla_actor.currentIndex()
    data = self.ui.tabla_actor.model()
    mov = data.item(index.row(),0).mov
    iD = str(mov['id'])
    resp = QtGui.QMessageBox.question(self, "Pregunta","Desea realmente eliminar el actor seleccionado?",QtGui.QMessageBox.Ok,QtGui.QMessageBox.No)
    if resp == QtGui.QMessageBox.Ok:
	Modelo_actor.borrar(iD);
	self.carga_actores();


  def show_poster(self, index):
      """
      carga la imagen en la ventana
      """
      index = index if index is not None\
	  else self.ui.tabla_actor.currentIndex()
      if index.row() == -1:
	  QtGui.QMessageBox.information(
	      None,
	      u"Información",
	      u"Por favor seleccione una orden de trabajo.")
	  return
      data = self.ui.tabla_actor.model()
      mov = data.item(index.row(), 0).mov
      #print mov[0]	
      self.num_act=Modelo_actor.actuaciones(mov[0])
      #print self.num_act
      self.ui.numero_actuaciones.setText(str(self.num_act))
      if (self.num_act==1):
	      self.ui.label_2.setText("pelicula.")
      else:
	      self.ui.label_2.setText("peliculas.")
      
      # Ahora la imagen
      img = QtGui.QPixmap(str(mov['imagen']))
      #print str(mov['imagen'])
      self.ui.img_actor.setPixmap(img)
      
      
  def filtrando(self):
      """
      selecciona los actores que participaron en una determinada pelicula
      """
      self.peliculas = self.ui.filtro_box.currentText()
      self.actores = Modelo_actor.filtro_actor(self.peliculas)
      print(self.actores)
      
      rows = len(self.actores)
      
      if rows == 0:
	  QtGui.QMessageBox.information(None,u"Información",u"No se encontro nigun actor para esta pelicula.")
	  return
      
      data = QtGui.QStandardItemModel(rows, len(self.tabla_columnas))
      self.ui.tabla_actor.setModel(data)
      self.ui.tabla_actor.horizontalHeader().setResizeMode(0, self.ui.tabla_actor.horizontalHeader().Stretch)

      for col, h in enumerate(self.tabla_columnas):
	data.setHeaderData(col, QtCore.Qt.Horizontal, h[0])
	self.ui.tabla_actor.setColumnWidth(col, h[1])
      
      for i, mov in enumerate(self.actores):
	  row = [
	      mov["nombre"], mov["birthday"], mov["genero"],
	      mov["imagen"]]
	  for j, field in enumerate(row):
	      index = data.index(i, j, QtCore.QModelIndex())
	      data.setData(index, field)
	  # Parametros ocultos
	  data.item(i).mov = mov

  def carga_actores(self):
      """
      carga actores en la tabla de datos
      """
      actores = Modelo_actor.obtener_actor()
      rows = len(actores)
      data = QtGui.QStandardItemModel(
	      rows, len(self.tabla_columnas))
      self.ui.tabla_actor.setModel(data)
      self.ui.tabla_actor.horizontalHeader().setResizeMode(
	  0, self.ui.tabla_actor.horizontalHeader().Stretch)

      for col, h in enumerate(self.tabla_columnas):
	  data.setHeaderData(col, QtCore.Qt.Horizontal, h[0])
	  self.ui.tabla_actor.setColumnWidth(col, h[1])

      for i, mov in enumerate(actores):
	  row = [
	      mov["nombre"], mov["birthday"], mov["genero"],
	      mov["imagen"]]
	  for j, field in enumerate(row):
	      index = data.index(i, j, QtCore.QModelIndex())
	      data.setData(index, field)
	  # Parametros ocultos
	  data.item(i).mov = mov