コード例 #1
0
    def train(self):
        menu = QTVarios.LCMenu(self)
        trSSP, trEng = self.train_test()
        if trSSP:
            menu.opcion("tr_sequential", _("Sequential"),
                        Iconos.TrainSequential())
            menu.separador()
            menu.opcion("tr_static", _("Static"), Iconos.TrainStatic())
            menu.separador()
            menu.opcion("tr_positions", _("Positions"),
                        Iconos.TrainPositions())
            menu.separador()
        if trEng:
            menu.opcion("tr_engines", _("With engines"), Iconos.TrainEngines())
            menu.separador()
        submenu = menu.submenu(_("Configuration"), Iconos.Configurar())
        if trEng or trSSP:
            submenu.opcion("update", _("Update current trainings"),
                           Iconos.Reindexar())
            submenu.separador()
        submenu1 = submenu.submenu(_("Create trainings"), Iconos.Modificar())
        submenu1.opcion(
            "new_ssp",
            "%s - %s - %s" % (_("Sequential"), _("Static"), _("Positions")),
            Iconos.TrainSequential())
        submenu1.opcion("new_eng", "With engines", Iconos.TrainEngines())

        resp = menu.lanza()
        if resp is None:
            return
        if resp.startswith("tr_"):
            self.resultado = resp
            self.accept()
        elif resp == "new_ssp":
            self.trainNewSSP()
        elif resp == "new_eng":
            self.trainNewEngines()
        elif resp == "update":
            self.trainUpdateAll()
コード例 #2
0
    def entrenar(self):
        if self.tactica.terminada():
            menu = QTVarios.LCMenu(self)
            menu.opcion("auto", _("Default settings"), Iconos.PuntoAzul())
            menu.separador()
            menu.opcion("manual", _("Manual configuration"), Iconos.PuntoRojo())

            n = self.ghistorico.recno()
            if n >= 0:
                reg = self.liHistorico[n]
                if "PUZZLES" in reg:
                    menu.separador()
                    menu.opcion("copia%d" % n, _("Copy configuration from current register"), Iconos.PuntoVerde())

            resp = menu.lanza()
            if not resp:
                return
            self.resultado = resp
        else:
            self.resultado = "seguir"
        self.guardarVideo()
        self.accept()
コード例 #3
0
    def tg_exportar(self, ext):
        li = self.grid.recnosSeleccionados()
        if not li:
            return None
        menu = QTVarios.LCMenu(self)
        menu.opcion(True, _("All read"), Iconos.PuntoVerde())
        menu.separador()
        menu.opcion(False, "%s [%d]"%(_("Only selected"),len(li)), Iconos.PuntoAzul())
        siTodos = menu.lanza()
        if siTodos is None:
            return None

        if siTodos:
            li = range(self.dbGamesFEN.reccount())

        # Fichero donde a?adir
        path = QTUtil2.salvaFichero(self, _("Export"), self.configuracion.dirSalvados,
                                      _("File") + " %s (*.%s)"%(ext, ext),
                                      False)
        if path:
            if not path.lower().endswith(".%s"%ext):
                path += ".%s"%ext
            carpeta, nomf = os.path.split(path)
            if carpeta != self.configuracion.dirSalvados:
                self.configuracion.dirSalvados = carpeta
                self.configuracion.graba()

            # Grabamos
            modo = "w"
            if Util.existeFichero(path):
                yn = QTUtil2.preguntaCancelar(self, _X(_("The file %1 already exists, what do you want to do?"), path),
                                              si=_("Append"), no=_("Overwrite"))
                if yn is None:
                    return None
                if yn:
                    modo = "a"
            return li, modo, path
        else:
            return None
コード例 #4
0
    def creaTab(self):
        menu = QTVarios.LCMenu(self)
        menu.opcion("book", _("Polyglot book"), Iconos.Libros())
        menu.separador()
        menu.opcion("dbase", _("Database"), Iconos.Database())
        # menu.separador()
        # menu.opcion("tree", _("Tree"), Iconos.Arbol())
        resp = menu.lanza()
        pos = 0
        if resp == "book":
            book = self.seleccionaLibro()
            if book:
                tabbook = TabBook(self, book, self.configuracion)
                self.liTabs.append((resp, tabbook))
                pos = len(self.liTabs)-1
                self.tabs.nuevaTab(tabbook, book.nombre, pos)
                self.tabs.setTabIcon(pos, Iconos.Libros())
                self.setPosicion(self.partida, self.njg, pos)

        # elif resp == "tree":
        #     tabtree = TabTree(self, self.configuracion)
        #     self.liTabs.append(("tree", tabtree))
        #     pos = len(self.liTabs)-1
        #     self.tabs.nuevaTab(tabtree, _("Tree"), pos)
        #     self.tabs.setTabIcon(pos, Iconos.Arbol())
        #     tabtree.bt_update()

        elif resp == "dbase":
            nomfichgames = QTVarios.selectDB(self, self.configuracion, False, True)
            if nomfichgames:
                dbSTAT = DBgames.TreeSTAT(nomfichgames + "_s1")
                tabdb = TabDatabase(self, self.procesador, dbSTAT)
                self.liTabs.append((resp, tabdb))
                pos = len(self.liTabs) - 1
                self.setPosicion(self.partida, self.njg, pos)
                nombre = os.path.basename(nomfichgames)[:-4]
                self.tabs.nuevaTab(tabdb, nombre, pos)
                self.tabs.setTabIcon(pos, Iconos.Database())
        self.tabs.activa(pos)
