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 = WinPosition.editarPosicion(self, VarGen.configuracion, 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 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 = WinPosition.editarPosicion(self, VarGen.configuracion, 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): # Se genera un PGN resp = WinPosition.editarPosicion(self, self.configuracion, ControlPosicion.FEN_INICIAL) if resp: pgn = self.dbGames.blankPGN(resp) nuevoPGN, pv, dicPGN = self.procesador.gestorUnPGN(self, pgn) if not nuevoPGN: nuevoPGN = "" for k in dicPGN: nuevoPGN += '[%s "%s"]\n' % (k, dicPGN[k]) nuevoPGN += "\n\n*" if not self.dbGames.cambiarUno(None, nuevoPGN, pv, dicPGN): QTUtil2.mensError(self, _("This game already exists.")) else: self.actualiza() self.grid.gobottom()
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 = WinPosition.editarPosicion(self, VarGen.configuracion, 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()
def posicionEditar(self): resp = WinPosition.editarPosicion(self, self.configuracion, self.fen) if resp is not None: self.fen = resp self.muestraPosicion()
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 = WinPosition.editarPosicion(self, VarGen.configuracion, fen) if fen is None: return None nombre = self.editaNombre(_("Start position")) if nombre is None: return tarea = TabVisual.GT_Posicion() if not fen: cp = 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()
def configurarGS(self): # self.test() # return mt = _("Engine").lower() mt = _X(_("Disable %1"), mt) if self.siJuegaMotor else _X(_("Enable %1"), mt) sep = ( None, None, None ) liMasOpciones = [ ( "rotacion", _("Auto-rotate board"), Iconos.JS_Rotacion() ), sep, ( "apertura", _("Opening"), Iconos.Apertura() ), sep, ( "posicion", _("Start position"), Iconos.Datos() ), sep, ( "pasteposicion", _("Paste FEN position"), Iconos.Pegar16() ), sep, ( "leerpgn", _("Read PGN"), Iconos.PGN_Importar() ), sep, ( "pastepgn", _("Paste PGN"), Iconos.Pegar16() ), sep, ( "motor", mt, Iconos.Motores() ), sep, ( "voyager", _("Voyager 2").replace("2", "1"), Iconos.Voyager1() ), ] if self.configuracion.voice: liMasOpciones.append(sep) if self.activeVoice: liMasOpciones.append(( "desvoice", _("Deactivate voice"), Iconos.X_Microfono() )) else: liMasOpciones.append(( "actvoice", _("Activate voice"), Iconos.S_Microfono() )) 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 == "apertura": bl, ps = PantallaAperturas.dameApertura(self.pantalla, self.configuracion, self.bloqueApertura, self.posicApertura) if bl: self.bloqueApertura = bl self.posicApertura = ps self.fen = None self.reiniciar() elif resp == "posicion": resp = WinPosition.editarPosicion(self.pantalla, self.configuracion, 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() elif resp == "pasteposicion": texto = QTUtil.traePortapapeles() if texto: cp = ControlPosicion.ControlPosicion() try: cp.leeFen(str(texto)) self.fen = cp.fen() self.bloqueApertura = None self.posicApertura = None self.reiniciar() except: pass elif resp == "leerpgn": unpgn = PantallaPGN.eligePartida(self.pantalla) if unpgn: self.bloqueApertura = None self.posicApertura = None self.fen = unpgn.dic.get("FEN", None) dic = self.creaDic() dic["PARTIDA"] = unpgn.partida.guardaEnTexto() dic["liPGN"] = unpgn.listaCabeceras() dic["FEN"] = self.fen dic["SIBLANCASABAJO"] = unpgn.partida.ultPosicion.siBlancas self.reiniciar(dic) 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 self.bloqueApertura = None self.posicApertura = None self.fen = unpgn.dic.get("FEN", None) dic = self.creaDic() dic["PARTIDA"] = unpgn.partida.guardaEnTexto() dic["liPGN"] = unpgn.listaCabeceras() dic["FEN"] = self.fen dic["SIBLANCASABAJO"] = unpgn.partida.ultPosicion.siBlancas self.reiniciar(dic) elif resp == "motor": self.ponRotulo1("") if self.siJuegaMotor: self.xrival.terminar() self.xrival = None self.siJuegaMotor = False else: self.cambioRival() elif resp == "voyager": ptxt = XVoyager.xVoyager(self.pantalla, self.configuracion, 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) elif resp == "actvoice": self.setVoice( True ) elif resp == "desvoice": self.setVoice( False )
def configurarGS(self): # self.test() # return mt = _("Engine").lower() mt = _X(_("Disable %1"), mt) if self.siJuegaMotor else _X( _("Enable %1"), mt) sep = (None, None, None) liMasOpciones = [ ("rotacion", _("Auto-rotate board"), Iconos.JS_Rotacion()), sep, ("apertura", _("Opening"), Iconos.Apertura()), sep, ("posicion", _("Start position"), Iconos.Datos()), sep, ("pasteposicion", _("Paste FEN position"), Iconos.Pegar16()), sep, ("leerpgn", _("Read PGN"), Iconos.PGN_Importar()), sep, ("pastepgn", _("Paste PGN"), Iconos.Pegar16()), sep, ("motor", mt, Iconos.Motores()), sep, ("voyager", _("Voyager 2").replace("2", "1"), Iconos.Voyager1()), ] if self.configuracion.voice: liMasOpciones.append(sep) if self.activeVoice: liMasOpciones.append( ("desvoice", _("Deactivate voice"), Iconos.X_Microfono())) else: liMasOpciones.append( ("actvoice", _("Activate voice"), Iconos.S_Microfono())) 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 == "apertura": bl, ps = PantallaAperturas.dameApertura(self.pantalla, self.configuracion, self.bloqueApertura, self.posicApertura) if bl: self.bloqueApertura = bl self.posicApertura = ps self.fen = None self.reiniciar() elif resp == "posicion": resp = WinPosition.editarPosicion(self.pantalla, self.configuracion, 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() elif resp == "pasteposicion": texto = QTUtil.traePortapapeles() if texto: cp = ControlPosicion.ControlPosicion() try: cp.leeFen(str(texto)) self.fen = cp.fen() self.bloqueApertura = None self.posicApertura = None self.reiniciar() except: pass elif resp == "leerpgn": unpgn = PantallaPGN.eligePartida(self.pantalla) if unpgn: self.bloqueApertura = None self.posicApertura = None self.fen = unpgn.dic.get("FEN", None) dic = self.creaDic() dic["PARTIDA"] = unpgn.partida.guardaEnTexto() dic["liPGN"] = unpgn.listaCabeceras() dic["FEN"] = self.fen dic["SIBLANCASABAJO"] = unpgn.partida.ultPosicion.siBlancas self.reiniciar(dic) 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 self.bloqueApertura = None self.posicApertura = None self.fen = unpgn.dic.get("FEN", None) dic = self.creaDic() dic["PARTIDA"] = unpgn.partida.guardaEnTexto() dic["liPGN"] = unpgn.listaCabeceras() dic["FEN"] = self.fen dic["SIBLANCASABAJO"] = unpgn.partida.ultPosicion.siBlancas self.reiniciar(dic) elif resp == "motor": self.ponRotulo1("") if self.siJuegaMotor: if self.xrival: self.xrival.terminar() self.xrival = None self.siJuegaMotor = False else: self.cambioRival() elif resp == "voyager": ptxt = XVoyager.xVoyager(self.pantalla, self.configuracion, 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) elif resp == "actvoice": self.setVoice(True) elif resp == "desvoice": self.setVoice(False)