Exemplo n.º 1
0
    def __init__(self, owner, regSVG, xml=None, nombre=None):

        QtGui.QDialog.__init__(self, owner)

        self.setWindowTitle(_("Image"))
        self.setWindowFlags(QtCore.Qt.Dialog | QtCore.Qt.WindowTitleHint)

        self.configuracion = VarGen.configuracion

        if not regSVG:
            regSVG = TabVisual.PSVG()
            regSVG.xml = xml
            if nombre:
                regSVG.nombre = nombre

        liAcciones = [( _("Save"), Iconos.Aceptar(), "grabar" ), None,
                      ( _("Cancel"), Iconos.Cancelar(), "reject" ), None,
        ]
        tb = Controles.TB(self, liAcciones)

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

        # Datos generales
        liGen = []

        # nombre del svg que se usara en los menus del tutorial
        config = FormLayout.Editbox(_("Name"), ancho=120)
        liGen.append((config, regSVG.nombre ))

        # ( "opacidad", "n", 1.0 ),
        config = FormLayout.Dial(_("Degree of transparency"), 0, 99)
        liGen.append(( config, 100 - int(regSVG.opacidad * 100) ))

        # ( "psize", "n", 100 ),
        config = FormLayout.Spinbox(_("Size") + " %", 1, 1600, 50)
        liGen.append(( config, regSVG.psize ))

        # orden
        config = FormLayout.Combobox(_("Order concerning other items"), QTUtil2.listaOrdenes())
        liGen.append(( config, regSVG.posicion.orden ))

        self.form = FormLayout.FormWidget(liGen, dispatch=self.cambios)

        # Layout
        layout = Colocacion.H().control(self.form).relleno().control(self.tablero)
        layout1 = Colocacion.V().control(tb).otro(layout)
        self.setLayout(layout1)

        # Ejemplos
        liMovs = ["b4c4", "e2e2", "e4g7"]
        self.liEjemplos = []
        for a1h8 in liMovs:
            regSVG.a1h8 = a1h8
            regSVG.siMovible = True
            svg = self.tablero.creaSVG(regSVG, siEditando=True)
            self.liEjemplos.append(svg)
Exemplo n.º 2
0
    def __init__(self, w_parent, o_columns, where):
        QTVarios.WDialogo.__init__(self, w_parent, _("Filter"),
                                   Iconos.Filtrar(), "rawfilter")

        self.where = ""
        li_fields = [(x.head, x.key) for x in o_columns.li_columns
                     if x.key != "__num__"]
        f = Controles.TipoLetra(puntos=12)  # 0, peso=75 )

        lbRaw = Controles.LB(self, "%s:" % _("Raw SQL")).ponFuente(f)
        self.edRaw = EM_SQL(
            self, where, li_fields).altoFijo(72).anchoMinimo(512).ponFuente(f)

        lbHelp = Controles.LB(
            self,
            _("Right button to select a column of database")).ponFuente(f)
        lyHelp = Colocacion.H().relleno().control(lbHelp).relleno()

        ly = Colocacion.H().control(lbRaw).control(self.edRaw)

        # Toolbar
        li_acciones = [(_("Accept"), Iconos.Aceptar(), self.aceptar), None,
                       (_("Cancel"), Iconos.Cancelar(), self.reject), None]
        tb = QTVarios.LCTB(self, li_acciones)

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

        self.edRaw.setFocus()

        self.restore_video(siTam=False)
    def __init__(self, owner, configuration):
        titulo = _("Save to PGN")
        icono = Iconos.PGN()
        extparam = "savepgnvarios"
        QTVarios.WDialogo.__init__(self, owner, titulo, icono, extparam)

        self.configuration = configuration

        # Opciones
        li_options = [
            (_("Save"), Iconos.GrabarFichero(), self.aceptar),
            None,
            (_("Cancel"), Iconos.Cancelar(), self.reject),
            None,
        ]
        self.tb = QTVarios.LCTB(self, li_options)

        self.wbase = WBaseSave(self, configuration)

        layout = Colocacion.V().control(self.tb).control(self.wbase)

        self.setLayout(layout)

        self.restore_video()

        self.check_toolbar()
Exemplo n.º 4
0
    def config(self):
        menu = QTVarios.LCMenu(self)
        if self.one_line:
            menu.opcion("change", _("Change options and create new training"),
                        Iconos.TOLchange())
            menu.separador()
        smenu = menu.submenu(_("What to do after solving"), Iconos.Tacticas())
        go_fast = self.tol.go_fast
        dico = {True: Iconos.Aceptar(), False: Iconos.PuntoAmarillo()}
        smenu.opcion("t_False", _("Stop"), dico[go_fast is False])
        smenu.opcion("t_True", _("Jump to the next"), dico[go_fast is True])
        smenu.opcion("t_None", _("Jump to the next from level 2"),
                     dico[go_fast is None])
        menu.separador()
        menu.opcion("remove", _("Remove all results of all levels"),
                    Iconos.Cancelar())

        resp = menu.lanza()
        if resp:
            if resp.startswith("t_"):
                self.tol.go_fast = eval(resp[2:])
                TurnOnLights.write_tol(self.tol)
            elif resp == "remove":
                self.rebuild()
            elif resp == "change":
                self.cambiar_one_line()
Exemplo n.º 5
0
    def __init__(self, wgm, ogm):
        self.liRegs = ogm.genToSelect()

        dgm = GM.dicGM()
        nombre = dgm.get(ogm.gm, ogm.gm)
        titulo = "%s - %s" % (_("One game"), nombre)
        icono = Iconos.Uno()
        extparam = "gm1g"
        QTVarios.WDialogo.__init__(self, wgm, titulo, icono, extparam)

        oColumnas = Columnas.ListaColumnas()
        oColumnas.nueva("NOMBRE", _("Opponent"), 180)
        oColumnas.nueva("FECHA", _("Date"), 90, siCentrado=True)
        oColumnas.nueva("ECO", _("ECO"), 40, siCentrado=True)
        oColumnas.nueva("RESULT", _("Result"), 64, siCentrado=True)
        self.grid = grid = Grid.Grid(self, oColumnas, siSelecFilas=True)
        self.grid.coloresAlternados()
        self.registrarGrid(grid)

        liAcciones = [
            (_("Accept"), Iconos.Aceptar(), "aceptar"),
            None,
            (_("Cancel"), Iconos.Cancelar(), "cancelar"),
            None,
        ]
        tb = Controles.TB(self, liAcciones)

        layout = Colocacion.V().control(tb).control(grid).margen(3)
        self.setLayout(layout)

        self.recuperarVideo(anchoDefecto=400)
        self.partidaElegida = None
