diff options
| author | Simon Tatham <anakin@pobox.com> | 2004-04-25 14:45:22 +0000 |
|---|---|---|
| committer | Simon Tatham <anakin@pobox.com> | 2004-04-25 14:45:22 +0000 |
| commit | 3663603627809a11908dc1dfadd158cfde8e0672 (patch) | |
| tree | 42b42a980fc369b4e37737377c45290e555d76d8 | |
| parent | 96dbb537ee14f992459a8359a113a78414addf9d (diff) | |
| download | puzzles-3663603627809a11908dc1dfadd158cfde8e0672.zip puzzles-3663603627809a11908dc1dfadd158cfde8e0672.tar.gz puzzles-3663603627809a11908dc1dfadd158cfde8e0672.tar.bz2 puzzles-3663603627809a11908dc1dfadd158cfde8e0672.tar.xz | |
Beginnings of a GTK framework. (And I do mean _beginnings_; it opens
a window and that's about it.)
[originally from svn r4139]
| -rw-r--r-- | gtk.c | 48 | ||||
| -rw-r--r-- | net.c | 6 |
2 files changed, 53 insertions, 1 deletions
@@ -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; @@ -21,3 +27,45 @@ void fatal(char *fmt, ...) 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; +} @@ -586,7 +586,11 @@ game_state *make_move(game_state *state, int x, int y, int button) * Routines for drawing the game position on the screen. */ -#ifndef TESTMODE /* FIXME: should be #ifdef */ +/* ---------------------------------------------------------------------- + * Test code. + */ + +#ifdef TESTMODE int main(void) { |