ref: 3663603627809a11908dc1dfadd158cfde8e0672
parent: 96dbb537ee14f992459a8359a113a78414addf9d
author: Simon Tatham <anakin@pobox.com>
date: Sun Apr 25 10:45:22 EDT 2004
Beginnings of a GTK framework. (And I do mean _beginnings_; it opens a window and that's about it.) [originally from svn r4139]
--- a/gtk.c
+++ b/gtk.c
@@ -6,8 +6,14 @@
#include <stdlib.h>
#include <stdarg.h>
+#include <gtk/gtk.h>
+
#include "puzzles.h"
+/* ----------------------------------------------------------------------
+ * Error reporting functions used elsewhere.
+ */
+
void fatal(char *fmt, ...)
{
va_list ap;
@@ -20,4 +26,46 @@
fprintf(stderr, "\n");
exit(1);
+}
+
+/* ----------------------------------------------------------------------
+ * GTK front end to puzzles.
+ */
+
+/*
+ * This structure holds all the data relevant to a single window.
+ * In principle this would allow us to open multiple independent
+ * puzzle windows, although I can't currently see any real point in
+ * doing so. I'm just coding cleanly because there's no
+ * particularly good reason not to.
+ */
+struct window_data {
+ GtkWidget *window;
+};
+
+static void destroy(GtkWidget *widget, gpointer data)
+{
+ gtk_main_quit();
+}
+
+static struct window_data *new_window(void)
+{
+ struct window_data *wdata;
+
+ wdata = snew(struct window_data);
+
+ wdata->window = gtk_window_new(GTK_WINDOW_TOPLEVEL);
+ gtk_signal_connect(GTK_OBJECT(wdata->window), "destroy",
+ GTK_SIGNAL_FUNC(destroy), wdata);
+ gtk_widget_show(wdata->window);
+ return wdata;
+}
+
+int main(int argc, char **argv)
+{
+ gtk_init(&argc, &argv);
+ (void) new_window();
+ gtk_main();
+
+ return 0;
}
--- a/net.c
+++ b/net.c
@@ -586,7 +586,11 @@
* Routines for drawing the game position on the screen.
*/
-#ifndef TESTMODE /* FIXME: should be #ifdef */
+/* ----------------------------------------------------------------------
+ * Test code.
+ */
+
+#ifdef TESTMODE
int main(void)
{