Exemplo n.º 6
0
 def config(self):
     menu = QTVarios.LCMenu(self)
     smenu = menu.submenu(_("Tactics"), Iconos.Tacticas())
     go_fast = self.tol.go_fast
     dico = {True: Iconos.Aceptar(), False: Iconos.PuntoAmarillo()}
     smenu.opcion("t_false", _("Stop after solve"), dico[not go_fast])
     smenu.opcion("t_true", _("Jump to the next after solve"),
                  dico[go_fast])
     menu.separador()
     menu.opcion("remove", _("Remove all results of all levels"),
                 Iconos.Cancelar())
     resp = menu.lanza()
     if resp:
         if resp.startswith("t_"):
             self.tol.go_fast = resp == "t_true"
             TurnOnLights.write_tol(self.tol)
         elif resp == "remove":
             if not QTUtil2.pregunta(
                     self,
                     _("Are you sure you want to delete all results of all levels and start again from scratch?"
                       )):
                 return
             TurnOnLights.remove_tol(self.tol)
             self.reinit = True
             self.guardarVideo()
             self.accept()
Exemplo n.º 7
0
    def __init__(self, w_parent, game, nj, procesador):

        main_window = w_parent

        self.procesador = procesador

        titulo = _("Moves tree")
        icono = Iconos.Arbol()
        extparam = "moves"
        QTVarios.WDialogo.__init__(self, main_window, titulo, icono, extparam)

        dicVideo = self.restore_dicvideo()

        self.dbCache = UtilSQL.DictSQL(Code.configuration.ficheroMoves)
        if nj >= 0:
            position = game.move(nj).position
        else:
            position = game.last_position
        self.listaMoves = ListaMoves(None, position.fen(), self.dbCache)

        tb = QTVarios.LCTB(self)
        tb.new(_("Save"), Iconos.Grabar(), self.grabar)
        tb.new(_("Cancel"), Iconos.Cancelar(), self.cancelar)

        self.infoMove = InfoMove(position.is_white)

        w = QtWidgets.QWidget(self)
        ly = Colocacion.V().control(tb).control(self.infoMove)
        w.setLayout(ly)

        self.wmoves = WMoves(self, procesador)

        self.splitter = splitter = QtWidgets.QSplitter(self)
        splitter.addWidget(w)
        splitter.addWidget(self.wmoves)

        ly = Colocacion.H().control(splitter).margen(0)

        self.setLayout(ly)

        self.wmoves.tree.setFocus()

        anchoBoard = self.infoMove.board.width()

        self.restore_video(anchoDefecto=869 - 242 + anchoBoard)
        if not dicVideo:
            dicVideo = {
                "TREE_3": 27,
                "SPLITTER": [260 - 242 + anchoBoard, 617],
                "TREE_1": 49,
                "TREE_2": 383,
                "TREE_4": 25,
            }
        sz = dicVideo.get("SPLITTER", None)
        if sz:
            self.splitter.setSizes(sz)
        for x in range(1, 6):
            w = dicVideo.get("TREE_%d" % x, None)
            if w:
                self.wmoves.tree.setColumnWidth(x, w)
Exemplo n.º 8
0
    def __init__(self, wParent, liGM):

        super(WImportar, self).__init__(wParent)

        self.liGM = liGM

        self.setWindowTitle(_("Import"))
        self.setWindowIcon(Iconos.ImportarGM())
        self.setWindowFlags(
                QtCore.Qt.Dialog | QtCore.Qt.WindowTitleHint | QtCore.Qt.WindowMinimizeButtonHint | QtCore.Qt.WindowMaximizeButtonHint)

        # Toolbar
        liAcciones = [(_("Import"), Iconos.Aceptar(), self.accept), None,
                      (_("Cancel"), Iconos.Cancelar(), self.reject), None,
                      (_("Mark"), Iconos.Marcar(), self.marcar), None,
                      ]
        tb = Controles.TBrutina(self, liAcciones)

        # Lista
        oColumnas = Columnas.ListaColumnas()
        oColumnas.nueva("ELEGIDO", "", 22, siChecked=True)
        oColumnas.nueva("NOMBRE", _("Grandmaster"), 140)
        oColumnas.nueva("PARTIDAS", _("Games"), 60, siDerecha=True)

        self.grid = Grid.Grid(self, oColumnas)
        n = self.grid.anchoColumnas()
        self.grid.setFixedWidth(n + 20)

        # Layout
        layout = Colocacion.V().control(tb).control(self.grid).margen(3)
        self.setLayout(layout)
