Esempio n. 1
0
    def __init__(self, wParent, sts, procesador):
        titulo = sts.name
        icono = Iconos.STS()
        extparam = "unsts"
        super().__init__(parent=wParent,
                         titulo=titulo,
                         icono=icono,
                         extparam=extparam)

        # Datos
        self.sts = sts
        self.procesador = procesador

        # Toolbar
        liAcciones = [
            (_("Close"), Iconos.MainMenu(), self.terminar),
            None,
            (_("Run"), Iconos.Run(), self.wkRun),
            None,
            (_("New"), Iconos.NuevoMas(), lambda: self.wkNew(None)),
            None,
            (_("Edit"), Iconos.Modificar(), self.wkEdit),
            None,
            (_("Copy"), Iconos.Copiar(), self.wkCopy),
            None,
            (_("Remove"), Iconos.Borrar(), self.wkRemove),
            None,
            (_("Up"), Iconos.Arriba(), self.up),
            (_("Down"), Iconos.Abajo(), self.down),
            None,
            (_("Export"), Iconos.Grabar(), self.export),
            None,
            (_("Config"), Iconos.Configurar(), self.configurar),
            None,
        ]
        tb = Controles.TBrutina(self, liAcciones, tamIcon=24)

        # # Grid works
        oColumnas = Columnas.ListaColumnas()
        oColumnas.nueva("POS", _("N."), 30, siCentrado=True)
        oColumnas.nueva("REF", _("Reference"), 100)
        oColumnas.nueva("TIME", _("Time"), 50, siCentrado=True)
        oColumnas.nueva("DEPTH", _("Depth"), 50, siCentrado=True)
        oColumnas.nueva("SAMPLE", _("Sample"), 50, siCentrado=True)
        oColumnas.nueva("RESULT", _("Result"), 150, siCentrado=True)
        oColumnas.nueva("ELO", _("Elo"), 80, siCentrado=True)
        oColumnas.nueva("WORKTIME", _("Work time"), 80, siCentrado=True)
        for x in range(len(sts.groups)):
            group = sts.groups.group(x)
            oColumnas.nueva("T%d" % x, group.name, 140, siCentrado=True)
        self.grid = Grid.Grid(self,
                              oColumnas,
                              siSelecFilas=True,
                              siSeleccionMultiple=True)
        self.registrarGrid(self.grid)

        # Layout
        layout = Colocacion.V().control(tb).control(self.grid).margen(8)
        self.setLayout(layout)

        self.recuperarVideo(siTam=True, anchoDefecto=800, altoDefecto=430)

        self.grid.gotop()
Esempio n. 2
0
    def __init__(self, owner, listaFlechas, dbFlechas):

        titulo = _("Arrows")
        icono = Iconos.Flechas()
        extparam = "flechas"
        QTVarios.WDialogo.__init__(self, owner, titulo, icono, extparam)

        self.owner = owner

        flb = Controles.TipoLetra(puntos=8)

        self.configuracion = VarGen.configuracion

        self.dbFlechas = dbFlechas

        self.liPFlechas = owner.listaFlechas()

        # Lista
        oColumnas = Columnas.ListaColumnas()
        oColumnas.nueva("NUMERO", _("N."), 60, siCentrado=True)
        oColumnas.nueva("NOMBRE", _("Name"), 256)

        self.grid = Grid.Grid(self, oColumnas, xid="F", siSelecFilas=True)

        liAcciones = [
            (_("Close"), Iconos.MainMenu(), "terminar"),
            None,
            (_("New"), Iconos.Nuevo(), "mas"),
            None,
            (_("Remove"), Iconos.Borrar(), "borrar"),
            None,
            (_("Modify"), Iconos.Modificar(), "modificar"),
            None,
            (_("Copy"), Iconos.Copiar(), "copiar"),
            None,
            (_("Up"), Iconos.Arriba(), "arriba"),
            None,
            (_("Down"), Iconos.Abajo(), "abajo"),
            None,
        ]
        tb = Controles.TB(self, liAcciones)
        tb.setFont(flb)

        ly = Colocacion.V().control(tb).control(self.grid)

        # Tablero
        confTablero = owner.tablero.confTablero
        self.tablero = Tablero.Tablero(self, confTablero, siDirector=False)
        self.tablero.crea()
        self.tablero.copiaPosicionDe(owner.tablero)

        # Layout
        layout = Colocacion.H().otro(ly).control(self.tablero)
        self.setLayout(layout)

        self.registrarGrid(self.grid)
        self.recuperarVideo()

        # Ejemplos
        liMovs = ["d2d6", "a8h8", "h5b7"]
        self.liEjemplos = []
        regFlecha = TabTipos.Flecha()
        for a1h8 in liMovs:
            regFlecha.a1h8 = a1h8
            regFlecha.siMovible = True
            flecha = self.tablero.creaFlecha(regFlecha)
            self.liEjemplos.append(flecha)

        self.grid.gotop()
        self.grid.setFocus()
Esempio n. 3
0
    def __init__(self, procesador):

        self.procesador = procesador
        self.configuration = procesador.configuration

        self.siPlay = False
        self.wreload = False

        self.dbwashing = Washing.DBWashing(procesador.configuration)
        self.washing = self.dbwashing.washing
        eng = self.washing.last_engine(procesador.configuration)
        finished = eng is None

        owner = procesador.main_window
        titulo = _("The Washing Machine")
        extparam = "washing"
        icono = Iconos.WashingMachine()
        QTVarios.WDialogo.__init__(self, owner, titulo, icono, extparam)

        # Toolbar
        tb = QTVarios.LCTB(self)
        tb.new(_("Close"), Iconos.MainMenu(), self.terminar)
        tb.new(_("File"), Iconos.Recuperar(), self.file)
        if not finished:
            tb.new(_("Play"), Iconos.Play(), self.play)

        # Tab current
        ia = self.washing.index_average()

        c_create = "#f9e7e7"
        c_tactics = "#df8f87"
        c_reinit = "#8aa678"
        c_des = "#e4e4e4"
        c_hab = "#9dde67"
        c_act = "#dd2a2b"
        c_ia = "#cccdea"

        li_ia = ("#ffed00", "#ff8e00", "#29b41b", "#1174ff", "#bc01d9",
                 "#eb0000")
        d_ia = li_ia[int(eng.index() / (100.0 / 6.0)) % 6]
        state = eng.state
        wsvg = QtSvg.QSvgWidget()
        with open(Code.path_resource("IntFiles/Svg",
                                     "washing-machine.svg")) as f:
            svg = f.read()
            d_create = c_des
            d_tactics = c_des
            d_reinit = c_des
            ctac = ""
            if state == Washing.CREATING:
                d_create = c_act
            elif state == Washing.REPLAY:
                d_create = c_hab
                d_tactics = c_hab
                d_reinit = c_act
            elif state == Washing.TACTICS:
                d_create = c_hab
                d_tactics = c_act
                ctac = str(eng.numTactics())
            svg = svg.replace(c_create, d_create)
            svg = svg.replace(c_tactics, d_tactics)
            svg = svg.replace(c_reinit, d_reinit)
            svg = svg.replace("TAC", ctac)
            svg = svg.replace(c_ia, d_ia)
            wsvg.load(QtCore.QByteArray(svg.encode("utf-8")))
        p = 1.0
        wsvg.setFixedSize(287.79 * p, 398.83 * p)

        if finished:
            plant = '<tr><td align="right">%s:</td><td><b>%s</b></td></tr>'
            hints, times, games = self.washing.totals()
            nEngines = self.washing.num_engines()
            html = '<h2><center>%s: %d %s</center></h2><br><table cellpadding="4">' % (
                _("Finished"),
                nEngines,
                _("engines"),
            )
            for x in range(3):
                html += plant
            html += "</table>"

            html = html % (
                _("Hints"),
                "%d (%0.02f)" % (hints, hints * 1.0 / nEngines),
                _("Games"),
                "%d (%0.02f)" % (games, games * 1.0 / nEngines),
                _("Time"),
                "%s (%s)" %
                (Util.secs2str(times), Util.secs2str(int(times / nEngines))),
            )

        else:
            plant = '<tr><td align="right">%s:</td><td><b>%s</b></td></tr>'
            plantverde = '<tr><td align="right">%s:</td><td style="color:green;"><b>%s</b></td></tr>'
            html = '<h2><center>%s %d/%d</center></h2><br><table cellpadding="4">'
            for x in range(8):
                html += plantverde if x == 2 else plant
            html += "</table>"
            html = html % (
                _("Washing"),
                self.washing.num_engines(),
                self.washing.total_engines(procesador.configuration),
                _("Engine"),
                eng.name,
                _("Elo"),
                eng.elo,
                "<b>%s</b>" % _("Task"),
                eng.lbState(),
                _("Color"),
                _("White") if eng.color else _("Black"),
                _("Hints"),
                "%d/%d" % (eng.hints_current, eng.hints),
                _("Games"),
                eng.games,
                _("Time"),
                eng.lbTime(),
                _("Index"),
                eng.cindex(),
            )

        lbTxt = Controles.LB(self, html).ponTipoLetra(puntos=12)
        lbIdx = Controles.LB(self, "%0.2f%%" % ia).align_center().ponTipoLetra(
            puntos=36, peso=700)

        ly0 = Colocacion.V().control(wsvg).relleno(1)
        ly1 = Colocacion.V().espacio(20).control(lbTxt).espacio(20).control(
            lbIdx).relleno(1)
        ly2 = Colocacion.H().otro(ly0).otro(ly1)
        gbCurrent = Controles.GB(self, "", ly2)

        # Lista
        o_columns = Columnas.ListaColumnas()
        o_columns.nueva("STEP", _("Washing"), 50, centered=True)
        o_columns.nueva("ENGINE", _("Engine"), 170, centered=True)
        o_columns.nueva("ELO", _("Elo"), 50, centered=True)
        o_columns.nueva("COLOR", _("Color"), 70, centered=True)
        o_columns.nueva("STATE", _("State"), 90, centered=True)
        o_columns.nueva("HINTS", _("Hints"), 60, centered=True)
        o_columns.nueva("GAMES", _("Games"), 60, centered=True)
        o_columns.nueva("TIME", _("Time"), 60, centered=True)
        o_columns.nueva("DATE", _("Date"), 120, centered=True)
        o_columns.nueva("INDEX", _("Index"), 60, centered=True)

        self.grid = grid = Grid.Grid(self, o_columns, siSelecFilas=True)
        nAnchoPgn = self.grid.anchoColumnas() + 20
        self.grid.setMinimumWidth(nAnchoPgn)
        self.register_grid(grid)

        ly0 = Colocacion.V().control(self.grid)
        gbDatos = Controles.GB(self, "", ly0)

        self.tab = Controles.Tab()
        self.tab.nuevaTab(gbCurrent, _("Current"))
        self.tab.nuevaTab(gbDatos, _("Data"))

        # Colocamos ---------------------------------------------------------------
        ly = Colocacion.V().control(tb).control(self.tab)
        self.setLayout(ly)

        self.restore_video(siTam=True, anchoDefecto=nAnchoPgn)
Esempio n. 4
0
    def __init__(self, wParent, torneo):

        titulo = _("Competition")
        icono = Iconos.Torneos()
        extparam = "untorneo"
        super().__init__(parent=wParent,
                         titulo=titulo,
                         icono=icono,
                         extparam=extparam)

        self.configuracion = VarGen.configuracion

        # Datos
        self.torneo = torneo
        self.liEnActual = []
        self.xjugar = None
        self.liResult = None

        # Toolbar
        liAcciones = (
            (_("Save") + "+" + _("Quit"), Iconos.MainMenu(), "terminar"),
            None,
            (_("Cancel"), Iconos.Cancelar(), "cancelar"),
            None,
            (_("Play"), Iconos.Empezar(), "gmJugar"),
            None,
        )
        tb = Controles.TB(self, liAcciones)

        # Tabs
        self.tab = tab = Controles.Tab()

        # Tab-configuracion --------------------------------------------------
        w = QtWidgets.QWidget()
        # # Nombre
        lbNombre = Controles.LB(self, _("Name") + ": ")
        self.edNombre = Controles.ED(w, torneo.nombre())
        # # Resign
        lbResign = Controles.LB(self,
                                _("Minimum points to assign winner") + ": ")
        self.sbResign = Controles.SB(self, torneo.resign(), 60, 100000)
        # Draw-plys
        lbDrawMinPly = Controles.LB(self,
                                    _("Minimum moves to assign draw") + ": ")
        self.sbDrawMinPly = Controles.SB(self, torneo.drawMinPly(), 20, 1000)
        # Draw-puntos
        lbDrawRange = Controles.LB(self,
                                   _("Maximum points to assign draw") + ": ")
        self.sbDrawRange = Controles.SB(self, torneo.drawRange(), 0, 50)

        lbBook = Controles.LB(self, _("Opening book") + ": ")
        fvar = self.configuracion.ficheroBooks
        self.listaLibros = Books.ListaLibros()
        self.listaLibros.recuperaVar(fvar)
        # Comprobamos que todos esten accesibles
        self.listaLibros.comprueba()
        li = [(x.nombre, x.path) for x in self.listaLibros.lista]
        li.insert(0, ("* " + _("Default"), ""))
        self.cbBooks = Controles.CB(self, li, torneo.book())
        btNuevoBook = Controles.PB(self, "", self.nuevoBook,
                                   plano=False).ponIcono(Iconos.Nuevo(),
                                                         tamIcon=16)
        lyBook = Colocacion.H().control(
            self.cbBooks).control(btNuevoBook).relleno()

        # Posicion inicial
        lbFEN = Controles.LB(self, _("Initial position") + ": ")
        self.fen = torneo.fen()
        self.btPosicion = Controles.PB(self, " " * 5 + _("Change") + " " * 5,
                                       self.posicionEditar).ponPlano(False)
        self.btPosicionQuitar = Controles.PB(
            self, "", self.posicionQuitar).ponIcono(Iconos.Motor_No())
        self.btPosicionPegar = Controles.PB(self, "",
                                            self.posicionPegar).ponIcono(
                                                Iconos.Pegar16()).ponToolTip(
                                                    _("Paste FEN position"))
        lyFEN = Colocacion.H().control(self.btPosicionQuitar).control(
            self.btPosicion).control(self.btPosicionPegar).relleno()

        # Norman Pollock
        lbNorman = Controles.LB(
            self,
            '%s(<a href="https://komodochess.com/pub/40H-pgn-utilities">?</a>): '
            % _("Initial position from Norman Pollock openings database"))
        self.chbNorman = Controles.CHB(self, " ", self.torneo.norman())

        # Layout
        layout = Colocacion.G()
        layout.controld(lbNombre, 0, 0).control(self.edNombre, 0, 1)
        layout.controld(lbResign, 1, 0).control(self.sbResign, 1, 1)
        layout.controld(lbDrawMinPly, 2, 0).control(self.sbDrawMinPly, 2, 1)
        layout.controld(lbDrawRange, 3, 0).control(self.sbDrawRange, 3, 1)
        layout.controld(lbBook, 4, 0).otro(lyBook, 4, 1)
        layout.controld(lbFEN, 5, 0).otro(lyFEN, 5, 1)
        layout.controld(lbNorman, 6, 0).control(self.chbNorman, 6, 1)
        layoutV = Colocacion.V().relleno().otro(layout).relleno()
        layoutH = Colocacion.H().relleno().otro(layoutV).relleno()

        # Creamos
        w.setLayout(layoutH)
        tab.nuevaTab(w, _("Configuration"))

        # Tab-engines --------------------------------------------------
        self.splitterEngines = QtWidgets.QSplitter(self)
        self.registrarSplitter(self.splitterEngines, "engines")
        # TB
        liAcciones = [
            (_("New"), Iconos.TutorialesCrear(), "enNuevo"),
            None,
            (_("Modify"), Iconos.Modificar(), "enModificar"),
            None,
            (_("Remove"), Iconos.Borrar(), "enBorrar"),
            None,
            (_("Copy"), Iconos.Copiar(), "enCopiar"),
            None,
            (_("Import"), Iconos.MasDoc(), "enImportar"),
            None,
        ]
        tbEnA = Controles.TB(self, liAcciones, tamIcon=24)

        # Grid engine
        oColumnas = Columnas.ListaColumnas()
        oColumnas.nueva("ALIAS", _("Alias"), 209)
        self.gridEnginesAlias = Grid.Grid(self,
                                          oColumnas,
                                          siSelecFilas=True,
                                          xid="EA",
                                          siSeleccionMultiple=True)
        self.registrarGrid(self.gridEnginesAlias)

        w = QtWidgets.QWidget()
        ly = Colocacion.V().control(self.gridEnginesAlias).margen(0)
        w.setLayout(ly)
        self.splitterEngines.addWidget(w)

        oColumnas = Columnas.ListaColumnas()
        oColumnas.nueva("CAMPO", _("Label"), 200, siDerecha=True)
        oColumnas.nueva("VALOR", _("Value"), 286)
        self.gridEnginesValores = Grid.Grid(self,
                                            oColumnas,
                                            siSelecFilas=False,
                                            xid="EV")
        self.registrarGrid(self.gridEnginesValores)

        w = QtWidgets.QWidget()
        ly = Colocacion.V().control(self.gridEnginesValores).margen(0)
        w.setLayout(ly)
        self.splitterEngines.addWidget(w)

        self.splitterEngines.setSizes([250, 520])  # por defecto

        w = QtWidgets.QWidget()
        ly = Colocacion.V().control(tbEnA).control(self.splitterEngines)
        w.setLayout(ly)
        tab.nuevaTab(w, _("Engines"))

        # Creamos

        # Tab-games --------------------------------------------------
        w = QtWidgets.QWidget()
        # TB
        liAcciones = [
            (_("New"), Iconos.TutorialesCrear(), "gmCrear"),
            None,
            (_("Remove"), Iconos.Borrar(), "gmBorrar"),
            None,
            (_("Show"), Iconos.PGN(), "gmMostrar"),
            None,
            (_("Save") + "(%s)" % _("PGN"), Iconos.GrabarComo(), "gmGuardar"),
            None,
        ]
        tbEnG = Controles.TB(self, liAcciones, tamIcon=24)
        # Grid engine
        oColumnas = Columnas.ListaColumnas()
        oColumnas.nueva("WHITE", _("White"), 190, siCentrado=True)
        oColumnas.nueva("BLACK", _("Black"), 190, siCentrado=True)
        oColumnas.nueva("RESULT", _("Result"), 190, siCentrado=True)
        oColumnas.nueva("TIEMPO", _("Time"), 170, siCentrado=True)
        self.gridGames = Grid.Grid(self,
                                   oColumnas,
                                   siSelecFilas=True,
                                   xid="G",
                                   siSeleccionMultiple=True)
        self.registrarGrid(self.gridGames)
        # Layout
        layout = Colocacion.V().control(tbEnG).control(self.gridGames)

        # Creamos
        w.setLayout(layout)
        tab.nuevaTab(w, _("Games"))

        # Tab-resultado --------------------------------------------------
        w = QtWidgets.QWidget()

        # Grid
        oColumnas = Columnas.ListaColumnas()
        oColumnas.nueva("NUMERO", _("N."), 35, siCentrado=True)
        oColumnas.nueva("MOTOR", _("Engine"), 190, siCentrado=True)
        oColumnas.nueva("GANADOS", _("Wins"), 120, siCentrado=True)
        oColumnas.nueva("PERDIDOS", _("Lost"), 120, siCentrado=True)
        oColumnas.nueva("TABLAS", _("Draw"), 120, siCentrado=True)
        oColumnas.nueva("PUNTOS", _("Points"), 120, siCentrado=True)
        self.gridResult = Grid.Grid(self,
                                    oColumnas,
                                    siSelecFilas=True,
                                    xid="R")
        self.registrarGrid(self.gridResult)
        # Layout
        layout = Colocacion.V().control(self.gridResult)

        # Creamos
        w.setLayout(layout)
        tab.nuevaTab(w, _("Result"))

        # Layout
        layout = Colocacion.V().control(tb).control(tab).margen(8)
        self.setLayout(layout)

        self.recuperarVideo(siTam=True, anchoDefecto=800, altoDefecto=430)

        self.gridEnginesAlias.gotop()

        self.edNombre.setFocus()

        self.muestraPosicion()
