--- a/Makefile +++ b/Makefile @@ -2,12 +2,12 @@ # You need an ANSI C compiler. gcc is probably best. # -CC=gcc +CC?=gcc # Compiler options (and sound driver) to use. This one is for Linux, # and other OSS-using systems. # -CFLAGS=-O -Wall -DDRIVER_OSS +CFLAGS+=-Wall -DDRIVER_OSS # for OpenBSD, uncomment this: #CFLAGS=-O -Wall -DDRIVER_OPENBSD @@ -39,14 +39,29 @@ all: aylet xaylet + +# GTK+1.2 stuff: "make all" or "make gtk1" +GTKCONFIG=gtk-config +GTKFLAGS=-UGTK2 +gtk1: all + +# GTK+2 stuff: "make gtk2" +gtk2: GTKCONFIG:=$(PKG_CONFIG) gtk+-2.0 +gtk2: GTKFLAGS:=-DGTK2 $(shell \ + $(GTKCONFIG) --modversion | \ + awk 'BEGIN { FS="." } \ + 1 { if ($$1 > 2 || ($$1 == 2 && $$2 >= 6)) \ + { print "-DGTK2_6" } }') +gtk2: all + aylet: $(OBJS) - $(CC) -o aylet $(OBJS) $(CURSES_LIB) + $(CC) $(LDFLAGS) $(CFLAGS) -o aylet $(OBJS) $(CURSES_LIB) xaylet: $(XOBJS) - $(CC) -o xaylet $(XOBJS) `gtk-config --libs` + $(CC) $(LDFLAGS) $(CFLAGS) -o xaylet $(XOBJS) $(shell $(GTKCONFIG) --libs) uigtk.o: uigtk.c - $(CC) $(CFLAGS) `gtk-config --cflags` -c uigtk.c -o uigtk.o + $(CC) $(CFLAGS) $(GTKFLAGS) $(shell $(GTKCONFIG) --cflags) -c uigtk.c -o uigtk.o installdirs: /bin/sh ./mkinstalldirs $(BINDIR) $(XBINDIR) $(MANDIR) --- a/ui.c +++ b/ui.c @@ -5,7 +5,9 @@ */ #include +#include #include +#include #include #include #include @@ -188,8 +190,8 @@ { need_update=0; draw_frame(); - draw_status(ay_filenames[ay_file],aydata.miscstr,aydata.authorstr, - ay_track+1,aydata.tracks[ay_track].namestr); + draw_status(ay_filenames[ay_file],(char *)aydata.miscstr, (char *)aydata.authorstr, + ay_track+1, (char *)aydata.tracks[ay_track].namestr); } /* update time display */ --- a/uigtk.c +++ b/uigtk.c @@ -14,11 +14,13 @@ #include "ui.h" /* button pixmaps */ +#ifndef GTK2_6 #include "button1.xpm" #include "button2.xpm" #include "button3.xpm" #include "button4.xpm" #include "button5.xpm" +#endif static GtkWidget *window,*vbox,*detailstbl,*detaillabel[5]; @@ -107,6 +109,11 @@ GdkBitmap *bitmap,*mask; int tbl_row,width; +#ifdef GTK2 +#define gtk_accel_group_get_default() accel + GtkAccelGroup *accel; +#endif + window=gtk_window_new(GTK_WINDOW_TOPLEVEL); gtk_signal_connect(GTK_OBJECT(window),"destroy", GTK_SIGNAL_FUNC(cb_doquit),NULL); @@ -116,6 +123,11 @@ gtk_window_set_title(GTK_WINDOW(window),"xaylet"); gtk_window_set_policy(GTK_WINDOW(window),FALSE,TRUE,FALSE); /* XXX? */ +#ifdef GTK2 + accel = gtk_accel_group_new (); + gtk_window_add_accel_group (GTK_WINDOW (window), accel); +#endif + /* main vbox */ vbox=gtk_vbox_new(FALSE,0); gtk_container_add(GTK_CONTAINER(window),vbox); @@ -194,7 +206,11 @@ DO_TBL_RIGHT(statustbl,1, 1,2,""); label_for_time=label; +#ifdef GTK2 + highspeed_widget = gtk_check_button_new_with_mnemonic ("_High speed"); +#else highspeed_widget=gtk_check_button_new_with_label("High-speed"); +#endif /* don't allow focus, looks too weird and we have shortcut */ GTK_WIDGET_UNSET_FLAGS(highspeed_widget,GTK_CAN_FOCUS); gtk_table_attach_defaults(GTK_TABLE(statustbl),highspeed_widget, 2,4, 0,2); @@ -227,6 +243,21 @@ gtk_container_set_border_width(GTK_CONTAINER(buttontbl),5); gtk_widget_show(buttontbl); +#ifdef GTK2_6 /* >= GTK+ 2.6 */ +#define ADD_PIXMAP_TO_BUTTON(button,xpm,stock) \ + pixmap = gtk_image_new_from_stock (GTK_STOCK_MEDIA_##stock, \ + GTK_ICON_SIZE_BUTTON); \ + gtk_container_add (GTK_CONTAINER ((button)), pixmap); \ + gtk_widget_show (pixmap) +#else /* < GTK+ 2.6 */ +#define ADD_PIXMAP_TO_BUTTON(button,xpm,stock) \ + bitmap=gdk_pixmap_create_from_xpm_d(window->window,&mask, \ + &(window->style->black), \ + (xpm)); \ + pixmap=gtk_pixmap_new(bitmap,mask); \ + gtk_container_add(GTK_CONTAINER(button),pixmap); \ + gtk_widget_show(pixmap) +#endif hbox=gtk_hbox_new(TRUE,5); gtk_table_attach_defaults(GTK_TABLE(buttontbl),hbox, 0,4, 0,1); @@ -236,16 +267,8 @@ /* XXX this seems to be needed here, but is it ok? */ gtk_widget_realize(window); -#define ADD_PIXMAP_TO_BUTTON(button,xpm) \ - bitmap=gdk_pixmap_create_from_xpm_d(window->window,&mask, \ - &(window->style->black), \ - (xpm)); \ - pixmap=gtk_pixmap_new(bitmap,mask); \ - gtk_container_add(GTK_CONTAINER(button),pixmap); \ - gtk_widget_show(pixmap) - button=gtk_button_new(); -ADD_PIXMAP_TO_BUTTON(button,button1); +ADD_PIXMAP_TO_BUTTON(button,button1,PREVIOUS); gtk_box_pack_start(GTK_BOX(hbox),button,TRUE,TRUE,0); gtk_signal_connect(GTK_OBJECT(button),"clicked", GTK_SIGNAL_FUNC(cb_button_prev_track),NULL); @@ -256,7 +279,7 @@ gtk_widget_show(button); button=gtk_button_new(); -ADD_PIXMAP_TO_BUTTON(button,button2); +ADD_PIXMAP_TO_BUTTON(button,button2,PLAY); gtk_box_pack_start(GTK_BOX(hbox),button,TRUE,TRUE,0); gtk_signal_connect(GTK_OBJECT(button),"clicked", GTK_SIGNAL_FUNC(cb_button_play),NULL); @@ -266,7 +289,7 @@ gtk_widget_show(button); button=gtk_button_new(); -ADD_PIXMAP_TO_BUTTON(button,button3); +ADD_PIXMAP_TO_BUTTON(button,button3,PAUSE); gtk_box_pack_start(GTK_BOX(hbox),button,TRUE,TRUE,0); gtk_signal_connect(GTK_OBJECT(button),"clicked", GTK_SIGNAL_FUNC(cb_button_pause),NULL); @@ -276,7 +299,7 @@ gtk_widget_show(button); button=gtk_button_new(); -ADD_PIXMAP_TO_BUTTON(button,button4); +ADD_PIXMAP_TO_BUTTON(button,button4,STOP); gtk_box_pack_start(GTK_BOX(hbox),button,TRUE,TRUE,0); gtk_signal_connect(GTK_OBJECT(button),"clicked", GTK_SIGNAL_FUNC(cb_button_stop),NULL); @@ -286,7 +309,7 @@ gtk_widget_show(button); button=gtk_button_new(); -ADD_PIXMAP_TO_BUTTON(button,button5); +ADD_PIXMAP_TO_BUTTON(button,button5,NEXT); gtk_box_pack_start(GTK_BOX(hbox),button,TRUE,TRUE,0); gtk_signal_connect(GTK_OBJECT(button),"clicked", GTK_SIGNAL_FUNC(cb_button_next_track),NULL); @@ -295,7 +318,11 @@ GTK_WIDGET_UNSET_FLAGS(button,GTK_CAN_FOCUS); gtk_widget_show(button); +#ifdef GTK2 + button = gtk_button_new_with_mnemonic ("_Restart"); +#else button=gtk_button_new_with_label("Restart"); +#endif gtk_box_pack_start(GTK_BOX(hbox),button,TRUE,TRUE,0); gtk_signal_connect(GTK_OBJECT(button),"clicked", GTK_SIGNAL_FUNC(cb_button_restart),NULL); @@ -304,17 +331,24 @@ GTK_WIDGET_UNSET_FLAGS(button,GTK_CAN_FOCUS); gtk_widget_show(button); - /* second row, these go straight on the table */ /* backspace/delete/space are dealt with by keypress() */ +#ifdef GTK2 + button = gtk_button_new_with_mnemonic ("_Previous file"); +#else button=gtk_button_new_with_label("Prev File"); +#endif gtk_table_attach_defaults(GTK_TABLE(buttontbl),button, 1,2, 1,2); gtk_signal_connect(GTK_OBJECT(button),"clicked", GTK_SIGNAL_FUNC(cb_button_prev_file),NULL); GTK_WIDGET_UNSET_FLAGS(button,GTK_CAN_FOCUS); gtk_widget_show(button); +#ifdef GTK2 + button = gtk_button_new_with_mnemonic("_Next file"); +#else button=gtk_button_new_with_label("Next File"); +#endif gtk_table_attach_defaults(GTK_TABLE(buttontbl),button, 2,3, 1,2); gtk_signal_connect(GTK_OBJECT(button),"clicked", GTK_SIGNAL_FUNC(cb_button_next_file),NULL); @@ -386,8 +420,8 @@ if(need_update) { need_update=0; - ui_draw_status(ay_filenames[ay_file],aydata.miscstr,aydata.authorstr, - ay_track+1,aydata.tracks[ay_track].namestr); + ui_draw_status(ay_filenames[ay_file], (char *)aydata.miscstr, (char *)aydata.authorstr, + ay_track+1, (char *)aydata.tracks[ay_track].namestr); } /* update time display */