Exemplo n.º 9
0
    def __init__(self, procesador, liPGN):
        titulo = _("Edit PGN labels")
        icono = Iconos.PGN()
        extparam = "editlabels"

        QTVarios.WDialogo.__init__(self, procesador.pantalla, titulo, icono, extparam)
        self.procesador = procesador
        self.creaLista(liPGN)

        # Toolbar
        liAccionesWork = (
            (_("Accept"), Iconos.Aceptar(), self.aceptar), None,
            (_("Cancel"), Iconos.Cancelar(), self.cancelar), None,
            (_("Up"), Iconos.Arriba(), self.arriba), None,
            (_("Down"), Iconos.Abajo(), self.abajo), None,
        )
        tbWork = Controles.TBrutina(self, liAccionesWork, tamIcon=24)

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

        self.grid = Grid.Grid(self, oColumnas, siEditable=True)
        n = self.grid.anchoColumnas()
        self.grid.setFixedWidth(n + 20)
        self.registrarGrid(self.grid)

        # Layout
        layout = Colocacion.V().control(tbWork).control(self.grid).margen(3)
        self.setLayout(layout)

        self.recuperarVideo()
    def __init__(self, wParent, partida, nj, procesador):

        pantalla = wParent

        self.procesador = procesador

        titulo = _("Moves tree")
        icono = Iconos.Arbol()
        extparam = "moves"
        QTVarios.WDialogo.__init__(self, pantalla, titulo, icono, extparam)

        dicVideo = self.recuperarDicVideo()

        self.dbCache = Util.DicSQL(VarGen.configuracion.ficheroMoves)
        if nj >= 0:
            posicion = partida.jugada(nj).posicion
        else:
            posicion = partida.ultPosicion
        self.listaMoves = ListaMoves(None, posicion.fen(), self.dbCache)

        tb = QTVarios.LCTB(self)
        tb.new(_("Save"), Iconos.Grabar(), self.grabar)
        tb.new(_("Cancel"), Iconos.Cancelar(), self.cancelar)

        self.infoMove = InfoMove(posicion.siBlancas)

        self.wmoves = WMoves(self, procesador)

        self.splitter = splitter = QtGui.QSplitter(self)
        splitter.addWidget(self.infoMove)
        splitter.addWidget(self.wmoves)

        ly = Colocacion.H().control(splitter).margen(0)

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

        self.setLayout(layout)

        self.wmoves.tree.setFocus()

        anchoTablero = self.infoMove.tablero.width()

        self.recuperarVideo(anchoDefecto=869 - 242 + anchoTablero)
        if not dicVideo:
            dicVideo = {
                'TREE_3': 27,
                'SPLITTER': [260 - 242 + anchoTablero, 617],
                'TREE_1': 49,
                'TREE_2': 383,
                'TREE_4': 25
            }
        sz = dicVideo.get("SPLITTER", None)
        if sz:
            self.splitter.setSizes(sz)
        for x in range(1, 6):
            w = dicVideo.get("TREE_%d" % x, None)
            if w:
                self.wmoves.tree.setColumnWidth(x, w)
Exemplo n.º 11
0
    def __init__(self, owner, liFens, motor, segundos, fns):

        super(WDailyTest, self).__init__(owner, _("Your daily test"),
                                         Iconos.DailyTest(), "nivel")

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

        if motor.startswith("*"):
            motor = motor[1:]
        confMotor = self.configuracion.buscaTutor(motor, "mcbrain")
        self.xtutor = self.procesador.creaGestorMotor(confMotor,
                                                      segundos * 1000, None)
        self.xtutor.maximizaMultiPV()

        self.historico = owner.historico

        # Tablero
        confTablero = self.configuracion.confTablero("NIVEL", 48)

        self.liFens = liFens
        self.nFens = len(self.liFens)
        self.juego = 0
        self.liPuntos = []
        self.liPV = []
        self.liTiempos = []
        self.fns = fns

        self.tablero = Tablero.Tablero(self, confTablero)
        self.tablero.crea()
        self.tablero.ponMensajero(self.mueveHumano)

        # Rotulos informacion
        self.lbColor = Controles.LB(self, "").ponWrap().anchoMinimo(200)
        self.lbJuego = Controles.LB(self, "").alinCentrado()

        # Tool bar
        liAcciones = (
            # ( _( "Start" ), Iconos.Empezar(), "empezar" ),
            (_("Analysis"), Iconos.Tutor(), "analizar"),
            (_("Cancel"), Iconos.Cancelar(), "cancelar"),
            (_("Continue"), Iconos.Pelicula_Seguir(), "seguir"),
            (_("Resign"), Iconos.Abandonar(), "abandonar"),
        )
        self.tb = Controles.TB(self, liAcciones)

        lyT = Colocacion.V().control(self.tablero).relleno()
        lyV = Colocacion.V().control(self.lbJuego).relleno().control(
            self.lbColor).relleno(2)
        lyTV = Colocacion.H().otro(lyT).otro(lyV)
        ly = Colocacion.V().control(self.tb).otro(lyTV)

        self.setLayout(ly)

        self.posicion = ControlPosicion.ControlPosicion()
        self.recuperarVideo()

        self.siguienteJugada()
    def __init__(self, owner, liFens, engine, segundos, fns):

        super(WDailyTest, self).__init__(owner, _("Your daily test"),
                                         Iconos.DailyTest(), "nivel")

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

        if engine.startswith("*"):
            engine = engine[1:]
        confMotor = self.configuration.buscaTutor(engine)
        self.xtutor = self.procesador.creaManagerMotor(confMotor,
                                                       segundos * 1000, None)
        self.xtutor.maximizaMultiPV()

        self.historico = owner.historico

        # Board
        config_board = self.configuration.config_board("LEVEL", 48)

        self.liFens = liFens
        self.nFens = len(self.liFens)
        self.juego = 0
        self.liPuntos = []
        self.li_pv = []
        self.li_tiempos = []
        self.fns = fns

        self.board = Board.Board(self, config_board)
        self.board.crea()
        self.board.set_dispatcher(self.player_has_moved)

        # Rotulos informacion
        self.lbColor = Controles.LB(self, "").set_wrap().anchoMinimo(200)
        self.lbJuego = Controles.LB(self, "").align_center()

        # Tool bar
        li_acciones = (
            # ( _( "Start" ), Iconos.Empezar(), "empezar" ),
            (_("Analysis"), Iconos.Tutor(), "analizar"),
            (_("Cancel"), Iconos.Cancelar(), "cancelar"),
            (_("Continue"), Iconos.Pelicula_Seguir(), "seguir"),
            (_("Resign"), Iconos.Abandonar(), "abandonar"),
        )
        self.tb = Controles.TB(self, li_acciones)

        lyT = Colocacion.V().control(self.board).relleno()
        lyV = Colocacion.V().control(self.lbJuego).relleno().control(
            self.lbColor).relleno(2)
        lyTV = Colocacion.H().otro(lyT).otro(lyV)
        ly = Colocacion.V().control(self.tb).otro(lyTV)

        self.setLayout(ly)

        self.position = Position.Position()
        self.restore_video()

        self.play_next_move()
    def __init__(self, wParent):

        QtGui.QDialog.__init__(self, wParent)

        self.wParent = wParent

        self.fichero = ""

        self.setWindowTitle(_("Create a new book"))
        self.setWindowIcon(Iconos.Libros())
        self.setWindowFlags(QtCore.Qt.WindowCloseButtonHint | QtCore.Qt.Dialog
                            | QtCore.Qt.WindowTitleHint)

        f = Controles.TipoLetra(puntos=9, peso=75)

        self.configuracion = VarGen.configuracion
        fvar = self.configuracion.ficheroBooks
        self.listaLibros = Books.ListaLibros()
        self.listaLibros.recuperaVar(fvar)

        lbFichero = Controles.LB(self, _("Book to create") + ":").ponFuente(f)
        self.btFichero = Controles.PB(self, "", self.buscaFichero,
                                      False).anchoMinimo(450).ponFuente(f)
        lbMaxPly = Controles.LB(self,
                                _("Maximum no. half moves (ply)") +
                                ":").ponFuente(f)
        self.sbMaxPly = Controles.SB(self, 0, 0, 999).tamMaximo(50)
        lbMinGame = Controles.LB(self,
                                 _("Minimum number of games") +
                                 ":").ponFuente(f)
        self.sbMinGame = Controles.SB(self, 3, 1, 999).tamMaximo(50)
        lbMinScore = Controles.LB(self, _("Minimum score") + ":").ponFuente(f)
        self.sbMinScore = Controles.SB(self, 0, 0, 100).tamMaximo(50)
        self.chbOnlyWhite = Controles.CHB(self, _("White only"),
                                          False).ponFuente(f)
        self.chbOnlyBlack = Controles.CHB(self, _("Black only"),
                                          False).ponFuente(f)
        self.chbUniform = Controles.CHB(self, _("Uniform distribution"),
                                        False).ponFuente(f)

        lyf = Colocacion.H().control(lbFichero).control(self.btFichero)
        ly = Colocacion.G().margen(15)
        ly.otroc(lyf, 0, 0, 1, 2)
        ly.controld(lbMaxPly, 1, 0).control(self.sbMaxPly, 1, 1)
        ly.controld(lbMinGame, 2, 0).control(self.sbMinGame, 2, 1)
        ly.controld(lbMinScore, 3, 0).control(self.sbMinScore, 3, 1)
        ly.controlc(self.chbOnlyWhite, 4, 0, 1, 2)
        ly.controlc(self.chbOnlyBlack, 5, 0, 1, 2)
        ly.controlc(self.chbUniform, 6, 0, 1, 2)

        # Toolbar
        liAcciones = [(_("Accept"), Iconos.Aceptar(), "aceptar"), None,
                      (_("Cancel"), Iconos.Cancelar(), "cancelar"), None]
        tb = Controles.TB(self, liAcciones)

        # Layout
        layout = Colocacion.V().control(tb).otro(ly).margen(3)
        self.setLayout(layout)
