예제 #1
0
    def editaAnalisis(self, item, mov):

        # Hay un analisis -> se muestra en variantes
        # Analisis.show_analysis( self.procesador, self.xtutor, move, is_white, max_recursion, pos )
        fen = mov.game.last_position.fen()

        rm = mov.analysis()
        if rm is None:
            return

        game = Game.Game(mov.game.last_position)
        game.read_pv(rm.pv)
        lineaPGN = game.pgnBaseRAW()
        wowner = self.owner
        tablero = wowner.infoMove.tablero
        import Code.Variantes as Variantes

        Variantes.editaVarianteMoves(
            self.procesador,
            wowner,
            tablero.is_white_bottom,
            fen,
            lineaPGN,
            titulo=mov.titulo + " - " + mov.etiPuntos(True),
        )
예제 #2
0
    def showAnalisis(self, fen, pv, rm):

        cp = ControlPosicion.ControlPosicion()
        cp.leeFen(fen)
        partida = Partida.Partida(cp)
        partida.leerPV(pv)
        lineaPGN = partida.pgnBaseRAW()
        import Code.Variantes as Variantes

        Variantes.editaVarianteMoves(self.procesador, self.pantalla, True, fen, lineaPGN,
                                     titulo="%s %s" % (rm.nombre, rm.texto() ))
예제 #3
0
    def showAnalisis(self, fen, pv, rm):

        cp = ControlPosicion.ControlPosicion()
        cp.leeFen(fen)
        partida = Partida.Partida(cp)
        partida.leerPV(pv)
        lineaPGN = partida.pgnBaseRAW()
        import Code.Variantes as Variantes

        Variantes.editaVarianteMoves(self.procesador,
                                     self.pantalla,
                                     True,
                                     fen,
                                     lineaPGN,
                                     titulo="%s %s" % (rm.nombre, rm.texto()))
    def editar(self, numero, siEngineActivo=False):
        import Code.Variantes as Variantes

        gestor = self.owner.wParent.gestor

        siCompetitivo = False
        if hasattr(gestor, "siCompetitivo"):
            if gestor.siCompetitivo:
                siCompetitivo = gestor.estado != kFinJuego

        if siCompetitivo:
            siEngineActivo = False

        fen = self.jg.posicionBase.fen()
        if numero == -1:
            pgn = ""
        else:
            pgn = self.liVariantes[numero].pgnBaseRAW()

        resp = Variantes.editaVariante(gestor.procesador, gestor, fen, pgn, siEngineActivo=siEngineActivo, siCompetitivo=siCompetitivo)
        if resp:
            lineaPGN, pv = resp
            fen = self.jg.posicionBase.fen()

            uno = PGN.UnPGN()
            uno.leeTexto('[FEN "%s"]\n%s' % (fen, lineaPGN))
            if numero == -1:
                self.liVariantes.append(uno.partida)
            else:
                self.liVariantes[numero] = uno.partida
            self.guardar()
            self.mostrar()
예제 #5
0
    def editaAnalisis(self, item, mov):

        # Hay un analisis -> se muestra en variantes
        # Analisis.muestraAnalisis( self.procesador, self.xtutor, jg, siBlancas, maxRecursion, pos )
        fen = mov.partida.ultPosicion.fen()

        rm = mov.analisis()
        if rm is None:
            return

        partida = Partida.Partida(mov.partida.ultPosicion)
        partida.leerPV(rm.pv)
        lineaPGN = partida.pgnBaseRAW()
        wowner = self.owner
        tablero = wowner.infoMove.tablero
        import Code.Variantes as Variantes

        Variantes.editaVarianteMoves(self.procesador, wowner, tablero.siBlancasAbajo, fen, lineaPGN,
                                     titulo=mov.titulo + " - " + mov.etiPuntos(True))
예제 #6
0
    def editaVariante(self, linea, siEngineActivo=False):
        import Code.Variantes as Variantes

        gestor = self.wParent.gestor
        pos, jg = gestor.jugadaActiva()
        if jg is None:
            return None
        fen = jg.posicionBase.fen()

        return Variantes.editaVariante(gestor.procesador, gestor, fen, linea, siEngineActivo=siEngineActivo)