Esempio n. 5
0
    def __init__(self, wParent, sts, work, procesador):
        titulo = "%s - %s - %s" % (sts.name, work.ref, work.pathToExe())
        icono = Iconos.STS()
        extparam = "runsts"
        QTVarios.WDialogo.__init__(self, wParent, titulo, icono, extparam)

        self.work = work
        self.sts = sts
        self.ngroup = -1
        self.xengine = procesador.creaGestorMotor(work.configEngine(), work.seconds * 1000, work.depth)
        self.xengine.set_direct( )
        self.playing = False
        self.configuracion = procesador.configuracion
        dic = self.configuracion.leeVariables("STSRUN")
        self.hideBoard = dic["HIDEBOARD"] if dic else False

        # Toolbar
        liAcciones = [(_("Close"), Iconos.MainMenu(), self.cerrar), None,
                      (_("Run"), Iconos.Run(), self.run),
                      (_("Pause"), Iconos.Pelicula_Pausa(), self.pause), None,
                      (_("Config"), Iconos.Configurar(), self.config), None,
                      ]
        self.tb = tb = Controles.TBrutina(self, liAcciones, tamIcon=24)

        # Board
        confTablero = self.configuracion.confTablero("STS", 32)
        self.tablero = Tablero.Tablero(self, confTablero)
        self.tablero.crea()

        # Area resultados
        oColumnas = Columnas.ListaColumnas()
        oColumnas.nueva("GROUP", _("Group"), 180)
        oColumnas.nueva("DONE", _("Done"), 100, siCentrado=True)
        oColumnas.nueva("WORK", _("Result"), 120, siCentrado=True)

        self.dworks = self.read_works()
        self.calc_max()
        for x in range(len(self.sts.works)-1, -1, -1):
            work = self.sts.works.getWork(x)
            if work != self.work:
                key = "OTHER%d" % x
                reg = self.dworks[key]
                oColumnas.nueva(key, reg.title, 120, siCentrado=True)

        self.grid = Grid.Grid(self, oColumnas, siSelecFilas=True)

        self.colorMax = QTUtil.qtColor("#840C24")
        self.colorOth = QTUtil.qtColor("#4668A6")

        layout = Colocacion.H()
        layout.control(self.tablero)
        layout.control(self.grid)
        layout.margen(3)

        ly = Colocacion.V().control(tb).otro(layout)

        self.setLayout(ly)

        self.recuperarVideo(siTam=True, anchoDefecto=800, altoDefecto=430)

        resp = self.sts.siguientePosicion(self.work)
        if resp:
            self.tb.setAccionVisible(self.pause, False)
            self.tb.setAccionVisible(self.run, True)
        else:
            self.tb.setAccionVisible(self.pause, False)
            self.tb.setAccionVisible(self.run, False)

        self.setViewBoard()
Esempio n. 6
0
    def __init__(self, procesador, mapa):
        self.workmap = WorkMap.WorkMap(mapa)
        dic = TrListas.maps()
        titulo = dic[mapa]
        icono = getattr(Iconos, mapa)()

        QTVarios.WDialogo.__init__(self, procesador.pantalla, titulo, icono,
                                   mapa)

        self.procesador = procesador

        self.playCurrent = None

        oColumnas = Columnas.ListaColumnas()
        oColumnas.nueva("TIPO",
                        "",
                        24,
                        edicion=Delegados.PmIconosBMT(),
                        siCentrado=True)
        oColumnas.nueva("SELECT", _("Select one to play"), 150)

        self.grid = Grid.Grid(self, oColumnas, siSelecFilas=True, xid="W")

        self.registrarGrid(self.grid)

        liAcciones = (
            (_("Close"), Iconos.MainMenu(), self.terminar),
            None,
            (_("Play"), Iconos.Empezar(), self.play),
            None,
        )
        tbWork = QTVarios.LCTB(self, liAcciones, tamIcon=24)

        self.lbInfo = Controles.LB(self)

        self.wsvg = wsvg = QtSvg.QSvgWidget()
        p = wsvg.palette()
        p.setColor(wsvg.backgroundRole(), QtGui.QColor("#F5F5F5"))
        wsvg.setPalette(p)

        ly = Colocacion.V().control(tbWork).control(self.lbInfo).control(
            self.grid)
        w = QtGui.QWidget()
        w.setLayout(ly)

        splitter = QtGui.QSplitter(self)
        splitter.addWidget(w)
        splitter.addWidget(wsvg)
        self.registrarSplitter(splitter, "splitter")

        oColumnas = Columnas.ListaColumnas()
        oColumnas.nueva("ACTIVE", _("Active"), 80, siCentrado=True)
        oColumnas.nueva("TIPO", _("Type"), 110, siCentrado=True)
        oColumnas.nueva("DCREATION", _("Creation date"), 110, siCentrado=True)
        oColumnas.nueva("DONE", _("Done"), 110, siCentrado=True)
        oColumnas.nueva("DEND", _("Ending date"), 110, siCentrado=True)
        oColumnas.nueva("RESULT", _("Result"), 110, siCentrado=True)

        self.gridData = Grid.Grid(self, oColumnas, siSelecFilas=True, xid="H")
        self.registrarGrid(self.gridData)

        liAcciones = (
            (_("Close"), Iconos.MainMenu(), self.terminar),
            None,
            (_("Select"), Iconos.Seleccionar(), self.data_select),
            None,
            (_("New"), Iconos.NuevoMas(), self.data_new),
            None,
            (_("Remove"), Iconos.Borrar(), self.data_remove),
            None,
        )
        tb = QTVarios.LCTB(self, liAcciones, tamIcon=24)

        ly = Colocacion.V().control(tb).control(self.gridData)
        w = QtGui.QWidget()
        w.setLayout(ly)

        self.tab = Controles.Tab()
        self.tab.ponPosicion("W")
        self.tab.nuevaTab(splitter, _("Map"))
        self.tab.nuevaTab(w, _("Data"))

        ly = Colocacion.H().control(self.tab).margen(0)
        self.setLayout(ly)

        self.recuperarVideo(siTam=True, anchoDefecto=960, altoDefecto=600)

        self.workmap.setWidget(wsvg)
        self.workmap.resetWidget()
        self.grid.gotop()
        self.gridData.gotop()

        self.informacion()
    def __init__(self, owner, board):
        self.owner = owner
        self.position = board.last_position
        self.board = board
        self.configuration = board.configuration
        self.fenm2 = self.position.fenm2()
        self.origin_new = None

        self.dbManager = board.dbVisual
        self.leeRecursos()

        titulo = _("Director")
        icono = Iconos.Script()
        extparam = "tabvisualscript"
        QTVarios.WDialogo.__init__(self, board, titulo, icono, extparam)

        self.must_save = False
        self.ant_foto = None

        self.guion = TabVisual.Guion(board, self)

        # Guion
        li_acciones = [
            (_("Close"), Iconos.MainMenu(), self.terminar),
            (_("Cancel"), Iconos.Cancelar(), self.cancelar),
            (_("Save"), Iconos.Grabar(), self.grabar),
            (_("New"), Iconos.Nuevo(), self.gnuevo),
            (_("Insert"), Iconos.Insertar(), self.ginsertar),
            (_("Remove"), Iconos.Borrar(), self.gborrar),
            None,
            (_("Up"), Iconos.Arriba(), self.garriba),
            (_("Down"), Iconos.Abajo(), self.gabajo),
            None,
            (_("Mark"), Iconos.Marcar(), self.gmarcar),
            None,
            (_("File"), Iconos.Recuperar(), self.gfile),
            None,
        ]
        self.tb = Controles.TBrutina(self,
                                     li_acciones,
                                     with_text=False,
                                     icon_size=24)
        self.tb.setAccionVisible(self.grabar, False)

        o_columns = Columnas.ListaColumnas()
        o_columns.nueva("NUMBER", _("N."), 20, centered=True)
        o_columns.nueva("MARCADO", "", 20, centered=True, siChecked=True)
        o_columns.nueva("TYPE", _("Type"), 50, centered=True)
        o_columns.nueva("NOMBRE",
                        _("Name"),
                        100,
                        centered=True,
                        edicion=Delegados.LineaTextoUTF8())
        o_columns.nueva("INFO", _("Information"), 100, centered=True)
        self.g_guion = Grid.Grid(self,
                                 o_columns,
                                 siCabeceraMovible=False,
                                 siEditable=True,
                                 siSeleccionMultiple=True)
        self.g_guion.fixMinWidth()

        self.register_grid(self.g_guion)

        self.chbSaveWhenFinished = Controles.CHB(
            self, _("Save when finished"),
            self.dbConfig.get("SAVEWHENFINISHED", False))

        # Visuales
        self.selectBanda = WindowTab.SelectBanda(self)

        lyG = Colocacion.V().control(self.g_guion).control(
            self.chbSaveWhenFinished)
        lySG = Colocacion.H().control(self.selectBanda).otro(lyG).relleno(1)
        layout = Colocacion.V().control(self.tb).otro(lySG).margen(3)

        self.setLayout(layout)

        self.restore_video()

        self.recuperar()
        self.ant_foto = self.foto()

        self.actualizaBandas()
        li = self.dbConfig["SELECTBANDA"]
        if li:
            self.selectBanda.recuperar(li)
        num_lb = self.dbConfig["SELECTBANDANUM"]
        if num_lb is not None:
            self.selectBanda.seleccionarNum(num_lb)

        self.ultDesde = "d4"
        self.ultHasta = "e5"

        self.g_guion.gotop()
Esempio n. 8
0
    def __init__(self, tableroOwner):

        self.leeRecursos()

        self.tableroOwner = tableroOwner
        titulo = _("Director")
        icono = Iconos.Director()
        extparam = "tabdirector"
        QTVarios.WDialogo.__init__(self, tableroOwner, titulo, icono, extparam)

        liAcciones = [
            (_("Close"), Iconos.MainMenu(), self.terminar),
            None,
            (_("Arrows"), Iconos.Flechas(), self.flechas),
            None,
            (_("Boxes"), Iconos.Marcos(), self.marcos),
            None,
            (_("Images"), Iconos.SVGs(), self.svgs),
            None,
            (_("Markers"), Iconos.Markers(), self.markers),
            None,
            None,
            (_("Clipboard"), Iconos.Clip(), self.portapapeles),
            None,
            (_("Save") + " png", Iconos.GrabarFichero(), self.grabarFichero),
            None,
        ]
        tb = Controles.TBrutina(self, liAcciones, siTexto=False, tamIcon=32)

        pbLimpia = Controles.PB(self,
                                _("Clean main board"),
                                self.limpiaTableroOwner,
                                plano=False)
        self.siTabCoord = self.dbConfig["COORDINADOS"]
        if self.siTabCoord is None:
            self.siTabCoord = self.dbConfig["COORDINADOS"] = True
        self.chTabCoord = Controles.CHB(self, _("Boards coordinated"),
                                        self.siTabCoord)
        self.chTabCoord.capturaCambiado(self, self.cambiadoTabCoord)
        pbCoordina = Controles.PB(self, "", self.coordinaTableros).ponIcono(
            Iconos.Coordina()).anchoFijo(30)

        # Tablero
        confTablero = VarGen.configuracion.confTablero(
            "Director", 24, padre=tableroOwner.confTablero.id())
        self.tablero = Tablero.TableroDirector(self, confTablero)
        self.tablero.crea()
        self.tablero.ponDispatchEventos(self.dispatch)
        self.tablero.dispatchSize(self.tableroCambiadoTam)
        self.tablero.baseCasillasSC.setAcceptDrops(True)
        self.tablero.ponMensajero(self.muevePieza)

        self.tablero.activaTodas()

        self.guion = TabVisual.Guion()
        self.nomGuion = ""

        # Tools
        listaPiezas = QTVarios.ListaPiezas(self,
                                           "P,N,B,R,Q,K,p,n,b,r,q,k",
                                           self.tablero,
                                           18,
                                           margen=0)

        # Guion
        liAcciones = [
            (_("New"), Iconos.Nuevo(), self.gnuevo),
            (_("Insert"), Iconos.Insertar(), self.ginsertar),
            (_("Copy"), Iconos.Copiar(), self.gcopiar), None,
            (_("Remove"), Iconos.Borrar(), self.gborrar), None,
            (_("Up"), Iconos.Arriba(), self.garriba),
            (_("Down"), Iconos.Abajo(), self.gabajo), None,
            (_("Mark"), Iconos.Marcar(), self.gmarcar), None,
            (_("Save"), Iconos.Grabar(), self.ggrabarGuion),
            (_("Open"), Iconos.Recuperar(), self.grecuperarGuion), None,
            (_("Remove script"), Iconos.Delete(), self.geliminarGuion)
        ]
        tbGuion = Controles.TBrutina(self,
                                     liAcciones,
                                     siTexto=False,
                                     tamIcon=20)
        oColumnas = Columnas.ListaColumnas()
        oColumnas.nueva("DIRECTOR", "0", 20, siCentrado=True, siChecked=True)
        oColumnas.nueva("MARCADO", "1", 20, siCentrado=True, siChecked=True)
        oColumnas.nueva("TIPO", _("Type"), 50, siCentrado=True)
        oColumnas.nueva("NOMBRE",
                        _("Name"),
                        100,
                        siCentrado=True,
                        edicion=Delegados.LineaTextoUTF8())
        oColumnas.nueva("INFO", _("Information"), 100, siCentrado=True)
        self.g_guion = Grid.Grid(self,
                                 oColumnas,
                                 siCabeceraMovible=False,
                                 siEditable=True,
                                 siSeleccionMultiple=True)
        self.g_guion.gotop()
        self.g_guion.setSizePolicy(QtGui.QSizePolicy.Expanding,
                                   QtGui.QSizePolicy.Expanding)

        self.registrarGrid(self.g_guion)

        # Visuales
        self.dragBanda = QTVarios.DragBanda(self, (5, 5), 32, margen=0)

        # Botones
        lyLC = Colocacion.H().control(pbLimpia).control(pbCoordina).control(
            self.chTabCoord)

        lyTB = Colocacion.V()
        lyTB.controlc(self.dragBanda)
        lyTB.control(self.tablero)
        lyTB.control(listaPiezas)
        lyTB.otro(lyLC)
        lyTB.control(tbGuion)
        lyTB.control(self.g_guion)
        lyTB.margen(0)

        # Layout
        layout = Colocacion.V().control(tb).otro(lyTB).margen(3)
        self.setLayout(layout)

        self.recuperarVideo()

        self.actualizaBandas()
        li = self.dbConfig["DRAGBANDA"]
        if li:
            self.dragBanda.recuperar(li)

        self.ultDesde = "d4"
        self.ultHasta = "e5"

        self.compruebaTabCoord()

        self.tablero.setFocus()

        self.importaOtroTablero()