コード例 #5
0
ファイル: Procesador.py プロジェクト: Tecvoc/lucaschess
    def opciones(self):
        menu = QTVarios.LCMenu(self.pantalla)

        menu.opcion(self.cambiaConfiguracion, _("Configuration"),
                    Iconos.Opciones())
        menu.separador()

        menu1 = menu.submenu(_("Colors"), Iconos.Colores())
        menu1.opcion(self.editaColoresTablero, _("Main board"),
                     Iconos.EditarColores())
        menu1.separador()
        menu1.opcion(self.cambiaColores, _("General"), Iconos.Vista())
        menu.separador()

        menu1 = menu.submenu(_("Sound"), Iconos.SoundTool())
        menu1.opcion(self.sonidos, _("Custom sounds"), Iconos.S_Play())
        menu.separador()
        menu.opcion(self.setPassword, _("Set password"), Iconos.Password())

        if self.configuracion.siMain:
            menu.separador()
            menu.opcion(self.usuarios, _("Users"), Iconos.Usuarios())
            menu.separador()

            menu1 = menu.submenu(_("User data folder"), Iconos.Carpeta())
            menu1.opcion(self.folder_change, _("Change the folder"),
                         Iconos.FolderChange())
            if not Configuracion.isDefaultFolder():
                menu1.separador()
                menu1.opcion(self.folder_default, _("Set the default"),
                             Iconos.Defecto())

        resp = menu.lanza()
        if resp:
            if isinstance(resp, tuple):
                resp[0](resp[1])
            else:
                resp()
コード例 #6
0
ファイル: WBG_InfoMove.py プロジェクト: MarCialR/lucaschess
    def MoverTiempo(self):
        if self.siReloj:
            self.siReloj = False
        else:

            menu = QTVarios.LCMenu(self)
            menu.opcion(
                "previo", "%s: %0.02f" %
                (_("Duration of interval (secs)"), self.intervalo / 1000.0),
                Iconos.MoverTiempo())
            menu.opcion("otro", _("Change interval"), Iconos.Configurar())
            resp = menu.lanza()
            if not resp:
                return

            if resp == "otro":
                liGen = [(None, None)]
                config = FormLayout.Editbox(_("Duration of interval (secs)"),
                                            40,
                                            tipo=float)
                liGen.append((config, self.intervalo / 1000.0))
                resultado = FormLayout.fedit(liGen,
                                             title=_("Interval"),
                                             parent=self,
                                             icon=Iconos.MoverTiempo())
                if resultado is None:
                    return
                accion, liResp = resultado
                tiempo = liResp[0]
                if tiempo > 0.01:
                    self.intervalo = int(tiempo * 1000)
                else:
                    return

            self.siReloj = True
            # if self.siMoves and (self.posHistoria >= len(self.historia) - 1):
            self.MoverInicio()
            self.lanzaReloj()
コード例 #7
0
ファイル: WBG_Games.py プロジェクト: vipmath/lucaschess
    def tg_exportar_PGN(self):
        li = self.grid.recnosSeleccionados()
        if li:
            if len(li) > 1:
                menu = QTVarios.LCMenu(self)
                menu.opcion(True, _("All read"), Iconos.PuntoVerde())
                menu.separador()
                menu.opcion(False, _("Only selected"), Iconos.PuntoAzul())
                resp = menu.lanza()
                if resp is None:
                    return
                siTodos = resp
            else:
                siTodos = True

            if siTodos:
                li = range(self.dbGames.reccount())

            w = PantallaSavePGN.WSaveVarios(self, self.configuracion)
            if w.exec_():
                ws = PantallaSavePGN.FileSavePGN(self, w.dic_result)
                if ws.open():
                    pb = QTUtil2.BarraProgreso1(self,
                                                _("Saving..."),
                                                formato1="%p%")
                    pb.mostrar()
                    pb.ponTotal(len(li))
                    for n, recno in enumerate(li):
                        pb.pon(n)
                        pgn, result = self.dbGames.leePGNRecno(recno)
                        if pb.siCancelado():
                            break
                        if n > 0 or not ws.is_new:
                            ws.write("\n\n")
                        ws.write(pgn)

                    pb.close()
                    ws.close()
コード例 #8
0
 def file(self):
     menu = QTVarios.LCMenu(self.pantalla)
     if self.ultimoFichero:
         menuR = menu.submenu(_("Save"), Iconos.Grabar())
         rpath = os.path.relpath(self.ultimoFichero)
         if rpath.count("..") > 0:
             rpath = self.ultimoFichero
         menuR.opcion("save", "%s: %s" % (_("Save"), rpath),
                      Iconos.Grabar())
         menuR.separador()
         menuR.opcion("saveas", _("Save as"), Iconos.GrabarComo())
     else:
         menu.opcion("save", _("Save"), Iconos.Grabar())
     menu.separador()
     menu.opcion("new", _("New"), Iconos.TutorialesCrear())
     menu.separador()
     menu.opcion("open", _("Open"), Iconos.Recuperar())
     menu.separador()
     li = self.listaHistorico()
     if li:
         menu.separador()
         menuR = menu.submenu(_("Reopen"), Iconos.Historial())
         for path in li:
             menuR.opcion("reopen_%s" % path, path, Iconos.PuntoNaranja())
             menuR.separador()
     resp = menu.lanza()
     if resp is None:
         return
     if resp == "open":
         self.recuperarPKS()
     elif resp == "new":
         self.nuevo()
     elif resp.startswith("reopen_"):
         return self.leeFichero(resp[7:])
     elif resp == "save":
         self.grabar()
     elif resp == "saveas":
         self.grabarComo()
コード例 #9
0
ファイル: RunKibitzer.py プロジェクト: MarCialR/lucaschess
 def confTablero(self):
     self.pause()
     menu = QTVarios.LCMenu(self)
     if self.siShowTablero:
         menu.opcion("hide", _("Hide"), Iconos.PuntoNaranja())
     else:
         menu.opcion("show", _("Show"), Iconos.PuntoNaranja())
     menu.separador()
     menu1 = menu.submenu(_("Arrows"), Iconos.PuntoNegro())
     for x in range(1, 31):
         menu1.opcion(x, str(x), Iconos.PuntoVerde(), siDeshabilitado=x == self.nArrows)
     resp = menu.lanza()
     if resp:
         if resp == "hide":
             self.siShowTablero = False
             self.tablero.hide()
         elif resp == "show":
             self.siShowTablero = True
             self.tablero.show()
         else:
             self.nArrows = resp
         self.guardarVideo()
     self.play()