예제 #7
0
    def editaVariante(self, linea, siEngineActivo=False):
        import Code.Variantes as Variantes

        gestor = self.wParent.gestor
        pos, jg = gestor.jugadaActiva()
        if jg is None:
            return None
        fen = jg.posicionBase.fen()

        return Variantes.editaVariante(gestor.procesador,
                                       gestor,
                                       fen,
                                       linea,
                                       siEngineActivo=siEngineActivo)
    def editaVariantes(self, item, mov):
        import Code.Variantes as Variantes

        if mov.variantes:
            menu = QTVarios.LCMenu(self)
            for num, una in enumerate(mov.variantes):
                menu.opcion(num, una[:40], Iconos.PuntoAzul())
            menu.separador()
            menu.opcion(-1, _("New variant"), Iconos.Mas())
            menu.separador()
            menub = menu.submenu(_("Remove"), Iconos.Delete())
            for num, una in enumerate(mov.variantes):
                menub.opcion(-num - 2, una[:40], Iconos.PuntoNaranja())

            resp = menu.lanza()
            if resp is None:
                return None
            if resp == -1:
                num = None
                lineaPGN = ""
            elif resp >= 0:
                num = resp
                lineaPGN = mov.variantes[num]
            else:
                num = -resp - 2
                una = mov.variantes[num]
                if QTUtil2.pregunta(self, _X(_("Delete %1?"), una[:40])):
                    del mov.variantes[num]
                    self.ponVariantes(mov)
                return
        else:
            lineaPGN = ""
            num = None
        fen = mov.partida.ultPosicion.fen()

        wowner = self.owner
        tablero = wowner.infoMove.tablero
        resp = Variantes.editaVarianteMoves(self.procesador, wowner,
                                            tablero.siBlancasAbajo, fen,
                                            lineaPGN)
        if resp:
            una = resp[0]
            if num is None:
                mov.variantes.append(una)
                self.ponVariantes(mov)
            else:
                mov.variantes[num] = una
예제 #9
0
    def editaVariante(self, linea, siEngineActivo=False):
        import Code.Variantes as Variantes

        siCompetitivo = False
        if hasattr(self.wParent, "gestor") and hasattr(self.wParent.gestor,
                                                       "siCompetitivo"):
            if self.wParent.gestor.siCompetitivo:
                siCompetitivo = self.wParent.gestor.estado != kFinJuego

        if siCompetitivo:
            siEngineActivo = False

        gestor = self.wParent.gestor
        pos, jg = gestor.jugadaActiva()
        if jg is None:
            return None
        fen = jg.posicionBase.fen()

        return Variantes.editaVariante(gestor.procesador,
                                       gestor,
                                       fen,
                                       linea,
                                       siEngineActivo=siEngineActivo,
                                       siCompetitivo=siCompetitivo)
    def __init__(self, wParent):
        QtGui.QWidget.__init__(self, wParent)

        self.wParent = wParent

        self.jg = None
        self.partida = None

        configuracion = VarGen.configuracion

        puntos = configuracion.puntosPGN

        f = Controles.TipoLetra(puntos=puntos, peso=75)
        f9 = Controles.TipoLetra(puntos=puntos)
        ftxt = f9

        # Apertura
        self.lbApertura = Controles.LB(self, "").ponFuente(f).alinCentrado().ponColorFondoN("#eeeeee", "#474d59").ponWrap()
        self.lbApertura.hide()

        # Valoracion
        liOpciones = [("-", "-")]
        dicNAGs = TrListas.dicNAGs()

        carpNAGs = "./IntFiles/NAGs"

        for x in dicNAGs:
            if x:
                fsvg = "%s/$%d.svg" % (carpNAGs, x)
                if os.path.isfile(fsvg):
                    liOpciones.append(("$%d : %s" % (x, dicNAGs[x]), str(x), QTVarios.fsvg2ico(fsvg, 16)))
                else:
                    liOpciones.append(("$%d : %s" % (x, dicNAGs[x]), str(x)))
        self.maxNAGs = 10
        self.liNAGs = []
        for x in range(self.maxNAGs):
            cb = Controles.CB(self, liOpciones, "").ponAnchoMinimo().capturaCambiado(self.valoracionCambiada).ponFuente(f9)
            if x:
                cb.hide()
            self.liNAGs.append(cb)

        btNAGS = Controles.PB(self, "", self.masNAGs).ponIcono(Iconos.Mas()).anchoFijo(22)

        liOpciones = [(x, x) for x in ("-", "!", "!!", "?", "??", "!?", "?!")]
        self.valoracionDirecta = Controles.CB(self, liOpciones, "-").ponAnchoFijo(42).capturaCambiado(self.valoracionDirectaCambiada)

        lyH = Colocacion.H().control(self.valoracionDirecta).control(self.liNAGs[0]).control(btNAGS)
        ly = Colocacion.V().otro(lyH)
        for x in range(1, self.maxNAGs):
            ly.control(self.liNAGs[x])

        self.gbValoracion = Controles.GB(self, _("Rating"), ly).ponFuente(f)

        # Comentarios
        self.comentario = Controles.EM(self, siHTML=False).capturaCambios(self.comentarioCambiado).ponFuente(ftxt).anchoMinimo(200)
        ly = Colocacion.H().control(self.comentario).margen(3)
        self.gbComentario = Controles.GB(self, _("Comments"), ly).ponFuente(f)

        # Variantes
        self.variantes = Variantes(self)

        self.splitter = splitter = QtGui.QSplitter(self)
        self.splitter.setOrientation(QtCore.Qt.Vertical)
        splitter.addWidget(self.gbComentario)
        splitter.addWidget(self.variantes)

        layout = Colocacion.V()
        layout.control(self.lbApertura)
        layout.control(self.gbValoracion)
        layout.control(self.splitter)
        layout.margen(1)

        self.setLayout(layout)