Esempio n. 9
0
    def __init__(self, owner, tactica, ncopia=None):
        QtGui.QWidget.__init__(self)

        self.owner = owner
        self.tacticaINI = tactica
        if ncopia is not None:
            regHistorico = tactica.historico()[ncopia]
        else:
            regHistorico = None

        # Total por ficheros
        self.liFTOTAL = tactica.calculaTotales()
        total = sum(self.liFTOTAL)

        # N. puzzles
        if regHistorico:
            num = regHistorico["PUZZLES"]
        else:
            num = tactica.PUZZLES
        if not num or num > total:
            num = total

        lbPuzzles = Controles.LB(
            self,
            _("Max number of puzzles in each block") + ": ")
        self.sbPuzzles = Controles.SB(self, num, 1, total)

        # Reference
        lbReference = Controles.LB(self, _("Reference") + ": ")
        self.edReference = Controles.ED(self)

        # Iconos
        icoMas = Iconos.Add()
        icoMenos = Iconos.Delete()
        icoCancel = Iconos.CancelarPeque()
        icoReset = Iconos.MoverAtras()

        def tbGen(prev):
            liAcciones = (
                (_("Add"), icoMas, "%s_add" % prev),
                (_("Delete"), icoMenos, "%s_delete" % prev),
                None,
                (_("Delete all"), icoCancel, "%s_delete_all" % prev),
                None,
                (_("Reset"), icoReset, "%s_reset" % prev),
                None,
            )
            tb = Controles.TB(self, liAcciones, tamIcon=16, siTexto=False)
            return tb

        f = Controles.TipoLetra(peso=75)

        # Repeticiones de cada puzzle
        if regHistorico:
            self.liJUMPS = regHistorico["JUMPS"][:]
        else:
            self.liJUMPS = tactica.JUMPS[:]
        tb = tbGen("jumps")
        oCol = Columnas.ListaColumnas()
        oCol.nueva("NUMERO", _("Repetition"), 80, siCentrado=True)
        oCol.nueva("JUMPS_SEPARATION",
                   _("Separation"),
                   80,
                   siCentrado=True,
                   edicion=Delegados.LineaTexto(siEntero=True))
        self.grid_jumps = Grid.Grid(self,
                                    oCol,
                                    siSelecFilas=True,
                                    siEditable=True,
                                    id="j")
        self.grid_jumps.setMinimumWidth(self.grid_jumps.anchoColumnas() + 20)
        ly = Colocacion.V().control(tb).control(self.grid_jumps)
        gbJumps = Controles.GB(self, _("Repetitions of each puzzle"),
                               ly).ponFuente(f)
        self.grid_jumps.gotop()

        # Repeticion del bloque
        if regHistorico:
            self.liREPEAT = regHistorico["REPEAT"][:]
        else:
            self.liREPEAT = tactica.REPEAT[:]
        tb = tbGen("repeat")
        oCol = Columnas.ListaColumnas()
        oCol.nueva("NUMERO", _("Block"), 40, siCentrado=True)
        self.liREPEATtxt = (_("Original"), _("Random"), _("Previous"))
        oCol.nueva("REPEAT_ORDER",
                   _("Order"),
                   100,
                   siCentrado=True,
                   edicion=Delegados.ComboBox(self.liREPEATtxt))
        self.grid_repeat = Grid.Grid(self,
                                     oCol,
                                     siSelecFilas=True,
                                     siEditable=True,
                                     id="r")
        self.grid_repeat.setMinimumWidth(self.grid_repeat.anchoColumnas() + 20)
        ly = Colocacion.V().control(tb).control(self.grid_repeat)
        gbRepeat = Controles.GB(self, _("Blocks"), ly).ponFuente(f)
        self.grid_repeat.gotop()

        # Penalizaciones
        if regHistorico:
            self.liPENAL = regHistorico["PENALIZATION"][:]
        else:
            self.liPENAL = tactica.PENALIZATION[:]
        tb = tbGen("penal")
        oCol = Columnas.ListaColumnas()
        oCol.nueva("NUMERO", _("N."), 20, siCentrado=True)
        oCol.nueva("PENAL_POSITIONS",
                   _("Positions"),
                   100,
                   siCentrado=True,
                   edicion=Delegados.LineaTexto(siEntero=True))
        oCol.nueva("PENAL_%", _("Affected"), 100, siCentrado=True)
        self.grid_penal = Grid.Grid(self,
                                    oCol,
                                    siSelecFilas=True,
                                    siEditable=True,
                                    id="p")
        self.grid_penal.setMinimumWidth(self.grid_penal.anchoColumnas() + 20)
        ly = Colocacion.V().control(tb).control(self.grid_penal)
        gbPenal = Controles.GB(self, _("Penalties"), ly).ponFuente(f)
        self.grid_penal.gotop()

        # ShowText
        if regHistorico:
            self.liSHOWTEXT = regHistorico["SHOWTEXT"][:]
        else:
            self.liSHOWTEXT = tactica.SHOWTEXT[:]
        tb = tbGen("show")
        oCol = Columnas.ListaColumnas()
        self.liSHOWTEXTtxt = (_("No"), _("Yes"))
        oCol.nueva("NUMERO", _("N."), 20, siCentrado=True)
        oCol.nueva("SHOW_VISIBLE",
                   _("Visible"),
                   100,
                   siCentrado=True,
                   edicion=Delegados.ComboBox(self.liSHOWTEXTtxt))
        oCol.nueva("SHOW_%", _("Affected"), 100, siCentrado=True)
        self.grid_show = Grid.Grid(self,
                                   oCol,
                                   siSelecFilas=True,
                                   siEditable=True,
                                   id="s")
        self.grid_show.setMinimumWidth(self.grid_show.anchoColumnas() + 20)
        ly = Colocacion.V().control(tb).control(self.grid_show)
        gbShow = Controles.GB(self, _("Show text associated with each puzzle"),
                              ly).ponFuente(f)
        self.grid_show.gotop()

        # Files
        if regHistorico:
            self.liFILES = regHistorico["FILESW"][:]
        else:
            self.liFILES = []
            for num, (fich, w, d, h) in enumerate(tactica.filesw):
                if not d or d < 1:
                    d = 1
                if not h or h > self.liFTOTAL[num] or h < 1:
                    h = self.liFTOTAL[num]
                if d > h:
                    d, h = h, d
                self.liFILES.append([fich, w, d, h])
        oCol = Columnas.ListaColumnas()
        oCol.nueva("FILE", _("File"), 220, siCentrado=True)
        oCol.nueva("WEIGHT",
                   _("Weight"),
                   100,
                   siCentrado=True,
                   edicion=Delegados.LineaTexto(siEntero=True))
        oCol.nueva("TOTAL", _("Total"), 100, siCentrado=True)
        oCol.nueva("FROM",
                   _("From"),
                   100,
                   siCentrado=True,
                   edicion=Delegados.LineaTexto(siEntero=True))
        oCol.nueva("TO",
                   _("To"),
                   100,
                   siCentrado=True,
                   edicion=Delegados.LineaTexto(siEntero=True))
        self.grid_files = Grid.Grid(self,
                                    oCol,
                                    siSelecFilas=True,
                                    siEditable=True,
                                    id="f")
        self.grid_files.setMinimumWidth(self.grid_files.anchoColumnas() + 20)
        ly = Colocacion.V().control(self.grid_files)
        gbFiles = Controles.GB(self, _("FNS files"), ly).ponFuente(f)
        self.grid_files.gotop()

        # Layout
        lyReference = Colocacion.H().control(lbReference).control(
            self.edReference)
        lyPuzzles = Colocacion.H().control(lbPuzzles).control(self.sbPuzzles)
        ly = Colocacion.G()
        ly.otro(lyPuzzles, 0, 0).otro(lyReference, 0, 1)
        ly.filaVacia(1, 5)
        ly.controld(gbJumps, 2, 0).control(gbPenal, 2, 1)
        ly.filaVacia(3, 5)
        ly.controld(gbRepeat, 4, 0)
        ly.control(gbShow, 4, 1)
        ly.filaVacia(5, 5)
        ly.control(gbFiles, 6, 0, 1, 2)

        layout = Colocacion.V().espacio(10).otro(ly)

        self.setLayout(layout)

        self.grid_repeat.gotop()
    def __init__(self, procesador, winBookGuide, dbGamesFEN):
        QtGui.QWidget.__init__(self)

        self.winBookGuide = winBookGuide
        self.dbGamesFEN = dbGamesFEN
        self.procesador = procesador
        self.configuracion = procesador.configuracion

        self.infoMove = None  # <-- setInfoMove
        self.numJugada = 0  # Se usa para indicarla al mostrar el pgn en infoMove

        self.terminado = False # singleShot

        self.liFiltro = []
        self.where = None

        # Grid
        oColumnas = Columnas.ListaColumnas()
        oColumnas.nueva("numero", _("N."), 70, siCentrado=True)
        liBasic = dbGamesFEN.liCamposBase
        for clave in liBasic:
            rotulo = TrListas.pgnLabel(clave)
            siCentrado = clave != "EVENT"

            ancho = 140 if clave == "FEN" else 70  # para que sirva con WBG_GamesFEN
            oColumnas.nueva(clave, rotulo, ancho, siCentrado=siCentrado)
        oColumnas.nueva("rowid", _("Row ID"), 70, siCentrado=True)

        self.grid = Grid.Grid(self, oColumnas, siSelecFilas=True, siSeleccionMultiple=True, xid="wgamesfen")

        # Status bar
        self.status = QtGui.QStatusBar(self)
        self.status.setFixedHeight(22)

        # ToolBar
        liAccionesWork = [
            (_("Close"), Iconos.MainMenu(), self.tw_terminar), None,
            (_("File"), Iconos.File(), self.tg_file), None,
            (_("New"), Iconos.Nuevo(), self.tw_nuevo, _("Add a new game")), None,
            (_("Edit"), Iconos.Modificar(), self.tw_editar), None,
            (_("First"), Iconos.Inicio(), self.tw_gotop), None,
            (_("Last"), Iconos.Final(), self.tw_gobottom), None,
            (_("Filter"), Iconos.Filtrar(), self.tw_filtrar), None,
            (_("Remove"), Iconos.Borrar(), self.tw_borrar),None,
            (_("Up"), Iconos.Arriba(), self.tw_up), None,
            (_("Down"), Iconos.Abajo(), self.tw_down), None,
            (_("Config"), Iconos.Configurar(), self.tw_configure), None,
            (_("Utilities"), Iconos.Utilidades(), self.tw_utilities), None,
        ]

        self.tbWork = QTVarios.LCTB(self, liAccionesWork, tamIcon=24, puntos=procesador.configuracion.puntosTB)

        self.lbName = Controles.LB(self, "").ponWrap().alinCentrado().ponColorFondoN("white", "#4E5A65").ponTipoLetra(puntos=16)
        lyNT = Colocacion.H().control(self.lbName)

        lyTB = Colocacion.H().control(self.tbWork)

        layout = Colocacion.V().otro(lyNT).otro(lyTB).control(self.grid).control(self.status).margen(1)

        self.setLayout(layout)

        self.setNameToolBar()
Esempio n. 11
0
    def __init__(self, tabsAnalisis, procesador, configuration):
        QtWidgets.QWidget.__init__(self)

        self.analyzing = False
        self.position = None
        self.li_analysis = []
        self.manager_motor = None
        self.current_mrm = None

        self.dbop = tabsAnalisis.dbop

        self.procesador = procesador
        self.configuration = configuration
        self.with_figurines = configuration.x_pgn_withfigurines

        self.tabsAnalisis = tabsAnalisis
        self.bt_start = Controles.PB(self, "", self.start).ponIcono(
            Iconos.Pelicula_Seguir(), 32)
        self.bt_stop = Controles.PB(self, "", self.stop).ponIcono(
            Iconos.Pelicula_Pausa(), 32)
        self.bt_stop.hide()

        self.lb_engine = Controles.LB(self, _("Engine") + ":")
        liMotores = configuration.comboMotores()  # (name, key)
        default = configuration.tutor.key
        engine = self.dbop.getconfig("ENGINE", default)
        if len([key for name, key in liMotores if key == engine]) == 0:
            engine = default
        self.cb_engine = Controles.CB(self, liMotores,
                                      engine).capture_changes(self.reset_motor)

        multipv = self.dbop.getconfig("ENGINE_MULTIPV", 5)
        lb_multipv = Controles.LB(self, _("Multi PV") + ": ")
        self.sb_multipv = Controles.SB(self, multipv, 1, 500).tamMaximo(50)

        self.lb_analisis = (Controles.LB(
            self, "").set_background("#C9D2D7").ponTipoLetra(
                puntos=configuration.x_pgn_fontpoints))

        o_columns = Columnas.ListaColumnas()
        o_columns.nueva("PDT", _("Evaluation"), 120, centered=True)
        delegado = Delegados.EtiquetaPOS(
            True, siLineas=False) if self.with_figurines else None
        o_columns.nueva("SOL", "", 100, centered=True, edicion=delegado)
        o_columns.nueva("PGN", _("Solution"), 860)

        self.grid_analysis = Grid.Grid(self,
                                       o_columns,
                                       siSelecFilas=True,
                                       siCabeceraVisible=False)
        self.grid_analysis.tipoLetra(puntos=configuration.x_pgn_fontpoints)
        self.grid_analysis.ponAltoFila(configuration.x_pgn_rowheight)
        # self.register_grid(self.grid_analysis)

        ly_lin1 = Colocacion.H().control(self.bt_start).control(
            self.bt_stop).control(self.lb_engine)
        ly_lin1.control(self.cb_engine)
        ly_lin1.espacio(50).control(lb_multipv).control(
            self.sb_multipv).relleno()
        ly = Colocacion.V().otro(ly_lin1).control(self.lb_analisis).control(
            self.grid_analysis).margen(3)

        self.setLayout(ly)

        self.reset_motor()