Exemplo n.º 14
0
    def __init__(self, wparent, game):
        self.game = game

        self.wparent = wparent
        self.configuration = configuration = Code.configuration
        QtWidgets.QWidget.__init__(self, wparent)

        li_acciones = (
            (_("Save"), Iconos.Grabar(), self.save),
            None,
            (_("Cancel"), Iconos.Cancelar(), self.wparent.cancelar),
            None,
            (_("Start position"), Iconos.Datos(), self.inicial),
            None,
            (_("Clear"), Iconos.Borrar(), self.limpia),
            None,
            (_("Take back"), Iconos.Atras(), self.atras),
            None,
        )

        self.tb = Controles.TBrutina(self,
                                     li_acciones,
                                     with_text=False,
                                     icon_size=20)

        config_board = configuration.config_board("VOYAGERPGN", 24)
        self.board = Board.Board(self, config_board)
        self.board.crea()
        self.board.set_dispatcher(self.player_has_moved)
        Delegados.generaPM(self.board.piezas)

        o_columns = Columnas.ListaColumnas()
        o_columns.nueva("NUMBER", _("N."), 35, centered=True)
        self.si_figurines_pgn = configuration.x_pgn_withfigurines
        nAnchoColor = (self.board.ancho - 35 - 20) // 2
        o_columns.nueva("WHITE",
                        _("White"),
                        nAnchoColor,
                        edicion=Delegados.EtiquetaPGN(
                            True if self.si_figurines_pgn else None))
        o_columns.nueva("BLACK",
                        _("Black"),
                        nAnchoColor,
                        edicion=Delegados.EtiquetaPGN(
                            False if self.si_figurines_pgn else None))
        self.pgn = Grid.Grid(self,
                             o_columns,
                             siCabeceraMovible=False,
                             siSelecFilas=True)
        self.pgn.setMinimumWidth(self.board.ancho)

        ly = Colocacion.V().control(self.tb).control(self.board)
        ly.control(self.pgn)
        ly.margen(1)
        self.setLayout(ly)

        self.board.set_position(self.game.last_position)
        self.play_next_move()
Exemplo n.º 15
0
    def __init__(self, wparent, partida):
        self.partida = partida

        self.wparent = wparent
        self.configuracion = configuracion = VarGen.configuracion
        QtGui.QWidget.__init__(self, wparent)

        liAcciones = (
            (_("Save"), Iconos.Grabar(), self.save),
            None,
            (_("Cancel"), Iconos.Cancelar(), self.wparent.cancelar),
            None,
            (_("Start position"), Iconos.Datos(), self.inicial),
            None,
            (_("Clear"), Iconos.Borrar(), self.limpia),
            None,
            (_("Take back"), Iconos.Atras(), self.atras),
            None,
        )

        self.tb = Controles.TBrutina(self,
                                     liAcciones,
                                     siTexto=False,
                                     tamIcon=20)

        confTablero = configuracion.confTablero("VOYAGERPGN", 24)
        self.tablero = Tablero.Tablero(self, confTablero)
        self.tablero.crea()
        self.tablero.ponMensajero(self.mueveHumano)
        Delegados.generaPM(self.tablero.piezas)

        oColumnas = Columnas.ListaColumnas()
        oColumnas.nueva("NUMERO", _("N."), 35, siCentrado=True)
        self.siFigurinesPGN = configuracion.figurinesPGN
        nAnchoColor = (self.tablero.ancho - 35 - 20) / 2
        oColumnas.nueva("BLANCAS",
                        _("White"),
                        nAnchoColor,
                        edicion=Delegados.EtiquetaPGN(
                            True if self.siFigurinesPGN else None))
        oColumnas.nueva("NEGRAS",
                        _("Black"),
                        nAnchoColor,
                        edicion=Delegados.EtiquetaPGN(
                            False if self.siFigurinesPGN else None))
        self.pgn = Grid.Grid(self,
                             oColumnas,
                             siCabeceraMovible=False,
                             siSelecFilas=True)
        self.pgn.setMinimumWidth(self.tablero.ancho)

        ly = Colocacion.V().control(self.tb).control(self.tablero)
        ly.control(self.pgn)
        ly.margen(1)
        self.setLayout(ly)

        self.tablero.ponPosicion(self.partida.ultPosicion)
        self.siguienteJugada()
