Exemplo n.º 1
0
    def __init__(self, guion, board, ancho, edit_mode=False, with_continue=False):
        QtWidgets.QWidget.__init__(self)

        self.guion = guion
        self.tarea = None

        self.mensaje = Controles.EM(self).ponTipoLetra(puntos=Code.configuration.x_sizefont_infolabels)

        self.pb = None
        self.chb = None
        if edit_mode:
            self.chb = Controles.CHB(self, _("With continue button"), False).capture_changes(self, self.save)
            self.mensaje.capturaCambios(self.save)
        elif with_continue:
            self.pb = Controles.PB(self, _("Continue"), self.continuar, plano=False)
            self.bloqueada = True
            self.mensaje.read_only()
        else:
            self.mensaje.read_only()

        self.pbLeft = Controles.PB(self, "", self.go_left).ponIcono(Iconos.AnteriorF()).anchoFijo(24)
        self.pbRight = Controles.PB(self, "", self.go_right).ponIcono(Iconos.SiguienteF()).anchoFijo(24)
        self.pbDown = Controles.PB(self, "", self.go_down).ponIcono(Iconos.Abajo()).anchoFijo(24)
        self.pbClose = Controles.PB(self, "", self.borrar).ponIcono(Iconos.CancelarPeque()).anchoFijo(24)

        cajon = QtWidgets.QWidget(self)
        ly = Colocacion.H()
        ly.control(self.pbLeft).control(self.pbDown)
        ly.control(self.pbRight).control(self.pbClose).margen(0)
        if self.pb:
            ly.control(self.pb)
        if self.chb:
            ly.control(self.chb)
        cajon.setLayout(ly)
        cajon.setFixedHeight(20)

        layout = Colocacion.V().control(self.mensaje).espacio(-6).control(cajon).margen(0)

        self.setLayout(layout)
        self.setWindowFlags(QtCore.Qt.WindowCloseButtonHint | QtCore.Qt.ToolTip)

        pos_tabl = board.pos()
        pos_tabl_global = board.mapToGlobal(pos_tabl)
        self.anchoTabl = board.width()
        self.anchoPizarra = ancho
        self.x = pos_tabl_global.x() - pos_tabl.x()
        self.y = pos_tabl_global.y() - pos_tabl.y()

        if self.guion.posPizarra == "R":
            self.go_right()
        elif self.guion.posPizarra == "L":
            self.go_left()
        else:
            self.go_down()

        if edit_mode:
            self.clearFocus()
            self.mensaje.setFocus()
Exemplo n.º 2
0
    def __init__(self, guion, tablero, ancho, editMode=False, withContinue=False):
        QtWidgets.QWidget.__init__(self)

        self.guion = guion
        self.tarea = None

        self.mensaje = Controles.EM(self).ponTipoLetra(puntos=VarGen.configuracion.tamFontRotulos)

        self.pb = None
        self.chb = None
        if editMode:
            self.chb = Controles.CHB(self, _("With continue button"), False).capturaCambiado(self, self.save)
            self.mensaje.capturaCambios(self.save)
        elif withContinue:
            self.pb = Controles.PB(self, _("Continue"), self.continuar, plano=False)
            self.bloqueada = True
            self.mensaje.soloLectura()
        else:
            self.mensaje.soloLectura()

        self.pbLeft = Controles.PB(self, "", self.goLeft).ponIcono(Iconos.AnteriorF()).anchoFijo(24)
        self.pbRight = Controles.PB(self, "", self.goRight).ponIcono(Iconos.SiguienteF()).anchoFijo(24)
        self.pbDown = Controles.PB(self, "", self.goDown).ponIcono(Iconos.Abajo()).anchoFijo(24)
        self.pbClose = Controles.PB(self, "", self.borrar).ponIcono(Iconos.CancelarPeque()).anchoFijo(24)

        cajon = QtWidgets.QWidget(self)
        ly = Colocacion.H()
        ly.control(self.pbLeft).control(self.pbDown)
        ly.control(self.pbRight).control(self.pbClose).margen(0)
        if self.pb:
            ly.control(self.pb)
        if self.chb:
            ly.control(self.chb)
        cajon.setLayout(ly)
        cajon.setFixedHeight(20)

        layout = Colocacion.V().control(self.mensaje).espacio(-6).control(cajon).margen(0)

        self.setLayout(layout)
        self.setWindowFlags(QtCore.Qt.ToolTip)

        posTabl = tablero.pos()
        posTablGlobal = tablero.mapToGlobal(posTabl)
        self.anchoTabl = tablero.width()
        self.anchoPizarra = ancho
        self.x = posTablGlobal.x() - posTabl.x()
        self.y = posTablGlobal.y() - posTabl.y()

        if self.guion.posPizarra == "R":
            self.goRight()
        elif self.guion.posPizarra == "L":
            self.goLeft()
        else:
            self.goDown()

        if editMode:
            self.clearFocus()
            self.mensaje.setFocus()
Exemplo n.º 3
0
    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()
Exemplo n.º 4
0
    def __init__(self, owner, tactica, ncopia=None):
        QtGui.QWidget.__init__(self)

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

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

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

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

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

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

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

        f = Controles.TipoLetra(peso=75)

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

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

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

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

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

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

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

        self.setLayout(layout)

        self.grid_repeat.gotop()