Esempio n. 12
0
    def __init__(self, owner, name, title, icono, folder, li_tam_blocks):

        self.tol = TurnOnLights.read_tol(name, title, folder, li_tam_blocks)
        self.reinit = False

        titulo = _("Turn on the lights") + ": " + title
        if self.tol.is_calculation_mode():
            tipo = _("Calculation mode")
            background = "#88AA3A"
        else:
            tipo = _("Memory mode")
            background = "#BDDBE8"

        extparam = "tol%s-%d" % (name, self.tol.work_level)

        QTVarios.WDialogo.__init__(self, owner, titulo, icono, extparam)

        self.colorTheme = QTUtil.qtColor("#F0F0F0")

        lb = Controles.LB(self, tipo)
        lb.ponFondoN(background).alinCentrado().ponTipoLetra(puntos=14)

        # Toolbar
        tb = Controles.TBrutina(self)
        tb.new(_("Close"), Iconos.MainMenu(), self.terminar)
        anterior, siguiente = self.tol.prev_next()
        if anterior:
            tb.new(_("Previous"), Iconos.Anterior(), self.goto_previous)
        if siguiente:
            tb.new(_("Next"), Iconos.Siguiente(), self.goto_next)
        tb.new(_("Config"), Iconos.Configurar(), self.config)
        tb.new(_("Information"), Iconos.Informacion(), self.colors)

        # Lista
        oColumnas = Columnas.ListaColumnas()
        work_level = self.tol.work_level + 1
        oColumnas.nueva("THEME",
                        _("Level %d/%d") % (work_level, self.tol.num_levels),
                        175)
        for x in range(self.tol.num_blocks):
            oColumnas.nueva("BLOCK%d" % x,
                            "%d" % (x + 1, ),
                            42,
                            siCentrado=True,
                            edicion=Delegados.PmIconosColor())

        self.grid = grid = Grid.Grid(self,
                                     oColumnas,
                                     altoFila=42,
                                     background="white")
        self.grid.setAlternatingRowColors(False)
        self.grid.tipoLetra(puntos=10, peso=500)
        nAnchoPgn = self.grid.anchoColumnas() + 20
        self.grid.setMinimumWidth(nAnchoPgn)
        self.registrarGrid(grid)

        # Colocamos ---------------------------------------------------------------
        ly = Colocacion.V().control(lb).control(tb).control(self.grid)

        self.setLayout(ly)

        alto = self.tol.num_themes * 42 + 146
        self.recuperarVideo(siTam=True,
                            altoDefecto=alto,
                            anchoDefecto=nAnchoPgn)
Esempio n. 13
0
    def __init__(self, cpu):
        WKibCommon.WKibCommon.__init__(self, cpu, Iconos.Kibitzer())

        self.siCandidates = cpu.tipo == Kibitzers.KIB_CANDIDATES or Kibitzers.KIB_THREATS

        if cpu.tipo == Kibitzers.KIB_BESTMOVE:
            rotulo = _("Best move")
        elif cpu.tipo == Kibitzers.KIB_THREATS:
            rotulo = _("Threats")
        else:
            rotulo = _("Alternatives")

        delegado = Delegados.EtiquetaPOS(
            True, siLineas=False) if self.with_figurines else None

        o_columns = Columnas.ListaColumnas()
        if not self.siCandidates:
            o_columns.nueva("DEPTH", "^", 40, centered=True)
        o_columns.nueva("BESTMOVE",
                        rotulo,
                        80,
                        centered=True,
                        edicion=delegado)
        o_columns.nueva("EVALUATION", _("Evaluation"), 85, centered=True)
        o_columns.nueva("MAINLINE", _("Main line"), 400)
        self.grid = Grid.Grid(self,
                              o_columns,
                              dicVideo=self.dicVideo,
                              siSelecFilas=True)

        self.lbDepth = Controles.LB(self)

        li_acciones = [
            (_("Quit"), Iconos.Kibitzer_Close(), self.terminar),
            (_("Continue"), Iconos.Kibitzer_Play(), self.play),
            (_("Pause"), Iconos.Kibitzer_Pause(), self.pause),
            (_("Takeback"), Iconos.Kibitzer_Back(), self.takeback),
            (_("The line selected is saved on clipboard"),
             Iconos.Kibitzer_Clipboard(), self.portapapelesJugSelected),
            (_("Analyze only color"), Iconos.Kibitzer_Side(), self.color),
            (_("Show/hide board"), Iconos.Kibitzer_Board(), self.config_board),
            (_("Manual position"), Iconos.Kibitzer_Voyager(),
             self.set_position),
            ("%s: %s" % (_("Enable"), _("window on top")),
             Iconos.Kibitzer_Up(), self.windowTop),
            ("%s: %s" % (_("Disable"), _("window on top")),
             Iconos.Kibitzer_Down(), self.windowBottom),
            (_("Options"), Iconos.Kibitzer_Options(), self.change_options),
        ]
        if cpu.tipo == Kibitzers.KIB_THREATS:
            del li_acciones[4]
        self.tb = Controles.TBrutina(self,
                                     li_acciones,
                                     with_text=False,
                                     icon_size=24)
        self.tb.setAccionVisible(self.play, False)

        ly1 = Colocacion.H().control(self.tb).relleno().control(
            self.lbDepth).margen(0)
        ly2 = Colocacion.H().control(self.board).control(self.grid).margen(0)
        layout = Colocacion.V().otro(ly1).espacio(-10).otro(ly2).margen(3)
        self.setLayout(layout)

        self.siPlay = True
        self.is_white = True
        self.is_black = True

        if not self.show_board:
            self.board.hide()
        self.restore_video(self.dicVideo)
        self.ponFlags()

        self.engine = self.lanzaMotor()

        self.timer = QtCore.QTimer(self)
        self.timer.timeout.connect(self.compruebaInput)
        self.timer.start(500)
        self.depth = 0
        self.veces = 0
Esempio n. 14
0
    def __init__(self, procesador, wb_database, dbGames):
        QtWidgets.QWidget.__init__(self)

        self.wb_database = wb_database
        self.procesador = procesador
        self.data = [[], [], [], []]
        self.movesWhite = []
        self.movesBlack = []
        self.lastFilterMoves = {"white": "", "black": ""}
        self.configuracion = procesador.configuracion

        self.infoMove = None  # <-- setInfoMove

        self.rebuilding = False

        self.ap = AperturasStd.ap

        self.gridOpeningWhite = self.gridOpeningBlack = self.gridMovesWhite = self.gridMovesBlack = 0

        # GridOpening
        ancho = 54
        o_columns = Columnas.ListaColumnas()
        o_columns.nueva("opening", _("Opening"), 200)
        o_columns.nueva("games", _("Games"), ancho, siDerecha=True)
        o_columns.nueva("pgames", "% " + _("Games"), 70, siDerecha=True)
        o_columns.nueva("win", _("Win"), ancho, siDerecha=True)
        o_columns.nueva("draw", _("Draw"), ancho, siDerecha=True)
        o_columns.nueva("lost", _("Loss"), ancho, siDerecha=True)
        o_columns.nueva("pwin", "% " + _("Win"), ancho, siDerecha=True)
        o_columns.nueva("pdraw", "% " + _("Draw"), ancho, siDerecha=True)
        o_columns.nueva("plost", "% " + _("Loss"), ancho, siDerecha=True)
        o_columns.nueva("pdrawwin", "%% %s" % _("W+D"), ancho, siDerecha=True)
        o_columns.nueva("pdrawlost", "%% %s" % _("L+D"), ancho, siDerecha=True)

        self.gridOpeningWhite = Grid.Grid(self, o_columns, siSelecFilas=True)
        self.gridOpeningBlack = Grid.Grid(self, o_columns, siSelecFilas=True)

        # GridWhite/GridBlack
        o_columns = Columnas.ListaColumnas()
        o_columns.nueva("games", _("Games"), ancho, siDerecha=True)
        o_columns.nueva("win", _("Win"), ancho, siDerecha=True)
        o_columns.nueva("draw", _("Draw"), ancho, siDerecha=True)
        o_columns.nueva("lost", _("Loss"), ancho, siDerecha=True)
        o_columns.nueva("pwin", "% " + _("Win"), ancho, siDerecha=True)
        o_columns.nueva("pdraw", "% " + _("Draw"), ancho, siDerecha=True)
        o_columns.nueva("plost", "% " + _("Loss"), ancho, siDerecha=True)

        ancho_col = 40
        si_figurines_pgn = self.configuracion.x_pgn_withfigurines
        for x in range(1, 50):
            num = (x - 1) * 2
            o_columns.nueva(
                str(num),
                "%d." % x,
                ancho_col,
                centered=True,
                edicion=Delegados.EtiquetaPOS(si_figurines_pgn,
                                              siLineas=False),
            )
            o_columns.nueva(
                str(num + 1),
                "...",
                ancho_col,
                centered=True,
                edicion=Delegados.EtiquetaPOS(si_figurines_pgn,
                                              siLineas=False),
            )

        self.gridMovesWhite = Grid.Grid(self, o_columns, siSelecFilas=True)
        self.gridMovesBlack = Grid.Grid(self, o_columns, siSelecFilas=True)

        wWhite = QtWidgets.QWidget(self)
        tbmovesw = ToolbarMoves("white", self.dispatchMoves)
        ly = Colocacion.V().control(tbmovesw).control(
            self.gridMovesWhite).margen(3)
        wWhite.setLayout(ly)

        wblack = QtWidgets.QWidget(self)
        tbmovesb = ToolbarMoves("black", self.dispatchMoves)
        ly = Colocacion.V().control(tbmovesb).control(
            self.gridMovesBlack).margen(3)
        wblack.setLayout(ly)

        tabs = Controles.Tab(self)
        tabs.nuevaTab(self.gridOpeningWhite, _("White openings"))
        tabs.nuevaTab(self.gridOpeningBlack, _("Black openings"))
        tabs.nuevaTab(wWhite, _("White moves"))
        tabs.nuevaTab(wblack, _("Black moves"))

        # ToolBar
        liAccionesWork = [
            ("", Iconos.Usuarios(), self.tw_changeplayer),
            None,
            (_("Rebuild"), Iconos.Reindexar(), self.tw_rebuild),
            None,
        ]

        self.tbWork = Controles.TBrutina(self, liAccionesWork)
        self.tbWork.setToolButtonStyle(QtCore.Qt.ToolButtonTextBesideIcon)

        lyTB = Colocacion.H().control(self.tbWork)
        layout = Colocacion.V().otro(lyTB).control(tabs).margen(1)

        self.setLayout(layout)
        self.qtColor = (
            QTUtil.qtColorRGB(221, 255, 221),
            QTUtil.qtColorRGB(247, 247, 247),
            QTUtil.qtColorRGB(255, 217, 217),
        )

        self.setdbGames(dbGames)
        self.setPlayer(self.leeVariable("PLAYER", ""))
Esempio n. 15
0
    def __init__(self, wowner, configuration, path_lcbin):
        self.title = os.path.basename(path_lcbin)[:-6]
        QTVarios.WDialogo.__init__(self, wowner, self.title, Iconos.Book(),
                                   "polyglot")

        self.configuration = configuration
        self.path_lcbin = path_lcbin

        self.owner = wowner

        self.db_entries = DBPolyglot.DBPolyglot(path_lcbin)

        self.pol_import = PolyglotImportExports.PolyglotImport(self)
        self.pol_export = PolyglotImportExports.PolyglotExport(self)

        self.li_moves = []
        self.history = []

        conf_board = configuration.config_board("WPOLYGLOT", 48)
        self.board = Board.Board(self, conf_board)
        self.board.crea()
        self.board.set_dispatcher(self.mensajero)
        self.with_figurines = configuration.x_pgn_withfigurines

        o_columnas = Columnas.ListaColumnas()
        delegado = Delegados.EtiquetaPOS(
            True,
            siLineas=False) if self.configuration.x_pgn_withfigurines else None
        o_columnas.nueva("move",
                         _("Move"),
                         80,
                         centered=True,
                         edicion=delegado,
                         siEditable=False)
        o_columnas.nueva("%", "%", 60, siDerecha=True, siEditable=False)
        o_columnas.nueva("weight",
                         _("Weight"),
                         60,
                         siDerecha=True,
                         edicion=Delegados.LineaTexto(siEntero=True))
        o_columnas.nueva("score",
                         _("Score"),
                         60,
                         siDerecha=True,
                         edicion=Delegados.LineaTexto(siEntero=True))
        o_columnas.nueva("depth",
                         _("Depth"),
                         60,
                         siDerecha=True,
                         edicion=Delegados.LineaTexto(siEntero=True))
        o_columnas.nueva("learn",
                         _("Learn"),
                         60,
                         siDerecha=True,
                         edicion=Delegados.LineaTexto(siEntero=True))
        self.grid_moves = Grid.Grid(self, o_columnas, siEditable=True)
        self.grid_moves.setMinimumWidth(self.grid_moves.anchoColumnas() + 20)

        li_acciones = (
            (_("Close"), Iconos.MainMenu(), self.terminar),
            None,
            (_("Takeback"), Iconos.Atras(), self.takeback),
            None,
            (_("Voyager"), Iconos.Voyager32(), self.voyager),
            None,
            (_("Import"), Iconos.Import8(), self.pol_import.importar),
            None,
            (_("Create book"), Iconos.BinBook(), self.pol_export.exportar),
            None,
        )
        self.tb = Controles.TBrutina(self, li_acciones)

        ly2 = Colocacion.V().control(self.tb).control(self.grid_moves)

        layout = Colocacion.H().control(self.board).otro(ly2)
        self.setLayout(layout)

        self.restore_video()

        self.position = None
        position = Position.Position()
        position.set_pos_initial()
        self.set_position(position, True)
Esempio n. 16
0
    def __init__(self, wowner, configuracion, path_dbbin):
        title = os.path.basename(path_dbbin)[:-6]
        QTVarios.WDialogo.__init__(self, wowner, title, Iconos.Book(),
                                   "polyglot")

        self.configuracion = configuracion
        self.path_dbbin = path_dbbin
        self.path_mkbin = self.path_dbbin[:-6] + ".mkbin"

        self.owner = wowner
        self.key = None
        self.key_str10 = None

        self.db_entries = UtilSQL.DictSQL(self.path_dbbin)
        if Util.filesize(self.path_mkbin) < 0:
            f = open(self.path_mkbin, "wb")
            f.close()
        self.pol_mkbin = FasterCode.Polyglot(self.path_mkbin)

        self.li_moves = []
        self.history = []

        self.pol_imports = PolyglotImports.PolyglotImports(self)

        conf_tablero = configuracion.config_board("WPOLYGLOT", 48)
        self.tablero = Tablero.Tablero(self, conf_tablero)
        self.tablero.crea()
        self.tablero.set_dispatcher(self.mensajero)
        self.siFigurines = configuracion.x_pgn_withfigurines

        o_columnas = Columnas.ListaColumnas()
        delegado = Delegados.EtiquetaPOS(
            True,
            siLineas=False) if self.configuracion.x_pgn_withfigurines else None
        o_columnas.nueva("move",
                         _("Move"),
                         80,
                         centered=True,
                         edicion=delegado,
                         siEditable=False)
        o_columnas.nueva("%", "%", 60, siDerecha=True, siEditable=False)
        o_columnas.nueva("weight",
                         _("weight"),
                         60,
                         siDerecha=True,
                         edicion=Delegados.LineaTexto(siEntero=True))
        o_columnas.nueva("score",
                         _("Score"),
                         60,
                         siDerecha=True,
                         edicion=Delegados.LineaTexto(siEntero=True))
        o_columnas.nueva("depth",
                         _("Depth"),
                         60,
                         siDerecha=True,
                         edicion=Delegados.LineaTexto(siEntero=True))
        o_columnas.nueva("learn",
                         _("Learn"),
                         60,
                         siDerecha=True,
                         edicion=Delegados.LineaTexto(siEntero=True))
        self.grid_moves = Grid.Grid(self, o_columnas, siEditable=True)
        self.grid_moves.setMinimumWidth(self.grid_moves.anchoColumnas() + 20)

        li_acciones = (
            (_("Close"), Iconos.MainMenu(), self.terminar),
            None,
            (_("Takeback"), Iconos.Atras(), self.takeback),
            None,
            (_("Voyager"), Iconos.Voyager(), self.voyager),
            None,
            (_("Import"), Iconos.Import8(), self.pol_imports.importar),
            None,
            (_("Export"), Iconos.Export8(), self.pol_imports.exportar),
            None,
        )
        self.tb = Controles.TBrutina(self, li_acciones)

        ly2 = Colocacion.V().control(self.tb).control(self.grid_moves)

        layout = Colocacion.H().control(self.tablero).otro(ly2)
        self.setLayout(layout)

        self.restore_video()

        self.position = None
        position = Position.Position()
        position.set_pos_initial()
        self.set_position(position, True)