コード例 #10
0
ファイル: Trainings.py プロジェクト: gamaBHC/lucaschessR
    def creaMenu(self):
        dicMenu = {}
        menu = QTVarios.LCMenu(self.parent)

        talpha = Controles.TipoLetra("Chess Alpha 2", self.configuration.x_menu_points + 4)

        def xopcion(menu, key, texto, icono, is_disabled=False):
            if "KP" in texto:
                k2 = texto.index("K", 2)
                texto = texto[:k2] + texto[k2:].lower()
                menu.opcion(key, texto, icono, is_disabled, tipoLetra=talpha)
            else:
                menu.opcion(key, texto, icono, is_disabled)
            dicMenu[key] = (self.menu_run, texto, icono, is_disabled)

        self.create_menu_basic(menu, xopcion)
        self.create_menu_tactics(menu, xopcion)
        self.create_menu_games(menu, xopcion)
        self.create_menu_openings(menu, xopcion)
        self.create_menu_endings(menu, xopcion)
        self.create_menu_long(menu, xopcion)

        return menu, dicMenu
コード例 #11
0
    def tg_file(self):
        menu = QTVarios.LCMenu(self)

        menu.opcion(self.tg_createDB, _("Create a new database"), Iconos.NuevaDB())
        menu.separador()
        menu.opcion(self.tg_change, _("Open another database"), Iconos.DatabaseC())
        menu.separador()

        submenu = menu.submenu(_("Import from"), Iconos.DatabaseCNew())
        submenu.opcion(self.tg_importar_PGN, _("A PGN file"), Iconos.FichPGN())
        submenu.separador()
        submenu.opcion(self.tg_importar_DB, _("Other database"), Iconos.DatabaseC())
        menu.separador()

        submenu = menu.submenu(_("Export to"), Iconos.DatabaseMas())
        submenu.opcion(self.tg_exportar_PGN, _("A PGN file"), Iconos.FichPGN())
        submenu.separador()
        submenu.opcion(self.tg_exportar_DB, _("Other database"), Iconos.DatabaseC())
        menu.separador()

        resp = menu.lanza()
        if resp:
            resp()
コード例 #12
0
ファイル: POLines.py プロジェクト: vipmath/lucaschess
 def train(self):
     if self.train_test():
         menu = QTVarios.LCMenu(self)
         menu.opcion("tr_sequential", _("Sequential"), Iconos.TrainSequential())
         menu.separador()
         menu.opcion("tr_static", _("Static"), Iconos.TrainStatic())
         menu.separador()
         menu.opcion("tr_positions", _("Positions"), Iconos.TrainPositions())
         menu.separador()
         submenu = menu.submenu(_("Configuration"), Iconos.Configurar())
         submenu.opcion("update", _("Update current trainings"), Iconos.Reindexar())
         submenu.separador()
         submenu.opcion("new", _("Re-create all trainings"), Iconos.Modificar())
         resp = menu.lanza()
         if resp is None:
             return
         if resp.startswith("tr_"):
             self.resultado = resp
             self.accept()
         elif resp == "new":
             self.trainNew()
         elif resp == "update":
             self.trainUpdate()
コード例 #13
0
    def recuperar(self):
        menu = QTVarios.LCMenu(self.pantalla)

        li = self.listaHistorico()

        menu.opcion("open", _("File") + " ...", Iconos.Recuperar())
        menu.separador()
        menu.opcion("new", _("New"), Iconos.TutorialesCrear())

        if li:
            menu.separador()
            menuR = menu.submenu(_("Reopen"), Iconos.Historial())
            for path in li:
                menuR.opcion("r_%s" % path, path, Iconos.PuntoNaranja())
                menuR.separador()

        resp = menu.lanza()
        if resp:
            if resp == "open":
                return self.recuperarPKS()
            if resp == "new":
                return self.nuevo()
            return self.leeFichero(resp[2:])
コード例 #14
0
    def config(self):
        menu = QTVarios.LCMenu(self)
        if self.one_line:
            menu.opcion("change", _("Change options and create new training"), Iconos.TOLchange())
            menu.separador()
        smenu = menu.submenu(_("What to do after solving"), Iconos.Tacticas())
        go_fast = self.tol.go_fast
        dico = {True: Iconos.Aceptar(), False: Iconos.PuntoAmarillo()}
        smenu.opcion("t_False", _("Stop"), dico[go_fast == False])
        smenu.opcion("t_True", _("Jump to the next"), dico[go_fast == True])
        smenu.opcion("t_None", _("Jump to the next from level 2"), dico[go_fast is None])
        menu.separador()
        menu.opcion("remove", _("Remove all results of all levels"), Iconos.Cancelar())

        resp = menu.lanza()
        if resp:
            if resp.startswith("t_"):
                self.tol.go_fast = eval(resp[2:])
                TurnOnLights.write_tol(self.tol)
            elif resp == "remove":
                self.rebuild()
            elif resp == "change":
                self.cambiar_one_line()
コード例 #15
0
 def colors(self):
     menu = QTVarios.LCMenu(self)
     d = {
         "0": Iconos.Gris32(),
         "1": Iconos.Amarillo32(),
         "2": Iconos.Naranja32(),
         "3": Iconos.Verde32(),
         "4": Iconos.Azul32(),
         "5": Iconos.Magenta32(),
         "6": Iconos.Rojo32(),
         "7": Iconos.Light32()
     }
     num, ultimo = TurnOnLights.numColorMinimum(self.tol)
     snum = str(num)
     thinkMode = self.tol.is_calculation_mode()
     for txt, key, secs, secsThink in TurnOnLights.QUALIFICATIONS:
         rotulo = "%s < %0.2f\"" % (_F(txt),
                                    secsThink if thinkMode else secs)
         if key == snum and not ultimo:
             rotulo += " = %s" % _("Minimum to access next level")
         menu.opcion(None, rotulo, d[key])
         menu.separador()
     menu.lanza()
