def dbFlechas(self): if self._dbFlechas is None: self._dbFlechas = Util.DicSQL(self._fichero, tabla="Flechas") return self._dbFlechas
def dbFEN(self): if self._dbFEN is None: self._dbFEN = Util.DicSQL(self._fichero, tabla="FEN") return self._dbFEN
def dbConfig(self): if self._dbConfig is None: self._dbConfig = Util.DicSQL(self._fichero, tabla="Config") return self._dbConfig
def resetConfTablero(self, key, tamDef): db = Util.DicSQL(self.ficheroConfTableros) del db[key] db.close() self.leeConfTableros() return self.confTablero(key, tamDef)
def __init__(self, procesador): self.configuracion = procesador.configuracion self.procesador = procesador self.dbHisto = Util.DicSQL(self.configuracion.ficheroGMhisto) self.bloqueApertura = None self.liAperturasFavoritas = [] wParent = procesador.pantalla titulo = _("Play like a grandmaster") icono = Iconos.GranMaestro() extparam = "gm" QTVarios.WDialogo.__init__(self, wParent, titulo, icono, extparam) flb = Controles.TipoLetra(puntos=10) # Toolbar liAcciones = [(_("Accept"), Iconos.Aceptar(), self.aceptar), None, (_("Cancel"), Iconos.Cancelar(), self.cancelar), None, (_("One game"), Iconos.Uno(), self.unJuego), None, (_("Import"), Iconos.ImportarGM(), self.importar)] tb = Controles.TBrutina(self, liAcciones) # Grandes maestros self.liGM = GM.listaGM() li = [(x[0], x[1]) for x in self.liGM] li.insert(0, ("-", None)) self.cbGM = QTUtil2.comboBoxLB( self, li, li[0][1] if len(self.liGM) == 0 else li[1][1]) self.cbGM.capturaCambiado(self.compruebaGM) hbox = Colocacion.H().relleno().control(self.cbGM).relleno() gbGM = Controles.GB(self, _("Choose a grandmaster"), hbox).ponFuente(flb) # Personales self.liPersonal = GM.listaGMpersonal( self.procesador.configuracion.dirPersonalTraining) if self.liPersonal: li = [(x[0], x[1]) for x in self.liPersonal] li.insert(0, ("-", None)) self.cbPersonal = QTUtil2.comboBoxLB(self, li, li[0][1]) self.cbPersonal.capturaCambiado(self.compruebaP) btBorrar = Controles.PB(self, "", self.borrarPersonal, plano=False).ponIcono(Iconos.Borrar(), tamIcon=16) hbox = Colocacion.H().relleno().control( self.cbPersonal).control(btBorrar).relleno() gbPersonal = Controles.GB(self, _("Personal games"), hbox).ponFuente(flb) # Color self.rbBlancas = Controles.RB(self, _("White"), rutina=self.compruebaColor) self.rbBlancas.activa(True) self.rbNegras = Controles.RB(self, _("Black"), rutina=self.compruebaColor) self.rbNegras.activa(False) # Contrario self.chContrario = Controles.CHB( self, _("Choose the opponent's move, when there are multiple possible answers" ), False) # Juez liDepths = [("--", 0)] for x in range(1, 31): liDepths.append((str(x), x)) self.liMotores = self.configuracion.comboMotoresMultiPV10() self.cbJmotor, self.lbJmotor = QTUtil2.comboBoxLB( self, self.liMotores, self.configuracion.tutorInicial, _("Engine")) self.edJtiempo = Controles.ED(self).tipoFloat().ponFloat( 1.0).anchoFijo(50) self.lbJtiempo = Controles.LB2P(self, _("Time in seconds")) self.cbJdepth = Controles.CB(self, liDepths, 0).capturaCambiado(self.cambiadoDepth) self.lbJdepth = Controles.LB2P(self, _("Depth")) self.lbJshow = Controles.LB2P(self, _("Show rating")) self.chbEvals = Controles.CHB(self, _("Show all evaluations"), False) liOptions = [(_("All moves"), None), (_("Moves are different"), True), (_("Never"), False)] self.cbJshow = Controles.CB(self, liOptions, True) self.lbJmultiPV = Controles.LB2P( self, _("Number of moves evaluated by engine(MultiPV)")) li = [(_("Default"), "PD"), (_("Maximum"), "MX")] for x in (1, 3, 5, 10, 15, 20, 30, 40, 50, 75, 100, 150, 200): li.append((str(x), str(x))) self.cbJmultiPV = Controles.CB(self, li, "PD") # Inicial self.edJugInicial, lbInicial = QTUtil2.spinBoxLB( self, 1, 1, 99, etiqueta=_("Initial move"), maxTam=40) # Libros fvar = self.configuracion.ficheroBooks self.listaLibros = Books.ListaLibros() self.listaLibros.recuperaVar(fvar) # # Comprobamos que todos esten accesibles self.listaLibros.comprueba() li = [(x.nombre, x) for x in self.listaLibros.lista] li.insert(0, ("--", None)) self.cbBooks, lbBooks = QTUtil2.comboBoxLB( self, li, None, _("Bypass moves in the book")) # Aperturas self.btApertura = Controles.PB(self, " " * 5 + _("Undetermined") + " " * 5, self.aperturasEditar).ponPlano(False) self.btAperturasFavoritas = Controles.PB( self, "", self.aperturasFavoritas).ponIcono(Iconos.Favoritos()) self.btAperturasQuitar = Controles.PB( self, "", self.aperturasQuitar).ponIcono(Iconos.Motor_No()) hbox = Colocacion.H().control(self.btAperturasQuitar).control( self.btApertura).control(self.btAperturasFavoritas).relleno() gbOpening = Controles.GB(self, _("Opening"), hbox) # gbBasic # # Color hbox = Colocacion.H().relleno().control( self.rbBlancas).espacio(10).control(self.rbNegras).relleno() gbColor = Controles.GB(self, _("Play with"), hbox).ponFuente(flb) # Tiempo ly1 = Colocacion.H().control(self.lbJmotor).control( self.cbJmotor).control(self.lbJshow).control( self.cbJshow).relleno() ly2 = Colocacion.H().control(self.lbJtiempo).control(self.edJtiempo) ly2.control(self.lbJdepth).control(self.cbJdepth).espacio(15).control( self.chbEvals).relleno() ly3 = Colocacion.H().control(self.lbJmultiPV).control( self.cbJmultiPV).relleno() ly = Colocacion.V().otro(ly1).otro(ly2).otro(ly3) self.gbJ = Controles.GB(self, _("Adjudicator"), ly).conectar(self.cambiaJuez) # Opciones vlayout = Colocacion.V().control(gbColor) vlayout.espacio(5).control(self.gbJ) vlayout.margen(20) gbBasic = Controles.GB(self, "", vlayout) gbBasic.setFlat(True) # Opciones avanzadas lyInicial = Colocacion.H().control(lbInicial).control( self.edJugInicial).relleno().control(lbBooks).control( self.cbBooks).relleno() vlayout = Colocacion.V().relleno().otro(lyInicial).control(gbOpening) vlayout.espacio(5).control(self.chContrario).margen(20).relleno() gbAdvanced = Controles.GB(self, "", vlayout) gbAdvanced.setFlat(True) # Historico self.liHisto = [] oColumnas = Columnas.ListaColumnas() oColumnas.nueva("FECHA", _("Date"), 80, siCentrado=True) oColumnas.nueva("PACIERTOS", _("Hints"), 90, siCentrado=True) oColumnas.nueva("PUNTOS", _("Points accumulated"), 120, siCentrado=True) oColumnas.nueva("ENGINE", _("Adjudicator"), 100, siCentrado=True) oColumnas.nueva("RESUMEN", _("Game played"), 150) self.grid = grid = Grid.Grid(self, oColumnas, siSelecFilas=True, background=None) self.grid.coloresAlternados() self.registrarGrid(grid) # Tabs self.tab = Controles.Tab().ponPosicion("S") self.tab.nuevaTab(gbBasic, _("Basic")) self.tab.nuevaTab(gbAdvanced, _("Advanced")) self.tab.nuevaTab(self.grid, _("Track record")) # Cabecera lyCab = Colocacion.H().control(gbGM) if self.liPersonal: lyCab.control(gbPersonal) layout = Colocacion.V().control(tb).otro(lyCab).control( self.tab).margen(3) self.setLayout(layout) self.recuperaDic() self.cambiaJuez() self.compruebaGM() self.compruebaP() self.compruebaHisto() self.aperturaMuestra() self.btAperturasFavoritas.hide() self.recuperarVideo(anchoDefecto=450)
def putDB(self, key, value): db = Util.DicSQL(self.ficheroDB) db[key] = value db.close()
def restore_video(self, key): db = Util.DicSQL(self.ficheroVideo) dic = db[key] db.close() return dic
def open_cache_engines(self): if self.db_cache_engines is None: self.db_cache_engines = Util.DicSQL(self.nomFichero, tabla="CACHE_ENGINES")
def __init__(self): self.db = Util.DicSQL(VarGen.configuracion.ficheroAnalisisBookGuide, tabla="analisis", maxCache=1024)
def menu_run(self, resp): if resp: if type(resp) == str: if resp == "gm": self.entrenaGM() elif resp == "wgm": self.entrenaWGM() elif resp.startswith("mate"): self.jugarMate(int(resp[-1])) elif resp == "bmt": self.bmt() elif resp == "polyglot": self.entrenaBooks() elif resp.startswith("resistance"): self.resistance(resp[10:]) elif resp in ["j60_rival", "j60_jugador"]: self.jugar60(resp == "j60_jugador") elif resp == "aperturas": self.aperturas() elif resp == "dailytest": self.dailyTest() elif resp == "potencia": self.potencia() elif resp == "visualiza": self.visualiza() elif resp.startswith("tactica|"): nada, tipo, nombre, carpeta, ini = resp.split("|") self.tacticas(tipo, nombre, carpeta, ini) elif resp.startswith("remtactica|"): nada, carpeta, nombre = resp.split("|") self.tacticaRemove(carpeta, nombre) elif resp.startswith("puente_"): self.puente(int(resp[7:])) elif resp.startswith("horses_"): test = int(resp[7]) icl, icn, tit = self.horsesDef[test] icon = VarGen.todasPiezas.icono(icl, icn) self.horses(test, tit, icon) elif resp.startswith("ep_"): um = self.procesador.unMomento() entreno = resp[3:].replace("\\", "/") if "/" in entreno: dicTraining = TrListas.dicTraining() titentreno = "" for x in entreno[:-4].split("/")[1:]: titentreno += dicTraining.get(x, x) + "/" titentreno = titentreno[:-1] with Util.OpenCodec(entreno) as f: todo = f.read().strip() liEntrenamientos = todo.split("\n") nPosiciones = len(liEntrenamientos) um.final() if nPosiciones == 0: return elif nPosiciones == 1: pos = 1 jump = False else: db = Util.DicSQL(self.configuracion.ficheroTrainings) data = db[entreno] jump = False tipo = "s" if data is None: posUltimo = 1 elif type(data) == int: posUltimo = data else: posUltimo = data["POSULTIMO"] jump = data["SALTA"] tipo = data["TIPO"] resp = DatosNueva.numPosicion(self.procesador.pantalla, titentreno, nPosiciones, posUltimo, jump, tipo) if resp is None: db.close() return pos, tipo, jump = resp db[entreno] = { "POSULTIMO": pos, "SALTA": jump, "TIPO": tipo } db.close() if tipo.startswith("r"): if tipo == "rk": random.seed(pos) random.shuffle(liEntrenamientos) self.procesador.entrenaPos(pos, nPosiciones, titentreno, liEntrenamientos, entreno, jump) elif resp == "learnPGN": self.learnPGN() elif resp == "playPGN": self.procesador.playPGN() elif resp == "lucaselo": self.procesador.lucaselo(False) elif resp == "micelo": self.procesador.micelo(False) elif resp.startswith("fics"): self.procesador.ficselo(False, int(resp[4:])) elif resp.startswith("fide"): self.procesador.fideelo(False, int(resp[4:])) elif resp.startswith("lichess"): self.procesador.lichesselo(False, int(resp[7:])) elif resp.startswith("map_"): nada, mapa = resp.split("_") self.procesador.trainingMap(mapa) elif resp == "transsiberian": self.procesador.showRoute() elif resp == "everest": self.everest() elif resp.startswith("tol_"): self.turn_on_lights(resp[4:]) elif resp == "washing_machine": self.washing_machine() else: if resp <= -100: self.menu = None # ya que puede cambiar y la etiqueta es diferente mem = Memoria.Memoria(self.procesador) mem.lanza(abs(resp) - 100)
def lanza(self, siFavoritos=True): self.comprueba() liFavoritos = None if siFavoritos: liFav = self.procesador.configuracion.liFavoritos if liFav: li = [] for elem in liFav: if elem in self.dicMenu: li.append(self.dicMenu[elem]) liFavoritos = li if liFavoritos: menu = self.menuFavoritos(liFavoritos) else: menu = self.menu resp = menu.lanza() if resp: siStr = type(resp) == type("") if siStr: if resp == "menu_global": self.lanza(False) elif resp == "gm": self.entrenaGM() elif resp.startswith("mate"): self.jugarMate(int(resp[-1])) elif resp == "bmt": self.bmt() elif resp == "polyglot": self.entrenaBooks() elif resp.startswith("boxing"): self.boxing(resp[6:]) elif resp in ["j60_rival", "j60_jugador"]: self.jugar60(resp == "j60_jugador") elif resp == "aperturas": self.aperturas() elif resp == "dailytest": self.dailyTest() elif resp == "potencia": self.potencia() elif resp == "visualiza": self.visualiza() elif resp.startswith("tactica|"): nada, tipo, nombre, carpeta, ini = resp.split("|") self.tacticas(tipo, nombre, carpeta, ini) elif resp.startswith("remtactica|"): nada, carpeta, nombre = resp.split("|") self.tacticaRemove(carpeta, nombre) elif resp.startswith("puente_"): self.puente(int(resp[7:])) elif resp.startswith("horses_"): test = int(resp[7]) icl, icn, tit = self.horsesDef[test] icon = VarGen.todasPiezas.icono(icl, icn) self.horses(test, tit, icon) elif resp.startswith("ep_"): um = self.procesador.unMomento() entreno = resp[3:].replace("\\", "/") if "/" in entreno: dicTraining = TrListas.dicTraining() titentreno = "" for x in entreno[:-4].split("/")[1:]: titentreno += dicTraining.get(x, x) + "/" titentreno = titentreno[:-1] f = PGNreader.openCodec(entreno) todo = f.read().strip() f.close() liEntrenamientos = todo.split("\n") nPosiciones = len(liEntrenamientos) um.final() if nPosiciones == 0: return elif nPosiciones == 1: pos = 1 jump = False else: db = Util.DicSQL(self.configuracion.ficheroTrainings) posUltimo = db[entreno] if posUltimo is None: posUltimo = 1 resp = DatosNueva.numPosicion(self.procesador.pantalla, titentreno, nPosiciones, posUltimo) if resp is None: return pos, tipo, jump = resp db.close() if tipo.startswith("r"): if tipo == "rk": random.seed(pos) random.shuffle(liEntrenamientos) self.procesador.entrenaPos(pos, nPosiciones, titentreno, liEntrenamientos, entreno, jump) elif resp == "learnPGN": self.learnPGN() elif resp == "lucaselo": self.procesador.lucaselo(False) elif resp == "micelo": self.procesador.micelo(False) elif resp.startswith("fics"): self.procesador.ficselo(False, int(resp[4:])) elif resp.startswith("fide"): self.procesador.fideelo(False, int(resp[4:])) elif resp.startswith("map_"): nada, mapa = resp.split("_") self.procesador.trainingMap(mapa) else: if resp <= -100: self.menu = None # ya que puede cambiar y la etiqueta es diferente mem = Memoria.Memoria(self.procesador) mem.lanza(abs(resp) - 100)
def dbdatos(self): return Util.DicSQL(self.fichero, tabla=self.nombre)
def guardaPosicion(self, posEntreno): db = Util.DicSQL(self.configuracion.ficheroTrainings) db[self.entreno] = posEntreno db.close()
def leeConfTableros(self): db = Util.DicSQL(self.ficheroConfTableros) self.dicConfTableros = db.asDictionary() db.close()
def dbSVGs(self): if self._dbSVGs is None: self._dbSVGs = Util.DicSQL(self._fichero, tabla="SVGs") return self._dbSVGs
def leeVariables(self, nomVar): db = Util.DicSQL(self.ficheroVariables) resp = db[nomVar] db.close() return resp if resp else {}
def dbMarkers(self): if self._dbMarkers is None: self._dbMarkers = Util.DicSQL(self._fichero, tabla="Markers") return self._dbMarkers
def escVariables(self, nomVar, dicValores): db = Util.DicSQL(self.ficheroVariables) db[nomVar] = dicValores db.close()
def getDB(self, key): db = Util.DicSQL(self.ficheroDB) resp = db[key] db.close() return resp
def save_video(self, key, dic): db = Util.DicSQL(self.ficheroVideo) db[key] = dic db.close()