Exemplo n.º 16
0
    def __init__(self,
                 parent,
                 mensaje,
                 siCancelar,
                 siMuestraYa,
                 opacity,
                 posicion,
                 fixedSize,
                 titCancelar,
                 background,
                 pmImagen=None,
                 puntos=12,
                 conImagen=True):

        assert parent is not None

        super(MensEspera, self).__init__(parent)

        self.setWindowFlags(QtCore.Qt.Window | QtCore.Qt.FramelessWindowHint)
        self.setStyleSheet("QWidget, QLabel { background: %s }" % background)
        if conImagen:
            lbi = QtGui.QLabel(self)
            lbi.setPixmap(pmImagen if pmImagen else Iconos.pmMensEspera())

        self.owner = parent

        self.posicion = posicion
        self.siCancelado = False

        self.lb = lb = Controles.LB(parent, resalta(mensaje)).ponFuente(
            Controles.TipoLetra(puntos=puntos)).ponWrap()

        if siCancelar:
            if not titCancelar:
                titCancelar = _("Cancel")
            self.btCancelar = Controles.PB(
                self, titCancelar, rutina=self.cancelar,
                plano=False).ponIcono(Iconos.Cancelar()).anchoFijo(100)

        ly = Colocacion.G()
        if conImagen:
            ly.control(lbi, 0, 0, 3, 1)
        ly.control(lb, 1, 1)
        if siCancelar:
            ly.controlc(self.btCancelar, 2, 1)

        ly.margen(12)
        self.setLayout(ly)
        self.teclaPulsada = None

        if fixedSize:
            self.setFixedWidth(fixedSize)

        self.setWindowOpacity(opacity)
        if siMuestraYa:
            self.muestra()
Exemplo n.º 17
0
def tbAcceptCancel(parent, siDefecto=False, siReject=True):
    liAcciones = [(_("Accept"), Iconos.Aceptar(), parent.aceptar),
                  None,
                  (_("Cancel"), Iconos.Cancelar(), parent.reject if siReject else parent.cancelar),
                  ]
    if siDefecto:
        liAcciones.append(None)
        liAcciones.append((_("Default"), Iconos.Defecto(), parent.defecto))
    liAcciones.append(None)

    return Controles.TBrutina(parent, liAcciones)
Exemplo n.º 18
0
    def __init__(self, grid_owner, configuracion, work):
        QtWidgets.QDialog.__init__(self, grid_owner)
        self.setWindowTitle(_("Edit columns"))
        self.setWindowIcon(Iconos.EditColumns())

        self.grid_owner = grid_owner
        self.o_columnas_base = grid_owner.columnas()
        self.o_columnas = self.o_columnas_base.clone()

        self.configuracion = configuracion
        self.work = work

        li_options = [
            (_("Save"), Iconos.GrabarFichero(), self.aceptar),
            None,
            (_("Cancel"), Iconos.Cancelar(), self.reject),
            None,
            (_("Up"), Iconos.Arriba(), self.tw_up),
            (_("Down"), Iconos.Abajo(), self.tw_down),
            None,
            (_("Configurations"), Iconos.Configurar(), self.configurations),
            None,
        ]
        tb = QTVarios.LCTB(self, li_options)

        # Grid
        o_columns = Columnas.ListaColumnas()
        o_columns.nueva("SIMOSTRAR", "", 20, siChecked=True)
        o_columns.nueva("CLAVE", _("Key"), 80, centered=True)
        o_columns.nueva("CABECERA",
                        _("Title"),
                        150,
                        edicion=Delegados.LineaTexto())
        o_columns.nueva("ANCHO",
                        _("Width"),
                        60,
                        edicion=Delegados.LineaTexto(siEntero=True),
                        siDerecha=True)

        self.liAlin = [_("Left"), _("Center"), _("Right")]
        o_columns.nueva("ALINEACION",
                        _("Alignment"),
                        100,
                        centered=True,
                        edicion=Delegados.ComboBox(self.liAlin))
        o_columns.nueva("CTEXTO", _("Foreground"), 80, centered=True)
        o_columns.nueva("CFONDO", _("Background"), 80, centered=True)
        self.grid = Grid.Grid(self, o_columns, siEditable=True)

        layout = Colocacion.V().control(tb).control(self.grid).margen(3)
        self.setLayout(layout)

        self.resize(self.grid.anchoColumnas() + 48, 360)
        self.grid.goto(0, 1)
    def ponToolbar(self, tipo):

        if tipo == self.INICIO:
            liAcciones = (
                (_("Cancel"), Iconos.Cancelar(), "cancelar"),
                None,
                (_("Reinit"), Iconos.Reiniciar(), "reset"),
                None,
                (_("Help"), Iconos.AyudaGR(), "ayuda"),
                None,
            )
        elif tipo == self.FINAL_JUEGO:
            liAcciones = (
                (_("Close"), Iconos.MainMenu(), "final"),
                None,
                (_("Reinit"), Iconos.Reiniciar(), "reset"),
                None,
                (_("Replay game"), Iconos.Pelicula(), "replay"),
                None,
            )
        elif tipo == self.REPLAY:
            liAcciones = (
                (_("Cancel"), Iconos.Cancelar(), "repCancelar"),
                None,
                (_("Reinit"), Iconos.Inicio(), "repReiniciar"),
                None,
                (_("Slow"), Iconos.Pelicula_Lento(), "repSlow"),
                None,
                (_("Pause"), Iconos.Pelicula_Pausa(), "repPause"),
                None,
                (_("Fast"), Iconos.Pelicula_Rapido(), "repFast"),
                None,
            )
        elif tipo == self.REPLAY_CONTINUE:
            liAcciones = (
                (_("Cancel"), Iconos.Cancelar(), "repCancelar"),
                None,
                (_("Continue"), Iconos.Pelicula_Seguir(), "repContinue"),
                None,
            )
        self.tb.reset(liAcciones)