コード例 #16
0
 def gmarcar(self):
     if len(self.guion):
         menu = QTVarios.LCMenu(self)
         f = Controles.TipoLetra(puntos=8, peso=75)
         menu.ponFuente(f)
         menu.opcion(1, _("All"), Iconos.PuntoVerde())
         menu.opcion(2, _("None"), Iconos.PuntoNaranja())
         resp = menu.lanza()
         if resp:
             siTodos = resp == 1
             for n in range(len(self.guion)):
                 tarea = self.guion.tarea(n)
                 if tarea.tp() in (TabVisual.TP_TEXTO, TabVisual.TP_ACTION,
                                   TabVisual.TP_CONFIGURATION):
                     continue
                 siMarcado = tarea.marcado()
                 if siTodos:
                     if not siMarcado:
                         self.gridPonValor(None, n, None, True)
                 else:
                     if siMarcado:
                         self.gridPonValor(None, n, None, False)
             self.refresh_guion()
コード例 #17
0
 def new(self):
     menu = QTVarios.LCMenu(self)
     if not QTVarios.lista_db(self.configuration, True).is_empty():
         menu.opcion("db", _("Game in a database"), Iconos.Database())
         menu.separador()
     menu.opcion("pgn", _("Game in a pgn"), Iconos.Filtrar())
     menu.separador()
     resp = menu.lanza()
     game = None
     if resp == "pgn":
         game = self.procesador.select_1_pgn(self)
     elif resp == "db":
         db = QTVarios.select_db(self, self.configuration, True, False)
         if db:
             w = WindowDatabase.WBDatabase(self, self.procesador, db, False, True)
             resp = w.exec_()
             if resp:
                 game = w.game
     if game and len(game) > 0:
         reg = {"GAME": game.save()}
         self.db.append(reg)
         self.grid.refresh()
         self.grid.gotop()
コード例 #18
0
    def lanzaVariantes(self):

        icoNegro = Iconos.PuntoNegro()
        icoVerde = Iconos.PuntoVerde()
        icoSeguimos = Iconos.PuntoAzul()

        menu = QTVarios.LCMenu(self.pantalla)
        for n, (tit, txtp, siBlancas) in enumerate(self.liVariantes):
            menu.opcion(n, tit, icoVerde if siBlancas else icoNegro)
            menu.separador()

        if not self.siTerminada() and not self.siSeguirJugando:
            menu.opcion(-1, _("Do you want to continue playing?"), icoSeguimos)

        resp = menu.lanza()
        if resp is not None:
            if resp == -1:
                self.siSeguirJugando = True
            else:
                self.partida.recuperaDeTexto(self.liVariantes[resp][1])
            self.estado = kJugando
            self.ponteAlFinal()
            self.siguienteJugada()
コード例 #19
0
    def menuLibros(self):
        menu = QTVarios.LCMenu(self)
        nBooks = len(self.listaLibros.lista)

        for book in self.listaLibros.lista:
            ico = Iconos.PuntoVerde() if book == self.book else Iconos.PuntoNaranja()
            menu.opcion(("x", book), book.nombre, ico)

        menu.separador()
        menu.opcion(("n", None), _("Install new book"), Iconos.Nuevo())
        if nBooks > 1:
            menu.separador()
            menub = menu.submenu(_("Remove a book from the list"), Iconos.Delete())
            for book in self.listaLibros.lista:
                if not book.pordefecto:
                    menub.opcion(("b", book), book.nombre, Iconos.Delete())
            menu.separador()
            menu.opcion(("1", None), _("Find Next") + " <F3>", Iconos.Buscar())

        resp = menu.lanza()
        if resp:
            orden, book = resp
            if orden == "x":
                self.cambiaLibro(book)
            elif orden == "n":
                fbin = QTUtil2.leeFichero(self, self.listaLibros.path, "bin", titulo=_("Polyglot book"))
                if fbin:
                    self.listaLibros.path = os.path.dirname(fbin)
                    nombre = os.path.basename(fbin)[:-4]
                    book = Books.Libro("P", nombre, fbin, True)
                    self.listaLibros.nuevo(book)
                    self.cambiaLibro(book)
            elif orden == "b":
                self.listaLibros.borra(book)
                self.listaLibros.guardaVar(self.fvar)
            elif orden == "1":
                self.buscaSiguiente()
コード例 #20
0
    def tg_file(self):
        menu = QTVarios.LCMenu(self)
        lista = QTVarios.listaDB(self.configuracion, False)
        if lista:
            smenu = menu.submenu( _("Open another database"), Iconos.DatabaseC())
            rp = QTVarios.rondoPuntos()
            for fich in lista:
                smenu.opcion(os.path.join(self.configuracion.carpetaGames, fich), _F(fich[:-4]), rp.otro())
                smenu.separador()
            menu.separador()

        menu.opcion(self.tg_create,_("Create a new database"), Iconos.NuevaDB())
        menu.separador()

        submenu = menu.submenu(_("Import from"), Iconos.DatabaseCNew())
        submenu.opcion(self.tg_importar_PGN, _("A PGN file"), Iconos.FichPGN())
        submenu.separador()
        submenu.opcion(self.tg_importar_DB, _("Other database"), Iconos.DatabaseC())
        submenu.separador()
        submenu.opcion(self.tg_importar_pks, _("A PKS file"), Iconos.JuegaSolo())
        menu.separador()

        submenu = menu.submenu(_("Export to"), Iconos.DatabaseMas())
        submenu.opcion(self.tg_exportar_PGN, _("A PGN file"), Iconos.FichPGN())
        submenu.separador()
        submenu.opcion(self.tg_exportar_DB, _("Other database"), Iconos.DatabaseC())
        menu.separador()

        menu.opcion(self.tg_pack, _("Pack database"), Iconos.Pack())
        menu.separador()

        resp = menu.lanza()
        if resp:
            if type(resp) == str:
                self.changeDBgames(resp)
            else:
                resp()
