diff -r -u xhyperoid-1.2/Makefile xhyperoid-2.0/Makefile --- xhyperoid-1.2/Makefile 2000-05-15 01:38:17.000000000 +0300 +++ xhyperoid-2.0/Makefile 2006-06-10 14:17:35.000000000 +0300 @@ -2,13 +2,12 @@ # You need an ANSI C compiler, e.g. gcc. CC=gcc - -CFLAGS=-O -Wall +CFLAGS=-O2 -pipe -Wall # You'll need to comment this out on most non-Linux systems to disable # the sound. Linuxers should leave it as-is. # -CFLAGS+=-DDO_SOUND +#CFLAGS+=-DDO_SOUND # Where things are installed by `make install': # @@ -37,24 +36,21 @@ CFLAGS+=-DSOUNDSDIR=\"$(SOUNDSDIR)\" - OBJS=hyperoid.o roidsupp.o sound.o svga.o convxpm.o XOBJS=hyperoid.o roidsupp.o sound.o gtk.o -all: x vga +GTK2_LIBS:=$(shell pkg-config --libs gtk+-2.0) +GTK2_CFLAGS:=$(shell pkg-config --cflags gtk+-2.0) -x: xhyperoid +all: x -vga: vhyperoid - -vhyperoid: $(OBJS) - $(CC) -o vhyperoid $(OBJS) -lvga +x: xhyperoid xhyperoid: $(XOBJS) - $(CC) -o xhyperoid $(XOBJS) `gtk-config --libs` + $(CC) -o xhyperoid $(XOBJS) $(GTK2_LIBS) gtk.o: gtk.c - $(CC) $(CFLAGS) `gtk-config --cflags` -c gtk.c -o gtk.o + $(CC) $(CFLAGS) $(GTK2_CFLAGS) -c gtk.c -o gtk.o installdirs: /bin/sh ./mkinstalldirs $(BINDIR) $(XBINDIR) $(MANDIR) $(SOUNDSDIR) diff -r -u xhyperoid-1.2/gtk.c xhyperoid-2.0/gtk.c --- xhyperoid-1.2/gtk.c 2000-05-15 01:16:03.000000000 +0300 +++ xhyperoid-2.0/gtk.c 2006-06-10 14:30:34.000000000 +0300 @@ -1,5 +1,7 @@ /* gtk.c */ #include +#include +#include #include #include #include @@ -75,7 +77,6 @@ static int need_resize=0; -static int need_keyrep_restore=0; static int key_f1=0,key_tab=0,key_s=0; static int key_left=0,key_right=0,key_down=0,key_up=0; static int key_space=0,key_esc=0; @@ -197,6 +198,10 @@ quit=1; } +void cb_new(GtkWidget *widget,gpointer data) +{ +NewGame(); +} gint da_keypress(GtkWidget *widget,GdkEventKey *event) { @@ -253,11 +258,6 @@ gint focus_change_event(GtkWidget *widget,GdkEventFocus *event) { -if(event->in) - gdk_key_repeat_disable(),need_keyrep_restore=1; -else - gdk_key_repeat_restore(),need_keyrep_restore=0; - return(FALSE); /* just in case anything else needs it */ } @@ -268,20 +268,48 @@ * the game window. Both are plain old drawingareas. */ GtkWidget *vbox; +GtkWidget *game_menu, *game_item, *quit_item, *new_item; +GtkWidget *menu_bar; window=gtk_window_new(GTK_WINDOW_TOPLEVEL); GTK_WIDGET_SET_FLAGS(window,GTK_CAN_FOCUS); gtk_signal_connect(GTK_OBJECT(window),"destroy", GTK_SIGNAL_FUNC(cb_quit),NULL); gtk_window_set_title(GTK_WINDOW(window),"xhyperoid"); - -gtk_window_set_default_size(GTK_WINDOW(window),448,420); +gtk_window_set_default_size(GTK_WINDOW(window),720,420); vbox=gtk_vbox_new(FALSE,0); GTK_WIDGET_UNSET_FLAGS(vbox,GTK_CAN_FOCUS); gtk_container_add(GTK_CONTAINER(window),vbox); gtk_widget_show(vbox); +/* basic menu */ +menu_bar = gtk_menu_bar_new (); +gtk_box_pack_start(GTK_BOX(vbox),menu_bar,FALSE,FALSE,0); +/* gtk_widget_set_usize(menu_bar,32,32);*/ +gtk_widget_show(menu_bar); + +game_menu=gtk_menu_new (); +game_item = gtk_menu_item_new_with_label ("Game"); +gtk_widget_show (game_item); + +new_item = gtk_menu_item_new_with_label ("New"); +gtk_widget_show(new_item); +gtk_menu_shell_append (GTK_MENU_SHELL (game_menu), new_item); + +quit_item = gtk_menu_item_new_with_label ("Quit"); +gtk_widget_show(quit_item); +gtk_menu_shell_append (GTK_MENU_SHELL (game_menu), quit_item); + +g_signal_connect_swapped (G_OBJECT (quit_item), "activate", G_CALLBACK (cb_quit), NULL); +g_signal_connect_swapped (G_OBJECT (new_item), "activate", G_CALLBACK (cb_new), NULL); + +gtk_menu_item_set_submenu (GTK_MENU_ITEM (game_item), game_menu); +gtk_menu_bar_append (GTK_MENU_BAR (menu_bar), game_item); + +/* +*/ + /* score area */ score_area=gtk_drawing_area_new(); GTK_WIDGET_UNSET_FLAGS(score_area,GTK_CAN_FOCUS); @@ -322,8 +350,6 @@ gtk_widget_grab_focus(window); gtk_widget_show(window); -gdk_key_repeat_disable(),need_keyrep_restore=1; - while(gtk_events_pending()) gtk_main_iteration(); @@ -472,7 +498,4 @@ if(!quit) gdk_colormap_free_colors(gdk_window_get_colormap(window->window), colourtable,16); - -if(need_keyrep_restore) - gdk_key_repeat_restore(); }