/// <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(); }
/// <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(); }
/// <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(); }