コード例 #21
0
    def tg_file(self):
        menu = QTVarios.LCMenu(self)

        menu.opcion(self.tg_createDB, _("Create a new database"),
                    Iconos.NuevaDB())
        menu.separador()
        menu.opcion(self.tg_change, _("Open another database"),
                    Iconos.DatabaseC())
        menu.separador()

        submenu = menu.submenu(_("Import from"), Iconos.DatabaseCNew())
        submenu.opcion(self.tg_importar_PGN, _("A PGN file"), Iconos.FichPGN())
        submenu.separador()
        submenu.opcion(self.tg_importar_DB, _("Other database"),
                       Iconos.DatabaseC())
        menu.separador()

        submenu = menu.submenu(_("Export to"), Iconos.DatabaseMas())
        submenu.opcion(self.tg_exportar_PGN, _("A PGN file"), Iconos.FichPGN())
        submenu.separador()
        submenu.opcion(self.tg_exportar_DB, _("Other database"),
                       Iconos.DatabaseC())
        menu.separador()

        submenu = menu.submenu(_("Utilities"), Iconos.Utilidades())
        ico = Iconos.PuntoAzul()
        icoT = Iconos.Tacticas()
        menu1 = submenu.submenu(_("Polyglot book"), ico)
        menu1.opcion(self.tw_uti_pcreate, _("Create a new book"), ico)
        menu1.separador()
        menu1.opcion(self.tw_uti_pmerge, _("Merge two books in one"), ico)
        submenu.separador()
        submenu.opcion(self.tw_uti_tactic, _("Create tactics training"), icoT)

        resp = menu.lanza()
        if resp:
            resp()
コード例 #22
0
ファイル: PantallaBooks.py プロジェクト: garyliu33/lucaschess
def eligeJugadaBooks(pantalla, liJugadas, siBlancas):
    pantalla.cursorFueraTablero()
    menu = QTVarios.LCMenu(pantalla)
    f = Controles.TipoLetra(nombre="Courier New", puntos=10)
    menu.ponFuente(f)

    titulo = _("White") if siBlancas else _("Black")
    icono = Iconos.Carpeta()

    menu.opcion(None, titulo, icono)
    menu.separador()

    icono = Iconos.PuntoNaranja() if siBlancas else Iconos.PuntoNegro()

    for desde, hasta, coronacion, pgn, peso in liJugadas:
        menu.opcion((desde, hasta, coronacion), pgn, icono)
        menu.separador()

    resp = menu.lanza()
    if resp:
        return resp
    else:
        desde, hasta, coronacion, pgn, peso = liJugadas[0]
        return (desde, hasta, coronacion)
コード例 #23
0
    def cambia_tema(self, tema, si_left):
        if si_left:
            self.pon_tema(tema)
            self.current_theme = tema

        else:
            if self.own_theme_selected:
                menu = QTVarios.LCMenu(self)
                menu.opcion("rename", _("Change the name/section"), Iconos.Rename())
                menu.separador()
                menu.opcion("delete", _("Remove"), Iconos.Delete())
                menu.separador()
                resp = menu.lanza()
                if resp == "rename":
                    self.rename_theme(tema)
                elif resp == "delete":
                    name = tema.get("NOMBRE", "")
                    seccion = tema.get("SECCION", "")
                    if seccion:
                        name += "/" + seccion
                    if QTUtil2.pregunta(self, "Are you sure you want to remove %s?" % name):
                        self.li_themes.remove(tema)
                        self.save_own_themes()
                        self.ponSecciones()
コード例 #24
0
ファイル: WindowGM.py プロジェクト: gamaBHC/lucaschessR
    def preferred_openings(self):
        if len(self.li_preferred_openings) == 0:
            return
        menu = QTVarios.LCMenu(self)
        menu.setToolTip(_("To choose: <b>left button</b> <br>To erase: <b>right button</b>"))
        f = Controles.TipoLetra(puntos=8, peso=75)
        menu.ponFuente(f)
        n_pos = 0
        for nli, bloque in enumerate(self.li_preferred_openings):
            if type(bloque) == tuple:  # compatibilidad con versiones anteriores
                bloque = bloque[0]
                self.li_preferred_openings[nli] = bloque
            menu.opcion(bloque, bloque.trNombre, Iconos.PuntoVerde())
            n_pos += 1

        resp = menu.lanza()
        if resp:
            if menu.siIzq:
                self.opening_block = resp
                self.aperturaMuestra()
            elif menu.siDer:
                opening_block = resp
                if QTUtil2.pregunta(self, _X(_("Do you want to delete the opening %1 from the list of favourite openings?"), opening_block.trNombre)):
                    del self.li_preferred_openings[n_pos]
コード例 #25
0
    def informacion(self):

        menu = QTVarios.LCMenu(self.pantalla)
        f = Controles.TipoLetra(puntos=10, peso=75)
        menu.ponFuente(f)

        siOpening = False
        for clave, valor in self.liPGN:
            siFecha = clave.upper().endswith("DATE")
            trad = TrListas.pgnLabel(clave)
            if trad != clave:
                clave = trad
                # else:
                # clave = clave[0].upper()+clave[1:].lower()
            if siFecha:
                valor = valor.replace(".??", "")
            menu.opcion(clave, "%s : %s" % (clave, valor), Iconos.PuntoAzul())
            if clave.upper() == "OPENING":
                siOpening = True

        if not siOpening:
            apertura = self.partida.apertura
            if apertura:
                menu.separador()
                nom = apertura.trNombre
                ape = _("Opening")
                rotulo = nom if ape.upper() in nom.upper() else ("%s : %s" %
                                                                 (ape, nom))
                menu.opcion(clave, rotulo, Iconos.PuntoNaranja())

        menu.separador()
        menu.opcion("pgn", _("Edit PGN labels"), Iconos.PGN())

        resp = menu.lanza()
        if resp:
            self.editarEtiquetasPGN()