Exemplo n.º 20
0
    def __init__(self, owner, dbgames: [DBgames.DBgames]):
        QTVarios.WDialogo.__init__(self, owner, _("Tags"), Iconos.Tags(), "tagsedition")
        self.dbgames = dbgames
        self.dic_cambios = None

        dcabs = dbgames.recuperaConfig("dcabs", {})
        li_basetags = dbgames.li_tags()
        if li_basetags[0] == "PLYCOUNT":
            del li_basetags[0]

        self.li_data = []
        for tag in li_basetags:
            dic = {
                "KEY": tag,
                "LABEL": dcabs.get(tag, Util.primera_mayuscula(tag)),
                "ACTION": "-",
                "VALUE": "",
                "NEW": False,
            }
            dic["PREV_LABEL"] = dic["KEY"]
            self.li_data.append(dic)

        o_columns = Columnas.ListaColumnas()
        o_columns.nueva("KEY", _("Key"), 80, centered=True)
        o_columns.nueva("LABEL", _("PGN Label"), 80, centered=True, edicion=Delegados.LineaTexto(rx="[A-Za-z_0-9]*"))

        self.fill_column = _("Fill column with value")
        self.remove_column = _("Remove column")
        self.nothing = "-"
        self.li_actions = [self.nothing, self.fill_column, self.remove_column]
        o_columns.nueva("ACTION", _("Action"), 80, centered=True, edicion=Delegados.ComboBox(self.li_actions))
        o_columns.nueva("VALUE", self.fill_column, 200, edicion=Delegados.LineaTextoUTF8())
        self.gtags = Grid.Grid(self, o_columns, siEditable=True)

        li_acciones = (
            (_("Save"), Iconos.Aceptar(), self.aceptar),
            None,
            (_("Cancel"), Iconos.Cancelar(), self.reject),
            None,
            (_("New"), Iconos.Nuevo(), self.new),
            None,
        )
        tb = QTVarios.LCTB(self, li_acciones)

        ly = Colocacion.V().control(tb).control(self.gtags).margen(4)

        self.setLayout(ly)

        self.register_grid(self.gtags)
        self.restore_video(anchoDefecto=self.gtags.anchoColumnas() + 20, altoDefecto=400)

        self.gtags.gotop()
Exemplo n.º 21
0
    def __init__(self, owner, partida):

        titulo = _("Choose moves")
        icono = Iconos.Camara()
        extparam = "tabvpart"
        QTVarios.WDialogo.__init__(self, owner, titulo, icono, extparam)

        self.owner = owner
        self.partida = partida
        self.siEmpiezaConNegras = partida.siEmpiezaConNegras
        siTodos = True
        self.liElegidos = [siTodos] * len(partida.liJugadas)

        liAcciones = [
            (_("Accept"), Iconos.Aceptar(), "aceptar"),
            None,
            (_("Cancel"), Iconos.Cancelar(), "reject"),
            None,
            (_("Mark"), Iconos.Marcar(), "marcar"),
            None,
        ]
        tb = Controles.TB(self, liAcciones)

        # Tablero
        confTablero = VarGen.configuracion.confTablero("ELIGEMOVS", 24)
        self.tablero = Tablero.TableroVisual(self, confTablero)
        self.tablero.crea()
        self.tablero.desactivaTodas()

        # Pgn
        oColumnas = Columnas.ListaColumnas()
        oColumnas.nueva("ELEGIDO", "", 30, siCentrado=True, siChecked=True)
        oColumnas.nueva("NUMERO", _("N."), 35, siCentrado=True)
        oColumnas.nueva("BLANCAS", _("White"), 100, siCentrado=True)
        oColumnas.nueva("NEGRAS", _("Black"), 100, siCentrado=True)
        self.pgn = Grid.Grid(self,
                             oColumnas,
                             siCabeceraMovible=False,
                             siSelecFilas=True)
        nAnchoPgn = self.pgn.anchoColumnas() + 20
        self.pgn.setMinimumWidth(nAnchoPgn)
        self.pgn.gotop()

        ly = Colocacion.H().control(self.tablero).control(self.pgn)

        layout = Colocacion.V().control(tb).otro(ly)
        self.setLayout(layout)
        self.pgn.setFocus()

        self.resultado = []
    def __init__(self, owner, fichero):
        self.litourneys = Everest.str_file(fichero)
        self.configuracion = owner.configuracion
        titulo = _("New expedition")
        icono = Iconos.Trekking()
        extparam = "newexpedition"
        QTVarios.WDialogo.__init__(self, owner, titulo, icono, extparam)

        self.selected = None

        # Torneo
        li = [("%s (%d)" % (_F(tourney["TOURNEY"]), len(tourney["GAMES"])), tourney) for tourney in self.litourneys]
        li.sort(key=lambda x:x[0])
        self.cbtourney, lbtourney = QTUtil2.comboBoxLB(self, li, li[0], _("Expedition"))
        btmas = Controles.PB(self, "", self.mas).ponIcono(Iconos.Mas22())
        lytourney = Colocacion.H().control(lbtourney).control(self.cbtourney).control(btmas).relleno(1)

        # tolerance
        self.sbtolerance_min, lbtolerance_min = QTUtil2.spinBoxLB(self, 20, 0, 99999, _("From"))
        self.sbtolerance_min.capturaCambiado(self.tolerance_changed)
        self.sbtolerance_max, lbtolerance_max = QTUtil2.spinBoxLB(self, 1000, 0, 99999, _("To"))
        lbexplanation = Controles.LB(self, _("Maximum lost points for having to repeat active game"))
        ly = Colocacion.H().relleno(2).control(lbtolerance_min).control(self.sbtolerance_min).relleno(1)
        ly.control(lbtolerance_max).control(self.sbtolerance_max).relleno(2)
        layout = Colocacion.V().otro(ly).control(lbexplanation)
        gbtolerance = Controles.GB(self, _("Tolerance"), layout)

        # tries
        self.sbtries_min, lbtries_min = QTUtil2.spinBoxLB(self, 2, 1, 99999, _("From"))
        self.sbtries_min.capturaCambiado(self.tries_changed)
        self.sbtries_max, lbtries_max = QTUtil2.spinBoxLB(self, 15, 1, 99999, _("To"))
        lbexplanation = Controles.LB(self, _("Maximum repetitions to return to the previous game"))
        ly = Colocacion.H().relleno(2).control(lbtries_min).control(self.sbtries_min).relleno(1)
        ly.control(lbtries_max).control(self.sbtries_max).relleno(2)
        layout = Colocacion.V().otro(ly).control(lbexplanation)
        gbtries = Controles.GB(self, _("Tries"), layout)

        # color
        liColors = ((_("Default"), "D"), (_("White"), "W"), (_("Black"), "B"))
        self.cbcolor = Controles.CB(self, liColors, "D")
        layout = Colocacion.H().relleno(1).control(self.cbcolor).relleno(1)
        gbcolor = Controles.GB(self, _("Color"), layout)

        tb = QTVarios.LCTB(self)
        tb.new(_("Accept"), Iconos.Aceptar(), self.aceptar)
        tb.new(_("Cancel"), Iconos.Cancelar(), self.cancelar)

        layout = Colocacion.V().control(tb).otro(lytourney).control(gbtolerance).control(gbtries).control(gbcolor)

        self.setLayout(layout)
