Example #1
0
    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)
Example #3
0
 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()
Example #4
0
 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()
Example #5
0
    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()
Example #6
0
 def posicionEditar(self):
     resp = WinPosition.editarPosicion(self, self.configuracion, self.fen)
     if resp is not None:
         self.fen = resp
         self.muestraPosicion()
Example #7
0
 def posicionEditar(self):
     resp = WinPosition.editarPosicion(self, self.configuracion, self.fen)
     if resp is not None:
         self.fen = resp
         self.muestraPosicion()
Example #8
0
    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()
Example #9
0
    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 )
Example #10
0
    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)