Bug fixes
[rodin/chimara.git] / tests / glulxercise.c
index 3db6bba753e3a8b02439aa921218c38f483994dc..b5d3513265de9d9182f0345a237e57dcfc5e5c0f 100644 (file)
@@ -36,7 +36,11 @@ on_go_clicked(GtkButton *go, Widgets *w)
                gtk_main_quit();
        }
        g_free(fullpath);
+}
 
+void
+on_interp_started(ChimaraGlk *glk, Widgets *w)
+{
        gtk_widget_set_sensitive(w->go, FALSE);
        gtk_widget_set_sensitive(w->stop, TRUE);
        gtk_widget_set_sensitive(w->test_picker, FALSE);
@@ -47,7 +51,11 @@ on_stop_clicked(GtkButton *stop, Widgets *w)
 {
        chimara_glk_stop( CHIMARA_GLK(w->interp) );
        chimara_glk_wait( CHIMARA_GLK(w->interp) );
+}
 
+void
+on_interp_stopped(ChimaraGlk *glk, Widgets *w)
+{
        gtk_widget_set_sensitive(w->stop, FALSE);
        gtk_widget_set_sensitive(w->go, TRUE);
        gtk_widget_set_sensitive(w->test_picker, TRUE);
@@ -88,11 +96,15 @@ main(int argc, char *argv[])
        w->window = LOAD_WIDGET("window");
        GtkWidget *vbox = LOAD_WIDGET("vbox");
        w->test_picker = LOAD_WIDGET("test_picker");
+       gtk_combo_box_set_active(GTK_COMBO_BOX(w->test_picker), 0);
        w->go = LOAD_WIDGET("go");
        w->stop = LOAD_WIDGET("stop");
        w->interp = chimara_if_new();
+       gtk_widget_set_size_request(w->interp, 500, 600);
        gtk_box_pack_end_defaults(GTK_BOX(vbox), w->interp);
        gtk_builder_connect_signals(builder, w);
+       g_signal_connect(w->interp, "started", G_CALLBACK(on_interp_started), w);
+       g_signal_connect(w->interp, "stopped", G_CALLBACK(on_interp_stopped), w);
        gtk_widget_show_all(w->window);
 
        gdk_threads_enter();