def startPosition(self): resp = Voyager.voyagerFEN(self.pantalla, self.fen) if resp is not None: self.fen = resp self.bloqueApertura = None self.posicApertura = None if self.xpgn: siInicio = self.fen == ControlPosicion.FEN_INICIAL li = self.xpgn.split("\n") lin = [] siFen = False for linea in li: if linea.startswith("["): if "FEN " in linea: siFen = True if siInicio: continue linea = '[FEN "%s"]' % self.fen lin.append(linea) else: break if not siFen: linea = '[FEN "%s"]' % self.fen lin.append(linea) self.liPGN = lin self.xpgn = "\n".join(lin) + "\n\n*" self.reiniciar()
def posicionEditar(self): resp = Voyager.voyagerFEN(self, self.fen, wownerowner=self.procesador.pantalla) if resp is not None: self.fen = resp self.muestraPosicion()
def gridDobleClick(self, grid, fila, col): clave = col.clave if clave == "INFO": # fila = self.g_guion.recno() tarea = self.guion.tarea(fila) sc = self.guion.itemTarea(fila) if sc: a1h8 = tarea.a1h8() desde, hasta = self.desdeHasta( tarea.txt_tipo() + " " + tarea.nombre(), a1h8[:2], a1h8[2:]) if desde: sc = tarea.itemSC() sc.ponA1H8(desde + hasta) tarea.coordina() elif isinstance(tarea, TabVisual.GT_Posicion): fen = Voyager.voyagerFEN(self, tarea.fen()) if fen is not None: tarea.fen(fen) elif isinstance(tarea, TabVisual.GT_PiezaMueve): desde, hasta = tarea.desdeHasta() desde, hasta = self.desdeHasta( tarea.txt_tipo() + " " + tarea.nombre(), desde, hasta) if desde: tarea.desdeHasta(desde, hasta) tarea.marcado(False) mo = tarea.marcadoOwner() if mo: self.ponMarcadoOwner(fila, mo)
def tw_nuevo(self): fen = Voyager.voyagerFEN(self, "", False) if fen is not None: if self.dbGamesFEN.si_existe_fen(fen): QTUtil2.mensError(self, _("This position already exists.")) return hoy = Util.hoy() liTags=[['Date', "%d.%02d.%02d" % (hoy.year, hoy.month, hoy.day)],['FEN', fen]] pc = Partida.PartidaCompleta(fen=fen, liTags=liTags) self.editar(None, pc)
def startPosition(self): resp = Voyager.voyagerFEN(self.pantalla, self.fen) if resp is not None: self.xfichero = None self.xpgn = None self.xjugadaInicial = None self.fen = resp self.bloqueApertura = None self.posicApertura = None self.reiniciar()
def change_position(self): prev = self.analyzing self.stop() fen = Voyager.voyagerFEN(self, self.posicion.fen(), wownerowner=self.procesador.pantalla) if fen is not None: self.em_solucion.ponTexto("") self.posicion.leeFen(fen) self.tablero.ponPosicion(self.posicion) self.sb_number.ponValor(self.sb_number.valor()+1) if prev: self.start()
def tw_nuevo(self): # Se genera un PGN fen = Voyager.voyagerFEN(self, "") if fen is not None: pgn = '[FEN "%s"]' % fen nuevoPGN, pv, dicPGN = self.procesador.gestorUnPGN(self, pgn) if nuevoPGN: if not self.dbGamesFEN.cambiarUno(None, nuevoPGN, pv, dicPGN): QTUtil2.mensError(self, _("This position already exists.")) else: self.actualiza() self.grid.gobottom()
def tw_nuevo(self): # Se genera un PGN fen = Voyager.voyagerFEN(self, "", False) if fen is not None: if self.dbGamesFEN.si_existe_fen(fen): QTUtil2.mensError(self, _("This position already exists.")) return hoy = Util.hoy() pgn = '[Date "%d.%02d.%02d"]\n[FEN "%s"]' % (hoy.year, hoy.month, hoy.day, fen) nuevoPGN, pv, dicPGN = self.procesador.gestorUnPGN(self, pgn) if dicPGN: liTags = [(clave, valor) for clave, valor in dicPGN.iteritems()] partida_completa = Partida.PartidaCompleta(fen=fen, liTags=liTags) if pv: partida_completa.leerPV(pv) if self.dbGamesFEN.inserta(partida_completa): self.actualiza() self.grid.refresh() self.grid.gobottom()
def configurarGS(self): sep = (None, None, None) liMasOpciones = [ ("rotacion", _("Auto-rotate board"), Iconos.JS_Rotacion()), sep, ("leerpgn", _("Read PGN"), Iconos.PGN_Importar()), sep, ("pastepgn", _("Paste PGN"), Iconos.Pegar16()), sep, ] if not self.siCompleta: liMasOpciones.extend([ ("posicion", _("Start position"), Iconos.Datos()), sep, ("pasteposicion", _("Paste FEN position"), Iconos.Pegar16()), sep, ("voyager", _("Voyager 2"), Iconos.Voyager1()) ]) resp = self.configurar(liMasOpciones, siCambioTutor=True, siSonidos=True) if resp == "rotacion": self.siVolteoAutomatico = not self.siVolteoAutomatico siBlancas = self.partida.ultPosicion.siBlancas if self.siVolteoAutomatico: if siBlancas != self.tablero.siBlancasAbajo: self.tablero.rotaTablero() elif resp == "posicion": ini_fen = self.partida.iniPosicion.fen() cur_fen = Voyager.voyagerFEN(self.pantalla, ini_fen) if cur_fen and cur_fen != ini_fen: self.partida.resetFEN(cur_fen) self.inicio(self.partida, self.siCompleta) elif resp == "pasteposicion": texto = QTUtil.traePortapapeles() if texto: cp = ControlPosicion.ControlPosicion() try: cp.leeFen(str(texto)) self.fen = cp.fen() self.posicApertura = None self.reiniciar() except: pass elif resp == "leerpgn": unpgn = PantallaPGN.eligePartida(self.pantalla) if unpgn: partida = unpgn.partida if self.siCompleta and not partida.siFenInicial(): return p = Partida.PartidaCompleta() p.leeOtra(partida) p.asignaApertura() p.setTags(unpgn.listaCabeceras()) self.reinicio = p.save() self.reiniciar() elif resp == "pastepgn": texto = QTUtil.traePortapapeles() if texto: unpgn = PGN.UnPGN() unpgn.leeTexto(texto) if unpgn.siError: QTUtil2.mensError( self.pantalla, _("The text from the clipboard does not contain a chess game in PGN format" )) return partida = unpgn.partida if self.siCompleta and not partida.siFenInicial(): return p = Partida.PartidaCompleta() p.leeOtra(partida) p.asignaApertura() p.setTags(unpgn.listaCabeceras()) self.reinicio = p.save() self.reiniciar() elif resp == "voyager": ptxt = Voyager.voyagerPartida(self.pantalla, self.partida) if ptxt: dic = self.creaDic() dic["PARTIDA"] = ptxt p = self.partida.copia() p.recuperaDeTexto(ptxt) dic["FEN"] = None if p.siFenInicial() else p.iniPosicion.fen() dic["SIBLANCASABAJO"] = self.tablero.siBlancasAbajo self.reiniciar(dic)
def posicionEditar(self): resp = Voyager.voyagerFEN(self, self.fen) if resp is not None: self.fen = resp self.muestraPosicion()
def configurarGS(self): sep = (None, None, None) liMasOpciones = [ ("rotacion", _("Auto-rotate board"), Iconos.JS_Rotacion()), sep, ("leerpgn", _("Read PGN"), Iconos.PGN_Importar()), sep, ("pastepgn", _("Paste PGN"), Iconos.Pegar16()), sep, ] if not self.siCompleta: liMasOpciones.extend([ ("posicion", _("Start position"), Iconos.Datos()), sep, ("pasteposicion", _("Paste FEN position"), Iconos.Pegar16()), sep, ("voyager", _("Voyager 2"), Iconos.Voyager1()) ]) resp = self.configurar(liMasOpciones, siCambioTutor=True, siSonidos=True) if resp == "rotacion": self.siVolteoAutomatico = not self.siVolteoAutomatico siBlancas = self.partida.ultPosicion.siBlancas if self.siVolteoAutomatico: if siBlancas != self.tablero.siBlancasAbajo: self.tablero.rotaTablero() elif resp == "posicion": resp = Voyager.voyagerFEN(self.pantalla, self.fen) if resp is not None: self.fen = resp self.posicApertura = None if self.xpgn: siInicio = self.fen == ControlPosicion.FEN_INICIAL li = self.xpgn.split("\n") lin = [] siFen = False for linea in li: if linea.startswith("["): if "FEN " in linea: siFen = True if siInicio: continue linea = '[FEN "%s"]' % self.fen lin.append(linea) else: break if not siFen: linea = '[FEN "%s"]' % self.fen lin.append(linea) self.liPGN = lin self.xpgn = "\n".join(lin) + "\n\n*" self.reiniciar() elif resp == "pasteposicion": texto = QTUtil.traePortapapeles() if texto: cp = ControlPosicion.ControlPosicion() try: cp.leeFen(str(texto)) self.fen = cp.fen() self.posicApertura = None self.reiniciar() except: pass elif resp == "leerpgn": unpgn = PantallaPGN.eligePartida(self.pantalla) if unpgn: partida = unpgn.partida if self.siCompleta and not partida.siFenInicial(): return p = Partida.PartidaCompleta() p.leeOtra(partida) if self.siCompleta: p.asignaApertura(self.configuracion) p.setTags(unpgn.listaCabeceras()) self.reinicio = p.save() self.reiniciar() elif resp == "pastepgn": texto = QTUtil.traePortapapeles() if texto: unpgn = PGN.UnPGN() unpgn.leeTexto(texto) if unpgn.siError: QTUtil2.mensError( self.pantalla, _("The text from the clipboard does not contain a chess game in PGN format" )) return partida = unpgn.partida if self.siCompleta and not partida.siFenInicial(): return p = Partida.PartidaCompleta() p.leeOtra(partida) if self.siCompleta: p.asignaApertura(self.configuracion) p.setTags(unpgn.listaCabeceras()) self.reinicio = p.save() self.reiniciar() elif resp == "voyager": ptxt = Voyager.voyagerPartida(self.pantalla, self.partida) if ptxt: dic = self.creaDic() dic["PARTIDA"] = ptxt p = self.partida.copia() p.recuperaDeTexto(ptxt) dic["FEN"] = None if p.siFenInicial() else p.iniPosicion.fen() dic["SIBLANCASABAJO"] = self.tablero.siBlancasAbajo self.reiniciar(dic)
def execMenuSP(self, tipo, siInsertar): if siInsertar: fila = self.g_guion.recno() filaIni = fila else: fila = -1 filaIni = len(self.guion) if tipo == "PI": fen = self.tablero.fenActual() fen = Voyager.voyagerFEN(self, fen) if fen is None: return None nombre = self.editaNombre(_("Start position")) if nombre is None: return tarea = TabVisual.GT_Posicion() if not fen: fen = ControlPosicion.FEN_INICIAL tarea.fen(fen) tarea.nombre(nombre) self.guion.nuevaTarea(tarea, fila) self.gridPonValor(None, filaIni, None, True) elif tipo == "PP": texto = QTUtil.traePortapapeles() if texto: cp = ControlPosicion.ControlPosicion() try: nombre = self.editaNombre(_("Start position")) if nombre is None: return cp.leeFen(str(texto)) tarea = TabVisual.GT_Posicion() tarea.fen(cp.fen()) tarea.nombre(nombre) self.guion.nuevaTarea(tarea, fila) self.gridPonValor(None, filaIni, None, True) except: return None elif tipo == "PA": nombre = self.editaNombre(_("Start position")) if nombre is None: return tarea = TabVisual.GT_Posicion() tarea.fen(self.tablero.fenActual()) tarea.nombre(nombre) self.guion.nuevaTarea(tarea, fila) else: if tipo == "PGNF": unpgn = PantallaPGN.eligePartida(self) partida = unpgn.partida if unpgn else None else: pgn = QTUtil.traePortapapeles() partida = PantallaTabVPartidas.texto2partida( self, pgn) if pgn else None if partida and partida.numJugadas(): w = PantallaTabVPartidas.W_EligeMovimientos(self, partida) if w.exec_(): for jg in w.resultado: tarea = TabVisual.GT_Jugada() tarea.jugada(jg) self.guion.nuevaTarea(tarea, fila) if fila != -1: fila += 1 else: return None else: return None self.g_guion.goto(filaIni, 0) self.g_guion.refresh()