class InformacionPGN(QtGui.QWidget):
    def __init__(self, wParent):
        QtGui.QWidget.__init__(self, wParent)

        self.wParent = wParent

        self.jg = None
        self.partida = None

        configuracion = VarGen.configuracion

        puntos = configuracion.puntosPGN

        f = Controles.TipoLetra(puntos=puntos, peso=75)
        f9 = Controles.TipoLetra(puntos=puntos)
        ftxt = f9

        # Apertura
        self.lbApertura = Controles.LB(self, "").ponFuente(f).alinCentrado().ponColorFondoN("#eeeeee", "#474d59").ponWrap()
        self.lbApertura.hide()

        # Valoracion
        liOpciones = [("-", "-")]
        dicNAGs = TrListas.dicNAGs()

        carpNAGs = "./IntFiles/NAGs"

        for x in dicNAGs:
            if x:
                fsvg = "%s/$%d.svg" % (carpNAGs, x)
                if os.path.isfile(fsvg):
                    liOpciones.append(("$%d : %s" % (x, dicNAGs[x]), str(x), QTVarios.fsvg2ico(fsvg, 16)))
                else:
                    liOpciones.append(("$%d : %s" % (x, dicNAGs[x]), str(x)))
        self.maxNAGs = 10
        self.liNAGs = []
        for x in range(self.maxNAGs):
            cb = Controles.CB(self, liOpciones, "").ponAnchoMinimo().capturaCambiado(self.valoracionCambiada).ponFuente(f9)
            if x:
                cb.hide()
            self.liNAGs.append(cb)

        btNAGS = Controles.PB(self, "", self.masNAGs).ponIcono(Iconos.Mas()).anchoFijo(22)

        liOpciones = [(x, x) for x in ("-", "!", "!!", "?", "??", "!?", "?!")]
        self.valoracionDirecta = Controles.CB(self, liOpciones, "-").ponAnchoFijo(42).capturaCambiado(self.valoracionDirectaCambiada)

        lyH = Colocacion.H().control(self.valoracionDirecta).control(self.liNAGs[0]).control(btNAGS)
        ly = Colocacion.V().otro(lyH)
        for x in range(1, self.maxNAGs):
            ly.control(self.liNAGs[x])

        self.gbValoracion = Controles.GB(self, _("Rating"), ly).ponFuente(f)

        # Comentarios
        self.comentario = Controles.EM(self, siHTML=False).capturaCambios(self.comentarioCambiado).ponFuente(ftxt).anchoMinimo(200)
        ly = Colocacion.H().control(self.comentario).margen(3)
        self.gbComentario = Controles.GB(self, _("Comments"), ly).ponFuente(f)

        # Variantes
        self.variantes = Variantes(self)

        self.splitter = splitter = QtGui.QSplitter(self)
        self.splitter.setOrientation(QtCore.Qt.Vertical)
        splitter.addWidget(self.gbComentario)
        splitter.addWidget(self.variantes)

        layout = Colocacion.V()
        layout.control(self.lbApertura)
        layout.control(self.gbValoracion)
        layout.control(self.splitter)
        layout.margen(1)

        self.setLayout(layout)

    def masNAGs(self):
        for cb in self.liNAGs:
            if not cb.isVisible():
                cb.ponValor("-")
                cb.show()
                return

    def ponJG(self, partida, jg, apertura):
        self.partida = partida
        self.jg = jg

        if not apertura:
            self.lbApertura.hide()

        siJG = self.jg is not None
        self.gbValoracion.setVisible(siJG)
        self.variantes.setVisible(siJG)

        if siJG:
            self.gbComentario.ponTexto(_("Comments"))
            if apertura:
                self.lbApertura.ponTexto(apertura)
                if jg.siApertura:
                    self.lbApertura.ponColorFondoN("#eeeeee", "#474d59")
                else:
                    self.lbApertura.ponColorFondoN("#ffffff", "#aaaaaa")
                self.lbApertura.show()

            self.comentario.ponTexto(jg.comentario)
            self.variantes.ponJugada(jg)

            li = jg.critica.split(" ")

            self.ponNAGs(li)

            self.valoracionDirecta.ponValor(jg.criticaDirecta if jg.criticaDirecta else "-")

        else:
            self.gbComentario.ponTexto("%s - %s" % (_("Game"), _("Comments")))
            if partida:
                self.comentario.ponTexto(partida.firstComment)
                if apertura:
                    self.lbApertura.ponTexto(apertura)
                    self.lbApertura.ponColorFondoN("#eeeeee", "#474d59")
                    self.lbApertura.show()

    def ponNAGs(self, li):
        n = 0
        for nag in li:
            if nag.isdigit():
                cb = self.liNAGs[n]
                cb.ponValor(nag)
                cb.show()
                n += 1
        if n == 0:
            cb = self.liNAGs[0]
            cb.ponValor("-")
            cb.show()
        else:
            for x in range(n, self.maxNAGs):
                cb = self.liNAGs[x]
                cb.ponValor("-")
                cb.hide()

    def keyPressEvent(self, event):
        pass  # Para que ESC no cierre el programa

    def comentarioCambiado(self):
        if self.jg:
            self.jg.comentario = self.comentario.texto()
        else:
            self.partida.firstComment = self.comentario.texto()

    def valoracionCambiada(self, npos):
        if self.jg:
            li = []
            for x in range(self.maxNAGs):
                v = self.liNAGs[x].valor()
                if v != "-":
                    li.append(v)
            self.jg.critica = " ".join(li)
            self.ponNAGs(li)

    def valoracionDirectaCambiada(self, npos):
        if self.jg:
            criticaDirecta = self.valoracionDirecta.valor()
            self.jg.criticaDirecta = criticaDirecta if criticaDirecta != "-" else ""
