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), )
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 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()
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))
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
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 ""
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()
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()
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()