コード例 #1
0
    def __init__(self, wparent, is_game, game):
        self.game = game
        self.position = game.first_position
        self.configuration = configuration = Code.configuration

        self.is_game = is_game

        self.wparent = wparent

        QtWidgets.QWidget.__init__(self, wparent)

        li_acciones = (
            (_("Save"), Iconos.GrabarComo(), self.save),
            None,
            (_("Cancel"), Iconos.Cancelar(), self.cancelar),
            None,
            (_("Start position"), Iconos.Inicio(), self.inicial),
            None,
            (_("Clear board"), Iconos.Borrar(), self.limpiaBoard),
            (_("Paste FEN position"), Iconos.Pegar16(), self.pegar),
            (_("Copy FEN position"), Iconos.Copiar(), self.copiar),
            (_("Scanner"), Iconos.Scanner(), self.scanner),
        )

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

        config_board = configuration.config_board("VOYAGERPOS", 24)
        self.board = Board.PosBoard(self, config_board)
        self.board.crea()
        self.board.set_dispatcher(self.mueve)
        self.board.mensBorrar = self.borraCasilla
        self.board.mensCrear = self.creaCasilla
        self.board.mensRepetir = self.repitePieza
        self.board.ponDispatchDrop(self.dispatchDrop)
        self.board.baseCasillasSC.setAcceptDrops(True)

        dragDropWB = QTVarios.ListaPiezas(self,
                                          "P,N,B,R,Q,K",
                                          self.board,
                                          margen=0)
        dragDropBA = QTVarios.ListaPiezas(self,
                                          "k,q,r,b,n,p",
                                          self.board,
                                          margen=0)

        self.rbWhite = Controles.RB(self, _("White"), rutina=self.cambiaColor)
        self.rbBlack = Controles.RB(self, _("Black"), rutina=self.cambiaColor)

        self.cbWoo = Controles.CHB(self, _("White") + " O-O", True)
        self.cbWooo = Controles.CHB(self, _("White") + " O-O-O", True)
        self.cbBoo = Controles.CHB(self, _("Black") + " O-O", True)
        self.cbBooo = Controles.CHB(self, _("Black") + " O-O-O", True)

        lbEnPassant = Controles.LB(self, _("En passant") + ":")
        self.edEnPassant = Controles.ED(self).controlrx(
            "(-|[a-h][36])").anchoFijo(30)

        self.edMovesPawn, lbMovesPawn = QTUtil2.spinBoxLB(
            self, 0, 0, 999, etiqueta=_("Halfmove clock"), maxTam=50)

        self.edFullMoves, lbFullMoves = QTUtil2.spinBoxLB(
            self, 1, 1, 999, etiqueta=_("Fullmove number"), maxTam=50)

        self.vars_scanner = Scanner.Scanner_vars(
            self.configuration.carpetaScanners)

        self.lb_scanner = Controles.LB(self)

        pb_scanner_deduce = Controles.PB(self,
                                         _("Deduce"),
                                         self.scanner_deduce,
                                         plano=False)
        self.chb_scanner_flip = Controles.CHB(self, _("Flip the board"),
                                              False).capture_changes(
                                                  self, self.scanner_flip)
        self.pb_scanner_learn = Controles.PB(self,
                                             _("Learn"),
                                             self.scanner_learn,
                                             plano=False)
        self.pb_scanner_learn_quit = Controles.PB(
            self, "", self.scanner_learn_quit).ponIcono(Iconos.Menos(),
                                                        icon_size=24)
        self.pb_scanner_learn_quit.ponToolTip(
            _("Remove last learned")).anchoFijo(24)

        self.sb_scanner_tolerance, lb_scanner_tolerance = QTUtil2.spinBoxLB(
            self,
            self.vars_scanner.tolerance,
            3,
            20,
            etiqueta=_("Deduction tolerance"),
            maxTam=50)
        self.sb_scanner_tolerance_learns, lb_scanner_tolerance_learns = QTUtil2.spinBoxLB(
            self,
            self.vars_scanner.tolerance_learns,
            1,
            6,
            etiqueta=_("Learning tolerance"),
            maxTam=50)

        self.chb_rem_ghost_deductions = Controles.CHB(
            self, _("Remove ghost deductions"), self.vars_scanner.rem_ghost)

        self.cb_scanner_select, lb_scanner_select = QTUtil2.comboBoxLB(
            self, [], None, _("OPR"))
        self.cb_scanner_select.capture_changes(self.scanner_change)
        pb_scanner_more = Controles.PB(self, "", self.scanner_more).ponIcono(
            Iconos.Mas())

        self.chb_scanner_ask = Controles.CHB(self, _("Ask before new capture"),
                                             self.vars_scanner.ask)

        self.li_scan_pch = []
        self.is_scan_init = False

        # LAYOUT -------------------------------------------------------------------------------------------
        hbox = Colocacion.H().control(self.rbWhite).espacio(15).control(
            self.rbBlack)
        gbColor = Controles.GB(self, _("Side to play"), hbox)

        ly = Colocacion.G().control(self.cbWoo, 0, 0).control(self.cbBoo, 0, 1)
        ly.control(self.cbWooo, 1, 0).control(self.cbBooo, 1, 1)
        gbEnroques = Controles.GB(self, _("Castling moves possible"), ly)

        ly = Colocacion.G()
        ly.controld(lbMovesPawn, 0, 0, 1, 3).control(self.edMovesPawn, 0, 3)
        ly.controld(lbEnPassant, 1, 0).control(self.edEnPassant, 1, 1)
        ly.controld(lbFullMoves, 1, 2).control(self.edFullMoves, 1, 3)
        gbOtros = Controles.GB(self, "", ly)

        lyT = (Colocacion.H().relleno().control(lb_scanner_tolerance).espacio(
            5).control(self.sb_scanner_tolerance).relleno())
        lyTL = (Colocacion.H().relleno().control(
            lb_scanner_tolerance_learns).espacio(5).control(
                self.sb_scanner_tolerance_learns).relleno())
        lyL = Colocacion.H().control(self.pb_scanner_learn).control(
            self.pb_scanner_learn_quit)
        lyS = Colocacion.H().control(lb_scanner_select).control(
            self.cb_scanner_select).control(pb_scanner_more)
        ly = Colocacion.V().control(self.chb_scanner_flip).control(
            pb_scanner_deduce).otro(lyL).otro(lyT).otro(lyTL)
        ly.control(self.chb_rem_ghost_deductions).otro(lyS)
        ly.control(self.chb_scanner_ask)
        self.gb_scanner = Controles.GB(self, _("Scanner"), ly)

        lyG = Colocacion.G()
        lyG.controlc(dragDropBA, 0, 0)
        lyG.control(self.board, 1, 0).control(self.lb_scanner, 1, 1)
        lyG.controlc(dragDropWB, 2, 0).controlc(self.gb_scanner,
                                                2,
                                                1,
                                                numFilas=4)
        lyG.controlc(gbColor, 3, 0)
        lyG.controlc(gbEnroques, 4, 0)
        lyG.controlc(gbOtros, 5, 0)

        layout = Colocacion.V()
        layout.controlc(self.tb)
        layout.otro(lyG)
        layout.margen(1)
        self.setLayout(layout)

        self.ultimaPieza = "P"
        self.piezas = self.board.piezas
        self.resetPosicion()
        self.ponCursor()

        self.lb_scanner.hide()
        self.pb_scanner_learn_quit.hide()
        self.gb_scanner.hide()
