def buscaMotor(self, clave, defecto=None): if clave in self.dicRivales: return self.dicRivales[clave] listaMotoresExt = MotoresExternos.ListaMotoresExternos(self.ficheroMExternos) listaMotoresExt.leer() if clave.startswith("*"): clave = clave[1:] for motor in listaMotoresExt.liMotores: if clave == motor.alias: return MotoresExternos.ConfigMotor(motor) return self.buscaRival(defecto)
def buscaTutor(self, clave, defecto=None): if clave in self.dicRivales and self.dicRivales[clave].puedeSerTutor(): return self.dicRivales[clave] listaMotoresExt = MotoresExternos.ListaMotoresExternos(self.ficheroMExternos) listaMotoresExt.leer() for motor in listaMotoresExt.liMotores: if clave == motor.alias: return MotoresExternos.ConfigMotor(motor) if defecto is None: defecto = self.tutorInicial return self.buscaRival(defecto)
def selectEngine(wowner): """ :param wowner: window :return: MotorExterno / None=error """ # Pedimos el ejecutable folderEngines = VarGen.configuracion.leeVariables("FOLDER_ENGINES") exeMotor = QTUtil2.leeFichero(wowner, folderEngines if folderEngines else ".", "*", _("Engine")) if not exeMotor: return None folderEngines = Util.dirRelativo(os.path.dirname(exeMotor)) VarGen.configuracion.escVariables("FOLDER_ENGINES", folderEngines) # Leemos el UCI me = MotoresExternos.MotorExterno() if not me.leerUCI(exeMotor): QTUtil2.mensaje( wowner, _X(_("The file %1 does not correspond to a UCI engine type."), exeMotor)) return None return me
def leeMicEngines(): lme = MotoresExternos.ListaMotoresExternos("./IntFiles/michele.pkt") lme.leer() li = [] for mt in lme.liMotores: mt1 = MotoresExternos.ConfigMotor(mt) if mt.alias.isupper(): mt1.alias = mt1.nombre = mt.alias[0] + mt.alias[1:].lower() mt1.book = "Openings/%s.bin" % mt.alias.lower() else: mt1.alias = mt1.nombre = mt.alias mt1.book = None mt1.elo = mt.elo mt1.idInfo = mt.idInfo li.append(mt1) return li
def listaMotoresExternos(self, ordenados=True): listaMotoresExt = MotoresExternos.ListaMotoresExternos( self.ficheroMExternos) listaMotoresExt.leer() li = listaMotoresExt.liMotores if ordenados: li.sort(key=lambda cm: cm.alias) return li
def buscaRivalExt(self, claveMotor): if claveMotor.startswith("*"): rival = MotoresExternos.buscaRivalExt(claveMotor) if rival is None: rival = self.buscaRival("critter") else: rival = self.buscaRival(claveMotor) return rival
def __init__(self, owner, ficheroMExternos): self.listaMotores = MotoresExternos.ListaMotoresExternos( ficheroMExternos) self.listaMotores.leer() self.siCambios = False # Dialogo --------------------------------------------------------------- icono = Iconos.MotoresExternos() titulo = _("External engines") extparam = "motoresExternos" super().__init__(parent=owner, titulo=titulo, icono=icono, extparam=extparam) # Toolbar liAcciones = [ (_("Close"), Iconos.MainMenu(), self.terminar), None, (_("New"), Iconos.TutorialesCrear(), self.nuevo), None, (_("Modify"), Iconos.Modificar(), self.modificar), None, (_("Remove"), Iconos.Borrar(), self.borrar), None, (_("Copy"), Iconos.Copiar(), self.copiar), None, (_("Import"), Iconos.MasDoc(), self.importar), None, (_("Up"), Iconos.Arriba(), self.arriba), None, (_("Down"), Iconos.Abajo(), self.abajo), None, (_("Command"), Iconos.Terminal(), self.command), None, ] tb = Controles.TBrutina(self, liAcciones) # Lista oColumnas = Columnas.ListaColumnas() oColumnas.nueva("ALIAS", _("Alias"), 200) oColumnas.nueva("MOTOR", _("Engine"), 200) oColumnas.nueva("AUTOR", _("Author"), 200) oColumnas.nueva("INFO", _("Information"), 120) oColumnas.nueva("ELO", "ELO", 120, siCentrado=True) self.grid = Grid.Grid(self, oColumnas, siSelecFilas=True) # n = self.grid.anchoColumnas() # self.grid.setFixedWidth( n + 20 ) self.registrarGrid(self.grid) # Layout layout = Colocacion.V().control(tb).control(self.grid) self.setLayout(layout) self.recuperarVideo(siTam=True)
def leerConfigEngine(self, resp): if resp.startswith("*"): me = MotoresExternos.buscaMotor(resp) if me: self.exe = Util.dirRelativo(me.exe) self.args = me.args self.alias = me.alias self.idName = me.idName self.clave = me.clave self.idAuthor = me.idAuthor self.idInfo = me.idInfo self.liOpciones = me.liOpciones self.maxMultiPV = me.maxMultiPV self.multiPV = me.multiPV self.elo = me.elo else: return False else: cm = VarGen.configuracion.buscaRival(resp) self.alias = cm.clave self.args = [] self.idName = cm.nombre self.idAuthor = cm.autor self.idInfo = "" self.multiPV = cm.multiPV self.maxMultiPV = cm.maxMultiPV self.exe = cm.ejecutable() me = MotoresExternos.MotorExterno() me.leerUCI(self.exe, self.args) self.liOpciones = me.liOpciones for op in self.liOpciones: for comando, valor in cm.liUCI: if op.nombre == comando: if op.tipo == "check": op.valor = valor.lower() == "true" elif op.tipo == "spin": op.valor = int(valor) else: op.valor = valor break return True
def convert(liMotores): li = [] for mt in liMotores: mt1 = MotoresExternos.ConfigMotor(mt) mt1.book = mt.book mt1.elo = mt.elo mt1.idInfo = mt.idInfo mt1.alias = mt.alias li.append(mt1) return li
def ayudaCambioCompleto(self, cmotor): li = [] listaMotoresExt = MotoresExternos.ListaMotoresExternos(self.ficheroMExternos) listaMotoresExt.leer() for motor in listaMotoresExt.liMotores: li.append(("*" + motor.alias, motor.alias + " *")) for clave, cm in self.dicRivales.iteritems(): li.append((clave, cm.nombre)) li = sorted(li, key=operator.itemgetter(1)) li.insert(0, cmotor) return li
def comboMotoresCompleto(self): listaMotoresExt = MotoresExternos.ListaMotoresExternos(self.ficheroMExternos) listaMotoresExt.leer() liMotoresExt = [] for motor in listaMotoresExt.liMotores: liMotoresExt.append((motor.alias + "*", "*" + motor.alias)) li = self.comboMotores() li.extend(liMotoresExt) li = sorted(li, key=operator.itemgetter(0)) return li
def restore(self, dic): self.ref = dic["REF"] self.info = dic["INFO"] self.seconds = dic["SECONDS"] self.depth = dic["DEPTH"] self.ini = dic["INI"] self.end = dic["END"] self.results = Results(15) # 15 = cualquier numero self.results.restore(dic["RESULTS"]) self.liGroupActive = dic["GROUPACTIVE"] self.me = MotoresExternos.MotorExterno() self.me.restore(dic["ENGINE"]) self.workTime = dic.get("WORKTIME", 0.0)
def ayudaCambioTutor(self): li = [] listaMotoresExt = MotoresExternos.ListaMotoresExternos(self.ficheroMExternos) listaMotoresExt.leer() for motor in listaMotoresExt.liMotores: if motor.multiPV > 10: li.append((motor.alias, motor.alias + " *")) for clave, cm in self.dicRivales.iteritems(): if cm.puedeSerTutor(): li.append((clave, cm.nombre)) li = sorted(li, key=operator.itemgetter(1)) li.insert(0, self.tutor.clave) return li
def comboMotoresMultiPV10(self, minimo=10): # %# listaMotoresExt = MotoresExternos.ListaMotoresExternos(self.ficheroMExternos) listaMotoresExt.leer() liMotores = [] for motor in listaMotoresExt.liMotores: if motor.multiPV >= minimo: liMotores.append((motor.alias + "*", "*" + motor.alias)) for clave, cm in self.dicRivales.iteritems(): if cm.multiPV >= minimo: liMotores.append((cm.nombre, clave)) li = sorted(liMotores, key=operator.itemgetter(0)) return li
def command(self): separador = FormLayout.separador liGen = [separador] liGen.append(separador) config = FormLayout.Fichero(_("File"), "exe", False) liGen.append((config, "")) for num in range(1, 11): liGen.append((_("Argument %d") % num + ":", "")) liGen.append(separador) resultado = FormLayout.fedit(liGen, title=_("Command"), parent=self, anchoMinimo=600, icon=Iconos.Terminal()) if resultado: nada, resp = resultado command = resp[0] liArgs = [] if not command or not os.path.isfile(command): return for x in range(1, len(resp)): arg = resp[x].strip() if arg: liArgs.append(arg) um = QTUtil2.unMomento(self) me = MotoresExternos.MotorExterno() resp = me.leerUCI(command, liArgs) um.final() if not resp: QTUtil2.mensaje( self, _X( _("The file %1 does not correspond to a UCI engine type." ), command)) return None # Editamos w = WMotor(self, self.listaMotores, me) if w.exec_(): self.listaMotores.nuevo(me) self.grid.refresh() self.grid.gobottom(0) self.grabar()
def importar(self): menu = QTVarios.LCMenu(self) lista = VarGen.configuracion.comboMotores() nico = QTVarios.rondoPuntos() for nombre, clave in lista: menu.opcion(clave, nombre, nico.otro()) resp = menu.lanza() if not resp: return cm = VarGen.configuracion.buscaRival(resp) me = MotoresExternos.MotorExterno() me.exe = cm.ejecutable() me.alias = cm.clave me.idName = cm.nombre me.nombre = cm.nombre me.clave = cm.clave me.idAuthor = cm.autor me.idInfo = "" me.liOpciones = [] me.maxMultiPV = cm.maxMultiPV me.multiPV = cm.multiPV me.elo = cm.elo me.leerUCI(me.exe) for op in me.liOpciones: for comando, valor in cm.liUCI: if op.nombre == comando: if op.tipo == "check": op.valor = valor.lower() == "true" elif op.tipo == "spin": op.valor = int(valor) else: op.valor = valor break w = WMotor(self, self.listaMotores, me) if w.exec_(): self.listaMotores.nuevo(me) self.grid.refresh() self.grid.gobottom(0) self.grabar()
def listaGM(): dic = { "champion": _("Champion"), "expert": _("Expert"), "master": _("Master") } lme = MotoresExternos.ListaMotoresExternos("./IntFiles/micheleg.pkt") lme.leer() liR = dic.keys() for mt in lme.liMotores: alias = mt.alias.strip() for x in liR: if alias.endswith(x): alias = alias[:-len(x)] mt.book = "Openings/%s.bin" % alias.lower() alias = alias[0].upper() + alias[1:].lower() + " - " + dic[x] mt.alias = alias mt.nombre = alias break return convert(lme.liMotores)
def leerConfigEngine(self, resp): if resp.startswith("*"): me = MotoresExternos.buscaMotor(resp) self.exe = Util.dirRelativo(me.exe) self.alias = me.alias self.idName = me.idName self.clave = me.clave self.idAuthor = me.idAuthor self.idInfo = me.idInfo self.liOpciones = me.liOpciones self.maxMultiPV = me.maxMultiPV self.multiPV = me.multiPV self.elo = me.elo else: cm = VarGen.configuracion.buscaRival(resp) self.alias = cm.clave self.idName = cm.nombre self.idAuthor = cm.autor self.idInfo = "" self.multiPV = cm.multiPV self.maxMultiPV = cm.maxMultiPV self.exe = cm.ejecutable() me = MotoresExternos.MotorExterno() me.leerUCI(self.exe) self.liOpciones = me.liOpciones for op in self.liOpciones: for comando, valor in cm.liUCI: if op.nombre == comando: if op.tipo == "check": op.valor = valor.lower() == "true" elif op.tipo == "spin": op.valor = int(valor) else: op.valor = valor break
def leerTXT(self, txt): dic = Util.txt2dic(txt) self.exe = dic["EXE"] self.alias = dic["ALIAS"] self.idName = dic["IDNAME"] self.idAuthor = dic["IDAUTHOR"] self.idInfo = dic["IDINFO"] self.elo = dic["ELO"] self._huella = dic["HUELLA"] self._depth = dic["DEPTH"] self._time = dic["TIME"] self._book = dic["BOOK"] self._bookRR = dic["BOOKRR"] self.multiPV = 0 txtop = dic["OPCIONES"] self.liOpciones = [] for parte in txtop.split("|"): if parte: op = MotoresExternos.OpcionUCI() op.leeTXT(parte) if op.nombre == "MultiPV": self.multiPV = op.max self.maxMultiPV = op.max self.liOpciones.append(op)
def listaMotoresExternos(self): listaMotoresExt = MotoresExternos.ListaMotoresExternos( self.ficheroMExternos) listaMotoresExt.leer() li = sorted(listaMotoresExt.liMotores, key=lambda cm: cm.alias) return li
def rehazMotoresExternos(self): self.liMotoresExternos = [ MotoresExternos.ConfigMotor(cm) for cm in self.configuracion.listaMotoresExternos() ] self.liMotoresClavePV = self.configuracion.comboMotoresMultiPV10()
def configMotor(self): return MotoresExternos.ConfigMotor(self)
def configEngine(self): return MotoresExternos.ConfigMotor(self.me)
def listaPersonal(): lme = MotoresExternos.ListaMotoresExternos("./IntFiles/michelep.pkt") lme.leer() for mt in lme.liMotores: mt.book = None return convert(lme.liMotores)