Esempio n. 17
0
    def __init__(self, manager, elo, titulo, icono, tipo):
        QTVarios.WDialogo.__init__(self, manager.main_window, titulo, icono, tipo.lower())

        self.siMicElo = tipo == "MICELO"
        self.siMicPer = tipo == "MICPER"
        self.siMic = self.siMicElo or self.siMicPer

        self.manager = manager

        self.colorNoJugable = QTUtil.qtColorRGB(241, 226, 226)
        self.colorMenor = QTUtil.qtColorRGB(245, 245, 245)
        self.colorMayor = None
        self.elo = elo
        self.tipo = tipo

        # Toolbar
        li_acciones = [
            (_("Choose"), Iconos.Aceptar(), self.elegir),
            None,
            (_("Cancel"), Iconos.Cancelar(), self.cancelar),
            None,
            (_("Random opponent"), Iconos.FAQ(), self.selectRandom),
            None,
        ]
        if self.siMicElo:
            li_acciones.append((_("Reset"), Iconos.Reiniciar(), self.reset))
            li_acciones.append(None)

        self.tb = QTVarios.LCTB(self, li_acciones)

        self.liMotores = self.manager.list_engines(elo)
        self.liMotoresActivos = self.liMotores

        liFiltro = (
            ("---", None),
            (">=", ">"),
            ("<=", "<"),
            ("+-100", "100"),
            ("+-200", "200"),
            ("+-400", "400"),
            ("+-800", "800"),
        )

        self.cbElo = Controles.CB(self, liFiltro, None).capture_changes(self.filtrar)

        minimo = 9999
        maximo = 0
        for mt in self.liMotores:
            if mt.siJugable:
                if mt.elo < minimo:
                    minimo = mt.elo
                if mt.elo > maximo:
                    maximo = mt.elo
        self.sbElo, lbElo = QTUtil2.spinBoxLB(self, elo, minimo, maximo, maxTam=50, etiqueta=_("Elo"))
        self.sbElo.capture_changes(self.filtrar)

        if self.siMic:
            liCaract = []
            st = set()
            for mt in self.liMotores:
                mt.liCaract = li = mt.id_info.split("\n")
                mt.txtCaract = ", ".join([_F(x) for x in li])
                for x in li:
                    if not (x in st):
                        st.add(x)
                        liCaract.append((_F(x), x))
            liCaract.sort(key=lambda x: x[1])
            liCaract.insert(0, ("---", None))
            self.cbCaract = Controles.CB(self, liCaract, None).capture_changes(self.filtrar)

        ly = Colocacion.H().control(lbElo).control(self.cbElo).control(self.sbElo)
        if self.siMic:
            ly.control(self.cbCaract)
        ly.relleno(1)
        gbRandom = Controles.GB(self, "", ly)

        # Lista
        o_columns = Columnas.ListaColumnas()
        o_columns.nueva("NUMBER", _("N."), 35, centered=True)
        o_columns.nueva("ENGINE", _("Name"), 140)
        o_columns.nueva("ELO", _("Elo"), 60, siDerecha=True)
        if not self.siMicPer:
            o_columns.nueva("GANA", _("Win"), 80, centered=True)
            o_columns.nueva("TABLAS", _("Draw"), 80, centered=True)
            o_columns.nueva("PIERDE", _("Lost"), 80, centered=True)
        if self.siMic:
            o_columns.nueva("INFO", _("Information"), 300, centered=True)

        self.grid = Grid.Grid(self, o_columns, siSelecFilas=True, siCabeceraMovible=False, altoFila=24)
        n = self.grid.anchoColumnas()
        self.grid.setMinimumWidth(n + 20)
        self.register_grid(self.grid)

        f = Controles.TipoLetra(puntos=9)
        self.grid.ponFuente(f)

        self.grid.gotop()

        # Layout
        lyH = Colocacion.H().control(self.tb).control(gbRandom)
        layout = Colocacion.V().otro(lyH).control(self.grid).margen(3)
        self.setLayout(layout)

        self.filtrar()

        self.restore_video()
Esempio n. 18
0
    def __init__(self, procesador, name, title, icono, folder, li_tam_blocks,
                 one_line):
        self.one_line = one_line
        if one_line:
            self.tol = TurnOnLights.read_oneline_tol()
        else:
            self.tol = TurnOnLights.read_tol(name, title, folder,
                                             li_tam_blocks)
        self.reinit = False

        titulo = _("Turn on the lights") + ": " + title
        if self.tol.is_calculation_mode():
            tipo = _("Calculation mode")
            background = "#88AA3A"
        else:
            tipo = _("Memory mode")
            background = "#BDDBE8"

        self.procesador = procesador
        extparam = "tol%s-%d" % (name, self.tol.work_level)

        QTVarios.WDialogo.__init__(self, procesador.main_window, titulo, icono,
                                   extparam)

        self.colorTheme = QTUtil.qtColor("#F0F0F0")

        lb = Controles.LB(self, tipo)
        lb.set_background(background).align_center().ponTipoLetra(puntos=14)

        # Toolbar
        tb = QTVarios.LCTB(self)
        tb.new(_("Close"), Iconos.MainMenu(), self.terminar)
        anterior, siguiente, terminado = self.tol.prev_next()
        if anterior:
            tb.new(_("Previous"), Iconos.Anterior(), self.goto_previous)
        if siguiente:
            tb.new(_("Next"), Iconos.Siguiente(), self.goto_next)
        tb.new(_("Config"), Iconos.Configurar(), self.config)
        tb.new(_("Information"), Iconos.Informacion(), self.colors)
        if terminado:
            tb.new(_("Rebuild"), Iconos.Reindexar(), self.rebuild)

        # Lista
        o_columns = Columnas.ListaColumnas()
        work_level = self.tol.work_level + 1
        o_columns.nueva("THEME",
                        _("Level %d/%d") % (work_level, self.tol.num_levels),
                        175)

        edicionIconos = Delegados.PmIconosColor()
        self.dicIconos = {}
        for k, pm in edicionIconos.dicpmIconos.items():
            self.dicIconos[k] = QtGui.QIcon(pm)

        for x in range(self.tol.num_blocks):
            o_columns.nueva("BLOCK%d" % x,
                            "%d" % (x + 1, ),
                            42,
                            centered=True,
                            edicion=edicionIconos)

        self.grid = grid = Grid.Grid(self,
                                     o_columns,
                                     altoFila=42,
                                     background="white")
        self.grid.setAlternatingRowColors(False)
        self.grid.tipoLetra(puntos=10, peso=500)
        nAnchoPgn = self.grid.anchoColumnas() + 20
        self.grid.setMinimumWidth(nAnchoPgn)
        self.register_grid(grid)

        # Colocamos ---------------------------------------------------------------
        ly = Colocacion.V().control(lb).control(tb).control(self.grid)

        self.setLayout(ly)

        alto = self.tol.num_themes * 42 + 146
        self.restore_video(siTam=True,
                           altoDefecto=alto,
                           anchoDefecto=max(nAnchoPgn, 480))