コード例 #2
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 = [
            (_("Quit"), 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()
コード例 #3
0
    def __init__(self, tableroOwner):

        self.tableroOwner = tableroOwner
        titulo = _("Board -> Image")
        icono = Iconos.Camara()
        extparam = "tabvisual"
        QTVarios.WDialogo.__init__(self, tableroOwner, titulo, icono, extparam)

        liAcciones = [( _("Quit"), Iconos.MainMenu(), "terminar" ), None,
                      ( _("Clipboard"), Iconos.Clip(), "portapapeles" ), None,
                      ( _("Save") + " png", Iconos.GrabarFichero(), "grabarFichero" ), None,
                      ( _("Arrows"), Iconos.Flechas(), "flechas" ), None,
                      ( _("Boxes"), Iconos.Marcos(), "marcos" ), None,
                      ( _("Images"), Iconos.SVGs(), "svgs" ), None,
                      # ( _( "Sounds" ), Iconos.S_LeerWav(), "sonidos" ), None,
        ]
        tb = Controles.TB(self, liAcciones)

        # Tablero
        idTab = "TABVISUAL"
        confTablero = VarGen.configuracion.confTablero(idTab, 24, padre=tableroOwner.confTablero.id())
        self.tablero = Tablero.TableroVisual(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.copiaPosicionDe(tableroOwner)
        self.fenInicial = self.tablero.fenActual()
        self.tablero.activaTodas()

        self.leeRecursos()
        self.leeGuion("", False)

        # Tools
        self.listaPiezasW = QTVarios.ListaPiezas(self, "P;N;B;R;Q;K", self.tablero, 32)
        self.listaPiezasB = QTVarios.ListaPiezas(self, "p;n;b;r;q;k", self.tablero, 32)

        # Guion
        liAcciones = [( _("New"), Iconos.Nuevo(), "gnuevo" ),
                      ( _("Insert"), Iconos.Insertar(), "ginsertar" ),
                      ( _("Copy"), Iconos.Copiar(), "gcopiar" ), None,
                      ( _("Remove"), Iconos.Borrar(), "gborrar" ), None,
                      ( _("Up"), Iconos.Arriba(), "garriba" ),
                      ( _("Down"), Iconos.Abajo(), "gabajo" ), None,
                      ( _("Mark"), Iconos.Marcar(), "gmarcar" ), None,
                      ( _("Save"), Iconos.Grabar(), "ggrabarGuion" ),
                      ( _("Open"), Iconos.Recuperar(), "grecuperarGuion" ), None,
                      ( _("Remove script"), Iconos.Delete(), "geliminarGuion" )
        ]
        tbGuion = Controles.TB(self, liAcciones, siTexto=False, tamIcon=20)
        oColumnas = Columnas.ListaColumnas()
        oColumnas.nueva("MARCADO", "", 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.registrarGrid(self.g_guion)

        # Visuales
        self.dragBandaArriba = QTVarios.DragBanda(self, (10,), 40)

        # Guion
        lyGuion = Colocacion.V().control(tbGuion).control(self.g_guion)

        # Zona tablero
        lyT = Colocacion.H()
        lyT.controli(self.listaPiezasW).controli(self.tablero).controli(self.listaPiezasB).otro(lyGuion)

        lyTB = Colocacion.V()
        lyTB.controli(self.dragBandaArriba)
        lyTB.otro(lyT)

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

        self.recuperarVideo()

        self.actualizaBandas()
        li = self.dbConfig["DRAGBANDAARRIBA"]
        if li:
            self.dragBandaArriba.recuperar(li)

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

        self.g_guion.gotop()
        self.g_guion.setFocus()
コード例 #4
0
    def __init__(self, procesador, txtcategoria, nivel, segundos, listaFen, record):

        titulo = _("Check your memory on a chessboard")
        icono = Iconos.Memoria()
        extparam = "memoria"
        QTVarios.WDialogo.__init__(self, procesador.pantalla, titulo, icono, extparam)

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

        self.configuracion = procesador.configuracion
        self.nivel = nivel
        self.segundos = segundos
        self.record = record

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

        self.listaFen = listaFen

        self.posicion = ControlPosicion.ControlPosicion()

        self.tablero = Tablero.PosTablero(self, confTablero)
        self.tablero.crea()
        self.tablero.ponDispatchDrop(self.dispatchDrop)
        self.tablero.baseCasillasSC.setAcceptDrops(True)
        self.ultimaPieza = "P"

        tamPiezas = max(16, int(32 * self.tablero.confTablero.anchoPieza() / 48))
        self.listaPiezasW = QTVarios.ListaPiezas(self, "P,N,B,R,Q,K", self.tablero, tamPiezas, margen=0)
        self.listaPiezasB = QTVarios.ListaPiezas(self, "p,n,b,r,q,k", self.tablero, tamPiezas, margen=0)

        # Ayuda
        lbAyuda = Controles.LB(self, _(
                "<ul><li><b>Add piece</b> : Right mouse button on empty square</li><li><b>Copy piece</b> : Left mouse button on empty square</li><li><b>Move piece</b> : Drag and drop piece with left mouse button</li><li><b>Delete piece</b> : Right mouse button on occupied square</li></ul>"))
        ly = Colocacion.H().control(lbAyuda)
        self.gbAyuda = Controles.GB(self, _("Help"), ly)

        # Rotulos informacion
        lbCategoria = Controles.LB(self, txtcategoria).ponFuente(f)
        lbNivel = Controles.LB(self, _X(_("Level %1/%2"), str(nivel + 1), "25")).ponFuente(f)
        if record:
            lbRecord = Controles.LB(self, _X(_("Record %1 seconds"), str(record))).ponFuente(f)

        # Rotulo de tiempo
        self.rotuloDispone = Controles.LB(self,
                                          _X(_("You have %1 seconds to remember the position of %2 pieces"), str(self.segundos),
                                             str(self.nivel + 3))).ponWrap().ponFuente(f).alinCentrado()
        self.rotuloDispone1 = Controles.LB(self, _("when you know you can press the Continue button")).ponWrap().ponFuente(
                f).alinCentrado()
        ly = Colocacion.V().control(self.rotuloDispone).control(self.rotuloDispone1)
        self.gbTiempo = Controles.GB(self, "", ly)

        self.rotuloDispone1.hide()

        # Tool bar
        liAcciones = (
            (_("Start"), Iconos.Empezar(), "empezar"),
            (_("Continue"), Iconos.Pelicula_Seguir(), "seguir"),
            (_("Check"), Iconos.Check(), "comprobar"),
            (_("Target"), Iconos.Verde32(), "objetivo"),
            (_("Wrong"), Iconos.Rojo32(), "nuestro"),
            (_("Repeat"), Iconos.Pelicula_Repetir(), "repetir"),
            (_("Resign"), Iconos.Abandonar(), "abandonar"),
        )
        self.tb = tb = Controles.TB(self, liAcciones)
        self.ponToolBar(["empezar"])

        # Colocamos
        lyP = Colocacion.H().relleno().control(self.listaPiezasW).control(self.listaPiezasB).relleno().margen(0)
        lyT = Colocacion.V().control(self.tablero).otro(lyP).margen(0)

        lyI = Colocacion.V()
        lyI.control(tb)
        lyI.relleno()
        lyI.controlc(lbCategoria)
        lyI.controlc(lbNivel)
        if record:
            lyI.controlc(lbRecord)
        lyI.controlc(self.gbTiempo)
        lyI.relleno()
        lyI.control(self.gbAyuda)
        lyI.margen(3)

        ly = Colocacion.H().otro(lyT).otro(lyI).relleno()
        ly.margen(3)

        self.setLayout(ly)

        self.timer = None

        self.encenderExtras(False)
コード例 #5
0
ファイル: WinPosition.py プロジェクト: garyliu33/lucaschess
    def __init__(self, wParent, configuracion, fen):

        QtGui.QDialog.__init__(self, wParent)

        self.wParent = wParent

        self.setWindowFlags(QtCore.Qt.Dialog | QtCore.Qt.WindowTitleHint)

        self.configuracion = configuracion

        self.setWindowTitle(_("Position"))
        self.setWindowIcon(Iconos.Datos())

        # Quien mueve
        self.rbBlancas = Controles.RB(self, _("White"))
        self.rbNegras = Controles.RB(self, _("Black"))

        # Enroques permitidos
        self.cbBoo = Controles.CHB(self, _("White") + " O-O", True)
        self.cbBooo = Controles.CHB(self, _("White") + " O-O-O", True)
        self.cbNoo = Controles.CHB(self, _("Black") + " O-O", True)
        self.cbNooo = Controles.CHB(self, _("Black") + " O-O-O", True)

        # Peon al paso
        lbAlPaso = Controles.LB(self, _("En passant") + ":")
        self.edAlPaso = Controles.ED(self).controlrx(
            "(-|[a-h][36])").anchoFijo(30)

        # Medias jugadas desde ultimo mov. peon
        self.edMedias, lbMedias = QTUtil2.spinBoxLB(
            self,
            0,
            0,
            999,
            etiqueta=_("Moves since the last pawn advance or capture"),
            maxTam=50)

        # Jugadas
        self.edJugadas, lbJugadas = QTUtil2.spinBoxLB(self,
                                                      1,
                                                      1,
                                                      999,
                                                      etiqueta=_("Moves"),
                                                      maxTam=50)

        # Botones adicionales
        btPosInicial = Controles.PB(self,
                                    _("Start position"),
                                    self.posInicial,
                                    plano=False)
        btLimpiaTablero = Controles.PB(self,
                                       _("Clear board"),
                                       self.limpiaTablero,
                                       plano=False)
        btPegar = Controles.PB(self,
                               _("Paste FEN position"),
                               self.pegarPosicion,
                               plano=False)
        btCopiar = Controles.PB(self,
                                _("Copy FEN position"),
                                self.copiarPosicion,
                                plano=False)
        btVoyager = Controles.PB(self, "", self.lanzaVoyager,
                                 plano=False).ponIcono(Iconos.Voyager())
        self.btVoice = Controles.PB(self, "", self.voiceActive,
                                    plano=False).ponIcono(Iconos.S_Microfono())
        self.btVoiceX = Controles.PB(self, "", self.voiceDeactive,
                                     plano=False).ponIcono(
                                         Iconos.X_Microfono())

        # Tablero
        confTablero = configuracion.confTablero("POSICION", 24)
        self.posicion = ControlPosicion.ControlPosicion()
        if fen:
            self.posicion.leeFen(fen)
        else:
            self.posicion.posInicial()
        self.tablero = Tablero.PosTablero(self, confTablero)
        self.tablero.crea()
        self.tablero.ponMensajero(self.mueve)
        self.tablero.mensBorrar = self.borraCasilla
        self.tablero.mensCrear = self.creaCasilla
        self.tablero.mensRepetir = self.repitePieza
        self.ultimaPieza = "P"
        self.piezas = self.tablero.piezas

        self.resetPosicion()

        # Piezas drag-drop
        self.dragDropWI = QTVarios.ListaPiezas(self, "P;N;B;R;Q;K",
                                               self.tablero)
        self.dragDropWB = QTVarios.ListaPiezas(self, "P,N,B,R,Q,K",
                                               self.tablero)
        self.dragDropBD = QTVarios.ListaPiezas(self, "k;q;r;b;n;p",
                                               self.tablero)
        self.dragDropBA = QTVarios.ListaPiezas(self, "k,q,r,b,n,p",
                                               self.tablero)
        self.tablero.ponDispatchDrop(self.dispatchDrop)
        self.tablero.baseCasillasSC.setAcceptDrops(True)

        # Ayuda
        lbAyuda = Controles.LB(
            self,
            _("<ul><li><b>Add piece</b> : Right mouse button on empty square</li><li><b>Copy piece</b> : Left mouse button on empty square</li><li><b>Move piece</b> : Drag and drop piece with left mouse button</li><li><b>Delete piece</b> : Right mouse button on occupied square</li></ul>"
              ))

        # Tool bar
        tb = QTUtil2.tbAcceptCancel(self, siReject=False)

        # Layout

        # # Quien mueve
        hbox = Colocacion.H().relleno().control(
            self.rbBlancas).espacio(30).control(self.rbNegras).relleno()
        gbColor = Controles.GB(self, _("Next move"), hbox)

        # # Enroques
        ly = Colocacion.G().control(self.cbBoo, 0, 0).control(self.cbNoo, 0, 1)
        ly.control(self.cbBooo, 1, 0).control(self.cbNooo, 1, 1)
        gbEnroques = Controles.GB(self, _("Castling moves possible"), ly)

        ## Otros
        ly = Colocacion.G()
        ly.controld(lbMedias, 0, 0, 1, 3).control(self.edMedias, 0, 3)
        ly.controld(lbAlPaso, 1, 0).control(self.edAlPaso, 1, 1)
        ly.controld(lbJugadas, 1, 2).control(self.edJugadas, 1, 3)
        gbOtros = Controles.GB(self, "", ly)

        ## Botones adicionales
        lyBA = Colocacion.H().control(btPosInicial).control(
            btLimpiaTablero).control(btPegar).control(btCopiar).control(
                btVoyager)

        ## Ayuda
        ly = Colocacion.H().control(lbAyuda)
        gbAyuda = Controles.GB(self, _("Help"), ly)

        ## Izquierda
        ly = Colocacion.V().control(gbColor).relleno().control(
            gbEnroques).relleno()
        ly.control(gbOtros).relleno().control(gbAyuda).margen(5)
        lyI = Colocacion.V().control(tb).otro(ly).margen(3)

        ## Derecha
        lyBT = Colocacion.H().control(self.btVoice).control(self.btVoiceX)
        lyDA = Colocacion.G()
        lyDA.controlc(self.dragDropBA, 0, 1).otro(lyBT, 0, 2)
        lyDA.controld(self.dragDropWI, 1,
                      0).control(self.tablero, 1,
                                 1).control(self.dragDropBD, 1, 2)
        lyDA.controlc(self.dragDropWB, 2, 1)

        lyD = Colocacion.V().otro(lyDA).otro(lyBA).relleno()

        ## Completo
        ly = Colocacion.H().otro(lyI).otro(lyD).margen(3)
        self.setLayout(ly)

        if configuracion.siDGT:
            if not DGT.activarSegunON_OFF(self.dgt):  # Error
                QTUtil2.mensError(
                    self, _("Error, could not detect the DGT board driver."))

        self.ponCursor()

        self.voyager = None
        self.bufferVoice = ""
        self.queueVoice = []
        self.isVoiceActive = False
        if not configuracion.voice:
            self.btVoiceX.setVisible(False)
            self.btVoice.setVisible(False)
        else:
            if Voice.runVoice.isActive():
                self.voiceActive()
            else:
                self.voiceDeactive()