コード例 #26
0
ファイル: POLines.py プロジェクト: deevrek/lucaschess
    def changeFolder(self):
        nof = _("New opening folder")
        base = self.configuracion.folderBaseOpenings
        li = [
            x for x in os.listdir(base) if os.path.isdir(os.path.join(base, x))
        ]
        menu = QTVarios.LCMenu(self)
        rondo = QTVarios.rondoPuntos()
        menu.opcion("", _("Home folder"), Iconos.Home())
        menu.separador()
        for x in li:
            menu.opcion(x, x, rondo.otro())
        menu.separador()
        menu.opcion(":n", nof, Iconos.Nuevo())
        if VarGen.isWindows:
            menu.separador()
            menu.opcion(":m", _("Direct maintenance"), Iconos.Configurar())

        resp = menu.lanza()
        if resp is not None:
            if resp == ":m":
                os.startfile(base)
                return

            elif resp == ":n":
                name = ""
                error = ""
                while True:
                    liGen = [FormLayout.separador]
                    liGen.append((nof + ":", name))
                    if error:
                        liGen.append(FormLayout.separador)
                        liGen.append((None, error))

                    resultado = FormLayout.fedit(liGen,
                                                 title=nof,
                                                 parent=self,
                                                 icon=Iconos.OpeningLines(),
                                                 anchoMinimo=460)
                    if resultado:
                        accion, liResp = resultado
                        name = liResp[0].strip()
                        if name:
                            path = os.path.join(base, name)
                            try:
                                os.mkdir(path)
                            except:
                                error = _("Unable to create this folder")
                                continue
                            if not os.path.isdir(path):
                                continue
                            break
                    else:
                        return
            else:
                path = os.path.join(base, resp)

            path = os.path.relpath(path)
            self.configuracion.folderOpenings = path
            self.configuracion.graba()
            self.listaOpenings = OpeningLines.ListaOpenings(self.configuracion)
            self.glista.refresh()
            self.glista.gotop()
            if len(self.listaOpenings) == 0:
                self.wtrain.setVisible(False)
            self.setWindowTitle(self.getTitulo())
コード例 #27
0
ファイル: POLines.py プロジェクト: deevrek/lucaschess
    def borrar(self):
        tam_dbop = len(self.dbop)
        if tam_dbop == 0:
            return
        current = self.glines.recno() // 2
        li = []
        if 0 <= current < tam_dbop:
            li.append([
                "current",
                _("Remove line %d") % (current + 1, ),
                Iconos.Mover()
            ])
        if tam_dbop > 1:
            li.append(
                ["lines",
                 _("Remove a list of lines"),
                 Iconos.MoverLibre()])

        if len(li) > 0:
            menu = QTVarios.LCMenu(self)
            for key, title, ico in li:
                menu.opcion(key, title, ico)
                menu.separador()
            resp = menu.lanza()

            if resp == "current":
                del self.dbop[current]
                self.goto_inilinea()

            else:
                liGen = [FormLayout.separador]
                config = FormLayout.Editbox(
                    "<div align=\"right\">" + _("Lines") + "<br>" +
                    _("By example:") + " -5,8-12,14,19-",
                    rx="[0-9,\-,\,]*")
                liGen.append((config, ""))
                resultado = FormLayout.fedit(liGen,
                                             title=_("Remove a list of lines"),
                                             parent=self,
                                             anchoMinimo=460,
                                             icon=Iconos.OpeningLines())
                if resultado:
                    accion, liResp = resultado
                    clista = liResp[0]
                    if clista:
                        ln = Util.ListaNumerosImpresion(clista)
                        li = ln.selected(range(1, tam_dbop + 1))
                        sli = []
                        cad = ""
                        for num in li:
                            if cad:
                                cad += "," + str(num)
                            else:
                                cad = str(num)
                            if len(cad) > 80:
                                sli.append(cad)
                                cad = ""
                        if cad:
                            sli.append(cad)
                        cli = "\n".join(sli)
                        if QTUtil2.pregunta(
                                self,
                                _("Do you want to remove the next lines?") +
                                "\n\n" + cli):
                            li.sort(reverse=True)
                            um = QTUtil2.unMomento(self, _("Working..."))
                            for num in li:
                                del self.dbop[num - 1]
                            self.glines.refresh()
                            self.goto_inilinea()
                            um.final()
