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()
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()
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)
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()
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()
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()
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()
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()
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()
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)
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
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", ""))
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)
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)
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()
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))
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
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)
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
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()
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)
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()
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()
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()
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()
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()