Esempio n. 19
0
    def creaBloqueInformacion(self):
        configuration = self.manager.configuration
        width_pgn = configuration.x_pgn_width
        with_each_color = (width_pgn - 52 - 24) // 2
        nAnchoLabels = max(int((width_pgn - 3) // 2), 140)
        # # Pgn
        o_columns = Columnas.ListaColumnas()
        o_columns.nueva("NUMBER", _("N."), 52, centered=True)
        si_figurines_pgn = configuration.x_pgn_withfigurines
        o_columns.nueva(
            "WHITE",
            _("White"),
            with_each_color,
            edicion=Delegados.EtiquetaPGN(True if si_figurines_pgn else None))
        o_columns.nueva(
            "BLACK",
            _("Black"),
            with_each_color,
            edicion=Delegados.EtiquetaPGN(False if si_figurines_pgn else None))
        self.pgn = Grid.Grid(self, o_columns, siCabeceraMovible=False)
        self.pgn.setMinimumWidth(width_pgn)
        self.pgn.setHorizontalScrollBarPolicy(QtCore.Qt.ScrollBarAlwaysOff)
        self.pgn.tipoLetra(puntos=configuration.x_pgn_fontpoints)
        self.pgn.ponAltoFila(configuration.x_pgn_rowheight)
        self.pgn.set_right_button_without_rows(True)

        # # Blancas y negras
        f = Controles.TipoLetra(puntos=configuration.x_sizefont_infolabels + 2,
                                peso=75)
        self.lb_player_white = Controles.LB(self).anchoFijo(
            nAnchoLabels).align_center().ponFuente(f).set_wrap()
        style = (
            "QWidget { border-style: groove; border-width: 2px; border-color: Gray; padding: 4px 4px 4px 4px;background-color:%s;color:%s;}"
        )
        self.lb_player_white.setStyleSheet(style % ("white", "black"))

        self.lb_player_black = Controles.LB(self).anchoFijo(
            nAnchoLabels).align_center().ponFuente(f).set_wrap()
        self.lb_player_black.setStyleSheet(style % ("black", "white"))

        # # Capturas
        n_alto_fijo = 3 * (configuration.x_sizefont_infolabels + 2)
        self.lb_capt_white = Controles.LB(self).anchoFijo(
            nAnchoLabels).set_wrap().altoFijo(n_alto_fijo)
        style = "QWidget { border-style: groove; border-width: 1px; border-color: LightGray; padding: 2px 0px 2px 0px;}"
        self.lb_capt_white.setStyleSheet(style)

        self.lb_capt_black = Controles.LB(self).anchoFijo(
            nAnchoLabels).set_wrap().altoFijo(n_alto_fijo)
        self.lb_capt_black.setStyleSheet(style)

        # Relojes
        f = Controles.TipoLetra(
            "Arial Black" if Code.is_windows else Code.font_mono,
            puntos=26,
            peso=500)

        def lbReloj():
            lb = (Controles.LB(
                self,
                "00:00").ponFuente(f).align_center().set_foreground_backgound(
                    "#076C9F", "#EFEFEF").anchoMinimo(nAnchoLabels))
            lb.setFrameStyle(QtWidgets.QFrame.Box | QtWidgets.QFrame.Raised)
            return lb

        self.lb_clock_white = lbReloj()
        self.lb_clock_black = lbReloj()

        f = Controles.TipoLetra(puntos=12)
        # Boton de tutor activo
        self.bt_active_tutor = Controles.PB(self,
                                            "",
                                            rutina=self.change_tutor_active,
                                            plano=False).ponFuente(f)

        # Rotulos de informacion
        f = Controles.TipoLetra(puntos=configuration.x_sizefont_infolabels)
        self.lbRotulo1 = Controles.LB(self).set_wrap().ponFuente(f)
        self.lbRotulo2 = Controles.LB(self).set_wrap().ponFuente(f)
        f9 = Controles.TipoLetra(puntos=9)
        self.lbRotulo3 = Controles.LB(self).set_wrap().ponFuente(f9)
        self.lbRotulo3.setStyleSheet("*{ border: 1px solid darkgray }")
        self.lbRotulo3.altoFijo(48)

        # Lo escondemos
        self.lb_player_white.hide()
        self.lb_player_black.hide()
        self.lb_capt_white.hide()
        self.lb_capt_black.hide()
        self.lb_clock_white.hide()
        self.lb_clock_black.hide()
        self.lb_capt_white.hide()
        self.lb_capt_black.hide()
        self.pgn.hide()
        self.bt_active_tutor.hide()
        self.lbRotulo1.hide()
        self.lbRotulo2.hide()
        self.lbRotulo3.hide()

        # Layout

        # Arriba
        ly_color = Colocacion.G()
        ly_color.controlc(self.lb_player_white, 0,
                          0).controlc(self.lb_player_black, 0, 1)
        ly_color.controlc(self.lb_clock_white, 2,
                          0).controlc(self.lb_clock_black, 2, 1)

        # Abajo
        ly_capturas = Colocacion.H().control(self.lb_capt_white).control(
            self.lb_capt_black)

        ly_abajo = Colocacion.V()
        ly_abajo.setSizeConstraint(ly_abajo.SetFixedSize)
        ly_abajo.otro(ly_capturas)
        ly_abajo.control(self.bt_active_tutor)
        ly_abajo.control(self.lbRotulo1).control(self.lbRotulo2).control(
            self.lbRotulo3)

        ly_v = Colocacion.V().otro(ly_color).control(self.pgn)
        ly_v.otro(ly_abajo)

        return ly_v
Esempio n. 20
0
    def __init__(self, procesador, winBookGuide, dbGames, wsummary, siMoves=True):
        QtWidgets.QWidget.__init__(self)

        self.winBookGuide = winBookGuide
        self.dbGames = dbGames  # <--setdbGames
        self.procesador = procesador
        self.configuracion = procesador.configuracion

        self.siMoves = siMoves

        self.wsummary = wsummary
        self.infoMove = None  # <-- setInfoMove
        self.summaryActivo = None  # movimiento activo en summary
        self.numJugada = 0  # Se usa para indicarla al mostrar el pgn en infoMove

        self.terminado = False # singleShot

        self.liFiltro = []
        self.where = None

        self.last_opening = None

        # Grid
        oColumnas = Columnas.ListaColumnas()
        oColumnas.nueva("numero", _("N."), 70, siCentrado=True)
        liBasic = dbGames.liCamposBase
        ancho = 70
        for clave in liBasic:
            rotulo = TrListas.pgnLabel(clave)
            oColumnas.nueva(clave, rotulo, ancho, siCentrado=True)
        oColumnas.nueva("rowid", _("Row ID"), 70, siCentrado=True)

        self.grid = Grid.Grid(self, oColumnas, siSelecFilas=True, siSeleccionMultiple=True, xid="wgames")

        # Status bar
        self.status = QtWidgets.QStatusBar(self)
        self.status.setFixedHeight(22)

        # ToolBar
        liAccionesWork = [
            (_("Close"), Iconos.MainMenu(), self.tw_terminar), None,
            (_("File"), Iconos.File(), self.tg_file), None,
            (_("New"), Iconos.Nuevo(), self.tw_nuevo, _("Add a new game")), None,
            (_("Edit"), Iconos.Modificar(), self.tw_editar), None,
            (_("First"), Iconos.Inicio(), self.tw_gotop), None,
            (_("Last"), Iconos.Final(), self.tw_gobottom), None,
            (_("Filter"), Iconos.Filtrar(), self.tw_filtrar), None,
            (_("Remove"), Iconos.Borrar(), self.tw_borrar),None,
            (_("Move up"), Iconos.Arriba(), self.tw_up), None,
            (_("Move down"), Iconos.Abajo(), self.tw_down), None,
            (_("Config"), Iconos.Configurar(), self.tw_configure), None,
            (_("Utilities"), Iconos.Utilidades(), self.tw_utilities), None,
        ]

        self.tbWork = Controles.TBrutina(self, liAccionesWork, tamIcon=24)

        self.lbName = Controles.LB(self, "").ponWrap().alinCentrado().ponColorFondoN("white", "#4E5A65").ponTipoLetra(puntos=16)
        lyNT = Colocacion.H().control(self.lbName)
        if not siMoves:
            self.lbName.hide()

        lyTB = Colocacion.H().control(self.tbWork)

        layout = Colocacion.V().otro(lyNT).otro(lyTB).control(self.grid).control(self.status).margen(1)

        self.setLayout(layout)

        self.setNameToolBar()

        self.recuperaOrden()
    def __init__(self, procesador, siWoman):
        self.configuracion = procesador.configuracion
        self.procesador = procesador
        self.siWoman = siWoman

        self.dbHisto = Util.DicSQL(self.configuracion.ficheroGMhisto)
        self.bloqueApertura = None
        self.liAperturasFavoritas = []

        wParent = procesador.pantalla
        if siWoman:
            titulo = _("Play like a Woman Grandmaster")
            icono = Iconos.WGranMaestro()
        else:
            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(siWoman)
        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)
Esempio n. 22
0
    def creaBloqueInformacion(self):
        nAnchoPgn = self.gestor.configuracion.anchoPGN
        nAnchoColor = (nAnchoPgn - 35 - 20) / 2
        nAnchoLabels = max(int((nAnchoPgn - 3) / 2), 140)
        # # Pgn
        oColumnas = Columnas.ListaColumnas()
        oColumnas.nueva("NUMERO", _("N."), 35, siCentrado=True)
        configuracion = self.gestor.configuracion
        siFigurinesPGN = configuracion.figurinesPGN
        oColumnas.nueva(
            "BLANCAS",
            _("White"),
            nAnchoColor,
            edicion=Delegados.EtiquetaPGN(True if siFigurinesPGN else None))
        oColumnas.nueva(
            "NEGRAS",
            _("Black"),
            nAnchoColor,
            edicion=Delegados.EtiquetaPGN(False if siFigurinesPGN else None))
        self.pgn = Grid.Grid(self, oColumnas, siCabeceraMovible=False)
        self.pgn.setMinimumWidth(nAnchoPgn)
        self.pgn.tipoLetra(puntos=configuracion.puntosPGN)
        self.pgn.ponAltoFila(configuracion.altoFilaPGN)

        # # Blancas y negras
        f = Controles.TipoLetra(
            puntos=self.gestor.configuracion.tamFontRotulos + 2, peso=75)
        bl, ng = _("White"), _("Black")
        self.lbJugBlancas = Controles.LB(self, bl).anchoFijo(
            nAnchoLabels).alinCentrado().ponFuente(f).ponColorFondoN(
                "black", "white").ponWrap()
        self.lbJugNegras = Controles.LB(self, ng).anchoFijo(
            nAnchoLabels).alinCentrado().ponFuente(f).ponColorFondoN(
                "white", "black").ponWrap()
        self.lbJugBlancas.setFrameStyle(QtGui.QFrame.Box | QtGui.QFrame.Raised)
        self.lbJugNegras.setFrameStyle(QtGui.QFrame.Box | QtGui.QFrame.Raised)

        # Relojes
        f = Controles.TipoLetra("Arial Black", puntos=26, peso=75)

        def lbReloj():
            lb = Controles.LB(
                self, "00:00").ponFuente(f).alinCentrado().ponColorFondoN(
                    "#076C9F", "#EFEFEF").anchoMinimo(nAnchoLabels)
            lb.setFrameStyle(QtGui.QFrame.Box | QtGui.QFrame.Raised)
            return lb

        self.lbRelojBlancas = lbReloj()
        self.lbRelojNegras = lbReloj()

        # Revisando
        f = Controles.TipoLetra(puntos=14, peso=75)
        self.lbRevision = Controles.LB(
            self,
            _("Reviewing...")).alinCentrado().ponFuente(f).ponFondoN("#b3b3b3")

        # Ayudas
        self.ayudasUD = QTVarios.LCNumero(3)

        f = Controles.TipoLetra(puntos=12)
        self.lbCredito = Controles.LB(self,
                                      _("Available hints") +
                                      " :   ").alinCentrado().ponFuente(f)

        # Boton de tutor activo
        self.btActivarTutor = Controles.PB(
            self, "", rutina=self.cambiaSiActivarTutor,
            plano=False)  # .anchoFijo( nAnchoPgn )

        # Rotulos de informacion
        f = Controles.TipoLetra(
            puntos=self.gestor.configuracion.tamFontRotulos)
        self.lbRotulo1 = Controles.LB(self).ponWrap().ponFuente(f)
        self.lbRotulo2 = Controles.LB(self).ponWrap().ponFuente(f)
        f9 = Controles.TipoLetra(puntos=9)
        self.lbRotulo3 = Controles.LB(self).ponWrap().ponFuente(f9)
        # self.lbRotulo1.setStyleSheet("*{ border: 1px solid darkgray }")
        # self.lbRotulo2.setStyleSheet("*{ border: 1px solid darkgray }")
        self.lbRotulo3.setStyleSheet("*{ border: 1px solid darkgray }")
        self.lbRotulo3.altoFijo(48)

        # Lo escondemos
        self.lbJugBlancas.hide()
        self.lbJugNegras.hide()
        self.lbRelojBlancas.hide()
        self.lbRelojNegras.hide()
        self.pgn.hide()
        self.lbRevision.hide()
        self.ayudasUD.hide()
        self.lbCredito.hide()
        self.btActivarTutor.hide()
        self.lbRotulo1.hide()
        self.lbRotulo2.hide()
        self.lbRotulo3.hide()

        # Layout

        # Remoto
        lyColor = Colocacion.G()
        lyColor.controlc(self.lbJugBlancas, 0,
                         0).controlc(self.lbJugNegras, 0, 1)
        lyColor.controlc(self.lbRelojBlancas, 1,
                         0).controlc(self.lbRelojNegras, 1, 1)

        # Ayudas
        lyAyudas = Colocacion.H().relleno().control(self.lbCredito).control(
            self.ayudasUD).relleno().ponSeparacion(1)

        # Abajo
        lyAbajo = Colocacion.V()
        lyAbajo.setSizeConstraint(lyAbajo.SetFixedSize)
        lyAbajo.control(self.lbRevision).otro(lyAyudas).control(
            self.btActivarTutor)
        lyAbajo.control(self.lbRotulo1).control(self.lbRotulo2).control(
            self.lbRotulo3)

        lyV = Colocacion.V().otro(lyColor).control(self.pgn)
        lyV.otro(lyAbajo)

        return lyV
Esempio n. 23
0
    def __init__(self, wParent, torneo, torneoTMP, gestor):

        titulo = _("Results")
        icono = Iconos.Torneos()
        extparam = "unresulttorneo"
        super().__init__(parent=wParent,
                         titulo=titulo,
                         icono=icono,
                         extparam=extparam)

        # Datos
        self.torneo = torneo
        self.torneoTMP = torneoTMP
        self.gestor = gestor
        self.liResult = self.torneo.rehacerResult()
        self.liResultTMP = self.torneoTMP.rehacerResult()

        # Tabs
        self.tab = tab = Controles.Tab()

        # Tab-configuracion --------------------------------------------------
        w = QtWidgets.QWidget()
        # # Grid
        oColumnas = Columnas.ListaColumnas()
        oColumnas.nueva("NUMERO", _("N."), 35, siCentrado=True)
        oColumnas.nueva("MOTOR", _("Engine"), 190, siCentrado=True)
        oColumnas.nueva("GANADOS", _("Wins"), 120, siCentrado=True)
        oColumnas.nueva("PERDIDOS", _("Lost"), 120, siCentrado=True)
        oColumnas.nueva("TABLAS", _("Draw"), 120, siCentrado=True)
        oColumnas.nueva("PUNTOS", _("Points"), 120, siCentrado=True)
        self.gridResultTMP = Grid.Grid(self,
                                       oColumnas,
                                       siSelecFilas=True,
                                       xid="T")
        # # Layout
        layout = Colocacion.V().control(self.gridResultTMP)
        w.setLayout(layout)
        tab.nuevaTab(w, _("Current"))

        # Tab-configuracion --------------------------------------------------
        w = QtWidgets.QWidget()
        # Grid
        oColumnas = Columnas.ListaColumnas()
        oColumnas.nueva("NUMERO", _("N."), 35, siCentrado=True)
        oColumnas.nueva("MOTOR", _("Engine"), 190, siCentrado=True)
        oColumnas.nueva("GANADOS", _("Wins"), 120, siCentrado=True)
        oColumnas.nueva("PERDIDOS", _("Lost"), 120, siCentrado=True)
        oColumnas.nueva("TABLAS", _("Draw"), 120, siCentrado=True)
        oColumnas.nueva("PUNTOS", _("Points"), 120, siCentrado=True)
        self.gridResult = Grid.Grid(self,
                                    oColumnas,
                                    siSelecFilas=True,
                                    xid="B")
        # Layout
        layout = Colocacion.V().control(self.gridResult)
        w.setLayout(layout)
        tab.nuevaTab(w, _("All"))

        layout = Colocacion.V().control(tab).margen(8)
        self.setLayout(layout)

        self.registrarGrid(self.gridResultTMP)
        self.registrarGrid(self.gridResult)
        self.recuperarVideo(siTam=True, anchoDefecto=800, altoDefecto=430)

        self.gridResult.gotop()
        self.gridResultTMP.gotop()
Esempio n. 24
0
    def __init__(self, owner, configuracion, bloqueApertura):
        icono = Iconos.Apertura()
        titulo = _("Select an opening")
        extparam = "selectOpening"
        QTVarios.WDialogo.__init__(self, owner, titulo, icono, extparam)

        # Variables--------------------------------------------------------------------------
        self.apStd = AperturasStd.apTrain
        self.configuracion = configuracion
        self.partida = Partida.Partida()
        self.bloqueApertura = bloqueApertura
        self.liActivas = []

        # Tablero
        confTablero = configuracion.confTablero("APERTURAS", 32)
        self.tablero = Tablero.Tablero(self, confTablero)
        self.tablero.crea()
        self.tablero.ponMensajero(self.mueveHumano)

        # Current pgn
        self.lbPGN = Controles.LB(self, "").ponWrap().ponTipoLetra(puntos=10,
                                                                   peso=75)

        # Movimiento
        self.siMoviendoTiempo = False

        lyBM, tbBM = QTVarios.lyBotonesMovimiento(self,
                                                  "",
                                                  siLibre=False,
                                                  tamIcon=24)
        self.tbBM = tbBM

        # Tool bar
        tb = Controles.TBrutina(self)
        tb.new(_("Accept"), Iconos.Aceptar(), self.aceptar)
        tb.new(_("Cancel"), Iconos.Cancelar(), self.cancelar)
        tb.new(_("Reinit"), Iconos.Reiniciar(), self.resetPartida)
        tb.new(_("Takeback"), Iconos.Atras(), self.atras)
        tb.new(_("Remove"), Iconos.Borrar(), self.borrar)

        # Lista Aperturas
        oColumnas = Columnas.ListaColumnas()
        dicTipos = {
            "b": Iconos.pmSun(),
            "n": Iconos.pmPuntoAzul(),
            "l": Iconos.pmNaranja()
        }
        oColumnas.nueva("TIPO",
                        "",
                        24,
                        edicion=Delegados.PmIconosBMT(dicIconos=dicTipos))
        oColumnas.nueva("OPENING", _("Possible continuation"), 480)

        self.grid = Grid.Grid(self, oColumnas, siSelecFilas=True, altoFila=32)
        self.registrarGrid(self.grid)

        # # Derecha
        lyD = Colocacion.V().control(tb).control(self.grid)
        gbDerecha = Controles.GB(self, "", lyD)

        # # Izquierda
        lyI = Colocacion.V().control(self.tablero).otro(lyBM).control(
            self.lbPGN)
        gbIzquierda = Controles.GB(self, "", lyI)

        splitter = QtGui.QSplitter(self)
        splitter.addWidget(gbIzquierda)
        splitter.addWidget(gbDerecha)
        self.registrarSplitter(splitter, "splitter")

        # Completo
        ly = Colocacion.H().control(splitter).margen(3)
        self.setLayout(ly)

        self.ponActivas()
        self.resetPartida()
        self.actualizaPosicion()

        dic = {'_SIZE_': '916,444', 'SP_splitter': [356, 548]}
        self.recuperarVideo(dicDef=dic)
Esempio n. 25
0
    def __init__(self, procesador):
        self.procesador = procesador
        self.configuration = procesador.configuration
        self.reinit = False
        self.db = EndingsGTB.DBendings(self.configuration)
        self.t4 = LibChess.T4(self.configuration)

        QTVarios.WDialogo.__init__(self, procesador.main_window,
                                   _("Endings with Gaviota Tablebases"),
                                   Iconos.Finales(), "endings_gtb")

        self.game = Game.Game()
        self.act_recno = -1

        li_acciones = (
            (_("Close"), Iconos.MainMenu(), self.terminar),
            None,
            (_("Config"), Iconos.Configurar(), self.configurar),
            None,
            (_("Utilities"), Iconos.Utilidades(), self.utilidades),
            None,
        )
        tb = QTVarios.LCTB(self, li_acciones)

        ly_bt, self.bt_movs = QTVarios.lyBotonesMovimiento(
            self,
            "",
            siTiempo=True,
            siLibre=False,
            rutina=self.run_botones,
            icon_size=24)

        self.chb_help = Controles.CHB(self, _("Help mode"),
                                      False).capture_changes(
                                          self, self.help_changed)
        self.bt_back = Controles.PB(self,
                                    _("Takeback"),
                                    self.takeback,
                                    plano=False).ponIcono(Iconos.Atras())
        ly_bt.espacio(20).control(self.bt_back).control(self.chb_help)

        self.wpzs = QtWidgets.QWidget(self)
        self.wpzs.li_labels = []
        ly_wpzs = Colocacion.H()
        for x in range(6):
            lbl = Controles.LB(self.wpzs)
            self.wpzs.li_labels.append(lbl)
            ly_wpzs.control(lbl)
        self.wpzs.setLayout(ly_wpzs)
        self.wpzs.mousePressEvent = self.change

        self.color_done = QTUtil.qtColorRGB(213, 233, 250)

        li_acciones = (
            None,
            (" " + _("Restart"), Iconos.Reset(), self.restart),
            None,
            (" " + _("New"), Iconos.New1(), self.nuevo),
            None,
            (" " + _("Remove"), Iconos.Remove1(), self.remove),
            None,
        )
        self.tb_run = Controles.TBrutina(
            self,
            li_acciones,
            icon_size=32,
            puntos=self.configuration.x_tb_fontpoints)

        ly_top = Colocacion.H().control(tb).relleno().control(
            self.wpzs).relleno().control(self.tb_run)
        o_columns = Columnas.ListaColumnas()
        o_columns.nueva("NUM", _("N."), 50, centered=True)
        o_columns.nueva("XFEN", _("Position"), 140, centered=True)
        o_columns.nueva("MATE", _("Mate"), 60, centered=True)
        o_columns.nueva("TRIES", _("Tries"), 50, centered=True)
        o_columns.nueva("MOVES", _("Minimum moves"), 120, centered=True)
        o_columns.nueva("TIMEMS", _("Minimum time"), 120, centered=True)
        self.grid = Grid.Grid(self, o_columns, siSelecFilas=True)
        self.grid.tipoLetra(puntos=self.configuration.x_pgn_fontpoints)
        self.grid.ponAltoFila(self.configuration.x_pgn_rowheight)
        self.grid.setSizePolicy(
            QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Expanding,
                                  QtWidgets.QSizePolicy.Expanding))

        ly_pos = Colocacion.V().control(self.grid)

        config_board = self.configuration.config_board("ENDINGSGTB", 64)
        self.board = BoardEndings(self, config_board)
        self.board.set_startup_control(self.startup_control)
        self.board.crea()
        self.board.ponerPiezasAbajo(True)
        self.board.set_dispatcher(self.player_has_moved)

        self.pzs = self.board.piezas
        self.playing = False

        ly_left_bottom = Colocacion.V().control(
            self.board).otro(ly_bt).relleno().margen(0)
        w = QtWidgets.QWidget(self)
        w.setLayout(ly_left_bottom)
        w.setFixedWidth(self.board.ancho + 16)

        ly_bottom = Colocacion.H().control(w).otro(ly_pos)

        layout = Colocacion.V().otro(ly_top).otro(ly_bottom).margen(6)
        self.setLayout(layout)

        self.restore_video()

        dic = self.configuration.read_variables("endingsGTB")

        self.key = key = dic.get("KEY")
        if (not key) or len(key) > self.configuration.piezas_gaviota():
            key = "KPk"
        self.db.set_examples_auto(dic.get("EXAMPLES_AUTO", True))
        self.set_key(key)

        self.play_next_type = dic.get("PLAY_NEXT", PLAY_STOP)

        self.grid.gotop()
        self.pos_game = -1
        self.help_changed()
        self.restart()
