projects
/
rodin
/
chimara.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Defined a stub glk_schannel_struct to fix another regression
[rodin/chimara.git]
/
tests
/
glulxercise.c
diff --git
a/tests/glulxercise.c
b/tests/glulxercise.c
index 3c786a922655139250adfd95a00294328283b410..3f3b3933bcdef15ca33a4c0ee6e41cf7781fac51 100644
(file)
--- a/
tests/glulxercise.c
+++ b/
tests/glulxercise.c
@@
-1,7
+1,6
@@
#include <glib.h>
#include <libchimara/chimara-glk.h>
#include <libchimara/chimara-if.h>
#include <glib.h>
#include <libchimara/chimara-glk.h>
#include <libchimara/chimara-if.h>
-#include "error.h"
#define LOAD_WIDGET(name) GTK_WIDGET(gtk_builder_get_object(builder, name))
#define LOAD_WIDGET(name) GTK_WIDGET(gtk_builder_get_object(builder, name))
@@
-28,12
+27,16
@@
on_go_clicked(GtkButton *go, Widgets *w)
gtk_tree_model_get(model, &iter, 1, &filename, -1);
g_object_unref(model);
gtk_tree_model_get(model, &iter, 1, &filename, -1);
g_object_unref(model);
- if( !chimara_if_run_game(CHIMARA_IF(w->interp), filename, &error) )
- {
- error_dialog(GTK_WINDOW(w->window), error, "Error starting Glk library: ");
- gtk_main_quit();
- }
+ gchar *fullpath = g_build_filename(PACKAGE_SRC_DIR, filename, NULL);
+ if( !chimara_if_run_game(CHIMARA_IF(w->interp), fullpath, &error) )
+ g_error("Error starting Glk library: %s", error->message);
+ 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);
gtk_widget_set_sensitive(w->go, FALSE);
gtk_widget_set_sensitive(w->stop, TRUE);
gtk_widget_set_sensitive(w->test_picker, FALSE);
@@
-44,7
+47,11
@@
on_stop_clicked(GtkButton *stop, Widgets *w)
{
chimara_glk_stop( CHIMARA_GLK(w->interp) );
chimara_glk_wait( CHIMARA_GLK(w->interp) );
{
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);
gtk_widget_set_sensitive(w->stop, FALSE);
gtk_widget_set_sensitive(w->go, TRUE);
gtk_widget_set_sensitive(w->test_picker, TRUE);
@@
-75,21
+82,22
@@
main(int argc, char *argv[])
gtk_init(&argc, &argv);
GtkBuilder *builder = gtk_builder_new();
gtk_init(&argc, &argv);
GtkBuilder *builder = gtk_builder_new();
- if(!gtk_builder_add_from_file(builder, "glulxercise.ui", &error))
- {
- error_dialog(NULL, error, "Failed to build interface: ");
- return 1;
- }
+ if(!gtk_builder_add_from_file(builder, PACKAGE_SRC_DIR "/glulxercise.ui", &error))
+ g_error("Failed to build interface: %s", error->message);
Widgets *w = g_slice_new0(Widgets);
w->window = LOAD_WIDGET("window");
GtkWidget *vbox = LOAD_WIDGET("vbox");
w->test_picker = LOAD_WIDGET("test_picker");
Widgets *w = g_slice_new0(Widgets);
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();
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);
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();
gtk_widget_show_all(w->window);
gdk_threads_enter();