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, grid_owner, configuracion, work): QtWidgets.QDialog.__init__(self, grid_owner) self.setWindowTitle(_("Edit columns")) self.setWindowIcon(Iconos.EditColumns()) self.grid_owner = grid_owner self.o_columnas_base = grid_owner.columnas() self.o_columnas = self.o_columnas_base.clone() self.configuracion = configuracion self.work = work li_options = [ (_("Save"), Iconos.GrabarFichero(), self.aceptar), None, (_("Cancel"), Iconos.Cancelar(), self.reject), None, (_("Up"), Iconos.Arriba(), self.tw_up), (_("Down"), Iconos.Abajo(), self.tw_down), None, (_("Configurations"), Iconos.Configurar(), self.configurations), None, ] tb = QTVarios.LCTB(self, li_options) # Grid o_columns = Columnas.ListaColumnas() o_columns.nueva("SIMOSTRAR", "", 20, siChecked=True) o_columns.nueva("CLAVE", _("Key"), 80, centered=True) o_columns.nueva("CABECERA", _("Title"), 150, edicion=Delegados.LineaTexto()) o_columns.nueva("ANCHO", _("Width"), 60, edicion=Delegados.LineaTexto(siEntero=True), siDerecha=True) self.liAlin = [_("Left"), _("Center"), _("Right")] o_columns.nueva("ALINEACION", _("Alignment"), 100, centered=True, edicion=Delegados.ComboBox(self.liAlin)) o_columns.nueva("CTEXTO", _("Foreground"), 80, centered=True) o_columns.nueva("CFONDO", _("Background"), 80, centered=True) self.grid = Grid.Grid(self, o_columns, siEditable=True) layout = Colocacion.V().control(tb).control(self.grid).margen(3) self.setLayout(layout) self.resize(self.grid.anchoColumnas() + 48, 360) self.grid.goto(0, 1)
def __init__(self, owner, dbgames: [DBgames.DBgames]): QTVarios.WDialogo.__init__(self, owner, _("Tags"), Iconos.Tags(), "tagsedition") self.dbgames = dbgames self.dic_cambios = None dcabs = dbgames.recuperaConfig("dcabs", {}) li_basetags = dbgames.li_tags() if li_basetags[0] == "PLYCOUNT": del li_basetags[0] self.li_data = [] for tag in li_basetags: dic = { "KEY": tag, "LABEL": dcabs.get(tag, Util.primera_mayuscula(tag)), "ACTION": "-", "VALUE": "", "NEW": False, } dic["PREV_LABEL"] = dic["KEY"] self.li_data.append(dic) o_columns = Columnas.ListaColumnas() o_columns.nueva("KEY", _("Key"), 80, centered=True) o_columns.nueva("LABEL", _("PGN Label"), 80, centered=True, edicion=Delegados.LineaTexto(rx="[A-Za-z_0-9]*")) self.fill_column = _("Fill column with value") self.remove_column = _("Remove column") self.nothing = "-" self.li_actions = [self.nothing, self.fill_column, self.remove_column] o_columns.nueva("ACTION", _("Action"), 80, centered=True, edicion=Delegados.ComboBox(self.li_actions)) o_columns.nueva("VALUE", self.fill_column, 200, edicion=Delegados.LineaTextoUTF8()) self.gtags = Grid.Grid(self, o_columns, siEditable=True) li_acciones = ( (_("Save"), Iconos.Aceptar(), self.aceptar), None, (_("Cancel"), Iconos.Cancelar(), self.reject), None, (_("New"), Iconos.Nuevo(), self.new), None, ) tb = QTVarios.LCTB(self, li_acciones) ly = Colocacion.V().control(tb).control(self.gtags).margen(4) self.setLayout(ly) self.register_grid(self.gtags) self.restore_video(anchoDefecto=self.gtags.anchoColumnas() + 20, altoDefecto=400) self.gtags.gotop()
def __init__(self, owner, tactica, ncopia=None): QtWidgets.QWidget.__init__(self) self.owner = owner self.tacticaINI = tactica if ncopia is not None: reg_historico = tactica.historico()[ncopia] else: reg_historico = None # Total por ficheros self.liFTOTAL = tactica.calculaTotales() total = sum(self.liFTOTAL) # N. puzzles if reg_historico: num = reg_historico["PUZZLES"] else: num = tactica.puzzles if not num or num > total: num = total lb_puzzles = Controles.LB(self, _("Max number of puzzles in each block") + ": ") self.sb_puzzles = Controles.SB(self, num, 1, total) # Reference lb_reference = Controles.LB(self, _("Reference") + ": ") self.ed_reference = Controles.ED(self) # Iconos ico_mas = Iconos.Add() ico_menos = Iconos.Delete() ico_cancel = Iconos.CancelarPeque() ico_reset = Iconos.MoverAtras() def tb_gen(prev): li_acciones = ( (_("Add"), ico_mas, "%s_add" % prev), (_("Delete"), ico_menos, "%s_delete" % prev), None, (_("Delete all"), ico_cancel, "%s_delete_all" % prev), None, (_("Reset"), ico_reset, "%s_reset" % prev), None, ) tb = Controles.TB(self, li_acciones, icon_size=16, with_text=False) return tb f = Controles.TipoLetra(peso=75) # Repeticiones de cada puzzle if reg_historico: self.liJUMPS = reg_historico["JUMPS"][:] else: self.liJUMPS = tactica.jumps[:] tb = tb_gen("jumps") o_col = Columnas.ListaColumnas() o_col.nueva("NUMBER", _("Repetition"), 80, centered=True) o_col.nueva("JUMPS_SEPARATION", _("Separation"), 80, centered=True, edicion=Delegados.LineaTexto(siEntero=True)) self.grid_jumps = Grid.Grid(self, o_col, siSelecFilas=True, siEditable=True, xid="j") self.grid_jumps.setMinimumWidth(self.grid_jumps.anchoColumnas() + 20) ly = Colocacion.V().control(tb).control(self.grid_jumps) gb_jumps = Controles.GB(self, _("Repetitions of each puzzle"), ly).ponFuente(f) self.grid_jumps.gotop() # Repeticion del bloque if reg_historico: self.liREPEAT = reg_historico["REPEAT"][:] else: self.liREPEAT = tactica.repeat[:] tb = tb_gen("repeat") o_col = Columnas.ListaColumnas() o_col.nueva("NUMBER", _("Block"), 40, centered=True) self.liREPEATtxt = (_("Original"), _("Random"), _("Previous")) o_col.nueva("REPEAT_ORDER", _("Order"), 100, centered=True, edicion=Delegados.ComboBox(self.liREPEATtxt)) self.grid_repeat = Grid.Grid(self, o_col, siSelecFilas=True, siEditable=True, xid="r") self.grid_repeat.setMinimumWidth(self.grid_repeat.anchoColumnas() + 20) ly = Colocacion.V().control(tb).control(self.grid_repeat) gb_repeat = Controles.GB(self, _("Blocks"), ly).ponFuente(f) self.grid_repeat.gotop() # Penalizaciones if reg_historico: self.liPENAL = reg_historico["PENALIZATION"][:] else: self.liPENAL = tactica.penalization[:] tb = tb_gen("penal") o_col = Columnas.ListaColumnas() o_col.nueva("NUMBER", _("N."), 20, centered=True) o_col.nueva("PENAL_POSITIONS", _("Positions"), 100, centered=True, edicion=Delegados.LineaTexto(siEntero=True)) o_col.nueva("PENAL_%", _("Affected"), 100, centered=True) self.grid_penal = Grid.Grid(self, o_col, siSelecFilas=True, siEditable=True, xid="p") self.grid_penal.setMinimumWidth(self.grid_penal.anchoColumnas() + 20) ly = Colocacion.V().control(tb).control(self.grid_penal) gb_penal = Controles.GB(self, _("Penalties"), ly).ponFuente(f) self.grid_penal.gotop() # ShowText if reg_historico: self.liSHOWTEXT = reg_historico["SHOWTEXT"][:] else: self.liSHOWTEXT = tactica.showtext[:] tb = tb_gen("show") o_col = Columnas.ListaColumnas() self.liSHOWTEXTtxt = (_("No"), _("Yes")) o_col.nueva("NUMBER", _("N."), 20, centered=True) o_col.nueva("SHOW_VISIBLE", _("Visible"), 100, centered=True, edicion=Delegados.ComboBox(self.liSHOWTEXTtxt)) o_col.nueva("SHOW_%", _("Affected"), 100, centered=True) self.grid_show = Grid.Grid(self, o_col, siSelecFilas=True, siEditable=True, xid="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() # Reinforcement if reg_historico: self.reinforcement_errors = reg_historico["REINFORCEMENT_ERRORS"] self.reinforcement_cycles = reg_historico["REINFORCEMENT_CYCLES"] else: self.reinforcement_errors = tactica.reinforcement_errors self.reinforcement_cycles = tactica.reinforcement_cycles lb_r_errors = Controles.LB(self, _("Accumulated errors to launch reinforcement") + ": ") li_opciones = [(_("Disable"), 0), ("5", 5), ("10", 10), ("15", 15), ("20", 20)] self.cb_reinf_errors = Controles.CB(self, li_opciones, self.reinforcement_errors) lb_r_cycles = Controles.LB(self, _("Cycles") + ": ") self.sb_reinf_cycles = Controles.SB(self, self.reinforcement_cycles, 1, 10) ly = ( Colocacion.H() .control(lb_r_errors) .control(self.cb_reinf_errors) .espacio(30) .control(lb_r_cycles) .control(self.sb_reinf_cycles) ) gb_reinforcement = Controles.GB(self, _("Reinforcement"), ly).ponFuente(f) # Files if reg_historico: self.liFILES = reg_historico["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]) o_col = Columnas.ListaColumnas() o_col.nueva("FILE", _("File"), 220, centered=True) o_col.nueva("WEIGHT", _("Weight"), 100, centered=True, edicion=Delegados.LineaTexto(siEntero=True)) o_col.nueva("TOTAL", _("Total"), 100, centered=True) o_col.nueva("FROM", _("From"), 100, centered=True, edicion=Delegados.LineaTexto(siEntero=True)) o_col.nueva("TO", _("To"), 100, centered=True, edicion=Delegados.LineaTexto(siEntero=True)) self.grid_files = Grid.Grid(self, o_col, siSelecFilas=True, siEditable=True, xid="f") self.grid_files.setMinimumWidth(self.grid_files.anchoColumnas() + 20) ly = Colocacion.V().control(self.grid_files) gb_files = Controles.GB(self, _("FNS files"), ly).ponFuente(f) self.grid_files.gotop() # Layout ly_reference = Colocacion.H().control(lb_reference).control(self.ed_reference) ly_puzzles = Colocacion.H().control(lb_puzzles).control(self.sb_puzzles) ly = Colocacion.G() ly.otro(ly_puzzles, 0, 0).otro(ly_reference, 0, 1) ly.filaVacia(1, 5) ly.controld(gb_jumps, 2, 0).control(gb_penal, 2, 1) ly.filaVacia(3, 5) ly.controld(gb_repeat, 4, 0) ly.control(gbShow, 4, 1) ly.filaVacia(5, 5) ly.control(gb_reinforcement, 6, 0, 1, 2) ly.filaVacia(6, 5) ly.control(gb_files, 7, 0, 1, 2) layout = Colocacion.V().espacio(10).otro(ly) self.setLayout(layout) self.grid_repeat.gotop()
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, 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()