aboutsummaryrefslogtreecommitdiff
path: root/src/starlet-fixture-display.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/starlet-fixture-display.c')
-rw-r--r--src/starlet-fixture-display.c26
1 files changed, 23 insertions, 3 deletions
diff --git a/src/starlet-fixture-display.c b/src/starlet-fixture-display.c
index 2f8c29b..366e0e6 100644
--- a/src/starlet-fixture-display.c
+++ b/src/starlet-fixture-display.c
@@ -32,6 +32,8 @@
#include <libintl.h>
#define _(x) gettext(x)
+#include "repl-connection.h"
+
#define OVERALL_BORDER (20.0)
#define FIXTURE_BORDER (5.0)
@@ -49,6 +51,7 @@ struct fixture_display
struct fixture *fixtures;
int n_fixtures;
GtkWidget *da;
+ ReplConnection *repl;
};
@@ -179,7 +182,11 @@ static gboolean key_press_sig(GtkWidget *da, GdkEventKey *event, struct fixture_
switch ( event->keyval ) {
case GDK_KEY_Escape :
- /* FIXME: Send (sel #f) */
+ repl_send(fixd->repl, "(sel #f)");
+ break;
+
+ case GDK_KEY_KP_Enter :
+ repl_send(fixd->repl, "(go! pb)");
break;
default :
@@ -214,7 +221,8 @@ static gboolean redraw_cb(gpointer data)
static void get_fixture_list(struct fixture_display *fixd)
{
- int i;
+ repl_send(fixd->repl, "(patched-fixture-names)");
+
/* FIXME: Dummy */
int i;
fixd->fixtures = malloc(32*sizeof(struct fixture));
@@ -231,6 +239,7 @@ static void show_help(const char *s)
{
printf(_("Syntax: %s [options]\n\n"), s);
printf(_("Show fixtures in Starlet"
+ " -s, --socket REPL socket for Starlet process (default guile.socket).\n"
" -h, --help Display this help message.\n"));
}
@@ -241,11 +250,13 @@ int main(int argc, char *argv[])
int c;
GtkWidget *mainwindow;
GtkWidget *da;
+ char *socket = NULL;
gtk_init(&argc, &argv);
const struct option longopts[] = {
{"help", 0, NULL, 'h'},
+ {"socket", 1, NULL, 's'},
{0, 0, NULL, 0}
};
@@ -257,6 +268,10 @@ int main(int argc, char *argv[])
show_help(argv[0]);
return 0;
+ case 's' :
+ socket = strdup(optarg);
+ break;
+
case 0 :
break;
@@ -273,6 +288,10 @@ int main(int argc, char *argv[])
bindtextdomain("starlet", LOCALEDIR);
textdomain("starlet");
+ if ( socket == NULL ) {
+ socket = strdup("guile.socket");
+ }
+
/* Create main window */
mainwindow = gtk_window_new(GTK_WINDOW_TOPLEVEL);
gtk_window_set_default_size(GTK_WINDOW(mainwindow), 1024, 768);
@@ -298,7 +317,8 @@ int main(int argc, char *argv[])
gtk_widget_show_all(mainwindow);
g_timeout_add(50, redraw_cb, &fixd);
-
+
+ fixd.repl = repl_connection_new(socket);
get_fixture_list(&fixd);
gtk_main();