def __init__(self, owner, dicdatos):

        self.dicdatos = dicdatos

        site = dicdatos["SITE"]
        self.level = dicdatos["LEVEL"]
        self.intervalo = dicdatos["INTERVAL"]
        self.intervaloPorPieza = dicdatos["INTERVALPIECE"]
        self.esatacada = dicdatos["ISATTACKED"]
        self.esatacante = dicdatos["ISATTACKING"]
        self.posicion = dicdatos["POSITION"]
        self.color = dicdatos["COLOR"]
        self.errors = dicdatos["ERRORS"]
        self.time = dicdatos["TIME"]
        self.liFENs = dicdatos["FENS"]

        mas = "x" if self.intervaloPorPieza else ""
        titulo = "%s (%s%d\")" % (site, mas, self.intervalo)

        super(WPlay, self).__init__(owner, titulo, Iconos.Gafas(),
                                    "visualplay")

        self.procesador = owner.procesador
        self.configuracion = self.procesador.configuracion

        # Tiempo en tablero
        intervaloMax = self.intervalo
        if self.intervaloPorPieza:
            intervaloMax *= 32

        # Tablero
        confTablero = self.configuracion.confTablero("VISUALPLAY", 48)
        self.tablero = Tablero.Tablero(self, confTablero)
        self.tablero.crea()

        lyT = Colocacion.V().control(self.tablero)

        self.gbTablero = Controles.GB(self, "", lyT)

        # entradas
        ly = Colocacion.G()

        self.posPosicion = None
        self.posColor = None
        self.posIsAttacked = None
        self.posIsAttacking = None

        lista = [_("Piece")]
        if self.posicion:
            lista.append(_("Position"))
        if self.color:
            lista.append(_("Square color"))
        if self.esatacada:
            lista.append(_("Is attacked?"))
        if self.esatacante:
            lista.append(_("Is attacking?"))
        self.liLB2 = []
        for col, eti in enumerate(lista):
            ly.control(Controles.LB(self, eti), 0, col + 1)
            lb2 = Controles.LB(self, eti)
            ly.control(lb2, 0, col + len(lista) + 2)
            self.liLB2.append(lb2)
        elementos = len(lista) + 1

        liComboPieces = []
        for c in "PNBRQKpnbrqk":
            liComboPieces.append(("", c, self.tablero.piezas.icono(c)))

        self.pmBien = Iconos.pmAceptarPeque()
        self.pmMal = Iconos.pmCancelarPeque()
        self.pmNada = Iconos.pmPuntoAmarillo()

        self.liBloques = []
        for x in range(32):
            fila = x % 16 + 1
            colPos = elementos if x > 15 else 0

            unBloque = []
            self.liBloques.append(unBloque)

            # # Solucion
            lb = Controles.LB(self, "").ponImagen(self.pmNada)
            ly.control(lb, fila, colPos)
            unBloque.append(lb)

            # # Piezas
            colPos += 1
            cb = Controles.CB(self, liComboPieces, "P")
            # cb.setStyleSheet("* { min-height:32px }")
            cb.setIconSize(QtCore.QSize(20, 20))

            ly.control(cb, fila, colPos)
            unBloque.append(cb)

            if self.posicion:
                ec = Controles.ED(self, "").caracteres(2).controlrx(
                    "(|[a-h][1-8])").anchoFijo(24).alinCentrado()
                colPos += 1
                ly.controlc(ec, fila, colPos)
                unBloque.append(ec)

            if self.color:
                cl = QTVarios.TwoImages(Iconos.pmBlancas(), Iconos.pmNegras())
                colPos += 1
                ly.controlc(cl, fila, colPos)
                unBloque.append(cl)

            if self.esatacada:
                isat = QTVarios.TwoImages(Iconos.pmAtacada().scaledToWidth(24),
                                          Iconos.pmPuntoNegro())
                colPos += 1
                ly.controlc(isat, fila, colPos)
                unBloque.append(isat)

            if self.esatacante:
                at = QTVarios.TwoImages(Iconos.pmAtacante().scaledToWidth(24),
                                        Iconos.pmPuntoNegro())
                colPos += 1
                ly.controlc(at, fila, colPos)
                unBloque.append(at)

        ly1 = Colocacion.H().otro(ly).relleno()
        ly2 = Colocacion.V().otro(ly1).relleno()
        self.gbSolucion = Controles.GB(self, "", ly2)

        f = Controles.TipoLetra("", 11, 80, False, False, False, None)

        bt = Controles.PB(self, _("End game"), self.terminar,
                          plano=False).ponIcono(
                              Iconos.FinPartida()).ponFuente(f)
        self.btTablero = Controles.PB(self,
                                      _("Go to board"),
                                      self.activaTablero,
                                      plano=False).ponIcono(
                                          Iconos.Tablero()).ponFuente(f)
        self.btComprueba = Controles.PB(self,
                                        _("Test the solution"),
                                        self.compruebaSolucion,
                                        plano=False).ponIcono(
                                            Iconos.Check()).ponFuente(f)
        self.btGotoNextLevel = Controles.PB(self,
                                            _("Go to next level"),
                                            self.gotoNextLevel,
                                            plano=False).ponIcono(
                                                Iconos.GoToNext()).ponFuente(f)
        ly0 = Colocacion.H().control(bt).relleno().control(
            self.btTablero).control(self.btComprueba).control(
                self.btGotoNextLevel)

        lyBase = Colocacion.H().control(self.gbTablero).control(
            self.gbSolucion)

        layout = Colocacion.V().otro(ly0).otro(lyBase)

        self.setLayout(layout)

        self.recuperarVideo()

        self.gotoNextLevel()