Esempio n. 26
0
    def __init__(self, procesador, dbop):
        self.dbop = dbop
        self.title = dbop.gettitle()

        QTVarios.WDialogo.__init__(self, procesador.pantalla, self.title,
                                   Iconos.OpeningLines(), "studyOpening")

        self.procesador = procesador
        self.configuracion = procesador.configuracion
        self.partidabase = self.dbop.getpartidabase()
        self.num_jg_inicial = self.partidabase.numJugadas()
        self.num_jg_actual = None
        self.partida = None

        self.resultado = None
        siFigurinesPGN = self.configuracion.figurinesPGN

        liAcciones = (
            (_("Close"), Iconos.MainMenu(), self.terminar),
            None,
            (_("Remove"), Iconos.Borrar(), self.borrar),
            None,
            (_("Import"), Iconos.Import8(), self.importar),
            None,
            (_("Export"), Iconos.Export8(), self.exportar),
            None,
            (_("Utilities"), Iconos.Utilidades(), self.utilidades),
            None,
            (_("Train"), Iconos.Study(), self.train),
            None,
        )
        self.tb = Controles.TBrutina(self, liAcciones)

        oColumnas = Columnas.ListaColumnas()
        oColumnas.nueva("LINE",
                        _("Line"),
                        35,
                        edicion=Delegados.EtiquetaPOS(False, True))
        inicio = self.partidabase.numJugadas() / 2 + 1
        ancho_col = ((self.configuracion.anchoPGN - 35 - 20) / 2) * 80 // 100
        for x in range(inicio, 75):
            oColumnas.nueva(str(x),
                            str(x),
                            ancho_col,
                            edicion=Delegados.EtiquetaPOS(
                                siFigurinesPGN, True))
        self.glines = Grid.Grid(self, oColumnas, siCabeceraMovible=False)
        self.glines.setAlternatingRowColors(False)
        self.glines.tipoLetra(puntos=self.configuracion.puntosPGN)
        self.glines.ponAltoFila(self.configuracion.altoFilaPGN)

        self.pboard = POLBoard.BoardLines(self, self.configuracion)

        self.tabsanalisis = POLAnalisis.TabsAnalisis(self, self.procesador,
                                                     self.configuracion)

        splitter = QtGui.QSplitter(self)
        splitter.setOrientation(QtCore.Qt.Vertical)
        splitter.addWidget(self.glines)
        splitter.addWidget(self.tabsanalisis)

        sp = QtGui.QSizePolicy(QtGui.QSizePolicy.Expanding,
                               QtGui.QSizePolicy.Expanding)
        splitter.setSizePolicy(sp)

        self.registrarSplitter(splitter, "SPLITTER")

        lyLV = Colocacion.V().control(splitter)
        lyTB = Colocacion.V().control(self.tb).control(self.pboard)
        layout = Colocacion.H().otro(lyTB).otro(lyLV).margen(3)
        self.setLayout(layout)

        self.colorPar = QTUtil.qtColor("#DBDAD9")
        self.colorNon = QTUtil.qtColor("#F1EFE9")
        self.colorLine = QTUtil.qtColor("#CDCCCB")

        self.partida = self.partidabase

        self.pboard.MoverFinal()

        self.recuperarVideo()

        self.last_numlines = 0
        self.show_lines()