コード例 #28
0
    def menu(self, parent):
        menu = QTVarios.LCMenu(parent)

        rp = QTVarios.rondoPuntos(False)
        rc = QTVarios.rondoColores(False)

        submenu = menu.submenu(_("Internal engines"), self.dicIconos[INTERNO])

        li_m_i = sorted(self.liMotoresInternos, key=lambda x: x.elo)

        def haz(from_sq, to_sq, rotulo):
            smn = None
            for cm in li_m_i:
                elo = cm.elo
                if from_sq < elo <= to_sq:
                    if smn is None:
                        smn = submenu.submenu(rotulo, rc.otro())
                    clave = INTERNO, cm
                    texto = cm.name
                    icono = rp.otro()
                    smn.opcion(clave, "%s (%d)" % (texto, elo), icono)

        haz(0, 1500, _("Up to 1500"))
        haz(1500, 2000, "1500 - 2000")
        haz(2000, 2500, "2000 - 2500")
        haz(2500, 2750, "2500 - 2750")
        haz(2750, 3000, "2750 - 3000")
        haz(3000, 3500, _("Above 3000"))

        menu.separador()
        submenu = menu.submenu(_("External engines"), self.dicIconos[EXTERNO])
        for cm in self.liMotoresExternos:
            clave = EXTERNO, cm
            texto = cm.clave
            icono = rp.otro()
            submenu.opcion(clave, texto, icono)
        submenu.separador()
        clave = EXTERNO, None
        texto = _("Edition")
        icono = Iconos.Mas()
        submenu.opcion(clave, texto, icono)

        menu.separador()
        submenu = menu.submenu(_("GM engines"), self.dicIconos[MICGM])
        for cm in self.liMotoresGM:
            icono = rp.otro()
            clave = MICGM, cm
            texto = Util.primera_mayuscula(cm.name)
            submenu.opcion(clave, texto, icono)
            submenu.separador()

        menu.separador()
        menu.opcion((MICPER, None), _("Tourney engines"), self.dicIconos[MICPER])

        menu.separador()
        submenu = menu.submenu(_("Engines with fixed elo"), self.dicIconos[FIXED])
        li = sorted(self.dict_engines_fixed_elo.keys())
        for elo in li:
            icono = rp.otro()
            submenuElo = submenu.submenu(str(elo), icono)
            lien = self.dict_engines_fixed_elo[elo]
            lien.sort(key=lambda x: x.name)
            for cm in lien:
                clave = FIXED, cm
                texto = cm.name
                submenuElo.opcion(clave, texto, icono)
            submenuElo.separador()

        menu.separador()
        menu1 = menu.submenu(_("Opponents for young players"), Iconos.RivalesMP())
        for cm in self.liIrina:
            menu1.opcion((IRINA, cm), cm.name, cm.icono)

        menu.separador()

        li_cortes = []
        n = 19
        pos = -1
        for cm in self.liElo:
            if n == 19:
                li_cortes.append([])
                pos += 1
                n = 0
            li_cortes[pos].append(cm)
            n += 1
        menu1 = menu.submenu(_("Lucas-Elo"), Iconos.Elo())
        for li_corte in li_cortes:
            from_sq = li_corte[0].elo
            to_sq = li_corte[-1].elo
            smenu = menu1.submenu("%d - %d" % (from_sq, to_sq), rc.otro())
            for cm in li_corte:
                smenu.opcion((ELO, cm), cm.name, rp.otro())

        return menu.lanza()
コード例 #29
0
    def player_has_moved(self, from_sq, to_sq, promotion=""):
        if not self.human_is_playing:
            return self.check_premove(from_sq, to_sq)
        move = self.check_human_move(from_sq, to_sq, promotion,
                                     not self.is_tutor_enabled)
        if not move:
            return False

        movimiento = move.movimiento()

        siAnalisis = False

        is_selected = False

        fen_base = self.last_fen()

        if self.bookR and self.bookMandatory:
            listaJugadas = self.bookR.get_list_moves(fen_base)
            if listaJugadas:
                li = []
                for apdesde, aphasta, appromotion, nada, nada1 in listaJugadas:
                    mx = apdesde + aphasta + appromotion
                    if mx.strip().lower() == movimiento:
                        is_selected = True
                        break
                    li.append((apdesde, aphasta, False))
                if not is_selected:
                    self.board.ponFlechasTmp(li)
                    self.sigueHumano()
                    return False

        if not is_selected and self.aperturaObl:
            if self.aperturaObl.check_human(fen_base, from_sq, to_sq):
                is_selected = True
            else:
                apdesde, aphasta = self.aperturaObl.from_to_active(fen_base)
                if apdesde is None:
                    self.aperturaObl = None
                else:
                    self.board.ponFlechasTmp(((apdesde, aphasta, False), ))
                    self.sigueHumano()
                    return False

        if not is_selected and self.aperturaStd:
            if self.aperturaStd.check_human(fen_base, from_sq, to_sq):
                is_selected = True
            else:
                if not self.aperturaStd.is_active(fen_base):
                    self.aperturaStd = None

        is_mate = move.is_mate
        self.analizaFinal(is_mate)  # tiene que acabar siempre
        if not is_mate and not is_selected and self.is_tutor_enabled:
            if not self.tutor_book.si_esta(fen_base, movimiento):
                rmUser, n = self.mrmTutor.buscaRM(movimiento)
                if not rmUser:
                    self.main_window.pensando_tutor(True)
                    rmUser = self.xtutor.valora(self.game.last_position,
                                                from_sq, to_sq, move.promotion)
                    self.main_window.pensando_tutor(False)
                    if not rmUser:
                        self.sigueHumanoAnalisis()
                        return False
                    self.mrmTutor.agregaRM(rmUser)
                siAnalisis = True
                pointsBest, pointsUser = self.mrmTutor.difPointsBest(
                    movimiento)
                self.setSummary("POINTSBEST", pointsBest)
                self.setSummary("POINTSUSER", pointsUser)
                difpts = self.configuration.x_tutor_difpoints
                difporc = self.configuration.x_tutor_difporc
                if self.mrmTutor.mejorRMQue(rmUser, difpts, difporc):
                    if not move.is_mate:
                        si_tutor = True
                        if self.chance:
                            num = self.mrmTutor.numMejorMovQue(movimiento)
                            if num:
                                rmTutor = self.mrmTutor.rmBest()
                                menu = QTVarios.LCMenu(self.main_window)
                                menu.opcion("None",
                                            _("There are %d best moves") % num,
                                            Iconos.Motor())
                                menu.separador()
                                resp = rmTutor.abrTextoBase()
                                if not resp:
                                    resp = _("Mate")
                                menu.opcion(
                                    "tutor",
                                    "&1. %s (%s)" % (_("Show tutor"), resp),
                                    Iconos.Tutor(),
                                )
                                menu.separador()
                                menu.opcion("try", "&2. %s" % _("Try again"),
                                            Iconos.Atras())
                                menu.separador()
                                menu.opcion(
                                    "user",
                                    "&3. %s (%s)" % (_("Select my move"),
                                                     rmUser.abrTextoBase()),
                                    Iconos.Player(),
                                )
                                self.main_window.cursorFueraBoard()
                                resp = menu.lanza()
                                if resp == "try":
                                    self.sigueHumanoAnalisis()
                                    return False
                                elif resp == "user":
                                    si_tutor = False
                                elif resp != "tutor":
                                    self.sigueHumanoAnalisis()
                                    return False
                        if si_tutor:
                            tutor = Tutor.Tutor(self, move, from_sq, to_sq,
                                                False)

                            if self.aperturaStd:
                                liApPosibles = self.listaOpeningsStd.list_possible_openings(
                                    self.game)
                            else:
                                liApPosibles = None

                            if tutor.elegir(self.hints > 0,
                                            liApPosibles=liApPosibles):
                                if self.hints > 0:  # doble entrada a tutor.
                                    self.set_piece_again(from_sq)
                                    self.hints -= 1
                                    self.tutor_con_flechas = self.nArrowsTt > 0 and self.hints > 0
                                    from_sq = tutor.from_sq
                                    to_sq = tutor.to_sq
                                    promotion = tutor.promotion
                                    ok, mens, jgTutor = Move.get_game_move(
                                        self.game, self.game.last_position,
                                        from_sq, to_sq, promotion)
                                    if ok:
                                        move = jgTutor
                                        self.setSummary("SELECTTUTOR", True)
                            if self.configuration.x_save_tutor_variations:
                                tutor.ponVariations(move,
                                                    1 + len(self.game) / 2)

                            del tutor

        self.setSummary("TIMEUSER", self.timekeeper.stop())
        self.reloj_stop(True)

        self.move_the_pieces(move.liMovs)

        if siAnalisis:
            rm, nPos = self.mrmTutor.buscaRM(move.movimiento())
            if rm:
                move.analysis = self.mrmTutor, nPos

        self.add_move(move, True)
        self.error = ""
        self.play_next_move()
        return True