예제 #12
0
    def editar(self, fila):

        if fila is None:
            nombre = ""
            eco = ""
            pgn = ""
            estandar = True
            titulo = _("New opening")

        else:
            reg = self.lista[fila]

            nombre = reg["NOMBRE"]
            eco = reg["ECO"]
            pgn = reg["PGN"]
            estandar = reg["ESTANDAR"]

            titulo = nombre

        # Datos
        liGen = [(None, None)]
        liGen.append((_("Name") + ":", nombre))
        config = FormLayout.Editbox("ECO", ancho=30, rx="[A-Z, a-z][0-9][0-9]")
        liGen.append((config, eco))
        liGen.append((_("Add to standard list") + ":", estandar))

        # Editamos
        resultado = FormLayout.fedit(liGen,
                                     title=titulo,
                                     parent=self,
                                     anchoMinimo=460,
                                     icon=Iconos.Apertura())
        if resultado is None:
            return

        accion, liResp = resultado
        nombre = liResp[0].strip()
        if not nombre:
            return
        eco = liResp[1].upper()
        estandar = liResp[2]

        fen = ControlPosicion.FEN_INICIAL

        self.procesador.procesador = self.procesador  # ya que editaVariante espera un gestor

        resp = Variantes.editaVariante(self.procesador,
                                       self.procesador,
                                       fen,
                                       pgn,
                                       titulo=nombre,
                                       siBlancasAbajo=True)

        if resp:
            pgn, a1h8 = resp

            reg = {}
            reg["NOMBRE"] = nombre
            reg["ECO"] = eco
            reg["PGN"] = pgn
            reg["A1H8"] = a1h8
            reg["ESTANDAR"] = estandar

            if fila is None:
                self.lista.append(reg)
                self.grid.refresh()
                self.grabar()
            else:
                self.lista[fila] = reg
            self.grid.refresh()
            self.grabar()
