Beginnings of a GTK framework. (And I do mean _beginnings_; it opens

a window and that's about it.)

[originally from svn r4139]
This commit is contained in:
Simon Tatham
2004-04-25 14:45:22 +00:00
parent 96dbb537ee
commit 3663603627
2 changed files with 53 additions and 1 deletions

48
gtk.c
View File

@ -6,8 +6,14 @@
#include <stdlib.h> #include <stdlib.h>
#include <stdarg.h> #include <stdarg.h>
#include <gtk/gtk.h>
#include "puzzles.h" #include "puzzles.h"
/* ----------------------------------------------------------------------
* Error reporting functions used elsewhere.
*/
void fatal(char *fmt, ...) void fatal(char *fmt, ...)
{ {
va_list ap; va_list ap;
@ -21,3 +27,45 @@ void fatal(char *fmt, ...)
fprintf(stderr, "\n"); fprintf(stderr, "\n");
exit(1); 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;
}

6
net.c
View File

@ -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. * Routines for drawing the game position on the screen.
*/ */
#ifndef TESTMODE /* FIXME: should be #ifdef */ /* ----------------------------------------------------------------------
* Test code.
*/
#ifdef TESTMODE
int main(void) int main(void)
{ {