Beispiel #1
0
        /// <summary>Carga las opciones de un fichero. Si se produce algún
        /// error devuelve las opciones por defecto.</summary>
        /// <returns>Las opciones almacenadas.</returns>

        private static Opciones CargarDeFichero()
        {
            Opciones op   = null;
            Stream   file = null;

            try
            {
                file = File.Open(fichero, FileMode.Open);
            }
            catch (Exception)
            {
                return(new Opciones());
            }
            try
            {
                IFormatter formatter = new BinaryFormatter();
                op = (Opciones)formatter.Deserialize(file);
            }
            catch (Exception)
            {
                return(new Opciones());
            }
            file.Close();

            return(op);
        }
Beispiel #2
0
        /// <summary>Obtiene la única instancia de la clase (patrón
        /// Singleton)</summary>
        /// <returns>La única instancia de la clase.</returns>

        public static Opciones GetInstance()
        {
            if (instancia == null)
            {
                instancia = Opciones.CargarDeFichero();
            }
            return(instancia);
        }
Beispiel #3
0
        /// <summary>Función que muestra el diálogo centrado en la ventana
        /// padre. Establece los valores de las opciones actuales en los
        /// elementos visuales que las representan.</summary>

        public new void ShowAll()
        {
            this.WindowPosition = WindowPosition.CenterOnParent;
            //Se cargan los elementos con las opciones...
            Opciones opc = Opciones.GetInstance();

            cbAdvertencias.Active = opc.GetMostrarAdvertencias();
            sbTiempo.Value        = (double)opc.GetTSubciclo();
            rbMemoriaDef.Active   = opc.GetUsarMemoriaDefecto();
            rbMemoriaUsu.Active   = !opc.GetUsarMemoriaDefecto();
            lblMemoriaAlt.Text    = opc.GetMemoriaAlternativa();

            lblMemoriaAlt.Sensitive = !opc.GetUsarMemoriaDefecto();
            btnFichero.Sensitive    = !opc.GetUsarMemoriaDefecto();

            base.ShowAll();
        }
Beispiel #4
0
        /// <summary>Función que se ejecuta al pulsar sobre el botón
        /// aceptar del diálogo. Comprueba que los datos introducidos
        /// son correctos y los aplica.</summary>
        /// <param name="o">El objeto que llama a la función.</param>
        /// <param name="args">Los argumentos que se le pasan a la
        /// función.</param>

        private void AceptarClick(object o, System.EventArgs args)
        {
            if (!rbMemoriaDef.Active)
            {
                if (!File.Exists(lblMemoriaAlt.Text))
                {
                    MessageDialog m =
                        new MessageDialog(this,
                                          Gtk.DialogFlags.Modal,
                                          Gtk.MessageType.Error,
                                          Gtk.ButtonsType.Close,
                                          Ventana.GetText("D_Conf_ErrorMemNoExiste"));
                    m.Run();
                    m.Hide();
                    return;
                }
                // comprobar que el fichero contiene texto correcto...
                try
                { MemoriaControl.CreateFromString(
                      Fichero.CargarTexto(lblMemoriaAlt.Text)); }
                catch (Exception)
                {
                    Hilo.Sleep(250);
                    MessageDialog m2 =
                        new MessageDialog(this,
                                          Gtk.DialogFlags.Modal,
                                          Gtk.MessageType.Error,
                                          Gtk.ButtonsType.Close,
                                          Ventana.GetText("D_Conf_ErrorMem"));
                    m2.Run();
                    m2.Hide();
                    return;
                }
            }

            Opciones opc = Opciones.GetInstance();

            opc.SetMostrarAdvertencias(cbAdvertencias.Active);
            opc.SetTSubciclo(sbTiempo.ValueAsInt);
            opc.SetUsarMemoriaDefecto(rbMemoriaDef.Active);
            opc.SetMemoriaAlternativa(lblMemoriaAlt.Text);
            opc.Guardar();

            this.HideAll();
        }
Beispiel #5
0
        /// <summary>Ensambla el código y, si no hay errores, comienza
        /// la simulación.</summary>

        private void VentanaEjecutar()
        {
            //Compilamos
            btnEjecutar.Sensitive  = false;
            itemEjecutar.Sensitive = false;
            EnsambladorSimple2 e = new EnsambladorSimple2();

            short[] ens = null;
            try
            {
                ArrayList codigoLimpio =
                    e.PrimeraPasada(textoCodigo.Text);
                ens = e.Ensamblar(codigoLimpio);
                String res = "";
                for (int i = 0; i < ens.Length; i++)
                {
                    res += Conversiones.
                           ToHexString(ens[i]) + "(" +
                           (String)codigoLimpio[i] +
                           ")\n";
                }
                textoResultado.Text = res;
                textoErrores.Text   = "";
                String advert = e.GetAdvertencias();
                if ((advert != "") &&
                    (Opciones.GetInstance().GetMostrarAdvertencias()))
                {
                    textoErrores.Text += "\n" +
                                         GetText("Ens_Advertencias") +
                                         "\n\n" + e.GetAdvertencias();
                }
            }
            catch (ErrorCodigoException ex)
            {
                textoErrores.Text = GetText("Ens_Errores") +
                                    "\n" + ex.Message;
                textoResultado.Text = "";
                String advert = e.GetAdvertencias();
                if ((advert != "") &&
                    (Opciones.GetInstance().GetMostrarAdvertencias()))
                {
                    textoErrores.Text += " \n" +
                                         GetText("Ens_Advertencias") + "\n\n" + advert;
                }
                btnEjecutar.Sensitive  = true;
                itemEjecutar.Sensitive = true;
                PonerMensajeStatusbar(GetText("Ventana_Error_Ensamblar"));
                notebook.Page = 0;
                return;
            }

            //Si la compilación ha salido bien, entondes ejecutamos.


            MemoriaControl mc = new MemoriaControl();

            if (!Opciones.GetInstance().GetUsarMemoriaDefecto())
            {
                try
                {
                    mc = MemoriaControl.CreateFromString(
                        Fichero.CargarTexto(
                            Opciones.GetInstance().GetMemoriaAlternativa()
                            )
                        );
                }
                catch (Exception)
                {
                    //Hilo.Sleep(50);
                }
            }

            SecuenciadorMicroprograma mic =
                new SecuenciadorMicroprograma(ens, mc);

            mic.AddMemoryChangeListener(panelMemoria);
            mic.AddRegisterChangeListener(panelRegistros);
            RepresentacionRDD repRDD = new RepresentacionRDD(dArea);

            mic.SetRepresentacionRDD(repRDD);
            mic.AddRegisterChangeListener(repRDD);

            notebook.Page = 2;
            //Hilo.Sleep (100);
            PonerMensajeStatusbar(GetText("Ventana_Simulacion_Curso"));

            hiloEjecucion = new HiloEjecucion(mic);
            hiloEjecucion.SetTSubciclo(Opciones.GetInstance().GetTSubciclo());
            hiloEjecucion.Start();
            Hilo hiloespera = new HiloEspera();

            hiloespera.Start();
        }