예제 #13
0
    def editar(self, fila):

        if fila is None:
            nombre = ""
            eco = ""
            pgn = ""
            estandar = True
            titulo = _("New opening")

        else:
            reg = self.lista[fila]

            nombre = reg["NOMBRE"]
            eco = reg["ECO"]
            pgn = reg["PGN"]
            estandar = reg["ESTANDAR"]

            titulo = nombre

        # Datos
        liGen = [(None, None)]
        liGen.append(( _("Name") + ":", nombre ))
        config = FormLayout.Editbox("ECO", ancho=30, rx="[A-Z, a-z][0-9][0-9]")
        liGen.append((config, eco ))
        liGen.append(( _("Add to standard list") + ":", estandar ))

        # Editamos
        resultado = FormLayout.fedit(liGen, title=titulo, parent=self, anchoMinimo=460, icon=Iconos.Apertura())
        if resultado is None:
            return

        accion, liResp = resultado
        nombre = liResp[0].strip()
        if not nombre:
            return
        eco = liResp[1].upper()
        estandar = liResp[2]

        fen = ControlPosicion.FEN_INICIAL

        self.procesador.procesador = self.procesador  # ya que editaVariante espera un gestor

        resp = Variantes.editaVariante(self.procesador, self.procesador, fen, pgn, titulo=nombre)

        if resp:
            pgn, a1h8 = resp

            reg = {}
            reg["NOMBRE"] = nombre
            reg["ECO"] = eco
            reg["PGN"] = pgn
            reg["A1H8"] = a1h8
            reg["ESTANDAR"] = estandar

            if fila is None:
                self.lista.append(reg)
                self.grid.refresh()
                self.grabar()
            else:
                self.lista[fila] = reg
            self.grid.refresh()
            self.grabar()
예제 #14
0
    def editar(self, fila):

        if fila is None:
            name = ""
            eco = ""
            pgn = ""
            estandar = True
            titulo = _("New opening")

        else:
            reg = self.lista[fila]

            name = reg["NOMBRE"]
            eco = reg["ECO"]
            pgn = reg["PGN"]
            estandar = reg["ESTANDAR"]

            titulo = name

        # Datos
        liGen = [(None, None)]
        liGen.append((_("Name") + ":", name))
        config = FormLayout.Editbox("ECO", ancho=30, rx="[A-Z, a-z][0-9][0-9]")
        liGen.append((config, eco))
        liGen.append((_("Add to standard list") + ":", estandar))

        # Editamos
        resultado = FormLayout.fedit(liGen,
                                     title=titulo,
                                     parent=self,
                                     anchoMinimo=460,
                                     icon=Iconos.Apertura())
        if resultado is None:
            return

        accion, liResp = resultado
        name = liResp[0].strip()
        if not name:
            return
        eco = liResp[1].upper()
        estandar = liResp[2]

        fen = FEN_INITIAL

        self.procesador.procesador = self.procesador  # ya que editaVariante espera un gestor

        if pgn:
            ok, game = Game.pgn_game(pgn)
            if not ok:
                game = Game.Game()
        else:
            game = Game.Game()

        resp = Variantes.editaVariante(self.procesador,
                                       game,
                                       titulo=name,
                                       is_white_bottom=True)

        if resp:
            game = resp

            reg = {}
            reg["NOMBRE"] = name
            reg["ECO"] = eco
            reg["PGN"] = game.pgnBaseRAW()
            reg["A1H8"] = game.pv()
            reg["ESTANDAR"] = estandar

            if fila is None:
                self.lista.append(reg)
                self.grid.refresh()
                self.grabar()
            else:
                self.lista[fila] = reg
            self.grid.refresh()
            self.grabar()