コード例 #30
0
def lanzaGUI(procesador):
    """
    Lanzador del interfaz grafico de la aplicacion.
    """

    # Comprobamos el lenguaje
    app = QtGui.QApplication([])

    liUsuarios = Usuarios.Usuarios().lista
    usuario = None
    if liUsuarios:
        usuario = pideUsuario(liUsuarios)
        if usuario is None:
            return
        user = str(usuario.numero) if usuario.numero else ""
    else:
        user = ""

    activeFolder = Configuracion.activeFolder()
    siPedirLenguaje = not os.path.isdir(activeFolder) or not os.listdir(
        activeFolder)
    procesador.iniciaConUsuario(user)
    configuracion = procesador.configuracion
    if usuario:
        if not configuracion.jugador:
            configuracion.jugador = usuario.nombre
            configuracion.graba()
        elif configuracion.jugador != usuario.nombre:
            for usu in liUsuarios:
                if usu.numero == usuario.numero:
                    usu.nombre = configuracion.jugador
                    Usuarios.Usuarios().guardaLista(liUsuarios)

    # Comprobamos el lenguaje
    if siPedirLenguaje and not configuracion.traductor:
        if user:
            confMain = Configuracion.Configuracion("")
            ori = confMain.ficheroMExternos
            confMain.lee()
            confMain.limpia(usuario.nombre)
            confMain.ponCarpetas(user)
            confMain.graba()
            procesador.configuracion = confMain

            Util.copiaFichero(ori, confMain.carpeta)

        else:
            li = configuracion.listaTraducciones()
            menu = QTVarios.LCMenu(None)

            nico = QTVarios.rondoPuntos()
            for k, nombre, porc, author in li:
                rotulo = nombre
                if porc != "100":
                    rotulo += " (%s%%)" % porc
                menu.opcion(k, nombre, nico.otro())
            resp = menu.lanza()
            if resp:
                configuracion.traductor = resp
                configuracion.graba()

    # Estilo
    app.setStyle(QtGui.QStyleFactory.create(configuracion.estilo))

    if configuracion.palette:
        qpalette = QtGui.QPalette()
        palette = configuracion.palette

        def cl(tipo):
            return QtGui.QColor(palette[tipo])

        qpalette.setColor(QtGui.QPalette.Window, cl("Window"))
        qpalette.setColor(QtGui.QPalette.WindowText, cl("WindowText"))

        qpalette.setColor(QtGui.QPalette.Base, cl("Base"))
        qpalette.setColor(QtGui.QPalette.Text, cl("Text"))
        qpalette.setColor(QtGui.QPalette.AlternateBase, cl("AlternateBase"))

        qpalette.setColor(QtGui.QPalette.ToolTipBase, cl("ToolTipBase"))
        qpalette.setColor(QtGui.QPalette.ToolTipText, cl("ToolTipText"))

        qpalette.setColor(QtGui.QPalette.Button, cl("Button"))
        qpalette.setColor(QtGui.QPalette.ButtonText, cl("ButtonText"))
        qpalette.setColor(QtGui.QPalette.BrightText, cl("BrightText"))

        qpalette.setColor(QtGui.QPalette.Link, cl("Link"))

    else:
        qpalette = QtGui.QApplication.style().standardPalette()

    app.setPalette(qpalette)

    app.setEffectEnabled(QtCore.Qt.UI_AnimateMenu)

    # QtGui.QFontDatabase.addApplicationFont('IntFiles/ChessAlpha2.ttf') # TODO

    if configuracion.familia:
        font = Controles.TipoLetra(configuracion.familia)
        app.setFont(font)

    VarGen.gc = QTUtil.GarbageCollector()

    # Lanzamos la pantalla
    procesador.iniciarGUI()

    resp = app.exec_()

    return resp