Exemplo n.º 23
0
    def __init__(self, wgm, ogm):
        self.ogm = ogm
        self.liRegs = ogm.genToSelect()
        self.siReverse = False
        self.claveSort = None

        dgm = GM.dicGM()
        nombre = dgm.get(ogm.gm, ogm.gm)
        titulo = "%s - %s" % (_("One game"), nombre)
        icono = Iconos.Uno()
        extparam = "gm1g"
        super().__init__(parent=wgm,
                         titulo=titulo,
                         icono=icono,
                         extparam=extparam)

        oColumnas = Columnas.ListaColumnas()
        oColumnas.nueva("NOMBRE", _("Opponent"), 180)
        oColumnas.nueva("FECHA", _("Date"), 90, siCentrado=True)
        oColumnas.nueva("EVENT", _("Event"), 140, siCentrado=True)
        oColumnas.nueva("ECO", _("ECO"), 40, siCentrado=True)
        oColumnas.nueva("RESULT", _("Result"), 64, siCentrado=True)
        self.grid = grid = Grid.Grid(self,
                                     oColumnas,
                                     siSelecFilas=True,
                                     siSeleccionMultiple=True)
        nAnchoPgn = self.grid.anchoColumnas() + 20
        self.grid.setMinimumWidth(nAnchoPgn)
        self.grid.coloresAlternados()

        self.registrarGrid(grid)

        liAcciones = [
            (_("Accept"), Iconos.Aceptar(), self.aceptar),
            None,
            (_("Cancel"), Iconos.Cancelar(), self.cancelar),
            None,
        ]
        if ogm.isErasable:
            liAcciones.append((_("Remove"), Iconos.Borrar(), self.remove))
            liAcciones.append(None)

        tb = Controles.TBrutina(self, liAcciones)

        layout = Colocacion.V().control(tb).control(grid).margen(3)
        self.setLayout(layout)

        self.recuperarVideo(anchoDefecto=400)
        self.partidaElegida = None
Exemplo n.º 24
0
    def __init__(self, procesador):

        self.configuracion = procesador.configuracion

        self.leeUsuarios()

        titulo = _("Usuarios")
        icono = Iconos.Usuarios()
        extparam = "users"
        QTVarios.WDialogo.__init__(self, procesador.main_window, titulo, icono,
                                   extparam)

        # Toolbar
        li_acciones = (
            (_("Accept"), Iconos.Aceptar(), self.aceptar),
            None,
            (_("Cancel"), Iconos.Cancelar(), self.cancelar),
            None,
            (_("New"), Iconos.Nuevo(), self.nuevo),
            None,
            (_("Remove"), Iconos.Borrar(), self.borrar),
            None,
        )
        tb = QTVarios.LCTB(self, li_acciones)

        # Lista
        o_columns = Columnas.ListaColumnas()
        o_columns.nueva("NUMERO", _("N."), 40, centered=True)
        o_columns.nueva("USUARIO",
                        _("User"),
                        140,
                        edicion=Delegados.LineaTextoUTF8())
        # o_columns.nueva("PASSWORD", _("Password"), 100, edicion=Delegados.LineaTextoUTF8(siPassword=True))

        self.grid = Grid.Grid(self, o_columns, siEditable=True)

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

        self.grid.gotop()
        self.grid.setFocus()

        self.siPlay = False

        self.register_grid(self.grid)

        if not self.restore_video():
            self.resize(310, 400)
Exemplo n.º 25
0
    def __init__(self, procesador):

        self.configuracion = procesador.configuracion

        self.leeUsuarios()

        titulo = _("Users")
        icono = Iconos.Usuarios()
        extparam = "users"
        super().__init__(titulo=titulo, icono=icono, extparam=extparam)

        # Toolbar
        liAcciones = (
            (_("Accept"), Iconos.Aceptar(), self.aceptar),
            None,
            (_("Cancel"), Iconos.Cancelar(), self.cancelar),
            None,
            (_("New"), Iconos.Nuevo(), self.nuevo),
            None,
            (_("Remove"), Iconos.Borrar(), self.borrar),
            None,
        )
        tb = Controles.TBrutina(self, liAcciones)

        # Lista
        oColumnas = Columnas.ListaColumnas()
        oColumnas.nueva("NUMERO", _("N."), 40, siCentrado=True)
        oColumnas.nueva("USUARIO",
                        _("User"),
                        140,
                        edicion=Delegados.LineaTextoUTF8())
        # oColumnas.nueva("PASSWORD", _("Password"), 100, edicion=Delegados.LineaTextoUTF8(siPassword=True))

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

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

        self.grid.gotop()
        self.grid.setFocus()

        self.siPlay = False

        self.registrarGrid(self.grid)

        if not self.recuperarVideo():
            self.resize(310, 400)
