示例#1
0
    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)
示例#2
0
    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)
示例#3
0
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
示例#6
0
 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
示例#7
0
 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
示例#8
0
    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
示例#10
0
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
示例#11
0
 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
示例#12
0
    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
示例#13
0
 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)
示例#14
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
示例#15
0
    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
示例#16
0
    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()
示例#17
0
    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()
示例#18
0
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)
示例#19
0
    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)
示例#21
0
 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)
示例#24
0
 def configEngine(self):
     return MotoresExternos.ConfigMotor(self.me)
示例#25
0
def listaPersonal():
    lme = MotoresExternos.ListaMotoresExternos("./IntFiles/michelep.pkt")
    lme.leer()
    for mt in lme.liMotores:
        mt.book = None
    return convert(lme.liMotores)