Esempio n. 27
0
    def crea_bloque_informacion(self):
        configuration = Code.configuration
        n_ancho_pgn = configuration.x_pgn_width
        n_ancho_color = (n_ancho_pgn - 52 - 24) // 2
        n_ancho_labels = max(int((n_ancho_pgn - 3) // 2), 140)
        # # Pgn
        o_columnas = Columnas.ListaColumnas()
        o_columnas.nueva("NUMBER", _("N."), 52, centered=True)
        si_figurines_pgn = configuration.x_pgn_withfigurines
        o_columnas.nueva(
            "WHITE", _("White"), n_ancho_color, edicion=Delegados.EtiquetaPGN(True if si_figurines_pgn else None)
        )
        o_columnas.nueva(
            "BLACK", _("Black"), n_ancho_color, edicion=Delegados.EtiquetaPGN(False if si_figurines_pgn else None)
        )
        self.grid_pgn = Grid.Grid(self, o_columnas, siCabeceraMovible=False)
        self.grid_pgn.setMinimumWidth(n_ancho_pgn)
        self.grid_pgn.setHorizontalScrollBarPolicy(QtCore.Qt.ScrollBarAlwaysOff)
        self.grid_pgn.tipoLetra(puntos=configuration.x_pgn_fontpoints)
        self.grid_pgn.ponAltoFila(configuration.x_pgn_rowheight)

        # # Blancas y negras
        f = Controles.TipoLetra(puntos=configuration.x_sizefont_infolabels + 2, peso=75)
        bl, ng = "", ""
        alto_lb = 48
        self.lb_player = {}
        for side in (WHITE, BLACK):
            self.lb_player[side] = Controles.LB(self, bl).anchoFijo(n_ancho_labels).altoFijo(alto_lb)
            self.lb_player[side].align_center().ponFuente(f).set_wrap()
            self.lb_player[side].setFrameStyle(QtWidgets.QFrame.Box | QtWidgets.QFrame.Raised)
        self.lb_player[WHITE].set_foreground_backgound("black", "white")
        self.lb_player[BLACK].set_foreground_backgound("white", "black")

        # Relojes
        f = Controles.TipoLetra("Arial Black", puntos=26, peso=75)

        self.lb_reloj = {}
        for side in (WHITE, BLACK):
            self.lb_reloj[side] = (
                Controles.LB(self, "00:00")
                .ponFuente(f)
                .align_center()
                .set_foreground_backgound("#076C9F", "#EFEFEF")
                .anchoMinimo(n_ancho_labels)
            )
            self.lb_reloj[side].setFrameStyle(QtWidgets.QFrame.Box | QtWidgets.QFrame.Raised)

        # Rotulos de informacion
        f = Controles.TipoLetra(puntos=configuration.x_sizefont_infolabels)
        self.lbRotulo3 = Controles.LB(self).set_wrap().ponFuente(f)

        # Layout
        lyColor = Colocacion.G()
        lyColor.controlc(self.lb_player[WHITE], 0, 0).controlc(self.lb_player[BLACK], 0, 1)
        lyColor.controlc(self.lb_reloj[WHITE], 1, 0).controlc(self.lb_reloj[BLACK], 1, 1)

        # Abajo
        lyAbajo = Colocacion.V()
        lyAbajo.setSizeConstraint(lyAbajo.SetFixedSize)
        lyAbajo.control(self.lbRotulo3)

        lyV = Colocacion.V().otro(lyColor).control(self.grid_pgn)
        lyV.otro(lyAbajo).margen(7)

        return lyV
    def __init__(self, owner, game, configuration):
        titulo = _("Save to PGN")
        icono = Iconos.PGN()
        extparam = "savepgn"
        QTVarios.WDialogo.__init__(self, owner, titulo, icono, extparam)

        self.game = game
        self.game.order_tags()
        self.body = self.game.pgnBase()
        if self.game.opening:
            if not self.game.get_tag("ECO"):
                self.game.set_tag("ECO", self.game.opening.eco)
            if not self.game.get_tag("Opening"):
                self.game.set_tag("Opening", self.game.opening.trNombre)

        self.li_labels = [[k, v] for k, v in self.game.li_tags]
        self.configuration = configuration
        self.file = ""
        self.vars_read()

        f = Controles.TipoLetra(puntos=configuration.x_pgn_fontpoints)

        # Opciones
        li_options = [
            (_("Save"), Iconos.GrabarFichero(), self.save),
            None,
            (_("Cancel"), Iconos.Cancelar(), self.terminar),
            None,
            (_("Clipboard"), Iconos.Clipboard(), self.portapapeles),
            None,
            (_("Reinit"), Iconos.Reiniciar(), self.reinit),
            None,
        ]
        tb = QTVarios.LCTB(self, li_options)

        tabs = Controles.Tab(self)
        tabs.ponFuente(f)

        # Tab-file -----------------------------------------------------------------------------------------------
        lb_file = Controles.LB(self, _("File to save") + ": ").ponFuente(f)
        bt_history = Controles.PB(self, "", self.history).ponIcono(
            Iconos.Favoritos(), 24).ponToolTip(_("Previous")).ponFuente(f)
        bt_boxrooms = (Controles.PB(self, "", self.boxrooms).ponIcono(
            Iconos.BoxRooms(), 24).ponToolTip(_("Boxrooms PGN")))
        self.bt_file = Controles.PB(self, "", self.file_select,
                                    plano=False).anchoMinimo(300).ponFuente(f)

        # Codec
        lb_codec = Controles.LB(self, _("Encoding") + ": ").ponFuente(f)
        liCodecs = [
            k for k in set(v for k, v in encodings.aliases.aliases.items())
        ]
        liCodecs.sort()
        liCodecs = [(k, k) for k in liCodecs]
        liCodecs.insert(0, (_("Same as file"), "file"))
        liCodecs.insert(0,
                        ("%s: %s" % (_("By default"), _("UTF-8")), "default"))
        self.cb_codecs = Controles.CB(self, liCodecs, self.codec).ponFuente(f)

        # Rest
        self.chb_overwrite = Controles.CHB(self, _("Overwrite"),
                                           False).ponFuente(f)
        self.chb_remove_c_v = Controles.CHB(
            self, _("Remove comments and variations"),
            self.remove_c_v).ponFuente(f)

        lyF = Colocacion.H().control(lb_file).control(
            self.bt_file).control(bt_history).control(bt_boxrooms).relleno(1)
        lyC = Colocacion.H().control(lb_codec).control(
            self.cb_codecs).relleno(1)
        ly = (Colocacion.V().espacio(15).otro(lyF).otro(lyC).control(
            self.chb_overwrite).control(self.chb_remove_c_v).relleno(1))
        w = QtWidgets.QWidget()
        w.setLayout(ly)
        tabs.nuevaTab(w, _("File"))
        self.chb_overwrite.hide()

        # Tab-labels -----------------------------------------------------------------------------------------------
        liAccionesWork = (
            ("", Iconos.Mas22(), self.labels_more),
            None,
            ("", Iconos.Menos22(), self.labels_less),
            None,
            ("", Iconos.Arriba(), self.labels_up),
            None,
            ("", Iconos.Abajo(), self.labels_down),
            None,
        )
        tb_labels = Controles.TBrutina(self,
                                       liAccionesWork,
                                       icon_size=16,
                                       with_text=False)

        # Lista
        o_columns = Columnas.ListaColumnas()
        o_columns.nueva("ETIQUETA",
                        _("Label"),
                        150,
                        edicion=Delegados.LineaTextoUTF8())
        o_columns.nueva("VALOR",
                        _("Value"),
                        420,
                        edicion=Delegados.LineaTextoUTF8())

        self.grid_labels = Grid.Grid(self, o_columns, siEditable=True)
        self.grid_labels.ponFuente(f)
        n = self.grid_labels.anchoColumnas()
        self.grid_labels.setFixedWidth(n + 20)

        # Layout
        ly = Colocacion.V().control(tb_labels).control(
            self.grid_labels).margen(3)
        w = QtWidgets.QWidget()
        w.setLayout(ly)
        tabs.nuevaTab(w, _("Labels"))

        # Tab-Body -----------------------------------------------------------------------------------------------
        self.em_body = Controles.EM(self, self.body, siHTML=False).ponFuente(f)
        tabs.nuevaTab(self.em_body, _("Body"))

        layout = Colocacion.V().control(tb).control(tabs)

        self.setLayout(layout)

        if self.history_list:
            fich = self.history_list[0]
            if os.path.isfile(fich):
                self.file = fich
                self.show_file()

        self.register_grid(self.grid_labels)
        self.restore_video()
Esempio n. 29
0
    def __init__(self, procesador):

        icono = Iconos.ManualSave()
        extparam = "manualsave"
        titulo = _("Save positions to FNS/PGN")
        QTVarios.WDialogo.__init__(self, procesador.pantalla, titulo, icono, extparam)

        self.procesador = procesador
        self.configuracion = procesador.configuracion

        self.posicion = ControlPosicion.ControlPosicion()
        self.posicion.posInicial()

        self.gestor_motor = None
        self.pgn = None
        self.fns = None

        self.li_labels = [
            ["Site", ""],
            ["Event", ""],
            ["Date", ""],
            ["White", ""],
            ["Black", ""],
            ["WhiteElo", ""],
            ["BlackElo", ""],
            ["Result", ""],
        ]
        self.li_labels.extend([["", ""] for x in range(10)])

        self.li_analysis = []
        self.analyzing = False

        self.partida = None

        # Toolbar
        liAcciones = (
            (_("Close"), Iconos.MainMenu(), self.terminar), None,
            (_("External engines"), Iconos.Motores(), self.ext_engines), None,
        )
        tb = Controles.TBrutina(self, liAcciones)

        # Board + botones + solucion + boton salvado
        ##
        bt_change_position = Controles.PB(self, "   " + _("Change position"), self.change_position, plano=False)
        bt_change_position.ponIcono(Iconos.Datos(), 24)
        ##
        conf_tablero = self.configuracion.confTablero("MANUALSAVE", 32)
        self.tablero = Tablero.Tablero(self, conf_tablero)
        self.tablero.crea()
        self.tablero.ponerPiezasAbajo(True)
        ##
        lybt, bt = QTVarios.lyBotonesMovimiento(self, "", siLibre=False, tamIcon=24, siTiempo=False)
        ##
        self.em_solucion = Controles.EM(self, siHTML=False).altoMinimo(40).capturaCambios(self.reset_partida)
        ##
        self.bt_solucion = Controles.PB(self, "   " + _("Save solution"), self.savesolucion, plano=False).ponIcono(Iconos.Grabar(), 24)
        self.bt_editar = Controles.PB(self, "   " + _("Edit"), self.editar_solucion, plano=False).ponIcono(Iconos.PlayGame())
        ly = Colocacion.V().control(self.em_solucion).control(self.bt_editar)
        gb = Controles.GB(self, _("Solution"), ly)
        ###
        lybtp = Colocacion.H().control(bt_change_position).espacio(20).control(self.bt_solucion)
        lyT = Colocacion.V().otro(lybtp).control(self.tablero).otro(lybt).control(gb)
        gb_left = Controles.GB(self, "", lyT)

        # Ficheros PGN + FNS
        lb_pgn = Controles.LB(self, _("PGN") + ": ")
        self.bt_pgn = Controles.PB(self, "", self.pgn_select, plano=False).anchoMinimo(300)
        bt_no_pgn = Controles.PB(self, "", self.pgn_unselect).ponIcono(Iconos.Delete()).anchoFijo(16)
        lb_fns = Controles.LB(self, _("FNS") + ": ")
        self.bt_fns = Controles.PB(self, "", self.fns_select, plano=False).anchoMinimo(300)
        bt_no_fns = Controles.PB(self, "", self.fns_unselect).ponIcono(Iconos.Delete()).anchoFijo(16)
        ## Codec
        lb_codec = Controles.LB(self, _("Encoding") + ": ")
        liCodecs = [k for k in set(v for k, v in encodings.aliases.aliases.iteritems())]
        liCodecs.sort()
        liCodecs = [(k, k) for k in liCodecs]
        liCodecs.insert(0, ("%s: %s" % (_("By default"), _("UTF-8")), "default"))
        self.codec = "default"
        self.cb_codecs = Controles.CB(self, liCodecs, self.codec)
        ###
        ly0 = Colocacion.G().control(lb_pgn, 0, 0).control(self.bt_pgn, 0, 1).control(bt_no_pgn, 0, 2)
        ly0.control(lb_fns, 1, 0).control(self.bt_fns, 1, 1).control(bt_no_fns, 1, 2)
        ly1 = Colocacion.H().control(lb_codec).control(self.cb_codecs).relleno(1)
        ly = Colocacion.V().otro(ly0).otro(ly1)
        gb_files = Controles.GB(self, _("File to save"), ly)

        # Labels + correlativo
        oColumnas = Columnas.ListaColumnas()
        oColumnas.nueva("LABEL", _("Label"), 80, edicion=Delegados.LineaTextoUTF8(), siCentrado=True)
        oColumnas.nueva("VALUE", _("Value"), 280, edicion=Delegados.LineaTextoUTF8())
        self.grid_labels = Grid.Grid(self, oColumnas, siEditable=True, xid=1)
        n = self.grid_labels.anchoColumnas()
        self.grid_labels.setFixedWidth(n + 20)
        self.registrarGrid(self.grid_labels)

        ##
        lb_number = Controles.LB(self, _("Correlative number")+": ")
        self.sb_number = Controles.SB(self, 0, 0, 99999999).tamMaximo(50)
        lb_number_help = Controles.LB(self, _("Replace symbol # in Value column (#=3, ###=003)"))
        lb_number_help.setWordWrap(True)

        ly_number = Colocacion.H().control(lb_number).control(self.sb_number).control(lb_number_help, 4)

        ly = Colocacion.V().control(self.grid_labels).otro(ly_number)
        gb_labels = Controles.GB(self, _("PGN labels"), ly)

        # Analysis + grid + start/stop + multiPV
        self.bt_start = Controles.PB(self, "", self.start).ponIcono(Iconos.Pelicula_Seguir(), 32)
        self.bt_stop = Controles.PB(self, "", self.stop).ponIcono(Iconos.Pelicula_Pausa(), 32)
        self.bt_stop.hide()

        lb_engine = Controles.LB(self, _("Engine") + ":")
        liMotores = self.configuracion.comboMotoresCompleto()
        self.cb_engine = Controles.CB(self, liMotores, self.configuracion.tutor.clave).capturaCambiado(self.reset_motor)

        lb_multipv = Controles.LB(self, _("Multi PV")+": ")
        self.sb_multipv = Controles.SB(self, 1, 1, 500).tamMaximo(50)
        ##
        oColumnas = Columnas.ListaColumnas()
        oColumnas.nueva("PDT", _("Evaluation"), 100, siCentrado=True)
        oColumnas.nueva("PGN", _("Solution"), 360)
        self.grid_analysis = Grid.Grid(self, oColumnas, siSelecFilas=True)
        self.registrarGrid(self.grid_analysis)
        ##
        lb_analysis_help = Controles.LB(self, _("Double click to send analysis line to solution"))
        ###
        ly_lin1 = Colocacion.H().control(self.bt_start).control(self.bt_stop).control(lb_engine).control(self.cb_engine)
        ly_lin1.relleno(1).control(lb_multipv).control(self.sb_multipv)
        ly = Colocacion.V().otro(ly_lin1).control(self.grid_analysis).control(lb_analysis_help)
        gb_analysis = Controles.GB(self, _("Analysis"), ly)

        # ZONA
        splitter_right = QtGui.QSplitter(self)
        splitter_right.setOrientation(QtCore.Qt.Vertical)
        splitter_right.addWidget(gb_files)
        splitter_right.addWidget(gb_labels)
        splitter_right.addWidget(gb_analysis)

        self.registrarSplitter(splitter_right, "RIGHT")
        ##
        splitter = QtGui.QSplitter(self)
        splitter.addWidget(gb_left)
        splitter.addWidget(splitter_right)

        self.registrarSplitter(splitter, "ALL")

        layout = Colocacion.V().control(tb).control(splitter).margen(5)

        self.setLayout(layout)

        self.inicializa()
Esempio n. 30
0
    def __init__(self, w_parent, nombre_torneo):

        torneo = self.torneo = Tournament.Tournament(nombre_torneo)

        titulo = nombre_torneo
        icono = Iconos.Torneos()
        extparam = "untorneo_v1"
        QTVarios.WDialogo.__init__(self, w_parent, titulo, icono, extparam)

        self.configuration = Code.configuration

        # Datos

        self.liEnActual = []
        self.xjugar = None
        self.liResult = None
        self.last_change = Util.today()
        self.li_results = []

        # Toolbar
        tb = Controles.TBrutina(self, icon_size=24)
        tb.new(_("Close"), Iconos.MainMenu(), self.terminar)
        tb.new(_("Launch a worker"), Iconos.Lanzamiento(), self.gm_launch)

        # Tabs
        self.tab = tab = Controles.Tab()

        # Tab-configuration --------------------------------------------------
        w = QtWidgets.QWidget()

        # Adjudicator
        lb_resign = Controles.LB(
            self, "%s (%s): " %
            (_("Minimum centipawns to assign winner"), "0=%s" % _("Disable")))
        self.ed_resign = Controles.ED(self).tipoInt(
            torneo.resign()).anchoFijo(30)
        bt_resign = Controles.PB(self, "", rutina=self.borra_resign).ponIcono(
            Iconos.Reciclar())

        # Draw-plys
        lbDrawMinPly = Controles.LB(
            self, "%s (%s): " %
            (_("Minimum moves to assign draw"), "0=%s" % _("Disable")))
        self.sbDrawMinPly = Controles.SB(self, torneo.drawMinPly(), 20, 1000)
        # Draw-puntos
        lb_draw_range = Controles.LB(
            self,
            _("Maximum centipawns to assign draw") + ": ")
        self.ed_draw_range = Controles.ED(self).tipoInt(
            torneo.drawRange()).anchoFijo(30)
        bt_draw_range = Controles.PB(
            self, "", rutina=self.borra_draw_range).ponIcono(Iconos.Reciclar())

        # adjudicator
        self.liMotores = self.configuration.comboMotoresMultiPV10()
        self.cbJmotor, self.lbJmotor = QTUtil2.comboBoxLB(
            self, self.liMotores, torneo.adjudicator(), _("Engine"))
        self.edJtiempo = Controles.ED(self).tipoFloat(
            torneo.adjudicator_time()).anchoFijo(50)
        self.lbJtiempo = Controles.LB2P(self, _("Time in seconds"))
        layout = Colocacion.G()
        layout.controld(self.lbJmotor, 3, 0).control(self.cbJmotor, 3, 1)
        layout.controld(self.lbJtiempo, 4, 0).control(self.edJtiempo, 4, 1)
        self.gbJ = Controles.GB(self, _("Adjudicator"), layout)
        self.gbJ.setCheckable(True)
        self.gbJ.setChecked(torneo.adjudicator_active())

        lbBook = Controles.LB(self, _("Opening book") + ": ")
        fvar = self.configuration.file_books
        self.list_books = Books.ListBooks()
        self.list_books.restore_pickle(fvar)
        # Comprobamos que todos esten accesibles
        self.list_books.check()
        li = [(x.name, x.path) for x in self.list_books.lista]
        li.insert(0, ("* " + _("None"), "-"))
        self.cbBooks = Controles.CB(self, li, torneo.book())
        btNuevoBook = Controles.PB(self, "", self.nuevoBook,
                                   plano=False).ponIcono(Iconos.Nuevo(),
                                                         icon_size=16)
        lyBook = Colocacion.H().control(
            self.cbBooks).control(btNuevoBook).relleno()

        lbBookDepth = Controles.LB(self,
                                   _("Max depth of book (0=Maximum)") + ": ")
        self.sbBookDepth = Controles.SB(self, torneo.bookDepth(), 0, 200)

        lb_slow = Controles.LB(self,
                               _("Slow down the movement of pieces") + ": ")
        self.chb_slow = Controles.CHB(self, " ", self.torneo.slow_pieces())

        # Posicion inicial
        lbFEN = Controles.LB(self, _("Initial position") + ": ")
        self.fen = torneo.fen()
        self.btPosicion = Controles.PB(self, " " * 5 + _("Change") + " " * 5,
                                       self.posicionEditar).ponPlano(False)
        self.btPosicionQuitar = Controles.PB(
            self, "", self.posicionQuitar).ponIcono(Iconos.Motor_No())
        self.btPosicionPegar = Controles.PB(self, "",
                                            self.posicionPegar).ponIcono(
                                                Iconos.Pegar16()).ponToolTip(
                                                    _("Paste FEN position"))
        lyFEN = Colocacion.H().control(self.btPosicionQuitar).control(
            self.btPosicion).control(self.btPosicionPegar).relleno()

        # Norman Pollock
        lbNorman = Controles.LB(
            self,
            '%s(<a href="https://komodochess.com/pub/40H-pgn-utilities">?</a>): '
            % _("Initial position from Norman Pollock openings database"),
        )
        self.chbNorman = Controles.CHB(self, " ", self.torneo.norman())

        # Layout
        layout = Colocacion.G()
        ly_res = Colocacion.H().control(
            self.ed_resign).control(bt_resign).relleno()
        ly_dra = Colocacion.H().control(
            self.ed_draw_range).control(bt_draw_range).relleno()
        layout.controld(lb_resign, 0, 0).otro(ly_res, 0, 1)
        layout.controld(lbDrawMinPly, 1, 0).control(self.sbDrawMinPly, 1, 1)
        layout.controld(lb_draw_range, 2, 0).otro(ly_dra, 2, 1)
        layout.controld(lbBook, 3, 0).otro(lyBook, 3, 1)
        layout.controld(lbBookDepth, 4, 0).control(self.sbBookDepth, 4, 1)
        layout.controld(lbFEN, 5, 0).otro(lyFEN, 5, 1)
        layout.controld(lbNorman, 6, 0).control(self.chbNorman, 6, 1)
        layout.controld(lb_slow, 7, 0).control(self.chb_slow, 7, 1)
        layoutV = Colocacion.V().relleno().otro(layout).control(
            self.gbJ).relleno()
        layoutH = Colocacion.H().relleno().otro(layoutV).relleno()

        # Creamos
        w.setLayout(layoutH)
        tab.nuevaTab(w, _("Configuration"))

        # Tab-engines --------------------------------------------------
        self.splitterEngines = QtWidgets.QSplitter(self)
        self.register_splitter(self.splitterEngines, "engines")
        # TB
        li_acciones = [
            (_("New"), Iconos.TutorialesCrear(), self.enNuevo),
            None,
            (_("Modify"), Iconos.Modificar(), self.enModificar),
            None,
            (_("Remove"), Iconos.Borrar(), self.enBorrar),
            None,
            (_("Copy"), Iconos.Copiar(), self.enCopiar),
            None,
            (_("Import"), Iconos.MasDoc(), self.enImportar),
            None,
        ]
        tbEnA = Controles.TBrutina(self,
                                   li_acciones,
                                   icon_size=16,
                                   style=QtCore.Qt.ToolButtonTextBesideIcon)

        # Grid engine
        o_columns = Columnas.ListaColumnas()
        o_columns.nueva("NUM", _("N."), 50, centered=True)
        o_columns.nueva("ALIAS", _("Alias"), 209)
        self.gridEnginesAlias = Grid.Grid(self,
                                          o_columns,
                                          siSelecFilas=True,
                                          siSeleccionMultiple=True,
                                          xid=GRID_ALIAS)
        self.register_grid(self.gridEnginesAlias)

        w = QtWidgets.QWidget()
        ly = Colocacion.V().control(self.gridEnginesAlias).margen(0)
        w.setLayout(ly)
        self.splitterEngines.addWidget(w)

        o_columns = Columnas.ListaColumnas()
        o_columns.nueva("CAMPO", _("Label"), 200, siDerecha=True)
        o_columns.nueva("VALOR", _("Value"), 286)
        self.gridEnginesValores = Grid.Grid(self,
                                            o_columns,
                                            siSelecFilas=False,
                                            xid=GRID_VALUES)
        self.register_grid(self.gridEnginesValores)

        w = QtWidgets.QWidget()
        ly = Colocacion.V().control(self.gridEnginesValores).margen(0)
        w.setLayout(ly)
        self.splitterEngines.addWidget(w)

        self.splitterEngines.setSizes([250, 520])  # por defecto

        w = QtWidgets.QWidget()
        ly = Colocacion.V().control(tbEnA).control(self.splitterEngines)
        w.setLayout(ly)
        tab.nuevaTab(w, _("Engines"))

        # Creamos

        # Tab-games queued--------------------------------------------------
        w = QtWidgets.QWidget()
        # TB
        li_acciones = [
            (_("New"), Iconos.TutorialesCrear(), self.gm_crear_queued),
            None,
            (_("Remove"), Iconos.Borrar(), self.gm_borrar_queued),
            None,
        ]
        tbEnG = Controles.TBrutina(self,
                                   li_acciones,
                                   icon_size=16,
                                   style=QtCore.Qt.ToolButtonTextBesideIcon)

        o_columns = Columnas.ListaColumnas()
        o_columns.nueva("NUM", _("N."), 50, centered=True)
        o_columns.nueva("WHITE", _("White"), 190, centered=True)
        o_columns.nueva("BLACK", _("Black"), 190, centered=True)
        o_columns.nueva("TIME", _("Time"), 170, centered=True)
        # o_columns.nueva("STATE", _("State"), 190, centered=True)
        self.gridGamesQueued = Grid.Grid(self,
                                         o_columns,
                                         siSelecFilas=True,
                                         siSeleccionMultiple=True,
                                         xid=GRID_GAMES_QUEUED)
        self.register_grid(self.gridGamesQueued)
        # Layout
        layout = Colocacion.V().control(tbEnG).control(self.gridGamesQueued)

        # Creamos
        w.setLayout(layout)
        tab.nuevaTab(w, _("Games queued"))

        # Tab-games terminados--------------------------------------------------
        w = QtWidgets.QWidget()
        # TB
        li_acciones = [
            (_("Remove"), Iconos.Borrar(), self.gm_borrar_finished),
            None,
            (_("Show"), Iconos.PGN(), self.gm_show_finished),
            None,
            (_("Save") + "(%s)" % _("PGN"), Iconos.GrabarComo(),
             self.gm_save_pgn),
            None,
            (_("Save") + "(%s)" % _("Database"), Iconos.GrabarComo(),
             self.gm_save_database),
            None,
        ]
        tbEnGt = Controles.TBrutina(self,
                                    li_acciones,
                                    icon_size=16,
                                    style=QtCore.Qt.ToolButtonTextBesideIcon)

        o_columns = Columnas.ListaColumnas()
        o_columns.nueva("NUM", _("N."), 50, centered=True)
        o_columns.nueva("WHITE", _("White"), 190, centered=True)
        o_columns.nueva("BLACK", _("Black"), 190, centered=True)
        o_columns.nueva("TIME", _("Time"), 170, centered=True)
        o_columns.nueva("RESULT", _("Result"), 190, centered=True)
        self.gridGamesFinished = Grid.Grid(self,
                                           o_columns,
                                           siSelecFilas=True,
                                           siSeleccionMultiple=True,
                                           xid=GRID_GAMES_FINISHED)
        self.register_grid(self.gridGamesFinished)
        # Layout
        layout = Colocacion.V().control(tbEnGt).control(self.gridGamesFinished)

        # Creamos
        w.setLayout(layout)
        tab.nuevaTab(w, _("Games finished"))

        # Tab-resultado --------------------------------------------------
        w = QtWidgets.QWidget()

        # Grid
        wh = _("W.")
        bl = _("B.")
        o_columns = Columnas.ListaColumnas()
        o_columns.nueva("NUM", _("N."), 35, centered=True)
        o_columns.nueva("ENGINE", _("Engine"), 120, centered=True)
        o_columns.nueva("SCORE", _("Score") + "%", 50, centered=True)
        o_columns.nueva("WIN", _("Wins"), 50, centered=True)
        o_columns.nueva("DRAW", _("Draws"), 50, centered=True)
        o_columns.nueva("LOST", _("Losses"), 50, centered=True)
        o_columns.nueva("WIN-WHITE",
                        "%s %s" % (wh, _("Wins")),
                        60,
                        centered=True)
        o_columns.nueva("DRAW-WHITE",
                        "%s %s" % (wh, _("Draws")),
                        60,
                        centered=True)
        o_columns.nueva("LOST-WHITE",
                        "%s %s" % (wh, _("Losses")),
                        60,
                        centered=True)
        o_columns.nueva("WIN-BLACK",
                        "%s %s" % (bl, _("Wins")),
                        60,
                        centered=True)
        o_columns.nueva("DRAW-BLACK",
                        "%s %s" % (bl, _("Draws")),
                        60,
                        centered=True)
        o_columns.nueva("LOST-BLACK",
                        "%s %s" % (bl, _("Losses")),
                        60,
                        centered=True)
        o_columns.nueva("GAMES", _("Games"), 50, centered=True)
        self.gridResults = Grid.Grid(self,
                                     o_columns,
                                     siSelecFilas=True,
                                     xid=GRID_RESULTS)
        self.register_grid(self.gridResults)

        self.qtColor = {
            "WHITE": QTUtil.qtColorRGB(255, 250, 227),
            "BLACK": QTUtil.qtColorRGB(221, 255, 221),
            "SCORE": QTUtil.qtColorRGB(170, 170, 170),
        }

        # Layout
        layout = Colocacion.V().control(self.gridResults)

        # Creamos
        w.setLayout(layout)
        tab.nuevaTab(w, _("Results"))

        # Layout
        # tab.set_position("W")
        layout = Colocacion.V().control(tb).espacio(-3).control(tab).margen(2)
        self.setLayout(layout)

        self.restore_video(siTam=True, anchoDefecto=800, altoDefecto=430)

        self.gridEnginesAlias.gotop()

        self.ed_resign.setFocus()

        self.muestraPosicion()

        QtCore.QTimer.singleShot(5000, self.comprueba_cambios)
        self.rotulos_tabs()