Exemplo n.º 26
0
    def __init__(self, owner, test, procesador, titulo, icono):

        QTVarios.WDialogo.__init__(self, owner, titulo, icono, "horses")

        self.historico = owner.historico
        self.procesador = owner.procesador
        self.configuracion = self.procesador.configuracion

        self.test = test

        # Tablero
        confTablero = self.configuracion.confTablero("HORSES", 48)

        self.tablero = Tablero.Tablero(self, confTablero)
        self.tablero.crea()
        self.tablero.ponMensajero(self.mueveHumano)

        # Rotulo tiempo
        self.lbInformacion = Controles.LB(
            self,
            _("Goal: to capture the king up to the square a8")).alinCentrado()
        self.lbMoves = Controles.LB(self, "")

        # Tool bar
        liAcciones = (
            (_("Cancel"), Iconos.Cancelar(), "cancelar"),
            (_("Reinit"), Iconos.Reiniciar(), "reiniciar"),
            (_("Help"), Iconos.AyudaGR(), "ayuda"),
        )
        self.tb = Controles.TB(self, liAcciones)

        # Layout
        lyInfo = Colocacion.H().control(self.lbInformacion).relleno().control(
            self.lbMoves)
        lyT = Colocacion.V().relleno().control(
            self.tablero).otro(lyInfo).relleno().margen(10)

        ly = Colocacion.V().control(self.tb).otro(lyT).relleno().margen(0)

        self.setLayout(ly)

        self.recuperarVideo()
        self.adjustSize()

        liTB = ["cancelar", "reiniciar", "ayuda"]
        self.ponToolBar(liTB)

        self.reset()
Exemplo n.º 27
0
    def config(self):
        menu = QTVarios.LCMenu(self.main_window)
        menu.opcion("remove", _("Remove all results of all levels"),
                    Iconos.Cancelar())

        resp = menu.lanza()
        if resp:
            if resp == "remove":
                if QTUtil2.pregunta(
                        self.main_window,
                        _("Are you sure you want to delete all results of all levels and start again from scratch?"
                          )):
                    self.pgn.remove_all()
                    self.pgnRefresh(True)
                    self.main_window.base.pgn.gotop()
                    self.ponRotulotm()
Exemplo n.º 28
0
    def __init__(self, owner, test, procesador, titulo, icono):

        QTVarios.WDialogo.__init__(self, owner, titulo, icono, "horses")

        self.historico = owner.historico
        self.procesador = owner.procesador
        self.configuracion = self.procesador.configuracion

        self.test = test

        # Tablero
        config_board = self.configuracion.config_board("HORSES", 48)

        self.tablero = Tablero.Tablero(self, config_board)
        self.tablero.crea()
        self.tablero.set_dispatcher(self.mueve_humano)

        # Rotulo vtime
        self.lbInformacion = Controles.LB(
            self,
            _("Goal: to capture the king up to the square a8")).alinCentrado()
        self.lbMoves = Controles.LB(self, "")

        # Tool bar
        li_acciones = (
            (_("Cancel"), Iconos.Cancelar(), self.cancelar),
            None,
            (_("Reinit"), Iconos.Reiniciar(), self.reiniciar),
            None,
            (_("Help"), Iconos.AyudaGR(), self.ayuda),
        )
        self.tb = Controles.TBrutina(self, li_acciones)

        # Layout
        lyInfo = Colocacion.H().control(self.lbInformacion).relleno().control(
            self.lbMoves)
        lyT = Colocacion.V().relleno().control(
            self.tablero).otro(lyInfo).relleno().margen(10)

        ly = Colocacion.V().control(self.tb).otro(lyT).relleno().margen(0)

        self.setLayout(ly)

        self.restore_video()
        self.adjustSize()

        self.reset()
Exemplo n.º 29
0
    def __init__(self, owner, themes: Themes.Themes, current_move: Move.Move):
        title = _("Select themes")
        extparam = "selelectthemes"

        self.owner = owner
        self.current_move = current_move

        self.st_current_themes = set(self.current_move.li_themes)

        icono = Iconos.Themes()
        QTVarios.WDialogo.__init__(self, owner, title, icono, extparam)

        self.themes = themes

        self.themes.check(self.st_current_themes)
        self.qt_custom = QTUtil.qtColor("#bf5b16")

        self.configuration = Code.configuration

        li_options = [
            (_("Save"), Iconos.GrabarFichero(), self.aceptar),
            None,
            (_("Cancel"), Iconos.Cancelar(), self.reject),
            None,
            (_("Clear all"), Iconos.Borrar(), self.clear_themes),
            None,
        ]
        tb = QTVarios.LCTB(self, li_options, icon_size=24)

        # Grid
        o_columns = Columnas.ListaColumnas()
        o_columns.nueva("SELECTED", "", 20, siChecked=True)
        o_columns.nueva("THEME", "", 280)

        self.o_columnas = o_columns
        self.grid = Grid.Grid(self, o_columns, siEditable=True, altoCabecera=3)
        font = Controles.TipoLetra(puntos=Code.configuration.x_pgn_fontpoints)
        self.grid.ponFuente(font)

        lb_right_click = Controles.LB(
            self, " * %s" % _("More options with right-click"))

        layout = Colocacion.V().control(tb).control(
            self.grid).control(lb_right_click).margen(3)
        self.setLayout(layout)

        self.restore_video(anchoDefecto=self.grid.anchoColumnas() + 48)
Exemplo n.º 30
0
    def __init__(self, owner, nags: Nags.Nags, current_move: Move.Move):
        title = _("Ratings")
        extparam = "selelectnags"

        self.owner = owner
        self.current_move = current_move

        self.st_current_nags = set(self.current_move.li_nags)

        self.nags = nags
        icono = self.nags.ico(14, 16)

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

        self.configuration = Code.configuration

        li_options = [
            (_("Save"), Iconos.GrabarFichero(), self.aceptar),
            None,
            (_("Cancel"), Iconos.Cancelar(), self.reject),
            None,
            (_("Clear all"), Iconos.Borrar(), self.clear_nags),
            None,
        ]
        tb = QTVarios.LCTB(self, li_options, icon_size=24)

        # Grid
        o_columns = Columnas.ListaColumnas()
        o_columns.nueva("SELECTED", "", 20, siChecked=True)
        o_columns.nueva("ICON",
                        "",
                        16,
                        edicion=Delegados.PmIconosBMT(self,
                                                      self.nags.dic_pm(),
                                                      x=8))
        o_columns.nueva("NUMBER", "", 30, centered=True)
        o_columns.nueva("TITLE", "", 240)

        self.o_columnas = o_columns
        self.grid = Grid.Grid(self, o_columns, siEditable=True, altoCabecera=3)
        font = Controles.TipoLetra(puntos=Code.configuration.x_pgn_fontpoints)
        self.grid.ponFuente(font)

        layout = Colocacion.V().control(tb).control(self.grid).margen(3)
        self.setLayout(layout)

        self.restore_video(anchoDefecto=self.grid.anchoColumnas() + 48)